![]() |
|
|
Шпаргалка: Вопросы и ответы к экзаменам В-1S1:=['1','2','3']; S4:=[0..3,7]; S2:=['2','1','3']; S5:=[4,6]; S3:=['1','2']; S6:=[3..8]; S7:=[]; (пустое) Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы причем порядок следования в множестве их безразличен. (S1 и S2 эквивалентны).Если все элементы одного множества входят в другое множество то говорят, что первое включено во второе. (S3 включено в S1).Пустое множество включено в любое другое. Над множествами определены следующие операции: 1. * пересечение множеств; результат содержит элементы, общие для обоих множеств. (S4*S6 содержит [3,7]; S4*S5 образует пустое мн.). 2. + объединение множеств, результат содержит элементы первого множества, дополненные недостающими элементами второго. S4+S5 содержит [0,1,2,3,4,6,7] S5+S6 содержит [3,4,5,6,7,8] 3. - разность множеств, результат содержит элементы из первого множества, которые не принадлежат второму. S6-S5 содержит [3,5,7,8]) S4-S5 содержит [0,1,2,3,7]) []-S4 даст []. 4. Операции отношений: = операция эквивалентности; возвращает значение TRUE, если оба множества эквивалентны; (S1:=S2; ['1','2','3']) =['2','3','1'] проверка неэквивалентности; (TRUE, если множества неэквивалентны); [1,2]<>[1] S3<>S2 >= проверка вхождения (TRUE, если второе множество входит в первое; in - проверка принадлежности. Структура этой бинарной операции: in ;возвращает TRUE, если выражение имеет значение, принадлежащее множеству. пример: 3 in S6 TRUE; [] in [0..5] [] in S5 2*2 in S4 FALSE; Множества имеют компактное машинное представление. Недостаток: невозможность вывода множества на экран, т.к. отсутствует механизм изъятия элемента из множества. Ввод множества возможен только поэлементно. пример: Можно тип объявлять при описании переменных VAR S:SET of char; {переменная-множество} C: char; {элемент множества} Begin S:=[]; S:=#0; {обнуление значений} while C '.' do {цикл до ввода "."} begin readln(C); {чтение символа в с} S:=S+[C]; {добавление его к S} end; ... S:=S-['.']; {исключение точки} End. {Смотри задание на л.р. N 12 } 34. Оператор выбора CASE (варианта). Комментарии.CASE<ключ выбора> OF Const1:оператор; Const2:оператор; ELSE: оператор; END; 35. Записи. Вложенные записи. Записи с вариантами.Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями записи. В отличие от массива компоненты могут быть различного типа. Поля именуются: <имя типа>=RECORD<определение полей>END. Type Bd = record D,m: byte; Y: word Var a,b: bd; a::=8; a.day:=27;-доступ к компоненту Для упрощения доступа к полям записи используют оператор записи With With<переменная>do<оператор>; With c.bp do month:=9; With c do with bp do month:=9; c.bp.month:=9; Вариантные поля Type f= record N: string; Case byte of 0:(bp: string[30]); 1:(c: string[10],e: string[20],ed:1..31) end; Имена должны быть уникальны, хотя возможно повторение на различных уровнях Вложенные поля: Type bd =record D,m: byte; X: word; End; Var c: record; Name: string; Db: bd; Begin if c.db.year=1939 then……….. End. В качестве ключа переменная: Type rec2=record C: LongInt; Case x: byte of 1: (d: word); 2: (e:record case boolean of 3: (f: real); 3: (g: single); ‘3’: (c: word); end; end;
36. Вещественный тип. Операции и функции для вещественного типа.Вещественный тип определяет число с некоторой конечной точностью, зависящей от внутреннего формата числа Длина название кол-во знаковых цифр диапазон десятичного порядка байт 6 real 11..12 -39..38 8 couble 15..16 -324..308 10 extended 19..20 -4951..4932 8 comp 19..20 -2*10^63+1 .. 2*10^63-1 функции ABS(X), ARCTAN(x), COS(X), EXP(X), FRAC(X), INT(X),LN(X), SIN(X), ROUND(X),SQR(X),SQRT(X) И Т.Д. 37. 38. 39. Файловый тип. Файлы. Требования к имени. Связывание. Текстовые файлы. Ввод (вывод) информации из файла (в файл, устройство) Типизированные файлы и нетипизированные файлы.Общие процедуры для работы с файлами _____________________________________________________________ |Assign(Var f,FileName:String) - Cвязывание ф.п.f с файлом FileName |RESET(Var f) | Открытие файла с логическим именем f для чтения | |REWRITE(Var f) Открытие файла с лог. именем f для записи | | CLOSE(f) | Закрытие файла с лог. именем f | |Erase(Var f) | Удаление файла (стирание) с диска | |Rename(f, NewName:String)|Переименовывает физический файл | | EOF(f) | Функция тестирования конца файла | |FLUSH()| Очищает внутренний буфер файла | ------------------------------------------------------------- ТЕКСТОВЫЕ ФАЙЛЫ Это файлы последовательного доступа. Они предназначены для хранения текстовой информации. Компоненты (запи- си) текстового файла могут иметь переменную длину. Для доступа к записям файла применяются процедуры READ, READLN, WRITE, WRITELN. Текст-ориентированные процедуры и функции ____________________________________________________________ | процедуры | пояснения | | и функции | (действия) | |-------------|----------------------------------------------| |Append |Процедура открывает уже существующий файл f| | () |для дозаписи в конец файла | |пр:Append(f) | (для его расширения) | |SeekEOLN |Функция пропускает все пробелы и знаки табуля-| | () |ции до первого признака EOLN или первого зна-| | логич.типа |чащего символа. Возвращает значение TRUE, если| пр:SeekEOLN(f)|обнаружен маркер конца файла или маркер конца | | |строки. Если ф.п. опущена, | | |функция проверяет стандартный файл INPUT. | | | | |SeekEOF |Функция пропускает все пробелы,знаки табуляции| | () |и маркеры конца строк до маркера конца файла| |пр:SeekEOF(f)|или первого значащего символа. Если маркер об-| | |наружен, возвращает значение TRUE. | |EOLN ()|Функция возвращает значение TRUE,если во вход-| | логич.типа | ном файле f достигнут маркер EOLN или | |пр: EOLN(f) | EOF; FALSE - в противном случае. | |_____________|______________________________________________| Типизированные файлы позволяют организовать прямой доступ к каждой из компонент (по его по- рядковому номеру). Описание файловой переменной Var ft: file of ; Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на 1-ю компоненту с номером 0. После каждого чтения или записи указатель сдвигается с следующему компоненту файла. Переменные в списках в/в должны иметь тот же тип, что и компо- ненты файла. Процедуры и функции для работы с типизированными файлами ____________________________________________________________ | процедуры | пояснения | | и функции | (действия) | |-------------|----------------------------------------------| READ(,); Процедура Обеспечивает чтение очередных компонентов файла WRITE(,) используется для записи новых компонент в файл; в качестве элементов вывода м.б. выражение. SEEK(,) - смещает указатель файла к компоненту с ; - выражение типа LONGINT. (К текстовым файла применять нельзя.) FILESIZE) Функция возвращает количество компонент, содержащихся в файле.(Типа LongInt ) Функция FILEPOS() возвращает порядковый номер компо- ненты файла, доступной для чтения или записи (который будет обрабатываться следующей операцией в/в). ( Процедура CLOSE () - закрытие файла. ) |-------------|----------------------------------------------| - содержит одну или более переменных такого же типа, что и компоненты файла, - файловая переменная д.б. объявлена предложением FILE OF и связана с именем файла процедурой ASSIGN. Файл необходимо открыть процедурой RESET для чтения. Если файл исчерпан, обращение к READ вызовет ошибку В/В Чтобы переместить указатель в конец файла можно написать Пр. Seek(f,FileSize(f)) ; где f - файловая переменная Нетипизированные файлы Обьявляются без указания типа файла: TYPE ftype=file; или VAR fn: file; Для данных файлов не указывается тип компонентов, что делает их сов- местимыми с любыми другими файлами. Позволяет организовать высокоско- ростной обмен данными между диском и памятью. При инициализации нетипизированных файлов процедурами RESET и REWRITE указывается длина записи нетипизированного файла в байтах. пример: VAR f:file; ... ASSIGN (f,'a.dat'); RESET (f,512); \ длина записи Длина файла может быть представлена выражением типа WORD; если пара- метр длины опущен, подразумевается длина 128 байт; максимальная длина 65535 байт. Для обеспечения максимальной скорости обмена данными следует за- давать длину, кратную длине физического сектора дискового носителя (512 байт). Кроме того, фактически пространство на диске выделяется любому файлу порциями - кластерами, которые в зависимости от типа дис- ка могут занимать 2 и более смежных секторов. Как правило, кластер м.б. прочитан или записан за один оборот диска, поэтому наивысшую ско- рость обмена данными можно получить, если указать длину записи, равную длине кластера. При работе с нетипизированными файлами Могут применяться все рассмотренные процедуры и функции, доступные типизированным файлам, за исключением READ и WRITE, которые для чтения и записи заменяются соот- ветственно высокоскоростными процедурами BlockREAD и BlockWRITE. BlockREAD(,,,[,Var]) BlockWRITE(,,,[,Var]) где - имя переменной, которая будет участвовать в обмене дан- ными с дисками; - количество записей, которые д.б. прочитаны или записаны за одно обращение к диску; - необязательный параметр, содержащий при выходе из процедуры ко- личество фактически обработанных записей. За одно обращение к процедурам м.б. передано N*r байт, где r - длина записи нетипизированного файла. Передача идет, начиная с 1-го байта переменной . После завершения процедуры указатель смещается на записей. Процедурами SEEK, FilePos и FileSize можно обеспечить доступ к любой записи нетипизированного файла. 40. Библиотечный модуль GRAPH. Графические возможности ТП.GRAPH - представляет собой библиотеку подпрограмм, обеспечивающую полное управление графическими режимами для различных адаптеров дисплеев: CGA, EGA, VGA... Содержит 78 процедур и функций (как базовых - рисование точек, линий, окружностей, прямоугольников), так и расширяющих возможности базовых (многоугольники, сектора, дуги, закрашивание фигур, вывода текста и т.д.). Для запуска программы с использованием модуля GRAPH необходимо, чтобы в рабочем каталоге находились графические драйверы с расширением .BGI, также должен быть доступен компилятору модуль GRAPH.TPU. Файл BGI - графический интерфейс. Он обеспечивает взаимодействие программ с графическими устройствами. В начале программы модуль GRAPH должен быть подключен PROGRAM USES GRAPH; описание меток, переменных программы, в частности VAR driver, Mode: integer; Begin Далее инициализируется графический режим работы процедурой InitGraph(,:integer; : string); Графическая информация на экране дисплея отражается совокупностью светящихся точек - ПИКСЕЛЕЙ. Режим по вертикали: 0 - 200 пикселей (4 страницы), 1 - 350 пикселей (2 страницы), 2 - 480 пикселей (1 страница). Режим 2 (640х480, 16 цветов,1 страница) В текстовом режиме координаты верхнего угла (1,1). центр (319,239) нижнего (639,479) Тип драйвера допускается указывать =0, тогда он устанавливается по результатам тестирования (авто определение). Путь определяет маршрут поиска графического драйвера. Пример: USES GRAPH; Const driver, mode: intGRAPH - представляет собой библиотеку подпрограмм, обеспечивающую полное управление графическими режимами для различных адаптеров дисплеев: CGA, EGA, VGA... Содержит 78 процедур и функций (как базовых - рисование точек, линий, окружностей, прямоугольников), так и расширяющих возможности базовых (многоугольники, сектора, дуги, закрашивание фигур, вывода текста и т.д.). Для запуска программы с использованием модуля GRAPH необходимо, чтобы в рабочем каталоге находились графические драйверы с расширением .BGI, также должен быть доступен компилятору модуль GRAPH.TPU. Файл BGI - графический интерфейс. Он обеспечивает взаимодействие программ с графическими устройствами. В начале программы модуль GRAPH должен быть подключен PROGRAM USES GRAPH; описание меток, переменных программы, в частности VAR driver, Mode: integer; Begin Далее инициализируется графический режим работы процедурой InitGraph(,:integer; :string); Графическая информация на экране дисплея отражается совокупностью светящихся точек - ПИКСЕЛЕЙ. Режим по вертикали: 0 - 200 пикселей (4 страницы), 1 - 350 пикселей (2 страницы), 2 - 480 пикселей (1 страница). Режим 2 (640х480, 16 цветов,1 страница) В текстовом режиме координаты верхнего угла (1,1). центр (319,239) нижнего (639,479) Тип драйвера допускается указывать =0, тогда он устанавливается по результатам тестирования (авто определение). Путь определяет маршрут поиска графического драйвера. Пример: USES GRAPH; Const driver, mode: integer; Begin driver:=VGA; (9) mode:=VGAH; (2) InitGraph(driver, mode, 'e:\TP\BGI'); тип string. DetectGraph(var Diver, Mode: integer) - возвращает тип драйвера и текущий режим его работы. Основные цвета задаются от 0 до 15: 0- черный 8 - темно-синий 1- синий 9 - ярко-синий 2- зеленый 10 - ярко-зеленый 3- голубой 11 - ярко-голубой 4- красный 12 - розовый 5- фиолетовый 13 - малиновый 6- коричневый 14- желтый 7 - светло-серый 15- белый. Если Х и У вещественные , то их нужно преобразовать к целым координатам (в пределах раздела экрана). Для этого используются функции ROUND или TRUNC прямого преобразования к целому значению LineTo(trunc(x),trunc(y)); Также необходимо следить, чтобы значения не выходили за пределы экрана (рассчитывайте коэффициенты увеличения или уменьшения и пара- метры смещения) ПРОЦЕДУРЫ И ФУНКЦИИ модуля GRAPH установочные ClearDevice - Очищает экран и помещает курсор в точку (0,0); SetViewPort(x1,y1,x2,y2:integer; Clip: boolean) - Устанавливает текущее окно для графического вывода. X1,y1 – координата верхнего левого угла; x2,y2 - координата нижнего правого угла. Если Clip=true, то все изображения отсекаются на границах вывода; ClearViewPort - Очищает текущее окно; GetMax X: integer - возвращает максимальную горизонтальную координату графического экрана; GetMax Y :integer - возвращает максимальную вертикальную координату графического экрана; Get X: integer - возвращает координату Х текущего указателя в окне; Get Y: integer - возвращает координату Y курсора в окне; SetLineStyle(Line, Pattern, Thickness: word) - Устанавливает стиль (0..4), шаблон штриховки (0..12) и толщину (1-ноpм, 3-утpоенная); SetFillStyle(Pattern, Color: word) - Устанавливает образец штриховки и цвет (0..15 и 128-меpцание); SetGraphMode(Mode: integer) - Устанавливает новый графический режим и очищает экран; SetColor(Color: word) - Устанавливает основной цвет, которым выполняется рисование (0..15); SetBkColor(Color: word) - Установка цвета фона. Гpафические примитивы PutPixel(X,Y: integer; Color: word) - Выводит точку цветом Color с координатой X,Y; LineTO(X, Y: integer) - Рисует линию от текущего указателя к точке с координатой Х,У; LineRel(DX, DY: integer) - Рисует линию от текущего указателя к точке, заданной приращением координат; Line(X1,Y1,X2,Y2:integer) - Рисует линию от точки (X1,Y1) к точке с координатой Х2,У2; MoveTO(X, Y: integer) - Смещает текущий указатель к точке с координатой Х,У; MoveRel(DX, DY: integer) - Смещает текущий указатель к точке, заданной приращением координат; Rectangle(X1,Y1,X2,Y2:integer) - Рисует прямоугольник, используя текущий цвет и тип линии по верхней левой и нижней правой точкам; Bar(X1,Y1,X2,Y2:integer) - Рисует закрашенный прямоугольник, используя установку SetFillStyle; Bar3D(X1,Y1,X2,Y2:integer;Depth:word;Top:Bolean) - Рисует закрашенный паpаллелипипед. Depth - глубина в Pixel (1/4 ширины). Если Тор=True, то рисуется верхняя грань пеpеллелипипеда; Circle(X,Y:integer;R:word) - Рисует окружность радиуса R, используя X,Y как координаты центра; Fillellipse(X,Y: integer; XR,YR: word) - Рисует защтpихованный эллипс, используя X,Y как центр и XR,YR как горизонтальный и вертикальный радиусы. RestorCRTMode - Восстанавливает текстовый режим работы экрана; OutText(Text: string) - Выводит текстовую строку на экран. OutTextXY(X,Y: integer; Text: string) - Выводит текст в заданное место экрана. Пример программы построения графика функции у=2+х*х. program graphik; {файл grafikf.pas} uses graph; {подключение модуля GRAPF} var a,b,x,y: integer; {a,b-переменные, определяющие тип драйвера и видеорежим соответственно} begin detectgraph(a,b); {авто определение типа драйвера и видеорежима} initgraph (a,b,'E:\TP\BGI'); {инициализация графического режима} setgraphmode(2); {установка нового режима (2), очистка экрана} setBKcolor(0); {основной цвет фона - черный} setcolor(4); {основной цвет рисования - красный} moveTO(100,100); {смещает курсор} lineRel(50,50); {вычерчивание линии по приращению от текущего указателя} readln; {пауза до нажатия клавиши } setcolor(2); {основной цвет рисования - зеленый} line(100,100,100,50);{рисует линию от т.Х1,У2 до т.Х2,У2} readln; {пауза до нажатия } setcolor(5); {основной цвет рисования - фиолетовый} putPixel(0,0,12); {выводит точку цветом 12 с координатой 0,0} readln; {пауза до нажатия } moveTO(1,2); {смещает курсор к точке с координатой 1,2} for x:=0 to 20 do begin y:=2+ x*x; lineTO(x,y); {рисует линию от текущего указателя к точке с координатой Х,У} end; readln; {пауза до нажатия ввода} Settextstyle(1,0,5); OutTextXY(50,400,'график функции у=2+х*х'); {выводит текст в заданное место экрана} readln; {пауза до нажатия } putPixel(639,479,14);{выводит точку цветом 14 с координатой 639,479} readln; {пауза до нажатия } closegraph;{закрывает графический режим и восстанавливает текстовый} end. Begin driver:=VGA; (9) mode:=VGAH; (2) InitGraph(driver, mode, 'e:\TP\BGI'); тип string. DetectGraph(var Diver, Mode: integer) - возвращает тип драйвера и текущий режим его работы. Основные цвета задаются от 0 до 15: 0- черный 8 - темно-синий 1- синий 9 - ярко-синий 2- зеленый 10 - ярко-зеленый 3- голубой 11 - ярко-голубой 4- красный 12 - розовый 5- фиолетовый 13 - малиновый 6- коричневый 14- желтый 7 - светло-серый 15- белый. Если Х и У вещественные , то их нужно преобразовать к целым координатам (в пределах раздела экрана). Для этого используются функции ROUND или TRUNC прямого преобразования к целому значению LineTo(trunc(x),trunc(y)); Также необходимо следить, чтобы значения не выходили за пределы экрана (рассчитывайте коэффициенты увеличения или уменьшения и пара- метры смещения) ПРОЦЕДУРЫ И ФУНКЦИИ модуля GRAPH установочные ClearDevice - Очищает экран и помещает курсор в точку (0,0); SetViewPort(x1,y1,x2,y2:integer; Clip: boolean) - Устанавливает текущее окно для графического вывода. X1,y1 - координата верхнего левого угла; x2,y2 - координата нижнего правого угла. Если Clip=true, то все изображения отсекаются на границах вывода; ClearViewPort - Очищает текущее окно; GetMaxX: integer - возвращает максимальную горизонтальную координату графического экрана; GetMaxY: integer - возвращает максимальную вертикальную координату графического экрана; GetX: integer - возвращает координату Х текущего указателя в окне; GetY: integer - возвращает координату Y курсора в окне; SetLineStyle(Line, Pattern, Thickness: word) - Устанавливает стиль (0..4), шаблон штриховки (0..12) и толщину (1-ноpм, 3-утpоенная); SetFillStyle(Pattern, Color: word) - Устанавливает образец штриховки и цвет (0..15 и 128-меpцание); SetGraphMode(Mode: integer) - Устанавливает новый графический режим и очищает экран; SetColor(Color: word) - Устанавливает основной цвет, которым выполняется рисование (0..15); SetBkColor(Color: word) - Установка цвета фона. Гpафические примитивы PutPixel(X,Y: integer; Color: word) - Выводит точку цветом Color с координатой X,Y; LineTO(X,Y: integer) - Рисует линию от текущего указателя к точке с координатой Х,У; LineRel(DX,DY: integer) - Рисует линию от текущего указателя к точке, заданной приращением координат; Line(X1,Y1,X2,Y2:integer) - Рисует линию от точки (X1,Y1) к точке с координатой Х2,У2; MoveTO(X,Y: integer) - Смещает текущий указатель к точке с координатой Х,У; MoveRel(DX,DY: integer) - Смещает текущий указатель к точке, заданной приращением координат; Rectangle(X1,Y1,X2,Y2:integer) - Рисует прямоугольник, используя текущий цвет и тип линии по верхней левой и нижней правой точкам; Bar(X1,Y1,X2,Y2:integer) - Рисует закрашенный прямоугольник, используя установку SetFillStyle; Bar3D(X1,Y1,X2,Y2:integer;Depth:word;Top:Bolean) - Рисует закрашенный паpаллелипипед. Depth - глубина в Pixel (1/4 ширины). Если Тор=True, то рисуется верхняя грань пеpеллелипипеда; circle(X,Y:integer;R:word) - Рисует окружность радиуса R, используя X,Y как координаты центра; Fillellipse(X,Y: integer; XR,YR: word) - Рисует защтpихованный эллипс, используя X,Y как центр и XR,YR как горизонтальный и вертикальный радиусы. RestorCRTMode - Восстанавливает текстовый режим работы экрана; OutText(Text: string) - Выводит текстовую строку на экран. OutTextXY(X,Y: integer; Text: string) - Выводит текст в заданное место экрана. Пример программы построения графика функции у=2+х*х. program graphik; {файл grafikf.pas} uses graph; {подключение модуля GRAPF} var a,b,x,y: integer; {a,b-переменные, определяющие тип драйвера и видеорежим соответственно} begin detectgraph(a,b); {авто определение типа драйвера и видеорежима} initgraph(a,b,'E:\TP\BGI'); {инициализация графического режима} setgraphmode(2); {установка нового режима (2), очистка экрана} setBKcolor(0); {основной цвет фона - черный} setcolor(4); {основной цвет рисования - красный} moveTO(100,100); {смещает курсор} lineRel(50,50); {вычерчивание линии по приращению от текущего указателя} readln; {пауза до нажатия клавиши } setcolor(2); {основной цвет рисования - зеленый} line(100,100,100,50);{рисует линию от т.Х1,У2 до т.Х2,У2} readln; {пауза до нажатия } setcolor(5); {основной цвет рисования - фиолетовый} putPixel(0,0,12); {выводит точку цветом 12 с координатой 0,0} readln; {пауза до нажатия } moveTO(1,2); {смещает курсор к точке с координатой 1,2} for x:=0 to 20 do begin y:=2+ x*x; lineTO(x,y); {рисует линию от текущего указателя к точке с координатой Х,У} end; readln; {пауза до нажатия ввода} Settextstyle(1,0,5); OutTextXY(50,400,'график функции у=2+х*х'); {выводит текст в заданное место экрана} readln; {пауза до нажатия } putPixel(639,479,14);{выводит точку цветом 14 с координатой 639,479} readln; {пауза до нажатия } closegraph;{закрывает графический режим и восстанавливает текстовый} end. 41. Библиотечный модуль CRT. Работа с клавиатурой, экраном, звуковым генератором.Модуль CRT включает процедуры и функции, которые управляют текстовым режимом работы дисплея. С помощью подпрограмм модуля можно перемещать курсор по экрану дисплея, менять цвет выводимых символов и фона, создавать окна на экране, управлять звуком, работать с клавиатурой. Функции управления клавиатурой: KeyPressed: Boolean; - возвращает True, если в текущий момент на клавиатуре была нажата клавиша, иначе False. Не приостанавливает выполнение программы. Используется при организации работы циклов. ReadKey: Char; - читает и возвращает в программу символ с клавиатуры (без отображения на экране). Приостанавливает исполнение программы до нажатия на любую клавишу символа. Используется в операторах IF для проверки символов. WhereX: Byte; - возвращает горизонтальную координату текущей позиции курсора относительно окна. WhereY: Byte; - возвращает вертикальную координату текущей позиции курсора относительно окна. Процедуры управления дисплеем AssignCrt(Var F: Text); - связывает с файловой переменной устройство CON (клавиатуру для ввода и дисплей для вывода). ClrEol; - удаляет все символы справа от курсора до конца строки без перемещения курсора. ClrScr; - очищает экран (окно на экране) и помещает курсор в верхний левый угол. Delay(D: word); - приостанавливает работу программы на D миллисекунд. GotoXY(X,Y: byte); - перемещает курсор в нужное место экрана (окна). Левый верхний угол экрана (окна) имеет координаты (1,1). Отсчет координат идет слева направо и сверху вниз. Количество символов в строке и самих строк зависит от типа дисплея (обычно 25 строк и 80 символов). InsLine; - вставляет пустую строку в позицию курсора. HighVideo; - устанавливает высокую яркость символов. LowVideo; - устанавливает низкую яркость символов. NormVideo; - устанавливает нормальную яркость символов. Window(X1,Y1,X2,Y2:byte); - определяет размеры окна на экране для вывода текста. X1,Y1 - координаты левого верхнего угла, X2,Y2 - правого нижнего угла. TextBackGround(Color: byte); - устанавливает цвет фона экрана (окна) от 0 (черный) до 15 (белый). TextColor(Color: byte); - устанавливает цвет символа. TextMode(Mode: word); - устанавливает нужный текстовый режим:0,1,2... Управление звуковым генератором Sound(F: word); - включает звук генератора, F - частота звука в герцах. Delay(T: word); - устанавливает продолжительность звучания в миллисекундах. NoSound; - выключает звук генератора. 42. Процедурные типы. Параметры-функции. Параметры-процедуры.Процедурные типы – гибкое средство для передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям. Type p1=procedure(a, b, c: real; var d: real); F= function: string; Любые процедуры или функции, передаваемые в качестве фактических параметров объявляется директивой far. Стандартные процедуры или функции ТП могут передаваться рассмотренным образом. В программе могут быть объявлены переменные процедурных типов. Var p1:proc1; F: func2; Ap: array [1..n] of proc1; Переменные процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм=> переменные становятся синонимом имени подпрограммы. 43. Адресный тип. Динамическая память. Адреса и указатели.Динамическая память – это оперативная память ПК, представляемая программно при её работе , за вычетом сегмента данных 164 Кбайта ,стёка(обычно 16 Кбайт) и собственно тела программы (>200-300 Кбайт) Д.п. - это практически единственная возможность обработки массивов данных большой размерности. Сегмент данных - это непрерывная область оперативной памяти в которой размещаются все переменные, объявленные в программе. Д. размещение данных – означает использование Д.П. непосредственно при работе программы. ОЗУ ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера – называются адресами ,позволяющими обращаться к любому байту памяти. Указатели – гибкое средство управления Д.П.. Это переменная, которая в качестве своего значения содержит адрес байта памяти. В ПК адреса задаются сегментами и 16 разрядными смещениями. Сегмент – это участок памяти имеющий длину 65536(64Кбайта) и начинается с физического адреса , кратного 16. Смещение – указывает, сколько байт от начала сегмента нужно отступить, чтобы обратиться к нужному адресу. Адресное пространство 1 Мбайт – стандартная память ПК. Для адресации в пределах 1 Мбайта нужно 20 двоичных разрядов, которые получаются из 2-х 16 разрядных слов (сегмента и смещения типа word ) =>содержимое сегмента смещается на 4 разряда , освободившиеся правые заполняются нулями. Структура памяти: SYS область – КУЧА – SYS область I^:=2;{в область памяти I заносится 2} Функции: ADDR (x) – возвращает результат типа pointer,в котором содержится адрес аргумента,x- любой объект программы (переменная , процедура, функция) CSEG- возвращает значение, хранящееся в регистре CS микропроцессора. Результат в слове типа word. DSEG - возвращает значение, хранящееся в регистре DS микропроцессора. Результат в слове типа word. MAXAVAIL-возвращает размер в байтах наибольшего непрерывного участка кучи .MAXAVAIL(LONGINT). За вызов процедуры NEW или GETMEM нельзя зарезервировать памяти больше, чем значение, возвращаемое этой функцией. MEMAIAIL(LONGINT)- возвращает размер в байтах общего свободного пространства кучи OFS(Х)-возвращает значение типа WORD, содержащее смещения адреса указанного объекта.(Х)-выражение любого типа или процедура. PTR(seg , ofs) - возвращает значение типа POINTER, по заданному сегменту и смещению SEG(X) - возвращает значение типа WORD, содержащее сегмент адреса указанного объекта. SIZEOF(X)- возвращает длину в байтах внутреннего представления указанного объекта.X- имя переменной, функции или типа. Процедуры: DISPOSE- возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за типизированным указателем. DISPOSE(TP) – типизированный указатель FREEMEM - возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за нетипизированным указателем FREEMEM(P,SIZE) – P-нетипизированный указатель ,SIZE-длинна освобождающегося размера. GETMEM(P,SIZE) – резервирует за нетипизированным указателем фрагмент Д,П, требуемого размера(не более 65521) MARK(PTR) – запоминает текущее значение указателя кучи. PTR- указатель любого типа NEW - резервирует фрагмент кучи для размещения переменной . NEW(TP) - тип указатель RELISE(PTR) – освобождает участок кучи .PTR – указатель любого типа,в котором предварительно было сохранено процедурой MARK значение указателя кучи. Д.П. широко используется для временного запоминания данных при работе с графикой и звуком в ПК. 44. Среда ТП. Основные выполняемые функции. Система меню (работа с файлами, запуск, компиляция, отладка (Debug), работа с окнами).Меню run Run- запуск на исполнение Step over-пошаговое исполнение программы Trace into- пошаговое исполнение программы только подпрограммы выполняются оператор за оператором Go to cursor – выполнение до курсора Program reset- завершение процесса отладки Parameters- окно для ввода параметров для отладки Меню compile Compile- компиляция файла, находящегося в активном окне редактирования. Make – условная компиляция изменённых модулей в ЕХЕ файл Build- безусловная компиляция многомодульной программы с созданием ЕХЕ файла Target…-выбор в окне таргет целевой платформы для приложения Primary file…-открывает окно для указания главного файла, компилируемой программы. Меню Debug: Breakpoints- установка точек условного и безусловного перехода Call stack – показывает процедуры выполнявшиеся ранее. Register – информация о регистрах процессора Watch – окно значений переменных Output – окно результатов работы программы User screen – просмотр результатов включая графику Evaluate/ modify.. – окно изменения значений выражений Add watch – окно значений и переменных вовремя отладки Add breakpoint.. – окно установки точек прерывания программы 45. Модульное программирование. Оформление модуля в ТП.Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняется определенным правилам. Модуль – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры, функции) и, возможно, некоторые исполняемые операторы инициирующей части. Использование модулей – прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. ТП размещает программный код модулей в отдельном сегменте памяти. Структура модулей: UNIT<имя> -зарезервированное слово (единица), начинает заголовок модуля INTERFACE<интерфейсная часть> - начинает интерфейсную часть IMPLIMENTAITION<исполняемая часть> BEGIN <инициируемая часть>END. Модуль состоит из заголовка и трёх частей, любая из которых может быть пуста. В ТП возможно осуществлять подключение средств, облегчающих разработку крупных программ. Имя модуля должно совпадать с именем файла, в котором находится исходный текст модуля (исходник). Имя модуля служит для связи с др. модулями и основной программой. Связь устанавливается спец. объявлением: USES<имя вспомогательного модуля > - список связываемых модулей. Интерфейсная часть –содержит объявление всех глобальных объектов модуля (типов, констант, переменных и программ), которые должны доступными основной программе или другим модулям. В интерфейсной части указываются только их заголовки. Объявление подпрограмм в интерфейсной части авто компилируется с использованием дальней модели памяти {far и near}, что обеспечивает доступ к подпрограмме из основной программы и др. модулей.Const, var объявленные в интерфейсной части модуля , как и глобальные константы и переменные помещаются в общий сегмент данных(max 65536 байт). Исполняемая часть – содержит описания программ , объявленных в интерфейсной части. Разрешается объявление локальных для модуля вспомогательных типов, констант, переменных. Заголовок – обязательно, список формальных параметров можно опустить. Все параметры размещаются в сегменте данных. Инициирующая часть – завершает модуль, может отсутствовать или быть пустой. Размещение исполняемых операторов, фрагменты программы. Операторы исполняются до передачи управления основной программе и для подготовки её работы. При пустой инициирующей части лучше всего её попустить. Стандартные модели: SYSTEM,DOS,CRT,GRAPH,PRINTER,OVERLAY,TURBO3,GRARH3 |
Страницы: 1, 2
![]() |
||
НОВОСТИ | ![]() |
![]() |
||
ВХОД | ![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |