- •Введение в 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 Текстовые файлы
7.4 Дополнительные операторы при программировании циклов
7.4.1 Досрочный выход из цикла - break
Иногда необходимо бывает проводить проверку на возможный выход из цикла где-нибудь в его середине, а не в начале или конце. Такой выход из цикла обеспечивается процедурой break, которая прерывает выполнение самого внутреннего вложенного цикла, будь то for, while или repeat.
Пример. Повторим задачу из предыдущего пункта: вычислить выражениес точностьюe.
program p7_9;
var
S, е, х: real;
i: integer;
begin
Writeln('Введите точность');
Readln(e);
S := 0;
For i :=1 to 1000 do begin
x:= l/(i*i*i) ;
S:= S + x;
{ если точность вычисления суммы достигнута, то выход из цикла }
If x < e then break;
end;
Writeln(‘Summa = ' , S:10:8) ;
end.
7.4.2 Переход к следующей итерации цикла - continue
Не редко полезной может оказаться процедура continue, которая прерывает выполнение самого внутреннего цикла for, while или repeat и передаёт управление на его заголовок, так что начинается выполнение очередной итерации цикла.
Пример:
……………………
while abs(p) > e do
begin
………………….
for i : = 1 to m do
begin
…………………………
if y <= 0 then continue;
…………………………
p: = p+y;
end;
if p > 1 then break;
……………………………
s: = s+p;
end;
………………………
В этом примере во внутреннем цикле пропускаются итерации в случае отрицательных или равных нулю величин y, а во внешнем – цикл прервется, если величина p превысит 1.
Лекция 8. Массивы
Массивом называют последовательность однотипных данных, имеющих один идентификатор - имя и различающихся по номерам (индексам) в этой последовательности.
Чтобы описать массив необходимо указать имя массива, тип его элементов, количество индексов (размерность массива), диапазоны изменения индексов.
8.1 Одномерные массивы
Описание одномерных массивов имеет вид
<список идентификаторов>: array [< диапазон изменения
индекса>] of <тип элементов массива>;
<диапазон изменения индекса> - это поддиапазон любого перечислимого типа. Например:
1 ..85, январь ..декабрь, ‘A’ .. ‘Z’ и т.п.
Типом элементов массива может быть любой простой тип. Кроме того, элементами массива могут быть другие массивы. Массивы описывают, как и остальные переменные в разделе Var.
Примеры:
A: array[l ..10] of integer; { массив с одним индексом,
который меняется от 1 до 10,
элементы массива целые числа }
В: array['А' . . ' Z ' ] of Real; { массив с одним индексом,
который меняется от 'А' до 'Z' ,
элементы массива - вещественные числа}
С: array[10 .. 20] of Char; { массив с одним индексом,
который меняется от 10 до 20,
элементы массива – символы }
Если два массива А и В однотипные, то допускаются следующие операторы присваивания:
А := В; или В := А;
Необходимо отметить, что элементы массивов имеют те же свойства, что и обычные переменные соответствующих типов. Доступ к элементу массива в программе выполняется путём указания идентификатора массива, а затем в квадратных скобках его номера (индекса).
Пример:
A[1]: = 7;
A[2]: = A[6];
A[6]:=SQRT(f);
На месте индекса элемента массива может стоять идентификатор переменной. В этом случае во время выполнения программы будет осуществлена подстановка – значение этой переменной.
Примеры:
1)
i:=7;
A[i] := 23; {это равносильно оператору А[7] : = 23; }
2)
for j:= 1 to 10 do A[j]:= j*j;
В последнем примере в цикле выполняется присвоение элементам массива конкретных значений. Изменение счётчика цикла в каждой итерации позволяет перебрать все элементы массива.
Одномерный массив длины N можно представить как вектор c элементами (А1, А2,..., АN). Если необходимо ввести значения элементов массива с клавиатуры, то для этого проще всего использовать цикл:
for i := 1 to n do read (A[i]) ;
или с выводом сообщения:
for i:= 1 to n do
begin
Write('введите А[' , i , ']: ');
Readln(A[i] ) ;
end;
Подобным образом можно организовать вывод элементов массива на экран. Например, в строку без комментариев:
for i := 1 to n do Write(А[i] : 4, ' ');
или в столбец и с комментариями:
for i := 1 to n do Writeln('А[' , i , ']= ' , A[i]);
Кроме операций ввода и вывода, любые другие операции с элементами массива осуществляются в цикле, и лучше всего для этих целей подходит цикл типа for … do.
Часто размер массива приходится несколько раз изменять во время отладки программы. Изменение диапазона в описании массива влечёт за собой изменение параметров цикла и возможно других переменных. Можно облегчить подобные преобразования, если при указании диапазона изменения индексов использовать константы.
Задача. Ввести массив с клавиатуры, найти максимальный и минимальный элементы.
program p8_1;
const n = 10; { Константа n задаёт максимальное количество
элементов в массиве А}
var
A: array[1..n] of real;
i: integer;
max, min : real;
begin
{ ввод элементов массива }
Writeln(' Введите ' , n, ' элементов массива:');
for i := 1 to n do Read (A [i] );
readln;
{ Начальные установки }
max := А [ 1] ;
min := A [ 1] ;
{поиск максимума и минимума}
for i:= 2 to n do
if A[i] > max then max:= A[i]
else
if A[i] < min then min:= A[i];
{ вывод максимума и минимума}
Writeln('max= ', max, ' min= ' , min);
end.