Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++.doc
Скачиваний:
145
Добавлен:
11.04.2015
Размер:
1.76 Mб
Скачать

Вложенные структуры условных операторов

Структура называется вложенной, если после служебного слова else или при истинности логического выражения вновь используются условные операторы. Число вложений может быть произвольным. При этом справедливо сле­дующее правило: служебное слово else всегда относится к ближайшему выше слову if.

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

При решении данной задачи возможны два варианта про­граммирования:

  1. без вложенной структуры;

  2. с вложенной структурой.

Ниже рассмотрены оба варианта решения задачи.

Вариант 1 (с использованием вложенной структуры)

Схема алгоритма

Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float a,x, y;

printf("Введите число х= ");

scanf("%f",&x);

if (x>=1)

y = sqrt(x)/2;

else

if(x>0){a=1.0/3; y=pow(x,a);}

else {a=1.0/4; y=pow(x,a)/4;}

printf("y=%6.2f",y);

return 0;}

Вариант 2 (без использования вложенной структуры)

Схема алгоритма Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float a,x,y;

printf("Введите число x=" );

scanf("%f",&x);

if (х>=1)

у = sqrt(x)/2;

if ((x>0)&&(x<1))

{ a= 1.0/3;

y =pow(x,a)/2;

}

if(x<=0)

{a= 1.0/4;

y=pow(x,a)/4;

}

printf("y=%6.2f",y);

return 0;

}

Оператор выбора

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

Общий вид записи оператора

switch <селектор>

{

сase константа выбора 1: оператор 1; break;

…………………………………………………

сase константа выбора n: оператор n; break;

default: оператор n+1;

}

Селектор - это выражение целого или символьного типа.

Константы выбора - возможные значения селектора.

default – осуществляет обработку непредусмотренного значения селектора. Наличие этой метки в операторе switch необязательно.

Работа оператора

По вычисленному значению селектора выбирается для испол­нения case-оператор, содержащий кон­станту выбора, равную значению селектора. После выполнения выбранно­го case-оператора управление передается на конец оператора case. Следующим в программе выполняется оператор, стоящий за опе­ратором выбора switch.

Пример 1. Написать оператор выбора для вычисления величи­ны y по формулам:

Оператор выбора имеет следующую запись:

switch (n)

{

case 1: у =х; break;

case 2: case 3: у = 2 * sqrt(abs(x)); break;

case 4: у = ехр(х); break;

default: printf("значение для n указано не верно\n");

}

Графическая интерпретация оператора

В схемах алгоритма оператору switch соответствует структура ВЫБОР.

Для приведенного выше примера 1 эта структура выглядит следующим образом:

Замечание. Если в строке выбора необходимо записать не­сколько операторов, то их заключают в операторные скобки {...}.

Пример 2. Вычислить значение у.

Если значение х не принадлежит рассматриваемым проме­жуткам, то вывести на экран соответствующее сообщение.

В задаче переменная х является вещественной и не может ис­пользоваться в качестве селектора оператора case. Введем новую переменную целого типа n, которой присваивается целая часть значения х. Тогда программа решения данной за­дачи с использованием оператора выбора может быть составлена следующим образом.

#include "stdafx.h"

#include<math.h>

int main()

{

float х, у;

int n;

printf("Введите число х= ");

scanf("%f",&x);

if( (х<1) || (x>=5))

printf("x не принадлежит рассматриваемой области\n");

else

{ n = x;

switch (n)

{

case 1: y =sin(x); break;

case 2: у = exp(-x); break;

case 3: y =log(x); break;

case 4: у = tan(x); break;

default: printf(" такого решения нет \n");

break;

}

if ((n==1)||(n==2)||(n==3)||(n==4)) printf("y=%6.2f", y);

}

return 0;

}