Просмотров-173
0

Изучение языка программирования Crystal. Типы данных

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

Онлайн среда выполнения кода  языка программирования  Crystal

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

Примечание. Для более эффективного усвоения изучаемого материала познакомьтесь с методикой и стилем познания.

Изучение языка программирования Crystal осуществляется с помощью онлайн среды программирования. Откроется окно, показанное на рисунке. Среда выполнения кода имеет поле редактора, где записывается код, кнопку “Скомпилировать и Выполнить”  и поле вывода результатов, которое появляется  после нажатия кнопки.

Среда программирования в режиме онлайн

Для сохранения написанного кода необходимо: скопировать и загрузить в файл в Загрузки ПК, сделав щелчок левой клавишей мышки по кнопке  Download.

Для дальнейшего использования сохраненного кода необходимо:

  • Открыть файл в блокноте и скопировать в буфер;
  • Скопировать из буфера в редактор среды Crystal.

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

Изучение простых типов данных

Изучение любого языка программирования начинается с изучения простых типов данных. Целочисленные типы данных  в Crystal  — знаковые  Int8(16, 32,64) и беззнаковые UInt8(16, 32,64) можно записывать с суффиксом типа, отделяемому от числа знаком подчеркивания, например, 123_i16 – тип  Int16,  и без суффикса, тогда тип по умолчанию выбирается из наиболее подходящих к числу типов: Int32, Int64 и UInt64.

Целочисленные типы данных  в Crystal можно представлять в двоичной форме, начиная с 0b: 0b1100(число 12), в восьмеричной форме, начиная с 0o: 0o123 (число 83) и в шестнадцатеричной форме, начиная с 0x: 0x012D (число 62)

Для закрепления данного материала необходимо выполнить ряд действий с целыми числами, как в области допустимых значений, так и за ее пределами. Допустимыми операторами для целых чисел являются :+ :- :* :/

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

Хорошим способом усвоения синтаксиса и семантики языка программирования является анализ ошибок выполнения кода(…и опыт сын ошибок трудных…). Вот пример.

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

Вещественные числа

В языке  Crystal есть два вещественного типа с плавающей точкой,  Float32  и  Float64,  которые соответствуют типам, определяемым IEEE: binary32 и binary64.

Запись вещественного числа также может  с суффиксом типа после символа подчеркивания и без суффикса, тип по умолчанию Float64. Например, 121.0_f32( Float32), 125.0  (Float64).

Примечание. Для разделения цифр на группы, чтобы сделать числа удобными для чтения, можно использовать символ подчеркивания. Например, 1_000_000, лучше, чем 1000000, аналогично, 1_023_000.125_321,  лучше, чем 1023000.125321.

Для закрепления данного материала необходимо выполнить ряд действий с вещественными числами, как в области допустимых значений, так и за ее пределами, используя операторы :+ :- :* :/.

Действия с вещественным типом данных в языке Crystal

Здесь также можно поэкспериментировать с целью анализа возможных ошибок при действиях с данными вещественного типа в языке программирования Crystal. Рассмотрим пример.

Ошибки с вещественным типом языка программирования Crystal

Из рисунка видно, что компилятор не может определить возможное переполнение разрядной сетки, поэтому это проблема программиста. Решается она правильным выбором типа данных. Аналогично можно экспериментируя, познавать различные исключительные ситуации. Компилятор — хороший учитель.

Символьные и строковые типы

Символьный тип(Char) в языке  Crystal представляется в Unicode в кодировке UTF-8.  Это означает, что для стандартных символов коды ASCII (0-127) и коды UTF-8 идентичны и занимают один байт памяти. Другие символы требуют от 2 до 4 байтов. В частности, то, что начинается с 110, представляет собой двухбайтную последовательность, то, что начинается с 1110, представляет собой трехбайтную последовательность, и то, что начинается с 11110, представляет собой четырехбайтную последовательность.

Записывается UTF-8 символ, окруженный одинарными кавычками: ‘a’ ‘Z’ ‘5’.

Строковый тип(Stringпредставляет неизменяемую последовательность символов в кодировке UTF-8. Создается String  с помощью строкового литерала, заключая UTF-8 символы в двойные кавычки: например, «hello world»

Константа(тип Symbol) в языке  Crystal определяется именем, без необходимости давать ей числовое значение, например, без пробелов :hello, :good_bye, и с пробелами и символами — :»symbol with spaces».

Изучение массива данных

Особым типом данных являются массивы(Array). Массив это универсальная структура данных, содержащая элементы определенного типа. Массивы на языке Crysyal создается с помощью следующих литералов массива:

[1, 2, 3]         # Array(Int32)

[1, «hello», ‘x’]         # Array(Int32 | String | Char)

Массив может иметь элементы смешанного типа, это значит, что массив будет являться объединением типов, и они будут вычисляться при создании массива: либо при явном определении типа, либо используя литерал массива.

Совместные (или комбинированные) типы данных являются мощной особенностью Crystal: выражение может иметь набор из множества типов во время компиляции, и компилятор тщательно проверяет, разрешены ли все вызовы метода для всех этих типов.

При создании пустого массива мы всегда должны определить тип:

[] of Int32    # создастся как Array(Int32).new.

[]          # синтаксическая ошибка – не определен тип.

Способы объявления массивов.

  1. c=[12, 27, 31]         # Array(Int32)
  2. b=[11, "hello", 'x']    # Array(Int32 | String | Char)
  3. d=[] of Int32    # создастся как Array(Int32).new
  4. # []      # синтаксическая ошибка, не определен тип
  5. sum=c[1]+c[2]
  6. puts "Суммирование элементов массива с[]"
  7. puts sum

Можно легко добавлять значения массива с помощью оператора «<<«, но только для целых и строковых типов.

c=[12, 27, 31] << 43

puts  c[3] # результат c=[12, 27, 31, 43]

Для итерации массивов можно использовать любой оператор цикла, но лучше использовать метод «each». Он намного быстрее простого цикла «while».

            Преобразование типов

Язык программирования Crystal сильно типизирован,  поэтому надо быть очень аккуратным с преобразованиями типов. Преобразование типа  следует выполнять явно недвусмысленно и ясно для компилятора Crystal, с помощью разных методов «to_»,хотя Crystal вполне справляется с простейшими преобразованиями автоматически, например, int8 в int32.

Например, для преобразования типа «float» в целое число можно использовать метод to_i, но следует иметь в виде, что преобразование осуществляется “отбрасыванием” дробной части без предупреждения.

 Синтаксис имеет вид;

   х = 64.34603985

   х.to_i # результат 64

Метод  to_s преобразует любой тип в тип String .Для преобразования в числа с плавающей запятой, надо использовать метод ‘to_f ‘.

Кроме того,  Crystal делает различие между двумя понятиями:

 Тип на стадии компиляции: какой тип видит компилятор, он задается с помощью «typeof»;  Тип времени выполнения: какой тип объект имеет, когда программа уже запущена; и он определяется методом «class». Но об этом позже.

Заключение

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

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

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

Как изучать простые типы данных языка программирования?

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

Процедурное программирование на языке Crystal

Кто хочет стать моим партнером в R-MONEY.RU жмите на кнопку на рисунке
Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

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

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

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 

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

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