- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
8.4 Констант-массивы
Очень часто возникают сложности, связанные с вводом элементов массива, особенно во время отладки. Приходится по нескольку раз вводить большие объемы информации. Этого можно избежать, описав массив - константу в разделе Const.
Одномерный массив
<идентификатор — имя массива>: array [<диапазон изменения индекса> ] of <тип элементов> =
<список элементов, через запятую>);
Примеры:
Const
A : array [ 1 .. 5] of integer = (7, 3, 22, 4, 3) ;
B : array [ 1 .. 3] of real = (2.55, 7.1, 3.6) ;
C : array [ 1 .. 3] of char = (‘A’, ‘B’, ‘C’) ;
Многомерные массивы
<идентификатор - имя массива>: array [ <список диапазонов, через запятую>] of <тип элементов> = (<список элементов массива, разделённых по группам в круглых скобках>);
Для двухмерного массива, группы - это строки. Примеры:
Const
M : array [ 1 .. 3, 1 .. 3] of integer = ((1, 2, 4) , (1, 7, 8), (22, 8, 4)) ;
T : array [ 1 .. 2, 1 .. 2, 1 .. 2] of byte = (((1, 8) , (4, 4)), ((3, 2) , (5, 4))) ;
В нашем случае все массивы были описаны как типизированные константы, значит их использование в программе равноценно использованию обычных массивов - переменных. Однако надо помнить, что изменять элементы этих массивов нельзя.
Задача. В одномерном массиве определить количество последовательностей из нулей. Последовательности - это цепочки из одного или более нулей, разделенные ненулевыми элементами.
program p8_4;
const
n= 10;
A: array[l..n] of Integer = (0, 1, 0, 0, 5, 0, 1,0, 3, 0, 0, 0, 2) ;
var
zero: Boolean;
i, k: integer;
begin
zero:= false;
k:= 0;
for i : = 1 to n do
if A[i] = 0 then
if not zero then begin k := k + 1; zero:= true; end;
else zero:= false;
Writeln(' количество нулевых последовательностей = ', k);
end.
8.5 Генератор случайных чисел
8.5.1 Описание функции Random
В Object Pascal существует встроенный генератор случайных чисел – функция Random. Чтобы её использовать необходимо подключить библиотечный модуль CRT.
Если необходимо при каждом запуске программы, использующей Random, иметь различные последовательности случайных чисел, то перед обращением к Random следует обратиться к процедуре Randomize без параметров. Если этого не сделать, то при каждом запуске программы мы будем получать одну и туже последовательность случайных чисел. Это бывает полезно при отладке программы.
Обращение к функции: Random ( N ) , где N – целое число типа word. Функция возвращает случайное целое число в диапазоне от 0 до N-1. Если требуется получить случайное целое число в интервале от a до b, то обращение к ней выглядит так: Random( b – a +1) +a.
Пример:
program р8_5;
Uses Crt;
Var k : integer;
begin
Randomize;
Writeln(' Cлучайные числа в диапазоне от 0 до 255’);
repeat
k := Random(256);
Write(k : 3, ' ');
until KeyPressed;
end.
В этом примере будут выводиться на экран случайные целые числа, пока вы не нажмёте какую-либо клавишу.
Если, при обращении к нашей функции Random, диапазон не указан (обращение к функции без параметра), то возвращается действительное число в пределах от 0 до 1. Для получения случайного действительного числа в интервале от a до b обращение к функции следует скорректировать: (b-a)*Random + a.
В следующем примере будут выводиться действительные случайные числа в заданном диапазоне, пока не будет нажата любая клавиша.
program p8_6;
var
S : real;
begin
Write('Введи начало и конец диапазона случайных чисел:');
Readln(a, b);
Randomize;
Writeln(' Cлучайные числа в диапазоне от ', a, ' до ', b);
repeat
S := (b – a)*Random + a;
Write(S : 10 : 5, ' ');
until KeyPressed;
end.