not (5>2) = false

(5>2) and (3<10) = true

(8<>9) or (4>5) = true

not (5=2) xor (3>2) = false

Пример 2:

var test: boolean;

a, b: integer;

begin

writeln (‘Введите а и b’);

readln (a, b);

test:=a>b;

writeln (‘а > b - ’, test);

end.

Пусть, например, введены числа:

5 16

тогда test:=5>16;

на экране: а > b - False

При сравнении данных типа BOOLEAN учитывается внутреннее соглашение Турбо Паскаля, в соответствии с которым FALSE есть нулевой байт, a TRUE - байт с единицей в младшем разряде. Заметим, что функция ORD преобразует к целому не только символы, но и логические величины, поэтому

ord(false) = 0,

ord(true) = 1.

2.5 Ограниченные типы

На основе стандартных типов можно строить собственные типы, ограничивая диапазон возможных значений: 1..10, -100..10, ‘a’..’z’ и т. п.

Пример:

var a: 2..5;

b: ‘a’..’z’;

begin

a:=3;

b:=0; {ошибка: несоответствие типов – переменной символьного типа присваивается целое число}

a:=0; {ошибка: выход за границы диапазона 2..5}

end.

2.6 Перечислимые типы

Образуются путем явного перечисления всех возможных значений, задаваемых именами. Например, для программы управления светофором, может быть определен следующий тип:

var svet: (red, yellow, green);

oper: (plus, minus);

Тип boolean – частный случай перечислимого типа.

2.7 Описание типов

Новые типы данных в Паскаль определяются посредством описаний, начинающихся со слова TYPE. Описание состоит из имени типа и значения типа, между которыми ставится знак «=».

НЕ нашли? Не то? Что вы ищете?

Пример:

Type dec=1..10;

abc=’A’..’z’;

int=integer;

var a: dec;

b: abc;

c: int;

{в разделе описания переменных var можно использовать не только стандартные типы данных, но и новые типы, описанные программистом в разделе Type }

2.8 Преобразование типов

Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые выполняются над ней в программе. Контроль над использованием переменных еще на этапе компиляции программы - важное преимущество Турбо Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. В Турбо Паскале почти невозможны неявные (автоматические) преобразования типов. Исключение сделано только в отношении констант и переменных типа INTEGER (целые), которые разрешается использовать в выражениях типа REAL (вещественные). Если, например, переменные X и Y описаны следующим образом:

var х: integer; 

у: Real;

то оператор

у:=х + 2;

будет синтаксически правильным: хотя справа от знака присваивания стоит целочисленное выражение, а слева - вещественная переменная, компилятор сделает необходимые преобразования автоматически. В то же время оператор

х:=2.0;

будет неверным, так как автоматическое преобразование типа REAL (константа 2.0 содержит десятичную точку и, следовательно, принадлежит к типу REAL) в тип INTEGER в Турбо Паскале запрещено.

Таким образом, переменным можно присваивать значения только своего типа; единственное исключение: переменная вещественного типа, а значение – целого (в этом случае целое число будет преобразовано в вещественное с дробной частью, равной 0).

Разумеется, запрет на автоматическое преобразование типов еще не означает, что в Турбо Паскале нет средств преобразования данных. Они, конечно же, есть, но их нужно использовать явно. Для преобразования данных в языке существуют встроенные функции, которые получают в качестве параметра значение одного типа, а возвращают результат в виде значения другого типа. В частности, для преобразования REAL в INTEGER имеются даже две встроенные функции такого рода: ROUND округляет REAL до ближайшего целого, a TRUNC усекает REAL путем отбрасывания дробной части (см. п.1.5).

Например, ошибочным будет оператор

х := у/х; 

но правильным

х := round(у/х);

(объявления переменных см. выше).

Например, для преобразования данных типа CHAR (символ) в целое число предназначена функция ORD, обратное преобразование INTEGER в CHAR осуществляет функция CHR.

Наличие двух операций деления есть еще одно проявление основополагающего принципа Турбо Паскаля: программист должен явно подтверждать компилятору, что он готов к возможным последствиям преобразования типов. Если, например, в языке Фортран используется выражение 1/2 , то результат этого выражения будет зависеть от того, переменной какого типа он будет присвоен: если N есть переменная целого типа, а Х - вещественного, то в программе на Фортране присваивания

N = 1/2

X = 1/2

дадут значения 0 для N и 0.5 для X. В Турбо Паскале такой двусмысленности нет: выражение 1/2 всегда имеет значение 0.5 и поэтому оператор

var N :integer;

begin

N := 1/2;

просто недопустим. В то же время допустимые в Турбо Паскале операторы:

var X : Real;

N: integer;

begin

N := 1 div 2;

X := 1 div 2;

И, наконец, об операциях отношения и логических операциях.

Над данными типа REAL, INTEGER, CHAR, STRING определены следующие операции отношения (сравнения):

= - равно;

<> - не равно;

< - меньше;

> - больше;

<= - меньше или равно,

>= - больше или равно.

В операциях сравнения должны участвовать однотипные операнды. Исключение сделано опять-таки в отношении REAL и INTEGER, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет тип BOOLEAN.

2.9 Порядок вычисления выражений

Порядок выполнения операций, входящих в выражения, определяется приоритетом операций. Для изменения порядка вычисления используются круглые скобки.

Приоритет операций:

1)  вычисления в круглых скобках ( )

2)  вычисления значений функций

3)  унарные операции not

4)  операции типа умножение *, /, div, mod, and

5)  операции типа сложение +, -, or, xor

6)  операции сравнения >, <, <=, >=, =, <>

Следует учесть, что в отличие от многих других языков программирования в Турбо Паскале логические операции имеют более высокий приоритет, чем операции отношения. В связи с этим, в сложных логических выражениях обычно необходимо расставлять скобки. Если, например, b и с имеют тип INTEGER, то выражение

а = b and с < d

вызовет сообщение о синтаксической ошибке, так как сначала выполнится операция b and с. Правильным будет выражение:

(а = b) and (с < d)

Задачи для самоконтроля

2.1 Вычислить значения выражений

а) 20 div 6; б) 20 mod 6;

в) 2 div 5; г) 2 mod 5;

д) 4 div 0; е) 2.0 mod 2.

2.2. а) Преобразовать арифметическое выражение в линейную форму записи, пригодную для ввода в компьютер. Использовать следующие обозначения операций: умножение *, деление /, возведение в степень ^, т. е. x3 = x^3.

б) Преобразовать линейную форму записи арифметического выражения в «многоэтажное» представление, обычно используемое в математике:

B:=(x/(y+3*(x–y))^2–(y+9)^3/4)/(x^2*y)+9.5*y^2+y*(8+x/(2*y)).

2.3 Какие операторы являются ошибочными?

var x:integer;

y:real;

Begin

x:=3.4; y:=5;

x:=6; y:=2.5;

x:=y;

y:=x;

x:= 6/3;

x:= 6 div 3; y:= 6 div 2;

2.4 Вычислить значения выражений

а) not (6>=4) and (2<8)

б) ((5>=9) or (4>2)) and (6<12)

3. Операторы языка Паскаль

Описывают некоторые действия, которые необходимо выполнить для решения задачи. Тело программы представляет собой последовательность операторов (команд), которые разделяются «;».

Напомним порядок выполнения операторов программы: слева направо сверху вниз.

3.1 Оператор присваивания

Обозначается := . Вызывает вычисление выражения стоящего справа от него, и присваивание вычисленного значения переменной, стоящей слева. Таким образом, с помощью этого оператора в ячейку памяти, имя которой указано слева от знака := , заносится значение, находящееся справа от знака := .

Фрагмент программы:

y:=7;

x:=y;

a:=3; b:=25

z:=a+b;

i:=4; j:=8;

res:=(i>0) and (i<100);

k:=sqr(a)+i*j;

Содержимое ячеек памяти (имя указано слева)

после выполнения соответствующей команды присвоения:

7

 
 

y

7

 
 

x

25

 

3

 
a b

28

 
z

4

 

8

 
 

i j

True

 
res

41

 
 

k

3.2 Составной оператор

Представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin … end. Структура оператора следующая:

begin

<оператор 1>;

<оператор 2>;

<оператор 3>;

end;

Используется, когда необходимо выполнить несколько действий, а синтаксисом языка допускается только один оператор. Само тело программы тоже можно считать составным оператором.

3.3 Условный оператор

Реализует алгоритмическую конструкцию «развилка».

Условный оператор позволяет выполнить один из двух возможных операторов в зависимости от некоторого условия. Структура условного оператора следующая:

if <условие> then <оператор 1> else <оператор 2>;

Условие должно иметь логический тип. Если значение условия равно true, то выполняется Оператор 1, если условие равно false, то Оператор 2. Перед else точка с запятой не ставится.

if a>b then max:=a else max:=b;

Например, если a=3, b=7, то выполнится оператор max:=a; в противном случае, т. е.

если a=7, b=3, то выполнится оператор max:=b; .

Часть условного оператора, начинающаяся со слова else, может отсутствовать. Тогда, если условие истинно, выполняется оператор1, если ложно, то выполняется оператор, следующий за условным.

if x=0 then writeln(‘ошибка’);

Если при выполнении или невыполнении условия необходимо выполнить несколько действий, то организуется составной оператор.

if a>b then

begin max:=a; min:=b; end

else begin min:=a; max:=b; end;

Например, если a=3, b=7, то выполнятся операторы max:=a; min:=b; в противном случае, т. е.

если a=7, b=3, то выполнятся операторы min:=a; max:=b; .

Для схематической записи алгоритмов решения задач существует язык блок-схем. Приведем основные элементы блок-схемы:

Действие

Блок

Начало процесса

Ввод данных

Присваивание

Проверка условия

Заголовок цикла

Вывод результатов

Конец процесса

Блок-схема нахождения корней квадратного уравнения

Схемы условного оператора:

полного сокращенного

вложенного:

if <условие 1> then <оператор 1>

else if <условие 2> then <оператор 2>

else <оператор 3>

if <условие 1> then

if <условие 2> then <оператор 1>

else <оператор 2>;

Условные операторы могут быть вложенными друг в друга. В этом случае else связывается с ближайшим к нему if:

if (a>b) and (a>c) then max:=a

else if (b>c) then max:=b

else max:=c;

Например, если a=7, b=2, c=4, то выполнится оператор max:=a; , т. к. (a>b) and (a>c)=True (истина);

в противном случае, т. е. если (a>b) and (a>c)=False (ложь), выполнится оператор

if (b>c) then max:=b

else max:=c;

если, например, a=2, b=7, c=4, то выполнится оператор max:=b;

если, например, a=2, b=4, c=7, то выполнится оператор max:=с;.

Пример:

var i, j: integer;

ok: boolean;

begin

writeln(‘Введите i и j > 0’);

readln(i, j);

ok:=(i>0) and (j>0);

if (not ok) then begin

writeln(‘Неверный ввод’);

halt;

end;

end.

3.4 Оператор выбора CASE

С помощью этого оператора можно выбрать вариант из любого количества вариантов.

Структура оператора:

case <ключ выбора> of

константа1: оператор1;

константа2: оператор2;

константаN: операторN;

else оператор;

end;

<ключ выбора> - переменная или выражение, значение которого вычисляется. Далее выполняется оператор, которому предшествует константа, равная вычисленному значению. Если константы, соответствующей значению ключа выбора не найдено, то выполняется оператор после else (эта часть может отсутствовать).

В качестве ключа выбора может использоваться выражение порядкового типа, константа должна быть того же типа. В качестве констант можно использовать диапазоны или списки значений через запятую.

case i of

0,2,4,6,8: writeln(‘четная цифра’);

1,3,5,7,9: writeln(‘нечетная цифра’);

10..100: writeln(‘число от 0 до 100’);

else writeln(‘отрицательное число или >100’);

end;

Пример: программа-калькулятор

var op: char;

x, y,r: real;

err: boolean;

begin

err:=false;

write(‘Введите х, у’); readln(x, y);

write(‘Определите операцию’); readln(ор);

case op of

‘+’: r:=x+y;

‘-’: r:=x-y;

‘*’: r:=x*y;

‘/’: r:=x/y;

else err:=true;

end;

if err then writeln(‘Неверно заданная операция’)

else writeln(х, ор, у, ‘=’, r);

end.

3.5 Оператор цикла с параметром (цикл FOR)

Циклом называется последовательность действий, выполняемая более одного раза. В Паскаль есть три различных типа операторов, позволяющих запрограммировать циклический процесс: оператор цикла с параметром (цикл FOR); оператор цикла с предусловием (цикл WHILE) и оператор цикла с постусловием (цикл REPEAT).

Рассмотрим работу оператора цикла с параметром (цикл FOR). Начнем с примера. Пусть требуется вывести на экран строку из пяти звездочек через пробел. Рассмотрим три варианта решения:

1 вариант:

Begin

Write(‘* * * * *’);

End.

2 вариант:

Begin

Write(‘* ’);

Write(‘* ’);

Write(‘* ’);

Write(‘* ’);

Write(‘* ’);

End.

3 вариант:

var i: integer;

Begin

for i:=1 to 5 do

Write(‘* ’);

End.

Команду for i:=1 to 5 do Write(‘* ’); можно прочитать так: “Для i от 1 до 5 делай команду вывода звездочки”.

Переменная i изменит автоматически свое значение 5 раз (от 1 до 5 с шагом 1), а, следовательно, и оператор, записанный после слова do, повторится 5 раз.

В данном примере самым простым является первый вариант решения, однако если потребовалось бы вывести на экран 100 звездочек, то сразу стало бы понятно преимущество третьего варианта.

Теперь перейдем к теоретической части.

Оператор цикла с параметром имеет следующую структуру:

заголовок цикла - for <параметр>:=<начальное значение> to <конечное значение> do

тело цикла - <оператор>;

Этот оператор используется, когда число повторений заранее известно.

Работает: В заголовке параметр цикла автоматически изменяется от начального значения до конечного с шагом 1 и каждый раз выполняется тело цикла - оператор после do.

for i:= 0 to 9 do write(i); На экране:

T. e. сколько раз параметр цикла изменит свой значение от начального до конечного включительно с шагом один, столько раз выполнится тело цикла.

Схема оператора FOR:

Параметр цикла – переменная целого, порядкового или символьного типа, начальное и конечное значения – переменные или выражения того же типа, причем выражения вычисляются один раз, до начала выполнения цикла. Если начальное значение параметра сразу превышает конечное, то тело цикла не выполнится ни разу.

Пример 1.

var k, x: integer;

begin

x:=2;

for k:=x-2 to sqr(x) do

x:=k;

end.

Этапы работы данной программы:

1. x:=2

2. начальное значение параметра k = 0

конечное значение параметра k = 4

3. k:=0

4. проверка: если к<=4 то на п.5

если к>4 то на п.

5. выполнение тела цикла:

x:=k;

Замечание: изменение значения x в теле цикла уже не влияет на начальное и конечное значения параметра цикла.

6. возврат на заголовок цикла.

В заголовке: k:=k+1 (автоматически) и п.4

7. Переход к следующему оператору программы после цикла For.

Пример 2.

var c: char;

begin

for c:= ‘A’ to ‘D’ do

write(c);

end.

На экране:

ABCD

Пример 3.

var p, h: integer;

begin

h:=5;

for p:=3 to 1 do

h:=h+p;

writeln(‘h=’,h);

end.

На экране:

h=5

Пример 4.

var p, h: integer;

begin

h:=5;

for p:=1 to 3 do

h:=h+p;

writeln(‘h=’,h);

end.

Этапы вычисления:

h + p → h :

5 + 1 → 6

6 + 2 → 8

8 + 3 → 11

На экране:

h=11

Пример 5.

Внесем в программу примера 4 некоторые изменения:

var p, h: integer;

begin

h:=5;

for p:=1 to 3 do

begin

h:=h+p;

writeln(‘h=’,h);

end;

end.

Этапы работы:

h + p → h :

5 + 1 → 6

вывод на экран: h=6

6 + 2 → 8

вывод на экран: h=8

8 + 3 → 11

вывод на экран: h=11

В результате на экране:

h=6

h=8

h=11

(см. пояснения ниже)

Если тело цикла состоит из нескольких операторов, то организуется составной оператор begin..end;

Пример: Вычислить и вывести на экран 100 значений функции y=sin x. Начальное значение x=0; x изменяется с заданным шагом H.

var x, y,H: real;

i: integer;

begin

x:=0; H:=0,1;

for i:= 1 to 100 do

begin

y:=sin(x);

writeln(‘y = ’, y);

x:=x+H;

end;

end.

Таким образом, если необходимо повторить заданное количество раз не одну команду, а последовательность команд, то эта последовательность заключается в так называемые операторные скобки begin..end; . Если после слова do нет слова begin, то система считает телом цикла только одну команду, записанную после слова do. Если после слова do есть слово begin, то система считает телом цикла все команды, записанные между словами begin и end. А работает оператор цикла и в том и в другом случаях одинаково: тело цикла повторяется столько раз, сколько раз меняет свое значение параметр цикла от начального до конечного включительно с шагом 1.

Замечания:

1)  Переменная-параметр цикла должна быть обязательно описана в разделе описания переменных var. Имя параметра – любое.

2)  В теле цикла можно использовать параметр, но запрещается его явное изменение (например, присваиванием i:=… или вводом с клавиатуры read(i)).

3)  По окончании цикла переменная-параметр цикла считается неопределенной, хотя на практике последнее значение этой переменной сохраняется.

Пример:

var k, p: integer;

begin

x:=5;

for k:=x+1 to x+5 do k =

begin

x:=x-2; x =

p:=sqr(k); p =

writeln(x,’ ‘,p);

end;

end.

В результате работы программы на экране увидим:

3 36

1 49

-1 64

-3 81

-5 100

Второй вариант оператора FOR:

заголовок цикла - for <параметр>:=<начальное значение> downto <конечное значение> do

тело цикла - <оператор>;

В этом операторе параметр изменяется от начального значения до конечного с шагом -1, т. е. уменьшается на 1 при каждом выполнении цикла. Если начальное значение сразу меньше конечного, то тело цикла не выполняется ни разу.

Пример: отсчет при запуске ракеты.

uses crt;

var i: integer;

begin

for i:= 9 downto 1 do

begin

write(#8,i);

delay(2000);

end;

write(#8,’Пуск’);

end.

Еще некоторые примеры программ.

Пример 1: Вычисление суммы чисел S=1+2+3+…+N.

var n, p, s: integer;

begin

s:=0;

write(‘Введите n’); readln(n);

for p:= 1 to n do

s:=s+p;

writeln(‘S = ’, s);

end.

Пример 2: Вычисление суммы чисел S=0,2+ 0,4+ 0,6+…+2.

const n=10;

var p, s, x: integer;

begin

s:=0; x:=0.2;

for p:= 1 to n do

begin

s:=s+ x;

x:=x+ 0.2;

end;

writeln(‘S = ’, s);

end.

В данном примере использование оператора цикла For нецелеобразно, т. к. в задании явно не указано число повторений суммирования. В таких случаях применяют циклы с условиями: While или Repeat (см. пп. 3.6, 3.7)

Пример 3: Вычисление факториала n!=1*2*3*…*N.

var n, i: integer;

f: longint;

begin

write(‘Введите n’); readln(n);

f:=1;

for i:= 1 to n do

f:=f*i;

writeln(‘Факториал f = ’, f);

end.

3.6 Оператор цикла с предусловием (цикл WHILE)

Обычно используется, когда число повторений заранее неизвестно.

Структура оператора:

заголовок цикла - while <условие> do

тело цикла - <оператор>;

(при условии истинном выполняется оператор)

Условие – логическое выражение, определяющее момент окончания циклических вычислений (цикл выполняется, пока условие истинно). Проверка условия производится перед каждым выполнением тела цикла. Если условие ложно сразу, тело цикла не выполняется ни разу.

Обычно в теле цикла требуется выполнить несколько операторов, поэтому используется составной оператор begin…end.

Схема оператора:

Пример:

var x:integer;

Begin

x:=4;

while x>0 do

begin

x:=x-2; На экране:

writeln(x); 2

end; 0

End.

В теле цикла должны изменяться переменные, входящие в условие, с тем, чтобы условие, в конце концов, стало ложным, и цикл завершился. В противном случае возникает так называемый бесконечный цикл. Прервать выполнение бесконечного цикла можно с помощью клавиш ctrl-break.

Пример 1: while y<0 do writeln (y);

бесконечные циклы (в примере1 – если y:=-1;)

Пример 2: while true do begin…end;

Пример 3: Вычисление суммы чисел S=0,2+ 0,4+ 0,6+…+2.

const n=2;

var s, x: integer;

begin

s:=0; x:=0.2;

while x<=n do begin

s:=s+ x;

x:=x+ 0.2;

end;

writeln(‘S = ’, s);

end.

Пример 4: Программа вычисления суммы S=1+1/2+1/3+…+1/1000

var i: integer;

s: real;

begin

i:=1; s:=0;

while i<=1000 do

begin

s:=s+1/i; или for i:= 1 to 1000 do s:=s+1/i;

i:=i+1;

end;

writeln(‘S’, s:7:3);

end.

Пример 5: Программа вычисления суммы S=1-1/4+1/9-1/16… с точностью ε = 0,001

(считается, что требуемая точность достигнута, если очередное слагаемое по модулю меньше ε, т. е. все последующие слагаемые можно не учитывать).

1 вариант:

var i, zn: integer;

s: real;

begin

i:=1; s:=0; zn:=1

while 1/sqr(i) > = 0.001 do

begin

s:=s+1/sqr(i)*zn;

i:=i+1;

zn:=-zn;

end;

writeln(‘S = ’, s);

end.

2 вариант:

var i: integer;

s: real;

begin

i:=1; s:=0;

while 1/sqr(i) > = 0.001 do

begin

if Odd(i) then s:=s+1/sqr(i)

else s:=s -1/sqr(i);

i:=i+1;

end;

writeln(‘S = ’, s);

end.

3 вариант:

var i: integer;

s: real;

begin

i:=1; s:=0;

while 1/sqr(i) > = 0.001 do

begin

if (i mod 2=0) then s:=s-1/sqr(i)

else s:=s+-1/sqr(i);

i:=i+1;

end;

writeln(‘S = ’, s);

end.

3.7 Оператор цикла с постусловием (цикл REPEAT)

Обычно используется, когда число повторений заранее неизвестно.

Структура оператора:

repeat < операторы > until < условие >;

(операторы повторяются до тех пор, пока не выполнится условие)

Условие – логическое выражение, определяющее момент окончания циклических вычислений (цикл выполняется, пока условие ложно). Когда условие становится истинным, осуществляется выход из цикла. Проверка условия производится в конце тела цикла, поэтому он всегда выполняется хотя бы один раз.

Под телом цикла понимается последовательность операторов между словами repeat и until. Операторов может быть один и более. В любом случае операторные скобки beginend не требуются.

Пример:

var i:integer;

Begin

i:=4;

repeat

i:=i-1;

writeln(i);

until i<0; (выполнится 4 раза: i=3,2,1,0)

End.

Схема оператора:

В теле цикла должны изменяться переменные, входящие в условие, чтобы не получился бесконечный цикл.

Пример 1: repeat … until false; бесконечный цикл

Пример 2: repeat until keypressed; цикл до нажатия любой клавиши

keypressed – стандартная логическая функция, принимает значение true, если была нажата клавиша.

Пример 3: Вычисление суммы чисел S=0,2+ 0,4+ 0,6+…+2.

const n=2;

var s, x: integer;

begin

s:=0; x:=0.2;

repeat

s:=s+ x;

x:=x+ 0.2;

until x>2;

writeln(‘S = ’, s);

end.

Пример 4: Вычисление квадратного корня числа, введенного с клавиатуры.

var a, b: real;

begin

repeat

writeln(‘Введите а>0’);

readln(a);

until a>0;

b:=sqrt(a);

writeln(‘b=’,b);

end.

Пример 5: Программа, считывающая с клавиатуры символ и печатающая его код

var k: integer;

ch: char;

begin

repeat

writeln(‘Введите символ’);

readln(ch);

k:=ord(ch);

writeln(‘Код символа’, ch, ‘ = ’,k);

until k=13; {13 – код пробела}

end.

Основные отличия операторов цикла:

Цикл FOR используется, когда число повторений заранее известно, циклы WHILE и REPEAT – когда неизвестно. В цикле FOR параметр цикла изменяется с шагом 1, в циклах WHILE и REPEAT необходимо изменять переменные, входящие в условие. В циклах FOR и WHILE несколько операторов объединяются операторными скобками begin…end, в цикле REPEAT это не требуется. В циклах FOR и WHILE проверка условия выполняется перед очередным выполнением тела цикла, в цикле REPEAT – после выполнения тела цикла.

3.8 Вложенные циклы

Тело цикла может содержать любые операторы языка Паскаль, в т. ч. и операторы циклов. Когда один цикл находиться внутри другого, то его называют вложенным циклом.

Примеры вложенного цикла For:

1. var a, b:integer;

begin

for i:= 1 to 2 do

for j:= 1 to 3 do

writeln(i, ‘ ’, j); {выполнится 6 раз}

end.

На экране увидим:

1 1

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6