Published using Google Docs
Інформатика 10 (АП) Урок 57
Updated automatically every 5 minutes

Урок  57                                                                                Інформатика (АП)


Вкладені цикли


Мета.

Навчальна. повторити з учнями різновиди циклів, та вивчити вкладені цикли, формувати вміння та  навички створювати і реалізовувати програми з вкладеними циклами мовою Паскаль.

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

Виховна. Виховувати наполегливість, естетичність у оформленні, грамотно висловлювати свої думки, вміння раціонально використовувати час.

Тип уроку. Засвоєння нових знань, вмінь і навичок.

План

  1. Перевірка домашнього завдання.
  2. Актуалізація опорних знань.
  3. Вкладені цикли.
  4. Розв’язування задач.
  5. Підсумки уроку.
  6. Домашнє завдання.

                                                                 

 Пам’ятка для учня!

  1. Пригадайте правила техніки безпеки при роботі з ПК.
  2. Через кожні 15 хв. виконуйте вправи для очей та для зняття м’язової втоми.

       Хід уроку


1. Перевірка домашнього завдання.

        1. Наявність.

     2. Питання.


2. Актуалізація опорних знань.

У Паскалі передбачено три різновиди операторів циклу: цикл із передумовою, цикл з післяумовою, цикл із лічильником (із покроковою зміною аргументу). Також реалізована робота із вкладеними циклами.

І. Питання.

  1. Поясніть синтаксис і правила виконання оператора циклу з передумовою.
  2. Поясніть синтаксис і правила виконання оператора циклу з післяумовою.
  3. Поясніть структуру і правила виконання оператора циклу з параметром.

        II. Вказівка повторення з передумовою (Цикл— while )

Вказівка повторення з передумовою — while призначена для організації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки залишається істинною умова виконання циклу.

Значення службового слова while — поки

Синтаксис оператора while:

while <умова> do <оператор>;

де <умова> - вираз логічного типу;

<оператор> - простий або складений оператор Паскаля.

Вказівка повторення з післяумовою (Цикл-repeat-until)

Вказівка повторення з післяумовою призначена для органі­зації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки умова виконання циклу не стане істинною.

Синтаксис оператора repeat:

repeat <оператори> until <умова>;

де <умова> - вираз логічного типу;

<оператор> - послідовність операторів Паскаля, яка складає тіло циклу.

Вказівка повторення з параметром виконується таким чином:

1. Вказівка For — to — do.

Наприклад.

for і:=K to N do

begin

 <вказівка1>;

 <вказівка2>;

 …...............

  <вказівка N>;

end;

Параметру циклу і присвоюється початкове значення К. Він порівнюється з кінцевим значенням N. Якщо К<=N, то виконуєть­ся тіло вказівки повторення. Значення К автоматично збільшуєть­ся на 1 (тобто стає наступним елементом) і знову порівнюється зі значенням N. Якщо під час перевірки отримаємо, що К>N, то виконання вказівки повторення припиняється і виконується на­ступна після неї вказівка програми. Якщо під час першого порів­няння К і N виявиться що К>N, то тіло вказівки не виконується жодного разу.

2. Вказівка For — downto — do.

Наприклад.

for і:=К downto to N do

begin

<вказівка1>;

<вказівка2>;

…...............

<вказівка N>;

end;

Параметру циклу і присвоюється початкове значення К. Він порівнюється з кінцевим значенням N. Якщо К>=N, то виконуєть­ся тіло вказівки повторення. Значення К автоматично зменшується на 1 (тобто стає попереднім елементом) і знову порівнюється зі значенням N. Якщо під час перевірки отримаємо, що К<N, то виконання вказівки повторення припиняється і виконується наступна після неї вказівка програми. Якщо під час першого порівнення К і N виявиться, що К<N, то тіло вказівки не виконується жодного разу.


3. Вкладені цикли.

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

Вкладення циклів використовується зокрема при розв'язуванні таких задач:

  1. задачі на перебір варіантів;
  2. табулювання функцій;
  3. обробка двовимірних масивів.

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

Правило вкладення циклів: внутрішній цикл цілком укладається в тіло зовнішнього циклу.

Приклад № 1.

Обчислити значення змінної Y=2*K+N при всіх значеннях змінних N=1, 2, 3 і K=2, 4, 6, 8.

Алгоритм обчислення:

1. Для початку нам потрібно задати наші змінні. Як ми бачимо, змінні N і К у нас відомі N=1, 2, 3 і K=2, 4, 6, 8, а змінна Y залежить від них.

2. Якщо перебирати всі значення N і K, ми повинні отримати 12 значень змінної Y.

Скласти програму можна в такий спосіб: для кожного значення N перебрати всі значення К від 2 до 8, тобто N використати як параметр зовнішнього циклу, К - як параметр внутрішнього циклу.

3. Тоді записуємо внутрішній цикл з умовою, поки k<=8 (тобто поки не пройшлися по всіх числах) і обраховуємо значення змінної Y.

4. Виводимо все на екран.

5. Збільшуємо значення k на 2.

6. Завершуємо програму.

Блок-схема алгоритму приведена на малюнку.

 

Program priklad_1;

var n, k, y: integer;

begin

for n:=1 to 3 do begin

k:=2;

while k<=8 do begin

y:=2*k+n;

writeln(‘n=’,’  k=’,’  y=’);

k:=k+2;

end;

end;

end.

Параметр N змінюється з кроком 1, тому зовнішній цикл організований з використанням оператора For; параметр К змінюється з кроком 2, тому внутрішній цикл є циклом While.

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

N

1

1

1

1

2

2

2

2

3

3

3

3

K

2

4

6

8

2

4

6

8

2

4

6

8

Y

5

9

13

17

6

10

14

18

7

11

15

19

Приклад 2.

Програма друкує на екрані таблицю Піфагора:

  Var і, j : integer;

Begin

For I := 1 To 10 Do Begin

For 3 := 1 To 10 Do

write (і*j:3);

WriteLn;

End;

End.

Приклад 3.

Програма для обчислення  значень функції

Y=l+x/1!+х2/2!+х3/3!+... для х = 1..5.

Y обчислюється з точністю є=0.001, тобто обчислення членів послідовності А (A1=x/1!; А2= х2/2! і т.д.) продовжується доти, поки А>0.001.

    var і, х : integer;   A, Y : Real;

Begin

For X := 1 To 5 Do Begin

Y := 1;

A := 1;

і := 0;

While A > 0.001 Do Begin

і := і + 1;

A := A * X / і;

Y := Y + A

End;

WriteLn ('X-', X,   '   Y=', Y:6:3)

End

End.


4. Розв’язування задач.

Задача. Вивести на екран всі прості числа на інтервалі [А; В].

1.  Простими є числа (крім 1), які діляться без остачі тільки на 1 і на самого себе.

Розглянемо алгоритм перевірки, чи є число С простим:

 

2. Запишемо програму для визначення, чи є число С простим. Зве­рніть увагу: задания значення змінної С навмисно пропущене.

   var А, В, С, І : Integer;   Ргар : Boolean;

Begin

    { задания значення змінної С J

     Ргар := False;

     For I := 2 To С div 2 Do

if С Mod I = 0 Then Prap := True;

   If Not Prap   Then WriteLn (C, ‘- просте число’)

   Else WriteLn (C,’ - складене число’);

End.

3. За умовою задачі потрібно перебрати всі числа в інтервалі [А; В], тобто С послідовно набуває значень з діапазону А..В. Для кожного С від А до В потрібно виконати алгоритм перевірки, чи є число С простим.

4.  Внесемо зміни до програми. Значення А і В вводяться з клавіатури:

      Var А, В, С, І : integer;   Prap : Boolean;

Begin

      write ('А, B =>');   ReadLn (A, B);

5.           Додаємо керуючий рядок циклу For, тілом циклу якого є про­грамний код перевірки, чи є число С простим: в

For С := А то В Do Begin

Prap := False;

For I := 2 To С div 2 Do

If С Mod I = 0 Then Prap := True;

         If Not Prap     Then WriteLn (C, ' - просте число');

         End;

6.        Збережіть файл. Виконайте програму для різних значень А і В.

Задачі з вкладеними циклами


4. Підсумки уроку.

  1. Чи може оператор, повторюваний у циклі, сам бути циклом?
  2. Що таке вкладені цикли?
  3. У чому полягає правило вкладення циклів ?
  4. Наведіть приклади задач, при розв'язуванні яких виникає необхід­ність використання вкладених циклів.
  5. Проаналізуйте циклічну конструкцію:

For і;=1 То 2 Do

Forj:=1 То 3 Do

Fork:=--1 То 3 Do WriteLn (і, j, к);

а) назвіть тіло циклу по i,  j, к;

б) скільки разів буде виконаний цикл по і, j, к?

в) що надрукує програма ?

  1. Проаналізуйте циклічну програму:

Program Р5;

  vаr і, у, k: Integer;

Begin

   For i:=1 To 3 Do Begin

j:=2;

While j<=8 Do Begin

      k:=i+j;

WriteLn (i: 4, j: 4, k: 4);

j:=j+2;

End

     End

End.

а) Назвіть тіло циклу по i, j.

б) Скільки разів буде виконаний зовнішній цикл? Внутрішній?

в) Заповніть таблицю зміни значень змінних і, j, k.

  1. Проаналізуйте циклічну програму:

Program Р6;

    var i,j:integer;

Begin

    і:=0;

    While l<10 Do Begin

{*} J:=0;

While J<0 Do Begin

      {**}   Write(i*10 + j: 4);

      j:=j+1;

End {while J};

WriteLn;

  End{while i};

End.

а) скільки разів виконається рядок {*}? рядок {**}?

б) що виведе на екран програма ?

в) перепишіть програму за допомогою FOR.

  1. Запишіть циклічну конструкцію, в результаті виконання якої на ек­рані будt надруковано:

0        0

0        1

1        0

1        1


5. Домашнє завдання.

1.  Вивчити конспект.

2. Знайти і вивести на екран всі тризначні числа, які діляться на кожну із своїх цифр. Примітка: памятайте, що на нуль ділити не можна!