Автор работы: Пользователь скрыл имя, 11 Февраля 2013 в 13:32, лекция
Лекции по дисциплине "Информатика"
implementation
end.
Использование в модулях процедур и функций имеет свои особенности.
Заголовок подпрограммы содержит все сведения, необходимые для ее вы-
зова: имя, перечень и тип параметров, тип результата для функций, эта
информация должна быть доступна для других программ и модулей. С дру-
гой стороны, текст подпрограммы, реализующий ее алгоритм, другими
программами и модулями не может быть использован. Поэтому заголовок
процедур и функций помещают в интерфейсную часть модуля, а текст - в
часть реализации.
Интерфейсная часть модуля содержит только видимые (доступные для
других программ и модулей) заголовки процедур и функций (без служеб-
ного слова forward). Полный текст процедуры или функции помещают в
часть реализации, причем заголовок может не содержать список формаль-
ных параметров.
Исходный
текст модуля должен быть
тивы Make подменю Compile и записан на диск. Результатом компиляции
модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное
имя модуля берется из заголовка модуля.
Для подключения модуля к программе необходимо указать его имя в
разделе описания модулей, например:
uses CRT, Graph;
В том случае,
если имена переменных в
в программе, использующей этот модуль, совпадают, обращение будет
происходить к переменной, описанной в программе. Для обращения к пе-
ременной, описанной в модуле, необходимо применить составное имя,
состоящее из имени модуля и имени переменной, разделенных точкой.
Например, пусть имеется модуль, в котором описана переменная К:
unit M;
interface
var K: Integer;
implementation
.................
end.
Пусть программа, использующая этот модуль, также содержит перемен-
ную К:
Program P;
uses M;
var K: Char;
begin
.............
end.
Для того, чтобы в программе P иметь доступ к переменной K из моду-
ля M, необходимо задать составное имя M.K.
Использование составных имен применяется не только к именам пере-
менных, а ко всем именам, описанным в интерфейсной части модуля.
Рекурсивное
использование модулей
Если
в модуле имеется раздел
раздела будут
выполнены перед началом
используется этот модуль.
28. М Н О Ж Е С Т В А
Понятие множества в языке ПАСКАЛЬ основывается на математическом
представлении о множествах: это ограниченная совокупность различных
элементов. Для построения конкретного множественного типа использует-
ся перечисляемый или интервальный тип данных. Тип элементов, состав-
ляющих множество, называется базовым типом.
Множественный тип описывается с помощью служебных слов Set of,
например:
type M= Set of B;
Здесь М - множественный тип, В - базовый тип.
Пример
описания переменной
type
M= Set of 'A'..'D';
var
MS: M;
Принадлежность переменных к множественному типу может быть опреде-
лена прямо в разделе описания переменных:
var
C: Set of 0..7;
Константы множественного типа записываются в виде заключенной в
квадратные скобки последовательности элементов или интервалов базово-
го типа, разделенных запятыми, например:
['A', 'C'] [0, 2, 7] [3, 7, 11..14].
Константа вида
[ ]
означает пустое подмножество.
Множество включает в себя набор элементов базового типа, все подм-
ножества данного множества, а также пустое подмножество. Если базовый
тип, на котором строится множество, имеет К элементов, то число подм-
ножеств, входящих в это множество, равно 2 в степени К. Пусть имеется
переменная Р интервального типа:
var P: 1..3;
Эта переменная может принимать три различных значения - либо 1,
либо 2, либо 3. Переменная Т множественного типа
var T: Set of 1..3;
может принимать восемь различных значений:
[ ] [1,2]
[1] [1,3]
[2] [2,3]
[3] [1,2,3]
Порядок
перечисления элементов
личен.
Значение переменной множественного типа может быть задано конс-
трукцией вида [T], где T - переменная базового типа.
К переменным и константам множественного типа применимы операции
присваивания(:=), объединения(+), пересечения(*) и вычитания(-):
['A','B'] + ['A','D'] даст ['A','B','D']
['A'] * ['A','B','C'] даст ['A']
['A','B','C'] - ['A','B'] даст ['C'].
Результат выполнения этих операций есть величина множественного
типа.
К множественным величинам применимы операции: тождественность (=),
нетождественность (<>), содержится в (<=), содержит (>=). Результат
выполнения этих операций имеет логический тип, например:
['A','B'] = ['A','C'] даст FALSE
['A','B'] <> ['A','C'] даст TRUE
['B'] <= ['B','C'] даст TRUE
['C','D'] >= ['A'] даст FALSE.
Кроме этих операций для работы с величинами множественного типа в
языке ПАСКАЛЬ используется операция
in
проверяющая принадлежность элемента базового типа, стоящего слева
от знака операции, множеству, стоящему справа от знака операции. Ре-
зультат выполнения этой операции - булевский. Операция проверки при-
надлежности элемента множеству часто используется вместо операций от-
ношения, например:
A in ['A', 'B'] даст TRUE,
2 in [1, 3, 6] даст FALSE.
При использовании в программах данных множественного типа
выполнение операций происходит над битовыми строками данных. Каждому
значению множественного типа в памяти ЭВМ соответствует один двоичный
разряд. Например, множество
['A','B','C','D']
представлено в памяти ЭВМ битовой строкой
1 1 1 1.
Подмножества этого множества представлены строками:
['A','B','D'] 1 1 0 1
['B','C'] 0 1 1 0
['D'] 0 0 0 1
Величины множественного типа не могут быть элементами списка вво-
да - вывода.
В каждой конкретной реализации транслятора с языка ПАСКАЛЬ коли-
чество элементов базового типа, на котором строится множество, огра-
ничено. В TURBO PASCAL количество базовых элементов не должно превы-
шать 256.
Инициализация величин множественного типа производится с помощью
типизированных констант:
const seLit: Set of 'A'..'D'= [];
Проиллюстрируем применение данных множественного типа на примере.
Пример. Составить программу, которая вырабатывает и выводит на эк-
ран дисплея наборы случайных чисел для игры в "Спортлото 5 из 36".
Для заполнения
каждой карточки спортлото
из пяти псевдослучайных чисел. К этим числам предъявляются два требо-
вания:
-числа должны находиться в диапазоне 1..36;
-числа не должны повторяться.
Program Lotto;
var
nb, k: Set of 1..36;
kol, l, i, n: Integer;
begin
Randomize;
WriteLn('ВВЕДИ kol');
ReadLn(kol);
nb:=[1..36];
for i:=1 to kol do
begin
k:=[];
for l:=1 to 5 do
begin
repeat
n:=Random(36)
until (n in nb) and not (n in k);
k:=k+[n];
Write(n:4)
end;
WriteLn
end
end.
29. З А П И С И
Запись
представляет собой
чески связанных компонент, принадлежащих к разным типам. Компоненты
записи называются полями, каждое из которых определяется именем. Поле
записи содержит имя поля, вслед за которым через двоеточие указывает-
ся тип этого поля. Поля записи могут относиться к любому типу, допус-
тимому в языке Паскаль, за исключением файлового типа.
Описание записи в языке ПАСКАЛЬ осуществляется с помощью
служебного слова RECORD, вслед за которым описываются компоненты за-
писи. Завершается описание записи служебным словом END.
Например, записная книжка содержит фамилии, инициалы и номера те-
лефона, поэтому отдельную строку в записной книжке удобно представить
в виде следующей записи:
type Row=Record
FIO: String[20];
TEL: String[7]
end;
var str: Row;
Описание записей возможно и без использования имени типа, напри-
мер:
var str: Record
FIO: String[20];
TEL: String[7]
end;
Обращение к записи в целом допускается только в операторах присва-
ивания, где слева и справа от знака присваивания используются имена
записей одинакового типа. Во всех остальных случаях оперируют отдель-
ными полями записей. Чтобы обратиться к отдельной компоненте записи,
необходимо задать имя записи и через точку указать имя нужного поля,
например:
str.FIO, str.TEL
Такое имя называется составным. Компонентой записи может быть так-
же запись, в таком случае составное имя будет содержать не два, а
большее количество имен.
Обращение к компонентам записей можно упростить, если воспользо-
ваться оператором присоединения with.
Он позволяет заменить составные имена, характеризующие каждое по-
ле, просто на имена полей, а имя записи определить в операторе присо-
единения:
with M do OP;
Здесь М - имя записи, ОР - оператор, простой или составной.
Оператор ОР представляет собой область действия оператора присоедине-
ния, в пределах которой можно не использовать составные имена.
Иногда содержимое отдельной записи зависит от значения одного из
ее полей. В языке ПАСКАЛЬ допускается описание записи, состоящей из
общей и вариантной частей. Вариантная часть задается с помощью конс-
трукции
case P of,
где Р - имя поля из общей части записи. Возможные значения, прини-
маемые этим полем, перечисляются так же, как и в операторе варианта.
Однако вместо указания выполняемого действия, как это делается в опе-
раторе варианта, указываются поля варианта, заключенные в круглые
скобки. Описание вариантной части завершается служебным словом end.
Тип поля Р можно указать в заголовке вариантной части, например:
case P: Integer of
Инициализация записей осуществляется с помощью типизированных
констант:
type
RecType= Record
x,y: Word;
ch: Char;
dim: Array[1..3] of Byte
end;
const
Rec: RecType= ( x: 127; y: 255;
ch: 'A';
dim: (2, 4, 8) );
{}
30. Ф А Й Л Ы
Введение
файлового типа в язык
ПАСКАЛЬ вызвано
обеспечить возможность работы с периферийными (внешними) устройствами
ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файловый
тип данных или файл
произвольного числа однотипных компонент.
Общее свойство массива, множества и записи заключается в том, что
количество их компонент определено на этапе написания программы, тог-
да как количество компонент файла в тексте программы не определяется
и может быть произвольным.
Понятие файла достаточно широко. Это может быть обычный файл на
диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или
другие устройства.
При работе
с файлами выполняются
ввода означает перепись данных с внешнего устройства (из входного
файла) в основную память ЭВМ, операция вывода - это пересылка данных
из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами.
Их имена определяются операционной системой. В программах на языке
Паскаль имена файлов задаются с помощью строк. Например, имя файла на
диске может иметь вид:
'A:LAB1.DAT'
'c:\ABC150\pr.pas'
'lab3.pas'.
Операционная система MS-DOS не делает особого различия между фай-
лами на дисках и лентах и устройствами ЭВМ и портами коммуникаций. В
TURBO PASCAL могут
использоваться имена
ленные в MS-DOS, например:
'CON', 'LPT1', 'PRN', 'COM1', 'AUX', 'NUL'.
С файловой системой TURBO PASCAL связано понятие буфера ввода -