Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и программирование .doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.35 Mб
Скачать

4. Программирование разветвляющих и циклических алгоритмов

4.1. Общие сведения

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

Простой оператор – это оператор, не содержащий другие операторы. Разделителем простых операторов служит точка с запятой. Специальным случаем простого оператора является пустой оператор, состоящий из единственного символа ‘;’.

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

4.2. Оператор if

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

Оператор if имеет следующую общую форму записи:

if (cond_expression)

TRUE_statement

[else

FALSE_statement]

FALSE

TRUE

TRUE_statement

FALSE_statement

следующий

оператор программы

При выполнении оператора if сначала вычисляется логическое выражение cond_expression. Если результат ИСТИНА (любое отличное от нуля значение), выполняется оператор TRUE_statement. Если результат логического выражения ЛОЖЬ (равен 0), то выполняется оператор FALSE_statement.

Если ключевое слово else отсутствует и результат логического выражения ЛОЖЬ, то в этом случае оператор TRUE_statement пропускается, а управление передается на следующий после if оператор.

Операторы TRUE_statement и FALSE_statement сами могут быть операторами if, образуя так называемые вложенные if. Компилятор интерпретирует вложенные if, сопоставляя каждое из ключевых слов else с последним встретившимся словом if, не имеющим “своего” else. Соответствие ищется в пределах блока, в который заключено слово if. Внутренние и внешние блоки при этом не рассматриваются. Если соответствия для if не найдено, компилятор полагает, что if не имеет ветви else.

Пример 4_1. Использование оператора if.

#include "stdafx.h"

using namespace System;

int main()

{ int a, b;

Console::Write("\nВведите значение b= ");

b = Convert::ToInt32(Console::ReadLine());

if (b > 10)

a = 100;

else

if (b == 10)

a = 10;

else

a = 5;

Console::WriteLine("Значение переменной a = " + a);

Console::ReadLine();

return 0;

}

Результат работы программы (при вводе значения 3) :

Введите значение b= 3 <Enter>

Значение переменной a = 5

Результат работы программы (при вводе значения 23) :

Введите значение b= 23 <Enter>

Значение переменной a = 100

Результат работы программы (при вводе значения 10) :

Введите значение b= 10 <Enter>

Значение переменной a = 10

Пример 4_2. Вложенные if:

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)

{ int a = 1, b = 10;

if (a == 1)

if (b == 1)

Console::WriteLine("\na=1, b = 1 ");

else

Console::WriteLine("\nb не равно 1");

Console::WriteLine("Значение переменной a = " + a);

Console::ReadLine();

return 0;

}

Результат работы программы:

b не равно 1

Значение переменной а = 1

В результате выполнения этой программы на экран будет выводиться строка “a не равно 1”, хотя на самом деле a=1. Ошибка происходит потому, что компилятор сопоставляет if с ближайшим else (то есть со 2-м if). Ошибку можно исправить, поставив фигурные скобки, ограничивающие блок.

Пример 4_3. Исправленная предыдущая программа.

#include "stdafx.h"

using namespace System;

int main()

{

int a = 1, b = 10;

if (a == 1)

{

if (b == 1)

Console::WriteLine("\na=1, b = 1 ");

}

else

Console::WriteLine("\n b не равно 1");

Console::WriteLine("Значение переменной a = " + a);

Console::ReadLine();

return 0;

}

Результат работы программы:

Значение переменной а = 1