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

Download Report

Transcript Программирование на языке Паскаль Тема 4. Циклы Циклы Цикл – это многократное выполнение одинаковой последовательности действий. • цикл с известным числом шагов • цикл с неизвестным.

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

Тема 4. Циклы

1

Циклы Цикл

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

• цикл с

известным

числом шагов • цикл с

неизвестным

условием) числом шагов (цикл с

2

Алгоритм

начало да нет конец

3

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

начало блок «цикл» конец тело цикла

4

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

Цикл с переменной Особенности:

• переменная цикла может быть только целой (

integer

) • шаг изменения переменной цикла всегда равен 1 (

to

) или -1 (

downto

) • если в теле цикла только один оператор, слова

begin

и

end

можно не писать:

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

• если конечное значение меньше начального, цикл (

to

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

6

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

a := 1; for i:=1 to 3 do a := a+1; a := 1; for i:=3 to 1 do a := a+1; a := 1; for i:=1 downto 3 do a := a+1; a := 1; for i:=3 downto 1 do a := a+1; a = 4 a = 1 a = 1 a = 4 7

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

Задача.

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

Особенность:

переменная цикла должна увеличиваться на 2.

Проблема:

в Паскале шаг может быть 1 или -1.

Решение: for i:=1 to 9 do begin if ???

then begin

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

i 8 end; end;

Как изменить шаг? – II Идея:

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

k

от 1 до 5. Начальное значение

i

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

i

увеличивается на 2.

Решение: 9 for k:=1 to 5 do begin i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); ???

end;

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

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

10

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

• можно использовать сложные условия:

while (a

• если в теле цикла только один оператор, слова

begin

и

end

можно не писать:

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

Цикл с условием Особенности:

• условие пересчитывается

каждый раз

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

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

• если условие никогда не станет ложным, программа

зацикливается a := 4; b := 6; while a < b do d := a + b; 12

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

a := 4; b := 6; while a < b do a := a + 1; a := 4; b := 6; while a < b do a := a + b; a := 4; b := 6; while a > b do a := a + 1; a := 4; b := 6; while a < b do b := a - b; a := 4; b := 6; while a < b do a := a - 1;

2 раза

a = 6

1 раз

a = 10

0 раз

a = 4

1 раз

b = -2 зацикливание 13

Замена 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 возможна только тогда, когда можно заранее рассчитать число шагов цикла .

14

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

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

15 repeat {тело цикла} until <условие> Особенности:

• тело цикла всегда выполняется хотя бы один раз • после слова

until

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

ВЫХОДА

из цикла

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

начало ввод

n

нет

n > 0?

да

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

конец тело цикла условие

ВЫХОДА

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

16

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

a := 4; b := 6; repeat a := a + 1; until a > b; a := 4; b := 6; repeat a := a + b; until a > b; 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;

3 раза

a =

7 1 раз

a = 10 зацикливание

2 раза

b =

6

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

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

Тема 6. Оператор выбора

18

Оператор выбора Особенности:

• после

case

может быть имя переменной или арифметическое выражение целого типа (

integer

)

case i+3 of 1: begin a := b; end; 2: begin a := c; end; end;

или символьного типа (

char

)

var c: char; ...

case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук'); else writeln('Не знаю'); end; 19

Оператор выбора Особенности:

• если нужно выполнить только один оператор, слова

begin

и

end

можно не писать

case i+3 of 1: a := b; 2: a := c; end;

• нельзя ставить два одинаковых значения

case i+3 of 1: a := b; 1: a := c; end; 20

Оператор выбора Особенности:

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

case i of 1: a := b; 2,4,6: a := c; 10..15: a := d; 20,21,25..30: a := e; else writeln('Ошибка'); end; 21

Что неправильно?

case a of 2: begin a := b; 4: a := c; end; case a of 2..5: a := b; 4: a := c; end; case a+c/2 of 2: a := b; 4: a := c; end; case a of 2: a := b 4: a := c end; ; case a of 0..2: a := b; 6..3: a := c; end; begin case a of 2: a := b; d := 0; 4: a := c; end; end; 22

23 Задания

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