русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Управляющая конструкция if - else.


Дата добавления: 2015-06-12; просмотров: 966; Нарушение авторских прав


Конструкция if-else используется для принятия решения. Вспомните развилку дорог, когда вы можете пойти либо так, либо иначе. Для наглядности рассмотри её работу на простой программе. Пусть пользователь вводит два целых числа, и программа должна вывести большее из них.

Листинг 5.3

#include <stdio.h>

int main(void){

int a, b;

printf("Vvedite dva celih chisla:");

scаnf("%d %d", &a, &b);

if (a > b)

printf("%d naibolshee chislo\n", a);

else

printf("%d naibolshee chislo\n", b);

return (0);

}

Теперь разберемся с синтаксисом конструкции if-else.

Сначала идет ключевое слово if (с английского «если») далее в скобочках записано условие, которое проверяется (в нашем случае а больше b). Следом записан ОДИН оператор, который должен выполняться, если условие истинно (в нашем случаеprintf("%d naibolshee chislo\n", a);) , потом ключевое слово else и следом за ним, ОДИН оператор, который должен выполняться, если условие ложно (в нашем случае printf("%d naibolshee chislo\n", b);).

Формально синтаксис конструкции if-else выглядит так:

Листинг 5.4

if (логическое выражение) оператор1; else оператор 2;

Он работает следующим образом. Сначала вычисляется логическое выражение. Если оно истинно (т. е. отлично от нуля), выполняется оператор1. Если выражение ложно (т. е. его значение равно нулю), то выполняется оператор2.

Кстати, блок else может и отсутствовать. Такая запись наывается сокращенной записью, или неполной конструкцией ветвления.

Листинг 5.5

if (логическое выражение) оператор1;

В данном случае, если условие будет ложным программа ничего делать не будет. А просто продолжит своё выполнение.

Теперь остановимся на на оговорке об одном операторе. Это оговорка очень существенна. Иначе конструкция if будет работать неправильно. Для того, чтобы выполнить несколько операторов, используется составной оператор. Это обычные фигурные скобки {} записанная между ними группа операторов, воспринимается компилятором как один.



Формально:

Листинг 5.6

if (логическое выражение)

{

оператор;

оператор;

оператор;

}

else

{

оператор;

оператор;

оператор;

}

После закрывающей скобки, точку с запятой ставить не надо. Кстати, как вы уже могли заметить тело любой функции тоже заключено в составной оператор {}

Из опыта, я вам настоятельно советую всегда использовать фигурные скобки, даже если внутри них будет один оператор. Это еще одна небольшая хитрость, используемая при написании программ. Очень часто это позволяет избежать глупых ошибок.

По своей сути, оператор if проверяет в условии числовое выражение. Т.е. либо ноль ( т.е. ложь), либо не ноль (т.е. истинна). Поэтому вместо условия (a != 0), можно просто писать (a). Но пользоваться такой записью надо осторожно, часто бывает она затрудняет понимание программы.

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

Отсутствие else-части в одной из вложенных друг в друга if-конструкций может привести к неправильному понимаю записи. Для разрешения этой проблемы, используется простое правило:

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

Для примера:

Листинг 5.7

if (n > 0)

if (а > b)

z = a;

else

z = b;

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

Листинг 5.8

f ( > 0)

{

if (а > b)

z = a;

}

else

z = b;

Кстати, конструкция if является одним оператором, и для неё одной в принципе скобки не нужны, но как я уже упоминал, лучше всегда использовать фигурные скобки, дабы избежать случаев неправильного толкования записи. Потому что искать такие ошибки в программах очень тяжело. Еще, советую использовать отступы, для показания того, что и к чему относится. Это относится к стилю оформления кода. Как я уже обещал в комментариях к одному из уроков, я посвящу в будущем этой теме отдельный пост.

Теперь немного о типичных ошибках. Для проверки равенства двух чисел используется оператор «==» два знака равно. Очень часто из-за невнимательности, в условиях вместо (a==b) пишут (a=b). И программа работает не так как нужно. С точки зрения компилятора, когда написано выражение a=b истинно всегда, кроме случаев, когда b равно нулю. Мы, фактически, присваиваем переменной а значение b. Если оно не ноль, то выражение истинно, если 0 ложно. А нам-то нужно сравнить их значения. Поэтому будьте внимательны. Вот пример, с ошибкой:

Листинг 5.9

#include <stdio.h>

int main(void)

{

int a, b;

printf("Vvedite dva celih chisla:");

scаnf("%d %d", &a, &b);

if (a = b)

printf("a i b ravni\n");

else

printf("a i b ne ravni\n");

return (0);

}



<== предыдущая лекция | следующая лекция ==>
Задание для практической работы | Логические операторы. Сложные условия.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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