Теоретическая часть

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;

}