Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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.
Задание:
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; просмотров: 239. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |