Kievuz

Общие сведения о языке Паскаль

2 Общие сведения о языке программирования Free Pascal

Общие сведения о языке Паскаль

Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus 64

В этой главе читатель познакомится со структурой проекта в среде Lazarus и основными элементами языка программирования Free Pascal: переменными, константами, их типами, основными операциями и функциями языка.

2.1 Структура проекта Lazarus

Любой проект в Lazarus – это совокупность файлов, из которых создается единый выполняемый файл. В простейшем случае список файлов проекта имеет вид:

•файл описания проекта (.lpi); •файл проекта (.lpr);

•файл ресурсов (.lrs); •модуль формы (.lfm); •программный модуль (.pas);

После компиляции программы из всех файлов проекта создается единый выполняемый файл, имя этого файла совпадает с именем проекта.

Программный модуль, или просто модуль, – это отдельно компилируемая программная единица, которая представляет собой набор типов данных, констант, переменных, процедур и функций. Любой модуль имеет следующую структуру:

unit имя_модуля; //Заголовок модуля.
interface
//Раздел описаний.
implementation
//Раздел реализаций.
end. //Конец модуля.

Заголовок модуля – это зарезервированное слово unit, за кото-

рым следует имя модуля и точка с запятой. В разделе описаний, который открывается служебным словом interface, описывают про-

граммные элементы – типы, классы, процедуры и функции: interface

uses список_модулей; type список_типов;

Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus 65

const список_констант; var список_переменных; procedure имя_процедуры;

function имя_функции;

Раздел implementation содержит программный код, реализу-

ющий механизм работы описанных программных элементов (тексты процедур обработки событий, процедуры и функции, созданные программистом). Процедуры и функции в Lazarus также построены по модульному принципу23.

Наряду с визуальными приложениями, Lazarus позволяет разрабатывать и обычные консольные приложения, которые также могут быть созданы в оболочке Free Pascal, и в текстовом редакторе Geany. Авторы настоятельно рекомендуют начинать изучение программирования именно с создания консольных приложений. Поэтому рассмотрим подробно структуру консольного приложения.

2.2 Структура консольного приложения

Структура консольного приложения имеет вид:

заголовок программы;

uses modul1, modul2, …, moduln; раздел описаний; тело программы.

Заголовок программы состоит из служебного слова program, имени программы, образованного по правилам использования идентифи-

каторов (см. п. 2.3 ), и точки с запятой, например: program my_prog001;

Предложение uses modul1, modul2, …, moduln предна-

значено для подключения модулей. В модулях находятся функции и процедуры языка. Для использования функций и процедур, находящихся в модуле, необходимо в тексте программы подключить их с помощью предложения uses.

Раздел описаний включает следующие подразделы:

раздел описания констант; раздел описания типов; раздел описания переменных;

23 Подробно о процедурах и функциях см. в главе 4.

Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus 66

раздел описания процедур и функций.

В языке Free Pascal должны быть описаны все переменные, типы, константы, которые будут использоваться программой.

В стандартном языке Pascal порядок следования разделов в программе жестко установлен, во Free Pascal такого строгого требования нет. В программе может быть несколько разделов описания констант, переменных и т.д.

, но все они должны быть до тела программы. Более подробно структуру консольной программы на языке Free Pascal можно представить

следующим образом:

program имя_программы;

uses modul1, modul2, …, moduln; const описания_констант;

type описания_типов; var описания_переменных; begin

операторы_языка;

end.

Тело программы начинается со слова begin, затем следуют опе-

раторы языка Pascal, реализующие алгоритм решаемой задачи. Операторы в языке Pascal отделяются друг от друга точкой с запятой и могут располагаться в одну строчку или начинаться с новой строки (в этом случае их также необходимо разделять точкой с запятой). Назначение символа « ; » – отделение операторов друг от друга. Тело программы заканчивается служебным словом end. Несмотря на то что

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

структуру программы:

program имя_программы;

uses modul1, modul2, …, moduln; const описания_констант;

type описания_типов; var описания_переменных; begin

оператор_1; оператор_2;

end.

Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus 67

Приведем пример текста программы на Free Pascal: program one;

const a=7;

var b,c: real; begin

c:=a+2; b:=c-a*sin(a) end.

2.3 Элементы языка

Программа на языке Free Pascal может содержать следующие символы:

•латинские буквы A, B, C…, x, y, z; •цифры 0, 1, 2…, 9;

•специальные символы + ,–, /, =, , [, ], ., (, ), ;, :, {, }, $, #, _, @,

‘, .

Из символов алфавита формируют ключевые слова и идентификаторы. Ключевые слова – это зарезервированные слова, которые имеют специальное значение для компилятора. Примером ключевых слов являются операторы языка, типы данных и т.п. Ключевые слова используются только так, как они определены при описании языка.

Идентификатор – это имя программного объекта24, представляющее собой совокупность букв, цифр и символа подчеркивания. Первый символ идентификатора – буква или знак подчеркивания, но не цифра. Идентификатор не может содержать пробел.

Прописные и строчные буквы в именах не различаются, например ABC, abc, Abc – одно и то же

имя. Каждое имя (идентификатор) должно быть уникальным и не совпадать с ключевыми словами.

Источник: https://StudFiles.net/preview/4173481/page:12/

Общие сведения о языке Паскаль

Общие сведения о языке Паскаль

Языки программирования, так же как и разговорные, имеют свой алфавит. Алфавитом языка программирования называют весь набор символов, с помощью которых составляется программа.

Алфавит языка Паскаль (Турбо-Паскаль) составляют:

1. Латинские строчные и прописные буквы, которые не различаются. К буквам относится и символ подчеркивания.

2. Арабские цифры от 0 до 9.

3. Символы-разделители: пробел, переход на новую строку, табуляция. Используются для большей наглядности текста программы.

4. Специальные символы:

+ – * / = . , ‘ : ; @ # $ { } [ ] ( ) < >

Они выполняют определенные функции при построении различных конструкций языка.

5. Составные символы, то есть группа символов, воспринимаемых компилятором как единое целое:

:= (* *) (. .) ..

6. Служебные слова. Так как языки программирования являются формальными, а не разговорными, то служебные слова (ключевые слова английского языка) не подлежат изменению или сокращению – это просто иная форма записи символов. Например: Program,Begin, For и т.д. Если начальная версия языка Паскаль насчитывала 35 служебных слов, то в Турбо-Паскале 7.0 их уже 59.

Описание общих конструкций языка

Для описания общих структур в программировании используются специальные символы – метасимволы, которые в структурах не указываются, а предназначены лишь для пояснений. К ним относятся:

[a] – квадратные скобки указывают на необязательность элемента а;

[a1 |a2 |…an ] – свидетельствует о том, что может присутствовать только 1 элемент ai из указанного списка, или ни одного;

a1 |a2 |…an или – указывает на обязательность присутствия одного и только одного элемента ai.

– на место а должно быть подставлено конкретное значение;

… – многоточие свидетельствует о том, что предыдущий тип элемента можно неоднократно повторять.

Например, запись [()] эквивалентна [( [, …])]. Конкретное же значение может либо вообще отсутствовать, либо выглядеть, например, так:

(А,В,С)

Или общая форма записи оператора цикла с параметром:

For := To | DownTo Do

А его конкретная реализация в программе:

For i:=1 To 100 Do s:=s+(i+1)/(i*i+2);

§2.2. Структура программы

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

В соответствии с этим принципом программа на любом алгоритмическом языке состоит из двух частей: описания последовательности действий, которые необходимо выполнить, и описания данных, с которыми оперируют действия. Действия представляются операторами языка, данные вводятся посредством описаний и определений. Описания данных по тексту должны предшествовать описанию действий.

В оригинале синтаксически программа разделена на 2 части:

;

.

Наличие точки в конце является обязательным и служит окончанием признака всего текста программы.

Заголовок начинается со служебного слова Program, далее следует имя программы и список параметров. Но в Турбо-Паскале заголовок может отсутствовать, то есть программа может состоять только из одного блока, хотя по правилам хорошего стиля программирования заголовок должен присутствовать.

Совокупность описаний и определений и следующая за ним последовательность операторов называется блоком.

Объекты, вводимые посредством описаний и определений, имеют различную природу и делятся на 5 классов, описываемых каждый в своем разделе:

1. раздел описания меток;

2. раздел описания констант;

3. раздел описания типов;

4. раздел описания переменных;

5. раздел описания процедур и функций.

В Турбо-Паскале соблюдение такой последовательности не обязательно, и добавлен еще один раздел подключаемых модулей. За разделами описаний следует раздел операторов, заключенный между словами Begin и End.

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

1. Все описания и операторы отделяются друг от друга точкой с запятой. В принципе всю программу можно записать в одну строку, но правила хорошего стиля программирования требуют записи каждого оператора на отдельной строке для удобства чтения текста программы.

2. Для пояснения отдельных фрагментов программы используются комментарии. Для их записи могут использоваться любые символы клавиатуры, они могут стоять в любом месте, где может ставиться пробел, и для них в Турбо-Паскале введено 2 типа ограничителей:

{}

(**)

3. Для обозначения переменных, констант, заголовков и т.д. используются идентификаторы или имена. Они могут состоять из прописных и строчных латинских букв, считающихся эквивалентными (символ подчеркивания относится к буквам и служит для разделения слов) и цифр, причем начинаться имя должно с буквы. В Турбо-Паскале длина имени не ограничена, но распознаются они по первым 63 символам.

4. Перед любым оператором может быть поставлена метка (допускается и несколько), за которой следует двоеточие. В стандартном Паскале меткой является целое число от 1 до 9999. В Турбо-Паскале меткой может быть как число (для обеспечения совместимости), так и имя.

5. Правилом хорошего стиля программирования является выделение различных конструкций программы: внутренних, составных операторов и др. отступами различной ширины от начала строки.

В качестве примера приведем программу для вычисления суммы при значении n = 20.

Program Summa;

Const n=20;

Var S:real;

i:integer;

Begin

S:=0;

For i:=0 to n do

S:=S+1/(i*i+3*i+5);

Writeln(‘Сумма=’,S:6:4)

End.

Описание меток

Все метки, которые используются в программе, должны быть описаны в этом разделе. Раздел начинается со служебного слова Label, за которым следуют через запятую все используемые метки:

Label [,…];

Хотя метки и могут стоять перед любым оператором, причем даже несколько сразу, но используются они в единственном операторе безусловного перехода GoTo, который не рекомендуется к использованию, поэтому на практике данный раздел встречается редко. Например:

Label M1,Metka,L38;

Определение констант

Все значения, которые используются в программах на любых языках программирования, делятся на 2 больших класса: константы и переменные.

При трансляции программы константы располагаются непосредственно в области кода программы, переменные же хранятся отдельно в сегменте данных. Так как при выполнении программы она не должна модифицировать сама себя (свойство реентерабельности), то константы изменять нельзя.

Переменные же могут изменяться в процессе выполнения программы сколько угодно раз. Так, при трансляции оператора и дальнейшем его выполнении

А:=В+С

используются 3 ячейки памяти, а оператора

А:=8+9

только одна. Переменные обозначаются именами, а константы числами, строками и т.д.

Паскаль допускает введение в программу объектов, внешне похожих на переменные, но которые на самом деле являются константами, то есть не подлежат изменению при выполнении программы. Константе можно присваивать свое имя, которое просто является синонимом фиксированного числа.

Использование в программе имен констант вместо записи конкретных значений является правилом хорошего стиля программирования, так как делает программу более наглядной и способствует лучшему ее пониманию без снижения эффективности.

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

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

Const =;

[=;…]

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

В Турбо-Паскале допускается использовать в качестве значения константное выражение, строящееся по тем же правилам, что и обычное.

Его операндами могут быть константы, ранее описанные имена констант и некоторые стандартные функции. Например:

Const

Max = 100; {константа целого типа}

Min = 0;

Center =(Max-Min) div 2; {выражение и результат тоже целого типа}

m_e = 9.10955854e-31; {масса покоя электрона – число вещественное}

LiteraA =’A'; {символьная константа}

В Турбо-Паскале существует понятие типизированных констант. Но на самом деле они являются переменными, которым в разделе описаний присваиваются начальные значения.

Типизированные константы, как и обычные переменные, можно изменять в процессе вычислений, то есть они – переменные, но с начальными значениями. То есть их можно было бы описать в разделе описания переменных, а затем первыми операторами присвоить им начальное значение.

Но в некоторых случаях, например при задании начальных значений массивам, их использование удобно. Для типизированных констант уже необходимо задавать конкретный тип, например:

Const max:integer = 9999;

MyArray: array[1..3] of string = (‘Red’,’Blue’,’Green’);

Определение типов

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

В простейшем случае указывается стандартный тип при описании переменной, например, как в примере вычисления суммы. Однако в Паскале допускается определение своего типа отдельно, например определение комплексного типа:

Type Complex = Record

Re,Im:real;

end;

Начинается этот раздел с служебного слова Type и широко используется при работе с динамическими переменными и при объектном программировании.

Описание переменных

Перед началом выполнения программы под все переменные (за исключением динамических) должно быть выделено место в памяти ЭВМ. То есть все переменные, используемые в программе, должны быть описаны и транслятор «должен знать» о них.

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

Но язык Паскаль разрабатывался как «надежный» язык программирования, с максимально возможным поиском формальных ошибок. Поэтому в нем все переменные, участвующие в программе, должны быть описаны в данном разделе.

Общий вид описания переменных выглядит следующим образом:

Var [,…] :; …

Например:

Var x:real;

i,j,k:integer;

Так как по свойству массовости алгоритма переменные присутствуют в каждой программе, то в реальных программах всегда в наличии и этот раздел.

Раздел описания процедур и функций будет рассмотрен далее.

Контрольные вопросы

1. Какие группы символов входят в алфавит языка Паскаль?

2. Что такое служебные слова?

3. Приведите примеры метасимволов для описания общих конструкций языка программирования.

4. Из каких элементов состоит программа на языке Паскаль?

5. Что такое в структуре программы блок?

6. Какие бывают разделы описаний?

7. Как отделяются операторы друг от друга?

8. Как записываются комментарии?

9. Для чего используются идентификаторы (имена)?

10. Какие есть правила образования идентификаторов (имен)?

11. Что такое метка и для чего они используются?

12. Каким образом рекомендуется располагать конструкции программы для ее большей наглядности?

13. Каким образом описываются метки?

14. Какие различия между константами и переменными?

15. Как описываются константы?

16. Как определяется тип описываемых констант?

17. Что такое типизированные константы?

18. Как описываются типы?

19. Как описываются переменные?

20. Какой раздел описаний чаще всего присутствует в простых программах?

Источник: http://kursak.net/obshhie-svedeniya-o-yazyke-paskal/

Лекция №1.1: Начальные сведения о программах на языке Pascal

Общие сведения о языке Паскаль

Начальные сведения об алгоритмах, компиляции, отладке и тестировании. Начальные сведения о программах на языке Pascal. Идентификаторы. Переменные и типы данных. Константы. Метки. Простейшие операторы. Ввод с консоли и вывод на консоль.

Наш курс посвящён изучению не только языка Pascal, но и некоторых алгоритмов, решающих наиболее известные задачи программирования, поэтому начнём мы со знакомства с некоторыми основополагающими понятиями.

Алгоритм — это последовательность действий, которые необходимо выполнить, чтобы решить поставленную задачу.

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

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

Программа на таком языке называется исходным текстом и хранится во внешнем файле с расширением .pas.

Для перевода программы на язык низкого уровня, понятный исполнителю-компьютеру, существуют специальные программы–переводчики — компиляторы. Результатом работы компилятора (иными словами, результатом процесса компиляции) является исполняемый код, который записывается в файл с расширением .exe.

Любой алгоритм должен обладать следующими свойствами:

  • массовостью: (алгоритм должен уметь решать не одну конкретную задачу, а целый класс однотипных задач);
  • результативностью: (алгоритм должен выдавать результат своей работы);
  • определённостью: (на каждом шаге выполнения алгоритма исполнитель должен точно знать, какой шаг будет следующим).

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

Никто не станет спорить с тем, что неграмотно написанный текст очень сложно, а порой и вовсе невозможно правильно перевести на другой язык. Это верно для естественных языков, это верно и для языков программирования.

Но если переводчик–человек иногда может как–то догадаться, что же именно хотел сказать автор неграмотного текста, то программе–переводчику такое не по силам.

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

В языке программирования, как и в любом другом языке, существуют синтаксис — правила записи его конструкций — и семантика — смысл его конструкций. Компилятор проверяет только синтаксис. Поиском же семантических ошибок занимается программист в процессе тестирования и отладки своей программы.

Отладка — это поиск и исправление ошибок в программе. Тестирование — это составление специальных наборов входных и выходных данных (тестов), а затем исполнение программы и проверка полученных результатов в поисках возможных семантических или логических ошибок.

Чтобы уменьшить затраты времени и сил на отладку, нужно писать синтаксически и логически правильные программы. Технологиям написания надежных программ, их тестирования и отладки будет посвящена последняя лекция нашего курса.

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

Самыми известными сегодня являются Turbo Pascal (он же Borland Pascal), Object Pascal (не путать с Delphi) и Free Pascal. Их различные, в том числе и бесплатные, версии можно найти в Сети.

Для определённости мы будем опираться на самую распространённую (хотя и не во всём соответствующую стандартам ISO) реализацию — Turbo Pascal School Pak (Скачать Turbo Pascal). Другие версии использовать не рекомендуется.

Итак, в составе среды разработчика Turbo Pascal имеются:

  • текстовый редактор, в котором можно набирать тексты программ;
  • компилятор, превращающий исходные тексты в исполняемый код;
  • отладчик, помогающий обнаруживать и исправлять ошибки в программе

Из многочисленных возможностей, предоставляемых средой Turbo Pascal, мы упомянем лишь самые важные — те, без которых написание программ становится совсем уж затруднительным.

  • Нажатие клавиш F1, Alt+F1, Ctrl+F1 открывает экранную подсказку (вся информация из встроенной справочной системы есть на этом сайте).
  • Нажатие клавиши F2 позволяет сохранить исходный текст программы.
  • Нажатие клавиши F3 открывает диалог выбора нужного файла (по умолчанию отображаются только файлы с расширением .pas).
  • Нажатие клавиши Alt+F5 показывает консоль (см. п. «Ввод и вывод: консоль» ниже) с результатами работы программы.
  • Нажатие клавиши Ctrl+F9 начинает процесс выполнения программы Если она еще не была откомпилирована, предварительно будет вызван компилятор.
  • Клавиши F7 и F8 обеспечивают трассировку — пошаговое выполнение программы, позволяющее проследить за процессом её выполнения.
  • Дополнительное окно Debug/Watch показывает текущее состояние выбранных переменных.

Более подробно о возможностях среды Turbo Pascal можно узнать в любом руководстве по её использованию (в том числе и во встроенном Help, который можно читать на Тум Су).

Для того чтобы Pasсal–компилятор правильно понял, какие именно действия от него ожидаются, ваша программа должна быть оформлена в полном соответствии с синтаксисом (правилами построения программ) этого языка.

Приступим же к изучению этих правил.

Любая Pascal–программа может состоять из следующих блоков (напомним, что квадратными скобками здесь и далее помечены необязательные части):

Сразу же необходимо сделать важную оговорку: поздние версии компиляторов языка Pascal уже не требуют указывать название программы, то есть, строку

вообще говоря, можно опустить. Но это возможно только в том случае, если вся программа содержится в одном модуле–файле. Если же программа состоит из нескольких самостоятельных кусков — модулей (см. лекцию 13), то каждый из них должен иметь заголовок (program или unit).

Любой из перечисленных необязательных разделов может встречаться в тексте программы более одного раза, их общая последовательность также может меняться, но при этом всегда должно выполняться главное правило языка Pascal: прежде, чем объект будет использован, он должен быть объявлен и описан.

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

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

Этому правилу подчиняются все примеры, приводимые в курсе наших лекций. Кроме того, встроенный редактор среды Turbo Pascal автоматически выравнивает левые края строк.

И ещё один полезный совет: для облегчения отладки программы не следует записывать на одну строку несколько операторов.

Примечания

Источник: http://pascal.net.ru/%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5+%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BE+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%85+%D0%BD%D0%B0+%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5+Pascal

ovdmitjb

Add comment