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

Материал из 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

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

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

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