Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование Часть 1 - ТурбоПаскаль

.pdf
Скачиваний:
27
Добавлен:
29.03.2016
Размер:
599.33 Кб
Скачать

31-

Write(<имя файловой переменной>,<значение>);

..........

Close(<имя файловой переменной>);

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

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

Установка указателя. Процедура Seek(<имя файловой переменной>,N) устанавливает файловый

указатель на N-й элемент.

Определение номера элемента. Функция FilePos(<имя файловой переменной>) возвращает но-

мер элемента, на который «смотрит» файловый указатель.

Определение количества элементов в файле. Функция FileSize(<имя файловой переменной>)

возвращает количество элементов в файле.

Удаление и переименование файлов. Erase(<имя файловой переменной>) процедура удаления файла. Rename(<имя файловой переменной>,’<новое имя на диске>’) переименование файла.

Пример: В файле DAT1.DAT записаны целые числа. Вычислить сумму элементов файла и резуль-

тат вместе с исходными данными записать в файл DAN2.DAT

Program WW;

Var f1,f2 : file of integer; s, n : integer;

begin

Assign(f1,’DAT1.DAT’);

Reset(F1);

Assign(f2,’DAT2.DAT’);

Rewrite(f2);

s:=0;

While Not Eof(f1) do { проверка на конец файла} begin

read(f1,n); {чтение элемента из файла F1} write(f2,n); { запись элемента в файл F2} s:=s+n;

end;

write(f2,s); {запись суммы элементов в конец файла F2}

32-

write(‘Результат находится в файле DAT2.DAT’);

Close(f1);

Close(f2);

end.

Текстовые файлы. Текстовые файлы состоят из символьных строк. Строки могут иметь различ-

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

пользуется служебное слово Text:

Var A: Text;

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

ется процедура Assign. Текстовые файлы могут быть открыть для чтения процедурой Reset или для за-

писи процедурой Rewrite.

Для чтения данных применяется процедура Read. Если необходимо после чтения данных перейти на следующую строку, то используется процедура Readln. Если необходимо просто перейти к следую-

щей строке, то можно использовать процедуру Readln(<имя файловой переменной текстового фай-

ла>); которая устанавливает файловый указатель на первый элемент следующей строки.

Процедура Write записывает данные в текущую строку. Если надо записать данные и перейти к следующей строке, то можно использовать процедуру Writeln. Если требуется только перейти для запи-

си на новую строку, то применяется процедура Writeln(<имя файловой переменной текстового фай-

ла>); которая записывает в файл признак конца строки и устанавливает файловый указатель на начало следующей строки.

Так как в строках может быть разное количество символов, имеется логическая функция

Eoln(<имя файловой переменной текстового файла>), которая принимает значение True, если до-

стигнут конец строки.

Процедура Append(<имя файловой переменной текстового файла>). Она открывает файл для

«дозаписи», помещая файловый указатель в конец файла.

2.8. Модули

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

которые исполняемые операторы инициирующей части.

33-

Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям,

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

практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.

Модуль содержит описания типов данных, переменных и других объектов, а также подпрограм-

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

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

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

Кбайта, однако количество одновременно используемых модулей ограничивается лишь доступной па-

мятью, что дает возможность создавать весьма крупные программы.

Доступ к описаниям, функциям и процедурам модуля обеспечивает оператор использова-

ния Uses, в котором указывается имя модуля. Этот оператор размещается в разделе описаний програм-

мы, сразу после заголовка. Если в программе используется не один модуль, а несколько, необходимо указать имена всех модулей, перечислив их через запятую. Исключением является модуль System,

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

да/вывода, процедуры и функции для работы со строками и некоторые другие.

Структура модулей. Модуль имеет следующую структуру:

Unit <имя>;

Interface

<интерфейсная часть> Implementation

<исполняемая часть>

Begin

<инициирующая часть> End.

Здесь Unit - зарезервированное слово (единица), начинает заголовок модуля;

<имя> - имя модуля (правильный идентификатор);

Interface– интерфейсная секция, содержит описания типов, переменных и других объектов, кото-

рые можно использовать в других программах или модулях;

Implementation – зарезервированное слово, начинает исполняемую часть;

<исполняемая часть> - содержит полные описания функций и процедур модуля.

34-

<инициирующая часть> – секция инициализации. Она может быть пустой и содержать только зарезервированное слово end или включать в себя исполняемые операторы, выполняющие необходимые действия по инициализации (например, по присваиванию начальных значений переменным) модуля.

Заголовок модуля и связь модулей друг с другом. Заголовок модуля состоит из зарезервиро-

ванного слова Unit - следующего за ним имени модуля. Для работы среды Турбо Паскаля и возможно-

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

ловок

Unit Global;

то исходный текст соответствующего модуля должен размещаться в дисковом файле GLOBAL.PAS.

Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавлива-

ется специальным предложением

Uses <сп. модулей>

Здесь Uses - зарезервированное слово (использует);

<сп.модулей> - список модулей, с которыми устанавливается связь;

Элементами списка являются имена модулей, отделяемые друг от друга запятыми, например: Uses CRT,

Graph, Global.

Если объявление Uses... используется, оно должно открывать раздел описаний основной програм-

мы.

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

Интерфейсная часть открывается зарезервированным словом Interface. В этой части содержатся объяв-

ления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые будут доступными основной программе и/или другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.

35-

Пример:

Unit Cmplx;

Interface

type

complex = record re, Im : real

end;

Procedure AddC (x, у : complex; var z : complex);

Procedure MulC (x, у : complex; var z : complex);

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

гих модулей.

Следует учесть, что все константы и переменные, объявленные интерфейсной части модуля, рав-

но как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт). Порядок появления раз-

личных разделов объявлений и их количество может быть произвольным. Если в интерфейсной части объявляются внешние подпрограммы или подпрограммы в машинных кодах, их тела (т.е. зарезервиро-

ванное слово External, в первом случае, и машинные коды вместе со словом Inline - во втором) должны следовать сразу за их заголовками в исполняемой части модуля (не в интерфейсной). В интерфейсной части модулей нельзя использовать опережающее описание.

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

пилятор в этом случае не может установить связей.

Исполняемая часть. Исполняемая часть включает все подпрограммы модуля. Она может также включать локальные метки, константы, типы и переменные. Исполняемая часть начинается зарезерви-

рованным словом Implementation и содержит описания подпрограмм, объявленных в интерфейсной ча-

сти. В ней могут объявляться локальные для модуля объекты - вспомогательные типы, константы, пе-

ременные и блоки, а также - метки, если они используются в инициирующей части.

Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части дол-

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

зультата для функции), так как они уже описаны в интерфейсной части. Но если заголовок подпрограм-

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

36-

Unit Cmplx;

Interface

type

complex = record; re, im: Real;

end;

Локальные переменные и константы, а также все программные коды, порожденные при компиля-

ции модуля, помещаются в общий сегмент памяти. В отличие от интерфейсов модулей в исполнитель-

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

зей.

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

инициализировать какие-то переменные и т.д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта часть начинается словом begin, после которого идут исполняемые операто-

ры, а затем помещается слово end. В инициирующей части размещаются исполняемые операторы, со-

держащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления ос-

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

Не рекомендуется делать инициирующую часть пустой, лучше её опустить: пустая часть содер-

жит пустой оператор, которому будет передано управление при запуске программы.

37-

СПИСОК ЛИТЕРАТУРЫ

1. Немнюгин С. А. Turbo Pascal: практикум : [учеб. пособие для вузов по направлению подгот. ди-

пломир. специалистов "Информатика и вычисл.техника"] - 2-е изд. - СПб.; М.; Нижний Новгород: Пи-

тер, 2007. - 267 с. (гриф Минобразования России, 1 экз.)

2. Павловская Т. А. Паскаль. Программирование на языке высокого уровня: практикум : [учеб.

пособие для вузов по направлению "Информатика и вычисл. техника"] - СПб.; М.; Нижний Новгород:

Питер, 2006. - 316 с. (гриф Минобразования России, 1 экз.)

3. Архангельский А. Я. Язык Pascal и основы программирования в Delphi: [учеб. пособие для вузов по направлению 654600 "Информатика и вычисл. техника"] - М.: Бином: Бином-пресс, 2004. - 495 с. (5

экз.)

4. Культин Н. Б. Программирование в Turbo Pascal 7.0 и Delphi: самоучитель - 2-е изд. - СПб.:

БХВ-Петербург, 2004. - 407 с. (5 экз.)

5. Культин Н. Б. Turbo Pascal в задачах и примерах: [более 200 задач] - СПб.: БХВ-Петербург,

2006. - 256 с. (1 экз.)

6. Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0 - 4-е изд.,

испр. и доп.. - М.: Диалог-Мифи, 1998. - 367 с. (1 экз.)

38-

ОГЛАВЛЕНИЕ

1. ЗНАКОМСТВО СО СРЕДОЙ ТУРБО ПАСКАЛЬ ………………………………...

3

 

1.1. Общие данные ………………………………………………………………………

3

 

1.2. Функциональные клавиши Турбо Паскаль …………………………………….

4

 

2. ЗНАКОМСТВО С ЯЗЫКОМ ТУРБО ПАСКАЛЬ …………………………………

4

 

2.1. Алфавит языка Turbo Pascal ……………………………………………………...

4

 

2.2. Структура программы на языке Turbo Pascal …………………………………

5

 

2.3. Типы данных ………………………………………………………………………..

6

 

2.4 Операции над переменными ………………………………………………………

8

 

2.5. Операторы языка …………………………………………………………………..

10

 

2.5.1.Составной оператор ……………………………………………………………. 10

2.5.2.Условный оператор ……………………………………………………………. 11

2.5.3.Операторы повторений ……………………………………………………….. 11

2.5.3.1. Счётный оператор цикла For ……………………………………………..

11

 

2.5.3.2. Оператор цикла while с предпроверкой условия ……………………….

13

 

2.5.3.3. Оператор цикла repeat с постпроверкой условия ……………………...

13

 

2.5.3.4. Оператор выбора …………………………………………………………...

15

 

2.5.3.5. Метки и операторы перехода ……………………………………………..

16

 

2.5.4.Массивы …………………………………………………………………………. 18

2.5.5.Записи ……………………………………………………………………………. 20

2.5.6.Множества ………………………………………………………………………. 22

2.6.Подпрограммы ……………………………………………………………………... 23

2.6.1.Процедуры ………………………………………………………………………. 23

2.6.2.Функции …………………………………………………………………………. 26

2.6.3. Процедура вывода информации ……………………………………………..

27

 

2.6.4. Процедура ввода информации ………………………………………………..

28

 

2.7. Работа с файлами …………………………………………………………………..

29

 

2.8. Модули ……………………………………………………………………………….

33

 

Список литературы ……………………………………………………………………….

37