http://sulfurzona.ru/
News
Service
Magazine
Software (Battle City Game, Wallpaper manager, Superpad, VG-NOW, Puzzle Game, Netler Internet Browser, ..)
Wing-Thunder Game (fly simulator)
Dune Game (Dune III, Dune IV, Cheats, Forum, ..)
Games free
Turbo Pascal (Assembler, Docs, Sources, Debbugers, ..)
Books (Docs for developers)
Guest book
Компьютерная диагностика двигателя автомобиля (адаптер К-линии)Компьютерная диагностика двигателя автомобиля (адаптер К-линии)
 
 
Скачать игру Крыло-Гром (Wing-Thunder) бесплатно
 
 

Паскаль для новичков (часть 2)

Лексика и структура программ на Pascal

 

Текст программы. Алфавит языка.

 
Автор: Владислав Демьянишин
 
Паскаль для новичковКак же выглядит китайская грамота? Читай ниже.
Текст программы Pascal-программы представляет собой последовательность строк, состоящих из символов, образующих алфавит языка. Строки программы завершаются специальными управляющими символами, не входящими в алфавит.
Максимальная длина строки составляет 126 символов.
 
Алфавит языка состоит из следующих символов:
 
1) Заглавные и строчные латинские буквы и символ "подчеркивание": A,B,C,...,X,Y,Z,a,b,c,...,x,y,z,_
В языке Turbo Pascal символ "подчеркивание" считается буквой. Буквы используются для формирования идентификаторов и служебных слов.
2) Десять арабских цифр от 0 до 9: 0,1,2,3,4,5,6,7,8,9
Цифры используются для записи чисел и идентификаторов.
3) Двадцать два специальных символа:
 
+ - * / = > < . , ; : @ ' ( ) [ ] { } # $ ^
 
М..да, подходящий такой наборчик, чтобы нарисовать рожицу с улыбкой.
 
Эти символы используются для конструирования знаков операций, выражений, комментариев, а также как синтаксические разделители.
 

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

 
Символы из алфавита языка используются для построения базовых элементов Pascal-программ - лексем. Лексема - минимальная единица языка, имеющая самостоятельный смысл. В Turbo Pascal имеются следующие виды лексем:
1) Служебные (зарезервированные) слова. Это ограниченная группа слов, построенных из букв. Каждое служебное слово представляет собой неделимое образование, смысл которого фиксирован в языке. Служебные слова НЕЛЬЗЯ использовать в качестве имен, вводимых программистом (т.е. в качестве идентификаторов для переменных, констант, меток, и т.д.) .
Все 55 служебных слов языка представлены в таблице 1.
2) Идентификаторы (имена) - вводятся для обозначения в программе имен переменных, констант, типов, меток, процедур и функций и формируются из букв и цифр, например:
 
myfunc4
my5func4
 
а так нельзя
 
2my5func4
 
Длина идентификатора может быть произвольной, но компилятор воспринимает только ПЕРВЫЕ 63 его символа.
В языке Turbo Pascal заглавные и строчные буквы в идентификаторах и служебных словах НЕ РАЗЛИЧАЮТСЯ. Таким образом следующие три идентификатора обозначают одну и туже переменную:
 
index
INDEX
Index
 
Правда класс? Хочешь – пиши маленькими, т.е. строчными буквами, а не хочешь – пиши с заглавной буквы или все заглавными. Красота.
 
3) Знаки операций формируются из одного или нескольких специальных символов и предназначены для задания действий по преобразованию данных и вычислению значений.
4) Разделители также формируются из специальных символов и в основном используются для повышения наглядности текстов программ. Примерами разделителей могут служить следующие конструкции:
 
; : = {
 
Упс, я же говорил, что получится рожица :o).
В текстах Pascal-программ допускаются фрагменты пояснительного характера - комментарии. Наличие комментариев не изменяет смысл программы и не влияет на ее выполнение.
В Turbo Pascal комментарии представляют собой произвольную последовательность символов (не обязательно из алфавита языка; т.е. допускаются и русские буквы), заключенную в фигурные скобки ‘{’ и ‘}’ или в разделители вида ‘{*’ и ‘*}’ или ‘(*’ и ‘*)’, например:
 
{Это комментарий}
{*А это длинный
комментарий, расположенный на
нескольких строках*}
(*А это длинный
комментарий, расположенный на
нескольких строках*)
 
Комментарий может содержать внутри себя еще комментарии, но с ДРУГИМИ разделителями, например:
 
{Это комментарий
(*А это длинный вложенный
комментарий, расположенный на
нескольких строках*)
с вложенным комментарием}
 
Использовать вложенные комментарии надо осторожно, так как можно внести путаницу и деактивировать часть кода программы, поэтому на первых порах я Вам не советую использовать вложенные комментарии.
Комментарий может находиться МЕЖДУ ЛЮБЫМИ ДВУМЯ ЛЕКСЕМАМИ программы.
Есть еще одна группа лексических конструкций языка, называемых директивами компилятора или прагматами. Эти конструкции так же , как комментарии, заключаются в фигурные скобки, но они не носят характер пояснений к программе, а являются инструкциями Pascal-компилятору, предписывающими тот или иной режим обработки Pascal-программы.
Директивы компилятора должны содержать сразу после
открывающей фигурной скобки (без пробелов и символов табуляции) символ ‘$’ (доллар), а за ним - одиночную букву, определяющую конкретный режим компиляции. После буквы может стоять знак ‘+’ (плюс) или ‘-’ (минус), задающий, соответственно, установку или отмену заданного режима, например:
 
{$B-}
{$N+}
 
Допускается одновременная установка сразу нескольких режимов в одной директиве. В этом случае директивы отделяются друг от друга символом ‘,’ (запятая), например:
 
{$B+, I-, N-}
 
В некоторых случаях синтаксис директив компилятора может быть несколько иным, например:
 
{$M 2048,0,65000}
{$L PROC1.OBJ}
 
Важную роль в тексте Pascal-программы играет символ пробел. Символы пробелов используются для отделения лексем друг от друга в тех случаях, когда слитное написание двух или более лексем может исказить смысл программы. В частности, если идентификаторы и служебные слова записываются друг за другом, то они обязательно должны быть разделены одним или несколькими пробелами (или расположены в различных строках), так как их слитное написание будет воспринято как один идентификатор.
 

Общая структура Pascal-программы

 
Программа состоит из двух основных блоков:
1) Блок действий;
2) Блок описания модулей, констант, типов, переменных, меток, процедур и функций, используемых в блоке действий;
Например:
 
{название программы, может отсутствовать}
program Example;
 
{описание используемых модулей}
uses Crt, Dos;
 
{описание значений глобальных констант}
const
Min = 1;
Max = 10;
 
{описание нового типа}
type
TMyArray = array [Min..Max] of byte;
 
{описание глобальных переменных}
var MyArray: TMyArray;
 
{описание процедур и функций}
procedure Print (value: byte);
 
{ описание локальных констант, т.е. для текущей подпрограммы }
const
Dis = 100;
{описание нового типа, т.е. видимого только внутри текущей подпрограммы }
type
TMyRec = record
X, Y : integer;
end;
{описание локальных переменных, они будут видны только внутри подпрограммы, в которой описаны}
var
MyRec: TMyRec;
begin
writeln('Value= ', value);
end;
 
function Add (v1,v2: byte): word;
begin
Add:=v1+v2;
end;
 
{блок основных(глобальных) действий}
begin
end.
{конец блока действий, всегда заканчивается точкой}
 
 

Типы языка

 
Система типов языка. Скалярные типы
 
Иерархия типов
 
В языке Pascal любая переменная характеризуется своим типом.
Тип - это то множество значений, которые может принимать переменная и, как следствие, множество операций, допустимых над данной переменной. Pascal является типизированным языком, или статическим. Это значит, что тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в операциях, допустимых ее типом.
Pascal имеет развитую систему типов. На основе небольшого числа стандартных типов программист может конструировать данные произвольной структуры и сложности, адекватно отражающие информационную природу задачи.
 
Система типов языка Turbo Pascal делится на:
1. Простые типы:
1) Скалярные:
a) Стандартные скалярные;
b) Перечислимые;
2) Ограниченные;
2. Составные типы:
1) Регулярные;
2) Комбинированные;
3) Файловые;
4) Множественные;
5) Строковые;
6) Объекты;
3. Ссылочные типы.
4. Процедурные типы.
 
Стандартные скалярные типы распадаются на группы:
1) Целые типы;
2) Вещественные типы;
3) Символьный тип;
4) Булевский тип;
 
Все скалярные типы, кроме вещественных, называются также дискретными.
 

Целые типы

 
Переменные целых типов могут содержать значения только целых
чисел (см. таблицу 2).
Записывать значения целых чисел в программе можно двумя способами: в десятичном виде и в шестнадцатеричном виде. В последнем случае цифры старше 9 обозначаются латинскими буквами от A до F, а в начале ставится символ “$” (доллар). Например:
 
десятич. шестнад.
3 3
9 9
10 $A
12 $C
15 $F
241 $F1
255 $FF
 
Над целыми значениями допустимы операции:
 
+ сложение
- вычитание
* умножение
/ деление
div деление нацело (с отбрасыванием дробной части)
mod взятие остатка от деления нацело
 
При применении к целым значениям все эти операции (кроме деления“/”) дают целый результат. Операция деления “/” всегда дает вещественный результат, т.е. с дробной частью.
 

Вещественные типы

 
Переменные этих типов позволяют содержать и оперировать числами с дробями высокой точности(см. таблицу 3).
Замечания:
1) Тип Comp является вещественным типом, но содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные(с нулевой мантиссой, т.е. с нулевой дробной частью).
2) Все вещественные типы, кроме Real, могут использоваться в программе, только если в конфигурации компьютера имеется математический сопроцессор Intel 80x87. Надеюсь с его отсутствием Вы вряд ли столкнетесь. Для корректной компиляции программы, использующей эти типы, необходимо установить директиву компилятора {$N+}. Кроме того можно задействовать средства программной эмуляции аппаратных операций с вещественными типами, установив директиву {$E+}. Если эта последняя директива установлена, то программа будет выполняться правильно независимо от наличия математического сопроцессора, хотя при этом код программы получится более громоздким и медленным.
Советую использовать {$N+} без {$E+}.
 
Вещественные значения могут записываться в форме с фиксированной точкой и в форме с плавающей точкой. С фиксированной точкой целая и дробная части числа отделяются друг от друга точкой (НЕ ЗАПЯТОЙ), например правильно 0.6 или –3.1415, и неправильно 0.3=.3 или 10.0=10.
В форме с плавающей точкой число записывается как пара вида
 
<мантисса> E <порядок>
 
т.е. “мантисса” умноженная на 10 в степени, равной “порядку” . Например, 7E-2 означает 7 умноженное на 10 в степени –2, 12.25E+6 или 12.25E6 означает 12.25 умноженное на 10 в степени 6. Мантисса при этом записывается в виде целого числа или как вещественное с фиксированной точкой; порядок записывается целым числом; допускаются положительные и отрицательные значения порядка.
Над вещественными значениями допустимы арифметические операции: + сложение, - вычитание, * умножение, / деление. Все они дают вещественный результат, если ХОТЯ БЫ ОДИН ОПЕРАНД вещественный. Операнд – значение (константа или переменная), участвующее в арифметическом действии.
 

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

 
Значениями символьного типа являются символы из множества ASCII (American Standard Code For Information Interchange – американский стандартный код для обмена информацией). Это множество состоит из 256 различных символов, упорядоченных определенным образом, и содержит символы заглавных и строчных букв, цифр, и различных других символов, включая специальные управляющие символы. Допускаются некоторые отклонения от стандарта ASCII, в частности, при наличии соответствующей системной поддержки это множество может содержать буквы русского алфавита.
Символьные значения занимают один байт. Если символ имеет графическое представление(т.е. не является управляющим символом), то оно записывается соответствующим знаком, заключенным в ОДИНАРНЫЕ кавычки(апострофы), например:
‘*’ ‘a’ ‘X’ ‘:’ ‘’’’
Для записи самого апострофа его изображение удваивается.
Любой символ, в том числе и не имеющий графического представления, можно записать в виде целочисленного кода
символа(от 0 до 255) и знака ‘#’(решетка, диез) перед ним:
 
#10
#$A
 
в последнем примере код записан в шестнадцатеричном виде.
Кроме того, некоторые управляющие символы ASCII можно записать так:
 
^C
 
где C – условное обозначение управляющего символа, например:
 
^G символ с кодировкой 7
^I эквивалентно #$1B
 
Над значениями символьного типа возможны операции сравнения, причем эти операции дают тот же результат, что и над соответствующими целочисленными кодами символов.
 

Булевский тип

 
Булевский тип может принимать только два логических истинностных значения. Эти значения обозначаются посредством стандартных идентификаторов True (истина) и False (ложь). Над значениями булевского типа допустимы операции сравнения, причем считается, что False < True. Кроме того, есть четыре стандартные логические операции, обозначаемые служебными словами:
 
And логическое умножение (“и”)
Or логическое сложение (“или”)
Xor сложение по модулю 2 (исключающее “или”)
Not логическое отрицание (унарная операция)
 
Значения этого типа занимают один байт памяти.
 
Дополнения к статье для вставки на этапе верстки:
(Служебные слова) Таблица 1.
Absolute
Array
And
Asm
Assembler
Begin
Case
Const
Construct
Destructor
Div
or
Do
Downto
Else
End
External
File
For
Forward
Function
Goto
If
Implementation
In
Inline
Interface
Interrupt
Label
Mod
Nil
Not
Object
Of
Or
Packed
Private
Procedure
Program
Record
Repeat
Set
Shl
Shr
String
Then
To
Type
Unit
Until
Uses
Var
Virtual
While
With
Xor
 
 
(Целые типы) Таблица 2.
Целый тип
Диапазон значений
Размер занимаемой памяти(байт)
Shortint
Integer
Longint
Byte
Word
-128..127
-32768..32767
-2147483648..2147483647
0..255
0..65535
1
2
4
1
2
 
(Вещественные типы) Таблица 3.
Тип
Диапазон
значений
Число цифр
мантиссы
Размер занимаемой
памяти (байт)
Real
Single
Double
Extended
Comp
2.9e-39..1.7e38
1.5e-45..3.4e38
5.0e-324..1.7e308
3.4e-4932..1.1e4930
-2e+63..+2e+63-1
11..12
7..8
15..16
19..20
6
4
8
10
8
 
Продолжение следует…
 
© Владислав Демьянишин
 
На нашем сайте можно не только бесплатно скачать игры, но и документацию и книги по программированию на MIDLetPascal, Turbo Pascal 6, Turbo Pascal 7, Borland Pascal, по программированию устройств Sound Blaster, Adlib, VESA BIOS, справочник Norton Guide и много другой полезной информации для программистов, включая примеры решения реальных задач по созданию резидентных программ.
 

Журнал > Программирование > Паскаль для новичков (Turbo Pascal, Assembler) > Паскаль для новичков (часть 2). Лексика и структура программ на Pascal
 
 
 
 
 
 
На главную страницу На предыдущую страницу На начало страницы