Студопедия

КАТЕГОРИИ:


Архитектура-(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

Запись в математике   Запись на Си  
  sin(х)> 0.351  
  1оg(а) <= роw(с, 2)  
  соs(b) - 0.6 * а!= 0  
  fabs(t - 2.) = = 7.65 – pоw((d,1./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; Просмотров: 296; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.