ветвление.условный оператор.циклы

21
План Ветвления Условный оператор Циклы Циклы с условием

Upload: dasha2012

Post on 12-Nov-2014

850 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: ветвление.условный оператор.циклы

План

Ветвления

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

Циклы

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

Page 2: ветвление.условный оператор.циклы

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

наибольшее из них.

Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.

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

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

разветвляющимися.

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

разветвляющимися.

Page 3: ветвление.условный оператор.циклы

Основные варианты структуры ветвления:

нет

серия команд 1

да условие

Неполная форма

да нет

серия команд 1 серия команд 2

условие

Полная форма

если - то; если – то - иначе;

Page 4: ветвление.условный оператор.циклы

Блок-схеманачало

max:= a;

ввод a,b

вывод max

a > b?

max:= b;

конец

да нет

блок "решение"блок "решение"

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

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

Page 5: ветвление.условный оператор.циклы

Программа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.

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

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

Page 6: ветвление.условный оператор.циклы

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

Page 7: ветвление.условный оператор.циклы

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

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

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

форма)• если в блоке один оператор, можно убрать слова begin

и end

Page 8: ветвление.условный оператор.циклы

Блок-схеманачало

max:= a;

ввод a,b

вывод max

max:= b;

конец

да нетb > a?

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

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

Page 9: ветвление.условный оператор.циклы

Программаprogram qq;var a, b, max: integer;begin writeln('Введите два целых числа'); read ( a, b ); max := a; if b > a then max := b;

writeln ('Наибольшее число ', max);end.

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

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

Page 10: ветвление.условный оператор.циклы

Циклы

Page 11: ветвление.условный оператор.циклы

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

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

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

Page 12: ветвление.условный оператор.циклы

12

Алгоритм

начало

i, i2, i3

конецнет

да

i <= 8?

i := 1;

i := i + 1;

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

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

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

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

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

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

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

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

Page 13: ветвление.условный оператор.циклы

13

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

начало

i, i2, i3

конец

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

i := 1,8

блок "цикл"блок "цикл"

тело циклатело цикла

Page 14: ветвление.условный оператор.циклы

14

Программа

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.

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

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

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

Page 15: ветвление.условный оператор.циклы
Page 16: ветвление.условный оператор.циклы

Цикл for

Цикл for существует в двух формах

for счетчик:=значение to конечное_значение do тело_цикла;

for счетчик:=значение downto конечное_значение do тело_цикла;

Page 17: ветвление.условный оператор.циклы

Счетчик – это переменная любого из

перечисляемых типов (целого, булевого, символьного, диапазонного, перечисления). Начальные и конечные значения могут быть представлены не только значениями, но и выражениями, возвращающими совместимые с типом счетчика типы данных. Если между начальным и конечным выражением указано служебное слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.

Page 18: ветвление.условный оператор.циклы

Количество итераций цикла for известно именно до его выполнения, но не до выполнения всей программы. Так в примере ниже, количество выполнений цикла определяется пользователем. Значение присваивается переменной, а затем используется в заголовке цикла. Но когда оно используется, циклу уже точно известно, сколько раз надо выполниться.

var i, n: integer; begin write ('Количество знаков: '); readln (n); for i := 1 to n do write ('(*) '); readlnend.

Page 19: ветвление.условный оператор.циклы

Цикл whileЦикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false – то нет.

Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.

var i, n: integer; begin write ('Количество знаков: '); readln (n); i := 1; while i <= n do begin write ('(*) '); i := i + 1 end; readlnend.

Page 20: ветвление.условный оператор.циклы

Цикл repeatЦикл while может не выполниться ни разу, если логическое выражение в заголовке сразу вернуло false. Однако такая ситуация не всегда может быть приемлемой. Бывает, что тело цикла должно выполниться хотя бы один раз, не зависимо оттого, что вернет логическое выражение. В таком случае используется цикл repeat – цикл с постусловием.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

var i, n: integer; begin write ('Количество знаков: '); readln (n); i := 1; repeat write ('(*) '); i := i + 1 until i > n; readlnend.

Page 21: ветвление.условный оператор.циклы

21

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

for i:=1 to 10 do begin {тело цикла}end;

for i:=1 to 10 do begin {тело цикла}end;

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

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

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

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

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

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

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

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