Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 53

При совмещении переменных сложных типов (например, dim и rec) их типы не должны конструироваться по ходу объявления, а обязаны быть введены ранее в блоке TYPE. Нарушение этого правила компилятором практически не анализируется, а последствия его могут быть самыми неприятными, вплоть до «зависания» ПЭВМ (особенно при работе с сопроцессором).

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

| VAR

| St : String[30];

| StLen : Byte absolute St;

Здесь значение StLen совмещено со значением текущей длины строки St, которое хранится в элементе строки St[0]. Не рекомендуется совмещать большие по длине переменные с меньшими. Если в последнем примере запись значения в StLen может попортить лишь строку St, то в случае

- 82 -

| VAR

| StLen : Byte;

| St : String absolute StLen;

Другие объявления;

изменение St изменит не только байт StLen, но и значения тех переменных, которые будут объявлены после St.

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

Совмещение переменных — мощное, но очень опасное при неумелом обращении средство. Помните об этом!

5.2.2. Переменные со стартовым значением или типизированные константы


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

Выполнить это требование можно, начиная программу со «скучной» переписи переменных

х := 0; у := 10;

ch := 'z';

Особенно неприятно задавать значения массивов и записей, так как это надо делать поэлементно.

Турбо Паскаль предлагает решение этой проблемы, позволяя объявлять переменные и тут же записывать в них стартовые значения. Единственное условие: из раздела описания VAR они должны переместиться в раздел (блок) CONST. Рассмотрим объявление сложных или типизированных констант (они же переменные со стартовым значением).

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

Простые значения задаются переменным обычным приравниванием после описания типа: