Вопросы и ответы к экзаменам В-1

(1999)
1. Алгоритм. Свойства алгоритма. Способы записи алгоритма
(общ.) Алгоритм – это система формальных правил однозначно приводящая к решению поставленной задачи.
(ПК.) Алгоритм- это последовательность арифметических и логических действий над данными, приводящая к получению решения поставленной задачи.
Свойства
А) Дискретность — алгоритм состоит из отдельных пунктов или шагов
Б) Определённость — каждый шаг алгоритма должен быть строго сформулирован.
(иметь точный смысл)
В) Связанность — на каждом следующем шаге используются результаты предыдущего.
Г) Конечность – алгоритм должен завершаться после конечного числа шагов
Д) Результативность – алгоритм должен приводить к получению конечных результатов
Е) Массовость – пригодность для решения широкого класса задач.
Ж) Эффективность – применение а. должно давать какой бы-то положительный временной результат (временной)
Способ записи
А) Словесно-формульный
Б) Структурная схема и алгоритм (ССА)
В) Спец. языки (алгоритмические и псевдокоды)
(псевдокод — искусственный неформальный язык, обычно состоит из элементов обычного языка с элементами программирования)
Г) Графический способ
2. Линейные и разветвляющиеся алгоритмы. Cтруктурные схема алгоритмов. Правила выполнения.
CCA- при записи в виде структурной схемы алгоритм представляется графически в виде последовательности блоков выполняющих определённые функции и блоки соединяются линиями возможно со стрелками. Внутри блоков операции. Блоки нумеруются по порядку. По способу организации алгоритмов ССА блоки делятся на линейные, разветвляющиеся и циклические.
В линейных алгоритмах результат получается после выполнения одной последовательности действий.
Начало—ряд операторов—конец.
Разветвляющийся алгоритм предусматривает выбор одной из нескольких последовательностей действий в зависимости от исходных данных или промежуточных результатов.
3. Циклические алгоритмы. Классификация. Вычисление сумм, произведений.
Циклический алгоритм – это алгоритм обеспечивающий решение задачи путём многократного повторения последовательности действий. Участки, которые многократно повторяются — называются циклами.
Циклы по числу повторений делятся на циклы с заданным числом повторений и итерационные.
ЦИКЛЫ
ЗАДАННОЕ ЧИСЛО ИТЕРАЦИОННЫЕ
СО СЧЁТЧИКОМ УПР. УСЛОВИЕМ
ПОСТ. УСЛОВИЕ ПРЕДУСЛОВИЕ
Общее замечание вход только в начало цикла, а выход вследствие окончания цикла, оператором GOTO, процедурами прерхода и выхода, находящимся в теле цикла.
4. Циклические алгоритмы. Итерационные циклы. Вложенные циклы.
Циклический алгоритм – это алгоритм обеспечивающий решение задачи путём многократного повторения последовательности действий. Участки, которые многократно повторяются — называются циклами.
Циклы по числу повторений делятся на циклы с заданным числом повторений и итерационные.
В итерационных циклах выполнение цикла оканчивается при выполнении общего условия, связанного с проверкой монотонно изменяющейся величины.
Вложенные циклы – это, когда определённый цикл повторяется многократно в другом цикле охватывающем данный.
5. Массивы. Алгоритмы обработки массивов. Процедура BREAK
Массив — это упорядоченная последовательность величин, обозначаемая одним именем. Положение каждого элемента в массиве определяется его индексом (индексами). В этом и заключается упорядоченность. Индексы принято указывать в скобках после имени массива.
Пример В[2] означает второй элемент массива В.
Пусть имеется некоторая последовательность величин 1, 2, 4, 8, 3. Все элементы этой последовательности имеют одно имя А. Отличаются они друг от друга индексами, например, A[1]=1, A[2]=2, A[3]=4, A[5]=8, A[6]=3.
При описании массива указывается число его элементов, и это число остается постоянным при выполнении программы. Каждый элемент массива имеет явное обозначение, и к нему возможно непосредственное обращение.
Количество индексов в обозначении элемента массива определяет размерность массива. Массив может быть одномерным (один индекс S[4]), двумерным (два индекса N[2,4]), трех мерным (три индекса Y[2,4,1]) и т.д.
Массив описывается в разделе описания переменных, при этом описание массива включает описание типа массива (тип его элементов, т.е. какие значения они могут принимать) и типа индексов. Например, массив вещественного типа с именем vector может быть описан следующим образом var vector array [1..50] of real
Это описание означает, что одномерный массив vector имеет 50 элементов типа real со значениями индекса 1,2, …,50. Элементы этого массива будут иметь обозначения vector[1], vector[2], …, vector[50]
Двумерный массив matrix, с целочисленными компонентами можно определить следующим образом
var matrix [1..10,1..15] of integer
Двумерный массив часто называют матрицей. Первый индекс этого массива (номер строки матрицы) принимает значения из отрезка 1..10, а второй (номер столбца) — из отрезка 1..15. Компоненты массива могут иметь обозначения matrix[1,5], matrix[8,8], matrix[i,j] и т.п.
Примеры
program p2;
var matrix array [1..3, 1..4] of integer;{ определяется двумерный массив в 3 строки и 4 столбца с именем matrix}
i, j integer;
begin
for i =1 to 3 do
for j =1 to 4 do
read(matrix[ i, j]); {заполнение двумерного массива на 3 строки и 4 столбца}
for i =1 to 3 do
begin
writeln;
for j =1 to 4 do write(matrix[ i, j]);{вывод элементов двумерного массива в виде таблицы}
end;
6. Структуризация. Восходящее программирование. Проектирование алгоритма перевода чисел из одной системы счисления в другую (2,8,10,16).
Восходящее проектирование – используется для несложных задач, когда заранее известны все подзадачи или функции, которые выполнять программа. Разрабатывается алгоритм для каждой подзадачи, а затем они собираются в единую подпрограмму.
7. Нисходящее программирование. Проектирование алгоритма выполнения арифметических операций (+,-,*,/) над числами с пл. точкой.
При нисходящем программировании сверху вниз сначала разрабатывается общая структурная схема алгоритма, а затем разрабатываются этапы её детализации (структурирование).
8. Язык TURBO PASCAL. Алфавит языка. Идентификаторы TURBO PASCAL.
ТП – единство двух самостоятельных начал компилятора и инструментов програмной оболочки. Это мощная современная процедурная система программирования
Алфавит буквы латинского от a до z, знак _.(если не char A = a)
Цифры – арабские 0-9, спец. символы +-*/=., ;<>[]{}()^&$@#%!
Пробелы (ASCII от 0 до 32) ограничители идентификаторов
Зарезервированные слова и параметры (не используются в качестве идентификаторов). Стандартные директивы absolute, assembler, external, far, forward, near и т.д. .
Идентификаторы имена констант, var’ных, меток , типов, obg-ов, процедур, функций(могут иметь произвольную длину, но значат только первые 63 символа, начинаются только с буквы или цифры).

9. Оператор условного перехода IF. Составной и пустой операторы.
IF<условие >THEN<операторы> ELSE <операторы>;
10. Оператор цикла со счетчиком.
FOR <идентификатор> =<начальное состояние >TO<конечное состояние > DO<оператор>
FOR <идентификатор> =<начальное состояние >DOWNTO<конечное состояние > DO<оператор>
11. Оператор цикла с предусловием.
Цикл ДО
WHILE<условие>DO<оператор>
12. Оператор цикла с постусловием.
Цикл ПОКА
REPEAT
Оператор;
UNTIL<условие>;
13. Подготовка и отладка программ в среде TurboPascal.
Меню 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.. – окно установки точек прерывания программы
14. Константы в TURBO PASCAL (целые, вещественные, 16-ричные, логические, символьные, строковые константы, конструктор множества)
Константы — могут использоваться целые, вещественные, шестнадцатеричные числа, логические константы, символы, строки, множества и признак неопределённого указателя NIL.
Целые числа от –2147483648 до 2147483647
Вещественные числа (экспоненциальная часть) 3.14E5
16-ричное число $(код 36 в ASCII) $00000000- $F…$F(8)
Логическая константа True, False.
Символьная константа любой символ в ‘ ‘, либо указатель внутри кода #83=’S’
Конструктор множества — список элементов множества в [].
[1,2,3,4],[red, blue],[true, false]. В ТП разрешается объявление констант
const a=12/343;
15. Типизированные константы.
Типизированные константы фактически являются переменными со статическим классом памяти. В отличие от простых констант, в описании типизированных указывается как значение константы, так и её тип.
Существуют типы
Константа, константа-адрес, константа-массив, константа-запись, константа-объект, константа-множество.
Указательный тип
Type ptr = ^integer;
Conct intptr ptr=nil;
Структурированный тип
1 массив (array)
2 множество (set of 1..4)
3 запись (record)
4Объектного типа (object)

16. Оператор присваивания. Приоритет операций. Стандартные функции.
<имя переменной> =<выражение>;
арифметические логические отношения прочие
1 NOT @-адресное преобразование
2 *,/,DIV,MOD AND,SHL,SHR
3 +,- OR, XOR
4 <;>;=; IN
Для повышения приоритета используются ( ).
Стандартные функции ТП.
ABS(X ) SQR(X) SQRT(X) TRUNG(X) ROUND(X)
COS(X) SIN(X) TG(X) ARCTANG(X) EXP(X)
LN(X) PRED(X) SUCE(X) ORD(X) CHR(X)
ODD(X) INT(X) FRAG(X) +,-,*,/ (X)DIV(Y)
MOD(X) NOT AND OR XOR
= < > I_SHL_J I_SHR_J
17. Операторы и функции безусловного перехода (goto, continue, exit, halt).
EXIT; — выход из программы или подпрограммы
HALT(COD);- (COD) – необязательный параметр, определяет код
HALT; — безусловная остановка программы
ERRORLEVEL; — вниз
BREAK; — досрочный выход из цикла
CONTINUE; — прерывает выполнение текущей операции в цикле, передаёт управление следующему оператору
18. Структуры простой и сложной программ в Турбо-Паскале.
PROGRAM<имя программы >;
USES<имя модуля>;
TYPE<раздел типов>;
LABEL<метки>;
CONST<константы>;
VAR<переменные и их типы>;
FUNCTION<имя функции>(имя переменной тип)
BEGIN
операторы
END;
PROCEDURE<имя процедуры>( параметры)
BEGIN
операторы
END;
BEGIN
Текст основной программы
END.
19. Подпрограммы. Применение. Структура описания. Отличие процедуры от функции.
Самостоятельные, законченные фрагменты программы, оформленные особым образом, снабжённые именем – называются подпрограммами
Использование подпрограмм позволяет разбить программу на ряд независимых частей.
Подпрограммы используются
1Для экономии памяти, когда некоторая последовательность действий встречается неоднократно на разных участках программы. Каждая подпрограмма существует в ед. экземпляре, но обращаться к ней можно неоднократно из разных точек программы.
2. В сложных программах при модульном проектировании.
Подпрограммы делятся на процедуры и функции
Результатом исполнения функции является единственное значение простого, строкового или указательного типа. Поэтому обращение к функции можно использовать выраженное наряду с константой и переменные.
Процедура обычно возвращает несколько значений, подпрограмма состоит из заголовка и тела подпрограммы.
Тело подпрограммы состоит из раздела описаний и раздела операторов.
Структура PROCEDURE<имя процедуры >;
FUNCTION<имя функции>(параметр тип);
USES<модули>;
LABEL<метки>;
CONST<константы>;
TYPE<типы>;
VAR<переменные>;
BEGIN
Тело подпрограммы
END;
20. Вложенные подпрограммы. Принципы локализации имен (локальные и глобальные переменные).
Вложенными являются подпрограммы, вызываемые из других подпрограмм.
Если какая либо программа использует некоторые переменные подпрограммы,
То данные переменные должны быть описаны не в подпрограмме, а в самой программе. Данные переменные называются глобальными, а переменные, объявленные в модуле или подпрограмме являются локальными, и значения этих временных нельзя использовать в главной программе.
21. Вызов подпрограмм (формальные и фактические параметры).
Подпрограммы могут быть вызваны как из тела основной программы, так и из тела другой подпрограммы. Для вызова необходимо написать имя процедуры или функции, а также, если надо, ряд переменных передаваемых в подпрограмму.
Пример
PROCEDURE<имя>[(<формальные параметры>)];
FUNCTION<имя>[(<формальные параметры>)] <тип>
Сразу за заголовками может следовать одна стандартных директив ASSEMBLER <тело подпрограммы на ассемблере>, EXTERNAL<объявление внешней подпрограммы>, FAR, FORWARD, INLINE<встроенные машинные инструменты>, INTERRUPT,NEAR.
PROCEDURE SB(a real<формальный параметр>);
Фактические параметры – это глобальные переменные подставленные в формальные
ТИП ФАКТ=ТИП ФОРМ.

22. Процедуры без параметров и с параметрами.
PROCEDURE<имя>
Begin
<текст процедуры>
end;
23. Передача в подпрограмму параметров регулярного типа (массивов, строк).
Типом любого формального параметра может быть только стандартный или ранее объявленный тип.
Пример
TYPE TYPE
ATYPE=ARRAY[1..10]OF REAL; INTYPE=STRING[15];
PROCEDURE S(A ATYPE); OUTTYPE=STRING[30];
FUNCTION ST(S INTYPE) OUTTYPE
Иной способ для передачи параметров переменных отключением контроля компиляции.
Открытый массив PROCEDURE I (A ARRAY OF REAL);
24. Функции. Описание. Вызов функции.
FUNCTION<имя>[(<формальные параметры>)] <тип>
Сразу за заголовками может следовать одна стандартных директив ASSEMBLER <тело подпрограммы на ассемблере>, EXTERNAL<объявление внешней подпрограммы>, FAR, FORWARD, INLINE<встроенные машинные инструменты>, INTERRUPT,NEAR.
FUNCTION<имя функции>(параметр тип);
Begin
<тело подпрограммы>
end;
25. Рекурсии. Прямая и косвенная рекурсия. Директива FORWARD.
Рекурсия – это такой способ организации вычислительного процесса при котором программа в ходе выполнения составляющих её операторов обращается сама к себе.
Для избежания переполнения стёка, следует размещать промежуточные результаты во вспомогательной переменной.
Begin
…………………………
F =fac(n-1); — вспомогательная переменная
……………………….
End;
Рекурсивный вызов может быть косвенным, который разрешается опережающим описанием
Procedure b(j byte);
Forward;
Procedure a (i byte);
Begin
B(i);
End;
26. Тип-диапазон. Структурированные типы. Массивы.
Любой из структурированных типов (а в ТП их 4 массивы, записи, множества, файлы) характеризуется множественностью образующих этот тип элементов. В ТП
Допускается бесконечная глубина вложенности типов, однако Суммой=<65520 байт (т.к. каждый компонент может представлять структурированный тип).
PACKED- осуществляется везде где это возможно.
Тип диапазон
TYPE
D = array [0..9] of char;
Var m d;
Begin <операторы>end.
Обычно в качестве идентификатора типа используется тип–диапазон, в котором задаются границы изменения индексов.
Тип-диапазон подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона.
<мин. значение >..<макс. значение>
TYPE digit = ‘0’..’9’; можно Var date 1..31;
dig2=48..57; month 1..12;
1CHR ’a’..’z’;
High(x) – максимальное значение типа диапазон
Low(x) – минимальное значение типа диапазон.
Массивы — формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.д.), рассматриваемое как единое целое.
Var a array [1..10] of real;
Компоненты массива состоят из данных одного типа (возможно структурированного).
В качестве идентификаторов порядковые типы кроме LongInt и типа диапазон с базисным типом LongInt/
27. Символьный тип.
Значением символьного типа является множество всех символов ПК. Каждому символу присваивается целое число в диапазоне 0..255.Это служит кодом внутреннего представления символа, его возвращает функция ORD. Для кодировки используется код ASCII – 7 битный код, т.е. с его помощью кодируется 128 символов (0..127). В то же время в 8-битном байте, отведённом для хранения символа в ТП, можно закодировать в 2 раза больше символов (0..255). (0-127ASCII, 128-255-может меняться на ПК разных типов).
0-31 – служебные коды (пробелы)
28. Строковый тип. Операции, процедуры и функции
Значением строкового типа является любая последовательность символов, т.е. строка. Окончанию строки соответствует символ с кодом 0, и которые называются строками с завершающим нулём или ASCIIZ-строками.
Строковый тип соответствует идентификаторам string и PChar.
A array[0..n] of char = a string
Ord(0)=length(a)- длинна строки(не больше 255 символов)
Concat (S1 [s2 ..,SN])- сцепление строк
Copy (St, index, count) – копирует из строки ST символ, начиная с index
Delete(ST, a, b) – удаление b символов начиная с a
Insert (sut, st, b)–вставляет SUT в ST начиная с b
Pos (Sut, St) — в строке ST отыскивает Sut если нет 0
Str (X [WIDTH [ DECIMALS]], ST)- из вещественного или целого в строку
Val (st ,x, code) – обратно str (пробелы не допускаются)
Var s string;
Begin
…….
S = ’dsfsdhfjhsdfjshdfjsd’;
……….
End.
29. Типы в Турбо-Паскале. Объявление новых типов. Порядковые типы. Изменение типа выражения
Стандартные типы в ТП
1 группа целых типов(ShortInt, integer, LongInt, Byte, Word);
2 группа вещественных типов(Single, real, Double, Extended, Comp);
3 группа Булевские типы (Boolean, ByteBool, WordBool, LongBool);
4 Символьный тип(Char);
5 Строковые типы(String, PChar);
6 Указательный тип (Pointer);
7 Текстовый тип (Text);
Type <Новый тип>=<описание типа>
Символьный тип, а также целые и булевские типы относятся к порядковым типам.
Свойства
1 Каждый элемент имеет свой порядковый номер
2 Поэтому возможен использование функцииOrd, возвращающей этот номер
3 Возможно применить функцию Pred и Succ которые верну соответственно предыдущее и последующее значения
30. Целые типы. Правила объявления. Применяемые функции.
Целые типы
Byte 0..255 ShortInt –128..127 Word 0..65535 Integer –32768..32767
LongInt –2147483648.. 2147483647
Вложение типов
Type result = более мощный тип
A integer;
LongInt(a);
Процедуры и функции
ABS(X) CHR(X) DEC INC SQR HI(I)-старший байт
LOW(X) – младший байт ODD(I) – возвращает правда если нечет
RANDOM(x) SWAP(I)- меняет местами байты
31. Логический тип. Логические операции и функции
Логический тип ещё называют булевским. Их 4
Boolean(false=0, 1 байт); ByteBool (false=0, 1 байт); WordBool (false=0 в обоих байтах, 2 байта); LongBool (false=0 во всех байтах, 4 байта).
Логические функции
Ord; Pred; Succ; or ;and ; xor ;
32. Перечисляемые типы. Функции и операции, применимые к ним.
Перечисляемый тип задаётся тем значениям, которые он может получить. Значения
именуются идентификаторами и располагаются в списке с ( ).
Type col = (red, white, blue);
Max=65536 значений;
Ord (red) =0;
Var c col;
C = col(0);
С =red;
В идентификаторах нельзя использовать кириллицу. Переменные так же можно объявлять без предварительного описания типа
Var col (black, white, green);
33. Множества и операции над ними.
МНОЖЕСТВА — наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами подразумевается лишь программистом и не контролируется Турбо Паскалем. Количество элементов в множестве может меняться от 0 до 255. Множество, которое не содержит элементов, называется пустым. От массивов множества отличаются тем, что количество элементов в нем не постоянно. Его можно расширять и сокращать по ходу выполнения программы.
Описание типа производится в разделе TYPE.
Структура
<Имя идентификатора>=SET of <имя типа> ;
где <Имя идентификатора> — правильный идентификатор Турбо Паскаля;
<имя типа> — тип элементов множества, в качестве которого может
использоваться любой порядковый тип, кроме WORD, Integer, LogInt,
ShortInt.
пример TYPE dchar=SET of ‘1’..’9′; {базовый символьный тип-диапазон}
digit=SET of 0..9;
Переменные этого типа описываются в разделе
VAR S1,S2,S3 dchar; S4,S5,S6,S7 digit;
Для задания множества может использоваться конструктор множества список (спецификаций) элементов множества, отделенных друг от друга запятыми; список заключается в квадратные скобки. Спецификациями элементов м.б. константы или выражения базового типа, а также пример
S1 =[‘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 TPBGI’); тип 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 TPBGI’); {инициализация графического режима}
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 TPBGI’); тип 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 TPBGI’); {инициализация графического режима}
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
«