мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| pascal:basics [04/07/2015 10:45] – oca | pascal:basics [04/07/2015 12:13] (текущий) – oca | ||
|---|---|---|---|
| Строка 7: | Строка 7: | ||
| <code pascal|Общая структура программы> | <code pascal|Общая структура программы> | ||
| - | __Program__ | + | Program |
| // Предложение, | // Предложение, | ||
| // Данное предложение может отсутствовать, | // Данное предложение может отсутствовать, | ||
| Строка 16: | Строка 16: | ||
| // языка, которые его требуют. | // языка, которые его требуют. | ||
| // Например: | // Например: | ||
| - | __Program__ //ChoiseSort3v//; | + | Program |
| // Предложения заканчивается точкой с запятой | // Предложения заканчивается точкой с запятой | ||
| - | __Uses__ | + | Uses < |
| // **Раздел импорта**, | // **Раздел импорта**, | ||
| // который всегда состоит из одного предложения! | // который всегда состоит из одного предложения! | ||
| Строка 25: | Строка 25: | ||
| // используете никаких дополнительных библиотек. | // используете никаких дополнительных библиотек. | ||
| // Например: | // Например: | ||
| - | __Uses__ //CRT, OGLgraph//; | + | Uses CRT, OGLgraph; |
| // Список разделяется запятыми, | // Список разделяется запятыми, | ||
| // предложения заканчивается точкой с запятой | // предложения заканчивается точкой с запятой | ||
| Строка 38: | Строка 38: | ||
| // не импортируется из библиотек, | // не импортируется из библиотек, | ||
| // не является локальным объектом внутри процедуры. | // не является локальным объектом внутри процедуры. | ||
| - | // А именно - **именованные константы**, **пользовательские типы**, | + | // А именно - именованные константы, |
| - | // **переменные** и наконец - имена | + | // переменные и наконец - имена меток. |
| // | // | ||
| // В принципе, | // В принципе, | ||
| | | ||
| - | __Begin__ | + | Begin |
| < | < | ||
| // Операторы, | // Операторы, | ||
| Строка 49: | Строка 49: | ||
| // Тогда программа честно ничего не делает. | // Тогда программа честно ничего не делает. | ||
| // Но " | // Но " | ||
| - | __End.__ // Программа кончается точкой | + | End. |
| </ | </ | ||
| - | В этом примере кода подчёркнуты **служебные слова**, а имена (**идентификаторы**) выделены наклоном. Текст в угловых скобках | + | Текст в **угловых скобках** (символы |
| Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем. | Ещё раз обратите внимание на жёсткий порядок следования частей программы на этом уровне детализации её структуры. Все части идут именно в этом порядке и не повторяются. Но некоторые могут отсутствовать совсем. | ||
| Строка 58: | Строка 58: | ||
| == Раздел описаний == | == Раздел описаний == | ||
| - | Раздел описаний может состоять из нескольких подразделов, | + | Раздел описаний может состоять из нескольких подразделов, |
| + | |||
| + | <code pascal|Простой пример раздела описаний> | ||
| - | <code pascal|Пример раздела описаний> | ||
| const // Начался раздел констант | const // Начался раздел констант | ||
| - | n = 10; // Описание константы | + | n = 10; // Описание |
| - | | + | |
| - | var // Начался раздел переменных, | + | var // Начался раздел |
| + | // | ||
| i, j : integer; | i, j : integer; | ||
| r, q : real; // 2-е описание переменных | r, q : real; // 2-е описание переменных | ||
| - | k, m : integer; | + | k, m : integer; |
| - | + | // | |
| - | ... // Что-то ещё, возможно - ничего | + | |
| - | + | Begin | |
| - | // Где-то здесь кончается раздел переменных | + | |
| - | + | ||
| - | ... // Что-то ещё, возможно - ничего | + | |
| - | | + | |
| - | Begin | + | |
| | | ||
| // Обязательный раздел кода | // Обязательный раздел кода | ||
| + | ... | ||
| + | End. // Конец всему (в этой программе)! | ||
| - | ... | ||
| - | | ||
| - | End. // Конец всему (в этой программе)! | ||
| </ | </ | ||
| - | Если что-то, описываемое вами, ссылается на что-то другое, то это другое должно быть описано | + | Объекты программы могут быть связаны описанием. |
| <code pascal|Cвязь между объектами> | <code pascal|Cвязь между объектами> | ||
| Строка 95: | Строка 91: | ||
| </ | </ | ||
| - | Из этого правила есть единственное исключение, | + | Запомните правило - **если что-то, |
| + | |||
| + | Учтите, | ||
| Ниже приведён неправильный код, где ничего не описывается заблаговременно. | Ниже приведён неправильный код, где ничего не описывается заблаговременно. | ||
| Строка 125: | Строка 123: | ||
| A,B : array[1 .. n] of integer; | A,B : array[1 .. n] of integer; | ||
| </ | </ | ||
| + | |||
| + | === Полный пример === | ||
| + | |||
| + | Подразделы могут следовать в любом порядке и повторяться. | ||
| + | |||
| + | В примере приводится " | ||
| + | |||
| + | Метки описываются там, где это удобно. | ||
| + | |||
| + | <code pascal|Пример раздела описаний> | ||
| + | |||
| + | ... // Здесь могли бы быть заголовок и раздел импорта | ||
| + | const // Начался 1-й раздел констант | ||
| + | Pi = 4.0; // Описание (именованной) константы | ||
| + | // Внимание - мы перекрыли системное определение Пи! | ||
| + | |||
| + | var // Начался 1-й раздел глобальных переменных, | ||
| + | // значит - закончился раздел констант | ||
| + | i, j : integer; | ||
| + | r, q : real; // 2-е описание переменных | ||
| + | k, m : integer; | ||
| + | | ||
| + | const // Начался 2-й раздел констант | ||
| + | n = 10; // Описание (именованной) константы | ||
| + | | ||
| + | type // Начался раздел типов | ||
| + | A10 = array[1..n] of integer; | ||
| + | // Это тип, определённый пользователем. | ||
| + | // Обратите внимание - мы использовали | ||
| + | // ранее описанную константу | ||
| + | |||
| + | var // Начался раздел переменных, | ||
| + | A,B : A10; // 4-е описание переменных пользовательского типа A10 | ||
| + | | ||
| + | ... // Что-то ещё, возможно - ничего | ||
| + | | ||
| + | // Где-то здесь кончается раздел переменных | ||
| + | |||
| + | label // Раздел меток нужен редко | ||
| + | 1, endOfAll; | ||
| + | // Теперь это " | ||
| + | | ||
| + | ... // Что-то ещё, возможно - ничего | ||
| + | | ||
| + | Begin | ||
| + | | ||
| + | // Обязательный раздел кода | ||
| + | |||
| + | ... | ||
| + | | ||
| + | End. // Конец всему (в этой программе)! | ||
| + | </ | ||
| + | |||
| + | |||
| Строка 133: | Строка 185: | ||
| <code pascal|Пример 1> | <code pascal|Пример 1> | ||
| Begin | Begin | ||
| - | | + | // Если убрать этот комментарий, |
| - | // минимальная правильная программа на Паскале | + | |
| + | // Впрочем, | ||
| End. | End. | ||
| </ | </ | ||
| - | Данная программа работает (стирает с экрана следы работы предыдущих программ), | + | Данная программа |
| <code pascal|Пример 2> | <code pascal|Пример 2> | ||
| Строка 159: | Строка 212: | ||
| Const // Раздел констант | Const // Раздел констант | ||
| n = 5; // В данном случае n - не переменная, | n = 5; // В данном случае n - не переменная, | ||
| - | m : integer = 6; // Один из ужасов Паскаля. Это - статическая переменная! Без понимания, | + | m : integer = 6; // Один из ужасов Паскаля. Это - статическая переменная! |
| + | // Без понимания, | ||
| + | // но это - настоящая переменная | ||
| | | ||
| Var // Раздел переменных | Var // Раздел переменных | ||
| i: | i: | ||
| | | ||
| - | Label // Раздел меток. У меток описывать нечего, | + | Label // Раздел меток. |
| - | | + | BeeginProgram, |
| + | EndProgram; | ||
| + | | ||
| + | Type | ||
| + | S100 = string[100]; | ||
| Procedure Proc(x: | Procedure Proc(x: | ||
| + | // Данная процедура принимает параметр x | ||
| + | // после чего всегда печатает: | ||
| + | // " | ||
| + | Const | ||
| + | S2 = '. Не мешайте работать!'; | ||
| + | Var | ||
| + | S1 : S100; | ||
| + | | ||
| Begin: | Begin: | ||
| - | | + | |
| + | S1 := ' | ||
| + | writeln(S1, x, S2 ); | ||
| End; | End; | ||
| - | Begin | + | Begin |
| - | BeginProgram: | + | BeginProgram: |
| - | goto EndProgram; | + | ; // Отсюда собираемся работать |
| - | Proc(n); | + | goto EndProgram; |
| - | EndProgram: | + | Proc(n); |
| - | ; | + | goto BeginProgram; |
| - | End. | + | EndProgram: |
| + | ; // Перекур после честной работы | ||
| + | End. // Теперь - совсем всё | ||
| </ | </ | ||