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}).