Введеhие в язык пpогpаммиpоваhия Pascal

 

1. Алфавит языка

 

Как и любой дpугой язык пpогpаммиpования, Pаscal имеет свой

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

- символы, используемые в идентификаторах;

- разделители;

- специальные символы;

- неиспользуемые символы.

 

1.1. Символы, используемые в идентификаторах (именах)

 

Идентификатор (имя) - имя любого объекта программы - может включать буквы, цифры и символ подчеркивания.

В качестве букв можно использовать латинские строчные и прописные буквы: A,B,C,D,...,Z и a,b,c,d,...,z. При этом компилятор не различает прописные и строчные буквы. Идентификаторы FILENAME, filename и FileName - это одно и тоже.

В идендификатор можно включать 10 арабских цифр от 0 до 9.В идентификаторе они могут присутствовать в любой позиции кроме

первой. Примеры идентификаторов с использованием цифр:

A101 name2 pr1m

Символ подчеркивания "_" может находиться в любой позицииидентификатора. Примеры идентификаторов с использованием подчеркивания: My_nameHis_familySqure_1 Squre_2 _House

Именно из этих символов (и только из них!) конструируютсяидентификаторы. Длина идентификаторов формально не ограничена,но различаются в них лишь первые 63 символа, остальные игнорируются. Рекомендуется при выборе идентификаторов использовать содержательные идентификаторы, т.е. выбирать такие имена, которые отражают их назначение. Например, если программа предназначена для сортировки массива чисел, то ее можно назвать sort, если в переменной хранится год рождения - Year, если в переменной вычисляется сумма чисел - Sum и т.п.

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

Цифры также могут использоваться в изображении числовыхконстант. Например: 10.85 0.07 1689

 

 

1.2 Разделители

 

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

- пробел;

- любой управляющий символ (коды от 0 до 31);

- комментарий.

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

Комментарии заключаются в скобки вида { }, либо (* *) и могут занимать любое число строк.

 

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

 

К специальным символам, выполняющим в языке определенные функции, относятся:

- знаки пунктуации;

- знаки операций;

- зарезервированные слова.

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

Знаки операций предназначены для обозначения тех или иных арифметических, логических или других действий. Они бывают двух типов: состоящие из однобуквенных символов (например, + - * /) и буквенные операции (например, not, div, mod и т.д.), представ-

ляющие собой зарезервированные слова.

Зарезервированные слова включают служебные слова (например,begin (означает начало тела программы), end (конец), external, forward и т.д. Служебные слова можно использовать только поих прямому назначению.

 

1.4. Неиспользуемые символы

Некоторые символы, такие как, например %, & и буквы русского алфавита не используются в Pascal, но их можно использовать в комментариях и символьных строках.

 

2. СТРУКТУРА ПРОГРАММЫ

 

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

 

program <имя>; <- заголовок программы

 

Uses имена модулей

Label...имена меток,

которые могут использоваться в программе

Const...имена постоянных <- блок описания данных

Type...описание типов данных программы

Var...раздел описания переменных в программе

 

begin <- начало исполняемой части программы

 

<оператор1>;

<оператор2>;

...

<операторN>

end. <- конец программы

 

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

Пример 1:

program MULT; {заголовок программы}

var {раздел объявления переменных}

X,Y,REZ: real;

begin {начало тела программы}

write('Введите первое число: ');{вывод текста на экран}

readln(X); {ввод числа}

write('Введите второе число: '); {вывод текста на экран}

readln(Y); {ввод числа}

REZ:=X*Y; {определение произведения}

writeln('Произведение чисел = ',REZ) {вывод рез.на экран}

end. {конец программы}

 

Заголовок программы всегда начинается с ключевого слова program, за которым следует имя программы. Завершается заголовок символом ";". Заголовок может располагаться только в начале программы. Особенностью Pascal является то, что для него заголовок программы НЕОБЯЗАТЕЛЕН. Поэтому заголовок играет скорее декоративную роль и предоставляет пользователю удобство для обозначения программы.

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

Следом за блоком описаний следует тело программы, которое состоит из трех частей:

начало тела программы - ключевое слово begin

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

конец тела программы - ключевое слово end с точкой: END.

(точка ОБЯЗАТЕЛЬНА!).

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

экрана (ввод данных) и команда присваивания.

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

 

3. ТИПЫ ДАННЫХ

 

Прежде чем говорить о типах данных, договоримся о том, чтомы будем понимать под самыми данными.

 

ДАННЫЕ - это совокупность информации, с которой оперирует ЭВМпри решении конкретной задачи. Для того, чтобы программа могла работать с данными, они должны быть описаны в блоке описания данных.

 

Для обозначения данных используются ИДЕНТИФИКАТОРЫ. Требования к идентификаторам изложены в 1.1.

Среди данных могут быть константы и переменные.

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

Const <имя>=<значение константы>;

Например:

 

Const {Ключевое слово, с которого начинается блок

констант}

PI=3.14;

G=9.8;

Year=1994;

Gr='Я'; {символьные константы заключаются в апострофы}

 

В программе блок описания констант располагается ВЫШЕ блока описания переменных VAR.

 

ПЕРЕМЕННЫЕ - это участок оперативной памяти, в котором хранятсяданные. Это такие данные, которые могут меняться в процессе выполнения программы. Описание переменных имеет следующий вид:

Var <имя>:<тип переменной>;

<имя>:<тип переменной>;

...

ТИП - это способ организации оперативной памяти для хранения данных.

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

ТИП определяет:

1 Объем занимаемой памяти

2 Диапазон допустимых значений

3 Набор допустимых операций

В Pascal'е выделяется несколько групп типов. Каждаягруппа в свою очередь также имеет свое разделение. Мы рассмотрим пока лишь стандартные типы данных.

К стандартным относятся следующие типы данных:

1 целый,

2 вещественный,

3 символьный

4 строковый.

 

3.1. ЦЕЛЫЙ ТИП

 

Переменные целого типа могут содержать только целые число-вые значения. Для описания целых переменных используется ключевое слово integer. Переменная целого типа (типа integer) может принимать любое значение из диапазона от -32768 до 32767. Примером величин, которые могут принимать только целое значение может быть: год рождения, номер квартиры, количество детей и т.п.

Константы целого типа записываются так же, как в математике: 234 10000 -11111 9999.

Для удобства пользователей в языке Turbo Pascal имеется несколько целых типов:

 

Тип

данных Диапазон допустимых значений Выделяемая память

 

Shortint -128... 127 1 байт

Integer -32768... 32767 2 байта

Longint -2147483648...214748364 4 байта

Byte 0... 255 1 байт

Word 0... 65535 2 байта

 

3.2. Вещественный тип

 

Вещественный тип данных используется для описания вещественных переменных, т.е. таких переменных, значением которых может быть вещественное или целое число. Например: 19.56 -879.170.05. Следует обратить внимание на то, что в записи вещественных чисел вместо десятичной запятой (как принято в математике), используется ДЕСЯТИЧНАЯ ТОЧКА! Очень большие и очень маленькие числа в математике принято записывать в специальной форме с помощью умножения значащих цифр на степень 10. В языке Pasal такая запись называется записью числа в плавающем виде и имеет вид:

Обычная запись Запись в плавающем виде:

1.3652*10 1.3652Е+8

-28

9.109*10 9.109Е-28

Основной вещественный тип в языке - тип Real. Однако в языке Pascal определено пять стандартных вещественных типов:

 

| Тип | Диапазон Знач.цифр Память |

 

| Real 2.9E-39... 1.7E38 11-12 6 байт |

| Single 1.5E-45... 3.4E38 7-8 4 байта|

| Double 5.0E-324... 3.4E308 15-16 8 байт |

| Extended 3.4E-4932...1.1E4932 19-20 10 байт |

 

3.3 Символьный тип

 

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

полный набор ASCII-символов. Для описания символьных данных используется ключевое слово Char. Константы символьного типа обязательно ЗАКЛЮЧАЮТСЯ в АПОСТРОФЫ. Например:

'F' '@' 'Ю' '7'

Переменные символьного типа описываются с помощью ключевого слова CHAR. Значением переменной символьного типа может быть ОДИН СИМВОЛ (буква, цифра, знак препинания и т.п.).

Например:

var CLASS: char; {Объявлена переменная, значением которой может быть один символ}

В памяти компьютера под переменную данного типа отводится один байт.

 

3.4 Логический тип

 

Логический или, так называемый, булевский тип может принимать одно из двух значений: True (истина) или False (ложь).

Для описания логических переменных используется ключевое слово Boolean.

Над значениями логического типа допустимы операции сравнения, причем считается, что False<True

Значения логического типа занимают 1 байт памяти.

 

3.5. Строковый тип данных

 

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

Pascal. Однако мы будем считать его таковым.

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

Константы строкового типа представляют собой произвольный текст, заключенный в АПОСТРОФЫ. Например:

'Ваши доходы?' '2+4=7'

 

3.5 Пример описания данных

 

Рассмотрим следующий пример. Пусть в программе требуется обрабатывать следующую информацию: число и номер месяца, количество отгруженных вагонов, вес вагона, номер вагона, литера вагона (одна буква) и общий вес вагонов. Как следует описать эти данные? Для начала необходимо для каждой переменной придуматьназвание - идентификатор. Пусть мы обозначили их последовательно следующимобразом: Date, Month, Kol, Weight, Number, Lit, Sum. Далее следует проанализировать, какие значения могут приниматьэти данные? В результате блок описания переменых может получить следующийвид:

Var

Date,Month,Kol,Number: Integer;

Weight,Sum: Real;

lit: Char; {одинстроковыйсимвол}

Speech:string; {несколько символов(строка)}

A:Boolean;

 

4. КОМАНДА ПРИСВАИВАНИЯ

 

Пожалуй, одна из самых распространенных команд - это команда присваивания. В приведенном выше Примере 1 это была команда:

REZ:=X*Y;

Важно обратить внимание на следующее. Эта команда всегда имеет следующую структуру:

 

<имя>:=<выражение>

 

По данной команде выполняются следующие действия:

- вычисляется значение выражения, стоящего в правой части;

- переменная величина, имя которой стоит в левой части,

принимает вычисленное значение.

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

Примеры команд присваивания:

program ex0;

var Sum,Weight,kol:integer; {Переменные целого типа}

Rez,X,Y:Real; {Переменные Вещественного типа}

Lit:char; {Переменная СИМВОЛЬНОГО типа}

name,num:String; {Переменные СТРОКОВОГО типа}

Begin {Начало тела программы}

Weight:=1000; {Переменной Weight присвоить значение 1000}

kol:=25; {Переменной kol присвоить значение 25}

Sum:=Weight*kol; {Переменной Sum присвоить значение произве-

дения чисел, хранящихся в переменных Weight

и kol}

X:=10.25; Y:=7.5;

Rez:=(X+Y)/5; {Как Вы думаете, чему будет соответствовать

значение переменной Rez после такого присваи-

вания?}

Lit:='j'; {Переменной Lit присвоить значение - символ j}

name:='Умный в гору не пойдет, умный гору обойдет';

num:='12.5'; {Обратите внимание на то, что текст, записанный

в переменную строкового типа, представляет со-

бой вещественное число. Но по синтаксису языка

Pascal это вовсе не число, а текст - ведь он

заключен в апострофы!}

end. {Конец тела программы}

 

4.1 Операции

 

Все операции в языке Turbo Pascal можно разбить на следующие

группы:

- арифметические операции;

- логические операции;

- операции отношения.

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

Арифметические операции применимы только к величинам целых и вещественных типов. Их можно разбить на унарные и бинарные.

Унарный знак +, поставленный перед величиной целого или вещественного типа, не оказывает никакого влияния на значение этой величины. Унарный знак -, поставленный перед величиной целого или вещественного типа, приводит к изменению знака величины.

Полный перечень бинарных арифметических операций приведен в Приложении 3.

Следует отметить набор операций, в которых в качестве операндов выступают переменные или константы ЦЕЛОГО типа и дающий в результате ЦЕЛЫЕ ЗНАЧЕНИЯ.

Пусть переменные A,B,C описаны следующим образом:

var A,B,C:integer; (или любой другой ЦЕЛЫЙ тип).

 

--------------------------------------------------------------------------------------------------------------------

Операция Название Тип операнда Примеры

 

+ сложение любой числовой A:=5; B:=10; С:=A+B;

{в С - число 15}

- вычитание любой числовой A:=5; B:=10; C:=A-B;

{в С - число (-5)}

* УМНОЖЕНИЕ любой числовой A:=5; B:=10; C:=A*B;

{в С - число 50}

div ДЕЛЕНИЕ Только целый тип A:=5; B:=2; C:=A div B;

НАЦЕЛО {в С - число 2}

mod ОСТАТОК ПРИ Только целый тип A:=5; B:=2; C:=A mod B;

ДЕЛЕНИИ НА- {в С - число 1}

ЦЕЛО

 

ОБРАТИТЕ ВНИМАНИЕ на то, что:

a) если Вы хотите выполнять операции с целыми числами и получать в результате ЦЕЛЫЕ значения, не используйте операцию деления (/). Для таких целей допустимо использовать либо операцию DIV, либо MOD;

б) ЗАПОМНИТЕ, что целой переменной присвоить ВЕЩЕСТВЕННОЕ значение НЕЛЬЗЯ. Компилятор в случае попытки выполнить такое действие выдаст ошибку! ВЕЩЕСТВЕННОЙ переменной присвоить ЦЕЛОЕ значение МОЖНО!

 

Логические операции применяются только к величинам логического типа. Результат операций - тоже логического типа. Имеется одна унарная операция not (ОТРИЦАНИЕ) и три бинарные операцииand (И), or (ИЛИ) и hor (ИСКЛЮЧАЮЩЕЕ ИЛИ). Полный перечень логических операций приводится в Приложении 3.

Операции отношения предназначены для сравнения двух величин (величины должны быть сравнимых типов). Результат сравнения имеет логический тип. Операции отношения следующие: =, <>, <, <=,>=, >. Назначение этих операций описано в Приложении 3.

 

4.2 Стандартные функции

 

В языке Pascal существует ряд заранее разработанных подпрограмм-функций, которые можно использовать как готовые объекты. Они объединены в библиотеку стандартных модулей. Это целый рядарифметических функций, позволяющих работать с тригонометрическими и логарифмическими функциями (Sin, Cos, Arctan, Ln, Exp,Sqr, Sqrt, Int, Abs, Pi). Это набор функций, предназначенный дляпреобразования типов величин (например, символа в целое число, вещественного числа в целое и т.п.): Chr, High, Low, Ord, Round, Trunc. Имеются в библиотеке стандартных модулей и функции, позволяющие выполнять действия над величинами порядкового типа.

Это: Odd, Pred,Succ.

---------------------------------------------------------------

Функция Назначение

---------------------------------------------------------------

Abs(x) |x|

Sqr(x) x*x

Sin(x) синус х

Cos(x) косинус х

Arctan(x) арктангенс х

Exp(x) экспонента х

Ln(x) натуральный логарифм х

Sqrt(x) корень квадратный х

Trunc(x) вычисление целой части х

Round(x) округление х в сторону ближайшего целого

Odd(x) True,если х - нечетное, False - х четное

________________________________________________________________

 

Tg(x)=sin(x)/cos(x)

Csc(x)=1/sin(x)

Sc(x)=1/cos(x)

Arcsin(x)=Arctan(sqrt(x/(1-x*x))

arccos(x)=pi/2 -arcsin(x)

arcctg(x)=pi/2-arctag(x)

LOG a (X)=ln(x)/ln(a)

X^a=Exp(a*Ln(X))

 

Примеры использования стандартных функций:

A:=Sin(X); {Определение значения синуса угла X. Имейте ввиду, что угол для всех тригонометричеких функций задается в радианах. Перевод из градусной меры угла радианную осуществляется по формуле:

п x Г

п=3.141592...

R=-----,

Г - величина угла в градусах. 180}

S:=Round(R); {Округление числа R до ближайшего целого. Например, S:=Round(5.55) - в S будет число 6 S:=Round(5.49) - в S будет число 5 Результат данной функции ВСЕГДА целое число}

S:=Trunc(R); {Результат данной функции также ВСЕГДА целое число. Функция Trunc отбрасывает дробную часть числа. Например: S:=Trunc(5.55) - в S будет число 5. S:=Trunc(5.45) - в S будет число 5}

 

 

4.3 Запись выражений

 

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

 

Например:

Математическая запись Запись в программе

 

а+b

------ (a+b)/2

 

a(b+1)

-------- a*(b+1)/4

Замечание: Команда присваивания будет выполнена только втом случае, если тип идентификатора и тип вычисленного значениясовместимы. Иначе произойдет прерывание работы программы или будет получен некорректный результат. Поэтому обеспечить соответствие типов - это прежде всего задача автора программы.

 

5. ПРОСТЕЙШИЕ КОМАНДЫ ВВОДА И ВЫВОДА ИНФОРМАЦИИ

 

5.1 Вывод информации

 

Чтобы вывести на экран дисплея какую-то информацию (текст или значения переменных), используется команда вывода WRITE, которая записывается следующим образом:

WRITE(<список вывода>);

В списке вывода могут быть имена переменных или тексты.

Например:

WRITE(A,B);

Если значения переменных следующие: А=3, В=15, то в результате выполнения команды WRITE(A,B) на экране дисплея выведется:

3 15

Обратите внимание, что вместо имен переменных на экран выводятся значения этих переменных.

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

WRITE('Ай да мы!');

на экране дисплея выведется:

Ай да мы!_

Обратите внимание, что на экран текст выводится без кавычек, а курсор размещается сразу за текстом!

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

Рассмотрим следующую небольшую программу:

 

PROGRAM CIRCULE;

{ Программа вычисления площади и длины окружности }

CONST

PI:=3.14159;

VAR

R,S,L:REAL;

BEGIN

R:=73.34; { радиусокружности }

S:=PI*R*R; { площадькруга }

L:=2*PI*R; { длина окружности }

WRITE('Площадь круга S=',S,' Длина окружности L=',L);

END.

В результате выполнения данной программы на экран дисплея будет выведена следующая информация:

Площадь круга S=1.689784E+04 Длина окружности=4.608084Е+02

Кроме команды WRITE имеется еще одна команда вывода информации. Это команда WRITELN. Синтаксис и правила работы с этой командой абсолютно такие же, как у команды WRITE. Единственным отличием является то, что после выполнения команды WRITELN курсор переходит к началу следующей строки. Рассмотримдвепрограммы:

PROGRAM S1; PROGRAM S2;

BEGIN BEGIN

WRITE('---'); WRITELN('---');

WRITE('!!'); WRITELN('!!');

WRITE('---') WRITELN('---')

END. END.

В результате работы программы S1 на экран дисплея будет вы-

ведено:

---!!---

Программа S2 выведет на экран:

 

---

!!

---

, Т.о при использовании команды WRITE курсор после окончания выполнения команды остается в той же строке и следующая команда вывода будет выводить информацию в той же строке. Команда же WRITELN осуществляет подготовку к выполнению следующей команды вывода. Поэтому на практике этим активно пользуются и перед на-

чалом вывода информации записывают команду WRITELN без параметров.

Рекомендуем использовать команду WRITELN!

 

5.2 Ввод информации

 

Для того, чтобы можно было работать с какой-то переменной величиной, необходимо задать ее значение. Первый путь - присвоить ей значение с помощью команды присваивания. Этот путь имеетсущественные недостатки. Разберем его на примере программы СIRCLE (приведена в разделе 5.1). Эта программа годится только для того, чтобы вычислить S и L для окружности радиуса 73.34. Для того, чтобы вычислить S и L для окружности другого радиуса, необходимо написать (или изменить старую) программу, которая будет отличаться лишь одной командой:

R:=<значение>;

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

READLN(<список переменных>)

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

Например, если в программе есть команда

READLN(A,B)

то как только компьютер дойдет до выполнения этой команды, он остановится в ожидании ответа. Если на клавиатуре будет набрано:

15.76,21, то переменные А и В примут следующие значения:

А=15.76 В=21

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

 

WRITELN;

WRITE('Введите длину прямоугольника ');

READLN(L);

WRITE('Введите ширину прямоугольника ');

READLN(H);

 

Рекомендуем в дальнейшем использовать только комментированный ввод данных!

Программа CIRCLE, приведенная в разделе 5.1, с использованием команд ввода и вывода будет иметь следующий вид:

 

PROGRAM CIRCLE;

{ Программа вычисления площади и длины окружности }

CONST

PI:=3.14159;

VAR

R,S,L:REAL;

BEGIN

WRITELN; { пустой ввод - готовимся к вводу информации }

WRITE('Введите радиус окружности: '); { вывод текста }

READLN(R) { ввод радиуса окружности }

S:=PI*R*R; { вычисление площади круга }

L:=2*PI*R; { вычисление длины окружности }

WRITE('Площадь круга S=',S,' Длина окружности L=',L);

END.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: