
- •1. Дайте определение следующим понятиям: алгоритм, программа, алгоритмический язык, транслятор, компилятор, интерпретатор.
- •2. Опишите общую структуру программы на языке программирования Паскаль (Delphi). Приведите пример оператора присваивания. Опишите и приведите примеры структур операторов ввода и вывода информации.
- •Вещественные типы
- •6. Перечислите основные математические функции в языке Паскаль. Приведите пример использования математической процедуры генерации случайных чисел.
- •Стандартные математические функции
- •7. Объясните назначение условного оператора в языке программирования Паскаль (Delphi). Опишите структуру условного оператора. Приведите пример фрагмента блок-схемы с условием.
- •Условный оператор if
- •8. Объясните назначение оператора выбора (варианта) в языке программирования Паскаль (Delphi). Опишите структуру оператора выбора (варианта). Приведите пример фрагмента блок-схемы с условием.
- •Оператор выбора (варианта)
- •9. Охарактеризуйте сущность логических операций в Паскале, опишите логический тип данных. Приведите таблицы истинности для операций and и or.
- •Логические операции, логический тип данных
- •Операторы организации циклов
- •Оператор повтора for
- •Циклы с неизвестным числом повторений
- •Массив. Одномерные массивы
- •Массив. Многомерные (двумерные) массивы
- •14. Опишите общую структуру процедуры в языке программирования Паскаль (Delphi). Запишите общий вид вызова процедуры. Перечислите варианты формальных параметров.
- •Процедуры
- •15. Опишите общую структуру функции в языке программирования Паскаль (Delphi). Запишите общий вид вызова функции. Перечислите основные отличия процедуры от функции.
- •Функция
- •16. Дайте определение понятия «модуль» (unit). Опишите структуру Unit-a (разделы interface, implementation).
- •1. Структура модуля
- •Заголовок модуля и связь модулей друг с другом
- •Интерфейсная часть
- •Исполняемая часть
- •17. Опишите символьный тип данных в языке программирования Паскаль (Delphi). Приведите пример объявления символьной константы. Перечислите символы, которые могут помещаться в символьную переменную.
- •Символьные переменные
- •Множества
- •20. Дайте определение записи. Напишите структуру объявления записи в языке программирования Паскаль (Delphi). Приведите пример объявления записи. Приведите пример обращения к отдельным полям записи.
- •21. Дайте понятие сортировки. Изложите общие принципы сортировки выбором, вставкой, обменом.
- •Сортировка
- •Сортировка простым обменом (метод «пузырька»)
- •Сортировка выбором
- •Сортировка вставкой
- •22. Дайте определение рекурсии, рекурсивной функции. Кратко опишите достоинства и недостатки рекурсии. Сформулируйте главное требование к рекурсивным подпрограммам.
- •Рекурсия
- •Программирование клавиатуры
- •Понятие стека
- •Понятие очереди
- •Операции с указателями
- •25. Дайте определение файла в Паскале. Перечислите типы файлов. Приведите общие процедуры обработки файлов. Дайте определение текстового файла. Назовите процедуры для работы с текстовыми файлами.
- •Общие процедуры и функции обработки файлов
- •Текстовые файлы
- •Способы представления ориентированного и неориентированного графа
- •Объект, способы описания
- •Свойства характерные для многих компонентов
- •29. Дайте понятие класса в языке программирования Delphi. Приведите отличие классов от других типов. Дайте понятие о структуре класса, его составляющих: полях, методах и свойствах.
- •Классы в Delphi
- •Компоненты
Множества
Множества - это наборы однотипных логически связанных друг с другом объектов. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей.
Описание типа множества имеет вид:
<имя типа> = SET OF <баз.тип>
Здесь <имя типа> - правильный идентификатор;
SET, OF - зарезервированные слова (множество, из);
<баз.тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT.
Над множествами определены следующие операции:
* пересечение множеств; результат содержит элементы, общие для обоих множеств
+ объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества:
- разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму:
= проверка эквивалентности; возвращает TRUE, если оба множества эквивалентны;
<> проверка неэквивалентности; возвращает TRUE, если оба множества неэквивалентны;
<= проверка вхождения; возвращает TRUE, если первое множество включено во второе;
>= проверка вхождения; возвращает TRUE, если второе множество включено в первое;
IN проверка принадлежности; в этой бинарной операции первый элемент - выражение, а второй - множество одного и того же типа; возвращает TRUE , если выражение имеет значение, принадлежащее множеству:
3 in s6 возвращает TRUE;
2*2 in s1 возвращает FALSE.
Дополнительно к этим операциям можно использовать две процедуры. INCLUDE - включает новый элемент во множество. Обращение к процедуре:
INCLUDE (S,I)
Здесь S - множество, состоящее из элементов базового типа TSetBase;
I - элемент типа TSetBase, который необходимо включить во множество.
EXCLUDE - исключает элемент из множества. Обращение:
EXCLUDE(S,I)
Параметры обращения - такие же, как у процедуры INCLUDE.
В отличие от операций + и -, реализующих аналогичные действия над двумя множествами, процедуры оптимизированы для работы с одиночными элементами множества и поэтому отличаются высокой скоростью выполнения.
program bukvy;
uses crt;
const
glasn=['а','е','и','о','у','ы','э','ю','я'];
soglas=['б','в','г','д','ж','з','й','л','м',
'н','р','к','п','с','т','ф','х','ц','ч','ш','щ'];
var
st: string;
g,s,i:integer;
begin
write('Введите строку> '); readln(st);
g:=0; s:=0;
for i:= 1 to length(st) do
if st[i] in glasn then inc (g) else if st[i] in soglas then inc(s);
if g> s then writeln('Гласных больше')
else if g< s then writeln('Согласных больше')
else writeln('Согласных и гласных букв поровну');
end.
20. Дайте определение записи. Напишите структуру объявления записи в языке программирования Паскаль (Delphi). Приведите пример объявления записи. Приведите пример обращения к отдельным полям записи.
Разработайте фрагмент программы для описания данных 25 студентов, т.е. массив типа запись (порядковый номер студента по списку, ФИО, оценка).
Запись
Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова:
<имя типа> = RECORD
<сп.полей>
END
Здесь <имя типа> - правильный идентификатор;
RECORD, END - зарезервированные слова (запись,конец); <сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:
type
BirthDay = record
day,month : Byte;
year : Word
end;
var
a,b : Birthday;
.......
В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MONTH и YEAR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.
Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например
а := b;
К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:
а.day := 27;
b.year := 1939;
Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:
WITH<переменная>DO<оператор>
Здесь WITH, DO - ключевые слова (с, делать);
<переменная> - имя переменной типа запись, за которым, возможно, следует список вложенных полей; <оператор> - любой оператор Турбо Паскаля.
Например:
with c.bd do month := 9;
Это эквивалентно
c.bd.month := 9;
program my;
type
tStudent = record
Nomer : integer;
FIO : string[100];
Ot : byte;
end;
var
Student : array[1..25] of tStudent;
i : integer;
begin
for i:=1 to 25 do
begin
write('Enter Nomer, FIO, Ot : ');
readln(Student[i].Nomer, Student[i].FIO, Student[i].Ot);
end;
end.