Файл: Основы программирования на языке Pascal (Теоретические основы языка Pascal).pdf
Добавлен: 30.03.2023
Просмотров: 252
Скачиваний: 1
В сфере образования до сих пор широко используется последняя 7-я версия Паскаля фирмы Borland, созданная более восьми лет назад. Со своей основной задачей компилятор Паскаля справляется, однако зачастую даже школьники, постигшие азы программирования, натыкаются на его ограничения. Одним из основных недостатков компилятора является его 16-разрядность. Ограничение в 64 Кбайт на все статические данные выглядит слишком жестким при типичных сегодня 32-128 Мбайт оперативной памяти. То же касается и графических режимов: максимальное разрешение, с которым способен работать Turbo/Borland Pascal, требует лишь 150-Кбайт видеопамяти, в то время как появляются видеоадаптеры, несущие уже 64 Мбайт.
Выводы по главе 1:
Pascal был создан на базе ALGOL, языка программирования, который предназначался для научных вычислений. Изначально Паскаль создавался как учебный язык программирования. Он должен был иметь простой синтаксис, строиться на минимальном количестве базовых понятий и уметь переводить программы в машинный код простым компилятором.
Выдающийся успех языка Паскаль обусловлен рядом причин: Язык в естественной форме отразил самые важные современные концепции технологии разработки программ. Именно благодаря своей компактности, целостности и ортогональности понятий, язык программирования Паскаль оказался весьма легок для изучения и освоения. Несмотря на кажущуюся простоту языка, он оказался пригодным для достаточно широкого спектра приложений, для разработки очень больших и сложных программ, даже операционных систем. Паскаль весьма технологичен для реализации почти для всех (в том числе нетрадиционных) машинных текстур. Память экономится за счет определения типов (Byte, Integer и т.д.) Операторы языка позволяют не использовать метки, что действительно очень удобно. С легкостью можно написать рекурсивную программу. Встроенный ASSEMBLER, что действительно круто. Огромные библиотеки (UNITS) к языку. Практически нет глюков. Встроенный редактор + оболочка.
Глава 2. Основы программирования на языке Pascal
2.1. Структура программы на языке Pascal
Программа на языке Pascal может состоять из восьми основных разделов[15].
1. Раздел заголовка программы
Program имя;
2. Раздел подключаемых библиотек
Uses список библиотек;
3. Раздел описания меток
Label список меток;
4. Раздел описания констант
Const описание констант;
5. Раздел описания пользовательских типов
Type описание типов;
6. Раздел описания переменных
Var описание переменных;
7. Раздел описания процедур и функций
Описание процедур начинается со слова procedure
Описание функций начинается со слова function
8. Раздел основной программы Начинается begin … заканчивается end.
Следует обратить внимание на то, что в конце программы необходимо ставить точку. Каждый из разделов является необязательным и используется по мере необходимости[16]. Далее все их рассмотрим подробнее. Первым по порядку идет заголовок программы. Этот раздел, как и другие, не является обязательным, но его использование четко выделяет начало программного кода. Имя, используемое в заголовке программы, составляется, как и любой идентификатор, из латинских букв, арабских цифр и символа «_».
Это имя не может быть использовано при описании другого идентификатора, и, вообще, нельзя использовать это имя внутри программы для других целей. Имя программы стоит вводить еще и потому, что, например, оно служит для обращения к глобальным идентификаторам в случае совпадения их имен с именами локальных идентификаторов во внутренних модулях программы (процедурах и функциях)[17].
В разделе подключаемых библиотек, или, другими словами, модулей, перечисляются библиотеки, которые будут подключены к программе во время компиляции. Модулем или библиотекой можно назвать совокупность подпрограмм, объединенных произвольным образом в отдельный файл. Модули существуют как стандартные (поставляемые вместе с конкретной IDE), так и пользовательские, которые пользователь может написать самостоятельно или где-нибудь взять.
Модули в Pascal носят название TPU (Turbo Pascal Unit). К стандартным модулям относится, например, библиотека CRT. Для ее подключения во втором разделе следует написать фразу Uses CRT. CRT содержит процедуры и функции работы со стандартными устройствами ввода/вывода (например, с экраном в текстовом режиме). Допустим, необходимо экран очистить. Для этого потребуется процедура clrscr, содержащаяся в библиотеке CRT. Если использовать ее без Uses CRT, то откомпилировать программу будет невозможно, так как для компилятора clrscr будет всего лишь набором букв.
В IDE Turbo Pascal 7.0 существуют следующие стандартные модули: CRT, Graph, Graph3, Overlay, Printer, Strings, System, Turbo3, WinAPI, WinCrt, WinDOS, WinPrn, WinProcs, WinTypes. В рамках этого пособия большинство модулей не будут рассмотрены подробно, но всегда можно найти информацию о них в разделе помощи по Turbo Pascal, нажав F1.
В разделе описания меток перечисляются метки, использующиеся в программе. Они перечисляются через запятую сразу за словом Label. Например, так: «Label m1,m2,m3,m4;». Метки в программе используются для адресации строк, на которые возможен переход с помощью оператора безусловного перехода goto.
Пример использования меток:
program ex_label;
label m1,m2,m3;
var x:char;
begin readLn(x);
if x='1' then
goto m1
else
goto m2; m1:writeLn('m1');
goto m3; m2:writeLn('m2');
m3:
end.
Технически возможность использовать метки в Pascal существует, но как было заявлено выше, любой алгоритм можно описать с помощью следования, развилки и цикла. Безусловный переход не относится ни к одной из этих алгоритмических управляющих структур. Из этого можно сделать простой вывод: в связи с тем, что безусловные переходы могут затруднить чтение программы, а так же они не относятся ни к следованиям, ни к развилкам, ни к циклам, их использование желательно избегать. Следующий рассматриваемый раздел – описание констант.
Отметим, что константы в Pascal делят на два вида: типизированные и нетипизированные. В описании типизированных констант используются типы данных, поэтому отложим рассмотрение этого вопроса до изучения стандартных типов языка Pascal. Описать нетипизированные константы очень просто. После имени константы ставится знак «=»12, после чего - присваиваемое ей значение. При этом текстовые константы заключаются в апострофы. При описании константы можно не просто указать значение, но также записать математическое выражение.
Операндами могут выступать как константы (числовые и других простых типов значения), так и имена выше описанных констант. В этих математических выражениях могут быть использованы стандартные математические операции (+, –, *, /, mod, div), а так же функции модуля SYSTEM.TPU (эту библиотеку нельзя подключить с помощью USES; она, являясь библиотекой исполняющей системы, как бы постоянно подключена к любой программе): abs, chr, hi, length, lo, odd, ord, pred, prt, sizeof, succ, swap, trunc.
ПРИМЕР
program ex_const;
const
X=10;
Y=20;
Z=X+Y+30;
В разделе описания пользовательских типов, если это требуется, можно, используя стандартные типы, описать новый тип данных13.
ПРИМЕР
program ex_type;
type
TInt = integer;
TMassiv = array[1..20,1..10] of real;
TFl = file of char;
var
I, J, K : TInt;
A, B : TMassiv;
F: TFl;
В следующем разделе описываются переменные. Это раздел var (англ. Variable – переменная). Переменной можно назвать поименованную область памяти, содержащую информацию заданного типа. Pascal является языком со строгим контролем типов данных. Во время работы программы содержимое переменной может меняться.
Для того чтобы программа могла хранить некоторые значения (начальные, промежуточные, конечные) в памяти, необходимо, чтобы для этих значений заранее было выделено место. Выделение места в памяти ЭВМ происходит автоматически на этапе компиляции, и пользователь не должен об этом заботиться. Он должен лишь указать неповторяющиеся имена описываемых переменных и их тип.
Указание типа связано с тем, что, как указывалось выше, вся информация в ЭВМ хранится в двоичном виде. Чтобы отделить, например, текст от чисел необходимо к каждой переменной привязывать способ перекодирования, т. е. определять ее тип в разделе описания переменных. Собственно описание переменных происходит следующим образом.
В разделе описания переменных, после слова var, перечисляются через запятую однотипные переменные, затем ставится двоеточие и указывается их тип. После точки с запятой, обычно со следующей строки, перечисляются и описываются переменные другого типа и так далее, пока не будут описаны все требуемые в программе переменные. В следующем разделе описываются подпрограммы. В этом разделе не будем останавливаться на этой теме, так как она подробно раскрывается позже. Последний раздел – основная программа. Именно здесь помещается основной алгоритм работы программы. Она должна быть заключена в так называемые операторные скобки (слова begin и end) и в конце обязательно стоит точка.
Можно выделить еще один условный вид блоков программ, неописанный выше, который называется комментариями. Комментарии играют очень большую роль при написании программы, поскольку помогают справиться с ее возрастающей сложностью. По прошествии некоторого времени, при повторном обращении к исходному коду для внесения в него исправлений или модификации, возникает ситуация забывания подробностей. Если комментарии расставлены грамотно, то вспомнить подробности работы алгоритма не составит труда.
Кроме того, комментарии помогают разбираться в ваших алгоритмах тому, кто с ними будет работать в дальнейшем. Сами по себе разделы комментариев пропускаются компилятором и на работу алгоритма никакого влияния не оказывают.
В языке Pascal блок комментариев выделяется фигурными скобками «{» – начало комментария и «}» – конец комментария. Или, альтернативным способом: «(*» – начало комментария и «*)» – его окончание. Наиболее же часто используют так называемые однострочные комментарии. Начало такого комментария обозначается комбинацией «//», а конец – переходом на новую строчку. К сожалению, старые IDE языка Pascal этот тип комментариев не поддерживают (например, IDE Turbo Pascal).
Для примера рассмотрим программу, которая будет складывать два числа, и выводить их сумму.
Мы назвали нашу программу Summa через зарезервированное слово program.
Потом подключили модуль crt — он является стандартным, и его следует всегда подключать для выполнения нужных нам действий. Потом объявили о начале программы и о конце.
Для нашей программы понадобится две переменных для хранения первого и второго числа, и третья переменная для хранения суммы.
Для начала разберёмся что же такое переменная.
Переменная — это именованная ячейка памяти. То есть переменная это своеобразный контейнер, который может хранить в себе какие — то данные. Скажем у нас есть ящик под яблоки, в который мы положили одно яблоко, также и в переменную записали одну букву, потом мы показали что у нас есть в ящике — одно яблоко, также и переменная, мы можем просматривать что есть в ней.
Переменные в программе должны иметь имена без пробелов, эти имена не должны совпадать с именами зарезервированных слов. И у этих переменных должен быть прописан свой тип данных. То есть у нас может быть переменная строковая или с целыми числами и т.д.
В pascal есть достаточное кол-во типов переменных для удобной работы. Для начала рассмотрим тип числовых переменных — то есть вида — 1 2 3 … Этот тип называется Integer. Он позволяет в переменную записывать числа, которые не превышают -32768 и 32767.
Вот код программы, в котором мы прописали наши переменные:
Мы добавили новую строку. var — это зарезервированное слово, после которого можно прописывать имена переменных, то есть мы можем сами придумать любое имя переменной, у нас это — a b c — их также нужно перечислять через запятую. После того как нужные нам переменные мы перечислили, ставим двоеточие и пишем тип переменных, и запомните что для определённой группы переменных можно указывать только один тип, а не несколько сразу.
Теперь нам нужно двум переменным присвоить какие-то числа. Вы наверное задались вопросом как присваивать данные переменным?
Всё это осуществляется при помощи знака :=
Сначала пишем название переменной потом знак присваивания, а после данные, которые хотим присвоить.
Так и напишем с нашими двумя переменными a и b:
Мы присвоили переменной a — 4, а переменной b — 3;
Теперь присвоим сумму этих двух переменных переменной c: