Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новая папка / 05 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ЛабРаб ОП та АМ_5.doc
Скачиваний:
9
Добавлен:
28.03.2016
Размер:
229.38 Кб
Скачать

Лабораторная работа № 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; {Увеличение количества положительных элементов}

  

Кроме этого, теперь Вы можете использовать этот алгоритм для определения:

  1. числа отрицательных или нулевых элементов;

  2. числа элементов, равных заданному числу;

  3. числа элементов массива, содержащих числа превышающие или не превышающие заранее заданное число;

  4. числа элементов, содержащих значения, находящиеся в заданном интервале и т.д.

Очень часто программирование алгоритмов работы с векторами требует определения максимального или минимального элемента. Для этого существует очень простой алгоритм, который Вы должны знать:

  

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];

  

Рассмотрим теперь последовательно все этапы создания программы обработки одномерного массива.