Відмінності між версіями «Вказівка повторення та її опис мовою блок-схем та мовою програмування.43 1»

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук
Рядок 1: Рядок 1:
 
'''Тема уроку:''' "Вказівка повторення та її опис мовою блок-схем та мовою програмування."
 
'''Тема уроку:''' "Вказівка повторення та її опис мовою блок-схем та мовою програмування."
Мета уроку: Дати поняття про вказівку повторення та її використання при розв'язуванні задач, про типи циклів та їх оформлення мовою програмування Паскаль та мовою блок-схем.  
+
 
Тип уроку: Лекційний.  
+
'''Мета уроку:''' Дати поняття про вказівку повторення та її використання при розв'язуванні задач, про типи циклів та їх оформлення мовою програмування Паскаль та мовою блок-схем.
Теоретичний матеріал:
+
'''
 +
Тип уроку:''' Лекційний.
 +
 +
'''Теоретичний матеріал:'''
 +
 
 
Цикл - це послідовність операторів, що може виконуватися більше одного разу. Він використовується при розв'язуванні таких задач, де необхідно повторити деяку послідовність команд більше одного разу.
 
Цикл - це послідовність операторів, що може виконуватися більше одного разу. Він використовується при розв'язуванні таких задач, де необхідно повторити деяку послідовність команд більше одного разу.
 +
 
Відомі два типи команди повторення, що суттєво розрізняються:
 
Відомі два типи команди повторення, що суттєво розрізняються:
 +
 
- цикл з відомою заздалегідь кількістю повторів;
 
- цикл з відомою заздалегідь кількістю повторів;
 +
 
- цикл з невідомою кількістю повторів.
 
- цикл з невідомою кількістю повторів.
 +
 
Щоб це пояснити, розглянемо приклад. Вчителька в першому класі дає дітям завдання: "Діти, напишіть, будь ласка, десять букв "А" та рядочок букв "Б"". Чим відрізняються ці два завдання? В першому випадку зразу ж відомо, скільки разів необхідно повторювати виконання команди "напишіть букву А", а в другому - кількість літер "Б" буде залежати від великої кількості різних факторів: почерку дитини, розміру букв, відстані, що залишається між буквами тощо. Ясно, що в першому випадку ми можемо чітко обумовити кількість повторів, а в другому - необхідно знайти таку умову, перевіряючи яку, дитина зможе закінчити свою роботу.
 
Щоб це пояснити, розглянемо приклад. Вчителька в першому класі дає дітям завдання: "Діти, напишіть, будь ласка, десять букв "А" та рядочок букв "Б"". Чим відрізняються ці два завдання? В першому випадку зразу ж відомо, скільки разів необхідно повторювати виконання команди "напишіть букву А", а в другому - кількість літер "Б" буде залежати від великої кількості різних факторів: почерку дитини, розміру букв, відстані, що залишається між буквами тощо. Ясно, що в першому випадку ми можемо чітко обумовити кількість повторів, а в другому - необхідно знайти таку умову, перевіряючи яку, дитина зможе закінчити свою роботу.
Примітка: Дайте дітям можливість знайти цю умову та придумати свої подібні варіанти циклів.  
+
 
 +
Примітка: Дайте дітям можливість знайти цю умову та придумати свої подібні варіанти циклів.
 +
 
В мові програмування Паскаль існує три типи циклів: for, repeat та while. Якщо кількість повторів відома заздалегідь, використовується оператор for, якщо кількість повторів невідома, застосовуються оператори repeat або while.
 
В мові програмування Паскаль існує три типи циклів: for, repeat та while. Якщо кількість повторів відома заздалегідь, використовується оператор for, якщо кількість повторів невідома, застосовуються оператори repeat або while.
Оператор повтору for.  
+
Оператор повтору for.
 +
 
Цей оператор повторення інакше називається циклом з параметром (або лічильником). Він складається із заголовка та тіла циклу та може бути поданий у двох форматах.
 
Цей оператор повторення інакше називається циклом з параметром (або лічильником). Він складається із заголовка та тіла циклу та може бути поданий у двох форматах.
 +
 
1. for <параметр циклу> := <S1> to <S2> do
 
1. for <параметр циклу> := <S1> to <S2> do
 +
 
begin
 
begin
<серія>;  
+
 
 +
<серія>;
 +
 
end;
 
end;
 +
 
2. for <параметр циклу> := <S1> downto <S2> do
 
2. for <параметр циклу> := <S1> downto <S2> do
 +
 
begin
 
begin
<серія>;  
+
 
 +
<серія>;
 +
 
end;
 
end;
 +
 
де S1 і S2 - вирази, що визначають відповідно початкове і кінцеве значення параметру циклу;
 
де S1 і S2 - вирази, що визначають відповідно початкове і кінцеве значення параметру циклу;
 +
 
for.. do - заголовок циклу;
 
for.. do - заголовок циклу;
 +
 
<серія> - тіло циклу. Тіло циклу може бути простим або складеним.
 
<серія> - тіло циклу. Тіло циклу може бути простим або складеним.
 +
 
Цей оператор забезпечує виконання тіла циклу доти, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого.
 
Цей оператор забезпечує виконання тіла циклу доти, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого.
Параметр циклу, його початкове і кінцеве значення повинні належати до одного типу даних. При цьому можливо використання будь-якого скалярного типу, крім дійсного, тобто цілого (integer, byte, word, longint), булівського (boolean) та символьного (char). Значення параметра циклу послідовно збільшується при for... to або зменшується при for... downto на одиницю при кожному повторі.  
+
Параметр циклу, його початкове і кінцеве значення повинні належати до одного типу даних. При цьому можливо використання будь-якого скалярного типу, крім дійсного, тобто цілого (integer, byte, word, longint), булівського (boolean) та символьного (char). Значення параметра циклу послідовно збільшується при for... to або зменшується при for... downto на одиницю при кожному повторі.
 +
 
Кількість повторів тіла циклу в операторі for можна визначити за наступною таблицею:
 
Кількість повторів тіла циклу в операторі for можна визначити за наступною таблицею:
 +
 
Оператор S1 < S2 S1 = S2 S1 > S2
 
Оператор S1 < S2 S1 = S2 S1 > S2
 +
 
for...to S2-S1+1 разів 1 раз Не виконується
 
for...to S2-S1+1 разів 1 раз Не виконується
 +
 
for...downto Не виконується 1 раз S1-S2+1 разів
 
for...downto Не виконується 1 раз S1-S2+1 разів
 +
 
В операторі for після do може знаходитися складений оператор, в тілі якого заборонені оператори, що змінюють значення параметра циклу. Після нормального завершення циклу значення параметра циклу дорівнює кінцевому значенню.
 
В операторі for після do може знаходитися складений оператор, в тілі якого заборонені оператори, що змінюють значення параметра циклу. Після нормального завершення циклу значення параметра циклу дорівнює кінцевому значенню.
 
Цикл може не виконатися зовсім (дивись таблицю), але ніколи не може зациклитись на відміну від наступних двох операторів повторення.
 
Цикл може не виконатися зовсім (дивись таблицю), але ніколи не може зациклитись на відміну від наступних двох операторів повторення.
 +
 
Приклад програми з оператором For:
 
Приклад програми з оператором For:
 +
 
Умова задачі. Знайти суму всіх натуральних чисел від 1 до 100.
 
Умова задачі. Знайти суму всіх натуральних чисел від 1 до 100.
 +
 
Розв'язок:
 
Розв'язок:
 +
 
Program Example_1;  
 
Program Example_1;  
Uses crt;  
+
 
  Var Sum, i : integer;  
+
Uses crt;
Begin  
+
   
    Clrscr;  
+
Var Sum, i : integer;
    Sum := 0;  
+
        For i := 1 to 10 do  
+
Begin
                Sum := Sum + i;  
+
    Writeln(‘Sum = ‘, Sum);  
+
Clrscr;  
    Readkey;  
+
 
End.  
+
Sum := 0;
 +
 +
For i := 1 to 10 do
 +
 +
Sum := Sum + i;
 +
 +
Writeln(‘Sum = ‘, Sum);
 +
 +
Readkey;  
 +
 
 +
End.
 +
 
Оператор повтору repeat
 
Оператор повтору repeat
 +
 
Наступний оператор циклу складається з заголовка (repeat), тіла та умови закінчення (until).
 
Наступний оператор циклу складається з заголовка (repeat), тіла та умови закінчення (until).
 +
 
Формат опису:
 
Формат опису:
 +
 
repeat
 
repeat
 +
 
<серія>
 
<серія>
 +
 
until <умова>;
 
until <умова>;
Умова - вираз булівського типу. Про умови ми з вами вже говорили в темі "Команда розгалуження" і всі особливості їх застосування та оформлення в цій команді нічим не відрізняються від попереднього випадку.  
+
 
 +
'''Умова''' - вираз булівського типу. Про умови ми з вами вже говорили в темі "Команда розгалуження" і всі особливості їх застосування та оформлення в цій команді нічим не відрізняються від попереднього випадку.
 +
 
В цьому циклі спочатку виконується серія (тіло циклу), а потім перевіряється умова виходу з циклу. Саме тому ця команда повторення інакше називається циклом із післяумовою. Якщо умова виходу з циклу хибна (false), цикл активізується ще раз, якщо результат істинний (true), відбувається вихід із циклу.
 
В цьому циклі спочатку виконується серія (тіло циклу), а потім перевіряється умова виходу з циклу. Саме тому ця команда повторення інакше називається циклом із післяумовою. Якщо умова виходу з циклу хибна (false), цикл активізується ще раз, якщо результат істинний (true), відбувається вихід із циклу.
 +
 
Мовою блок-схем цей цикл описується наступним чином:
 
Мовою блок-схем цей цикл описується наступним чином:
 
   
 
   
 
Цей оператор повтору має наступні характерні риси:
 
Цей оператор повтору має наступні характерні риси:
 +
 
- використовується у випадках, коди користувачу не відома заздалегідь кількість повторень;
 
- використовується у випадках, коди користувачу не відома заздалегідь кількість повторень;
 +
 
- тіло циклу виконується хоча б один раз;
 
- тіло циклу виконується хоча б один раз;
 +
 
- тіло циклу виконується, поки умова хибна false;
 
- тіло циклу виконується, поки умова хибна false;
- у тілі може знаходитися будь-яка кількість операторів без операторних дужок begin... end;  
+
 
- принаймні один оператор у тілі циклу повинен змінювати значення умови, інакше цикл буде виконуватися нескінченно.  
+
- у тілі може знаходитися будь-яка кількість операторів без операторних дужок begin... end;
 +
 +
- принаймні один оператор у тілі циклу повинен змінювати значення умови, інакше цикл буде виконуватися нескінченно.
 +
 
Для передчасного виходу з циклу можна присвоїти параметру циклу значення, що виходить за діапазон дозволених значень.
 
Для передчасного виходу з циклу можна присвоїти параметру циклу значення, що виходить за діапазон дозволених значень.
 
Приклад програми з оператором Repeat:
 
Приклад програми з оператором Repeat:
Умова задачі. Перевірка коректності введення. Дани три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.  
+
 
 +
'''Умова задачі.''' Перевірка коректності введення. Дани три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.
 +
 
Розв'язок:
 
Розв'язок:
Program Example_2;  
+
 
  Uses crt;  
+
Program Example_2;
  Var a,b,c : real;  
+
Begin  
+
Uses crt;
  Clrscr;  
+
  Repeat  
+
Var a,b,c : real;
    Write(‘Введіть довжини сторін трикутника: ’);  
+
    Readln(a,b,c);  
+
Begin
  Until (a>0)and(b>0)and(c>0)and(a+b+c)=180;  
+
End.  
+
Clrscr;
 +
 +
Repeat
 +
 +
Write(‘Введіть довжини сторін трикутника: ’);
 +
 +
Readln(a,b,c);
 +
 +
Until (a>0)and(b>0)and(c>0)and(a+b+c)=180;
 +
 +
End.
 +
 
Оператор повтору while
 
Оператор повтору while
Оператор while аналогічний оператору repeat, але перевірка умови виконання тіла циклу робиться на самому початку оператора, тому цикл інакше називається циклом із предумовою.  
+
 
 +
Оператор while аналогічний оператору repeat, але перевірка умови виконання тіла циклу робиться на самому початку оператора, тому цикл інакше називається циклом із предумовою.
 +
 
Формат опису:
 
Формат опису:
 +
 
while <умова> do  
 
while <умова> do  
 +
 
begin
 
begin
 +
 
<серія>;
 
<серія>;
 +
 
end;
 
end;
Умова - булівський вираз, а серія - простий або складений оператор. Перед кожним виконанням тіла циклу обчислюється значення виразу умови. Якщо результат являється істинним (true), тіло циклу виконується, у протилежному випадку відбувається вихід із циклу і перехід до першого після while оператору. Якщо перед першим виконанням циклу значення виразу було хибним (false), то тіло циклу взагалі не виконується і відбувається перехід на наступний оператор.
+
 
 +
'''Умова''' - булівський вираз, а серія - простий або складений оператор. Перед кожним виконанням тіла циклу обчислюється значення виразу умови. Якщо результат являється істинним (true), тіло циклу виконується, у протилежному випадку відбувається вихід із циклу і перехід до першого після while оператору. Якщо перед першим виконанням циклу значення виразу було хибним (false), то тіло циклу взагалі не виконується і відбувається перехід на наступний оператор.
 +
 
 
Мовою блок-схем цей цикл описується наступним чином:
 
Мовою блок-схем цей цикл описується наступним чином:
 +
 
   
 
   
 
Як і в попередньому випадку, програміст сам повинен подбати про переприсвоєння значення змінної, що визначає умову виходу з циклу, інакше він буде нескінченним.
 
Як і в попередньому випадку, програміст сам повинен подбати про переприсвоєння значення змінної, що визначає умову виходу з циклу, інакше він буде нескінченним.
 +
 
Приклад програми з оператором While:
 
Приклад програми з оператором While:
Умова задачі. Дано натуральне число N. Визначити кількість цифр в числі.
+
 
Розв'язок:  
+
'''Умова задачі.''' Дано натуральне число N. Визначити кількість цифр в числі.
Program Example_3;  
+
Розв'язок:
  Uses crt;  
+
  Var N : longint; Counter : integer;  
+
Program Example_3;
 +
 +
Uses crt;
 +
 +
Var N : longint; Counter : integer;  
 +
 
 +
Begin
 +
 
 +
Clrscr;
 +
 +
Write(‘Введіть число: ’);
 +
 +
Readln(N);
 +
 +
Counter := 0;
 +
 +
While N > 0 do
 +
 
 
Begin  
 
Begin  
  Clrscr;
+
 
  Write(‘Введіть число: ’);
+
Counter:=Counter+1; {Підрахунок кількості цифр}
  Readln(N);
+
  Counter := 0;
+
N:=N div 10;        {Відкидання останньої цифри}
  While N > 0 do
+
  Begin
+
End;
    Counter:=Counter+1; {Підрахунок кількості цифр}  
+
  N:=N div 10;        {Відкидання останньої цифри}  
+
Writeln(‘Кількість цифр у заданому числі дорівнює’, N);
  End;  
+
  Writeln(‘Кількість цифр у заданому числі дорівнює’, N);  
+
Readkey;
  Readkey;  
+
End.  
+
End.
 +
 
Домашнє завдання:
 
Домашнє завдання:
 +
 
• прочитати сторінки 83 - 89 з запропонованого підручника;
 
• прочитати сторінки 83 - 89 з запропонованого підручника;
• вивчити означення, що прочитані на лекції.  
+
 
 +
• вивчити означення, що прочитані на лекції.
 +
  
 
[[Категорія:Інформатика]][[Категорія:Бази даних Конспекти уроків]]
 
[[Категорія:Інформатика]][[Категорія:Бази даних Конспекти уроків]]

Версія за 19:25, 6 червня 2010

Тема уроку: "Вказівка повторення та її опис мовою блок-схем та мовою програмування."

Мета уроку: Дати поняття про вказівку повторення та її використання при розв'язуванні задач, про типи циклів та їх оформлення мовою програмування Паскаль та мовою блок-схем. Тип уроку: Лекційний.

Теоретичний матеріал:

Цикл - це послідовність операторів, що може виконуватися більше одного разу. Він використовується при розв'язуванні таких задач, де необхідно повторити деяку послідовність команд більше одного разу.

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

- цикл з відомою заздалегідь кількістю повторів;

- цикл з невідомою кількістю повторів.

Щоб це пояснити, розглянемо приклад. Вчителька в першому класі дає дітям завдання: "Діти, напишіть, будь ласка, десять букв "А" та рядочок букв "Б"". Чим відрізняються ці два завдання? В першому випадку зразу ж відомо, скільки разів необхідно повторювати виконання команди "напишіть букву А", а в другому - кількість літер "Б" буде залежати від великої кількості різних факторів: почерку дитини, розміру букв, відстані, що залишається між буквами тощо. Ясно, що в першому випадку ми можемо чітко обумовити кількість повторів, а в другому - необхідно знайти таку умову, перевіряючи яку, дитина зможе закінчити свою роботу.

Примітка: Дайте дітям можливість знайти цю умову та придумати свої подібні варіанти циклів.

В мові програмування Паскаль існує три типи циклів: for, repeat та while. Якщо кількість повторів відома заздалегідь, використовується оператор for, якщо кількість повторів невідома, застосовуються оператори repeat або while. Оператор повтору for.

Цей оператор повторення інакше називається циклом з параметром (або лічильником). Він складається із заголовка та тіла циклу та може бути поданий у двох форматах.

1. for <параметр циклу> := <S1> to <S2> do

begin

<серія>;

end;

2. for <параметр циклу> := <S1> downto <S2> do

begin

<серія>;

end;

де S1 і S2 - вирази, що визначають відповідно початкове і кінцеве значення параметру циклу;

for.. do - заголовок циклу;

<серія> - тіло циклу. Тіло циклу може бути простим або складеним.

Цей оператор забезпечує виконання тіла циклу доти, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого. Параметр циклу, його початкове і кінцеве значення повинні належати до одного типу даних. При цьому можливо використання будь-якого скалярного типу, крім дійсного, тобто цілого (integer, byte, word, longint), булівського (boolean) та символьного (char). Значення параметра циклу послідовно збільшується при for... to або зменшується при for... downto на одиницю при кожному повторі.

Кількість повторів тіла циклу в операторі for можна визначити за наступною таблицею:

Оператор S1 < S2 S1 = S2 S1 > S2

for...to S2-S1+1 разів 1 раз Не виконується

for...downto Не виконується 1 раз S1-S2+1 разів

В операторі for після do може знаходитися складений оператор, в тілі якого заборонені оператори, що змінюють значення параметра циклу. Після нормального завершення циклу значення параметра циклу дорівнює кінцевому значенню. Цикл може не виконатися зовсім (дивись таблицю), але ніколи не може зациклитись на відміну від наступних двох операторів повторення.

Приклад програми з оператором For:

Умова задачі. Знайти суму всіх натуральних чисел від 1 до 100.

Розв'язок:

Program Example_1;

Uses crt;

Var Sum, i : integer;

Begin

Clrscr;

Sum := 0;

For i := 1 to 10 do

Sum := Sum + i;

Writeln(‘Sum = ‘, Sum);

Readkey;

End.

Оператор повтору repeat

Наступний оператор циклу складається з заголовка (repeat), тіла та умови закінчення (until).

Формат опису:

repeat

<серія>

until <умова>;

Умова - вираз булівського типу. Про умови ми з вами вже говорили в темі "Команда розгалуження" і всі особливості їх застосування та оформлення в цій команді нічим не відрізняються від попереднього випадку.

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

Мовою блок-схем цей цикл описується наступним чином:

Цей оператор повтору має наступні характерні риси:

- використовується у випадках, коди користувачу не відома заздалегідь кількість повторень;

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

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

- у тілі може знаходитися будь-яка кількість операторів без операторних дужок begin... end;

- принаймні один оператор у тілі циклу повинен змінювати значення умови, інакше цикл буде виконуватися нескінченно.

Для передчасного виходу з циклу можна присвоїти параметру циклу значення, що виходить за діапазон дозволених значень. Приклад програми з оператором Repeat:

Умова задачі. Перевірка коректності введення. Дани три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.

Розв'язок:

Program Example_2;

Uses crt;

Var a,b,c : real;

Begin

Clrscr;

Repeat

Write(‘Введіть довжини сторін трикутника: ’);

Readln(a,b,c);

Until (a>0)and(b>0)and(c>0)and(a+b+c)=180;

End.

Оператор повтору while

Оператор while аналогічний оператору repeat, але перевірка умови виконання тіла циклу робиться на самому початку оператора, тому цикл інакше називається циклом із предумовою.

Формат опису:

while <умова> do

begin

<серія>;

end;

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

Мовою блок-схем цей цикл описується наступним чином:


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

Приклад програми з оператором While:

Умова задачі. Дано натуральне число N. Визначити кількість цифр в числі. Розв'язок:

Program Example_3;

Uses crt;

Var N : longint; Counter : integer;

Begin

Clrscr;

Write(‘Введіть число: ’);

Readln(N);

Counter := 0;

While N > 0 do

Begin

Counter:=Counter+1; {Підрахунок кількості цифр}

N:=N div 10; {Відкидання останньої цифри}

End;

Writeln(‘Кількість цифр у заданому числі дорівнює’, N);

Readkey;

End.

Домашнє завдання:

• прочитати сторінки 83 - 89 з запропонованого підручника;

• вивчити означення, що прочитані на лекції.