Основные понятия
История Pascal
Структура программы
Блок-схемы
Заголовок
Константы
Переменные
Модули
Crt
Graph
System
Printer
Процедуры
Delay
NoSound
Sound
TextBackground
TextColor
Window
Функции
KeyPressed
ReadKey
Процедуры
Arc
Bar
Circle
ClearDevice
CloseGraph
Ellipse
FloodFill
GetImage
InitGraph
Line
LineTo
MoveTo
OutText
OutTextXY
PutImage
PutPixel
SetBkColor
SetColor
SetFillPattern
SetFillStyle
SetLineStyle
SetTextStyle
Функции
GetBkColor
GetColor
GetPixel
|
|
|
|
Переменные
Переменными называются параметры программы, значения которых могут изменяться в процессе ее выполнения.
Все используемые в программе переменные должны быть определены с указанием их типов. Переменные определяются:
- в разделе объявления переменных программы;
- в разделе объявления переменных подпрограммы;
- в разделе объявления переменных модуля;
- в заголовке подпрограммы.
Раздел объявления переменных начинается зарезервированным словом var, за которым следуют объявления конкретных переменных. Каждое объявление состоит из имени переменной (имен, перечисленных через запятую, если переменные одного типа), двоеточия и типа. Каждое объявление завершается точкой с запятой:
var
<список переменных 1>: <тип 1>;
<список переменных 2>: <тип 2>; ...
<список переменных N>: <тип N>;
В разделе объявления переменных наряду с предопределенными типами можно использовать типы, объявленные перед этим в разделе объявления типов, а также новые, вводимые только для конкретных переменных.
В заголовке подпрограммы при определении переменных можно использовать лишь стандартные или ранее определенные типы.
Пример. Объявление переменных
type
Operation = (Plus, Minus, Mult, Divide);
var
X, Y, Z: Real; {Предопределенный тип}
I, J, K: Integer; {Предопределенный тип}
Operator: Operation; {Ранее определенный тип}
Digit: 0..9; {Объявление нового типа}
Переменные, объявленные не в подпрограмме, называются глобальными, так как они доступны во всех частях программы, в том числе и в подпрограммах, и размещаются в сегменте данных размером 65520 байт.
Переменные, объявленные в подпрограмме, называются локальными, так как доступны только этой подпрограмме, и размещаются в стековом сегменте. По умолчанию стековый сегмент имеет размер 16384 байта, однако, с помощью директивы компилятора {$М} его можно изменять от 1024 до 65520 байт.
Глобальные переменные постоянно находятся в памяти, локальные размещаются в стеке лишь на время выполнения подпрограммы, затем область стека освобождается.
Переменные используются практически в любых программах, и они были почти во всех предыдущих примерах.
В Тurbo Раsсаl можно использовать абсолютные переменные, располагаемые в определенной области памяти.
Абсолютные переменные снабжаются директивой absolute и указанием на место размещения этой переменной. При этом возможны два варианта:-
указание абсолютного адреса в оперативной памяти, задавая через двоеточие адрес сегмента и смещение;
- "привязка" переменной к адресу начала другой перменной.
Пример. Использование абсолютных переменных
var
Str: string [32]; {Строка}
StrLen: Byte absolute Str; {Привязка к началу строки}
CrtMode: Byte absolute $0040: $0049; {Указание абсолютного адреса}
Абсолютные переменные можно использовать, в частности, для преобразования типов данных, когда к переменной одного типа "привязывается" переменная другого типа.
Пример. Программа, выводящая символы и их АSCII-коды
Напишем программу, выводящую символы и коды в кодировке АSCII. И сам символ, и его АSCII -код имеют размер 1 байт. Чтобы вывести все символы, организуем вывод в соответствии с их кодами от 32 до 255. Для вывода и кода и символа введем две переменные - типа Byte и Сhаr, причем "привяжем" начало одной переменной к началу другой. В этом случае одну и ту же информацию можно будет без каких-либо преобразований выводить и как число, и как символ. Текст такой программы будет следующим:
program EXAMPLE9; {Заголовок программы}
{Вывод символов с их АSCII -кодировкой} uses Crt; {Использование модуля Crt}
var i: Byte: {Переменная для кода символа}
Ch: Char absolute i; {Символ}
begin {Начало тела программы}
for i:= 32 to 255 do {Организация цикла}begin {Начало внешнего составного оператора}Write(Ch: 4, i: 5); {Вывод символа и кода}if (i - 31) mod 8 = 0 then {Если выведено 8 символов...}begin {Начало внутреннего составного оператора}WriteLn; {Переход на новую строку}ReadKey; {Ожидание нажатия клавиши}end; {Конец внутреннего составного оператора}end; {Конец внешнего составного оператора} end. {Конец программы}
В этой программе применяется еще один прием остановки программы до воздействия на нее пользователя. В данном случае употребляется стандартная подпрограмма ReadKey, расположенная в модуле Crt. Эта подпрограмма является подпрограммой-функцией, с помощью которой определяется символ, соответствующий нажатой клавише клавиатуры. Здесь же сам символ нажатой клавиши нас не интересует, и подпрограмма применяется как процедура лишь для фиксации факта нажатия какой-либо клавиши. Дело в том, что выполнение программы при использовании этой подпрограммы приостанавливается до нажатия какой-либо клавиши. Это несколько удобнее, чем упомянутый выше вариант, в котором обязательно следует нажать клавишу Епtеr. Однако для того, чтобы применить эту подпрограмму, модуль Crt следует объявить в разделе объявления используемых модулей, начинающемся зарезервированным словом uses.
В программе используются две переменные: i - как параметр цикла, содержащий код символа, и Сh - содержащая сам символ. Обе эти переменные занимают одно и то же место в памяти, что осуществляется с помощью директивы absolute. Внутри тела программы организуется цикл вывода всех символов с кодами от 32 до 255. Оператором цикла является составной оператор, заключенный в операторные скобки begin и еnd. Этот оператор здесь назван внешним составным оператором, так как в него входит другой - внутренний составной оператор. На каждой итерации с помощью стандартной процедуры Write выводятся символ Сh и его код i. При этом используется форматированный вывод. После вывода этой информации на экран проверяется, не выведено ли уже в очередную строку 8 символов и их кодов, и, если выведено ровно 8 символов и их кодов, происходит переход на новую строку экрана с помощью стандартной процедуры WriteLn и ожидается с помощью подпрограммы ReadKey нажатие пользователем клавиши. Эти два действия заключены в операторные скобки begin и еnd, т. е. оформлены в составной оператор, который здесь назван внутренним составным оператором.
Designed by Alexander Krasilnikov, Copyright © 2003
Частичная или полная перепечатка или иное использование материалов сайта не допускается. Нарушители преследуются по закону РФ.
|
|
|
|
|