- •Лабораторная работа № 5
- •Освоение технологии структурного программирования
- •И применения стандартных методов работы с одномерными массивами
- •При разработке и создании программы на языке Турбо Паскаль.
- •Теоретические сведения
- •1. Условие задачи:
- •9. Для защиты лабораторной работы:
- •Задания к лабораторной работе № 5
1. Условие задачи:
Массив Х содержит 10 целых чисел. Переписать четные элементы массива Х в массив А, нечетные – в массив В, и найти максимальный элемент массива А и минимальный элемент массива В.
2. Решение задачи в ее предметной области, в данном случае этого не требуется.
3. Проектируем структуры данных (их имена и типы). Понятно, что все имена масивов с их типами, входящие в условие задачи, нужно описать в программе. Кроме того, нам понадобятся: переменная цикла i, количество четных элементов KolChet, количество нечетных элементов KolNech, значение максимального элемента Max, его индекс MaxInd, значение минимального элемента Min и его индекс MinInd – все типа Integer.
Значит в разделе описаний программы, назовем ее MaxMin, с учетом требований о необходимости обеспечения легкочитаемости программы и размещения необходимых комментариев, поместим следующие описания:
Type
VectorType = Array[1..10] of Integer;
Var
X, {Массив для хранения вектора}
A, {Массив для хранения четных чисел}
B : VectorType; {Массив для хранения нечетных чисел}
i, {Параметр цикла}
KolChet, {Количество четных элементов}
KolNech, { Количество нечетных элементов }
Max, {Максимальное значение}
MaxInd, {Его индекс}
Min, {Минимальное значение}
MinInd : Integer; { Его индекс}
4. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся результатами (рис. 1) для получения первой версии алгоритма:
Ввести данные MaxMin
Выполнить вычисления MaxMin
Вывести результаты MaxMin
С учетом требований к «дружественности» интерфейса, детализация псевдокода Ввести данные MaxMin дает следующее:
Вывести на экран приглашение для ввода массива Х
Ввести массив Х
Детализация псевдокода Выполнить вычисления MaxMin дает следующее:
Определить четные элементы Х и переписать в А
Определить нечетные элементы Х и переписать в В
Найти максимальный элемент массива А
Найти минимальный элемент массива В
Детализация псевдокода Вывести результаты MaxMin дает следующее:
Вывести название максимального эл-та и его содержимое
Вывести название минимального эл-та и его содержимое
5. Выполняем структурное программирование с использованием стандартных приемов:
BEGIN
ClrScr; { Очищаем экран }
WriteLn(‘Введите 10 элементов вектора Х:’);
for i:=1 to 10 do {Организуем цикл по количеству элементов}
begin
Write (‘ X[‘,i,’] = ’); {Удобно видеть номера элементов}
ReadLn (X[i])
end;
WriteLn; {Устанавливаем курсор на новую строку}
{Переносим чётные элементы из Х в А с использованием функции Odd(i)}
KolChet := 0;
for i:=1 to 10 do
if not Odd(X[i]) then {для чётных – условие – not Odd(X[i])}
begin
KolChet := KolChet+1; {Определяем номер очередного эл-та}
A[KolChet] := X[i] {Заносим по этому номеру}
end;
{Переносим нечётные элементы из Х в В с использованием функции Odd(i)}
KolNech := 0;
for i:=1 to 10 do
if Odd(X[i]) then {для нечётных – условие – Odd(X[i])}
begin
KolNech := KolNech+1; {Определяем номер очередного эл-та}
A[KolNech] := X[i] {Заносим по этому номеру}
end;
{Определяем максимальный элемент массива А из KolChet элементов}
Max := A[1]; {Считаем, что первый элемент массива – максимальный }
for i:= 2 to KolChet do {Поэтому начинаем обработку со второго элемента}
if A[i] > Max then {Сравниваем с текущим максимальным значением }
begin
Max := A[i]; {Запоминаем максимальное значение}
MaxInd := i { Запоминаем его индекс}
end;
{Определяем минимальный элемент массива В из KolNech элементов}
Min := B[1]; {Считаем, что первый элемент массива – минимальный }
for i:= 2 to KolNech do {Поэтому начинаем обработку со второго элемента}
if B[i] < Min then {Сравниваем с текущим минимальным значением }
begin
Min := B[i]; {Запоминаем минимальное значение}
MinInd := i { Запоминаем его индекс}
end;
{ Выводим результат }
WriteLn(‘Максимальный элемент A[’, MaxInd, ‘] = ‘,
A[MaxInd]);
WriteLn(‘Минимальный элемент B[’, MinInd, ‘] = ‘,
A[MinInd]);
ReadLn
END.
6. Отладка программы. Отладка программы – это процесс поиска и устранения синтаксических ошибок в готовой программе. Обычно отладка предшествует стадии тестирования. В этом пункте необходимо привести скриншот результата работы готовой программы (см. п. 5 Лаб. раб № 1).
7. Тестирование программы. Цель тестирования всякой программы состоит в том, чтобы убедиться, что она решает действительно ту задачу, для которой предназначена, и выдаёт правильный ответ при любых значениях из области решений. Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок. Подготовьте тестовый набор данных для вектора Х.
Исследуйте Вашу программу при необходимых тестовых значениях.
8. Перед защитой лабораторной работы Вам необходимо подготовить отчет (Приложение 2). Перед распечаткой обязательно продемонстрируйте его преподавателю в электронном виде, чтобы избежать ошибок в оформлении!