Else всегда принадлежит последнему if
Стрелки ставятся справа на лево и снизу вверх.
If <условие 1> then begin
If <условие 2> then <действие 1>;
End
Else <действие 2>;
Операторы цикла.
I) итерационный FOR
For <параметр цикла>:=<начальное значение> to (downto) <конечное значение> do <действие>;
Параметр цикла, начальное значение, конечное значение - перечислимого типа.
Пример
For i:=5 to 8 do …{4 раза}
Количество итераций = конечное значение – начальное значение + 1 {i:Word,Byte,Integer,Long/ShortInt,char}
For ch:= ‘a’ to ‘d’ do …{4 раза}
For b:= false to true do …{2 раза}
For i:=3.5 to 5.5 do… {Ошибка т.к. неперечислимый тип}
Замечания:
1) параметр цикла за пределами цикла считается неопределенным
2) изменять параметр цикла внутри цикла не рекомендуется
for i:=5 to 8 do
a:=b+c;
write(i);{7,8,9}
заголовок цикла читается транслятором ровно 1 раз.
For i:=5 to 8 do
i:=i+1;
For i:=i+10 to i-1 do…
II) цикл с предусловием
While <условие входа> do <действие>;
III) цикл с постусловием
Repeat
<действие>
Until <условие выхода>;
Выполняется по меньшей мере 1 раз.
Repeat until false; - вечный цикл.
Если в цикле несколько действий, то нужны операторные скобки (begin end;)(кроме цикла с постусловием).
Оператор выбора.
Case <управляющая переменная выбора> of
<значение переменной выбора>: <действие>;
<значение переменной выбора>: <действие>;
…………
[else <действие>];
End;
Пример
{Дан символ}
Var ch: char;
………
{Дан символ определить какой он}
Case ch of
‘п’,‘ф’,‘к’: write(‘Глухая согласная’);
‘0’..‘9’: write(‘Цифра’);
‘A’..‘Z’, ‘А’..‘Я’: write(‘Заглавная буква’);
‘.’, ‘;’, ‘:’, ‘!’: begin
Writeln(‘Знаки препинания’);
Write(‘Точка и т.д.’);
End;
Else write(‘Не буква, не цифра, не знак’);
End;
Тип управляющей переменной должен быть перечислимого типа.
Перечислимый тип – тип, значения которого могут быть перечислены и расстояние между которыми равно 1.
К неперечислимым типам относятся string и действительные числа.
Альтернативы могут перечисляться через запятую и через диапазон(..).
Комментарии.
{это комментарий}
(*это тоже комментарий*)
(*так {писать} можно*)
{Так (*писать} нельзя*)
(*Такой главнее*)
Массивы.
Массив – регулярная структура данных имеющая имя. Данные имеют один тип и расположены в памяти компьютера последовательно.
Array [<начальное значение индекса>..<конечное значение индекса>] of <тип элементов массива>;
Одномерный массив называется вектором, двумерный массив – матрицей.
a[1] – первый элемент
a[i] – текущий элемент
a[n] – последний элемент
Доступ к индексированной переменной осуществляется дольше, чем к неиндексированной.
a[i,j], i – номер строки, j – номер столбца.
Хранится адрес только первой ячейки, остальные вычисляются. Доступ к индексированной переменной осуществляется дольше чем к неиндексированной.
a[1,5] – к 1 строке, 5 столбцу, a[i,j] – к i строке, j – столбцу.
Сортировка выбором
Сортировка выбором путем обмена максимального и текущего
max | |
max |
max | |
max | |
{Цикл перебора по сортировкам}
For j:=1 to m-1 do begin
Max:=a[j]; {определим 1ый текущий максимум и его индекс}
imax:=j;
for i:=j+1 to m do
if a[i]>max then begin
max:=a[i];
imax:=i;
end;
{1} v:=a[j]; {меняем местами первый и текущий максимальный элементы}
a[j]:=a[imax];
a[imax]:=v;
end;
{2} a[imax]:=a[j];
a[j]:=max;
{1} обмен 1го и текущего элементов может быть записан в 2 оператора с использованием ячейки max ({2}).