КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Укороченный оператор условного перехода
Операторы условной передачи управления ... Правила составления и использования Программирование задачи
Программирование указанных в алгоритме переходов требует использования специальных управляющих операторов Си. Таковыми являются операторы передачи управления. По принципу действия операторы передачи управления делятся на услоные и безусловные. Рассмотрим основные операторы передачи управления. Структура оператора: goto m; где goto - ключевое слово (перейдти к); m - метка оператора, которому передаётся управление; ; - признак простого оператора. Метка - буквенно-цифровое обозначение, позволяющее выделить (пометить) требуемый оператор в ряду других. 1. Под меткой понимается идентификатор аналогичный имени переменной 2. Идентификатор метки составляется пользователем/ 3. Указанная в операторе goto метка записывается перед помечаемым оператором, отделяясь от него двоеточием. 4. Оператор, помеченный меткой m, может располагаться в соответствии с требованием алгоритма решения выше или ниже самого оператора goto, как указано в следующих фрагментах программы: ...... goto f3; met2: scanf(...); ...... f3: v=.36; goto met2;
В первом фрагмента управление передаётся от оператора goto f3; вниз – оператору v=.36;, перед которым проставлена его метка. При этом расположенная |между ними часть программы (последовательность операторов) выполнена не будет. Во втором - управление передаётся вверх на повторный ввод переменных.
5. Оператор, записанный под goto, должен быть помечен меткой другого оператора управления, иначе участок программы, записанный ниже goto, не будет выполняться:
... goto А; В: х1=23.; А: х2=х- 15.; 6. Метка m может проставляться только перед простым оператором. При
goto М1; М1:; {… }
7. Запрещено делать переходы через выражения, содержащие инициализацию объектов: goto m; float f=0.0; m: f=f+1; Внимание! Использование оператора безусловной передачи управления допускается, но не поощряется правилами структурного программирования, т.к. позволяет создавать нестандартные структуры с немотивированными передачами управления.
В Си существует один оператор условной передачи управления (условного перехода), используемый в двух вариантах - укороченном и полном. Укороченный оператор условного перехода используется для реализации структуры неполного ветвления. Структуры оператора: if (Р) ветвь_ДА; или if (Р) ветвь_ДА;
if - ключевое слово (если); Р - выражение, соответствующее проверяемому условию: ветвь_ДА - выполняемый оператор (простой или составной). Выражение Р, как и проверяемое условие, может быть логическим или арифметическим. В большинстве случаев в качестве Р применяются логические выражения. Логическое выражение - совокупность операндов, соединённых знаками логических действий. В простейшем варианте логическое выражение имеет структуру операции отношения: а g b где а и b - операнды (арифметические выражения), подлежащие сравнению; g - символ операции отношения. В качестве операций отношения используются стандартные (табл. 4.2).
Таблица 4.2
Примеры записи логических выражений (табл. 4.3).
Таблица 4.3
Операции отношения по приоритету выполнения ниже всех арифметических, но между собой делятся на группы с большим и меньшим приоритетом: операции <, >, <=, >= имеют одинаковый больший приоритет и выполняются после арифметических операций; операции = =,!= имеют одинаковый меньший приоритет и выполняются после отношений, принадлежащих к старшей группе.
Внимание! Особенностью языка Си является отсутствие логических констант. Их роль выполняют целые константы 0 (ноль) и 1 (не ноль).
Результатом вычисления логического выражения является целая константа 1 (ИСТИНА), если условие выполняется, либо 0 (ЛОЖЬ), в противном случае. Так, результат вычисления выражения с<2. при с=3.0 есть ноль (ЛОЖЬ), а при с = 1.5 - единица (ИСТИНА). Арифметические выражения в операторе if используются относительно редко. Результат вычисления арифметического выражения есть константа. Если полученная константа равна нулю - результат проверки есть ЛОЖЬ. Если значение константы не равно нулю - результат проверки есть ИСТИНА. Так, проверка выражения 4-z2 сводится к анализу его результата. Если переменная z целочисленная и имеет значение 2 то результат проверки : 4-22 =0 ЛОЖЬ. При любом другом значении z получаемая константа не равна нулю, следовательно результат проверки - ИСТИНА. Внимание! Проверка равенства нецелых операндов (хотя бы один является вещественным), как правило, безрезультатна. Это обусловлено особенностью представления вещественных констант в ЭВМ с использованием многоразрядной дробной мантиссы. Попытка выполнения над ними операции = = приводит к не идентичности результатов за счет погрешности в младших разрядах мантиссы.
Следовательно, анализ на ноль не целых операндов не будет давать тойчивых результатов при проверке (0.0000001 ¹ 0). Укороченный условный оператор выполняется следующим образом: • вычисляется логическое (арифметическое) выражение Р; • результат вычисления анализируется. Если он не равен нулю (ИСТИНА), выполняется ветвь_ДА, а затем управление передаётся оператору, следующему за if. Если результат равен нулю (ЛОЖЬ) ветвь_ДА не выполняется и управление передаётся оператору, следующему за if.
Так фрагменты программ if(t<=0.5) x1=g; x2=1.7;
if(t<=0.5) {x1=g; n=1;} x2=1.7;
работают следующим образом: • вычисляется логическое выражение (t<=0.5); • если результат ИСТИНА (например, при t=0.4), то будет выполнен оператор ветви ДА (простой х1=g; или составной {х1=g; n=1;}), а затем следующий за if (х2=1.7;); • если результат ЛОЖЬ (например, при t=0.6) оператор ветви ДА (простой х1=g; или составной {х1=g; n=1;}) игнорируется и управление передаётся следующему за if оператору (х2=1.7;). Следовательно, стандартная структура укороченного оператора if позволяет реализовать неполное ветвление при расположении ветви «ДА» непосредственно под проверяемым условием. Возможно использование укороченного if для реализации второго варианта структуры неполного ветвления(расположение ветви «НЕТ» под проверяемым условием). При этом в качестве ветви ДА применяется gоtо m; и оператор if принимает вид
if(B) goto m;
Дата добавления: 2014-01-07; Просмотров: 323; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |