Основные синтаксические конструкции

Материал из Deeptown Manual
Версия от 16:58, 21 сентября 2007; Korvin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

В этой главе будут рассмотрены основные синтаксические конструкции, которые так или иначе присутствуют в любом современном языке программирования, будь то функциональный или объектно-ориентированный язык. Это констркции условного перехода и циклы. Без подобных конструкций (или их аналогов) невозможно написать программу, сложнее чем "Hello world".

Содержание


Условный оператор

Условный оператор это основа основ любого языка программирования. На основании условия, то есть значения некоторого выражения принимается решение, куда следует двигаться программе. В основе всех условных операторов лежит булева логика, при которой любое утверждение сводится к двум понятиям: истина и ложь. Если условие истинно, то управление программы движется в одну сторону. Если условие ложно — в другую. Таким образом, в каждый момент времени делается выбор всего из двух направлений. Более сложные условия строятся путем последовательного прохождения элементарных, двоичных условий.

В языке K++, для проверки условия служит оператор if, так же называемый условным оператором. Синтаксис этого оператора знаком наверное любому человеку, который имеет хоть какое-то представление о языках программирования: <source lang="kpp"> if (/* выражение условия */) {

   /* тело оператора */

} </source>

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

Истинным, считается любой существующий объект, а так же логические операторы сравнения и отношения (такие как ==, !=, == и т. д), если их значение истинно (то есть, объекты соответствуют указанному отношению), а так же специальное ключевое слово true, которое считается истинным всегда.

Ложными, соответственно, считаются несозданные объекты, а так же операторы отношения, если их значение ложно (объекты не соответствуют отношению). Ложными так же считаются объекты, соответствующие ключевым словам false и null.

Для ясности приведем несколько выражений, а так же укажем соответствующие им логические значения: <source lang="kpp"> //Выражение булево значение true true false false null false var x; x false var y; y = 1; true var int z; z true 0 true 1 true "hello world" true 0 == 1 false 5 < 6 true 2 > 3 false 5 >= 5 true 'a' != 'b' true </source>

Обратите внимание на следующие моменты:

  • Неинициализированная динамическая переменная x считается ложной (равна null)
  • Инициализированная динамическая переменная y считается истинной (объект создан)
  • Неинициализированная статическая переменная z считается истинной (объект создан)
  • 0, так же как любой другой созданный объект считается истиной, в отличие от C++.
  • условие 5 >= 5 считается истиной, так как формулируется как "5 больше 5 или равно 5"

По поводу нуля, следует поговорить отдельно. C++ не является в полной мере объектно-ориентированным языком, фактически в нем ОО система является абстракцией, позволяющей оперировать все теми же понятиями стандартных типов данных и памяти, но на более высоком уровне. Все что мы имеем на этапе выполнения программы это кусочки памяти, которые мы считаем объектами. Поскольку числа в нем являются совершенно определенной сущностью, подобные вольности возможны.

В языке К++ все наоборот. Все с чем он оперирует — это объекты. Провести грань между стандартными типами данных и пользовательскими невозможно. Числа, что фигурируют в программе так же являются объектами. Даже числовые константы которые записываются в выражениях — это тоже объекты (это уже было показано во введении)


Если нам необходимо организовать ветвление, то есть в случае истинности, выполнить один участок кода, а в случае ложности другой, то применяется расширенная форма оператора if-else:

<source lang="kpp"> if (/* выражение условия */) {

   /* код, соответствущий истине */

} else {

   /* код, соответствущий ложи */

} </source>


Оператор множественного выбора (switch)

Циклы

Цикл while

Цикл for

Цикл foreach

Взаимозаменяемость циклических структур

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты