- •Билет 1
- •Билет 2
- •Билет 3
- •Билет 4
- •2) В отличие от оператора if, оператор case позволяет выбрать и выполнить один оператор не из двух, а из нескольких операторов. В общем случае оператор case может быть записан следующим образом:
- •Билет 5
- •Билет 6
- •Билет 7
- •Билет 8
- •Билет 9
- •Билет 10
- •Билет 11
- •Билет 12
- •Билет 13
- •Билет 14
- •Билет 15
- •Билет 16
- •Билет 17
- •Билет 18
- •Билет 19
- •2) Выражения различают по типу их результата: целые, вещественные, символьные, логические, строковые и т.Д. Выражения, имеющие результат целого и вещественного типа, называются арифметическими.
- •Билет 20
- •Билет 21
- •Билет 22
- •2)Оператор repeat имеет следующий формат:
- •Билет 23
- •2) В Pascal имеются две основных процедуры ввода read и readln, которые используются для чтения данных, вводимых с клавиатуры. Формат этих процедур таков:
- •Билет 24
- •Билет 25
- •Билет 26
Билет 15
Типизированные файлы и работа с ними.
2. Оператор присваивания.
1) Типизированный файл содержит компоненты одного типа. Тип компонентов может быть любым, кроме файлового. Создать и просмотреть такой файл при помощи текстового редактора как текстовый файл нельзя. Поэтому обработка таких файлов должна осуществляться программным путем.
Длина любого компонента типизированного файла строго постоянна, что даст возможность организовать прямой доступ к каждому из них (т. е. доступ к компоненту по его порядковому номеру).
Обычно доступ к файлам организуется последовательно, то есть, когда элемент считываете с помощью стандартной процедуры read или записывается с помощью стандартной процедуры write, указатель файла перемещается к следующему по порядку элементу файла. Однако к типизованным файлам можно организовать прямой доступ с помощью стандартной процедуры Seek, которая перемещает указатель файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла можно использовать стандартные функции FilеPos и FileSize.
Для работы с типизированным файлом можно использовать стандартные функции и процедуры, описанные ранее. Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными между переменными и дисковым файлом.
2) Оператор присваивания предназначен для замены текущего значения переменной новым, задаваемым значением. В общем виде оператор записывается: < переменная > := <выражение >; Переменная и выражение должны быть идентичного или совместимого для присваивания типа. Например, переменной вещественного типа можно присвоить значение выражения вещественного или целого типа. Переменной же целого типа нельзя присвоить значение выражения вещественного типа.
Билет 16
Нетипизированные (двоичные) файлы и работа с ними.
Позиционные системы счисления. Двоичная, восьмеричная и шестнадцатеричная системы. Связь между ними.
1)Нетипизированные файлы объявляются как файловые переменные типа File и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью.
При инициации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Например, так:
var
F: File;
begin
AssignFile(F,'myfile.dat');
Reset (f,512);
end.
Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам Reset или Rewrite, в качестве которого может использоваться выражение типа Longlnt. Если длина записи не указана, она принимается равной 128 байтам.
Object Pascal не накладывает каких-либо ограничений на длину записи нетипизированного файла за исключением требования положительности и ограничения максимальной длины 2 Гбайт (для Delphi I длина записи ограничивается 65535). Для обеспечения максимальной скорости обмена данными рекомендуется задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт). Однако операции обмена данными с дисковыми устройствами в среде Windows кэшируются, т. е. осуществляются через промежуточный буфер памяти, поэтому обычно задают RecSize = 1, что позволяет обмениваться с файлом блоками любой длины, начиная с одного байта.
При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite:
Procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
Procedure BlockWrite(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
Здесь Buf - буфер: имя переменной, которая будет участвовать в обмене данными с дисками; count - количество записей, которые должны быть прочитаны или записаны за одно обращение к диску; AmtTransferred - необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей. За одно обращение к процедурам может быть передано до count*RecSize байт, где RecSize - длина записи нетипизированного файла. Передача идет, начиная с первого байта переменной Buf. Программист должен позаботиться о том, чтобы длина внутреннего представления переменной Buf была достаточной для размещения всех count*RecSize байт при чтении информации с диска. Если при чтении указана переменная недостаточной длины или если в процессе записи на диск не окажется нужного свободного пространства, возникнет ошибка ввода-вывода, которую можно заблокировать, указав необязательный параметр AmtTransferred. После завершения процедуры указатель смещается на count записей. Процедурами seek, FilePos и Filesize можно обеспечить доступ к любой записи нетипизированного файла.
2)Система счисления – это совокупность приемов и правил для обозначения и наименования чисел. Системы счисления делятся на позиционные и непозиционные системы. Непозиционная система счисления – в ней значение каждого символа – не зависит от его положения в коде числа.
Позиционная система счисления – система, в которой значение символа зависит от его позиции в числе. Примером является десятичная система счисления, знакомая нам с детства, а также двоичная, восьмеричная и шестнадцатеричная системы счисления. Позиционная система счисления характеризуется основанием – количеством знаков, или символов, используемых для изображения числа в разрядах данной системы счисления. Для двоичной и восьмеричной системы основаниями являются соответственно две (0,1) и восемь (0,1,2,3,4,5,6,7) цифр. В шестнадцатеричной системе недостаточно десяти цифр для изображения числа, поэтому для обозначения чисел используются как цифры, так и символы A, B, C, D, E, F. Связь между этими системами. Так как основания данных систем счисления кратны двум, то можно легко перейти от одной системы к другой. Чтобы перейти из восьмеричной системы в двоичную, нужно каждую цифру числа заменить на трехзначное число, представленное в двоичной системе счисления (так называемую триаду). То есть: чтобы перевести число из восьмеричной системы в двоичную нужно заменить каждую восьмеричную цифру соответствующей ей триадой. Для перевода числа из двоичной системы в восьмеричную нужно разбить двоичное число на триады слева и справа от запятой и каждую триаду заменить соответствующей восьмеричной цифрой. Аналогично, чтобы перевести число из шестнадцатеричной системы в двоичную надо заменить каждую шестнадцатеричную цифру на четырехзначное число в двоичной системе счисления. Чтобы перевести число из двоичной системы в шестнадцатеричную нужно разбить двоичное число на группы по четыре символа справа и слева от запятой, затем заменить эти группы соответствующими шестнадцатеричными символами. Чтобы перевести число из восьмеричной в шестнадцатеричную или наоборот, нужно сначала перевести число в двоичную систему, а затем из двоичной в требуемую.