назад                               УРОКИ

  1. Лінійні алгоритми. Завдання для самостійної роботи 1
  2. Алгоритми з розгалуженням. Завдання для самостійної роботи 2
  3. Циклічні алгоритми. Завдання для самостійної роботи 3
  4. Процедури і функції. Завдання для самостійної роботи 4
  5. Одновимірні масиви. Завдання для самостійної роботи 5
  6. Двовимірні масиви. Завдання для самостійної роботи 6
  7. Символи. Завдання для самостійної роботи 7
  8. Рядки.  Завдання для самостійної роботи 8


Приклади найпростіших задач

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

У програмах з розгалуженням за допомогою операторів IF та CASE, в залежності від деяких умов, можуть виконуватись не всі оператори, що записані у програмі.

Досить часто у програмах потрібно деяку кількість операторів виконати декілька разів. Для цього використовують оператори циклів. Оператори циклу бувають двохвидівз параметром (FOR) та з умовою (WHILE, REPEAT). Оператор циклу з параметром використовують, якщо заздалегідь відомо скільки разів потрібно виконувати деякі оператори.

Приклади

  1. Надрукувати літеру О зірочками.
    Щоб надрукувати цю літеру, потрібно спочатку надрукувати п’ять зірочок, це виконує оператор writeln('*****'). Потім потрібно вивести на екран зірочку, три пробіли, зірочку. Це виконує оператор writeln('*   *'). Цей оператор потрібно виконати 3 рази. Щоб вказати це, перед оператором writeln('*   *') ставиться оператор for i:=1 to 3 do, який вказує, що змінна i по черзі приймає значення 1, 2, 3. Цих значень три. Тому оператор (його виділено), що стоїть після do, буде виконуватись три рази. Після цього знов потрібно вивести п’ять зірочок, це виконує оператор writeln('*****').
    Програма   Екран   
     var i:byte;
    begin
     writeln('*****');
     for i:=1 to 3 do
     writeln('*   *');
     writeln('*****');
    end.
     *****
     *   *
     *   *
     *   *
     *****
  2. Надрукувати ялинку зірочками.
    Щоб надрукувати ялинку потрібно надрукувати 3 трикутника. 
    Малювання одного трикутника:
    • два пробіли, зірочка, два пробіли, writeln('  *  ');
    • пробіл, три зірочки, пробіл, writeln(' *** ');
    • п’ять зірочок, writeln('*****').
    Ці три оператори (їх виділено) потрібно виконати 3 рази. Щоб вказати, що повторювати потрібно не один, а три оператори, їх беруть у операторні дужки: перед першим ставлять begin, після останнього ставлять end
    Програма   Екран   
     var i:byte;
    begin
     for i:=1 to 3 do
     begin
       writeln(' * ');
       writeln(' *** ');
       writeln('*****');
     
    end;
    end.
       *
      ***
     *****
       *
      ***
     *****
       *
      ***
     *****
  3. Надрукуйте число 20 у стовпчик 5 раз.
    Щоб вивести на екран число 20 використовують оператор writeln(20). Щоб зробити це 5 раз, перед цим оператором ставлять оператор циклу for i:=1 to 5.
    Програма   Екран   
     var i:byte;
    begin
      for i:=1 to 5 do writeln(20);
    end.
    20
    20
    20
    20
    20
  4. Дано цілі числа K и N (N > 0). Вивести N раз число K.
    Дано числа K и N. Потрібно спочатку ввести значення ці змінні за допомогою оператору read(n, k)
    Щоб вивести на екран число Kвикористовують оператор writeln(K). Щоб зробити це N раз, перед цим оператором ставлять оператор циклу for i:=1 to N.
    Програма   Екран   
    Ввід Вивід
     var i,n,k:byte;
    begin
     read(n,k);
     for i:=1 to n do
       writeln(k);
    end.
    5 6 6
    6
    6
    6
    6
  5. Надрукуйте в рядок всі натуральні числа n<=20 :
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    У попередніх задачах змінна i використовувалась тільки для того, щоб вказати програмі, скільки разів буде повторюватись оператор або оператори. На екран значення цієї змінної ми не виводили. Але ми знаємо, що ця змінна по черзі приймає цілі значення від першого числа до останнього включно. Цей факт можна використати в цій програмі, якщо оператор, що повторюється, буде виводити значення цієї змінної через пробіл: write(i,' '). Щоб ця змінна приймала значення від 1 до 20 та цей оператор виконувався 20 разів, потрібно перед ним поставити оператор циклу for i:=1 to 20 do.
    Програма   Екран   
     var i:byte;
    begin
     for i:=1 to 20 do
       write(i,' ');
    end.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  6. Надрукуйте в стовпчик всі натуральні числа 300<=n<=310.
    Змінна (може бути будь-яке інше ім’я), яка називається параметром циклу, може приймати значення не тільки від 1 до якогось числа, але й від будь-якого другого цілого числа. Оператор, який повторюється, буде виконуватись стільки разів, скільки різних значень прийме параметр циклу (і). Для змінної i обрано тип integer, тому що значення 300, ... не відповідають типу byte.
    Програма   Екран   
     var i:integer;
    begin
     for i:=300 to 310 do
       writeln (i,' ');
    end.
    300 301 302 303 304 305 306 307 308 309 310
  7. Надрукуйте в рядок всі натуральні двохзначні числа.
    Натуральні двохзначні числа це 10, 11, 12, ...98, 99. 
    Тому програма проста.
    Програма   Екран   
     var i:byte;
    begin
     for i:=10 to 99 do
      write(i,' ');
    end.
    10 11 12 13 14...
    не будемо писати всі числа
    ... 95 96 97 98 99
  8. Надрукувати всі цілі числа з інтервалу [a, b].
    У цій програмі спочатку потрібно ввести значення a, b з клавіатури за допомогою оператору read(a, b), а потім все як у попередній програмі.
    Програма   Екран   
    Ввід Вивід
     ar i,a,b:integer;
    begin
     read(a,b);
     for i:=a to b do
      writeln(i);
    end.
    10 16 10
    11
    12
    13
    14
    15
    16
  9. Надрукуйте в зворотному порядку всі натуральні числа n<=20 :
    20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    У попередніх програмах ми використовували оператор for, в якому параметр циклу збільшується від першого числа до другого включно. Але існує оператор, у якому параметр зменшується. У цій програмі змінна приймає всі цілі значення від 20 до 1 включно.
    Програма   Екран   
     var i:byte;
    begin
     for i:=20 downto 1 do
       write(i,' ');
    end.
    20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
  10. Надрукувати перші 10 натуральних чисел та знайти їх суму.
    Для того, щоб надрукувати перші 10 натуральних чисел, використовується оператор write(i,' '). Щоб цей оператор виконувався 10 разів та щоб параметр циклу iприймав значення від 1 до 10, потрібно перед ним поставити оператор циклу for i:=1 to 10 do. Оператор накопичення суми s:=s+i теж потрібно виконувати 10 разів для різних значень i. Тобто 10 разів потрібно виконувати два оператори. Тому їх беруть у операторні дужки: перед першим оператором begin після другогоend. Початкове значення суми s:=0 потрібно присвоїти до початку циклу. Після виводу всіх чисел та накопичення суми, її потрібно вивести на екран операторомwriteln(s). Дуже важливо, щоб цей оператор стояв у програмі після циклу (після end), тому що надрукувати суму потрібно один раз. У прикладі 55 – сума перших 10 чисел.
    Програма   Екран   
     var i,s:integer;
    begin
     s:=0;
     for i:=1 to 10 do
     begin 
       write(i,' ');
       s:=s+i;

     end;
     writeln(s);
    end.
    1 2 3 4 5 6 7 8 9 10 55
  11. Дано дійсне a та натуральне n. Обчисліть an=a*a*…a
    У Паскалі немає функції піднесення до степеня. Тому будемо заміняти його множенням. Формула знаходження добутку: p:=1; p:=p*число. Ми знаходимо an, тому число=a і формула буде мати вигляд: p:=p*a. Ми знаходимо an, тому оператор p:=p*a потрібно виконати n раз. Для цього використовуємо оператор циклуfor i:=1 to n. Початкове значення p:=1 присвоюється перед циклом. Значення a, n вводяться з клавіатури оператором read. Типи змінних: n, i – натуральні, a – дійсне, тому p теж дійсне.
    Програма   Екран   
    Ввід Вивід
     var i,n:integer;a,p:real;
    begin
     read(a,n); p:=1;
     for i:=1 to n do p:=p*a;
     writeln(p:1:1);
    end.
    3 4 81.0
  12. Дано натуральне n. Обчисліть значення n!=1*2*3**n (читається n факторіал).
    Для обчислення факторіалу, як і у попередній програмі, використовується операція множення. Але у попередній програмі виконувалось множення на одне і теж саме число a. Для знаходження факторіалу спочатку потрібно помножити на 2, потім результат на 3, потім результат на 4 і т.д. Тобто у формулі p:=1; p:=p*число, число повинно змінюватись від 2 до n. У якості цього числа зручно використовувати параметр циклу for i:=2 to n do. Тоді оператор, який повторюється p:=p*i. Типи змінних: n, i – натуральні, p – дійсне, тому що значення факторіалу дуже швидко зростає.
    Програма   Екран   
    Ввід Вивід
     var i,n:integer;p:real;
    begin
     read(n); p:=1; 
     for i:=2 to n do p:=p*i; 
     writeln(p:1:0);
    end.
    10 3628800

     

    Структура оператору циклу з параметром

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

  13. З параметром i, що збільшується від start до finish (з кроком 1)
    • For i:=start to finish do 
      Begin s1; s2; s3; … end;
  14. З параметром i, що зменшується від start до finish (з кроком -1)
    • For i:=start downto finish do
      Begin s1; s2; s3; … end;
  15. Тут:
      For, to, downto, do – зарезервовані слова. 
      i – змінна 
      start, finish – сталі, змінні або вирази
      Begin, end – операторні дужки
      s1; s2; s3 – будь-якіоператори

    Термінологія

  16. Параметр циклу (у прикладі i) - будь-яка змінна цілого (byte, Integer, word, longint,…) або символьного типу (char).
  17. Початкове значення параметру (у прикладі start) – стала, змінна або вираз того ж типу, що й параметр.
  18. Кінцеве значення параметру (у прикладі finish) – стала, змінна або вираз того ж типу, що й параметр.
  19. Заголовок циклу вказує, скільки разів буде виконуватись тіло циклу. 
    Заголовок циклу:
    • For i:=start to finish do або
    • For i:= start downto finish do
  20. Тіло циклу – оператори, що повторюються.
    Тіло циклу – Begin s1; s2; s3; … end;
  21. Кількість витків циклу – кількість повторень тіла циклу.
  22. Написаний вище оператор І типу на блок-схемі відображається так:

    Написаний вище оператор ІI типу на блок-схемі відображається так:

    В першому операторі крок дорівнює 1, а в другому –1.

    Зауваження

  23. Параметр циклу автоматично по черзі приймає цілі значення від start до finish (для символьних параметрів приймає значення наступного символу з таблиціASCII).
  24. Скільки значень прийме параметр циклу від start до finish, стільки разів виконається тіло циклу.
  25. В операторі з параметром, що збільшується (For i:=start to finish do), щоб виконувалось тіло циклу потрібно, щоб start<=finish. Якщо start >finish, то помилки не буде? але тіло циклу виконуватись не буде.
    Фрагмент програми Результат роботи
    For i:=5 to 10 do 
    write(‘*’);
    ******
    For i:=10 to 5 do 
    write(‘*’);
    Такий фрагмент програми нічого не виведе на екран.
  26. В операторі з параметром, що зменшується (For i:=start downto finish do), щоб виконувалось тіло циклу потрібно, щоб start>=finish. Якщо start < finish, то помилки не буде, але тіло циклу виконуватись не буде.
    Фрагмент програми Результат роботи
    For i:=5 downto 1 do
    write(‘*’);
    *****
    For i:=1 downto 5 do
    write(‘*’);
    Такий фрагмент програми нічого не виведе на екран.
  27. Параметр циклу не можна змінювати у тілі циклу. Програма може зациклитись або деякі вітки циклу виконуватись не будуть. 
    Наприклад:
    Фрагмент програми Результат роботи
    For i:=1 to 3 do 
    Begin
    write(i,’  ‘);   i:=5;
    end;
    Програма зациклиться, вона надрукує 1, а потім буде завжди друкувати 6
    1 6 6 6 6…..
    For i:=1 to 3 do
    Begin 
    write(i,’  ‘); i:=3;
    end;
    Ця програма надрукує тільки число 1, бо виконає один виток, замість трьох
  28. Якщо програма зациклилась, потрібно натиснути Ctrl+break або Ctrl+Alt+Delete (викликати Диспетчер задач та зняти задачу).
  29. Якщо start та finish – вирази, то їх значення обчислюються один раз, перед початком циклу і змінення їх у тілі циклу не впливає на кількість витків циклу.
    Фрагмент програми Результат роботи
    F:=3; 
    For i:=1 to F do 
    Begin
    write(’*‘); F:=10;
    end;
    ***
    Програма надрукує 3 зірочки, хоч у тілі циклу є оператор F:=10.

     

close