Структура программ с условиями

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

К примеру, мы вводим с клавиатуры целое число. Если это число больше десяти, то программа должна выполнить одно действие, иначе — другое. Реализуем этот алгоритм на C++ с помощью конструкции ветвления.

  • Оператор if
  • Пример конструкции ветвления

#include using namespace std; int main() < setlocale(0, «»); double num; cout > num; if (num < 10) < // Если введенное число меньше 10. cout else < // иначе cout return 0; >

Если вы запустите эту программу, то при вводе числа, меньшего десяти, будет выводиться соответствующее сообщение.

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

Оператор if

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

Основы программирования: структура программ

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

Пример конструкции ветвления

if (num < 10) < // Если введенное число меньше 10. cout else < // иначе cout

Здесь говорится: «Если переменная num меньше 10 — вывести соответствующее сообщение. Иначе, вывести другое сообщение».

Усовершенствуем программу так, чтобы она выводила сообщение, о том, что переменная num равна десяти:

if (num < 10) < // Если введенное число меньше 10. cout else if (num == 10) < cout else < // иначе cout

Здесь мы проверяем три условия:

  • Первое — когда введенное число меньше 10-ти
  • Второе — когда число равно 10-ти
  • И третье — когда число больше десяти

Заметьте, что во втором условии, при проверке равенства, мы используем оператор равенства — == , а не оператор присваивания, потому что мы не изменяем значение переменной при проверке, а сравниваем ее текущее значение с числом 10.

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

Каждому оператору if соответствует только один оператор else . Совокупность этих операторов — else if означает, что если не выполнилось предыдущее условие, то проверить данное. Если ни одно из условий не верно, то выполняется тело оператора else .

Если после оператора if , else или их связки else if должна выполняться только одна команда, то фигурные скобки можно не ставить. Предыдущую программу можно записать следующим образом:

#include using namespace std; int main() < setlocale(0, «»); double num; cout > num; if (num < 10) // Если введенное число меньше 10. cout

Такой метод записи выглядит более компактно. Если при выполнении условия нам требуется выполнить более одной команды, то фигурные скобки необходимы. Например:

If else. Конструкция логического выбора if. Лесенка if — else if. Примеры использования. Урок #12.

Хорошенько потренируйтесь, попробуйте придумать свой пример с ветвлением. Когда поймете, что поняли эту тему, можете смело приступать к следующему уроку.

Источник: code-live.ru

Лекция № 4. Структура программы. Операции. Выражения

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

Этот результат установлен Боймом и Якопини еще в 1966 году путем доказательства того, что любую программу можно преобразо­вать в эквивалентную, состоящую только из этих структур и их комбинаций. Следование, ветвление и цикл называют базовыми конструкциями структурного программирования.

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

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

Читайте также:
В каких вузах программа двух дипломов

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

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

Рис. 1.2. Вложение базовых конструкций В большинстве языков программирования высокого уровня существует несколько реализаций базовых структур. В С++ есть три вида циклов и два вида ветвлений (на два и на произвольное количество направлений).

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

    Оператор «выражение»

    Операторы ветвления

    Условный оператор if

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

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

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

    Рис. 3.1. Структурная схема оператора if Примеры: if (а <0) b = 1; // 1if (ad || a==0)) b++; else // 2 if (a else // 3 if (a++) b++; // 4 if (b>a) max = b; else max = a; //5 В примере 1 отсутствует ветвь else.

    Подобная конструкция называется «пропуск оператора», поскольку присваивание либо выполняется, либо пропускается в за­висимости от выполнения условия. Если требуется проверить несколько условий, их объединяют знаками логиче­ских операций. Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие а

    Если опустить внутренние скобки, будет выполнено сначала логическое И, а потом — ИЛИ. Оператор в примере 3 вычисляет наименьшее значение из трех переменных. Фи­гурные скобки в данном случае не обязательны, так как компилятор относит часть else к ближайшему if.

    Пример 4 напоминает о том, что хотя в качестве выражений в операторе if чаще всего используются операции отношения, это не обязательно. Конструкции, подобные оператору в примере 5, проще и нагляднее записывать в виде условной операции (в данном случае: max = (b > а) ? b : а;). Рис. 1.4. Мишень. Пример. Производится выстрел по мишени, изображенной на рис. 1.4. Опреде­лить количество очков.

    #include int main() float x, у; int kol; cout n»; cin >> х >> у; if ( х*х + у*у < 1 ) kol = 2; else if( x*x + y*y < 4 ) kol = 1;else kol =0; cout return 0; > Распространенная ошибка при записи условных операторов – использование в выражени­ях вместо проверки на равенство (==) простого присваивания (=), например, if (a=l) b=0;. Синтаксической ошибки нет, так как операция присваивания формирует результат, кото­рый и оценивается на равенство/неравенство нулю.

    В данном примере присваивание пере­менной b будет выполнено независимо от значения переменной а. Поэтому в выражениях проверки переменной на равенство константе константу рекомендуется записывать слева от операции сравнения: if (l==a) b=0;. Вторая ошибка — неверная запись проверки на принадлежность диапазону.

    Например, что­бы проверить условие 0. Правильный способ записи: if(0if (обратите внимание, что в первом варианте значение переменной kol присваивается ровно один раз, а во втором — от одного до трех раз в зависимости от выполнения условий): #include int main() float x, у, temp; int kol; cout n»; cin >> x >> у; temp = x*x + y*y; kol = 0; if (temp < 4 ) kol = 1; if (temp < 1 ) kol = 2;cout Очков: » return 0; > Если какая-либо переменная используется только внутри условного оператора, рекомендуется объявить ее внутри скобок, например: if (int i = fun(t)) a -= i; else a += i; Объявление переменной в тот момент, когда она требуется, то есть когда ей необ­ходимо присвоить значение, является признаком хорошего стиля и позволяет из­бежать случайного использования переменной до ее инициализации. Объявлять внутри оператора if можно только одну переменную. Область ее видимости на­чинается в точке объявления и включает обе ветви оператора.

    Читайте также:
    Как зарабатывать на партнерских программах с помощью Youtube

    Источник: studfile.net

    Условные операторы в Си

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

    Признаком разветвляющегося алгоритма является наличие операций проверки условия. Чаще всего для проверки условия используется условный оператор if .

    Условный оператор if

    Условный оператор if может использоваться в форме полной или неполной развилки.

    if (Условие)
    БлокОпераций1;
    >
    if (Условие)
    БлокОпераций1;
    >
    else
    БлокОпераций2;
    >

    В случае неполной развилки если Условие истинно, то БлокОпераций1 выполняется, если Условие ложно, то БлокОпераций1 не выполняется.

    В случае полной развилки если Условие истинно, то выполняется БлокОпераций1 , иначе выполняется БлокОпераций2 .

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

    Основными операциями, проверяемыми внутри условного блока, являются операции отношения.
    Пример на C :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    #define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
    #include
    int main()
    int k; // объявляем целую переменную k
    printf( «k= » ); // выводим сообщение
    scanf( «%d» , // вводим переменную k
    if (k >= 5) // если k>5
    printf( «%d >= 5» , k); // выводим «ЗНАЧЕНИЕ >= 5»
    else // иначе
    printf( «%d < 5» , k); // выводим «ЗНАЧЕНИЕ < 5»
    getchar(); getchar();
    return 0;
    >

    Условный оператор

    Результат выполнения

    Оператор if может быть вложенным.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    #define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
    #include
    #include // для использования функции system
    int main() int key; // объявляем целую переменную key
    system( «chcp 1251» ); // переходим в консоли на русский язык
    system( «cls» ); // очищаем окно консоли
    printf( «Введите номер пункта, 1 или 2: » );
    scanf( «%d» , // вводим значение переменной key
    if (key == 1) // если key = 1
    printf( «n Выбран первый пункт» ); // выводим сообщение
    else if (key == 2) // иначе если key = 2
    printf( «n Выбран второй пункт» ); // выводим сообщение
    else // иначе
    printf( «n Первый и второй пункты не выбраны» ); // выводим сообщение
    getchar(); getchar();
    return 0;
    >

    Результат выполнения
    Вложенный оператор if
    Вложенный оператор if
    Вложенный оператор if

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    #define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
    #include
    #include // для использования функции system
    int main() int key; // объявляем целую переменную key
    system( «chcp 1251» ); // переходим в консоли на русский язык
    system( «cls» ); // очищаем окно консоли
    printf( «Введите номер пункта, 1 или 2: » );
    scanf( «%d» , // вводим значение переменной key
    if (key != 1) < // если key не равен 1
    if (key == 2) // если key равен 2
    printf( «n Выбран второй пункт» ); // вывод сообщения
    > // если key — не 1 и не 2, то ничего не выводится
    else // иначе, если key равен 1
    printf( «n Выбран первый пункт» ); // вывод сообщения
    getchar(); getchar();
    return 0;
    >

    Результат выполнения
    Вложенный оператор if
    Вложенный оператор if
    Вложенный оператор if

    Логические операции в условных операторах

    Условный оператор может проверять

    • одновременное выполнение всех условий (операция И — )
    • выполнение хотя бы одного из условий (операция ИЛИ — || )
    • выполнение только одного из условий (операция исключающее ИЛИ — ^ )

    Пример на Си : Найти максимум из 3 чисел

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    Пример на С++ : Найти максимум из 3 чисел

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    Тернарные операции

    Тернарная условная операция имеет 3 аргумента и возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Синтаксис тернарной операции в языке Си

    Условие ? Выражение1 : Выражение2;

    Если выполняется Условие , то тернарная операция возвращает Выражение1 , в противном случае — Выражение2 .

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

    Приведенный выше пример с использованием тернарных операций можно представить в виде

    Читайте также:
    Подключение к 1с отчетности второй программы

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    #define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf
    #include
    #include // для использования функции system
    int main() int key; // объявляем целую переменную key
    system( «chcp 1251» ); // переходим в консоли на русский язык
    system( «cls» ); // очищаем окно консоли
    printf( «Введите номер пункта, 1 или 2: » );
    scanf( «%d» , // вводим значение переменной key
    key == 1 ? printf( «n Выбран первый пункт» ) :
    (key == 2 ? printf( «n Выбран второй пункт» ) :
    printf( «n Первый и второй пункты не выбраны» ));
    getchar(); getchar();
    return 0;
    >

    Оператор ветвления switch (оператор множественного выбора)

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

    Общая форма записи

    switch (ЦелоеВыражение)
    case Константа1: БлокОпераций1;
    break ;
    case Константа2: БлокОпераций2;
    break ;
    . . .
    case Константаn: БлокОперацийn;
    break ;
    default: БлокОперацийПоУмолчанию;
    break ;
    >

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

    • вычисляется ЦелоеВыражение в скобках оператора switch ;
    • полученное значение сравнивается с метками ( Константами ) в опциях case , сравнение производится до тех пор, пока не будет найдена метка, соответствующая вычисленному значению целочисленного выражения;
    • выполняется БлокОпераций соответствующей метки case ;
    • если соответствующая метка не найдена, то выполнится БлокОперацийПоУмолчанию , описанный в опции default .

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

    Константы в опциях case должны быть целого типа (могут быть символами).

    Комментариев к записи: 30

    Задание:Используя массив типа структура, составить программу, для вывода информации про мобильные телефоны (бренд, цена, цвет, память, модель). Определить телефоны какого цвета преобладают на складе. код :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36

    #define _CRT_SECURE_NO_WARNINGS
    #include
    #include
    struct phone
    char brend[20];
    char colour[20];
    char model[20];
    int price, memory;
    >;
    void fil( struct phone mash);
    int main()
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    struct phone a[5];
    for ( int i = 0; i < 5; i++)
    printf( «Введіть бренд, ціна, колір, пам’ять, модель. n» );
    scanf( «%s %d %s %d %s» , a[i].brend, a[i].memory, a[i].model);
    >
    printf( «На складі є такі мобільні телефони: n» );
    for ( int i = 0; i < 5; i++)
    printf( «Бренд[%s],ціна [%d],колір[%s],пам’ять[%d],модель[%s] n» , a[i].brend, a[i].price, a[i].colour, a[i].memory, a[i].model);
    >
    printf( «найбільше телефонів за кольоромn» );
    for ( int i = 0; i < 5; i++)
    fil(a[i]);
    return 0;
    >
    void fil( struct phone mash)

    else
    printf( «Appropriate time has been introduced pmn» );
    >
    >

    Елена Вставская
    А где тут минуты?
    Помогите пожалуйста исправить ошибку
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Елена Вставская
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    Создание структуры множественного выбора с использованием вложенного оператора if и switch Быть знакомым с использованием булевых выражений Быть знакомым с реляционными операторами в C # Быть знакомым с логическими операторами в C # Мероприятия: Али Ромман, руководитель производственной компании, хочет знать, какие сотрудники увеличили свое производство в этом году по сравнению с прошлым годом, чтобы она могла выдать им поощрительные грамоты и премии. Используя вложенную структуру if Создайте блок-схему, а затем напишите программу для следующего: Программа, которая принимает имя и фамилию каждого работника, количество произведенных единиц в этом году и количество произведенных единиц в прошлом году. Отображает имя и сумму бонуса. Бонусы будут распределены следующим образом: Если производство в этом году больше, чем в прошлом году, и производство в этом году: 999 единиц или меньше, бонус составляет $ 25 От 1000 до 2999 единиц, бонус $ 50 От 3000 до 5999 единиц, бонус 100 $ 6000 единиц и выше, бонус составляет $ 200 2. Перепишите решение действия 1, используя инструкцию switch Вопрос: Каков результат: (a | b (! A)), если предположить, что a и b верны. Предположим, что num1 = 15.0 и num2 = 40.0, каковы результаты следующих операторов кода:

    Console.WriteLine (num1 + «больше, чем» + num2);

    Console.WriteLine (num1 + «меньше чем» + num2); >

    иначе Console.WriteLine (num1 + «равно» + num2);

    Источник: prog-cpp.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru