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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
pascal:basics [04/07/2015 10:45] ocapascal:basics [04/07/2015 11:30] oca
Строка 7: Строка 7:
  
 <code pascal|Общая структура программы> <code pascal|Общая структура программы>
-__Program__ <правильное имя>;+Program <правильное имя>;
     // Предложение, содержащее **заголовок программы**.      // Предложение, содержащее **заголовок программы**. 
     // Данное предложение может отсутствовать, поскольку в     // Данное предложение может отсутствовать, поскольку в
Строка 16: Строка 16:
     // языка, которые его требуют.     // языка, которые его требуют.
     // Например:     // Например:
-__Program__ //ChoiseSort3v//+Program ChoiseSort3v; 
     // Предложения заканчивается точкой с запятой          // Предложения заканчивается точкой с запятой     
  
-__Uses__ <список подключаемых библиотек>;   +Uses <список подключаемых библиотек>;   
     // **Раздел импорта**,      // **Раздел импорта**, 
     // который всегда состоит из одного предложения!     // который всегда состоит из одного предложения!
Строка 25: Строка 25:
     // используете никаких дополнительных библиотек.     // используете никаких дополнительных библиотек.
     // Например:     // Например:
-__Uses__ //CRT, OGLgraph//;  +Uses CRT, OGLgraph;  
     // Список разделяется запятыми,      // Список разделяется запятыми, 
     // предложения заканчивается точкой с запятой       // предложения заканчивается точкой с запятой  
Строка 38: Строка 38:
     //   не импортируется из библиотек,     //   не импортируется из библиотек,
     //   не является локальным объектом внутри процедуры.     //   не является локальным объектом внутри процедуры.
-    // А именно - **именованные константы****пользовательские типы**+    // А именно - именованные константы, пользовательские типы, 
-    // **переменные** и наконец - имена **меток**+    // переменные и наконец - имена меток. 
     //     //
     // В принципе, этот раздел тоже может отсутствовать.      // В принципе, этот раздел тоже может отсутствовать. 
                                                                                                                                                          
-__Begin__  // Обязательные **операторные скобки** Begin-end+Begin    // Обязательные операторные скобки Begin-end
   <Раздел кода>                            <Раздел кода>                         
     // Операторы, составляющие "главную процедуру"       // Операторы, составляющие "главную процедуру"  
Строка 49: Строка 49:
     // Тогда программа честно ничего не делает.     // Тогда программа честно ничего не делает.
     // Но "скобки" должны быть.     // Но "скобки" должны быть.
-__End.__   // Программа кончается точкой +End    // Программа кончается точкой 
 </code> </code>
  
-В этом примере кода подчёркнуты **служебные слова**, а имена (**идентификаторы**) выделены наклоном. Текст в угловых скобках "<и ">требует замены "по смыслу"В последствии мы так делать не будем!+Текст в **угловых скобках** (символы < и >требует замены "по смыслу"Не путайте с **операциями** < и >!
  
 Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем.  Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем. 
Строка 58: Строка 58:
 == Раздел описаний == == Раздел описаний ==
  
-Раздел описаний может состоять из нескольких подразделов, разбитых по категориям описываемых объектов - типов, переменных, меток и констант. Отдельными подразделами считаются каждая функция или процедура. +Раздел описаний может состоять из нескольких подразделов, разбитых по категориям описываемых объектов - типов, переменных, меток и констант. Отдельными подразделами считаются каждая функция или процедура. 
 + 
 +<code pascal|Простой пример раздела описаний>
  
-<code pascal|Пример раздела описаний> 
 const                    // Начался раздел констант const                    // Начался раздел констант
-  n = 10;                // Описание константы +  n = 10;                // Описание (именованной) константы 
-    +   
-var                      // Начался раздел переменных, значит - закончился раздел констант+var                      // Начался раздел глобальных переменных,  
 +                         // значит - закончился раздел констант 
   i, j : integer;        // 1-е описание переменных   i, j : integer;        // 1-е описание переменных
   r, q : real;           // 2-е описание переменных   r, q : real;           // 2-е описание переменных
   k, m : integer;        // 3-е описание переменных - снова integer. Имеем право.   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;
 +                         // Это тип, определённый пользователем.  
 +                         // Обратите внимание - мы использовали 
 +                         // ранее описанную константу
 +                         
 +var                      // Начался раздел переменных, закончился раздел типов
 +  A,B  : A10;            // 4-е описание переменных пользовательского типа A10 
      
   ...                    // Что-то ещё, возможно - ничего   ...                    // Что-то ещё, возможно - ничего
      
   // Где-то здесь кончается раздел переменных   // Где-то здесь кончается раздел переменных
 +
 +label                    // Раздел меток нужен редко
 +  1, endOfAll;           // список объявленных меток
 +                         // Теперь это "законные" метки
      
   ...                    // Что-то ещё, возможно - ничего   ...                    // Что-то ещё, возможно - ничего
Строка 84: Строка 129:
 </code> </code>
  
-Если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано ранее. Например, если вы используете константу для описания массива, то она должна быть описана заранее. Учтите, что библиотечные объекты, т.е. системные или описанные в библиотеках, подключённых с помощью //uses//, описывать не надо и на них можно ссылаться из любого места. +
  
 <code pascal|Cвязь между объектами> <code pascal|Cвязь между объектами>