- •Введение
- •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. Структура типов данных в языке Паскаль
- •Содержание
8. Кодирование на паскале
Определение глобальных типов(для параметров нестандартных типов)
Представляется, что удобнее кодировать сначала процедуру, а затем головной модуль, так как именно использование процедуры вынуждает конструировать описание именованных нестандартных типов. Однако это утверждение обсуждаемо.
Как было сказано в § 1.1, типы данных выбираются в соответствии с диапазонами значений данных. К моменту разработки процедуры эти типы для входных и выходных данных основной задачи уже известны и служат основой для определения типов данных в подзадачах.
Пусть в нашем случае:
m,n,i – тип-диапазон;нестандартный тип;
a– матрица с элементами типаreal;нестандартный тип;
y2– типаboolean.
Определим необходимые глобальные типы и константы:
const
nmax=100; mmax=100;
type
diap=1..nmax; { для m,n,i }
matr=array[1..mmax,1..nmax] of real; { для a }
Описание процедуры
procedure provstr(m,n,i: diap; a:matr; var y2:boolean);
var j:diap;
begin
< операторы >
end;
9. Структурные тесты
Цикл тестируется любым из двух имеющихся тестов.
Ветка «то» развилки внутри цикла тестируется вторым тестом (хотя бы в одной строке есть элемент меньше 1), ветка «иначе» (пустая) – первым тестом.
● Программа в целом
Подставим описания глобальных объектов и процедуры в соответствующие разделы программы.
program ..... ;
< описание глобальных типов и констант >
var{описания переменных головного модуля}
m,n,i,j,k:diap;
a:matr;
y1,y2:boolean;
< описание процедуры >
begin
< ввод и вывод данных >
y1:=false; i:=1;
while not y1 and (i<=m) do
begin
{А01. Проверка строки}
provstr(m,n,i,a,y2);
if y2 then
begin
y1:=true; k:=i
end;
end;
< вывод результата >
end.
Пример 2. Это самостоятельный пример, иллюстрирующий ситуацию, когданесколько подзадач решаются вызовамиоднойпроцедуры. Здесь же проиллюстрируем специфику разработки процедур ввода – вывода.
Уровень 0
1. Задача mas3("3 массива").
В каком из трех массивов a[10],b[20],c[15] наибольшая сумма элементов? Случай равенства сумм можно не анализировать.
2. Входные данные
цел na– число обрабатываемых элементов массиваa; простая переменная; 0<na<=10; формат XX;
цел nb– число обрабатываемых элементов массиваb; простая переменная; 0<nb<=20; формат XX;
цел nc– число обрабатываемых элементов массиваc; простая переменная; 0<nc<=15; формат XX;
вещ a[na] – 1-й исходный массив; |a[i] |<=10; точность 0,1; формат ±XX.X;
b[nb] – 2-й исходный массив; |b[i] |<=10; ––– " ––– " ––– " ––– " ––– " –
c[nc] – 3-й исходный массив; |c[i] |<=10; ––– " ––– " ––– " ––– " ––– " –
3. Выходные данные
вещ sa– сумма элементов массива a; простая переменная; |sa| <= 10x10=100; точность 0,1; формат ±XXX.X;
вещ sb– сумма элементов массива a; простая переменная; |sb| <= 10x20=200; точность 0,1; формат ±XXX.X;
вещ sc– сумма элементов массиваc; простая переменная; |sc| <= 10x15=150; точность 0,1; формат ±XXX.X;
'a'
симв name– имя искомого массива;name= 'b'
'c'
Пусть выходные тестовые данные хранятся в файлах mas3_<№ теста>.res.
Пусть файловая переменная, связанная с выходным файлом, называется res.
Пусть выходной файл будет вторым параметром программы.