Основы программирования на языке 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 – примеры языков программирования высокого уровня

SELECT Товар.Название,
Товар.Цена,
Товар.Цена*Сделка.Количество
AS Стоимость
FROM Товар

Фрагмент программы на языке SQL

Слайд 5

Поколения языков программирования 1 поколение (нач. 50-х гг. 20 в.) –

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

1 поколение (нач. 50-х гг. 20 в.) –

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

Компиляция и интерпретация Существует два метода получения машинного кода - компиляция

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

Существует два метода получения машинного кода - компиляция и

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

Интегрированные системы программирования текстовый редактор, ориентированный на конкретный язык программирования; компилятор,

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

текстовый редактор, ориентированный на конкретный язык программирования;
компилятор, переводящий

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

Элементы языка Pascal: буквы латинского алфавита А-Z (в любом регистре), а

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

буквы латинского алфавита А-Z (в любом регистре), а также

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

Алфавит

Слайд 9

Элементы языка Pascal: Идентификаторы - неделимые последовательности символов алфавита, используемые для

Элементы языка 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:

Константа - это объект, значение которого известно еще до

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

Константы

Слайд 11

Элементы языка Pascal: именованные нетипизированные константы (имеют имя, описываются в специальном

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

именованные нетипизированные константы (имеют имя, описываются в специальном разделе

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

Константы

Слайд 12

Элементы языка Pascal: Выражение задает порядок выполнения действий над элементами данных

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

Выражение задает порядок выполнения действий над элементами данных и

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

Выражения

Слайд 13

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

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

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

Слайд 14

Раздел описаний программы раздел меток (label); раздел констант (const); раздел типов

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

раздел меток (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 | );

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

ABS(x) – модуль х ( | x | );
SQR(x) –

квадрат числа x (x 2);
SQRT(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 и заканчивается

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

Составной оператор начинается ключевым словом 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.

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

Ветвление

Пример. Вычислить значение функции

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. С предпроверкой условия

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

Циклы

1. С параметром

2. С постпроверкой условия

3. С предпроверкой условия

Слайд 25

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

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

Тема 2. Ветвления

Слайд 26

Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран

Разветвляющиеся алгоритмы

Задача. Ввести два целых числа и вывести на экран наибольшее

из них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

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

Слайд 27

Вариант 1. Блок-схема полная форма ветвления блок «решение»

Вариант 1. Блок-схема

полная форма ветвления

блок «решение»

Слайд 28

Вариант 1. Программа max := a; max := b; полная форма

Вариант 1. Программа


max := a;

max := b;

полная форма условного оператора

program qq;
var

a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
if a > b then begin
end
else begin
end;
writeln ('Наибольшее число ', max);
end.
Слайд 29

Условный оператор if then begin {что делать, если условие верно} end

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

if <условие> then begin
{что делать, если условие верно}

end
else begin
{что делать, если условие неверно}
end;

Особенности:
перед else НЕ ставится точка с запятой
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать слова begin и end

Слайд 30

Вариант 2. Блок-схема неполная форма ветвления

Вариант 2. Блок-схема

неполная форма ветвления

Слайд 31

Вариант 2. Программа program qq; var a, b, max: integer; begin

Вариант 2. Программа


program qq;
var a, b, max: integer;
begin
writeln('Введите два целых

числа');
read ( a, b );
max := a;
if b > a then
max := b;
writeln ('Наибольшее число ', max);
end.

неполная форма условного оператора

Слайд 32

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

Задания

«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три

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

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

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

Тема 3. Сложные условия

Слайд 34

Сложные условия Сложное условие – это условие, состоящее из нескольких простых

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий

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

равно

не равно

Слайд 35

Сложные условия Порядок выполнения (приоритет = старшинство) выражения в скобках not

Сложные условия

Порядок выполнения (приоритет = старшинство)
выражения в скобках
not
and
or, xor
<, <=, >,

>=, =, <>
Особенность – каждое из простых условий обязательно заключать в скобки.
Пример

4 1 6 2 5 3

if not (a > b) or (c <> d) and (b <> a)
then begin
...
end

Слайд 36

Истинно или ложно при a := 2; b := 3; c

Истинно или ложно при a := 2; b := 3; c

:= 4;
not (a > b)
(a < b) and (b < c)
not (a >= b) or (c = d)
(a < c) or (b < c) and (b < a)
(a < b) xor not (b > c)
Для каких значений x истинны условия:
(x < 6) and (x < 10)
(x < 6) and (x > 10)
(x > 6) and (x < 10)
(x > 6) and (x > 10)
(x < 6) or (x < 10)
(x < 6) or (x > 10)
(x > 6) or (x < 10)
(x > 6) or (x > 10)

Сложные условия

True

True

FALSE

(-∞, 6)


(6, 10)

(10, ∞)

(-∞, 10)

(-∞, 6) ∪ (10,∞)

(-∞, ∞)

(6, ∞)

x < 6

x > 10

x < 10

x > 6

True

True

Слайд 37

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

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

Тема 4. Циклы

Слайд 38

Циклы Цикл – это многократное выполнение одинаковой последовательности действий. цикл с

Циклы

Цикл – это многократное выполнение одинаковой последовательности действий.
цикл с известным числом

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

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

Блок-схема, соответствующая циклу с параметром языка Паскаль, представлена на рисунке


Здесь i – параметр цикла; i0 – начальное значение параметра; iT – конечное значение параметра.
Слайд 40

Циклы program qq; var i: integer; begin for i:=1 to 5

Циклы

program qq;
var i: integer;
begin
for i:=1 to 5 do
writeln('Привет');
end.

«Для

всех i от 1 до 5
делай …»

for i:=1 to 5 do

Если в цикле более одного оператора:

for i:=1 to 5 do begin
write('Привет');
writeln(', Вася!');
end;

begin

end;

Слайд 41

Циклы Задача. Вывести на экран квадраты и кубы целых чисел от

Циклы

Задача. Вывести на экран квадраты и кубы целых чисел от 1

до 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.
Слайд 42

Алгоритм начало i, i2, i3 конец нет да i i :=

Алгоритм

начало

i, i2, i3

конец

нет

да

i <= 8?

i := 1;

i := i + 1;

i2

:= i * i;
i3 := i2 * i;

задать начальное значение переменной цикла

проверить, все ли сделали

вычисляем квадрат и куб

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

перейти к следующему i

Слайд 43

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

Алгоритм (с блоком «цикл»)

начало

i, i2, i3

конец

i2 := i * i;
i3 :=

i2 * i;

i := 1,8

блок «цикл»

тело цикла

Слайд 44

Программа program qq; var i, i2, i3: integer; begin for i:=1

Программа

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.

переменная
цикла

начальное значение

конечное значение

Слайд 45

Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы

Цикл с уменьшением переменной

Задача. Вывести на экран квадраты и кубы целых

чисел от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:

for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;

downto

Слайд 46

Цикл с переменной for := to do begin {тело цикла} end;

Цикл с переменной

for <переменная> := <начальное значение> to <конечное значение> do

begin
{тело цикла}
end;

Увеличение переменной на 1:

for <переменная> := <начальное значение> downto <конечное значение> do begin
{тело цикла}
end;

Уменьшение переменной на 1:

Слайд 47

Цикл с переменной Особенности: переменная цикла может быть только целой (integer)

Цикл с переменной

Особенности:
переменная цикла может быть только целой (integer)
шаг изменения переменной

цикла всегда равен 1 (to) или -1 (downto)
если в теле цикла только один оператор, слова begin и end можно не писать:
если конечное значение меньше начального, цикл (to) не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)

for i:=1 to 8 do
writeln('Привет');

Слайд 48

Цикл с переменной Особенности: в теле цикла не разрешается изменять переменную

Цикл с переменной

Особенности:
в теле цикла не разрешается изменять переменную цикла (почему?)
при

изменении начального и конечного значения внутри цикла количество шагов не изменится:

n := 8;
for i:=1 to n do begin
writeln('Привет');
n := n + 1;
end;

нет зацикливания

Слайд 49

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

Сколько раз выполняется цикл?

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

Слайд 50

for i:=1 to 9 do begin if ??? then begin i2

for i:=1 to 9 do begin
if ??? then begin

i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;

Как изменить шаг?

Задача. Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:

i mod 2 = 1

i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);

выполняется только для нечетных i

Слайд 51

Как изменить шаг? – II Идея: Надо вывести всего 5 чисел,

Как изменить шаг? – II

Идея: Надо вывести всего 5 чисел, переменная

k изменяется от 1 до 5. Начальное значение i равно 1, с каждым шагом цикла i увеличивается на 2.
Решение:

???
for k:=1 to 5 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
???
end;

i := i + 2;

i := 1;

Слайд 52

Как изменить шаг? – III Идея: Надо вывести всего 5 чисел,

Как изменить шаг? – III

Идея: Надо вывести всего 5 чисел, переменная

k изменяется от 1 до 5. Зная k, надо рассчитать i.
Решение:

i = 2k-1

for k:=1 to 5 do begin
???
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;

i := 2*k – 1;

Слайд 53

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

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

Тема 5. Циклы с условием

Слайд 54

Цикл с неизвестным числом шагов Пример: Отпилить полено от бревна. Сколько

Цикл с неизвестным числом шагов

Пример: Отпилить полено от бревна. Сколько раз

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

Алгоритм начало count конец нет да n 0? count := 0;

Алгоритм

начало

count

конец

нет

да

n <> 0?

count := 0;

count := count + 1;
n :=

n div 10;

обнулить счетчик цифр

ввод n

выполнять «пока n <> 0»

Слайд 56

Программа program qq; var n, count: integer; begin writeln('Введите целое число');

Программа

program qq;
var n, count: integer;
begin
writeln('Введите целое число');
read(n);
count :=

0;
while n <> 0 do begin
count := count + 1;
n := n div 10;
end;
writeln('В числе ', n, ' нашли ',
count, ' цифр');
end.

while n <> 0 do begin
count := count + 1;
n := n div 10;
end;

, n1: integer;

n1 := n;

n1,

выполнять «пока n <> 0»

Слайд 57

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

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

Слайд 58

Цикл с условием while do begin {тело цикла} end; Особенности: можно

Цикл с условием

while <условие> do
begin
{тело цикла}
end;

Особенности:
можно использовать

сложные условия:
если в теле цикла только один оператор, слова begin и end можно не писать:

while (a {тело цикла}
end;

while a < b do
a := a + 1;

Слайд 59

Цикл с условием Особенности: условие пересчитывается каждый раз при входе в

Цикл с условием

Особенности:
условие пересчитывается каждый раз при входе в цикл
если условие

на входе в цикл ложно, цикл не выполняется ни разу
если условие никогда не станет ложным, программа зацикливается

a := 4; b := 6;
while a > b do
a := a – b;

a := 4; b := 6;
while a < b do
d := a + b;

Слайд 60

Сколько раз выполняется цикл? a := 4; b := 6; while

Сколько раз выполняется цикл?

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;

зацикливание

Слайд 61

Замена for на while и наоборот for i:=1 to 10 do

Замена for на while и наоборот

for i:=1 to 10 do begin

{тело цикла}
end;

i := 1;
while i <= 10 do begin
{тело цикла}
i := i + 1;
end;

for i:=a downto b do
begin
{тело цикла}
end;

i := a;
while i >= b do begin
{тело цикла}
i := i - 1;
end;

Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла.

Замена цикла for на while возможна всегда.

Слайд 62

Последовательности Задача: найти сумму всех элементов последовательности, которые по модулю больше

Последовательности

Задача: найти сумму всех элементов последовательности,
которые по модулю больше

0,001:

Элемент последовательности (начиная с №2):

b := b+1;

c := 2*c;

z := -z;

Слайд 63

Алгоритм начало S конец нет да |a| > 0.001? S :=

Алгоритм

начало

S

конец

нет

да

|a| > 0.001?

S := S + a;

S := 0; b :=

1; c := 2; z := -1; a := 1;

начальные значения

a := z*b/c;
b := b + 1; c := 2*c; z := -z;

первый элемент

a := 1;

S := 0;

новый элемент

изменение

Слайд 64

Программа program qq; var b, c, z: integer; S, a: real;

Программа

program qq;
var b, c, z: integer;
S, a: real;
begin
S :=

0; z := -1;
b := 1; c := 2; a := 1;
while abs(a) > 0.001 do begin
S := S + a;
a := z * b / c;
z := - z;
b := b + 1;
c := c * 2;
end;
writeln('S =', S:10:3);
end.

z := - z;
b := b + 1;
c := c * 2;

переход к следующему слагаемому

S := 0; z := -1;
b := 1; c := 2; a := 1;

начальные значения

увеличение суммы

расчет элемента последовательности

Слайд 65

Цикл с постусловием Задача: Ввести целое положительное число ( Проблема: Как

Цикл с постусловием

Задача: Ввести целое положительное число (<2000000) и определить число

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

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

Слайд 66

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

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

Слайд 67

Цикл с постусловием: алгоритм начало конец да нет n > 0?

Цикл с постусловием: алгоритм

начало

конец

да

нет

n > 0?

тело цикла

условие ВЫХОДА

блок «типовой процесс»

ввод

n

основной алгоритм

Слайд 68

Программа program qq; var n: integer; begin repeat writeln('Введите положительное число');

Программа

program qq;
var n: integer;
begin
repeat
writeln('Введите положительное число');
read(n);
until n

> 0;
... { основной алгоритм }
end.

repeat
writeln('Введите положительное число');
read(n);
until n > 0;

until n > 0;

условие ВЫХОДА

Особенности:
тело цикла всегда выполняется хотя бы один раз
после слова until ("до тех пор, пока не…") ставится условие ВЫХОДА из цикла