Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




Подобную запись можно интерпретировать двояко: else выполняется при невыполнении условие1 либо условие2. Для устранения этой неоднозначности существует правило:

else всегда относится к ближайшему if.

Таким образом, в нашем случае, ветвь else выполнится при невыполнении условие2.

 

 

Задание:

Пример работы с АОС (см. также л.р. «Работа с автоматизированной обучающей системой»): Через УПРАВЛЕНИЕ | РЕЖИМ САМОСТОЯТЕЛЬНОЙ РАБОТЫ | УСЛОВНЫЙ ОПЕРАТОР IF-ELSE + ПЕРЕКЛЮЧАТЕЛЬ (ОПЕРАТОР SWITCH) выйти к меню

Внимательно прочесть теорию (<F2>).

Вычислить предложенные примеры, например:

1)

 

if (y!=1) x=36; else x=34;

Начинается с проверки условия (y!=1) результат проверки которой равен 0, т.к. y=1, следовательно результатом всей строки будет x=36 .

2) if (y<=1) if (y==1) x=18; else x=20; 

Начинается с проверки условия (y<=1), т.к. в данном случае оно выполняется, происходит переход ко второй части строки: if (y==1) x=18; else x=20; в которой условие (y==1) выполняется (т.к. у=1). Следовательно, выполняется присваивание x=18 и дальнейшее выполнение строки прекращается. Следующие строки программы выполняются аналогично.

Следует заметить, что при выполнении заданий в этом разделе АОС, примеры программ, как правило, не помещаются на один экран, о чем сигнализирует надпись в нижнем правом углу после нажатия <F1>. Используя предложенные клавиши (Home ,End, ¯,­, PgUp, PgDown) можно просмотреть всё задание.

Переписать задание и ответы в тетрадь для лабораторных работ.

 


Контрольные вопросы

1. Что может выступать в операторе if…else в качестве условия?

2. Когда возникает неоднозначность типа «висящего else»?

 


Лабораторная работа №10

 


Программирование с использованием оператора if-else

 

Цель работы: Изучить оператор if-else и ознакомиться с правилами его использования в программах.

 

Теоретические сведения

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

Если, например, в программе используются вещественные переменные X, Y и Z, и на каком-то этапе решения задачи требуется вычислить Z, равное максимальному из чисел X и Y, то желаемый результат получается в результате выполнения оператора присваивания Z=X, либо оператора присваивания Z=Y. Поскольку значения переменных X и Y заранее не известны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания.

Это указание естественно сформулировать с использованием отношения X>Y: если это отношение при текущих значениях X и Y справедливо, то для исполнения должен выбираться оператор Z=Y (при X = Y безразлично, какой оператор выполнять, так что выполнение в данном случае оператора Z=Y дает правильный результат).

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

Синтаксис оператора:

            Вариант 1

            if(<выражение>) <оператор>

Если <выражение> определено и не равно 0 , то выполняется <оператор>.

            Вариант 2

            if(<выражение>)

                     <оператор1>

            else

                     <оператор2>

Если <выражение> определено и не равно 0 , то выполняется <оператор1>,иначе (т.е. если <выражение> равно нулю) выполняется <оператор2>.

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

         if (X<Y)

                Z=X;

         else

                Z=Y;

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

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

При формулировании алгоритма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной X на абсолютную величину этого значения: если X<0, то необходимо выполнить оператор присваивания X=-X: если же X>=0 , то текущее значение X должно оставаться без изменений, т.е. на данном этапе вообще не нужно выполнять каких-либо действий.

В таких ситуациях удобна сокращенная форма условного оператора.

Рассмотрим, к примеру, такую задачу:

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

#include <stdio.h>

#include <math.h>

Main()

{

double Angle,Result = 0;

printf("Введите значение переменной :");

scanf("%lf",&Angle);

if(Angle >= 0)

    {

    Result=sqrt(Angle);

    printf("Квадратный корень = %lf",Result);

    }

}

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

  #include <stdio.h>

  #include <math.h>

  main()

  {

  double Angle,Result=0;

  printf("Введите значение переменной :");

  scanf("%lf",&Angle);

  if(Angle >=0)

                {

                Result=sqrt(Angle);

                printf("Квадратный корень = %lf",Result);

                }

  else

                printf("Квадратный корень из %lf не извлекается", Angle);

  }

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

Примечания:

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

Например, конструкция

if(<выражение>)

    <оператор1>

    <оператор2>

Else

    <оператор3>

является ошибочной, так как <оператор2> будет рассматриваться компилятором как независимый , не относящийся к ключевому слову if, а наличие ветви else в данном случае воспринимается как ошибка. В подобных случаях следует применять составные операторы. Тогда рассмотренная конструкция будет выглядеть следующим образом:

 

if(<выражение>)

    {

    <оператор1>

    <оператор2>

    }

Else

    <оператор3>

2. Внутри одного блока каждое ключевое слово else относится к первому из предшествующих if, которое еще не имеет соответствующего else.

Например:

if(<выражение1>)

    if(<выражение2>)

                   {

                   <оператор3a>

                   <оператор3b>

                   }

    else

                   {

                   <оператор4a>

                   <оператор4b>

                   }

эквивалентна следующей:

if(<выражение1> && <выражение2>)

{

<оператор3a>

<оператор3b>

}

if(!<выражение1> && !<выражение2>)

{

<оператор4a>

<оператор4b>

}

3. В сложных конструкциях, содержащих много if и else, иногда явно указываются все else, после которых ставится пустой оператор.

Например, выражение

if(<выражение1> && <выражение2>)

{

<оператор3a>

<оператор3b>

}

if(!<выражение1>)

{

<оператор4a>

<оператор4b>

}

можно записать так:

if(<выражение1>)

if(<выражение2>)

                {

                <оператор3a>

                <оператор3b>

                }

else

       ;

Else

{

<оператор4a>

<оператор4b>

}

4. При формировании условного выражения следует обращать внимание на приоритет операций.

5. Следует помнить, что проверка на равенство осуществляется с помощью оператора ==, а оператор = в условном выражении интерпретируется как оператор присваивания. Обращайте внимание на предупреждения компилятора, которые указывают на условное выражение в операторе if.

 

Задание:

  1. Составить программу для вычисления величины x=2a+b-1, если a>=b, і х=а+0.64*102*b в противном случае.

2. Составить программу для вычисления величины y=x3, где x=abc при условии, что a+b/c равно нулю, и x=(a+b)c, если a+b/c меньше 0. Если a+b/c больше 0, вывести сообщение о том, что решений нет.

3. Составить программу для вычисления величины у=x3-24x, если число x принадлежит отрезкам [a,b] и [c,d]; y=3x/x3, если x принадлежит отрезку [a,b], но не принадлежит отрезку [c,d].

         *** Все значения величин должны быть введены с клавиатуры. ***

 

Контрольные вопросы

1. Каков синтаксис и алгоритм выполнения оператора if?

2. Каков синтаксис и алгоритм выполнения оператора if – else?

3. В чем основное отличие операторов if и if – else?

4. Каковы особенности использования условных операторов?

 


Лабораторная работа №11

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 192.

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