- •Лабораторная работа № 5
- •Освоение технологии структурного программирования
- •И применения стандартных методов работы с одномерными массивами
- •При разработке и создании программы на языке Турбо Паскаль.
- •Теоретические сведения
- •1. Условие задачи:
- •9. Для защиты лабораторной работы:
- •Задания к лабораторной работе № 5
Лабораторная работа № 5
Освоение технологии структурного программирования
И применения стандартных методов работы с одномерными массивами
При разработке и создании программы на языке Турбо Паскаль.
Цели работы:
1. Освоение методики нисходящей разработки (проектирования) программы методом пошаговой детализации с помощью псевдокода при решении задач с помощью ПК.
2. Освоение методов структурного программирования при разработке и создании программы на языке Турбо Паскаль для обработки одномерных массивов.
3. Овладение выразительными средствами графики языка ТП для повышения читаемости программы.
4. Овладение навыками введения в программу необходимого количества комментариев.
5. Приобретение навыков алгоритмизации и программирования на алгоритмическом языке Паскаль
6. Освоение средств исследования программы.
7. Освоение методики тестирования программы.
Теоретические сведения
Массив – это регулярная структура (последовательность) однотипных данных, объявляемых специальной конструкцией языка ТП:
Array [<ДиапазонИндексов>] of <ТипКомпонентов>;
Под однотипностью данных, содержащихся в массиве, понимается принадлежность каждому конкретному массиву только однотипных элементов (Real, Integer и др.). То есть, в массиве не могут, к примеру, одновременно находиться числа вещественного и целого типов и т.д.
Доступ к любому компоненту массива обеспечивается простым указанием его порядкового номера.
Наиболее часто массивы используют для хранения вектор-столбцов и вектор-строк (одномерные массивы):
Var
Vector : Array [1..3] of Real;{одномерный массив Vector, аналог вектор-столбцов и вектор-строк из 3-х элементов}
Таким образом мы объявляем структуру Vector – из трёх элементов типа Real, проиндексированных заданным диапазоном чисел от 1 до 3:
Vector[1], Vector[2], Vector[3]
Вам теперь должно быть понятно, как получить доступ к каждому из элементов массива. Этот факт позволяет использовать массивы для проведения вычислений с использованием вектор-строк и вектор-столбцов. Вместе с тем, Вы должны знать некоторые тонкости работы с массивами в ТП. Если индексация элементов задаётся числовым диапазоном, то необходимо выполнять только два требования:
– максимальные значения индексов в описании массивов не должны быть типа LongInt, то есть наибольшее значение индекса должно "вмещаться" максимум в типе Word и таким образом принимать максимальные значения не более 65535;
– произведение количества компонентов массива на размер компонентов, выраженный в байтах, не может превышать 65520 байт (64Кбайт).
Теперь, когда Вы уже знаете, как описывать массивы и умеете работать с операторами циклов с параметрами, Вы в состоянии организовать в своей программе ввод данных в массив и вывод данных из него. Имейте в виду, что в Турбо Паскале, массивы в оперативной памяти располагаются статически, что не позволяет без специальных средств (ссылок или динамических переменных) изменять их границы в процессе работы программы. Обычным выходом из этой неудобной ситуации является описание массивов на максимальную длину, а необходимые размеры векторов и матриц для решения каждой конкретной задачи вводить в программе.
Запомните, что ввод-вывод одномерных массивов является стандартной приемом и его просто необходимо запомнить и научиться применять (рис. 5.1).
При работе с матрицами, как правило, приходится иметь дело с набором стандартных приёмов либо их композицией. Поэтому Вам необходимо знать набор стандартных приемов, чтобы в будущем конструировать из него фрагменты алгоритмов программ, которые могут возникнуть из постановки конкретных задач.
Самым простым является суммирование элементов векторов. Для этого в программе необходимо описать переменную Sum такого же типа, что и элементы массива, и в цикле, по очереди, добавлять к ней элементы массива:
... {Суммирование элементов одномерного массива (вектора)}
Type
VectorType = Array[1..20] of Real;
Var
A: VectorType; {Массив для хранения вектора}
i, m : Integer; {Параметр цикла и размер вектора}
Sum : Real; {Переменная Sum для суммирования}
Sum := 0; {Подготовка переменной Sum для суммирования!!!}
for i: =1 to m do
Sum;
Ещё одной распространённой задачей является использование счетчика для подсчёта элементов векторов с определёнными характеристиками, к примеру, положительных или отрицательных элементов. Это требует введения в тело цикла условного оператора:
{Определим количество положительных элементов Count (типа Integer)}
Count := 0; {Подготовка переменной Count для суммирования!!!}
for i:= 1 to m do
if A[i] > 0 then {Определение положительного элемента}
Count := Count+1; {Увеличение количества положительных элементов}
Кроме этого, теперь Вы можете использовать этот алгоритм для определения:
числа отрицательных или нулевых элементов;
числа элементов, равных заданному числу;
числа элементов массива, содержащих числа превышающие или не превышающие заранее заданное число;
числа элементов, содержащих значения, находящиеся в заданном интервале и т.д.
Очень часто программирование алгоритмов работы с векторами требует определения максимального или минимального элемента. Для этого существует очень простой алгоритм, который Вы должны знать:
Max := A[1]; {Считаем, что первый элемент массива – максимальный }
for i:= 2 to n do {Поэтому начинаем обработку со второго элемента}
if A[i] > Max then {Сравниваем каждый следующий элемент с текущим максимальным значением }
Max:= A[i];{Заменяем старое значение Max новым бŏльшим }
{После выполнения цикла в Max находится максимальное значение из A }
Ещё одним достаточно полезным алгоритмом, который может Вам понадобиться при работе с массивами, является поиск чётных/нечётных элементов целых массивов и их суммирование. Для этого в Турбо Паскале существует специальная встроенная логическая функция Odd(x), которая при целом аргументе x возвращает значение True при x нечётном и False в случае чётного числа:
{Находим сумму нечётных элементов с использованием функции Odd(i)}
Sum := 0;
for i:=1 to n do
if Odd(i) then {для чётных – условие – not Odd(i)}
Sum := Sum + A[i];
Рассмотрим теперь последовательно все этапы создания программы обработки одномерного массива.