Операторы повторения

Оператор ветвления

Позволяет изменять ход вычислительного процесса в зависимости от выполнения определенных, заранее заданных условий.

В языке С++ используется оператор ветвления ifв двух формах и оператор выбора switch.

Оператор if имеет следующий синтаксис:

if (<условие>) <оператор-1>;

[ else <оператор-2>];

 

При выполнении оператора вначале вычисляется выражение условия. Если результат равен значению "Истина (true)", т.е. любое, отличное от нуля значение, то выполняется оператор-1. Если же результат равен значению "Ложь (false), т.е. равен 0, то выполняется оператор-2. В качестве условия может быть использовано арифметическое, логическое выражение, сравнение, целое число и т.д.

Другой оператор, switch, позволяет выбрать один из нескольких вариантов. Пример реализации простейшего калькулятора:

// Easy Calculator - Простой калькулятор

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <math.h>

void main()

{ clrscr();

int f; float x,y,res; char op;

cout<<"\nInput x, operator, y : ";

cin>>x>>op>>y;

f=1;

switch (op)

{ case '+': res=x+y; break;

case '-': res=x-y; break;

case '*': res=x*y; break;

default : cout<<"operator unknown!\n";f=0;break;

}

if (f==1)

printf("%.3f %c %.3f = %.3f.\n",x,op,y,res);

getch();

}

Многократно повторяющийся участок вычислительного процесса называется циклом. Каждый проход по телу цикла называется итерацией. Цикл, не содержащий других циклов, называется простым, иначе его называют кратным.

Переменную, управляющую циклическим процессом, называют параметром цикла. Если априори известно количество повторений, то организуют циклы со счетчиками. Итерационным называют циклический процесс, в котором количество повторений неизвестно и условие продолжения цикла базируется на результатах текущих вычислений.

Если результаты вычислений очередной итерации используются при вычислении значений в следующей итерации, то это говорит об использовании рекуррентных соотношений. Как показывает Дональд Кнут, рекуррентность, или возвратность, это свойство решения задачи, когда ее решение зависит от решения той же задачи, но меньших размеров.

В языке С++ представлено три формы операторов цикла:

 

a) Цикл со счетчиком:

for (<инициализация параметра>; <условие>; <закон изменения>)

<оператор>;

for (int i=0; i<n; i++) sum+=i*i;

 

b) Цикл с предусловием:

while (<условие>) <оператор>;

while (a!=0) { k++; a/=10;};

 

c) Цикл с послеусловием:

do<оператор> while (<условие>);

do {sum+=a%2; a/=10;} while (a!=0);

 

В цикле for можно использовать любые ординарные переменные, например, символьного типа:

char let;

for (let=’z’; let>=’a’; let--)

printf(“Код - %i, символ - %c\n”,let,let);