Paskal_uchebn_posob_chast2_26_6_7
.pdf1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное Образовательное Учреждение Высшего Профессионального Образования «Московский Государственный Университет Приборостроения и Информатики»
Кафедра «Управление и моделирование систем»
УЧЕБНОЕ ПОСОБИЕ
Программирование (Турбо–Паскаль). Часть 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