Теоретическая часть
4.1.1. Циклические алгоритмы.
Цикл – это последовательность действий, которая может выполняться более одного раза.
Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
Имеется 3 вида циклов:
- цикл с предусловием;
- цикл с постусловием;
- цикл со счетчиком (счетный цикл).
Если выполнение цикла связано с каким-либо логическим условием, то используются циклы с предусловием или с постусловием.
Циклы со счетчиком представляют такой класс, в котором выполнение тела цикла должно повторяться заранее определенное число раз.
Блок-схемы циклических алгоритмов выглядят следующим образом:
1. Цикл со счетчиком.
2. Цикл с предусловием. 3. Цикл с постусловием.
4.1.2 Операторы цикла в языке программирования C++.
В C++ для каждого вида цикла имеется соответствующий оператор:
- цикл типа while (с предусловием);
- цикл типа do…while (с постусловием);
- цикл типа for (счетный).
1.Оператор цикла типа while
Форма записи:
while (условие) оператор;
где: (условие) – логическое выражение;
оператор – выполняемый в цикле оператор или тело цикла.
Если тело цикла представляет собой составной оператор, то его нужно заключить в операторные скобки{...}:
while (условие)
{
группа операторов
}
Схема работы такого цикла: пока условие является истинным (true), выполняется тело цикла и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.
2. Оператор цикла типа do…while
Форма записи:
do
оператор;
while (условие);
Схема работы такого цикла: сначала выполняется оператор, потом проверяется условие, если условие является истинным, выполняется оператор и снова проверяется условие и т.д. Когда условие станет ложным, цикл завершает работу.
Если тело цикла представляет собой составной оператор, то, как и для цикла с предусловием, его нужно заключить в операторные скобки{...}:
do
{
группа операторов
}
while (условие);
3. Оператор цикла типа for
Форма записи:
for (A;B;C)
оператор;
A – начальное выражение, которое задает начальные значения параметру цикла и при необходимости начальные значения другим параметрам. Например:
i=0, x=0.5, p=1, s=0
B – условное выражение, которое проверяет условие продолжения работы цикла. Например:
x<=5
C – выражение приращения, которое задает приращение параметру цикла и при необходимости другим параметров, тогда они записываются списком. Например: x+=0.1, i++
4.1.3 Пример составления алгоритма и программы на языке C++ для циклического вычислительного процесса.
Задание:
Вычислить значение выражения:
b – исходная величина, ее значение вводятся с клавиатуры и не изменяется;
a – изменяется в диапазоне [0;10] с шагом 1;
y – результат, его значения выводятся на экран.
Решение.
Исходя из условия задания переменная a является целочисленной, поэтому может быть использована в качестве счетчика в счетном цикле.
Блок-схема алгоритма решения данной задачи с использованием счетного цикла выглядит следующим образом:
Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:
#include <conio.h>
#include <math.h>
#include <stdio.h>
int main()
{ int a;
float b,y;
clrscr();
printf(“Введите b: “);
scanf(“%f”,&b);
printf(“ a y\n”);
for (a=0;a<=10;a++)
{
printf(“%3d”,a);
if (a>b)
{
y=1.2*a+3*b;
printf(“%8.2f\n”,y);
}
else
{
if (a>0)
{
y=(a-b)/sqrt(a);
printf(“%8.2f\n”,y);
}
else printf(“ y не существует\n”);
}
}
getch();
return 0;
}
Блок-схема алгоритма решения данной задачи с использованием цикла с предусловием выглядит следующим образом:
Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:
#include <conio.h>
#include <math.h>
#include <stdio.h>
int main()
{ int a;
float b,y;
clrscr();
printf(“Введите b: “);
scanf(“%f”,&b);
a = 0;
printf(“ a y\n”);
while(a<=10)
{
printf(“%3d”,a);
if (a>b)
{
y=1.2*a+3*b;
printf(“%8.2f\n”,y);
}
else
{ if (a>0)
{
y=(a-b)/sqrt(a);
printf(“%8.2f\n”,y);
}
else printf(“ y не существует\n”);
}
a=a+1;
}
getch();
return 0;
}
Блок-схема алгоритма решения данной задачи с использованием цикла с постусловием выглядит следующим образом:
Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:
#include <conio.h>
#include <math.h>
#include <stdio.h>
int main()
{ int a;
float b,y;
clrscr();
printf(“Введите b: “);
scanf(“%f”,&b);
a = 0;
printf(“ a y\n”);
do
{
printf(“%3d”,a);
if (a>b)
{
y=1.2*a+3*b;
printf(“%8.2f\n”,y);
}
else
{ if (a>0)
{
y=(a-b)/sqrt(a);
printf(“%8.2f\n”,y);
}
else printf(“ y не существует\n”);
}
a=a+1;
}
while(a<=10);
getch();
return 0;
}