Програмування на мові Паскаль. Цикли з умовою

Содержание

Слайд 2

Цикл з невідомою кількістю кроків Приклад: Відрізати поліно від колоди. Скільки

Цикл з невідомою кількістю кроків

Приклад: Відрізати поліно від колоди. Скільки разів

потрібно зробити рух пилкою?
Задача: Ввести ціле число (<2000000) і визначити кількість цифр у ньому.
Ідея розв’язання: Відрізаємо послідовно останню цифру, збільшуємо лічильник.
Проблема: Невідомо, скільки кроків потрібно зробити.
Розв’язання: Потрібно зупинитися, коли n = 0, тобто потрібно робити “поки n <> 0".
Слайд 3

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

Алгоритм

початок

count

кінець

ні

так

n <> 0?

count := 0;

count := count + 1;
n :=

n div 10;

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

ввести n

виконувати "поки n <> 0"

Слайд 4

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

, n1: integer;

n1 := n;

n1,

виконувати "поки n <> 0"

Слайд 5

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

Цикл с умовою

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

Особливості:
можна використовувати

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

while (a {тіло циклу}
end;

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

Слайд 6

Цикл з умовою Особливості: умова перевіряється кожен раз при вході в

Цикл з умовою

Особливості:
умова перевіряється кожен раз при вході в цикл
якщо умова

на вході в цикл хибна, цикл не виконується жодного разу
якщо умова ніколи не стане хибною, програма зациклиться

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

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

Слайд 7

Скільки разів виконується цикл? 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;

зациклювання

Слайд 8

Заміна 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 можлива завжди.

Слайд 9

Завдання "4": Ввести ціле число і знайти суму його цифр. Приклад:

Завдання

"4": Ввести ціле число і знайти суму його цифр.
Приклад:
Ввести ціле

число:
1234
Сума цифр числа 1234 рівна 10.
"5": Ввести ціле число і визначити, чи правда, що в його записі є дві однакові цифри.
Приклад:
Ввести ціле число: Ввести ціле число:
1234 1224
Ні. Так.
Слайд 10

Послідовності Приклади: 1, 2, 3, 4, 5, … 1, 2, 4,

Послідовності

Приклади:
1, 2, 3, 4, 5, …
1, 2, 4, 7, 11, 16,


1, 2, 4, 8, 16, 32, …

an = n

a1 = 1, an+1 = an+1

a1 = 1, an+1 = an + n

an = 2n-1

a1 = 1, an+1 = 2an

b1 = 1, bn+1 = bn+1

c1 = 2, cn+1 = 2cn

Слайд 11

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

Послідовності

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

0,001:

Елемент послідовності (починаючи з №2):

b := b+1;

c := 2*c;

z := -z;

Слайд 12

Алгоритм початок 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;

перший елемент

новий елемент

зміни

Слайд 13

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

перехід до наступного доданка

початкове значення

збільшення суми

розрахунок елемента послідовності

Слайд 14

Завдання "4": Знайти суму елементів послідовності з точністю 0,001: Відповідь: S

Завдання

"4": Знайти суму елементів послідовності з точністю 0,001:
Відповідь:
S = 1.157
"5": Знайти

суму елементів послідовності з точністю 0,001:
Відповідь:
S = 1.220
Слайд 15

Цикл з післяумовою Задача: Ввести ціле додатне число ( Проблема: Як

Цикл з післяумовою

Задача: Ввести ціле додатне число (<2000000) і визначити кількість

цифр в ньому.
Проблема: Як не дати ввести від'ємне число або нуль?
Розв’язання: Якщо вводиться неправильне число, повернутися назад до введення даних (цикл!).
Особливості: Один раз тіло циклу потрібно виконати в будь-якому випадку => перевірку умови циклу потрібно виконувати в кінці циклу (цикл с післяумовою).

Цикл с післяумовою – це цикл, в якому перевірка умови виконується в кінці циклу.

Слайд 16

Цикл з післяумовою: алгоритм початок кінець так ні n > 0?

Цикл з післяумовою: алгоритм

початок

кінець

так

ні

n > 0?

тіло циклу

умова ВИХОДУ

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

ввести

n

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

Слайд 17

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

Програма

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

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

until n > 0;

умова ВИХОДУ

Особливості:
тіло циклу завжди виконується хоча б один раз
після слова until ("до тих пір, поки не…") ставиться умова ВИХОДУ із циклу