Сьогодн і на уроці
DESCRIPTION
Сьогодн і на уроці. Алгоритми з повторенням и . ( 14 год). Урок №1. Алгоритми з повтореннями . Цикл з передумовою. “Любуясь Луной – помните , и Луна совершает циклический алгоритм”. Дата 09.01.2014. Чому дорівнюватимуть значення виразів: - PowerPoint PPT PresentationTRANSCRIPT
Сьогодні на уроці.
Дата 09.01.2014
Алгоритми з повтореннями. ( 14 год)
Урок №1. Алгоритми з повтореннями. Цикл з передумовою.
“Любуясь Луной – помните, и Луна совершает циклический алгоритм”
Чому дорівнюватимуть значення виразів:а) 543 mod 10 + 47 mod 10
б) 234 div 100 + 234 mod 100
в) (543 div 10) mod 10 + 47 mod 10
Задача 1: Знайти суму цифр тризначного натурального числа, що вводиться з клавіатури.
uses crt; var n,a,s:integer; begin clrscr; writeln('vvecti chislo'); readln(n);s:=0;a:=n mod 10;s:=s+a;n:=n div 10;a:=n mod 10;s:=s+a;n:=n div 10;a:=n mod 10;s:=s+a;n:=n div 10;writeln('summa cifr=',s); end.
Як слід діяти, коли кількість цифр в числі невідома?
a:=n mod 10; - знаходимо останню цифру числаs:=s+a; - додаємо його до сумиn:=n div 10; - зменшуємо число в 10 разів (відкидаємо
останню цифру)
Тепер, очевидно, що для будь-якого натурального числа задачу знаходження суми його цифр можна розв’язати: треба повторити послідовність цих операторів стільки разів - скільки цифр в числі
n s as:=0; 1245 0 0
1-ий разa:=n mod 10;
5
s:=s+a; 5n:=n div 10; 124
2-ий разa:=n mod 10;
4
s:=s+a; 9n:=n div 10; 12
3-ий разa:=n mod 10;
2
s:=s+a; 11n:=n div 10; 1
4-ий разa:=n mod 10;
1
s:=s+a; 12n:=n div 10; 0
висновок: вказану послідовність дій можна повторювати, якщо число n більше нуля.
Ввесті n
Початок
S:=0
n>=0ТакНі
a:=n mod 10
S:=S+a
n:=n div 10
Вивести S
Кінець
Алгоритм даної задачі у вигляді блок-схеми:
Бачимо, що для даної задачі, певну послідовність дій треба повторити.
В мові Паскаль є три види оператора циклу. І сьогодні ми знайомимось з першим з них, який має назву „цикл з передумовою”.
Його структура така:While<логічний вираз> do
begin<тіло циклу>end;
умова ТакНі
Список дій
Uses crt;Var n,a,s: integer;Begin clrscr;Write(‘vvesti n--’); readln(n);s:=0;while n>0 doBegina:=n mod 10;s:=s+a;n:=n div 10;end;writeln(‘S=’,s);readln;End.
В даному прикладі є змінна n, яка всередині циклу змінює своє значення. Ця ж змінна фігурує в логічному виразі. Взагалі, при реалізації циклу слід подбати про те, щоб в середині тіла циклу була передбачена зміна величини, що фігурує в логічному виразі, бо інакше можлива ситуація, коли тіло циклу буде виконуватись нескінчену кількість разів. Ця ситуація має назву зациклення.
Оператор циклу з передумовою має такі характерні властивості:•використовується, коли кількість повторень є невідомою;•тіло циклу виконується, поки умова істинна;•вихід з циклу відбувається, коли умова хибна;•тілом циклу може бути як простий, так і складений оператор;•принаймні одна величина повинна змінюватись в тілі циклу, щоб запобігти зацикленню.
Задача 2: Знайти значення суми S=1+2+3+…+n.
Для розв’язування цієї задачі нам потрібні змінні n, s, a. Яке призначення змінних n, s зрозуміло. А змінна а – „ біжуча” змінна, яка буде змінювати своє значення від 1 до n. Початкове значення змінної а=1.
В тілі циклу потрібно додавати значення „біжучої” змінної до суми і збільшувати її значення на 1.
Цикл потрібно виконувати за умови a<=n.
a<=nТакНі
S:=S+a; a:=a+1;
S:=0;
a:=1
Uses crt;Var n,a,s: integer;Begin clrscr;Write(‘vvesti n-->’); readln(n);s:=0;a:=1;while a<=n doBegins:=s+a;a:=a+1;end;writeln(‘S=’,s);readln;End.