- •Введение в 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.5.2 Применение случайных чисел при работе с массивами
В языке Паскаль массив описывается заранее до его использования и во время исполнения программы не меняется его длина, размерность и тип элементов. Такие массивы называются статическими. Другой подход – это когда массив создаётся во время работы программы. Такой массив называют динамическим. В этом курсе мы будем работать только со статическими массивами. Это означает, что при описании мы должны указать максимально возможную длину массива по каждому индексу.
При создании произвольных массивов чаще всего используют функцию-генератор случайных чисел. Приведём пример создания произвольного одномерного целочисленного массива и вывода его на экран.
program p8_7;
uses CRT;
const
n:= 1000; { максимальный размер массива }
var
М: array[1.. n] of integer;
i, k : integer;
begin
write('Введи длину массива:');
Readln(k); { k – текущая длина массива; k <= n }
{ Создание массива и вывод его элементов на экран }
Writeln(' Созданный массив'); { Вывод заголовка на экран }
for i := 1 to k do
begin
{ Элементы массива – случайные числа в интервале от -150 до 150 }
M[i] := random(301) – 150;
Write( М[ i ]:4, ' ' );
If i mod 8 = 0 then writeln; {Через каждые 8 чисел – перевод строки }
end;
readkey;
end.
То же самое повторим для двумерного массива - квадратной матрицы.
program p8_8;
uses CRT;
const
n := 10; { максимальное число строк в матрице }
m := 10; { максимальное число столбцов в матрице }
var
М: array[1.. n, 1.. m] of real;
i, j, k : integer;
begin
write('Введи размер матрицы:');
Readln(k); { k – текущий размер матрицы; k <= n }
{ Создание массива и вывод его элементов на экран }
Writeln(' Созданный массив'); { Вывод заголовка на экран }
for i := 1 to k do { цикл по строкам }
for j := 1 to k do { цикл по столбцам }
begin
{ Элементы массива – случайные действительные числа
в интервале от -200 до 200 }
M[i, j] := 400*random – 200;
Write( М[ i, j ] : 8 : 2, ' ' );
end;
writeln; { после вывода строки чисел – переход на следующую строку }
readkey;
end.
Лекция 9. Строки
9.1 Строковый тип
Строки символов, реализованные в языке Object Pascal, обладают всеми признаками и свойствами одномерных символьных массивов (... array... of Char ). Символьные массивы могут входить в состав строковых выражений. В этом случае массив преобразуется в строку, длина которой равна длине массива. Символьным массивам можно присваивать значения строковых констант, но нельзя присваивать значения строковых переменных или значения строковых выражений.
Пример:
program p9_1;
const
S1= 'ABCDFGHIJK'; { константа – строка }
var
S2: String[10]; { описание строки }
S3: array [1.. 10] of char; { описание символьного массива }
begin
S2 := S3; { - присваивание возможно }
S3 := S1; { - присваивание возможно }
S3 := S2; { - ошибка вида «Type mismatch» }
end.
Строковые переменные описываются в разделе описания переменных следующим образом:
<список идентификаторов>: String [<максимальное количество
символов>];
Примеры:
var
S : String [10] ;
S1: String [40];
S2, S3, S4 : String[255];
Максимальная длина строки не должна превышать 255 символов. Возможно такое описание строковой переменной: S: String;
Это описание соответствует строке с максимальной длиной 255 символов ( String[255] ).
Если строковой переменной попытаться присвоить значение строки с большей, чем максимальная длина, то ошибки не произойдет, но конец строки будет автоматически обрезан.
В программе доступ к отдельным символам строки осуществляется как к элементам массива, посредством указания индекса (от единицы до максимальной длины строки) в квадратных скобках:
S[1]:= 'A'; S[4]:= '$'; S[t]:= '!';
Нулевой байт переменной, содержащей строку, равен длине этой строки.