Операторы ветвления. Условный оператор if



Тема 2 Управляющие операторы

 

Базовые конструкции структурного программирования

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

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

Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.

Цикл задает многократное выполнение оператора.

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

 

 

Рисунок 2.1 – Базовые конструкции структурного программирования

 

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

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения.

 

Операции отношения и логические операции

Операции отношения (<, <=, >, >=, ==, !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false. Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения. Например: x >=0, y != 10, z == 0.

 

ВНИМАНИЕ! Обратите внимание на разницу между операцией проверки на равенство ( == ), результатом которой является true или false, и операцией присваивания ( = ), результатом которой является значение, присвоенное левому операнду.

 

Логические операции (&&,||, ^). Операнды логических операций И (&&), ИЛИ (||), ИСКЛЮЧАЮЩЕЕ ИЛИ (^) должны иметь тип, допускающий преобразование к типу bool, при этом операнды в одной операции могут быть различных типов. Результатом операции является true или false.

Результат операции логическое И имеет значение true только если оба операнда имеют значение true. Результат операции логическое ИЛИ имеет значение true, если хотя бы один из операндов имеет значение true. Результат операции логическое ИСКЛЮЧАЮЩЕЕ ИЛИ имеет значение true, если один из операндов имеет значение true, а второй – false. Логическое отрицание ( !) дает в результате значение false, если операнд есть true, и значение true, если операнд равен false. Операнд может быть арифметического типа. В этом случае выполняется неявное преобразование в тип bool. Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.

 

Таблица результатов операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ

(A и B – операнды)

A B A && B A || B A ^ B ! A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

 

Примеры выражений с логическими операциями:

 

x > 0 && y <=10

( a < -1 && b > 0 ) || c != 100

 

Условная операция ( ?:). Эта единственная в С++ тернарная операция (имеет три операнда), ее формат:

 

операнд_1 ? операнд_2 : операнд_3

 

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

Пример: пусть требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1. Это можно записать с помощью одной строки кода:

 

i = ( i < n ) ? i + 1 : 1;

Операторы ветвления. Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления. Схема алгоритма оператора приведена на рисунке 2.1. Формат оператора:

 

if ( выражение ) оператор_1; [ else оператор_2;]

 

Сначала вычисляется выражение, которое может иметь арифметический тип или тип указателя. Если оно не равно нулю, т.е. равно true, то выполняется первый оператор, иначе – второй. После этого управление передается на оператор, следующий за условным. Одна из ветвей может отсутствовать.

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

Примеры:

 

if ( a < 0) b = 1;                                           // 1if ( a < b && (a >d || a == 0 ) )  b++; else { b *= a; a = 0;}                 // 2if (a < b)   if (a < c )  m = a;   else  m = c;else if ( b < c )  m = b; else  m = c;                                   // 3

 

В примере 1 отсутствует ветвь else. Подобная конструкция называется "пропуск оператора", поскольку присваивание либо выполняется, либо пропускается в зависимости от выполнения условия.

Если требуется проверить несколько условий, их объединяют знаками логических операций. Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a < b и одно из условий в скобках. Если опустить внутренние скобки, будет выполнено сначала логическое И, а потом – ИЛИ.

Оператор в примере 3 вычисляет наименьшее значение из трех переменных.

По синтаксису оператора if в его ветвях должно быть не более одного оператора. Если же их больше, то они должны быть объединены в блок с помощью фигурных скобок или с помощью операции «запятая» (,).

Рисунок 3.2 – Мишень

 

Пример. Производится выстрел по мишени, изображенной на рисунке 3.2. Определить количество очков.

 

#include <stdio.h>

int main( )


Дата добавления: 2021-01-20; просмотров: 79; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!