images.jpg

 

 

Попередня сторінка          Зміст           Наступна сторінка          Електронні посібники ВНТУ

 

 

 

ЛАБОРАТОРНА РОБОТА № 2

РОЗРОБКА СТУКТУРОВАНИХ ПРОГРАМ

images (13).jpg
 

 

Мета роботи

  • Засвоїти способи застосування умовних операцій if-else.
  • Навчитись використовувати оператор вибору switch.
  • Оволодіти навичками щодо використання операторів різних видів операторів циклу: цикли з параметрами for, цикли з умовою while, цикли з післяумовою do-while.
  • Дослідити роботу операторів керування: break, continue, return, goto.

 

 
 images (47).jpg
        

       ТЕОРЕТИЧНІ ВІДОМОСТІ

 

Синтаксис основних операторів

Структура вибору if if (<умова>){
     <послідовність_операторів>;
}
Структура вибору  if/else
 
if (<умова>){
     <послідовність_операторів_1>;
}
else {
     <послідовність_операторів_2>;
}
Структура вибору switch
 
switch (<вираз цілого типу>)  {   
      case <значення_1>:
            <послідовність_операторів_1>;
             break;
      ... ... ... ... ... ... ... 
      case <значення_n>:
            <послідовність_операторів_n>;
         break;
      [default:
            <послідовність_операторів_n+1>;]
}
Оператор повторення (циклу)  while while (<логічний вираз>) {
           <послідовність_операторів>;
}
Оператор повторення (циклу)  for
 
for ([ініціалізація];[логічний вираз];
     [нове_значення]){
           <послідовність_операторів>;
}
Оператор повторення (циклу)  do while do {
           <послідовність_операторів>;
}while (<логічний_вираз>);
Оператор переходуgoto goto <мітка>;
/* ... */
<мітка> :  <послідовність_операторів>;
Оператор розриву   break;
Оператор продовження continue;

 

Розгалужена та циклічна структури алгоритмів

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

 

Рисунок 2.1 – Приклади зображення на схемах операторів умови

 

Рисунок 2.2 – Зображення на схемах операторів вибору

 

Циклічна структура  використовується при необхідності виконувати деякі дії декілька разів. Можливе виконання циклу do-while, циклу while, циклу за параметром  for (рис. 2.3).

 

Рисунок 2.3 – Зображення на схемах операторів циклу

 

Приклад розробки програми з разгалуженням

Задача. Розробити програму для виве­дення на таблиці значень функції y=f(x) для аргумента x, що змінюється у межах [Xпоч, Хкін] із заданим кроком h.

 

Формалізація задачі і алгоритм

 

Вхідні дані: – ціле число, Хпоч, Хкін, h – дійсні числа.

1.   Ввести початкові дані: tХпоч, Хкін, h. {2}

2.   Надрукувати шапку таблиці. {3}

3.   Взяти перше зі значень аргумента: x=Xпоч. {4}

4.   Визначити, якому з інтервалів у формулі воно належить. {5}

5.   Розрахувати значення у. {6}

6.   Вивести рядок у таблицю. {7}

7.   Збільшити х на h.  {8}

8.   Якщо х>Хкін, то {4}, інакше {9}

9.   Кінець розрахунків.

Вихідні дані: значення у у точках.

 

     Лістинг програми

 

  #include "stdafx.h"
  #include <locale.h>
  #include <conio.h>
  int main()
  {
    setlocale(0,"");
    int t;
    float X0,Xk,x,y,h ;
    printf("Введ1ть дан1:\n");
    printf("t = ");
    scanf_s("%d",&t);
    printf("\nВвед1ть Хпоч,"
           "Хк1н, h ...  ");
    scanf_s("%f %f %f", &X0,&Xk,&h);
    printf("\nІнтервал [%3.2f, %3.2f]\n ;
    Крок h = %3.2f\n", X0,Xk,h);
    printf("\n----------------------\n|  x  |  y  |");
    printf("\n|----------|---------|");
    x=X0;
    while (x<Xk)
   {  if (x<0) y=x;
     else
        if (x<=10) y=t*x;
          else y=x*x;
     printf("\n|  %7.2f |  %7.2f |",x,y);
     x+=h;
   }
   printf("\n-----------------------");
   return 0;
  }
  

Схема роботи програми

 

 

Приклад розробки задачі з використанням оператора вибору

Задача. Написати програму, що визначає, яка з цифрових клавіш була натиснута.

 

Формалізація задачі

 

Вхід: цифра. Тип даних – символ.

1.   Вивести запрошення на введення цифри

2.   Перевірити, чи це є цифра.

3.   Якщо цифра, то {4}, інакше {5}.

4.   Bивести рядок з назвою відповідної цифри {6}.

5.   Вивести рядок про помилку {6}.

6.   Завершення програми.

Вихід: рядок з назвою цифри.

 

Лістинг програми

 

    #include <locale.h>
    #include <conio.h>
    #include "stdafx.h"
    int main()
    { setlocale(0,"");
      int ch;
      printf("\nВвед1ть цифру ");
      scanf_s("%d",&ch);
      switch(ch)
      {   case 0: printf("\n %d%s",ch,
          " – нуль"); break;
      case 1: printf("\n %d%s",ch,
          " – один"); break;
      case 2: printf("\n %d%s",ch,
          " – два"); break;
      case 3: printf("\n %d%s",ch,
          " – три"); break;
      case 4: printf("\n %d%s",ch,
          " – чотири"); break;
      case 5: printf("\n %d%s",ch,
          " – п'ять"); break;
      case 6: printf("\n %d%s",ch,
                " – ш1сть"); break;
      case 7: printf("\n %d%s",ch,
          " – с1м"); break;
      case 8: printf("\n %d%s",ch,
          " – в1с1м"); break;
      case 9: printf("\n %d%s",ch,
          " – дев'ять"); break;
      default :
         printf("\n НЕ ЦИФРА!!!");          
          ch='*'; break;
    }
    _getch();
    return 0;
    }

Схема роботи програми

 

 

Результати виконання програми

 

 

 

 

Приклад розробки програми з використанням циклів

Задача. Обчислити значення виразу   .

 

Формалізація задачі

 

Вхідних даних у програмі немає.

1.   Оскільки необхідно отримати добуток, то треба підготувати змінну для цього: Р=1. {2}

2.   Нехай і=1 (змінна циклу). {3}

3.   Нехай f=1 (змінна для підрахунку факторіалу). {4}

4.   Обчислюємо факторіал і! : f=i. {5}

5.   Обчислимо значення виразу:         

     Q= . {6}

6.   Обчислюємо Р:   P=P*Q. {7}

7.   Якщо i<25, то {8}, інакше {9}.

8.   i = i+1. {4}

9.   Виводимо на екран Р. {10}

10.   Кінець програми.

Вихід: отримане значення добутку Р.

 

Лістинг програми

 

    #include <conio.h>
    #include <locale.h>
    int main()
    {    
          setlocale(0,"");
          double P = 1.0;
          double factorial, z, Q;
          for (int i=1; i<=25; i++)
          {    // обраховуємо чисельник
                factorial = 1;
                int j=1;
                while (j<=i)
                {     factorial*=j;
                      j++;
                }
               z=(double)(i*i+2*i+3);             
                Q = factorial/z;       
               P=P*Q;
          }
          printf("\nРезультат: Р=%e=%0.3f", P,P);
          _getch();
          return 0;
    }

Схема роботи програми

 

Результат виконання програми

 

 

 

images (37).jpg

 

Порядок виконання роботи

 

 

  1. Засвоїти теоретичний матеріал.
  2. Розібратись з прикладами та процесом розробки наведених вище задачі.
  3. Згідно з індивідуальним завданням розробити програми, що реалізують кожну із задач.
  4. По кожній задачі підготувати звіт за формою, наведеною у лабора­тор­ній роботі №1 (титульний аркуш і висновки – загальні для усієї лабораторної роботи).

 

 

images (60).jpg

 

Варіанти індивідуальних завдань

 

 

Задача 1. Обчислити і вивести на екран у вигляді таблиці значення функції F на інтервалі від Хпоч. до Хкінц. з кроком Δх. Значення a, b, c, Хпоч., Хкінц., Δх вводити з клавіатури з обов’язковою перевіркою пра­вильності введення.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

Задача 2.  Використовуючи оператор вибору, розробити програму згідно з індиві­ду­альним завданням.

 

1 Напишіть програму, яка запитує в користувача номер дня тижня, а потім виводить назву дня тижня чи повідомлення про помилку, якщо введені невірні дані (понеділок – 1, …, неділя – 7).
2 Напишіть програму, яка запитує у користувача число, а потім підносить його до степеню 2, 3, 4 або 5.
3 Написати програму, що підраховує кількість різних цифр у рядку символів, що вводиться з клавіатури.
4 Написати програму, що підраховує кількість різних символів «a, b, c, d, e, f» у рядку символів, що вводиться з клавіатури.
5 Напишіть програму, що підраховує пробіли, символи табуляції та нового рядка у вхідній послідовності символів, що вводяться з клавіатури.
6 Напишіть програму, що видаляє символ, який визначається користувачем, із вхідного потоку символів, що вводяться.
7 Напишіть програму, що перетворює літери, які вводяться з клавіатури, із нижнього регістра у верхній.
8 Для змінних x і y обрахувати вирази, в залежності від операції (+, -, *, /).
9 Написати програму, яка визначає, у якої фігури площа більша: коло, задане радіусом, чи квадрат, заданий стороною.
10 Напишіть програму, яка запитує в користувача номер місяця року, а потім виводить назву місяця або повідомлення про помилку, якщо введено невірні дані (січень – 1, …, грудень – 12).
11 Напишіть програму, яка запитує в користувача час , а потім виводить "АМ", якщо введено час до полудня, або "РМ", якшо час після полудня.
12 Напишіть програму, яка підраховує кількість голосних і приголосних літер у введеному слові або словосполученні.
13 Напишіть програму, яка запитує в користувача номер навчального урока, а у відповідь виводить час його початку і закінчення.
14 Напишіть програму, яка запитує в користувача цифру, а у відповідь виводить цю цифру словами.
15 Для змінної x обрахувати вираз в залежності від операції  (х++,  ++х,  х--, --х).

 

Задача 3. Використовуючи оператори циклу, обчислити значення виразів, якщо х – дійсне, n – натуральне число. Числа х і n вводяться з клавіатури.

 

1 а)

 

 

 

б)

6 а)

 

 

 

б)

11

 

а)

 

 

 

б)

2 а)

 

 

 

б)

7 а)

 

 

 

б)

12

 

а)

 

 

 

б)

3 а)

 

 

 

б)

8 а)

 

 

 

б)

13

 

а)

 

 

 

б)

4 а)

 

 

 

б)

9 а)

 

 

 

б)

14

 

а)

 

 

 

б)

5 а)

 

 

 

б)

10 а)

 

 

 

б)

15

 

а)

 

 

 

б)

 

Задача 3. Один з найпотужніших методів захисту інформації – це її шифру­вання. Розробити програму, яка для цілих , що водяться з клавіатури у зашифрованому вигляді, обчислюватиме вираз та шифруватиме результат перед виведенням на екран:

 

Варіант Таблиця замін Варіант Таблиця замін Варіант Таблиця замін
1 1 → 1 6 → 0 6 1 → 4 6 → 9 11 1 → 8 6 → 1
2 → 3 7 → 8 2 → 6 7 → 5 2 → 7 7 → 6
3 → 5 8 → 6 3 → 8 8 → 7 3 → 9 8 → 2
4 → 7 9 → 4 4 → 2 9 → 3 4 → 0 9 → 3
5 → 9 0 → 2 5 → 0 0 → 1 5 → 4 0 → 5
2 1 → 2 6 → 9 7 1 → 6 6 → 1 12 1 → 8 6 → 3
2 → 4 7 → 7 2 → 7 7 → 2 2 → 1 7 → 5
3 → 6 8 → 5 3 → 5 8 → 0 3 → 7 8 → 9
4 → 8 9 → 3 4 → 4 9 → 3 4 → 2 9 → 0
5 → 0 0 → 1 5 → 8 0 → 9 5 → 6 0 → 4

 

3 1 → 6 6 → 5 8 1 → 5 6 → 2 13 1 → 0 6 → 1
2 → 7 7 → 4 2 → 4 7 → 8 2 → 9 7 → 4
3 → 8 8 → 2 3 → 6 8 → 1 3 → 8 8 → 3
4 → 9 9 → 3 4 → 3 9 → 0 4 → 6 9 → 2
5 → 0 0 → 1 5 → 7 0 → 9 5 → 7 0 → 5
4 1 → 5 6 → 1 9 1 → 4 6 → 0 14 1 → 3 6 → 5
2 → 4 7 → 3 2 → 3 7 → 9 2 → 6 7 → 4
3 → 0 8 → 8 3 → 5 8 → 7 3 → 9 8 → 1
4 → 9 9 → 7 4 → 6 9 → 8 4 → 7 9 → 2
5 → 2 0 → 6 5 → 1 0 → 2 5 → 0 0 → 8
5 1 → 6 6 → 7 10 1 → 4 6 → 0 15 1 → 7 6 → 2
2 → 8 7 → 5 2 → 5 7 → 9 2 → 4 7 → 9
3 → 9 8 → 4 3 → 6 8 → 3 3 → 1 8 → 6
4 → 0 9 → 3 4 → 8 9 → 2 4 → 8 9 → 0
5 → 1 0 → 2 5 → 7 0 → 1 5 → 5 0 → 3

 

 

ask5-1

 

Контрольні питання

 

 

  1. Які оператори відносять до умовних? Наведіть приклади використання умовних операторів.
  2. За допомогою яких символів на схемах позначають умови?
  3. Які оператори циклу ви знаєте? В чому між ними різниця?
  4. Як перетворити оператор циклу з параметрами на оператор циклу з післяумовою?
  5. За допомогою яких символів на схемах позначають циклічні процеси?
  6. Як перетворити оператор циклу з передумовою на оператор циклу з передумовою?
  7. Наведіть приклад обчислення будь-якого виразу за допомогою різних операторів циклу.
  8. Чи можна в циклі for ініціалізувати відразу декілька змінних лічильників?
  9. Чому слід уникати використання оператора goto?
  10. Чи можна за допомогою оператора for організувати цикл, тіло якого не буде виконуватися?
  11. Чи можна організувати цикл while всередині циклу for?
  12. Як можна організувати нескінченні цикли? Наведіть декілька варіантів і поясніть їх.
  13. Як можна вийти з нескінченних циклів?
  14. Що відбувається при запуску нескінченного циклу?
  15. Чи може оператор циклу не мати тіла? Чому?
  16. Які оператори використовують для організації розгалуження у програмах?
  17. Наведіть синтаксис і приклад оператору вибору. У яких випадках він використовується?
  18. Чи можна віднести оператор вибору до умовних операторів? Чому?
  19. Як перетворити оператор вибору в умовний оператор?
  20. Для чого в операторах вибору використовують конструкцію default?
  21. Для чого в операторах вибору необхідно використовувати break?
  22. Наведіть приклад використання тернарного оператора "?".
  23. Для чого служать оператори переривання break та continue? Наведіть приклад.