
- •Введение
- •1. Программирование на языке Паскаль
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •2. Организация форматного вывода данных на языке Паскаль
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Вопросы для самопроверки
- •Лабораторная работа №9 составление программ с использованием модулей
- •Варианты заданий
- •10. Строковые типы данных (String)
- •10.1 Операции со строками
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •Лабораторная работа №12 организация работы с внешней памятью
- •Варианты заданий
- •13. Множества
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Библиографический список
7.1.2. Полная форма объявления одномерного массива
Описание типа задаётся следующим образом:
TYPE
<имя_типа> = ARRAY [ < нач_индекс..кон_индекс > ] OF <тип_данных>;
VAR
<Имя_массива> : < имя_типа >;
Здесь <имя_типа> - правильный идентификатор;
ARRAY, OF – зарезервированные слова (массив, из);
[ < нач_индекс..кон_индекс > ] – список из одного или нескольких индексных типов, разделённых запятыми;
<тип_данных> - базовый тип.
Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов. В общем случае диапазон допустимых значений индекса задаётся любым конечным скалярным типом.
Например,
Type mass = array [1..5] of integer;
Var R : Mass;
Данный способ описания массива применяется при работе с подпрограммами: для передачи процедуре или функции параметров одного типа.
7.1.3. Доступ к элементам массива
Выполнить операцию над массивом означает выполнить действия над элементами этого массива. Элементы массива называются также переменными с индексами. Получить доступ к каждому элементу-ячейке массива можно путём указания индекса в квадратных скобках.
Например, k := R[1] + R[5]; R[3] := 34;
Здесь, в первом случае переменной k присваивается сумма значений элементов массива R с порядковыми номерами 1 и 5. Во втором примере элементу массива R с порядковым номером 3 присваивается значение 34.
В качестве индекса может использоваться выражение, результатом которого является целое число.
Например, R[2*I] – элементы массива с чётным индексом; R[2*I-1] – элементы массива с нечётным индексом.
Все операции по формированию элементов массива, обработке массива, выводу на печать выполняются в цикле с параметром.
В частности, для ввода и вывода числовых значений массива используются циклы:
FOR I := 1 TO 10 DO READ (A[I]);
FOR I := 1 TO 10 DO WRITE (A[I]);
В операторах присваивания можно использовать не только элементы массивов, но и массивы в целом. Оператор вида A := B выглядит лаконичнее и выполняется быстрее цикла for i :=1 to n do A[i] := B[i]. Используя в операторах присваивания массивы, следует помнить, что такая конструкция приводит к копированию всего массива! Массивы в целом можно использовать в логических отношениях равенства (=) и неравенства (<>). Другие операции отношения применяются только к отдельным элементам массива.
Элементы массива могут вводиться с клавиатуры или формироваться случайным образом.
В последнем случае используется функция – генератор случайных чисел Random. Эта функция согласно определённому алгоритму при каждом обращении к ней возвращает случайное число – либо вещественное, из интервала [0..1], если аргумент отсутствует, либо целое, если задан целочисленный аргумент. Чтобы эта функция работала корректно, рекомендуется вначале её инициализировать, вызвав процедуру Randomize без параметров.
Например,
randomize;
for i := 1 to 10 do R[i] := random; (из интервала [0..1])
или
randomize;
for i := 1 to 10 do R[i] := random(11); (из интервала [0..10])
Условия чётности и нечётности элемента массива:
If R[i] mod 2 = 0 then …
If odd (R[i]) then …или
If odd (R[i]) = false then …
If R[i] mod 2 <>0 then …
If not odd (R[i]) then …или
If odd (R[i]) = true then …
З
адача
7.1. В массиве,
состоящем из пяти элементов подсчитать
количество положительных и отрицательных
элементов. Положительные элементы
записать в один одномерный массив, а
отрицательные – в другой.
Блок-схема алгоритма
Листинг программы
PROGRAM TASK1;
USES CRT;
CONST N = 50;
VAR
A, B, C : ARRAY [1..N] OF INTEGER;
I, K, L : INTEGER;
BEGIN
CLRSCR;
WRITE (‘Введите размерность массива <=50’);
READLN (N);
FOR I := 1 TO N DO READLN (A[I]);
K := 0;
L := 0;
FOR I :=1 TO N DO
BEGIN
IF A[I] < 0 THEN
BEGIN
K := K + 1;
B[K] := A[I];
END
ELSE
BEGIN
L:= L + 1;
C[L] := A[I];
END;
END;
WRITELN (‘Отрицательные элементы массива ’);
FOR I := 1 TO K DO WRIETLN (B[I]);
WRITELN (‘Положительные элементы массива’);
FOR I := 1 TO L DO WRIETLN (C[I]);
WRITELN (‘Кол-во отрицательных элементов ’);
WRITELN (K);
WRITELN (‘Кол-во положительных элементов ’);
WRITELN (L);
READLN;
END.
Задача 7.2. Найти максимальный элемент и значение индекса этого максимального элемента целочисленного одномерного массива, сформированного случайным образом.
Примечание. Данная задача решается перебором всех элементов массива и сравнением их с «пробным» значением, избранным на роль максимального элемента. Если сравниваемый элемент при этом окажется больше по величине, он становиться «пробным» и все последующие значения сравниваются именно с ним.
Алгоритм решения программы №1:
Сформировать случайный целочисленный массив R;
Присвоить вспомогательной переменной max значение первого элемента массива;
Для каждого элемента массива, начиная со второго и заканчивая последним, проверить выполнение условия max > R[i]. Если оно выполнено, то продолжать перебор, иначе присвоить max := R[i]и index = i и продолжать перебор.
Б
лок-схема
алгоритма
Листинг программы
PROGRAM TASK2;
USES CRT;
CONST N = 100;
VAR R : ARRAY [1..N] OF INTEGER;
I, MAX, INDEX : INTEGER;
BEGIN
CLRSCR;
RANDOMIZE;
FOR I:=1 TO N DO R[I]:=random(11);
MAX := R[1];
INDEX := 1;
FOR I l= 2 TO N DO IF MAX < R[I] THEN
BEGIN
MAX := R[I];
INDEX := I;
END;
WRITELN (‘Значение ’, INDEX, ‘-го максимального элемента равно ’, R[INDEX]);
WRITELN (‘Для завершения работы нажмите <Enter>’);
READLN;
END.
Алгоритм решения программы №2:
Сформировать случайный целочисленный массив R;
Присвоить вспомогательной переменной index порядковый номер первого элемента массива, то есть 1;
Для каждого элемента массива, начиная со второго и заканчивая последним, проверить выполнение условия R[index] > R[i]. Если оно выполнено, то продолжать перебор, иначе присвоить index:=i и продолжать перебор.
Листинг программы
PROGRAM TASK2;
USES CRT;
CONST N = 100;
VAR R : ARRAY [1..N] OF INTEGER;
I, INDEX : INTEGER;
BEGIN
CLRSCR;
RANDOMIZE;
FOR I := 1 TO N DO R[I] := random (11)-5;
INDEX := 1;
FOR I= 2 TO N DO
IF R[INDEX] < R[I]
THEN INDEX := I;
WRITELN (‘Значение ’, INDEX, ‘-го максимального элемента равно ’, R[INDEX]);
WRITELN (‘Для завершения работы нажмите <Enter>’);
READLN;
END.
Б
лок-схема
алгоритма
Задача 7.3. Сформировать элементы массива случайным образом и вывести на экран в обратном порядке.
Листинг программы
USES CRT;
VAR A : ARRAY [1..100] OF INTEGER; I : INTEGER;
BEGIN
CLRSCR;
RANDOMIZE;
WRITELN (‘Сформированный массив: ’);
FOR I := 1 TO 100 DO
BEGIN
A[I] := RANDOM (11) - 6; {[-6..4]}
WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);
END;
READLN; {Enter}
WRITELN (‘Изменённый массив: ’);
FOR I := 100 DOWNTO 1 DO WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);
READLN;
END.
Задача 7.4. Сформировать массив случайным образом, состоящим из 1000 элементов, числа находятся в диапазоне от 150 до 250. Сосчитать количество чисел больших 200.
Листинг программы
USES CRT;
VAR A : ARRAY [1..1000] OF INTEGER;
I, K: INTEGER;
BEGIN
CLRSCR;
RANDOMIZE;
WRITELN (‘Сформированный массив:’);
FOR I := 1 TO 1000 DO
BEGIN
A[I] := RANDOM (101) +150; {[150..250]}
WRITE (‘A[’, I, ‘]= ’, A[I]:3, ‘’:2);
END;
READLN; {Enter}
K := 0;
FOR I := 1 TO 1000 DO IF A[I] > 200 THEN K := K +1;
WRITELN (‘Количество элементов >200 = ’, K:2);
READLN;
END.