КАТЕГОРИИ: Архитектура-(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) |
Расширение оператора if
Оператор if Подсчитаем число строк в файле. Это можно сделать путем счета числа символов "новая строка" в файле. Пример: /*подсчет строк */ #include <stdio.h> main() { int ch; int line_count=0; while((ch = getchar())!= EOF) if(ch == '\n') line_count++; printf("Мы насчитали %d строк. \n", line_count); } Оператор if служит указанием компьютеру увеличить значение переменной line_count на 1, если только что прочитанный символ, содержимое переменной ch, представляет собой символ "новая строка". Что происходит в случае, когда значение переменной ch не является символом "новая строка"? Тогда в цикле while производится чтение следующего символа. Оператор if считается одиночным оператором, начинающимся от ключевого слова if и завершающимся символом "точка с запятой". Модифицируем программу. Подсчитаем одновременно число символов и строк в файле: /* подсчет числа строк и символов */ #include <stdio.h> main() { int ch = 0; int line_count = 0; int char_count = 0; while((ch = getchar())!= EOF) { char_count++; if(ch == '\n') line_count++; } printf("Мы насчитали %d символов и %d строк.\n", char_count, line_count); } Теперь в цикл while входят два оператора, поэтому мы использовали фигурные скобки, чтобы отметить начало и конец цикла. Простейшей формой оператора if является if(выражение) оператор Под выражением здесь понимаем условное выражение. С его помощью сравниваются значения двух величин. Если такое выражение истинно, то оператор выполняется. В противном случае он пропускается. В общем случае в качестве условия может быть использовано любое выражение, и если его значение равно 0, то оно считается ложным. Оператор может быть простым или составным, т. е. блоком. Пример: /* пример одиночного оператора и блока */ #include <stdio.h> main() { int i; i=getchar(); if(i > 5) /* одиночный оператор*/ printf("Значение больше 5.\n"); if(i < 5) { /* составной оператор*/ printf("Значение\n"); printf(" меньше 5.\n"); } } Простая форма оператора if позволяет выбрать оператор, возможно, составной, или пропустить его. Язык Си предоставляет также возможность выбрать любой из двух операторов путем использования конструкции if-else. Напишем программу, заменяющую каждый символ из таблицы ASCII на следующий символ, кроме символа "новая строка". Пример: /* код_1*/ #include <stdio.h> main() { char ch; while ((ch=getch())!= EOF) { /* оставить символ "новая строка неизменным" */ if (ch == '\n') putchar(ch); else /* заменить остальные символы*/ putchar(ch + 1); } } Общий вид оператора if-else выглядит следующим образом: if(выражение) оператор else оператор Если выражение истинно, то выполняется первый оператор, а если ложно, то выполняется оператор, следующий за ключевым словом else. Операторы могут быть простыми или составными.
Простая конструкция if позволяет нам выбрать, выполнить или нет некоторое действие; конструкция же if-else дает возможность выбрать одно из двух действий. Подведем итоги. Оператор if имеет две формы: if(выражение) оператор; и if(выражение) оператор1; else оператор2; Если в результате вычисления значения выражения получено значение "истина" (ненулевое значение), то в обоих формах оператора if выполняется оператор1. Если вычисленное значение выражения равно значению "ложь" (нулевое), тогда выполнение оператора if, представленного в первой форме, заканчивается, а в операторе, имеющем вторую форму, выполняется оператор 2. Совместное использование обеих форм оператора if приводит к неоднозначности, называемой "проблемой висящего else". Например, вложенный оператор if if(e1) if(e2) оператор1; else оператор2; может быть интерпретирован так if (e1) if(e2) оператор1; else оператор2; или как if(e1) if(e2) оператор1; else оператор2; Эта неоднозначность разрешается в языке Си с помощью правила, в соответствии с которым часть else оператора всегда относится к синтаксически самому правому, игнорируя любые отступы, оператору if без части else. Следовательно, первая интерпретация является интерпретацией, принятой в языке Си.
if(e1) if(e2) оператор1; else ; /* точка с запятой здесь обозначает пустой оператор*/ else оператор2; Для явного указания намерений программиста можно использовать и фигурные скобки. Например, обе вышеприведенные интерпретации можно записать явно так: if(e1) { if(e2) оператор1; else оператор2 } и if(e1) { if(e2) оператор1; } else оператор2;
Дата добавления: 2014-01-05; Просмотров: 538; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |