Тема: „Вказівки повторення” icon

Тема: „Вказівки повторення”




Скачати 169.63 Kb.
НазваТема: „Вказівки повторення”
Дата конвертації31.01.2013
Розмір169.63 Kb.
ТипЗадача


Міністерство освіти і науки України

Славутицький ліцей Славутицької міської ради Київської області


Цикл уроків з інформатики

Тема: „Вказівки повторення”

(9 клас математичного профілю навчання)


Автор: вчитель інформатики вищої категорії Славутицького ліцею Шаповал Володимир Олександрович


Славутич

2010 р

Уроки № 1 - 2

Тема: „Вказівки повторення. Цикл з передумовою”

Мета: ознайомлення зі структурою циклу з передумовою. Формування навичок застосування циклу для типових задач.

Хід уроку

1. Активізація опорних знань.

Усні вправи:

Чому дорівнюватимуть значення виразів:

а) 543 mod 10 + 47 mod 10 (відповідь 10)

б) 234 div 100 + 234 mod 100 (відповідь 36)

в) (543 div 10) mod 10 + 47 mod 10 (відповідь 11)


^ 2. Мотивація навчальної діяльності.

На попередніх уроках ми з’ясували, як можна використовувати оператори mod і div для роботи з цілими числами, зокрема, як з їх допомогою виділяти цифри в числі. Давайте ще раз пригадаємо це на прикладі конкретної задачі.

Задача 1: Знайти суму цифр тризначного натурального числа, що вводиться з клавіатури.

Нехай - введене число.

Знайдемо спочатку останню цифру числа як остачу від ділення числа на 10, тобто c:=n mod 10. Перша цифра, очевидно, це ціла частина від ділення числа на 100, тобто a:=n div 100. Другу цифру можна знайти, якщо спочатку зменшити число n в 10 разів, а потім визначити останню цифру одержаного двозначного числа, тобто b:=(n div 10) mod 10.

S:=a+b+c.

Але, як слід діяти, коли кількість цифр в числі невідома? Які проблеми постануть перед нами?

Спочатку спробуємо з’ясувати, чи можна було б розв’язати цю задачу, не використовуючи змінних b і c? Виявляється – так, але це збільшує програмний код. Фрагмент програми буде такий:

s:=0;

a:=n mod 10; - знаходимо останню цифру числа

s:=s+a; - додаємо його до суми

n:=n div 10; - зменшуємо число в 10 разів (відкидаємо останню цифру)

a:=n mod 10;

s:=s+a;

n:=n div 10;

a:=n mod 10;

s:=s+a;

n:=n div 10;

writeln(‘s=’,s);

Бачимо, що група операторів, виділених квадратною дужкою, повторюється тричі. Тепер, очевидно, що для будь-якого натурального числа задачу знаходження суми його чисел можна розв’язати: треба повторити послідовність цих операторів стільки разів - скільки цифр в числі. Але ж вона нам все одно невідома. Коли ж треба зупинитись повторювати дії? Щоб дати відповідь на це запитання, проаналізуємо, як будуть змінюватись значення n, a, s після виконання кожної дії для числа 1245.








n

s

a




s:=0;

1245

0

0

1-ий раз

a:=n mod 10;







5

s:=s+a;




5




n:=n div 10;

124







2-ий раз

a:=n mod 10;







4

s:=s+a;




9




n:=n div 10;

12







3-ий раз

a:=n mod 10;







2

s:=s+a;




11




n:=n div 10;

1







4-ий раз

a:=n mod 10;







1

s:=s+a;




12




n:=n div 10;

0









Очевидно, що далі дії можна не повторювати, оскільки число n дорівнює нулю. Отже, робимо висновок: вказану послідовність дій можна повторювати, якщо число n більше нуля. Зобразимо вказаний алгоритм у вигляді блок-схеми:


Початок

Ввести n

S:=0

n>=0

Так

Ні

a:=n mod 10

S:=S+a

n:=n div 10

Вивести S








Кінець

Бачимо, що для даної задачі, певну послідовність дій треба повторити.

^ 3. Формування нових знань і умінь.

Взагалі, в своєму житті ми часто зустрічаємось з необхідністю повторювати якісь дії. В мові Паскаль є три види оператора циклу. І сьогодні ми знайомимось з першим з них, який має назву „цикл з передумовою”.

Його структура така:

While <логічний вираз> do <тіло циклу>

Цикл з передумовою працює так: якщо логічний вираз істинний (приймає значення true), то виконується тіло циклу і знову перевіряється умова. Тілом циклу може бути простий або складений оператор. Якщо ж логічний вираз приймає значення false, то здійснюється вихід з циклу.







Наведемо текст програми для розглянутої задачі (програма 1):

^ Program SumaTsifr;

Var n,a,s: integer;

Begin

Write(‘n-->’); readln(n);

s:=0;

while n>0 do

begin

a:=n mod 10;

s:=s+a;

n:=n div 10;

end;

writeln(‘S=’,s);

readln;

End.


Слід відмітити, що в даному прикладі є змінна n, яка всередині циклу змінює своє значення. Ця ж змінна фігурує в логічному виразі. Взагалі, при реалізації циклу слід подбати про те, щоб в середині тіла циклу була передбачена зміна величини, що фігурує в логічному виразі, бо інакше можлива ситуація, коли тіло циклу буде виконуватись нескінчену кількість разів. Ця ситуація має назву зациклення.

Як потрібно змінити умову в циклі програми 1, щоб відбулось зациклення? (Відповідь: n>=0).

Розглянемо ще одну задачу, де не обійтись без циклу.

Задача 2: Знайти значення суми S=1+2+3+…+n.

Для розв’язування цієї задачі нам потрібні змінні n, s, a. Яке призначення змінних n, s зрозуміло. А змінна а – „біжуча” змінна, яка буде змінювати своє значення від 1 до n. Початкове значення змінної а=1. В тілі циклу потрібно додавати значення „біжучої” змінної до суми і збільшувати її значення на 1. Цикл потрібно виконувати за умови a<=n.

Отже, текст програми буде таким:

^ Program Suma1;

Var n,a,s: integer;

Begin

Write(‘n-->’); readln(n);

s:=0;a:=1;

while a<=n do

begin

s:=s+a;

a:=a+1;

end;

writeln(‘S=’,s);

readln;

End.

^ 4. Узагальнення і систематизація теоретичного матеріалу.

Оператор циклу з передумовою має такі характерні властивості:

  • використовується, коли кількість повторень є невідомою;

  • тіло циклу виконується, поки умова істинна;

  • вихід з циклу відбувається, коли умова хибна;

  • тілом циклу може бути як простий, так і складений оператор;

  • принаймні одна величина повинна змінюватись в тілі циклу, щоб запобігти зацикленню.

^ 5. Застосування набутих знань, формування практичних навичок.

Задача 3. Обчислити факторіал числа n (P=n!=1*2*…*n).

Примітка: 1) при розв’язуванні цієї задачі зверніть увагу на початкове значення змінної Р.

2) перевірте експериментальним шляхом, для якого максимального числа n програма буде працювати коректно.

3) змініть тип даних на longint і дайте відповідь на попереднє запитання.

Задача 4. Обчислити суму S=1+3+5+…+n (n – непарне число).

Задача 5. Знайти суму першої і останньої цифри числа n, що вводиться з клавіатури (n<=2 000 000 000).

Уроки № 3 - 4

Тема: „Вказівки повторення. Цикл з післяумовою”

Мета: ознайомлення зі структурою циклу з післяумовою. Формування навичок використання циклів та їх запису мовою програмування та мовою блок-схем.

Хід уроку

^ 1. Активізація опорних знань.

Усні вправи:

  1. Чому дорівнюватиме значення змінної S після виконання циклу:

    1. s:=8; і:=1; while і<=5 do і:=і+1; s:=s+і; s=14

    2. s:=1; і:=0; while і<4 do begin і:=і+1; s:=s*і; end; s=24

  2. Скільки разів буде виконано тіло циклу в наступних фрагментах:

    1. k:=5; while k>4 do k:=k-1; Відповідь: 1 раз

    2. m:=8; while m<7 do m:=m-1; Відповідь: жодного разу

    3. m:=6; while m<7 do m:=m-1; Відповідь: нескінчену кількість

^ 2. Формування нових знань і умінь.

На попередньому уроці ми почали знайомитись із вказівками повторення і розглянули цикл з передумовою на прикладі задачі знаходження суми цифр натурального числа. При роботі цього циклу спочатку перевірялась умова, а потім виконувалось тіло циклу. Але можливий інший підхід – спочатку виконати тіло циклу, а потім перевірити умову. Така структура має назву цикл з післяумовою і має такий вид:




Мовою Паскаль вона описується так:

Repeat

<тіло циклу>;

Until <логічний вираз>;

Спочатку виконується тіло циклу, а потім перевіряється значення логічного виразу. Якщо, він приймає значення true, то здійснюється вихід з циклу, якщо false - знову виконується тіло циклу.

Слід зазначити, що якщо тілом циклу є складений оператор, то його не обов’язково брати в операторні дужки begin…end, оскільки їх роль відіграють службові слова repeat … until.

Розглянемо, як можна було б розв’язати задачу знаходження суми цифр натурального числа, якщо використати цикл repeat … until. В даному випадку тіло циклу буде таким самим як і з використанням циклу з передумовою, але умова буде інша. Яка саме?

Програма матиме вигляд:

^ Program SumaTsifr2;

Var n,a,s: integer;

Begin

Write(‘n-->’); readln(n);

s:=0;

repeat

a:=n mod 10;

s:=s+a;

n:=n div 10;

until n=0;

writeln(‘S=’,s);

readln;

End.


Цикл repeat … until можна використовувати для контролю вхідних даних на коректність. Припустимо, що ми вводимо з клавіатури тризначне натуральне число, тоді фрагмент програмного коду для контролю вхідних даних буде таким:

repeat

write (‘N-->’);

readln(n);

until (n>0)and (n<1000);


Працюватиме ця структура так: вводимо число n, якщо воно тризначне, тобто (n>0)and (n<1000), то відбувається вихід з циклу і програма працюватиме далі, якщо ж вказана умова не виконується, то треба буде повторити введення даних.

Характерні властивості циклу з післяумовою:

  • використовується коли не відома кількість повторень;

  • тіло циклу виконується хоча б один раз;

  • тіло циклу виконується, поки умова хибна (false);

  • вихід з циклу здійснюється коли умова істинна (true);

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

Задача 1. Використовуючи цикл з післяумовою обчислити факторіал числа n, що вводиться з клавіатури.

На практичному занятті минулого заняття було встановлено, що навіть використання типу longint, дозволяє знайти правильне значення факторіалу для чисел, що менші або дорівнюють 12. Тому, в даній задачі ми будемо контролювати вхідне значення n.

program factorial;

var a, n, p: longint;

^ Begin

repeat

write(‘N--->’);

readln(n);

until (n>0) and (n<13);

a:=0; p:=1;

repeat

a:=a+1;

p:=p*a;

until a=n;

write(n,’!=’,p);

readln;

End.

^ 3. Узагальнення і систематизація теоретичного матеріалу.

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

Цикл while … do

Цикл repeat … until






Якщо умова істинна, то виконується тіло циклу, якщо умова хибна, то відбувається вихід з циклу



Якщо умова хибна, то виконується тіло циклу, якщо умова істинна, то відбувається вихід з циклу


Цикл може не виконатись жодного разу.



Цикл виконається принаймні один раз


^ 4. Формування практичних навичок.

Задача 2. Знайти кількість двозначних чисел кратних 3.

Задача 3. Знайти і вивести на екран максимальну цифру, що використовується в десятковому записі числа n (n<=2 000 000 000).

Вказівка: зрозуміло, що в тілі циклу потрібно використовувати умовний оператор.

Уроки № 5 - 6

Тема: „Вказівки повторення. Цикл з параметром”

Мета: ознайомлення зі структурою циклу з параметром. Формування навичок використання циклів та їх запису мовою програмування.

Хід уроку

^ 1. Активізація опорних знань.

Бажано провести невелику самостійну роботу (можна тестового характеру) за матеріалами попередніх уроків.

  1. Вказати значення змінної s після виконання вказівки повторення:

    1. s:=3; I:=1; while I<=7 do begin I:=I+2; s:=s+I; end; s=_____

    2. s:=1; I:=0; while I<=4 do I:=I+1; s:=s*I; s=_____

    3. s:=10; I:=1; repeat s:=s–I; I:=I+1; until I>3; s=_____




  1. Скільки разів буде виконано цикл?

    1. k:=3; repeat s:=s+k; k:=k+1; until k>5; ______________

    2. k:=4; while k>=4 do k:=k-1; ______________

    3. m:=10; while m<7 do m:=m-1; ______________

    4. I:=4; repeat I:=I–1; until I>=8; ______________


^ 2. Формування нових знань і умінь.

До цього моменту ми використовували оператори циклу у випадках, коли кількість повторень не була відома наперед. При цьому в середині циклу обов’язково потрібно було подбати про зміну деякої величини, що фігурує в умові, щоб запобігти зацикленню.

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

Мовою Паскаль він описується так:

For <параметр>:=початкове значення to кінцеве значення do

<тіло циклу>;

або For <параметр>:=початкове значення downto кінцеве значення do

<тіло циклу>;

Ця конструкція задає багатократне виконання деякого оператора, простого чи складеного, з одночасною зміною параметра. Початкове і кінцеве значення параметра можуть бути константами, змінними або арифметичними виразами. Ці значення визначаються один раз на початку виконання оператора For і не змінюються під час роботи цього оператора. Значення параметру, а також початкового і кінцевого значень повинні належати до одного типу, обов’язково порядкового. Якщо в операторі For використовується слово do, то значення параметру збільшується на 1 при кожному повторенні тіла циклу, якщо ж в операторі For використовується слово downto, то значення параметру зменшується на 1 при кожному повторенні тіла циклу.

Якщо трапиться, що при використанні слова do початкове значення більше ніж кінцеве, то цикл не виконається жодного разу. Аналогічно, якщо при використанні слова downto початкове значення менше ніж кінцеве, то цикл також не виконається жодного разу.

В загальному випадку

For i:=A to B do <тіло циклу> , цикл буде виконано В-А+1 разів.

Зауваження: при використанні циклу з параметром небажано змінювати значення параметру в тілі циклу, оскільки це може призвести до появи помилок, які потім досить важко виявити.

Задача 1. Вивести на екран всі натуральні числа від 10 до 20 та їх квадрати.

Кількість повторень в даній задачі, очевидно, відома. Отже, можемо використати цикл з параметром.

^ Program param1;

Var a: integer;

Begin

For a:=10 to 20 do

writeln(a,’ ‘, sqr(a));

readln;

End.

Зверніть увагу, що в тілі циклу використовується простий оператор, тому можна не використовувати операторні дужки begin … end.

Задача 2. Послідовність Фібоначчі будується таким способом: перші два члени цієї послідовності дорівнюють 1, а кожний наступний член, починаючи з третього, дорівнює сумі двох попередніх. Тобто: 1, 1, 2, 3, 5, 8, 13, 21, 34 ... .

Потрібно написати програму, яка за введеним числом n, знаходить і виводить на екран n перших членів послідовності Фібоначчі.

Розв’язування.

Виходячи із вказаного способу побудови послідовності Фібоначчі, для перших її трьох членів можемо записати таке: a:=1; b:=1; c:=a+b. А далі нам потрібно виконати переприсвоєння значень змінних: a:=b; b:=c, тобто, вже обчислені значення послідовності повинні стати початковими.

Наведемо текст програми:

^ Program Fib_1;

Var a,b,c,i,n: integer;

Begin

write(‘N--->’); readln(n);

a:=1; b:=1;

write(a,’ ’); write(b,’ ’);

for i:=3 to n do

begin

c:=a+b;

write(c,’ ’);

a:=b;

b:=c;

end;

readln;

End.

На прикладі послідовності Фібоначчі, ми познайомились з прикладом рекурентної послідовності, тобто послідовності, в якій кожний наступний член можна виразити через попередні.

^ 3. Узагальнення і систематизація теоретичного матеріалу.

Характерні риси циклу з параметром:

  • використовуємо у випадках, коли кількість повторень відома наперед;

  • з кожним виконанням тіла циклу, значення параметру змінюється на одиницю (збільшується або зменшується);

  • всередині циклу не рекомендується змінювати параметр.

Які, на вашу думку, переваги має цикл з параметром порівняно з циклами з передумовою та післяумовою? Які недоліки?


^ 4. Формування практичних навичок застосування циклів.

Задача 3. Переробіть програму обчислення чисел Фібоначчі так, щоб використовувався цикл while.

Задача 4. Використовуючи цикл з параметром, знайти суму всіх парних натуральних чисел з проміжку від 10 до 50.

Задача 5. Знайти суму перших n членів послідовності Фібоначчі (n<50).


Уроки № 7 - 8

Тема: „Вкладені цикли”

Мета: Формування навичок використання вкладених циклів для розв’язування типових задач, формування інформаційної культури.

Хід уроку

^ 1. Активізація опорних знань.

Спробуйте виявити помилки у наведених фрагментах програм і з’ясувати, що обчислюється у цих фрагментах:

  1. k:=1; f:=0;

while k
k:=k+1;

  1. s:=0;

while n>=0 do

begin;

a:=n mod 10;

s:=s+a;

n:=n div 10;

end;


^ 2. Формування нових знань і умінь.

При розв’язуванні задач досить часто доводиться використовувати дві й більше циклічних конструкцій, одна з яких міститься в тілі циклу іншої. Такі конструкції називаються вкладеними циклами. Внутрішній та зовнішній цикли можуть бути будь-якими з трьох розглянутих раніше. Однак, при використанні вкладених циклів слід дотримуватись наступної умови: внутрішній цикл повинен повністю „вкладатись” в циклічну частину зовнішнього циклу.

Слід пам’ятати, що при роботі вкладених циклів спочатку виконується внутрішній цикл, а потім - зовнішній.

Розглянемо реалізацію вкладених циклів на конкретному прикладі.

Задача1. Знайти всі тризначні числа, сума цифр яких дорівнює введеному числу n.

Розв’язування:

Насамперед, слід з’ясувати, яким може бути число n. Найменше тризначне число – 100, найбільше – 999. Отже, введене число n повинно задовольняти умовам n>=1, n<=27. Для контролю вводу n використаємо цикл з післяумовою.

Найпростіший спосіб розв’язування – перебирати всі тризначні числа, знаходити суму цифр кожного числа і перевіряти, чи дорівнює вона n. Якщо так, то вивести одержане число на екран, якщо ж ні – перейти до розгляду наступного числа. Кожну з цих дій окремо ми вміємо робити. Залишилось їх об’єднати в одній програмі.

program Trznach1;

var x,n,a,s,m: integer;

^ Begin

repeat

write(’n--->’);

readln(n);

until (n>=1) and (n<=27);

for x:=100 to 999 do {перебираємо всі тризначні числа}

begin

s:=0; {початкове значення суми}

m:=x; {створюємо копію числа}

while m>0 do {знаходимо суму цифр числа}

begin

a:=m mod 10;

s:=s+a;

m:=m div 10;

end;

if s=n then writeln(x);

end;

readln;

End.

Потрібно звернути увагу на команду m:=x. Це присвоєння створює копію тризначного числа, яке розглядається. Ця копія необхідна, оскільки при знаходженні суми цифр числа саме число зменшується до нуля і значення цього числа ми „загубимо”.

Існує й інший спосіб розв’язування цієї задачі, причому бажано його знати, оскільки він в подальшому буде використовуватись.

Цей спосіб полягає в тому, що ми замість розгляду тризначного числа і виділення його цифр, будемо розглядати окремо розряди цього числа, знаходити їх суму, і якщо вона дорівнюватиме n, то з цих розрядів сформуємо тризначне число, яке виведемо на екран.

program Trznach2;

var n,a,b,c: integer;

^ Begin

repeat

write(’n--->’);

readln(n);

until (n>=1) and (n<=27);

for a:=1 to 9 do

for b:=0 to 9 do

for c:=0 to 9 do

if a+b+c=n then writeln(100*a+10*b+c);

readln;

End.

Спробуйте пояснити, чому зовнішній цикл виконується від 1 до 9, а два внутрішніх – від 0 до 9.

^ 3. Формування практичних навичок роботи з вкладеними циклами.

Задача 2. Обчислити значення суми , де n, k – натуральні числа, що вводяться з клавіатури.

Вказівка: доцільно використати цикл з параметром і, що змінюється від 1 до n, всередині якого по-перше, будемо знаходити значення , по-друге, будемо збільшувати значення суми на знайдену величину y.

Задача 3. Знайти і вивести на екран всі тризначні числа, які діляться на кожну із своїх цифр.

Примітка: не забувайте, що на нуль ділити не можна!





Схожі:

Тема: „Вказівки повторення” iconТема: Повторення. Ми, нове покоління

Тема: „Вказівки повторення” iconУрок української мови в 4-класі Вчитель. Скиба Ірина Миколаївна Тема уроку
Тема уроку. Повторення вивченого про прикметник. Спостереження за роллю прикметників у мовленні
Тема: „Вказівки повторення” iconМетодичні рекомендації, вказівки, розробки, над якими працюють викладачі. № п/п Тема розробки Дисципліна Прізвище, ім’я, По батькові
Методичні вказівки до лабораторних занять для студентів усіх спеціальностей денної форми навчання
Тема: „Вказівки повторення” iconН.І. Якимцева. 01 вересня 2010 р
Тема Повторення і систематизація вивченого матеріалу за курс основної школи (10 годин)
Тема: „Вказівки повторення” iconН.І. Якимцева. 01 вересня 2010 р
Тема Повторення і систематизація вивченого матеріалу за курс основної школи (9 годин)
Тема: „Вказівки повторення” iconМатематика (науково-педагогічний проект «Росток»)
Тема. Повторення та закріплення вивченого матеріалу. Підготовка до контрольної роботи
Тема: „Вказівки повторення” iconТема. Здорова їжа
Повторення слів. (Вчитель демонструє продукти, які знаходяться в корзині, а учні називають їх англійською мовою)
Тема: „Вказівки повторення” iconТема Дата
Повторення вивченого в 10 класі. Стилістика як розділ науки про мову. Фонетичні, лексичні, фразеологічні засоби стилістики
Тема: „Вказівки повторення” iconТема:Інформація та повідомлення. Інформаційні процеси
Навчальна повторення та закріплення, уточнення та поглиблення попередньо засвоєних знань, умінь і навичок
Тема: „Вказівки повторення” iconКонспект уроку по темі: Повторення
«Повторення відомостей про звичайні дроби. Звичайні дроби з однаковими знаменниками.»
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи