Показаны различия между двумя версиями страницы.
bb:lessons:second-basictypes [2018/11/30 01:13] 127.0.0.1 внешнее изменение |
bb:lessons:second-basictypes [2020/10/29 07:08] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Урок второй. Базовые типы данных, | ||
- | Что такое тип данных? | ||
- | |||
- | Мы знаем, что компьютеры работают с данными. А что такое данные? | ||
- | |||
- | Например, | ||
- | |||
- | ===== Базовые типы ===== | ||
- | |||
- | Это самые простые, | ||
- | * INTEGER (целые числа, точные вычисления) | ||
- | * REAL (дробные числа, вычисления с округлением) | ||
- | * BOOLEAN (логические значения) | ||
- | * CHAR (символы для печати) | ||
- | * SET (последовательности) | ||
- | |||
- | Попробуем вывести в журнал значения переменных всех типов | ||
- | |||
- | < | ||
- | |||
- | IMPORT Log; | ||
- | |||
- | PROCEDURE Do*; | ||
- | BEGIN | ||
- | Log.Int(2000 + 14); Log.Ln; | ||
- | Log.Real(355 / 113); Log.Ln; | ||
- | Log.Bool(5 > 2); Log.Ln; | ||
- | Log.Char(' | ||
- | Log.Set({0, | ||
- | END Do; | ||
- | |||
- | END MyTypes.</ | ||
- | |||
- | Что же мы увидим в журнале после выполнения команды '': | ||
- | |||
- | < | ||
- | 3.141592920353983 | ||
- | $TRUE | ||
- | A | ||
- | {0..5, 20} | ||
- | </ | ||
- | |||
- | Первой строчкой выведен результат вычисления операции сложения. Складываются целые числа, значит и результат будет тоже целочисленным.\\ На второй строчке выводится дробный результат деления двух целых чисел.\\ На третьей строчке мы видим, как выводится значение логического типа (очевидно, | ||
- | |||
- | ===== Составные типы ===== | ||
- | |||
- | Из базовых типов полезно составлять другие, | ||
- | |||
- | ===== Массивы ===== | ||
- | |||
- | Массивы состоят из компонентов одинаковых типов. Это означает, | ||
- | |||
- | Массив сам по себе интересная штука. Он сильно облегчает программисту жизнь. Подумайте сами, что легче - тысячу раз объявить переменную типа INTEGER или один раз объявить массив из тысячи элементов типа INTEGER? Конечно, | ||
- | |||
- | < | ||
- | |||
- | VAR | ||
- | |||
- | i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63, i64, i65, i66, i67, i68, i69, i70, i71, i72, i73, i74, i75, i76, i77, i78, i79, i80, i81, i82, i83, i84, i85, i86, i87, i88, i89, i90, i91, i92, i93, i94, i95, i96, i97, i98, i99: INTEGER; | ||
- | |||
- | a: ARRAY 100 OF INTEGER; | ||
- | |||
- | END MyArrays.</ | ||
- | |||
- | Как видите, | ||
- | Следом объявлен массив '' | ||
- | |||
- | Конечно же, массивы могут состоять не только из целых чисел. Пожалуйста, | ||
- | |||
- | Но элементами массива могут быть не только базовые типы, но и другие массивы. Вот пример многомерного массива: | ||
- | |||
- | '' | ||
- | |||
- | Как этот четырёхмерный массив должен выглядеть, | ||
- | |||
- | '' | ||
- | |||
- | Если такой двумерный массив заполнить произвольными символами и затем вывести в журнал, | ||
- | < | ||
- | Q Q T A A I E I U X | ||
- | V A D Y A O O O V B | ||
- | T P A H B [ L [ \ X | ||
- | Z L H K V E J I F \ | ||
- | N W J J U R O G Q A | ||
- | ] E O Y P T V U [ Y | ||
- | X B K S A T R T ^ J | ||
- | P Y A H D E L J Q Y | ||
- | S C F L Z J Q M W Q | ||
- | C U J Z I I Y F ] C</ | ||
- | |||
- | Программа, | ||
- | |||
- | < | ||
- | |||
- | IMPORT ObxRandom, Log; | ||
- | |||
- | VAR | ||
- | matrix10x10: | ||
- | |||
- | PROCEDURE Do*; | ||
- | VAR i, j: INTEGER; s: ARRAY 10 OF CHAR; | ||
- | BEGIN | ||
- | FOR i := 0 TO 9 DO | ||
- | FOR j := 0 TO 9 DO | ||
- | matrix10x10[i, | ||
- | END | ||
- | END; | ||
- | FOR i := 0 TO 9 DO | ||
- | FOR j := 0 TO 9 DO | ||
- | Log.Char(matrix10x10[i, | ||
- | END; | ||
- | Log.Ln | ||
- | END | ||
- | END Do; | ||
- | |||
- | END MyArrays.</ | ||
- | |||
- | Как видите, | ||
- | |||
- | Индексация к двумерному массиву, |