- •Введение
- •1. Общие положения
- •1.1. Понятие алгоритма. Данные в задачах и алгоритмах
- •1.2. Понятие о технологии разработки программ. Принципы и этапы разработки программ
- •1.3. Состав документации по отдельным этапам
- •1. Задача
- •9. Структурные тесты
- •1.4. Нисходящая разработка и нисходящая отладка
- •2. Процесс разработки программы на примере решения типовой задачи
- •2.1. Разработка алгоритма и программы уровня 0 с заглушками
- •2. Входные данные
- •3. Выходные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале. Диалоговый вариант
- •9. Структурные тесты
- •2.2. Отладка программы с заглушкой
- •2.3. Общая схема перехода от метода к алгоритму решения
- •2.4. Разработка алгоритма и программы для примера
- •2. Входные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале
- •9. Структурные тесты
- •2.5. Отладка полной программы
- •2.6. Список заданий
- •3. Организация хранения данных с позиций эффективности отладки и использования программы
- •3.1. Как лучше хранить, вводить и выводить данные
- •3.2. Использование текстовых файлов для хранения входных и выходных данных
- •3.3. Использование параметров в Паскаль-программах
- •3.4. Задание
- •4. Некоторые методы решения типовых задач
- •4.1. Поиск экстремальных значений (максимума, минимума) в одномерном массиве
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.2. Поиск элемента, удовлетворяющего заданному условию
- •2. Входные данные
- •6. Метод
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.3. Задача со сложной логикой
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.4. Упорядочение одномерного массива
- •3. Выходные данные
- •6_А. Метод включения
- •6_Б. Метод пузырька
- •4.5. Список заданий
- •5. Работа с двумерными массивами (матрицами)
- •5.1. Схема обработки матриц
- •5.2. Ввод и вывод матрицы
- •5.3. Пример решения задачи
- •3. Выходные данные
- •6. Метод
- •5.4. Список заданий
- •6. Оформление алгоритмов в виде процедур
- •6.1. Основные положения
- •6.2. Кодирование процедур на языке Паскаль
- •6.3. Специфика оформления процедур ввода – вывода
- •6.4. Рекомендации по оформлению процедур
- •6.5. Примеры разработки процедур
- •3. Выходные данные
- •6. Метод
- •3 Истина, если все элементы строки больше 1, ложь, в противном случае . Выходные данные
- •7. Описание процедуры
- •8. Кодирование на паскале
- •9. Структурные тесты
- •2. Входные данные
- •3. Выходные данные
- •4. Аномалии не рассматриваем
- •6. Метод
- •7. Алгоритм
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •7. Описание процедуры
- •8. Кодирование на Паскале
- •6.6. Список заданий
- •7. Внешние модули (unit) в турбо-Паскале
- •7.1. Суть и описание модуля
- •7.2. Связь модуля с другими модулями и главной программой. Область действия описаний объектов
- •7.3. Специфика оформления процедур ввода – вывода в модулях
- •7.4. Примеры оформления процедур во внешних модулях
- •7.5. Задания
- •7.6. Обработка многомодульных программ в среде турбо-Паскаль
- •8. Контрольные вопросы к главе 1
- •К главе 2
- •К главе 3
- •К главе 6
- •К главе 7
- •Заключение
- •Литература
- •Приложение 1. Базовые структуры алгоритмов
- •Приложение 2. Простые типы в Паскале
- •Приложение 3. Структура типов данных в языке Паскаль
- •Содержание
5.3. Пример решения задачи
Здесь приведен пример, базирующийся на уже рассмотренных положениях и распространяющий их на обработку матриц.
Рассматривается конкретная задача из группы задач со следующей структурой. Задана матрица aизmстрок иnстолбцов.
Для совокупности строк (или столбцов) решается задача типа «Поиск по условию» или «Проверка условия» из §4.2 (поиск элемента, удовлетворяющего заданному условию). Подзадачей этой задачи является задача типа «Поиск по условию» или «Проверка условия» для совокупности элементов строки (столбца).
Приводятся только элементы разработки, специфичные для данной задачи.
1. Задачаm.0(имя задачи предложено студентами и не несет смысловой нагрузки).
Найти в матрицепервую строку, все элементы которой больше 1.
Примеры, по которым далее будут строиться тесты
Возьмем m=3,n=4
Матрица, где есть искомая строка:
2 2 0 2
a=3 3 3 3
2 2 0 2
Результат: номер искомой строки = 2.
2) Матрица, где нет искомой строки:
2 2 0 2
a= 2 2 0 2
2 2 0 2
Результат: искомой строки нет.
2. Входные данные. Ограничения на диапазоны данных там, где они не очевидны, взять произвольно.
цел m- число строк матрицы a; простая переменная; ……..
цел n- число столбцов матрицы а; простая переменная; ……..
вещ a- исходная матрица; двумерный массив; ……….
Входную форму взять из § 5.2.
3. Выходные данные
цел k- номер искомой строки; .........
Сообщение об отсутствии искомой строки предусмотрим в выходной форме.
4. Аномалиине рассматриваем
5. Функциональные тесты – см. пример после условия. Забегая вперед, отметим, что эти тесты покроют структурные.
6. Метод
● Проведем аналогию с задачами «Поиск по условию» и «Проверка условия» для матрицы как совокупности строк.
Одномерный массив – совокупность элементов.
Матрица – совокупность строк.
Искать отдельную строку матрицы, удовлетворяющую условию данной задачи, можно так же,как элемент одномерного массива, удовлетворяющий условию задачи «Поиск по условию».
Для совокупности строк решаем задачу «Поиск по условию».
Для фиксации результата проверки совокупности строк используем логическую переменную:
истина, если искомая строка есть,
ложь, в противном случае.
● Проведем аналогию с задачами «Поиск по условию» и «Проверка условия» для отдельной строки матрицы.
Одномерный массив – совокупность элементов с одним индексом, изменяющимся при просмотре элементов.
Строка матрицы – совокупность элементов с индексом столбца, изменяющимся при просмотре элементов,и фиксированным индексом строки.
Проверять элементы отдельной строки можно так же, как проверять элементы одномерного массива.
Для отдельной строки решаем задачу «Проверка условия».
Для фиксации результата проверки совокупности элементов отдельной строки используем логическую переменную:
л
истина, если все элементы строки
удовлетворяют условию,
ложь, в противном случае.
y2=
Пустьi- текущий номер строки.
Положим сначала, что искомая строка не найдена, т.е. y1=ложь.
Просматриваем матрицу по строкам,
пока строка не найдена (y1=ложь) и строки не исчерпаны (i<=m):
Вх.: m,
n,
a,
i
вых.: y2
анализ y2и формированиеy1иk:
если y2= истина, то
y1:= истина;
k:=i;
кесли:
конец просмотра
Поясненияк списку входных данных подзадачи А1.
Если в некоторой подзадаче задана матрица, то заданы; m, n, элементы матрицы.
Т.е. входные данные: m, n, a (будем указывать имя массива).
Тогда, если задана строка матрицы (пусть i- номер строки), то входные данные:m, n, a, i(задана матрица и указана строка для обработки).
Задача А1.Этапы разработки и документация такая же, как для подзадачи А02 в задаче «Точки в круге» (§ 2.4). Формулировка, описание входных и выходных данных, метод и т.д. реализуются так же, как для задачи «Проверка условия» (§ 4.2).