Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР6-С++-27 марта-2012.doc
Скачиваний:
17
Добавлен:
28.08.2019
Размер:
6.55 Mб
Скачать

1.6. Пустой оператор

Пустым оператором называется оператор, который не вызывает никаких действий и никакими символами не обозначается. Как и любой другой оператор, пустой оператор может быть помечен. Следова­тельно, пустой оператор имеет вид:

М: ;

где М –список меток, который может отсутствовать.

Пустой оператор используется для того, чтобы поместить метку в оп­ределенное место программы или зарезервировать место в программе для предполагаемых впоследствии операторов. Обычно (чаще всего) помечен­ный пустой оператор ставится в конце программы, чтобы в зависимости от выполнения некоторых условий можно было прер­вать вычисления и выйти на конец программы, блока или составного опе­ратора, пропуская какие-то другие операторы.

Пример 6.3.

Составить программу для вычисления по заданные сторонам А, В, С площади треугольника S, радиусов описанной R и впи­санной r окружностей. Предусмотреть проверку существования треуго­льника.

Решение. Алгоритм решения задачи: если треугольник существует, то есть если р > а, р > в, р > с, то

Здесь р = (а + в + с)/2 – полупериметр. Блок-схема алгоритма после­довательности вычислений примера 6.3 приведена на рис. 6.2.

Рис 6.2. Блок-схема, алгоритма примера 6.3

В качестве идентификаторов сохраним обозначения, принятые при за­писи алгоритма за исключением R (обозначим R через RO) и r (обозначим r через RB).

Программа решения задачи примера 6.3 может иметь вид

*/Пример 6.3*/

#include <iostream.h>

#include<conio.h>

#include<math.h>

int main()

{

unsigned znak = 11111;

float a, b, c, s, p, RO, RB;

cout "Введите через пробел значения для a, b, c и нажмите Enter \n";

cin a >> b >> c >>$

р = (а + в + с)/2;

if (p <= a || p< = b || p< = c) goto PRIZNAK;

s = sqrt(p*(p-a)*(p-b)*(p-c));

RO= a+b+c;

RB = s/p;

cout << "Площадь треугольника s = " << s << endl;

cout << "Радиус описанной окружности R = " << RO << endl;

cout << " Радиус вписанной окружности r = " << RB << endl;

goto FIN;

PRIZNAK: cout << " Треугольник не существует znak = " << znak << endl;

FIN: ;

getch();

return 0;

}

1.7. Условный оператор и его формы в С++

Одним из наиболее часто применяющихся операторов, которые изменяют естественный порядок следования операторов программы, является ус­ловный оператор. Условный оператор (его также называют оператором условной передачи управления) предусмотрен для описания разветвляющегося алгоритма. С помощью этого оператора можно обеспе­чить выполнение одного или другого оператора в зависимости от задан­ных условий. В С++ условный оператор имеет три формы: короткую и полную и вложенную.

1. Короткая форма – [метка:] if (E) оператор S1;

Например, if (a>b) y=2*x;

Если логическое выражение Е истинно, то выполняется оператор S1.

2. Полная форма – [метка:] if (E) оператор S1; else оператор S2;

Например, if (x>0 && x!=10) y=2*x; else y=x*x;

Если логическое выражение Е истинно, то выполняется оператор S1, иначе – оператор S1.

Оператор if в полной форме часто называется оператором if-else.

3. Вложенная форма:

[метка:] if (E1) оператор S1; else if (E2) оператор S2; else оператор S3;

Если логическое выражение Е1 истинно, то выполняется оператор S1, иначе, если логическое выражение Е2 истинно, то выполняется оператор S2, иначе выполняется оператор S3.

Здесь Е, Е1, Е2 – условие (выражение типа сравнения или скалярное выражение); S1, S2, S3 – либо отдельный, оператор, либо группа операторов (рассмотрим далее в данной работе), либо блок (рассмотрим в последующих работах).

Каждая из конструкций оператор S1 и оператор S2 должна заканчиваться точкой с запя­той. Выражение Е принято называть логическим. Условие Е необходимо заключать в круглые скобки.

Выражение в записи формата условного оператора – это некоторое условие, содержащее операции отношения и логические операции.

В числе операторов S1 и S2 может быть и другой условный оператор.

Если условие, стоящее за ключевым словом if, выполняется (истинно) то уп­равление будет передано на оператор S1. Если же условие не выполняется (ложно), то при использовании короткой формы оператора if управление передается оператору, непосредственно следующему за условным операто­ром, а при использовании полной формы оператору S2 (см. рис. 6.3).

Нет

Нет

Оператор S2

Выполнение

ветви "Нет"

Условие Е

(выражение)

(Ложь)

Условие Е

(выражение)

(Ложь)

Да

Да

(Истина)

(Истина)

Оператор S1

Выполнение

ветви "Да"

Оператор S1

Выполнение

ветви "Да"

Выполнение операторов в естественном порядке

Выполнение операторов в естественном порядке

а)

б)

Рис. 6.3. Блок-схема участка алгоритма, реализующего условный оператор:

а) короткий формат; б) полный формат

Скалярное выражение Е (условие) в операторе if задает правило вычисления логического условия, для получения которого значение Е преобразуется в строку битов.

Если значение выражения равно true (истина), то выполняется оператор S1 (говорят также, что вы­полняется ветвь "Да"). После выполнения оператора S1 (если это не повлияет на порядок выполнения операторов) управление переда­ется оператору, следующему за условным оператором (см. рис. 6.3).

Если значение скалярного выражения Е равно false (ложь), то выполняется оператор S2 (говорят также, что вы­полняется ветвь "Нет"). В случае отсутствия конст­рукции else и в операторе if выполняется оператор, стоящий непосредственно за условным оператором (см. рис 6.3,а). После выполнения оператора S2 уп­равление передается следующему за ним оператору, если S2 не влияет на порядок выполнения операторов.

Варианты графического изображения команд ветвления представлены на рисунке 6.4.

Рис. 6.4. Команды ветвления: а) – полная форма; б) и в) – сокращенная форма.