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

Paskal_uchebn_posob_chast2_26_6_7

.pdf
Скачиваний:
48
Добавлен:
09.04.2015
Размер:
670.28 Кб
Скачать

1

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное Образовательное Учреждение Высшего Профессионального Образования «Московский Государственный Университет Приборостроения и Информатики»

Кафедра «Управление и моделирование систем»

УЧЕБНОЕ ПОСОБИЕ

Программирование (ТурбоПаскаль). Часть 2.

ПО КУРСУ

Программирование на языке высокого уровня

Специальность 230105 «Программное обеспечение вычислительной

техники и автоматизированных систем»

Направление 230100 «Информатика и вычислительная техника»

Москва

2007

PDF created with pdfFactory Pro trial version www.pdffactory.com

2

УДК 681.324

Рекомендовано УМУ МГУПИ в качестве учебного пособия.

Выжигин А.Ю. Программирование. (Турбо-Паскаль). Часть 2. Учебное пособие по курсу «Программирование на языке высокого уровня» для вузов по специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» и направлению 23100 «Информатика и вычислительная техника». – М.: МГУПИ, 2007 - С. 69.

Данное учебное пособие посвящено вопросам программирования на языке Турбо-Паскаль версии не ниже 5.0. В нем изложены основные

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

Рекомендуется в качестве учебного пособия для студентов вузов, обучающихся по специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» и направлению 23100 «Информатика и вычислительная техника».

Рецензент:

Заведующий кафедрой информатики и математики Московского гуманитарного университета к.т.н., доцент Ю.К. Щипин;

ISBN

Л XXXXXXXXXXX

PDF created with pdfFactory Pro trial version www.pdffactory.com

3

 

ОГЛАВЛЕНИЕ

 

ЛЕКЦИЯ 14.

ТИП ЗАПИСЬ . .........................................................................................................................

5

Записи и обозначения полей.......................................................................................................................

7

Оператор над записями with...................................................................................................................

7

Константы с типом запись..........................................................................................................................

9

Записи с вариантами ..................................................................................................................................

9

ПРАВИЛА : ..........................................................................................................................................

10

Семинар. Работа с типом данных «Записи». ...........................................................................................

11

ЗАДАЧА :

.................................................................................................................................................

11

ЗАДАЧА : .................................................................................................................................................

 

13

ЛЕКЦИЯ 15. ..................................................................................

МНОЖЕСТВЕННЫЙ ТИП ДАННЫХ

15

Переменные ............................................................................................множественных типов данных

15

Операции над .....................................................................................................................множествами

15

Семинар. Работа . ................................................................................с множественным типом данных

17

ЗАДАЧА...................................................................................................................................................

 

17

ЗАДАЧА : .................................................................................................................................................

 

17

ЗАДАЧА : .................................................................................................................................................

 

18

ЗАДАЧА...................................................................................................................................................

 

19

ЗАДАЧА...................................................................................................................................................

 

19

ЗАДАЧА : .................................................................................................................................................

 

19

ЛЕКЦИЯ 16. .................................................................................................................................

ФАЙЛЫ

22

Доступ к файлам.......................................................................................................................................

23

Имена файлов...........................................................................................................................................

24

Логические . ............................................................................................................................устройства

25

Инициализация ..............................................................................................................................файла

26

ЛЕКЦИЯ 17. .......................................................................

Процедуры и функции для работы с файлами

29

Процедура ....................................................................................................................................

CLOSE

29

Процедура ................................................................................................................................

RENAME

29

Процедура ....................................................................................................................................

ERASE

29

Процедура . ...................................................................................................................................FLUSH

31

Функция EOF ...............................................................................................................(<ф.п.>):Boolean

31

Процедура . ...................................................................................................................................CHDIR

31

Процедура ..................................................................................................................................GETDIR

31

Процедура . ..................................................................................................................................MKDIR

32

Процедура ....................................................................................................................................RMDIR

32

Функция IORESULT:WORD. ...................................................................................................................

32

Функция DISKFREE(< .................................................................................................диск>):LONGINT

32

Функция DISKSIZE(< ..................................................................................................диск>):LONGINT

33

Процедура .............................................................................................................................FINDFIRST

33

Процедура .............................................................................................................................FINDNEXT

35

Процедура .............................................................................................................................GETFTIME

35

Процедура ..............................................................................................................................SETFTIME

35

Процедура . ...........................................................................................................................GETFATTR

35

Процедура . ............................................................................................................................SETFATTR

36

Функция FSEARCH ........................................................................................................типа PATHSTR

36

Процедура ....................................................................................................................................FSPLIT

36

Функция FEXPAND . ......................................................................................................типа PATHSTR

37

ЛЕКЦИЯ 18. . ........................................................................................................ТЕКСТОВЫЕ ФАЙЛЫ

38

Процедура ......................................................................................................................................READ

38

ПРОЦЕДУРА . ..........................................................................................................................READLN

40

ПРОЦЕДУРА . .............................................................................................................................WRITE

41

ПРОЦЕДУРА . ........................................................................................................................WRITELN

42

ЛОГИЧЕСКАЯ ........................................................................................................ФУНКЦИЯ EOLN

42

ЛОГИЧЕСКАЯ . ..............................................................................................ФУНКЦИЯ SEEKEOLN

43

ЛОГИЧЕСКАЯ . ..................................................................................................ФУНКЦИЯ SEEKEOF

43

PDF created with pdfFactory Pro trial version www.pdffactory.com

4

 

 

 

 

 

 

 

ЛЕКЦИЯ 19. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ...........................................................................................

45

ПРОЦЕДУРА READ. ...............................................................................................................................

45

ПРОЦЕДУРА WRITE. .............................................................................................................................

45

ПРОЦЕДУРА SEEK.................................................................................................................................

45

ФУНКЦИЯ FILESIZE. .............................................................................................................................

46

ФУНКЦИЯ FILEPOS. ..............................................................................................................................

46

ЛЕКЦИЯ 20. НЕТИПИЗИРОВАННЫЕ ФАЙЛЫ. ......................................................................................

47

Семинар. Работа с файлами. ....................................................................................................................

49

ЗАДАЧА. ..................................................................................................................................................

49

ЗАДАЧА...................................................................................................................................................

49

Пример:.....................................................................................................................................................

50

ЗАДАЧА...................................................................................................................................................

52

ЗАДАЧА...................................................................................................................................................

52

ЗАДАЧА...................................................................................................................................................

53

ЛЕКЦИЯ 1, 2 для 2-го семестра 1 курса УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ .......................

55

Динамическая память...............................................................................................................................

55

Адреса и указатели. ..............................................................................................................................

56

Объявление указателей.........................................................................................................................

57

Пример списочной структуры данных .................................................................................................

58

Выделение и освобождение динамической памяти. ................................................................................

59

Использование указателей........................................................................................................................

63

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

67

Функция ADDR.....................................................................................................................................

67

Функция CSEG......................................................................................................................................

67

Процедура DISPOSE.............................................................................................................................

67

Функция DSEG. ....................................................................................................................................

68

Процедура FREEMEM..........................................................................................................................

68

Процедура GETMEM............................................................................................................................

68

Процедура MARK.................................................................................................................................

68

Функция MAXAVAIL...........................................................................................................................

68

Функция MEMAVAIL. .........................................................................................................................

69

Процедура NEW....................................................................................................................................

69

Функция OFS. .......................................................................................................................................

69

Функция PTR. .......................................................................................................................................

69

Процедура RELEASE............................................................................................................................

70

Функция SEG. .......................................................................................................................................

70

Функция SIZEOF. .................................................................................................................................

70

Администратор кучи. ...............................................................................................................................

70

PDF created with pdfFactory Pro trial version www.pdffactory.com

5

ЛЕКЦИЯ 14. ТИП ЗАПИСЬ.

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

Тип запись

 

RECORD

 

END

 

 

 

 

 

Список полей

Список полей

 

Фиксирован-

 

 

 

ная часть

 

 

 

 

 

 

 

 

 

 

;

 

 

;

 

 

Вариантная

 

 

 

 

 

 

 

 

 

 

 

часть

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Приведем пример типа запись:

type

DateRec = record Year : Integer; Month : 1 .. 12; Day : 1 .. 31;

end;

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

Вариантная

часть

PDF created with pdfFactory Pro trial version www.pdffactory.com

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CASE

 

 

 

 

 

 

 

Тип поля

 

OF

 

 

Вариант

 

 

 

 

 

 

 

 

 

 

 

признака

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Иденти-

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

фикатор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

Ниже приводится несколько примеров типа запись:

type

Person = record

FirstName, LastName: string[40]; BirthDate: Date;

case Citizen: Boolean of

True: (BirthPlace : string[40]); False: (Country: string[20];

EntryPort: string[20]; EntryDate: Date; ExitDate: Date);

end;

Polygon = record X, Y: Real;

case Kind: Figure of

Rectangle: (Height, Width: Real); Triangle: (Size1, Size2, Angle: Real); Circle: (Radius: Real);

end;

PDF created with pdfFactory Pro trial version www.pdffactory.com

7

Записи и обозначения полей.

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

Приведем несколько примеров обозначения полей:

Today.Year

Results[1].Count

Results[1].When.Month

Оператор над записями with.

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

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

with Data do

if Month = 12 then begin

Month := 1; Year := Year + 1;

end else

Month := Month + 1;

Это эквивалентно следующему:

if Date.Month = 12 then begin

Date.Month := 1; Date.Year := Date.Year + 1; end

else

Date.Month := Date.Month + 1;

PDF created with pdfFactory Pro trial version www.pdffactory.com

8

В операторе with сначала производится проверка каждой ссылки на переменную, а именно: можно ли ее интерпретировать, как поле записи. Если можно, то она всегда интерпретируется именно таким образом, даже если имеется доступ к переменной с тем же именем. Допустим, объявлены следующие переменные:

type

Point = record X, Y: Integer; end;

var

X : Point;

Y : Integer;

В этом случае и к X, и к Y можно обращаться, как к переменной или как к полю записи. В операторе:

with X do begin

X := 10; Y := 25; end;

X между ключевыми словами with и do относится к переменной типа point, а в составном операторе X и Y ссылаются на X.X и X.Y.

Оператор with V1, V2, ... Vn do S;

эквивалентен операторам: with V1 do

with V2 do

....

with Vn do S;

В обоих случаях, если Vn является полем и V1, и V2, то она интерпретируется как V2.Vn, а не как V1.Vn.

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

9

Константы с типом запись.

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

Приведем несколько примеров констант-записей:

type

Point = record X, Y : Real;

end;

Vector = array [0..1] of Point;

Month = (Jan,Feb,Mar,Apr,May,Jun,Jly,Aug,Sep,Oct,Nov,Dec); Date = record

D : 1..31;

M : Month;

Y : 1900..1999; end;

const

Origin : Point = (X : 0.0; Y : 0.0);

Line : Vector= ((X : -3.1; Y : 1.5), (X : 5.8; Y : 3.0)); SomDay : Date = (D : 2; M : Dec; Y : 1960);

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

Записи с вариантами

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

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

10

TYPE ПОЛ=(МУЖ,ЖЕН); ЧЕЛ=RECORD

ФАМ: ARRAY[1..10] OF CHAR; ГОДРОЖ:1800..2000;

МЖ: ПОЛ; CASE ПОЛ OF

МУЖ:(ВОЕН:BOOLEAN; СПЕЦ:P.A [1..15] OF CHAR); ЖЕН:(ЗАМУЖ:BOOLEAN;ДЕТИ:INTEGER)

END;

ПРАВИЛА :

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

Обычно некоторое поле общей части указывает вариант. В примере -это поле МЖ, называемое полем признака или дискриминантом.

2.Все варианты описываются внутри оператора CASE. Каждый

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

3.В явном виде указывать тип в заголовке не разрешается.

Допущения: часть при сокращении записи поле признаков включается в заголовок вариантной части.

Пример: case мж:пол of ч1.фам:='Иванов ';

ч1.годрож:=1970;

ч1.мж:=муж;

ч1.воен:=true;

ч1.спец:=программист;

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]