Программирование на языке Delphi/§4
Содержание |
Символьный тип данных [править]
Символьный тип данных на языке Delphi - char. Его размер 1 байт. Каждому символу приписывается целое число в диапазоне от 0 до 255. Для кодировки используется код ASCII. В поздних версиях Delphi для кодировки используется Unicode, поэтому размер символьного типа увеличен до 2 байт. Значения переменных и констант должны быть заключены в апострофы.
var c:char; begin c:='a'; end.
Оператор while [править]
В языке Delphi для создания циклов используются операторы while,repeat..until,for. Оператор while имеет следущую структуру:
while <логическое условие> do <тело цикла>
Тело цикла повторяется до тех пор, пока логическое условие истино. Когда оно становится ложным, управление передается следующему после while оператору.
{$APPTYPE CONSOLE} var a:integer; begin readln(a); while(a>10) do begin //Если а меньше либо равно десяти, то цикл не будет выполняться a:=a-1; writeln('a= ',a); end; end.
В зависимости от логического условия, цикл может ни разу не выполниться. Если в цикле требуется использование более одного оператора, то необходимо использовать begin..end;
Оператор repeat [править]
Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения операторов тела цикла и таким образом гарантируется хотя бы однократное выполнение цикла, а во-вторых, тем, что критерием прекращения цикла является равенство выражения константе True. Оператор repeat имеет следущую струкру:
repeat <тело цикла> until <логическое условие>
Обратите внимание, что после repeat не нужно писать begin.
{$APPTYPE CONSOLE} var a:integer; begin a:=10; repeat writeln(a); a:=a-1; until a<5 ; readln; end.
Оператор for [править]
Оператор for имеет следущую структуру:
for <параметр цикла> := <нижняя граница> to <верхняя граница> do <тело цикла>
В отличие от операторов while и repeat, при использовании оператора for мы заранее задаем количество повторений тела цикла. Параметр цикла - любая целочисленная переменная. Нижняя граница - значение, к которому будет приравнен параметр, когда начнется цикл. Когда параметр станет больше верхней границы, то цикл прекратится. После выполнения тела цикла, параметр цикла увеличивается на единицу(или уменьшается, если вместо to мы используем downto).
{$APPTYPE CONSOLE} var i:integer; begin readln(i); //Неважно какое значение у i, при входе в цикл, ее значение приравнивается к 10 for i:=10 downto 2 do //После выполнения тела цикла, значение i уменьшается на единицу writeln(i); readln; end.
Операторы досрочного завершения цикла [править]
Бывают ситуации, когда надо досрочно завершить цикл. Для этого используется оператор break. Рассмотрим программу:
{$APPTYPE CONSOLE} var i:integer; begin I:=-10; while i<5 do begin writeln(10/i); i:=i+1; end; readln; end.
Эта программа выводит результат деления 10 на i. Но как мы видим, i может принять значение равное 0, и тогда деление на 0 приведет к аварийному завершению программы. Чтобы это предотвратить, мы можем прервать цикл, если значение i становится равным 0. Также существует оператор continue. Этот оператор передает управление оператору, стоящему в начале тела цикла. Попробуем исправить программу, используя оператор continue.
{$APPTYPE CONSOLE} var i:integer; begin I:=-10; while i<5 do begin i:=i+1; if i=0 then continue; writeln(10/i); end; readln; end.
Как мы видим, когда i становится равно 0, то управление передается началу цикла, в результате чего значение i становится равно единице. Благодаря оператору continue, цикл не прервется, и, когда значение i станет равно 5, цикл нормально завершится.