- •Раздел 3 Программирование
- •1 Структура программы на языке Pascal
- •2 Операторы языка Pascal
- •2.2 Операторы ввода данных
- •2.3 Операторы вывода данных
- •3 Стандартные функции Pascal
- •3.1 Примеры составления линейной программы
- •4 Контрольные вопросы
- •5 Задание
- •1 Условный оператор if
- •2 Оператор варианта case
- •3 Контрольные вопросы
- •4 Задание
- •4.1 Задание по условному оператору
- •4.2 Задание по оператору варианта
- •5 Содержание отчета
- •1 Оператор цикла с постусловием
- •2 Оператор цикла с предусловием
- •3 Оператор цикла с параметром
- •4 Контрольные вопросы
- •5 Задание
- •6 Содержание отчета
- •1 Итерационные циклы
- •2 Программа итерационного цикла
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Краткая теория
- •1 Программа "цикл в цикле"
- •2 Программа "цикл и ветвление"
- •3 Программа "цикл в цикле и ветвление"
- •4 Контрольные вопросы
- •5 Задания
- •6 Содержание отчета
- •1 Одномерные и многомерные массивы
- •2 Обработка массивов
- •3 Контрольные вопросы
- •4 Задания
- •5 Содержание отчета
- •1 Описание функций
- •2 Параметры функции
- •2.1 Параметры-значения
- •2.2 Параметры-переменные
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Формат описания процедуры
- •2 Параметры процедуры
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Средства и методы отладки программ
- •1.1 Понятие отладки
- •1.2 Разновидности ошибок
- •1.2.1 Ошибки этапа компиляции
- •1.2.2 Ошибки этапа выполнения
- •1.2.3 Логические ошибки
- •2 Выполнение программы по шагам и трассировка
- •2.1 Выполнение по шагам и трассировка
- •2.2 Остановка выполнения
- •2.3 Отслеживание и модификация
- •2.4 Понятие отладочного шага
- •2.5 Выполнение программы по шагам
- •2.6 Трассировка программы
- •2.7 Выполнение больших фрагментов
- •2.8 Повторное выполнение
- •3.2.2 Редактирование просматриваемых выражений
- •3.3 Вычисление и модификация
- •3.3.1 Вычисление выражений
- •3.3.2 Модификация переменных
- •3.4 Использование точек останова
- •3.5 Задание точек останова
- •3.6 Отмена точки останова
- •3.7 Модификация точек останова
- •3.8 Создание условной точки останова
- •5.2 Установка точек останова
- •6 Содержание отчета
6 Содержание отчета
1 Название, цель, содержание работы
2 Задание для своего варианта.
3 Схема алгоритма.
4 Программы.
5 Результаты расчётов в среде pascal.
6 Письменные ответы на контрольные вопросы.
7 Выводы по работе
154
Лабораторная работа № 6
Обработка массивов
Цель работы: разработка программ, реализующих вычислительные
процессы .с индексированными переменными
Содержание работы:
1 Одномерные массивы
2 Многомерные массивы
3 Обработка массивов
1 Одномерные и многомерные массивы
Все переменные делятся на простые и индексированные. Простые записываются своими идентификаторами (именами) и могут быть различных типов (integer, real,…), напр, PI, Xmin, DELTA, omega и др. Индексированные переменные являются элементами массива, который состоит из набора данных одного типа Массив элементов имеет общий идентификатор-имя, а каждый его элемент определяется по индексу имени, например, V[i] – i-тый элемент массива с именем V. Массив объединяет фиксированное количество элементов одного типа данных. Более формально массив можно определить как последовательную упорядоченную совокупность элементов некоторого типа, которые адресуются с помощью некоторого индекса (номера элемента в массиве).
Наряду с термином «массив» часто используются термины «матрица», «таблица», «вектор».
Поскольку все элементы массива должны быть одного типа, определение типа массива имеет следующий вид:
type Tarr = array [T1] of T2,
где Tarr – имя массива., array,of – служебные слова, Т1 – означает тип индекса массива, Т2 – тип элементов массива.
В качестве типа индекса может быть использованы все порядковые типы, за исключением длинного целого (longint) и поддиапазонов длинного целого.
Массивы могут быть одномерными и многомерными, например, X[I], A[I,J], D[I,J,K] и др. Число индексов в определении (то есть размерность массива) не ограничивается.
Элемент массива также может быть массивом, тогда количество ячеек памяти, отводимое под массив программой, равно общему количеству элементов в массиве. Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив.
155
Например, array[1..5] of array[1..10] of Real интерпретируется компилятором точно так же, как массив: array[1..5,1..10] of Real. Таким образом, допускается запись типов индексов, разделенных запятыми, в одних скобках..
Примеры описания массивов:
Тип массива (его элементов) должен быть описан до объявления самого массива (его имени):
type
V1 = array[1..100] of real;
V2 = array[char] of boolean;
M1 = array[1..10] of array [1..15] of integer;
Var
Vector: V1;
Symb_Table: V2;
Matrix1, Matrix2: M1;
Однако допускается объявление массива непосредственно в разделе описания переменных:
var
B: array[1..5] of byte;
S: array[(Red, Yellow, Green)] of Boolean;
M: array[1..5,1..7] of integer;
Иногда требуется задать массив с помощью типизированной константы. Пример:
const
Marks: array[1..4] of integer = (2,3,4,5);
Tmatr: array[1..2,1..3] of byte = ((3,1,5),(7,2,4));
Pascal допускает единственное возможное действие над массивом в целом: использование его в операторе присваивания, например
Vect1:=Vect2
причем типы обоих массивов в данном случае должны быть эквивалентны.
Доступ к элементам массива строится традиционно: после идентификатора массива в квадратных скобках указывается индекс нужного элемента или список индексов, определяющий элемент многомерного массива. В качестве
индексов могут выступать произвольные выражения, тип которых должен соответствовать типу индексов в описании массива.
156
Примеры:
Vector[1]
Vector[(i+1)*2]
M[i,j]
M[3][1]
M[3,1]
Элемент массива считается переменной; он может получать значения (например, в операторе присваивания), а также участвовать в выражениях.
Примеры:
M[i,j]:=M[i,j-1]*2
Symb_Table[‘a’]:=true;
Vector[i]:=M[i,1] mod 2;