Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gosy_shpory_FULL_provereno.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
24.96 Mб
Скачать
  1. Описание типизованных файлов в программе. Стандартные процедуры и функции для работы с типизованными файлами. Пример программы.

Ключевое слово File используется для определения переменной как двоичный файл, обычно используемый для записи и чтения из запоминающего устройства. Возможно определить файл с базированным типом данных. Например, простой тип как символ (char) или сложного типа такой как Запись (Record). Для этого тип указывается в виде file of <имя типа>

Для получения дескриптора файла должен использоваться метод AssignFile, которому передается путь (абсолютный или относительный) к файлу и ссылка на переменную, в которую будет записан дескриптор. Для получения доступа к файлу используются процедуры Reset, Append или ReWrite, чтобы открыть файл для чтения и/или записи. Первая из них открывает файл для чтения, вторая для записи, не удаляя при этом существующего содержимого, третья — создает новый файл с тем же именем. Также возможно открытие файла функцией FileOpen, принимающей режим работы с файлом, как второй параметр. Функция FileSize определяет размер файла, FilePos – позицию в нем. Для перемещения по файлу используется процедура Seek, принимающая ссылку на файл и величину смещения от текущей позиции. Процедуры Read и Write используются для чтения и записи в файл. Первым параметром в них передается переменная, содержащая дескриптор файла, а затем переменная для записи в нее прочитанных данных, или для чтения из нее записываемых. Процедура Eof определяет до конца ли прочитан файл. Во всех случаях, тип должен иметь установленный размер, и обращения к файлу, должно быть в единицах этого типа. Наконец для завершения работы с файлом применяется процедура CloseFile, освобождающая дескриптор и позволяющая продолжить работу с файлом из других программ.

var

myWord, myWord1, myWord2 : Word;

myFile : File of Word;

begin

// Попытка открыть файл Test.bin для записи

AssignFile(myFile, 'Test.bin');

ReWrite(myFile);

// Запись нескольких строк данных Word в файл

myWord1 := 234;

myWord2 := 567;

Write(myFile, myWord1, myWord2);

// Закрытие файла

CloseFile(myFile);

// Повторное открытие файла в режиме только для чтения

Reset(myFile);

// Показ содержимого файла

while not Eof(myFile) do

begin

Read(myFile, myWord);

ShowMessage(IntToStr(myWord));

end;

// Закрытие файла в последний раз

CloseFile(myFile);

End.

  1. Принципы объектно-ориентированного программирования. Описание класса и объекта. Основные элементы класса: поля, методы, свойства, события. Динамика существования объекта.

Основное отличие Объектного Паскаля от Трубо Паскаля — поддержка ООП.

Объектно-ориентированный подход предполагают соблюдение трех принципов.

Инкапсуляция — предполагает сокрытие внутренней реализации логики классов от их внешнего пользователя. Пользователю доступен лишь внешний интерфейс классов состоящий из публичных методов и свойств.

Наследование предполагает создание иерархии классов таким образом, что классы расположенные ниже по иерархии дополняют логику выше расположенных классов. Отношения между классами в иерархии строятся по принципу «Общее — частное». Частные классы сохраняют все признаки общих, при этом по возможности дополняя их частными признаками. В Объектном Паскале класс описывается следующим образом. В разделе type модуля создается описание класса вида <имя класса> = class(<Имя класса-предка>)

<члены класса>

end;

Члены класса сгруппированы по областям видимости следующим образом

< private | protected | public | published >

<описание членов класса>;

Методы и поля класса описываются обычным образом. Описание свойства выглядит так

property <имя>:<Тип> [read <геттер или поле>] [write <сеттер или поле>];

Реализации методов класса, чьи заголовки описываются в разделе type создаются в разделе

implementation. При указании метода используется его квалифицированное имя

начинающееся с описывающего его класса.

Пример класса, описывающего массив переменного размера.

TDynamicArray = class

private

FArray: array of Iinteger;

Function GetSize: Integer;

Procedure SetSize(value: Integer);

Function GetItem(index: Integer): Integer;

Procedure SetItem(index, value: Integer);

public

property Length: Integer read GetSize write SetSize;

property Items[index: Integer] read GetItem write SetItem;

constructor Create(size: Integer);

destructor Destroy();

end;

//////////////////////////////////////////////////////

constructor TDynamicArray.Create(size: Integer);

begin

SetLength(FArray, size);

end;

constructor TDynamicArray.Destroy();

begin

SetLength(FArray, 0);

end;

Function TDynamicArray.GetSize: Integer;

begin

Result := Length(FArray);

end;

Procedure TDynamicArray.SetSize(value: Integer);

begin

SetLength(FArray, 0);

end;

Function TDynamicArray.GetItem(index: Integer): Integer;

begin

Result := FArray[index];

end;

Procedure TDynamicArray.SetItem(index, value: Integer);

begin

Farray[index]:=value;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]