- •Введение
- •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. Структура типов данных в языке Паскаль
- •Содержание
1.3. Состав документации по отдельным этапам
● Используемыеобозначения
<a> – значение выражения а;
::= – есть по определению;
[ a] – возможный компонент; в конкретном случаеaможет отсутствовать.
Форма описания типа и структуры данныхприведена в § 1.1.
Остальные обозначенияинтуитивно понятны и будут поясняться по мере появления.
● Для фиксации результатов выполнения отдельных этапов удобно использовать некоторую схему, одновременно задающую порядок разработки. Ниже предлагается схема, включающая ряд пунктов, снабженных номерами; целесообразно использовать эту нумерацию и не менять ее от разработки к разработке.
● Состав документации
Пункты 1 – 6 относятся к этапу составления внешней спецификации.
Пункт 7 – результат проектирования алгоритма; развитие п. 6. Эти пункты пересекаются, причем при правильной разработке все принципиальные моменты решения должны быть отображены в п. 6 и технически реализованы в п. 7.
Пункт 8 – результат кодирования. К взаимосвязи пп. 7 и 8 относится то же, что к пп. 6 и 7.
1. Задача
<четко сформулированное условие задачи>;
<упрощающие предположения и ограничения>
2. Входные данные
<тип> <имя> – <смысл>; <структура>; <диапазон>; <точность>; [<формат>;]
3. Выходные данные
<тип> <имя> – <смысл>; <структура>; <диапазон>; <точность>; [<формат>;]
4.Аномалии входных данных(недопустимые ситуации)
<описание аномалий>;
<реакции на аномалии>
Анализ таких ситуаций с точки зрения алгоритмизации является задачей, требующей точно такого же подхода, как и основная задача.
5.Функциональные тесты
№ теста |
Входные данные |
Ожидаемый результат |
Смысл теста |
<номер> |
<набор значений входных данных> |
<соответствующие значения результата> |
<смысл ситуации; зависит от задачи> |
6. Метод
[<название, если используется уже известный метод>];
<состав используемых при решении промежуточных величин>;
[<связи между данными в математических терминах, в виде формул >];
<словесное описание способа и основных этапов решения>
7. Алгоритм на псевдокоде
алг <имя алгоритма> (<список имен входных и выходных данных>);
арг
<описания входных данных>;
рез
<описания выходных данных>;
нач
<описания промежуточных данных>;
<операции >
кон;
кон<имя алгоритма>;
Базовые управляющие операторы псевдокода приведены в приложении. Другие операторы – ввод, вывод, присваивание (их использование демонстрируется в примере решения типовой задачи в гл. 2) и вызов процедур (описывается в гл. 6).
8. Программа на языке Паскаль
program<имя программы>(<имена файлов данных>);
uses<имена используемых стандартных модулей>;
{раздел определения констант}
const
<описания констант>;
{раздел описания типов}
type
<описания типов>;
{раздел описания переменных}
var
<описания переменных>;
{раздел операторов}
begin
<операторы>
end.
Правила кодирования в Паскале управляющих операторов приведены в приложении 1. Кодирование и использование операторов ввода, вывода и присваивания ясно из примера гл. 2. Процедурам посвящена гл. 6.
9. Структурные тесты
Строго говоря, эти тесты должны разрабатываться сразу после составления алгоритма. Код программы в них привносить ничего не должен. Этот пункт здесь размещен последним только в методических целях, чтобы в очевидных случаях, когда структурные тесты покрываются функциональными, его можно было опустить.
Для описания структурных тестов может быть использована та же схема, что и для функциональных тестов (см. п.5).
Набор тестов строится так, чтобы проверить правильность выполнения:
всех ветвлений (условных действий);
всех циклических действий.