рефераты рефераты
 

Главная

Разделы

Новости

О сайте

Контакты

 
рефераты

Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Бизнес-план
Биология
Бухучет управленчучет
Водоснабжение водоотведение
Военная кафедра
География и геология
Геодезия
Государственное регулирование и налогообложение
Гражданское право
Гражданское процессуальное право
Животные
Жилищное право
Иностранные языки и языкознание
История и исторические личности
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Медицина
Международное и Римское право
Уголовное право уголовный процесс
Трудовое право
Журналистика
Химия
География
Иностранные языки
Без категории
Физкультура и спорт
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Радиоэлектроника
Религия и мифология
Риторика
Социология
Статистика
Страхование
Строительство
Схемотехника
История
Компьютеры ЭВМ
Культурология
Сельское лесное хозяйство и землепользование
Социальная работа
Социология и обществознание

рефераты
рефераты

НАУЧНАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Среда Турбо Паскаля

Среда Турбо Паскаля


Ответы на вопросы по
информатике  , 1 курс.
Тема : Среда Turbo Pascal 7.0
Омский  Государственный  Технический Университет
© Roma Parfenov
Fido   
: 2:5004/44.18@FidoNet
e-mail : 
roma4418@mail.ru
Вопросы  и ответы  к экзаменам В-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:\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
Среда программирования компиляции и исполнения программ использование модулей. Примеры программ с типизированным файлом и текстовым в турбопаскале. Решебник по программированию на Турбо Паскале для студентов. Локальные и глобальные переменные в турбо паскаль. Реферат на тему программирование в турбо паскале. Не инициализируется графический режим в паскале. Реферат по информатике на тему турбо поскаль. Решебник по текстовым файлам в турбо паскале. Глобальные и локальные переменные паскаль. Принципы взаимодействия с турбо паскаль. Паскаль символьные переменные решебник. Реферат на тему операции языка паскаль. Работа с множествами в Турбо паскале. Что такой в программе турбо паскаля. ТУРБО пАСКАЛЬ анимация презентации.
рефераты
© РЕФЕРАТЫ, 2012

рефераты