Программирование на языке Паскаль Тема 4. Циклы Циклы Цикл – это многократное выполнение одинаковой последовательности действий. • цикл с известным числом шагов • цикл с неизвестным.
Download ReportTranscript Программирование на языке Паскаль Тема 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 Задания
Составить программу, которая по первой букве названия инструмента (резец, фреза, хон, шлифовальный круг, напильник) выдавала бы наименование рабочей специальности (токарь, фрезеровщик, хонинговщик, шлифовщик, слесарь).