Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
programmirovanie_okonchat.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
153.81 Кб
Скачать

12. Условные и циклические конструкции. Виды конструкций, что общего у них.

Условная конструкция if...else Общий вид условного оператора:

if (<выражение>)

<оператор1>;

else

<оператор2>;

а также его сокращенная форма:

if (<выражение>) <оператор1>;

Вначале вычисляется значение выражения. Если его значение отлично от нуля, то выполняется оператор1. Если его значение равно нулю, и если есть else-часть, то выполняется оператор2. Если значение выражения равно нулю, но конструкция else отсутствует (имеется в наличии сокращенная форма условного оператора), то никаких действий в этом операторе не выполняется, а осуществляется переход к следующему оператору.

Примеры:

if (х > 0) {x = -x; a =2*b;} //Полная условная конструкция.

else { int i = 2; x *=i; a=b/x;}

if (a<0) a=-a; //Сокращенная условная конструкция.

При использовании блоков (то есть составных операторов с определениями и описаниями) нельзя забывать о локализации определяемых в блоке объектов. Например, следующая конструкция будет ошибочной:

if (j>0) {int i; i=2*j;} else i=-j;

так как переменная i локализована в блоке и не существует вне его.

Приведем несколько примеров использования этого оператора.

________________________________________

Пример Нахождение наибольшего из двух целых чисел a и b.

#include <iostream.h>

main ()

{

int a,b;

cout<<"Введите первое число - ";

cin>>a;

cout<<endl<<"Введите второе число - ";

cin>>b;

if (a==b) //"Внешняя" условная конструкция.

cout<<"Заданные числа равны."<<endl;

else

if (a>b) //"Внутреняя" условная конструкция.

cout<<"Первое число больше второго."<<endl;

else

cout<<"Второе число больше первого."<<endl;

}

13.Циклические конструкции. Виды конструкций.

Циклические конструкции применяют для повторения некоторого блока кода на основании условия цикла. В языке С используются циклические конструкции while, for и do-while.

Конструкция while

Цикл while имеет следующий синтаксис.

while (условное_выражение)

{

// Выполнение тела цикла, если выражение истинно

}

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

int с, i;

const char str[] = "0123456789";

char OddNums[5]; //Строка для хранения нечетных цифр

с = 0; //Счетчик циклов

i = 0; //Индекс массива OddNums

while (с < 10) //До тех пор, пока с меньше 10, . ..

{

//Если остаток от деления с на 2 = 1, то записываем в i-ю позицию массива OddNums с-й

//элемент строки str, после чего значение i автоматически инкрементируется

if ((с % 2) == 1) OddNums[i++] = str[c];

с++; //с = с + 1 .

}

Конструкция for

Цикл for имеет следующий синтаксис.

for (выражение1; выражение2; выражение3)

{

// Выполнение тела цикла

}

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

Выражение3 — еще один оператор присваивания, в котором обычно изменяется счетчик цикла или некоторая переменная, влияющая на выполнение условия в выражении2. Вы-ражения могут быть представлены любыми операторами, включая пустые (то есть, вместо выражения можно поставить только символ точки с запятой).

Циклы while и for в большинстве случаев взаимозаменяемы. Так, представ¬ленный выше пример для цикла while, можно переписать в следующем виде:

int с, i; ,

const char str[] = "0123456789";

char OddNums[5]; //Строка для хранения нечетных цифр

i = 0; //Индекс массива OddNums

for (с =0; с < 10; с++) //До тех пор, пока с меньше 10,...

if ((с % 2) == 1) OddNums[i++] = str[c];

В одних ситуациях удобнее применять циклы for, в других — while. Досто¬инством циклов for является более наглядная инициализация и организация из¬менения счетчика цикла, С другой стороны, циклы while более гибкие и обеспе¬чивают больше возможностей для реализации нестандартных программных реше¬ний при организации повторяющихся вычислений.

Например:

Пусть нам надо посчитать сумму 10 чисел введенных пользователем с клавиатуры.

#include <stdio.h>

int main(void){

int i,summ=0, temp=0;

for (i=0;i<10;i++){

printf("\nVvedite chislo: ");

scanf("%d",&temp);

summ+=temp;

}

printf("Summa vvedennih chisel = %d\n",summ);

return(0);

}

Конструкция do-while

Кроме циклов while и for, в которых вначале выполняется проверка истин¬ности условия цикла, и только потом управление передается блоку операторов цикла, в языке C имеется также конструкция do-while. Она отличается от первых двух тем, что в ней вначале выполняется блок операторов, и только потом прове¬ряется выполнение условия. Другими словами, цикл do-whileвсегда выполняет¬ся как минимум один раз, вне зависимости от условия цикла.Цикл do-while имеет следующий синтаксис:

do

{

// Выполнение блока операторов цикла

}

while (условное_выражение);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]