Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
bb:lessons:second-basictypes [2014/11/16 13:23] admin Дело |
bb:lessons:second-basictypes [2016/03/31 19:21] иван_денисов |
||
---|---|---|---|
Строка 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} | ||
+ | </ | ||
+ | |||
+ | Первой строчкой выведен результат вычисления операции сложения. Складываются целые числа, значит и результат будет тоже целочисленным.\\ На второй строчке выводится дробный результат деления двух целых чисел.\\ На третьей строчке мы видим, как выводится значение логического типа (очевидно, что пять больше двух и это истина, | ||
+ | |||
+ | ===== Составные | ||
+ | |||
+ | Из базовых типов полезно составлять другие, | ||
+ | |||
+ | ===== Массивы ===== | ||
+ | |||
+ | Массивы состоят из компонентов одинаковых типов. Это означает, | ||
+ | |||
+ | Массив сам по себе интересная штука. Он сильно облегчает программисту жизнь. Подумайте сами, что легче - тысячу раз объявить переменную | ||
+ | |||
+ | < | ||
+ | |||
+ | 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.</ | ||
+ | |||
+ | Как видите, | ||
+ | Следом объявлен массив '' | ||
+ | |||
+ | Конечно же, массивы могут | ||
+ | |||
+ | Но элементами массива могут быть не только базовые типы, но и другие массивы. Вот | ||
+ | |||
+ | '' | ||
+ | |||
+ | Как этот четырёхмерный массив должен выглядеть, довольно сложно представить. Надо что-то попроще. Давайте попробуем увидеть, как выглядит содержимое двумерного массива символов из 10 строк и 10 столбцов | ||
+ | |||
+ | '' | ||
+ | |||
+ | Если такой двумерный массив заполнить произвольными символами и затем вывести в журнал, то получится что-то вроде этого: | ||
+ | < | ||
+ | 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.</ | ||
+ | |||
+ | Как видите, здесь уже используется вычисление индексов массива для доступа к его элементам. Причём это вычисление делается внутри двух циклов. Циклы мы рассмотрим на следующем уроке, а тут | ||
+ | |||
+ | Индексация к двумерному массиву, |