Основы программирования на языке Pascal
Понятие языков программирования
Уровни языков программирования
Уровни языков программирования
Поколения языков программирования
Компиляция и интерпретация
Интегрированные системы программирования
Элементы языка Pascal:
Элементы языка Pascal:
Элементы языка Pascal:
Элементы языка Pascal:
Элементы языка Pascal:
Структура программы
Раздел описаний программы
Раздел исполняемых операторов
Типы данных
Стандартные функции
Оператор присваивания
Понятие составного оператора
Операторы ввода
Процедура вывода
Основные алгоритмические структуры
Основные алгоритмические структуры
Основные алгоритмические структуры
Программирование на языке Паскаль
Программирование на языке Паскаль
Программирование на языке Паскаль
Программирование на языке Паскаль
1.31M
Категория: ПрограммированиеПрограммирование

Основы программирования на языке Pascal. Алфавит, типы данных, структура программ. Основные операторы

1. Основы программирования на языке Pascal

Алфавит, типы данных,
структура программ. Основные
операторы.

2. Понятие языков программирования

Языки программирования – искусственные языки,
инструментальные средства разработки прикладных
программ.
Синтаксис - правила записи конструкций языка.
Семантика - смысл конструкций языка.
Отладка - это поиск и исправление ошибок в программе.
Тестирование - это составление специальных наборов
входных и выходных данных (тестов), а затем исполнение
программы и проверка полученных результатов в поисках
возможных семантических или логических ошибок.

3. Уровни языков программирования

Язык программирования низкого уровня ориентирован на
конкретный тип процессора и учитывает его особенности.
Операторы данного языка близки к машинному коду и
содержат команды процессору.
Ассемблер, Форт –
примеры языков
программирования
низкого уровня
Фрагмент
программы на
языке Ассемблер
mov ax, dat
mov ds, ax
mov ah, 09h
mov dx, offset var
int 21h
mov ah, 4Ch
int 21h

4. Уровни языков программирования

Языки программирования высокого уровня не учитывают
особенности конкретных компьютерных архитектур.
Создаваемые на них программы легко переносимы с одного
типа компьютеров на другой, их разработка значительно
проще, а уровень ошибок гораздо ниже.
Паскаль, С++, PHP,
Java, SQL –
примеры языков
программирования
высокого уровня
Фрагмент
программы
на языке
SQL
SELECT Товар.Название,
Товар.Цена,
Товар.Цена*Сделка.Количество
AS Стоимость
FROM Товар

5. Поколения языков программирования

1 поколение (нач. 50-х гг. 20 в.) – первый язык ассемблера, «одна
инструкция, одна строка».
2 поколение (конец 50-х – нач. 60-х годов 20 в.) - символический
ассемблер, в котором появилось понятие переменной. Именно он
считается первым полноценным языком программирования.
3 поколение (вторая половина 69-х гг. 20 в.) - универсальные языки
высокого уровня, с помощью которых удалось решить множество
прикладных задач из различных областей науки и техники (Бэйсик,
Паскаль, Фортран, Ада).
4 поколение (с начала 70-х годов и по настоящее время ) - проблемноориентированные языки, оперирующие конкретными понятиями
предметной области (ЛИСП, ПРОЛОГ).
5 поколение (с сер. 90-х гг. 20 в.) - системы автоматического создания
прикладных программ с помощью визуальных средств разработки.

6. Компиляция и интерпретация

Существует два метода получения машинного кода - компиляция и
интерпретация.
Программы-компиляторы просматривают программный код в поисках
синтаксических ошибок, выполняют смысловой анализ и
автоматически переводят (транслируют) на машинный язык —
генерируют машинный код.
Основной недостаток компиляторов — трудоемкость трансляции языков
программирования, ориентированных на обработку данных сложной
структуры.
Интерпретатор берет очередной оператор из текста программы,
анализирует его структуру и запускает на выполнение. Только после
его успешного выполнения, интерпретатор переходит к следующему
оператору.
Недостаток интерпретаторов: программы, содержащие большой объем
повторяющихся вычислений, будут работать достаточно медленно.
Для выполнения исходной программы на другом компьютере там
также должен быть установлен соответствующий интерпретатор.

7. Интегрированные системы программирования

текстовый редактор, ориентированный на конкретный язык
программирования;
компилятор, переводящий исходный текст в машинный код;
библиотека функций, содержит машинный код подпрограмм,
реализующих различные стандартные функции языка
(например, вычисляющих математические функции sin или In);
поставляется вместе с компилятором;
редактор связей (сборщик, компоновщик) выполняет
связывание объектных модулей программы и машинного кода
стандартных функций, находя их в библиотеках, и формирует
на выходе запускаемое приложение - исполнимый код;
отладчик анализирует работу программы во время ее
выполнения. С его помощью можно выполнять операторы
исходного текста по шагам, наблюдая за изменением значений
различных переменных.

8. Элементы языка Pascal:

буквы латинского алфавита А-Z (в любом регистре), а также
знак подчеркивания _;
буквы русского алфавита А-Я;
цифры 0-9;
специальные символы > < = + - / * [ ] ( ) { } . , : ; ^ @
’$ #
пары символов (их нельзя разделять пробелами) < > <=
>= :=
(* *) (.
.)
пробелы (рассматриваются как ограничители
идентификаторов, констант, чисел, зарезервированных слов).

9. Элементы языка Pascal:

Идентификаторы - неделимые последовательности символов
алфавита, используемые для обозначения констант,
переменных, процедур, функций и т.д.
Идентификаторы могут иметь произвольную длину, но
значащими являются только первые 63 символа.
Идентификатор должен начинаться с буквы или символа
подчеркивания, не должен содержать пробелов и специальных
символов.
and goto array begin case string const label
then div mod do to downto type else of end
or until uses procedure var for program while
record function repeat

10. Элементы языка Pascal:

Константа - это объект, значение которого известно еще до начала
работы программы.
В качестве констант могут использоваться числа, логические константы,
символы и строки символов.
В языке Pascal существует три вида констант:
неименованные константы (не имеют имен, и потому их не нужно
описывать; и тип определяется автоматически)
int1 := -10;
ch3 := 'z';
str4 := 'abc' + str44;
st5 := [1,3,5] * st55;
bool6:= true;

11. Элементы языка Pascal:

именованные
нетипизированные константы (имеют имя,
описываются в специальном разделе const, тип определяется
автоматически)
const n = -10;
x = 2.5;
c = 'z';
s = 'string';
именованные
типизированные константы - переменные(!) с
начальным значением, которое к моменту старта программы уже
известно. Следовательно, типизированные константы нельзя
использовать для определения других констант, типов данных и
переменных. Их значения можно изменять в процессе работы
программы.
const <имя_константы> : <тип_константы> = <нач_значение>;
const n: integer = -10;
c: char = 'z';

12. Элементы языка Pascal:

Выражение задает порядок выполнения действий над
элементами данных и состоит из операндов (констант,
переменных, функций, круглых скобок и знаков
операций).
В общем случае выражение состоит из нескольких
элементов (операндов) и знаков операций, а тип его
значения определяется типом операндов и видом
примененных к ним операций.
Примеры выражений:
(a+b)*c
x-y
a>2
sin(x)
sum1+sum2

13. Структура программы

Program <имя программы>;
{Раздел описаний программы}
Var …
Const …
BEGIN
{Раздел исполняемых операторов}
END.

14. Раздел описаний программы

раздел меток (label);
раздел констант (const);
раздел типов (type);
раздел переменных (var);
раздел процедур (procedure)
раздел функций (function).
Пример:
var k,i,j:integer; a,b:real;
сonst pi=3.14; c=2.7531;

15. Раздел исполняемых операторов

Пример программы, служащей для вычисления площади круга некоторого
постоянного радиуса R=6.015 .
{Заголовок программы}
program pr;
{Задание значения радиуса}
const r=6.015;
{Описание переменных программы}
var s: real;
{Начало раздела операторов}
begin
{Вычисление площади круга}
s:=pi*sqr( r );
{Вывод результатов на экран}
writeln(‘s=’, s);
{Конец программы}
end.

16. Типы данных

17. Стандартные функции

ABS(x) – модуль х ( | x | );
SQR(x) – квадрат числа x (x 2);
SQRT(x) – квадратный корень из x ( x );
LN(x) – натуральный логарифм от х ( ln x );
EXP(x) – е в степени х (ех );
SIN(x) – синус х (sin x);
COS(x) – косинус х (cos x);
ARCTAN(x) – арктангенс х (arctg x).

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

Общий вид оператора присваивания:
имя_переменной:=<выражение>;
здесь имя_переменной – переменная, := - операция
присваивания. Выражение может содержать константы,
переменные, названия функций, знаки операций и
скобки. Переменная и выражение в операторе должны
иметь один и тот тип.
Примеры.
y:=2*sin(x);
a:=5;
b:=a+7;
х:=х+1;

19. Понятие составного оператора

Составной оператор начинается ключевым словом BEGIN
и заканчивается словом END. Между этими словами
помещаются составляющие операторы, которые
выполняются в порядке их следования. После END
ставится точка с запятой, например:
...
begin
i:=2;
k:=i/5;
end;
...

20. Операторы ввода

Для организации ввода данных с клавиатуры в языке Паскаль используется
процедура READ.
В общем случае данная процедура имеет вид:
READ (a1, a2, a3, … );
Здесь a1, a2, a3, … - список переменных, разделенных запятой.
Например,
Var
A : Real; B : Integer; C : Char;
Begin
READ(A, B, C)
End.
Примеры ввода данных с помощью процедуры READLN:
READLN(A, B, C);
READLN(X);

21. Процедура вывода

Процедура, выводящая содержимое переменных на экран,
называется процедурой вывода.
WRITE (p1, p2, …, pn);
где p1, p2, …, pn - список констант и/или переменных,
разделенных запятой.
Например, WRITE ('Сумма=', S).
Примеры вывода данных:
WRITE(A, B, C);
WRITELN('Корнем уравнения является ', X);
WRITELN(LOGP);

22. Основные алгоритмические структуры

Следование
Пешеход шел по пересеченной
местности. Его скорость движения по
равнине v1 км/ч, в гору — v2 км/ч и
под гору — v3 км/ч. Время движения
соответственно t1, t2 и t3 ч. Какой путь
прошел пешеход?
1. Ввести v1, v2, v3, t1, t2,t3.
2. S1 := v1 * t1.
3. S2 := v2 * t2.
4. S3 := v3 * t3.
5. S := S1 + S2 + S3.
6. Вывести значение S.
7. Конец.

23. Основные алгоритмические структуры

Ветвление
1. Ввести x.
2. Если x<=-12, то y:=–x2;
переход к п.5
3. Если x<0, то y:=x4;
переход к п.5
4. y := x–2
5. Вывести y
6. Конец
Пример.
функции
Вычислить
значение

24. Основные алгоритмические структуры

Циклы
1. С параметром
2. С постпроверкой
условия
3. С предпроверкой
условия

25. Программирование на языке Паскаль

25
Программирование
на языке Паскаль
Тема 2. Ветвления

26.

Разветвляющиеся алгоритмы
Задача. Ввести два целых числа и вывести на экран
наибольшее из них.
Идея решения: надо вывести на экран первое число,
если оно больше второго, или второе, если оно больше
первого.
Особенность: действия исполнителя зависят от
некоторых условий (если … иначе …).
Алгоритмы, в которых последовательность шагов
зависит от выполнения некоторых условий, называются
разветвляющимися.
26

27.

Вариант 1. Блок-схема
начало
блок
«решение»
ввод a,b
да
a > b?
max:= a;
полная
форма
ветвления
нет
max:= b;
вывод max
конец
?
Если a = b?
27

28.

Вариант 1. Программа
program qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
полная форма
if a > b then begin
условного
max := a;
оператора
end
else begin
max := b;
end;
writeln ('Наибольшее число ', max);
end.
28

29.

Условный оператор
if <условие> then begin
{что делать, если условие верно}
end
else begin
{что делать, если условие неверно}
end;
Особенности:
• перед else НЕ ставится точка с запятой
• вторая часть (else …) может отсутствовать
(неполная форма)
• если в блоке один оператор, можно убрать слова
begin и end
29

30.

Вариант 2. Блок-схема
начало
ввод a,b
max:= a;
да
b > a?
нет
неполная
форма
ветвления
max:= b;
вывод max
конец
30

31.

Вариант 2. Программа
program qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
неполная
форма
max := a;
условного
if b > a then
оператора
max := b;
writeln ('Наибольшее число ', max);
end.
31

32.

Задания
«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4
15
9
Наибольшее число 15
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4
15
9
56
Наибольшее число 56
4
32

33. Программирование на языке Паскаль

33
Программирование
на языке Паскаль
Тема 3. Сложные условия

34.

Сложные условия
Сложное условие – это условие, состоящее из
нескольких простых условий (отношений), связанных с
помощью логических операций:
• not – НЕ (отрицание, инверсия)
• and – И (логическое умножение, конъюнкция,
одновременное выполнение условий)
• or – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)
• xor – исключающее ИЛИ (выполнение только
одного из двух условий, но не обоих)
Простые условия (отношения)
<
<=
>
>=
равно
=
не равно
<>
34

35.

Сложные условия
Порядок выполнения (приоритет = старшинство)
• выражения в скобках
• not
• and
• or, xor
• <, <=, >, >=, =, <>
Особенность – каждое из простых условий обязательно
заключать в скобки.
Пример
4
1
6
2
5
3
if not (a > b) or (c <> d) and (b <> a)
then begin
...
end
35

36.

Сложные условия
Истинно или ложно при a := 2; b := 3; c := 4;
True
not (a > b)
True
(a < b) and (b < c)
True
not (a >= b) or (c = d)
True
(a < c) or (b < c) and (b < a)
(a < b) xor not (b > c)
FALSE
Для каких значений
(x
(x
(x
(x
(x
(x
(x
(x
<
<
>
>
<
<
>
>
6)
6)
6)
6)
6)
6)
6)
6)
x истинны условия:
and (x < 10)
and (x > 10)
and (x < 10)
and (x > 10)
or (x < 10)
or (x > 10)
or (x < 10)
or (x > 10)
(- , 6)
(6, 10)
(10, )
(- , 10)
(- , 6) (10, )
(- , )
(6, )
x<6
x > 10
x < 10
x>6
36

37. Программирование на языке Паскаль

37
Программирование
на языке Паскаль
Тема 4. Циклы

38.

Циклы
Цикл – это многократное выполнение одинаковой
последовательности действий.
• цикл с известным числом шагов
• цикл с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран 5 раз слово «Привет».
Особенность: одинаковые действия выполняются 5 раз.
?
Можно ли решить известными методами?
38

39.

Блок-схема, соответствующая циклу с
параметром языка Паскаль,
представлена на рисунке
Здесь i – параметр цикла; i0 – начальное значение
параметра; iT – конечное значение параметра.

40.

Циклы
program qq;
«Для всех i от 1 до 5
var i: integer;
делай …»
begin
for i:=1 to 5 do
writeln('Привет');
end.
Если в цикле более одного оператора:
for i:=1 to 5 do begin
write('Привет');
writeln(', Вася!');
Что получится?
?
end;
40

41.

Циклы
Задача. Вывести на экран квадраты и кубы целых чисел
от 1 до 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.
?
Можно ли решить известными методами?
41

42.

Алгоритм
начало
задать начальное значение
переменной цикла
i := 1;
проверить, все ли сделали
i <= 8?
да
i2 := i * i;
i3 := i2 * i;
нет
конец
вычисляем квадрат и куб
вывод результата
i, i2, i3
перейти к
следующему i
i := i + 1;
42

43.

Алгоритм (с блоком «цикл»)
начало
i := 1,8
i2 := i * i;
i3 := i2 * i;
блок «цикл»
конец
тело цикла
i, i2, i3
43

44.

Программа
program qq;
var i, i2, i3: integer;
begin
начальное значение
переменная
цикла
конечное значение
for i:=1 to 8 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end.
44

45.

Цикл с уменьшением переменной
Задача. Вывести на экран квадраты и кубы целых чисел
от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:
for i:=8 downto 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
45

46.

Цикл с переменной
Увеличение переменной на 1:
for <переменная> := <начальное значение> to <конечное значение> do
begin
{тело цикла}
end;
Уменьшение переменной на 1:
for <переменная> := <начальное значение> downto <конечное значение> do
begin
{тело цикла}
end;
46

47.

Цикл с переменной
Особенности:
• переменная цикла может быть только целой
(integer)
• шаг изменения переменной цикла всегда равен 1
(to) или -1 (downto)
• если в теле цикла только один оператор, слова
begin и end можно не писать:
for i:=1 to 8 do
writeln('Привет');
• если конечное значение меньше начального, цикл
(to) не выполняется ни разу (проверка условия в
начале цикла, цикл с предусловием)
47

48.

Цикл с переменной
Особенности:
• в теле цикла не разрешается изменять переменную
цикла (почему?)
• при изменении начального и конечного значения
внутри цикла количество шагов не изменится:
n := 8;
for i:=1 to n do begin
writeln('Привет');
нет
n := n + 1;
зацикливания
end;
48

49.

Сколько раз выполняется цикл?
a := 1;
for i:=1 to 3 do a := a+1;
a= 4
a := 1;
for i:=3 to 1 do a := a+1;
a= 1
a := 1;
for i:=1 downto 3 do a := a+1;
a= 1
a := 1;
for i:=3 downto 1 do a := a+1;
a= 4
49

50.

Как изменить шаг?
Задача. Вывести на экран квадраты и кубы нечётных целых
чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:
for i:=1 to 9 do begin
if i mod
???2 = 1 then begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;
?
выполняется
только для
нечетных i
Что плохо?
50

51.

Как изменить шаг? – II
Идея: Надо вывести всего 5 чисел, переменная k изменяется
от 1 до 5. Начальное значение i равно 1, с каждым шагом
цикла i увеличивается на 2.
Решение:
i := 1;
???
for k:=1 to 5 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
???
i := i + 2;
end;
51

52.

Как изменить шаг? – III
Идея: Надо вывести всего 5 чисел, переменная k изменяется
от 1 до 5. Зная k, надо рассчитать i.
k
1
2
3
4
5
i
1
3
5
7
9
i = 2k-1
Решение:
for k:=1 to 5 do begin
i ???
:= 2*k – 1;
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
52

53. Программирование на языке Паскаль

53
Программирование
на языке Паскаль
Тема 5. Циклы с условием

54.

Цикл с неизвестным числом шагов
Пример: Отпилить полено от бревна. Сколько раз надо
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить число
цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру,
увеличиваем счетчик.
n
count
123
0
12
1
1
2
0
3
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать
«пока n <> 0».
54

55.

Алгоритм
начало
обнулить
счетчик цифр
ввод n
count := 0;
выполнять
«пока n <> 0»
n <> 0?
нет
да
count := count + 1;
n := n div 10;
count
конец
55

56.

Программа
program qq;
n1: integer;
var n, count:, integer;
begin
writeln('Введите целое число');
read(n); n1 := n;
выполнять
count := 0;
«пока n <> 0»
while nn <>
<> 00 do
do begin
begin
while
count:=:=count
count+ +1;1;
count
div10;
10;
n n:=:=n ndiv
end;
end;
writeln('В числе ', n1,
n, ' нашли ',
count, ' цифр');
end.
Что плохо?
?
56

57.

Цикл с предпроверкой условия WHILE

58.

Цикл с условием
while <условие> do
begin
{тело цикла}
end;
Особенности:
• можно использовать сложные условия:
while (a<b) and (b<c) do begin
{тело цикла}
end;
• если в теле цикла только один оператор, слова
begin и end можно не писать:
while a < b do
a := a + 1;
58

59.

Цикл с условием
Особенности:
• условие пересчитывается каждый раз при входе в
цикл
• если условие на входе в цикл ложно, цикл не
выполняется ни разу
a := 4; b := 6;
while a > b do
a := a – b;
• если условие никогда не станет ложным, программа
зацикливается
a := 4; b := 6;
while a < b do
d := a + b;
59

60.

Сколько раз выполняется цикл?
a := 4; b := 6;
while a < b do a := a + 1;
2 раза
a=6
a := 4; b := 6;
while a < b do a := a + b;
1 раз
a = 10
a := 4; b := 6;
while a > b do a := a + 1;
0 раз
a=4
a := 4; b := 6;
while a < b do b := a - b;
1 раз
b = -2
a := 4; b := 6;
while a < b do a := a - 1;
зацикливание
60

61.

Замена for на while и наоборот
for i:=1 to 10 do begin
{тело цикла}
end;
for i:=a downto b do
begin
{тело цикла}
end;
i := 1;
while i <= 10 do begin
{тело цикла}
i := i + 1;
end;
i := a;
while i >= b do begin
{тело цикла}
i := i - 1;
end;
Замена цикла for на while возможна всегда.
Замена while на for возможна только тогда, когда
можно заранее рассчитать число шагов цикла.
61

62.

Последовательности
Задача: найти сумму всех элементов
последовательности,
1 2
3
4
5
1, ,
, ,
, , ...
2 4
8 16
32
которые по модулю больше 0,001:
1 2 3 4 5
S 1
...
2 4 8 16 32
Элемент последовательности (начиная с №2):
b
a z
c
n
1
2
3
4
5
...
b
1
2
3
4
5
...
c
2
4
8
16
32
...
z
-1
1
-1
1
-1
...
b := b+1;
c := 2*c;
z := -z;
62

63.

Алгоритм
начальные
значения
начало
SS :=
:= 0;
0; b := 1;
c := 2; z := -1;
a := 1;
|a| > 0.001?
новый
элемент
изменение
первый
элемент
нет
да
S
S := S + a;
конец
a := z*b/c;
b := b + 1;
c := 2*c; z := -z;
?
Перестановка?
63

64.

Программа
program qq;
начальные
var b, c, z: integer;
значения
S, a: real;
begin
S := 0; z := -1;
2; aa := 1;
b := 1; c := 2;
while abs(a) > 0.001 do begin
увеличение
S := S + a;
суммы
a := z * b / c;
:= -- z;
z;
zz :=
расчет элемента
:= bb ++ 1;
1;
bb :=
последовательности
:= cc ** 2;
2;
cc :=
end;
переход к
writeln('S =', S:10:3);
end.
следующему
слагаемому
64

65.

Цикл с постусловием
Задача: Ввести целое положительное число (<2000000) и
определить число цифр в нем.
Проблема: Как не дать ввести отрицательное число или
ноль?
Решение: Если вводится неверное число, вернуться
назад к вводу данных (цикл!).
Особенность: Один раз тело цикла надо сделать в
любом случае => проверку условия цикла надо делать
в конце цикла (цикл с постусловием).
Цикл с постусловием – это цикл, в котором проверка
условия выполняется в конце цикла.
65

66.

Цикл с постпроверкой условия REPEAT

67.

Цикл с постусловием: алгоритм
начало
ввод n
нет
n > 0?
да
основной
алгоритм
тело цикла
условие
ВЫХОДА
блок «типовой
процесс»
конец
67

68.

Программа
program qq;
var n: integer;
begin
repeat
repeat
writeln('Введите положительное
положительное число');
число');
writeln('Введите
read(n);
read(n);
условие ВЫХОДА
until
n
>
0;
until nn >> 0;
0;
until
... { основной алгоритм }
end.
Особенности:
• тело цикла всегда выполняется хотя бы один раз
• после слова until ("до тех пор, пока не…")
ставится условие ВЫХОДА из цикла
68

69.

Сколько раз выполняется цикл?
a := 4; b := 6;
repeat a := a + 1; until a > b;
3 раза
a=7
a := 4; b := 6;
repeat a := a + b; until a > b;
1 раз
a = 10
a := 4; b := 6;
repeat a := a + b; until a < b;
зацикливание
a := 4; b := 6;
repeat b := a - b; until a < b;
a := 4; b := 6;
repeat a := a + 2; until a < b;
2 раза
b=6
зацикливание
69
English     Русский Правила