Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика [РТФ, Андреев, 2 семестр] / Экзамен (для печати).docx
Скачиваний:
16
Добавлен:
05.08.2022
Размер:
1.25 Mб
Скачать

  1. Алфавит языка Паскаль. Включает в себя буквы (латинские, в комментариях допустимо использовать любые символы), арабские цифры, шестнадцатеричные цифры, знаки операций, пунктуации, специальные символы (скобки), пробелы и зарезервированные слова и директивы. Директива - выполняется компилятором Команда - выполняется ЦП Зарезервированные слова - набор букв, понятных компилятору (команды, имена логических и арифметических функций) Идентификатор - имена переменных.

Квадратные скобки

выделение индексов массива и элементов множеств

Круглые скобки

математические формулы, объявление аргументов

Апостроф

оформление строковых констант

Двоеточие-равно

присвоение значения

Точка с запятой

отделение операционных строк

Двоеточие

отделение переменной от типа

Равно

отделяет имя типа от описания типа, отделяет типизированную константу от ее значения

Запятая

отделение элементов списка друг от друга

Две горизонтальные точки

описание диапазона

Точка

конец программы отделение дробной части отделение полей записи

Знак доллара

Обозначение шестнадцатеричного числа

Решетка

Код числа

  1. Обобщенная структура Паскаль-программы. Структура: - Описательная (не обязательная) - Исполняемая

Заголовок программы

Program <имя>

Описание модулей, библиотек

Uses

Объявление меток (goto)

Label

Объявление констант

Const

Объявление типов

Type

Объявление переменных

Var

Объявление не стандартных процедур и функций

Procedure Function

Исполняемая

begin end.

  1. Целый и перечисляемый типы данных в Паскале.

byte

0 .. 255

1 байт

word

0 .. 65535

2 байт

short int

-128 .. 127

1 байт

integer

-32768 .. 32767

2 байт

long int

-2147483648 .. 2147483647 (2 миллиарда)

4 байт

Функции:

abs(x)

модуль от числа

dec(x)

уменьшение на 1

inc(x)

увеличение на 1

random(x)

случайное число от 0 до x-1

sqr(x)

квадрат

swap(x)

обмен байтами в двухбайтовых числах

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

Пример:

Type Day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Var A: Day;

succ(x)

следующий элемент

pred(x)

предыдущий элемент

ord(x)

номер в последовательности

  1. Логический тип данных и тип диапазон в Паскале. Логический тип

Переменная может принимать всего два значения: true (истина) и false (ложь). Истине соответствует значение 1, а ложь тождественная нулю. Объявить булеву переменную можно так:

Var A: Boolean;

Операции: not , and, or, xor.

Тип диапазон:

Используется, когда необходимо задать диапазон значений. Для объявления используется конструкция m..n, где m – минимальное (начальное) значение, а n – максимально (конечное); здесь m и n являются константами, которые могут быть целого, символьного, перечисляемого или логического типа. Описываться величины интервального типа могут как в разделе типов, так и в разделе описания переменных.

Общий вид:

<имя типа> = <мин. значение>..<макс. значение>;

Пример:

TYPE Cards = 1..36;

  1. Символьный и вещественные типы данных в Паскале. Символьный тип

Предназначен для хранения одного символа (управляющего или печатного) в определённой кодировке. В ТП используется ASCII

Команды: 1. ord(x) двоичный код переменной

2. chr(x) символ из числа

Обращение:

  1. Как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;

  2. Указав код символа, значение которого должно находиться в диапазоне от 0 до 255.

Вещественный тип данных

Команды:

sin(x)

cos(x)

arctan(x)

exp(x)

Эксп. в степени X

ln(x)

frac(x)

дробная часть

int(x)

целая часть

sqrt(x)

кв. корень

  1. Массив и запись в Паскале.

Массив – это объединение нескольких однотипных объектов (чисел, строк, символов и т.п.), рассматриваемое как единое целое. Является не стандартным типом данных.

Type < имя _ типа > = array [ a..b ] of T;

где a, b – диапазон индексов, T – тип его элементов.

Запись - структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты записи могут быть различного типа

<имя типа> = record <список полей записи> end;

  1. Множество в Паскале.

Множества - это наборы однотипных, разных по значению, логически связанных друг с другом объектов. Количество элементов, входящих в множество может меняться в пределах от 0 до 256. В множестве может использоваться любой порядковый тип, кроме word,integer,longint

<имя типа> = set of <диапазон значений>

*

результат - пересечение множеств

+

объединение множеств

-

разность множеств

=

проверка эквивалентности

<>

проверка неэквивалентности

<=

проверка вхождения первого во второе

>=

проверка вхождения второго в первое

in

проверка принадлежности

include

включение в множество

exclude

исключение из множества

  1. Файлы в Паскале. Файлы - любая именованная область внешней памяти ПК (логического устройства, потенциального источника или приемника информации). 3 вида файлов: 1) Типизированный: - Определяются предложением FILE OF <Тип данных> - Элементы файла имеют одинаковую длину - Доступ к любому элементу - Все элементы 1 типа 2) Нетипизированный: - Определяются типом FILE - Элементы файла имеют одинаковую длину - Доступ к любому элементу - Элементы разного типа 3) Текстовый: - Определяются типом TEXT - Последовательный доступ с 1 элемента - Переменная длина

Процедура

Назначение

Пример вызова

Тип файла

assign(file, имя)

установить связь файла с файловой переменной

assign(f, ’a: text’)

assign(f, path)

Все файлы

close(file)

закрыть файл

close(f)

Все файлы

reset(file [,длина-з.])

открыть файл

reset(f)

Все файлы

rewrite(file [,длина-з.])

создать файл

rewrite(f, 1)

Все файлы

append(file)

открыть для добавления

append(f)

Text

read(file, данные)

ввод данных

read(f, mydata)

Все файлы

readln(file, данные)

ввод данных,

пропуск конца строки

readln(f, a, b, c)

Text

write(file, данные)

вывод данных

write(f, mydata)

Все файлы

writeln(file, данные)

вывод данных,

вывод конца строки

writeln(f, a:10:2)

Text

blockread(f, данные, n,

результат)

ввод блока из n записей,

результат = сколько передано

blockread(f, a, 50,p)

File

blockwrite(f, данные, n,

результат)

вывод блока из n записей  результат = сколько передано

blockwrite(f, a,50,p)

File

seek(file, номер позиции)

установить номер позиции для обмена

[0;n], n = число записей

seek(f, 0)

Кроме text

  1. Тип указатель в Паскале. Указатель - это переменная, которая в качестве своего значения содержит адрес байта памяти. Указатели могут быть типизированными или нетипизированными. Типизированные указатели хранят адрес ячейки данных заявленного типа, для нетипизированных указателей тип содержимого не задается. Указателю может быть присвоено значение другого указателя, причем в операторе присваивания (слева и справа от знака :=) должны участвовать указатели с одинаковым базовым типом или один из указателей должен быть не типизированным.

Допустимо сравнивать указатели одного типа на равенство и неравенство. Другие операции сравнения не допустимы. <имя_типированного_указателя> : ^ <тип_содержимого_ячейки>; <имя_нетипированного_указателя> : pointer; i : ^ byte; b : pointer;

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

new(x)

Резервирует фрагмент кучи для размещения переменной

dispose(x)

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

getmem(x, size)

Резервирует за нетипизированным указателем фрагмент динамической памяти требуемого размера. SIZE - длина в байтах освобождаемого фрагмента

freemem(x, size)

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

release(x)

Освобождает участок кучи

maxavail

Возвращает размер в байтах наибольшего непрерывного участка кучи

memavail

Возвращает размер в байтах общего свободного пространства кучи.

• Функция Addr - возвращает результат типа Pointer, в котором содержится адрес аргумента.  • Addr(X), x - любой объект программы. Возвращаемый адрес совместим с указателем любого типа. Аналогично операции @.  • Процедура Dispose(x) - возвращает в кучу фрагмент динамической памяти, зарезервированный за типизированным указателем x.  • Функция DSeg - возвращает значение хранящиеся в регистре DS (в начале работы в DS - сегмент начала данных программы), результат - типа Word.  • Процедура FreeMem - возвращает в кучу фрагмент динамической памяти, который ранее был зарезервирован за нетипизированным указателем. FreeMem(P, Size), P - нетипизированный указатель. Size - длина фрагмента, подлежащего освобождению.  • Процедура GetMem(P, Size) - резервирует память (за одно обращение не более 65521 байт), если нет свободной памяти - ошибка времени исполнения.  • Процедура Mark(Ptr) запоминает текущее значение указателя кучи HeapPtr. Ptr - указатель любого типа, в нём будет возвращено HeapPtr. Используется совместно с Release для освобождения части кучи.  • Функция MaxAvail - возвращает размер (в байтах) наибольшего непрерывного свободного участка кучи. Результат типа LongInt. За один вызов New или GetMem нельзя зарезервировать значение большее, чем возвращаемое этой функцией.  • Процедура New(TP) - резервирует фрагмент кучи для размещения переменной. TP - типизированный указатель (за одно обращение не более 65521байт).  • Функция MemAvail - возвращает размер (в байтах) общего свободного пространства кучи. Результат типа Longint.  • Функция Ofs(X) - возвращает значение типа Word, содержащее смещение адреса указанного объекта. X - выражение любого типа или имя процедуры.  • Функция Ptr(Seg, Ofs) - возвращает значение типа Pointer по заданному сегменту и смещению. Значение, возвращаемое функцией, совместимо с указателем любого типа.  • Процедура Release(Ptr) - освобождает участок кучи. Рtr - указатель любого типа, в котором сохранено процедурой Mark значение указателя кучи. Освобожденный участок кучи - от адреса в Ptr до конца. Одновременно уничтожается список свободных фрагментов, созданных по Dispose и FreeMem.  • Функция Seg(X) - возвращает значение типа Word, содержащее сегмент адреса указанного объекта.  • Функция SizeOf(X) - возвращает длину (в байтах) внутреннего представления указанного объекта. X - имя переменной, функции или типа.

  1. Условный оператор языка Паскаль. Условный оператор позволяет выполнить проверку условие и в зависимости от результата выполнить то или иное действие. if <условие> then <оператор1> else <оператор2> Условие может быть вложенным. Else не является обязательным. Для большого числа строк следует использовать begin...end;

  2. Паскаль-операторы повторений. 3 вида: - for (счетный) - while (предусловие) - repeat until (постусловие) 1) FOR <параметр цикла> := <начальное знач.> ТО <кон. знач> DO <оператор> . - проверка <параметр> <= <конечное значение> - выполнение оператора - увеличение параметра цикла на единицу - если нужно уменьшать значение, то за место TO использовать DOWNТO 2) WHILE <условие> DO <оператор> . - выполняется, пока условие true - сначала производится проверка, затем выполнение 3)REPEAT <тело цикла> UNTIL <условие > . - выполняется, пока условие true - сначала происходит выполнение, затем проверка

  3. Паскаль-оператор выбора. Оператор выбора позволяет сравнить переменную с множественными значениями. Параметром может является выражение любого порядкового типа (кроме REAL и STRING). Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. CASE <ключ выбора> OF <константа выбора 1> : <оператор 1> ; <константа выбора 2> , <константа выбора 3> : <оператор 2> ; ELSE <константа выбора 4> : <оператор 4> ; END;

  4. Структура Паскаль-программы, содержащей нестандартные процедуры (функции). Процедура или функция представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы. Функции, в отличие от процедур, в результате своего выполнения возвращают значение, которое может быть использовано в выражении. Для единообразия функции и процедуры называются подпрограммами.

Любая используемая в программе процедура или функция должна быть предварительно описана в разделе описаний VAR.

Описание процедуры имеет вид: procedure <имя>(список параметров); описание переменных begin <операторы> end; Описание функции имеет вид: function<имя>(список параметров) : <тип возвращаемого значения>; описание переменных begin <операторы> <имя> := result; end;

  1. Формальные параметры Паскаль-процедур (функций). Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими. При обращении к подпрограмме формальные параметры заменяются на соответствующие фактические. Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. Procedure pr(a:word; var b2 : byte); begin b := a; end;

a - параметр b - возвращаемое значение

  1. Структура модулей в Паскале.

Структура модуля:

Unit <имя_модуля>; interface <интерфейсная часть>; implementation < исполняемая часть >; begin  <инициирующая часть>;  end .

  1. Интерфейсная часть: В этой части модуля содержится объявления всех глобальных объектов модуля (типов, переменных, подпрограмм), которые должны стать доступны основной программе. При обьявление подпрограмм указывается только их заголовки.

  2. Исполняемая часть: В этой части модуля содержится описание подпрограмм, объявленных в интерфейсной части.

  3. Инициирующая часть: Она завершает модуль. В ней размещаются исполняемые операторы. Может отсутствовать.

  1. Специфика компиляции модулей и примеры их применения. Определены три режима компиляции: COMPILE, МАКЕ и BUILD. При компиляции в режиме COMPILE все упоминающиеся в предложении USES модули должны быть предварительно скомпилированы. В режиме MAKE компилятор проверяет наличие TPU-файлов для каждого объявленного модуля, если файл не обнаружен, компилятор ищет одноименный PAS-файл и, если он обнаружен, компилирует его. Кроме того, система следит за изменениями в PAS-файлах модулей, если в них были внесены изменения, модуль компилируется снова. Более того, если изменения внесены в интерфейсную часть модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему. В режиме BUILD существующие ТРU- файлы игнорируются, и система пытается отыскать (и компилировать) соответствующий РАS- файл для каждого объявленного в предложении USES модуля.

Модуль компилируется точно таким же как и обычные программы. Можно компилировать из интегрированной среды или с помощью компилятора командной строки. Но так как модуль не является непосредственно выполняемой единицей, то в результате его компиляции образуется внешний файл с расширением .TPU(Turbo Pascal Unit). При этом имя файла до расширения .tpu совпадает с именем исходного файла (текста на паскале) до расширения .pas. Чтобы получить доступ к интерфейсным объектам модуля, необходимо в программе в предложении использования записать имя нужного TPU-файла. Общий вид предложения использования:

uses

U1, U2, U3;

где uses- служебное слово, U1, U2, U3- идентификаторы используемых модулей. Это предложение должно быть записано сразу после заголовка программы. Если модуль использует объекты другого модуля, то такая спецификация должна следовать сразу после служебного слова interface.

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

Пример использования модуля CmplVals:

program UsingComplex; uses CmplVals; var C1, C2, C3 : Complex; begin InitC(1,2,C1); InitC(3,4,C2); MultC(C1,C2,C3); WriteC(C3); DivC(C1,C2,C3); WriteC(C3) end.