- •Вопрос 1.
- •Вопрос 2.
- •Вопрос 3.
- •Вопрос 4.
- •Вопрос 5.
- •Вопрос 6.
- •Вопрос 7.
- •Вопрос 8.
- •Вопрос 9.
- •Вопрос 10.
- •Вопрос 11.Рекурсия: понятие, пример использования.
- •Вопрос 12. Строки в Delphi. Способы реализации строк. Основные процедуры и функции.
- •Вопрос 13.
- •Вопрос 14.
- •Вопрос 15.
- •Вопрос 16. Программирование с использованием динамической памяти. Структура оперативной памяти. Понятие указателя.
- •Вопрос 17. Указатели. Описание, допустимые операции
- •Вопрос 18. Статические и динамические переменные. Динамические структуры данных
- •19. Линейные списки. Основные операции над линейными списками.
- •21. Стек: понятие, описание в программе, основные операции
- •22. Очередь: понятие, описание в программе, основные операции
- •23. Списки: понятие, описание в программе, основные операции
- •24. Применение динамических структур данных. Проверка математического выражения на правильность расстановки скобок.
- •Вопрос 25.
- •Вопрос 26.
- •Вопрос 27.
- •Вопрос 28.
- •Вопрос 29.
- •Вопрос 30.
- •Вопрос 33.
- •Вопрос 35.
- •Вопрос 36. Операторы инкремента и декремента. Операторы присваивания
- •Вопрос 37. Функции scanf, printf
- •Вопрос 38. Способы задания разветвляющегося алгоритма в с
- •Вопрос 39. Циклические алгоритмы. Виды циклов в с
- •Вопрос 40. Табулирование функции
- •41. Алгоритм вывода всех простых чисел меньших 100 в с.
- •42. Алгоритм разложения числа на простые множители в с
Вопрос 13.
Записи в Delphi. Пример программы.
Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты записи могут быть различного типа. Элементы, образующие запись, называются полями. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются. Запись (или комбинированный тип данных) очень хорошо подходит для объединения разнородной информации о каком-либо объекте.
Структура объявления типа записи такова:
<имя типа> = RECORD <список полей> END
здесь <имя типа> - правильный идентификатор;
RECORD, END – зарезервированные слова (запись, конец);
<список полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.
После зарезервированного слова RECORD точка с запятой не ставится. Описания отдельных полей завершаются точкой с запятой. Количество полей в записи фиксировано и определяется описанием записи. Имена полей в пределах записи не должны повторяться. Если в программе объявлены несколько комбинированных типов, имена полей, принадлежащих разным типам, могут совпадать; конфликта имен при этом не будет, поскольку обращение к отдельным полям производится с указанием имени записи.
TDate = record
day: integer; month: integer; year: integer;
end;
После объявления типа записи можно объявить переменную-запись (или просто запись), например:
birthday : TDate;
Для того чтобы получить доступ к элементу (полю) переменной-записи (записи), нужно указать имя записи и имя поля, разделив их точкой.
Инструкция with позволяет использовать в тексте программы имена полей без указания имени переменной-записи. В общем виде инструкция with выглядит следующим образом:
with Имя do
begin
( инструкции программы } end;
где: имя — имя переменной-записи; with — зарезервированное слово языка Delphi, означающее, что далее, до слова end, при обращении к полям записи имя, имя записи можно не указывать.
Например, если в программе объявлена запись
student:record // информация о студенте
f_name: string[30]; // фамилия
l_name: string[20]; // имя
address: string[50]; // адрес
end;
и данные о студенте находятся в полях Edit1, Edit2 и Edit3 диалогового окна, то вместо инструкций
student.f_name := Editl.text;
student.l_name := Edit2.text;
student.address := Edit3.text;
можно записать:
with student do begin
f_name := Edit1.text; f_name := Edit2.text; address := Edit3.text;
end;
Вопрос 14.
Файлы в Delphi. Классификация файлов. Основные процедуры и функции.
Файл — это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности практически не ограничено. Файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла.
В общем виде объявление файла выглядит так: Имя:file of ТипЭлементов;
Примеры:
res: file of char; // файл символов koef: file of real; // файл вещественных чисел f: file of integer;
Файл, компонентами которого являются данные символьного типа, называется символьным, или текстовым. Описание текстового файла в общем виде выглядит так:
Имя:TextFile;
Файлы бывают трех типов:
-типизированные - это последовательность компонент любого заданного типа (кроме типа "файл").
-нетипизированные - это последовательность компонент произвольного типа.
-текстовые - это совокупность строк, разделенных метками конца строки.
Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:
file of тип - типизированный файл (указан тип компоненты); text - текстовый файл; file - нетипизированный файл.
Объявление файловой переменной задает только тип компонентов файла. Для того чтобы программа могла выводить данные в файл или считывать данные из файла, необходимо указать конкретный файл, т. е. связать файловую переменную с конкретным файлом (задать имя файла). Имя файла задается вызовом процедуры AssignFiie, связывающей файловую переменную с конкретным файлом. Описание процедуры AssignFiie выглядит следующим образом:
AssignFiie(var f, ИмяФайла: string)
Имя файла задается согласно принятым в Windows правилам. Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу
AssignFile(f, 'с:\result.txt');
Возможны следующие режимы открытия файла для записи в него данных:
-перезапись (запись нового файла поверх существующего или создание нового файла);
-добавление в существующий файл.
Для того чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру Rewrite(f), где f — файловая переменная типа TextFile.
Для того чтобы открыть файл в режиме добавления к уже существующим данным, находящимся в этом файле, нужно вызвать процедуру Append (f), где f — файловая переменная типа TextFile.
Непосредственно вывод в текстовый файл осуществляется при помощи инструкции write или writeln. В общем виде эти инструкции записываются следующим образом:
write (ФайловаяПеременная, СписокВывода) ;
writeln (ФайловаяПеременная, СписокВывода);
Различие между инструкциями write и writeln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ "новая строка".
Перед завершением работы программа должна закрыть все открытые файлы. Это делается вызовом процедуры closefile. Процедура closefile имеет один параметр — имя файловой переменной. Closefile(f).
Открытие файла для ввода (чтения) выполняется вызовом процедуры Reset, имеющей один параметр — файловую переменную. Перед вызовом процедуры Reset с помощью функции AssignFile файловая переменная должна быть связана с конкретным файлом.
Например, следующие инструкции открывают файл для ввода:
AssignFile(f, 'c:\data.txt'); Reset(f);
Чтение из файла выполняется при помощи инструкций read и readin, которые в общем виде записываются следующим образом:
read( ФайловаяПеременная, СписокПеременных);
readin( ФайловаяПеременная, СписокПеременных) ;
где:
ФайловаяПеременная — переменная типа TextFile;
СписокПеременных — имена переменных, разделенные запятыми.
Для определения конца файла можно воспользоваться функцией EOF (End of File — конец файла). У функции EOF один параметр — файловая переменная. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение. Если прочитанный элемент данных является последним, то значение EOF равно True.
while not EOF(f) do
Memo1.LoadFromFile(‘c:/1.txt’);
Memo1.SaveToFile(‘c:/1.txt’);