
- •Билет 2 Лексическая структура языка Pascal.
- •Билет 3 Структура Pascal-программы. Составной оператор. Константы. Переменные.
- •Билет 4. Концепция переменной языка паскаль.
- •Билет 5 Концепция типа данных языка Pascal.
- •Билет 6 Простые типы.
- •Билет 7 Стандартные типы языка Pascal.
- •Билет 8 Тип Boolean
- •Билет 9 Перечисляемый тип.
- •Билет 10. Ограниченные типы (диапазоны).
- •Билет 11 Условный оператор
- •Билет 12 Оператор варианта
- •Билет 13 Оператор цикла с постусловием
- •Билет 14 Оператор цикла с предусловием
- •Билет 15 Оператор цикла с параметром
- •Билет 16 Составные типы
- •Билет 17 Массивы, примеры использования
- •Билет 18 Записи, примеры использования
- •Билет 19 Оператор сцепления
- •Билет 20 Записи с вариантами
- •Билет 21 Множества (определение, примеры, операции).
- •Билет 22 Представления множеств, примеры использования.
- •Билет 22. Представления множеств.
- •Билет 23 Файловые типы
- •Билет 24 Операции с файлами
- •Билет 25 Текстовые файлы
- •Билет 26 Типизированные файла
- •Билет 27 Нетипизированные файлы
- •Билет 28 Процедуры и функции
- •Билет 29 Описание процедур и функций
- •Билет 30 Локальные и глобальные переменные
- •Билет 31 Параметры процедур и функций
- •Билет 32 открытые параметры.
- •Билет 33. Нетипизированные параметры.
- •Билет 34. Необходимость и преимущества модульного программирования. Структура модуля в языке Pascal.
- •Билет 35. Процедурный тип. Передача процедур и функций в качестве параметра.
- •Билет 36. Рекурсия.
- •Билет 37. Рекурсия и итерация.
- •Билет 38. Линейный поиск.
- •Билет 39. Поиск делением пополам.
- •Билет 40. Сортировка.
- •Билет 41. Сортировка простыми включениями.
- •Билет 42. Сортировка бинарными включениями
- •Билет 43. Сортировка простым выбором.
- •Билет 44. Сортировка простым обменом(пузырек).
- •Билет 45. Шейкер-сортировка.
- •Билет 46. Сортировка шелла.
- •Билет 47. Сортировка с разделением(быстрая сортировка).
- •Билет 48. Ссылочные типы.
- •Билет 49. Динамические структуры данных.
- •Билет 50. Создание и уничтожение динамических переменных.
- •Билет 51. Связные списки.
- •Билет 52. Связные списки. Создание очередного элемента. Просмотр списка.
- •Билет 53. Добавление компонента в середину списка.
- •Билет 54. Исключение компонент из середины списка.
- •Билет 55. Рекурсивная обработка списка.
- •Билет 56. Двусвязные кольца.
- •Билет 57. Деревья. Двоичные деревья. Двоичные деревья поиска.
- •Билет 58. Добавление узла к двоичному дереву поиска.
- •Билет 59. Поиск в двоичном дереве.
- •Билет 60. Просмотр двоичного дерева.
- •Билет 61. Удаление из дерева.
- •Билет 62. Деревья общего вида.
Билет 22. Представления множеств.
Множества представляются в памяти машины массивом логических значений, i-ая компонента которого означает наличие или отсутствие i-ого значения базового типа множества
S = [1,4,8,9] в памяти FTFFTFFFTT
В памяти машины это массив байтов, где каждый определяет, принадлежит элемент множеству или нет.
Максимальное число элементов массива – 256, следовательно, множество может занимать не более чем 32 байта – 16 слов. Число байтов, занимаемых конкретным множеством вычисляется следующим образом:
ByteSize = (Max div 8) – (Min div 8) + 1; Min и Max – нижнее и верхнее значение множества
Номер байта
Byte Number = (E div 8) – (Min div 8) E – порядковый номер
Номер бита внутри этого байта BitNumber = E mod 8: Е – порядковый номер элемента.
Такое представление множеств позволяет осуществить операции объединения, пересечения и разности множеств с помощью элементарных логических операций. Для любого элемента i, принадлежащего базовому типу множеств X и Y имеют место следующие эквивалентности между операциями над множествами и логическими операциями.
i in (x + y) ≡ (i in x) v (i in y) i in (x * y) ≡ (i in x) ^ (i in y) i in (x - y) ≡ (i in x) ^ ¬ (i in y)
Такие логические операции имеются на всех вычислительных машинах. Более того они выполняются одновременно над всеми элементами (разрядами слова), поэтому, для более эффективной реализации основных операций над множествами желательно, чтобы множеству соответствовало небольшое фиксированное число слов, над которыми кроме основных логических операций можно было бы выполнить операции сдвига. В этом случае проверка принадлежности выполняется с помощью сдвига и проверки знакового разряда.
Пример. Найти простые числа, лежащие в диапазоне от 2 до n, где n>=2
Алгоритм "Решето Эратосфена"
1.Поместим все числа между 2 и n.
2.Выберем и "вынем" из решета наименьшее из чисел, оставшихся в решете.
3.Поместим это число среди простых.
4.Переберем и "вынем" из решета все числа, кратные данному.
5.Если решето не пустое, то повторим шаги со второго по пятый.
Program Eratosphen;
Const n = 255;
Var sieve, primes: set of 2 .. n;
Next: byte; i: word;
Begin sieve := [2 .. n]; primes:= [ ]; Next:= 2;
Repeat {поиск очередного простого числа}
While not (next in sieve) do inc(next); {поиск наименьшего в "sieve"}
Primes:= primes + [next]; {поместим число среди простых}J:= next;
While j<= n do begin
Sieve:= sieve – [ j ];{удаляет из решета числа, кратные очередному};
J:=j + next; end;
Until sieve = [ ];
For j:= 2 to n do
If j in primes then write( j );
End.
Билет 23 Файловые типы
Cлово file в Pascal употребляется для объектов, состоящих из последовательностей всех компонентов одного типа.
Последовательность устанавливает естественный порядок компонент и в любой момент непосредственного доступа только одна компонента. Другие компоненты становятся доступными по мере продвижения по файлу. Число компонент , называемое длиной файла, в определении файлового типа не фиксируется. Эта особенность явно отличает понятие "файл" от понятия "массив".
Файловый тип
Базовый тип файла может быть любым, кроме файлового, а так же, если базовый тип является структурированным, то его компоненты не могут иметь файловый тип (объектный тоже нельзя). Если определение базового типа опущено, то в этом случае определяется нетипизированный файл.
Понятие нетипизированный файл используется для организации доступа к любым дисковым файлам независимо от их структуры, при этом файл представляется как последовательность элементов производного типа (оговаривается только размерами элементов). Программист может записать в такой файл значение любой переменной, имеющей заданный размер. При чтении из нетипизированного файла допускается произвольная интерпретация.
B Pascal существует 3 класса файлов: -типизированные, -текстовые, - нетипизированные.
Структура текстовых файлов отличается от структуры обычных файлов (линейная последовательность элементов одного типа) тем, что содержимое текстового файла рассматривается как последовательность символьных строк произвольной длины, разделенных комбинацией "конец строки"((13-10) 2 кода: возврат CR#13 LF#10). В конце файла используется код конца файла - #26.
Type Sequence = file of char;
Var f1,f2 : Sequence;
Table : file of string [20];
DataBase : file of person;
InputData : file of real;
DataFile : file; {нетипизированный}
TextInf : text;