- •Введение
- •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. Структура типов данных в языке Паскаль
- •Содержание
4. Аномалии не рассматриваем
5. Функциональные тесты. Предусмотреть тесты для ситуаций, когда искомым массивом являетсяa;b;c.
6. Метод
Поочередный ввод и вывод массивов;
подсчет суммы элементов каждого массива;
сравнение сумм, получение и вывод результата.
7. Алгоритм
алг mas3(na,nb,nc,a,b,c,sa,sb,sc,name);
арг
цел na,nb,nc; вещ a[10]; b[20]; c[15];
рез
вещ sa,sb,sc; лит name;
нач
< сравнение sa,sb,sc и присвоение значения name >
<вывод результатов >
кон;
кон mas3;
Закодируем алгоритм после решения подзадач, так как это связано с особенностями кодирования интерфейсов в паскале.
Уровень 1
Все массивы обрабатываются одинаково. Обобщим аналогичные подзадачи и оформим соответствующие алгоритмы в виде процедур. Таким образом, целесообразно оформить 3 процедуры:
ввод массивов;
вывод массивов;
обработка.
Каждая из процедур будет вызвана трижды, для разных фактических параметров. Поэтому выберем имена формальных параметров отличными от имен фактических параметров.
Задача A0.1
1. Задача A0.1. Ввести из файла, представленного первым параметром программы, число элементов и значения элементов одномерного массива согласно форме ввода.
2. Входные данные
Отсутствуют (во внешнем представлении согласно входной форме).
3. Выходные данные
цел n– число элементов массива; во внутреннем представлении;
вещ mas[n] – исходный массив; во внутреннем представлении.
Оформление заголовка и вызова процедуры
Анализ специфики ввода и технических аспектов
Для всех массивов данные вводятся по одной схеме. Следовательно, ввод числа и значений элементов по этой схеме и должен составлять содержание процедуры.
Процедура вызывается трижды. При втором и третьем вызовах данные должны считываться с позиции, где закончилось предшествующее чтение.
При открытии файл устанавливается на начало; следовательно, если разместить операции открытия внутри процедуры, то потребуется пропустить уже считанные данные. Надо как-то фиксировать начало считываемой части данных и передавать в процедуру. Анализ показывает, что хорошего решения здесь не получается.
Поэтому откроем файл вне процедуры. Тогда для процедуры файловая переменная открытого файла будет представлять служебное входное данноеи может передаваться либо как глобальная, либо как параметр. Это варианты 1 и 2 таблицы 6.1 (см. § 6.3, с. 84).
При передаче через список параметров файловая переменная будет в данном случае входным параметром, так как процедура не меняет ее значения. Тем не менее в Паскале она должна описываться как var.
Назначение файла предшествует открытию, т.е. делается тоже вне процедуры.
Вид– общего вида
Имя–input
Заголовок– процinput(n,mas);
Вызов – осуществляется трижды, для каждого из массивов.
Соответствие формальных и фактических параметров и вызовы:
-
Подзадача
n
mas
A0.3.1
na
a
A0.3.2
nb
b
A0.3.3
nc
c
Для процедуры ввода вызов запишем в головной модуль после кодирования.
4. Аномалиине рассматриваем
5. Функциональные тестыте же, что для задачи в целом