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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
pascal:basics [04/07/2015 11:04] ocapascal:basics [04/07/2015 11:30] oca
Строка 52: Строка 52:
 </code> </code>
  
-Текст в **угловых скобках** "<и ">требует замены "по смыслу". Не путайте с операциями < и >!+Текст в **угловых скобках** (символы < и >требует замены "по смыслу". Не путайте с **операциями** < и >!
  
 Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем.  Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем. 
Строка 58: Строка 58:
 == Раздел описаний == == Раздел описаний ==
  
-Раздел описаний может состоять из нескольких подразделов, разбитых по категориям описываемых объектов - типов, переменных, меток и констант. Отдельными подразделами считаются каждая функция или процедура. +Раздел описаний может состоять из нескольких подразделов, разбитых по категориям описываемых объектов - типов, переменных, меток и констант. Отдельными подразделами считаются каждая функция или процедура. 
 + 
 +<code pascal|Простой пример раздела описаний>
  
-<code pascal|Пример раздела описаний> 
 const                    // Начался раздел констант const                    // Начался раздел констант
   n = 10;                // Описание (именованной) константы   n = 10;                // Описание (именованной) константы
      
-type                     // Начался раздел типов, значит - закончился раздел констант+var                      // Начался раздел глобальных переменных,  
 +                         // значит - закончился раздел констант  
 +  i, j : integer;        // 1-е описание переменных 
 +  r, q : real;           // 2-е описание переменных 
 +  k, m : integer;        // 3-е описание переменных - снова integer. Имеем право. 
 + 
 +Begin 
 +   
 +  // Обязательный раздел кода 
 +  ... 
 +End.                  // Конец всему (в этой программе)! 
 +</code> 
 + 
 + 
 + 
 +Подразделы могут следовать в любом порядкено запомните правило - **если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано заранее**. Например, если вы используете константу для описания массива (как в примере), то она должна быть описана выше по коду. Учтите, что библиотечные объекты, т.е. объекты системные или описанные в библиотеках, подключённых с помощью //uses//, описывать не надо и на них можно ссылаться из любого места. Но, как мы узнаем позже, их имена можно "перекрыть"
 + 
 +В примере приводится "канонический" порядок следования подразделов - именованные константы, типы, переменные. За ними часто следуют описания одной или нескольких процедур и функций, которых в примере нет. Затем порядок может повториться. Это делается, чтобы разбить все объекты, используемые в программе "по смыслу" - типы, определённые пользователем, процедуры, работающие с этими типами и вспомогательные объекты - константы и служебные переменные.  
 + 
 +Метки описываются там, где это удобно. 
 + 
 +<code pascal|Пример раздела описаний> 
 + 
 +const                    // Начался 1-й раздел констант 
 +  Pi = 4.0;              // Описание (именованной) константы 
 +                         // Внимание - мы перекрыли системное определение Пи! 
 + 
 +var                      // Начался 1-й раздел глобальных переменных,  
 +                         // значит - закончился раздел констант  
 +  i, j : integer;        // 1-е описание переменных 
 +  r, q : real;           // 2-е описание переменных 
 +  k, m : integer;        // 3-е описание переменных - снова integer. Имеем право. 
 +   
 +const                    // Начался 2-й раздел констант 
 +  n = 10;                // Описание (именованной) константы 
 +   
 +type                     // Начался раздел типов
   A10 = array[1..n] of integer;   A10 = array[1..n] of integer;
                          // Это тип, определённый пользователем.                            // Это тип, определённый пользователем.  
Строка 71: Строка 108:
                                                    
 var                      // Начался раздел переменных, закончился раздел типов var                      // Начался раздел переменных, закончился раздел типов
-  i, j : integer;        // 1-е описание переменных 
-  r, q : real;           // 2-е описание переменных 
-  k, m : integer;        // 3-е описание переменных - снова integer. Имеем право. 
   A,B  : A10;            // 4-е описание переменных пользовательского типа A10    A,B  : A10;            // 4-е описание переменных пользовательского типа A10 
      
Строка 95: Строка 129:
 </code> </code>
  
-Запомните правило - если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано заранее. Например, если вы используете константу для описания массива (как в примере), то она должна быть описана выше по коду.  
  
-Учтите, что библиотечные объекты, т.е. объекты системные или описанные в библиотеках, подключённых с помощью //uses//, описывать не надо и на них можно ссылаться из любого места. Но, как мы узнаем позже, их имена можно "перекрыть"! 
  
 <code pascal|Cвязь между объектами> <code pascal|Cвязь между объектами>