Лабораторная работа № 28.
Циклические алгоритмы в C++

Время выполнения

4 часа

Цель работы

Научиться составлять программы, используя операторы цикла. Научиться оформлять циклические схемы алгоритма.

Задачи лабораторной работы

После выполнения работы студент должен:
  • Знать правила написания текста программы на языке программирования С++;
  • Знать, как по схеме алгоритма написать текст программы и, наоборот - по тексту программы составить схему её алгоритма;
  • Знать правила использования операторов условия и циклов;
  • Уметь организовывать циклы с помощью операторов условия;
  • Знать назначение и работу каждого оператора в программе;
  • Уметь проводить тестирование программы.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система семейства Windows и язык программирования С++.

Общие теоретические сведения

Циклическим является алгоритм, если определенная последовательность шагов выполняется некоторое целое число раз. Рис. 1 иллюстрирует циклические алгоритмы. 
Рисунок 1. Циклические алгоритмы:
а – цикл с предусловием, б – с постусловием, в – с параметром

У каждого из операторов цикла имеются особенности в их использовании (табл. 1): условные циклы выполняются пока условие истинно, а цикл с параметром работает, пока управляющая переменная цикла (так называемый параметр) не достигнет своего конечного значения.

Таблица 1. Операторы циклов
 Условные циклы  while (условие)
 { операторы }
 do
 { операторы }
 while (условие)
 С параметром  for ( переменная  = нач_знач;
 переменная <= кон знач;  шаг)
 
 { операторы }

Пример. Написать программу, которая преобразует введенное десятичное число в двоичное. 
Текстуальная форма алгоритма задачи:
  1. Ввести  число dec с клавиатуры в ЭВМ;
  2. В цикле делятся целые части числа на 2, остатки от деления выводятся на экран;
Ниже представлена программа этой задачи.
#include < iostream.h >
#include < math.h >
#include < conio.h >
main()
{ int d;         // десятичное число
   int b;         // формируемый разряд
   int n;         //  номер формируемого разряда
   cout << ” Введите целое число от 0 до 255 ”;  cin >> d;
   cout << ” Десятичному числу ”>> d >> “ соответствует двоичное : “;
   b = 128;    // старший (восьмой) разряд
  for (n = 1; n <= 8; n++)
  { if  ( d  >= b )  
            { cout <<” 1 “;  d -= b; }
      else   cout <<” 0 “;
      b = b / 2;
   }
  cout << ”Для завершения нажмите <Enter>” << endl;
  getch();
}

Видеоурок по выполнению заданий лабораторной работы

Варианты заданий

Содержание отчета
  1. Титульный лист по стандартной форме.
  2. Постановку задачи.
  3. Необходимые математические выкладки (и/или поясняющую картинку).
  4. Алгоритм решения задачи (в виде блок-схемы или в текстуальной форме).
  5. Тексты программы.
  6. Тестовые наборы  (тест – это проверка работоспособности программы по контрольным значениям данных).
  7. Результаты вычислений по каждому тесту.
Отчет для лабораторной работы составляется в одном и подлежит защите. Для защиты лабораторной работы студент должен подготовиться к ответу на контрольные вопросы.

Технология выполнения работы

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

Вопросы для защиты работы

    1) В каких случаях используется оператор цикла с параметром? Как он оформляется? Как он работает (что происходит при его выполнении)? Нарисуйте графическую схему выполнения.
    2) Что такое «тело оператора цикла»? Может ли тело оператора цикла с параметром не выполниться ни разу?
    3) Как должен быть оформлен оператор цикла с параметром, чтобы тело цикла выполнялось при уменьшающихся значениях параметра цикла? Как он будет работать (что будет происходить при его выполнении)? Нарисуйте графическую схему выполнения.
    4) Чему равно количество повторений тела оператора цикла с параметром, если параметр цикла принимает: 
        а) Все целые значение от 1 до 10?
        б) Все нечетные значения от 1 до 30?
        в) Все значения от 10 до 100 с шагом 7?
        г) Все значения от 1,5 до 10,3 с шагом 0,4? 
    5) Можно ли в теле цикла с параметром не использовать величину-параметр цикла? Почему?
    6) В каких случаях используется операторы цикла с условием?
    7) В каких случаях используется оператор цикла с предусловием? Как он оформляется? Как он работает (что происходит при его выполнении)? Нарисуйте графическую схему выполнения.
    8) В каких случаях используется оператор цикла с постусловием? Как он оформляется? Как он работает (что происходит при его выполнении)? Нарисуйте графическую схему выполнения.
    9) Может ли тело оператора цикла с условием не выполниться ни разу? А может выполняться бесконечное число раз (или до тех пор, когда пользователь прервет его выполнение)?
    10) Всегда ли можно вместо оператора цикла с параметром использовать оператор цикла с условием? А наоборот?
    11) Какие вы знаете операторы для принудительного (преждевременного) выхода из оператора цикла? Можно ли вместо такой конструкции использовать оператор цикла с постусловием? А оператор цикла с предусловием?