мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Последняя версияСледующая версия справа и слева
pascal:basics [04/07/2015 11:30] ocapascal:basics [04/07/2015 11:42] oca
Строка 78: Строка 78:
 </code> </code>
  
 +Объекты программы могут быть связаны описанием.
  
 +<code pascal|Cвязь между объектами>
 +const 
 +  n = 10;                               // Константа n определяет длину массива
 +type
 +  Arr10 = array[1 .. n] of integer;     // Используя n, описываем целый тип массивов 
 +var
 +  A,B : Arr10;                          // Используем описание типа Arr10 для описания переменных A, B 
 +</code>
 +
 +Запомните правило - **если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано заранее**. Например, если вы используете константу для описания массива (как в примере), то она должна быть описана выше по коду. Из этого правила есть единственное исключение, связанное с использованием указателей.
 +
 +Учтите, что библиотечные объекты, т.е. объекты системные или описанные в библиотеках, подключённых с помощью //uses//, описывать не надо и на них можно ссылаться из любого места. Но, как мы узнаем позже, их имена можно "перекрыть"
 +
 +Ниже приведён неправильный код, где ничего не описывается заблаговременно.
 +
 +<code pascal|Так нельзя! >
 +
 +var
 +  A,B : Arr10;                         // А что это?                 
 +  
 +type
 +  Arr10 = array[1 .. n] of integer;    // И сколько же это будет? 
 +    
 +const 
 +  n = 10;
 +   
 +</code>
 +
 +В раздел описаний может входить несколько "однотипных" подразделов описаний.
 +
 +<code pascal|"Одинаковые" подразделы>
 +
 +var
 +  i, j : integer;                       // Описали часть переменных
 +
 +const 
 +  n = 10;                               // Спохватились и описали константу n
 +
 +var
 +  A,B : array[1 .. n] of integer;       // "Дописали" ещё часть переменных
 +</code>
 +
 +=== Полный пример ===
  
-Подразделы могут следовать в любом порядке, но запомните правило - **если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано заранее**. Например, если вы используете константу для описания массива (как в примере), то она должна быть описана выше по коду. Учтите, что библиотечные объекты, т.е. объекты системные или описанные в библиотеках, подключённых с помощью //uses//, описывать не надо и на них можно ссылаться из любого местаНо, как мы узнаем позже, их имена можно "перекрыть"!+Подразделы могут следовать в любом порядке и повторяться. 
  
 В примере приводится "канонический" порядок следования подразделов - именованные константы, типы, переменные. За ними часто следуют описания одной или нескольких процедур и функций, которых в примере нет. Затем порядок может повториться. Это делается, чтобы разбить все объекты, используемые в программе "по смыслу" - типы, определённые пользователем, процедуры, работающие с этими типами и вспомогательные объекты - константы и служебные переменные.  В примере приводится "канонический" порядок следования подразделов - именованные константы, типы, переменные. За ними часто следуют описания одной или нескольких процедур и функций, которых в примере нет. Затем порядок может повториться. Это делается, чтобы разбить все объекты, используемые в программе "по смыслу" - типы, определённые пользователем, процедуры, работающие с этими типами и вспомогательные объекты - константы и служебные переменные. 
Строка 88: Строка 132:
 <code pascal|Пример раздела описаний> <code pascal|Пример раздела описаний>
  
 +...                      // Здесь могли бы быть заголовок и раздел импорта 
 const                    // Начался 1-й раздел констант const                    // Начался 1-й раздел констант
   Pi = 4.0;              // Описание (именованной) константы   Pi = 4.0;              // Описание (именованной) константы
Строка 130: Строка 175:
  
  
- 
-<code pascal|Cвязь между объектами> 
-const  
-  n = 10;                               // Константа n определяет длину массива 
-type 
-  Arr10 = array[1 .. n] of integer;     // Используя n, описываем целый тип массивов  
-var 
-  A,B : Arr10;                          // Используем описание типа Arr10 для описания переменных A, B  
-</code> 
- 
-Из этого правила есть единственное исключение, связанное с использованием указателей. 
- 
-Ниже приведён неправильный код, где ничего не описывается заблаговременно. 
- 
-<code pascal|Так нельзя! > 
- 
-var 
-  A,B : Arr10;                         // А что это?                  
-   
-type 
-  Arr10 = array[1 .. n] of integer;    // И сколько же это будет?  
-     
-const  
-  n = 10; 
-    
-</code> 
- 
-В раздел описаний может входить несколько "однотипных" подразделов описаний. 
- 
-<code pascal|"Одинаковые" подразделы> 
- 
-var 
-  i, j : integer;                       // Описали часть переменных 
- 
-const  
-  n = 10;                               // Спохватились и описали константу n 
- 
-var 
-  A,B : array[1 .. n] of integer;       // "Дописали" ещё часть переменных 
-</code>