Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по дисциплине АОП.docx
Скачиваний:
66
Добавлен:
24.04.2019
Размер:
2.91 Mб
Скачать

If (условие) оператор

Например: if (x%2) y += x/2;

Т.е. если x – нечетно, то y увеличивается, в противном случае ничего не делается.

Если при выполнении условия нужно выполнить последовательность операторов, необходимо использовать блок

В другом случае требуется выбрать для выполнения один из двух операторов, в зависимости от некоторого условия:

If (условие) оператор1 else оператор2

Например: if (a>b) c=a; else c=b;

Вопрос №29. Вложенные операторы выбора.

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

Пример: найти: d = max(a, b, c)

Вопрос №30. Реализация множественного выбора с помощью else if.

Фрагмент алгоритма программы «Калькулятор»:

if (c==‘+’) r = a + b;

else if (c==‘+’) r = a + b;

else if (c==‘-’) r = a - b;

else if (c==‘*’) r = a * b;

else if (c==‘/’) r = a / b;

else printf(“error!\n");

Вопрос №31. Оператор множественного выбора switch. Необходимость использования break.

Для алгоритмов с множественным выбором существует специальный оператор:

switch(c){

case '+': r = a + b; break;

case '-': r = a - b; break;

case '*': r = a * b; break;

case '/': r = a / b; break;

default: printf(“error!\n");

}

При отсутствии операторов break реализуется совсем другой алгоритм:

switch(c){

case '+': r = a + b;

case '-': r = a - b;

case '*': r = a * b;

case '/': r = a / b;

default: printf(“error!\n");

}

Общий вид оператора switch:

switch (выражение) {

case констант-выраж1: операторы

case констант-выраж2: операторы

default: операторы

}

Действие оператора: вычисляется значение выражения и это значение последовательно сравнивается со значениями константных выражений в блоках case. Если произошло совпадение значений, выполняются операторы соответствующего блока case. Как правило, последним оператором в каждом блоке case является оператор break («прервать») и поэтому по завершению выбранного case-блока вычислительный процесс выходит за пределы оператора switch. Если совпадения значений не произошло ни для одного из case-блоков, то выполняются операторы блока default (если он есть) или вычислительный процесс сразу выходит за пределы оператора switch.

Вопрос №32. Оператор цикла с предусловием while.

Во многих алгоритмах встречается элементарная конструкция, приведенная на блок-схеме. Она соответствует многократному (циклическому) повторению оператора (или нескольких операторов в блоке), пока некоторое выражение не станет равным нулю (получит значение «ложь»).

Это записывается так:

while(выражение)

оператор

Такая конструкция называется циклом с предусловием.

Вопрос №33. Оператор цикла с предусловием for.

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

Это записывается так:

for(выраж1; выраж2; выраж3)

оператор

В круглых скобках любое из выражений можно опустить, но точки с запятой обязательно должны присутствовать. Если опущено выраж2, то оно считается =1. Поэтому конструкция:

for(;;); является бесконечным циклом (как, впрочем, и конструкция while(1);

Вопрос №34. Оператор цикла с постусловием do … while.

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

Это записывается так:

do

оператор

while(выражение);

Такая конструкция называется циклом с постусловием.

Цикл с постусловием применяется на практике значительно реже, чем цикл с предусловием.

Лекции 6-7. Управляющие конструкции языка С» (продолжение).

Вопрос №35. Оператор break.

Иногда возникает необходимость прервать выполнение тела цикла и «досрочно» выйти за пределы цикла. Это можно сделать, разместив в теле цикла оператор break. Это оператор вызывает «безусловный переход» в точку программы, расположенную непосредственно за циклом. Оператор break может использоваться в любом операторе цикла, а также в операторе множественного выбора switch.

Пример: программа удаляет «незначащие» символы в конце строки s.

# include <stdio.h>

#include <stdlib.h>