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

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

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

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

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

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

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

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

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

Начало
x
x≥1
y= Вложенные структуры условных операторов - student2.ru  
y
Конец
x>0
y= Вложенные структуры условных операторов - student2.ru  
y= Вложенные структуры условных операторов - student2.ru  
Схема алгоритма

Программа

#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 (без использования вложенной структуры)

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

Начало
X
x≥1
y= Вложенные структуры условных операторов - student2.ru
y
Конец
0<x<1
y= Вложенные структуры условных операторов - student2.ru  
x≤0
y= Вложенные структуры условных операторов - student2.ru  

#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 по формулам:

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

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

switch (n)

{

case 1: у =х; break;

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

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

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

}

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

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

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

n=4
Анализ селектора n
y=x
n=1
y= Вложенные структуры условных операторов - student2.ru
y= Вложенные структуры условных операторов - student2.ru
n=2 или n=3

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

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

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

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

В задаче переменная х является вещественной и не может ис­пользоваться в качестве селектора оператора 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;

}

Контрольные задания

1)Записать на языке С++ логические выражения

а) Вложенные структуры условных операторов - student2.ru

б) Вложенные структуры условных операторов - student2.ru

в)переменная х находится вне интервала [а, b];

г) все точки на плоскости находятся выше оси абсцисс;

д) все точки на плоскости находятся либо в первом, либо в третьем квадрантах;

е) все точки на плоскости лежат выше прямой у = 1 +х.

2) Начертить на плоскости область, в которой логическое вы­ражение имеет значение TRUE

а) (х>= 0) && (у>= 0) && (у <= х) || (у <= -1);

б) (х*х +у*у <= 1) && (у>= 0) && !(y <x);

в) (у>= х) && (y>= -х);

г) (у <= 2) && (x <- 2) || (х*у <0);

д) (х*у>= 0) && (у <= х) && (x <1) && (y>-1);

е) (х*х + у*у <= 4) &&(y>= х*х).

3) Записать на языке С++ логические выражения, принимающие значение TRUE для точек, принадлежащих заштрихованной области (рисунок 1).

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

а) б)

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

в) г)

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

д) е)

Рисунок 1.

4) Записать на языке С++ логические выражения, расставить действия и вычислить при: i = 5, j = 2, к=2, а = TRUE, b = FALSE

а) Вложенные структуры условных операторов - student2.ru

б) Вложенные структуры условных операторов - student2.ru

в) Вложенные структуры условных операторов - student2.ru

г) Вложенные структуры условных операторов - student2.ru

д) Вложенные структуры условных операторов - student2.ru

е) Вложенные структуры условных операторов - student2.ru

Наши рекомендации