- •Строки. Процедуры и функции для работы со строками.
- •Множества. Операции над множествами.
- •Построение множества
- •Действия над множествами
- •Например.
- •Подпрограммы для работы со всеми типами файлов
- •Текстовые файлы
- •Бестиповые файлы
- •Типизированные файлы
- •Прямой доступ
- •Оператор with.
- •Вариантная запись.
Оператор with.
Этот оператор используется для удобства работы с переменными типа запись.
Общий вид:
with переменная do оператор;
C использованием данного оператора к полям записи можно обращаться без указания префикса вместе с названием поля:
var pr1:person;
begin
with pr1 do
begin
FIO:=’Иванов’;
birth:=’1 января 1980 года’;
address.city:=’Шадринск’;
with address do
begin
street:=’Свердлова’;
house:=1;
end;
end;
end.
Вариантная запись.
Иногда содержимое отдельной записи зависит от значения одного из ее полей. В языке FreePascal допускается описание записи, состоящей из общей и вариантной частей.
Вариантная часть задается с помощью конструкции:
case имя поля of
Для примера добавим в созданную нами запись Person информацию о супруге, если человек состоит в браке.
type
family = (married, single);
person = record
FIO, birth : string ;
address : adr;
case yes: family of
married: (FIO1: string);
single: ()
end;
Важно:
Любая запись (record) может иметь только одну вариантную часть (case).
Вариантная часть должна помещаться после постоянной части.
Среди идентификаторов полей не должно быть одинаковых.
Задача.
Создать каталог книг (название, автор, год издания). Вывести на экран названия книг по заданному году.
type
book=record
nazv,author:string;
year:integer;
end;
var b:array[1..100] of book;
i,n,g:integer;
begin
writeln(‘Введите количество книг’);
readln(n);
for i:=1 to n do
begin
with b[i] do
begin
writeln('Название ',i,' книги');
readln(nazv);
writeln('Автор ',i,' книги');
readln(author);
writeln('Год издания ',i,' книги');
readln(year);
end;
end;
writeln('Введите год издания');
readln(g);
for i:=1 to n do
if b[i].year=g then writeln(b[i].nazv);
readln;
end.
Задания для самостоятельной работы.
1. Ввести информацию об N людях (ФИО, Пол, Дата рождения, Место рождения). Определить:
1.1 Кто из них является самым молодым.
1.2 Посчитать количество мужчин и количество женщин.
1.3 Выяснить есть ли люди с одинаковым местом рождения. Если есть, то вывести их количество и место рождения.
2. Написать программу "Телефонный справочник". По введенной фамилии программа должна выдавать соответствующий номер телефона.
3. Определить победителя соревнований по силовому троеборью. В соревнованиях участвуют N участников. В протоколе указываются: фамилия, имя, отчество, вес спортсмена, результат по упражнениям № 1,2,3. Победителем считается спортсмен, набравший большую сумму баллов по результатам трех упражнений. При равенстве результатов побеждает спортсмен, чей вес оказался меньшим.
4. Определить количество дней в месяце. Для решения использовать запись, содержащую 2 поля: год, месяц. (Решить проблему високосного года).
