0

Управляющие конструкции языка программирования Crystal

Изучение языка программирования Crysal Управляющие конструкции

Управляющие конструкции языка программирования Crystal

В предыдущей статье «Простые типы данных языка программирования Crystal» мы писали, изучение языка программирования Crystal на начальном этапе целесообразно осуществлять с помощью онлайн среды программирования. А в соответствие с методикой итерационного и инкрементного подхода, рассмотренного в статье «Как правильно изучать языки программирования» на первом цикле обучения методам процедурного программирования после изучения простых типов данных следует освоить управляющие конструкции или операторы языка программирования.

В любом современном языке программирования, в том числе и в языке программирования Crystal, управляющие конструкции или операторы языка программирования представляют собой программную реализацию одной из базовых алгоритмических структур: линейной, ветвления и повторения.

В соответствие с этим в языке программирования имеется три встроенных оператора(управляющей конструкции): присваивание, условный оператор и оператор цикла, реализующих программно базовые алгоритмические структуры — линейную, ветвление и повторение, соответственно. Эти операторы языка программирования Crystal являются основой его семантики и, по своей сути, во многом схожи с аналогичными операторами языков программирования C, С++, С# и других.

Примечание.Прежде чем перейти к изучению управляющих конструкций — условный оператор и оператор цикла, необходимо рассмотреть, что такое значения truthy и falsey:

  • truthy — это значение, приводимое к логическому true операторами if, unless, while или until,
  • falsey — значение, приводимое к логическому false.

Значениями falsey могут быть только nil, false и нулевые указатели (указатели с нулевым адресом ячейки памяти). Все остальные значения truthy.

Использование оператора присваивания в программах

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

Например, присваивание локальной переменной local = 1, присваивание глобальной переменной $global = 4. В языке Crystal допускается множественное присваивание нескольким переменным одновременно, разделяя их и присваемые выражения запятой. Например,
name, age = «Crystal», 71.

Условный оператор языка программирования Crystal if

В языке Crystal для программной реализации базовой алгоритмической структуры ветвление применяется условный оператор if, который имеет различные формы представления(записи и семантики).

Основная форма условного оператора if имеет следующий синтаксис.

  1. if bool_condition
  2. x = y
  3. elsif other_ bool _condition
  4. x=z
  5. else
  6. puts “Ни одно условие не выполняется”
  7. end

Работа оператора заключается в следующем — if выполняет ветку then (x = y) если условие truthy (сводится к true), затем проверяется следующее условие и if выполняет свою ветку then (x=z) если второе условие truthy (сводится к true), в противном случае выполняет ветку else. Любая ветка, кроме первой может быть опущена.

Другие формы записи условного оператора if:
-сокращённая запись: a = 2 if bool_condition;

if возвращает значение последнего выражения, вычисленного в каждой из его ветвей:

  1. a = if 2 > 1
  2. 3
  3. else
  4. 4
  5. end

Тернарный оператор if позволяет записывать условия компактнее:

a = 1 > 2 ? 3 : 4

Условный оператор if языка программирования Crystal

При выполнении условного оператора могут возникать ошибки. Например.

Ошибки условного оператора

Управляющая конструкция unless

Оператор unless выполняет ветку then если условие falsey, в противном случае выполняет ветку else. Можно сказать, он действует как if, но наоборот:

  1. unless bool _condition
  2. then_expression
  3. else
  4. else_expression
  5. end

То же, что и:

  1. if bool _condition
  2. else_expression
  3. else
  4. then_expression
  5. end

 Этот же оператор можно записать как суффикс close_door unless door_closed?

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

Выбор из большого количества вариантов целесообразно выполнять с помощью управляющей конструкции case.

Управляющее выражение case сопоставляет одно значение с рядом других значений и выполняет оператор при совпадении.

  1. case expression
  2. when value1, value2
  3. do_something
  4. when value3
  5. do_something_else
  6. else
  7. do_another_thing
  8. end

Эта конструкция соответствует следующему условному оператору if.

  1. tmp = expression
  2. if value1 === tmp || value2 === tmp
  3. do_something
  4. elsif value3 === tmp
  5. do_something_else
  6. else
  7. do_another_thing
  8. end

Обратите внимание, что литерал === используется для сравнения, аналогичного сравнению в операторе case.

Операторы языка программирования Crystal - выбор альтернатив case

Условные операторы языка программирования Crystal.

Оператор цикла while

Синтаксис оператора while имеет вид

  1. while bool_condition
  2. x=23*y+b
  3. z=5/x+c
  4. bool_condition =some #обязательное изменение условия
  5. end

Основу семантики оператора while составляет утверждение о том, что при выполнении оператора, прежде всего, проверяется условие bool_condition, и если оно имеет значение truthy, то выполняется тело оператора и так до тех пор, пока условие не станет равным falsey, иначе бесконечный цикл.

Чтобы прервать выполнение цикла  while, нужно воспользоваться оператором break, например:

  1. a = 2
  2. while (a += 1) < 20
  3. if a == 10
  4. puts a
  5. break
  6. end
  7. end

Чтобы перейти к следующей итерации цикла while, необходимо применить оператор next. После получения инструкции next будет проверено условие while, и если оно truthy, будет выполнено тело цикла.

  1. a = 1
  2. while a < 5
  3. a += 1
  4. if a == 3
  5. next
  6. end
  7. puts a
  8. end

Именно поэтому код в теле может никогда не выполниться. Код в теле выполняется до тех пор, пока условие truthy.

Оператор цикла until

Оператор цикла until аналогичен оператору while, но с противоположным условием. Синтаксис оператора имеет вид.

  1. until bool _condition
  2. do_this
  3. end

 То же, что и:

  1. while bool _condition
  2. do_this
  3. end

Аналогично, основу семантики оператора until составляет утверждение о том, что при выполнении также проверяется условие bool_condition, и если оно имеет значение falsey, то выполняется тело оператора и так до тех пор, пока условие не станет равным, truthy, иначе бесконечный цикл.

В теле until можно также использовать инструкции break и next.

Операторы цикла языка программирования Crystal

Примеры использования операторов в программе

Изучение управляющих конструкций языка программирования  Crystal следует закреплять путем выполнения простейших задач. Такими задачами могут быть.

Найти суммы натурального ряда, четных и нечетных чисел от 0 до N.

  1. i,n= 0,100
  2. si,sc,sn = 0,0,0
  3. puts «Результат цикла while:»
  4. while i<n
  5. si=si+i
  6.  sc=sc+2*i
  7.   sn=sn+2*i+1
  8.   if i<5
  9.      puts «Итерация: i= #{i}, si= #{si},sc=#{sc},sn=#{sn}»
  10.   end
  11. i=i+1     #обязательное изменение условия
  12. end
  13.  puts «Суммы: n= #{n}, si= #{si},sc=#{sc},sn=#{sn}»

Следующая задача. Выполнить деление чисел из натурального ряда с проверкой деления на ноль.

  1. i,n= 0,10
  2.   puts
  3. puts «Результат цикла until:»
  4.   zn=-12
  5. until i>n
  6.    zn=zn+3
  7.    if zn!=0
  8.       di=3*i/zn
  9.    else
  10.      zn=zn+3
  11.       puts «Знаменатель равен нулю»
  12.    end
  13.    puts «Итерация #{i},di=#{di},z=#{zn}»
  14.   i=i+1     #обязательное изменение условия
  15. end
Примеры применения операторов языка программирования Crystal

Заключение

Операторы языка программирования Crystal это основа его семантики и возможностей программирования алгоритмов решения различных прикладных задач.

Программная реализация базовых алгоритмических структур в языке программирования Crystal позволяет применять его в структурных методах создания программного обеспечения.

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

Статьи по теме

Простые типы данных
языка программирования Crystal
Язык программирования Crystal Процедурное программирование
на языке Crystal
Процедурное программирование на языке Crystal
Структурированные
типы данных языка
программирования Crystal
Структурированные типы данных Объектно — ориентированное
программирование на языке Crystal
Объектно ориентированное программирование

Связанные материалы

Внимание! Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 
Реклама. Информация о рекламодателе по ссылкам в статье.

brasm

Пенсионер с 33 - летним педагогическим стажем

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *