Упражнение №2 для работы с записями

Упражнение 2. Напишем программу, создающую каталог компьютерных программ с возможностью поиска программ по фамилии автора.

Для описания сведений о программах в разделе типов введем тип Prog_Type – запись следующей структуры:

Prog_Type = Record
Title : string[50];
Author : string[50];
Entry : integer;
Firma : String[40]
end;

где

Title – поле для записи названия программы (строка до 50 символов);

Author – поле для записи фамилии автора (строка до 50 символов);

Entry – поле для записи года разработки (целое число);

Firma – поле для записи фирмы-разработчика (строка до 40 символов).

В разделе описания переменных введем массив Prog_Katalog из десяти записей описанного выше типа. Для указания, на порядковый номер записи в массиве Prog_Katalog введем переменную Num_Array, принимающую значения от 1 до 10. Для задания шаблона поиска введем переменную строкового типа Author. Результат поиска будем записывать в переменную логического типа Yes_Prog.

Как и в предыдущей программе, используем для ввода и вывода данных специальные процедуры, поиск программы реализуем аналогично поиску учащегося, в качестве условия поиска задав условие Prog_Katalog[Num_Array].Author = Author. Для краткости при обращении к полям записи используем форму записи с предложением with.

Текст программы целиком будет выглядеть следующим образом:

program Kat_Prog; {Каталог компьютерных программ}
type Prog_Type = Record
Title : string[50];
Author : string[50];
Entry : integer;
Firma : String[40]
end;
var Prog_Katalog : Array[1 .. 10] of Prog_Type;
Num_Array : 1 .. 10;
Author : string[50];
Yes_Prog : boolean;
procedure Input_Data; {Ввод сведений о программе}
begin
Writeln (‘Введите данные о ‘,Num_Array,’-й программе :’);
with Prog_Katalog[Num_Array] do
begin
Write (‘Название программы? ‘);
Readln (Title);
Readln (Author);
Write (‘Год разработки? ‘);
Readln (Entry);
Write (‘Фирма ? ‘);
Readln (Firma);
Writeln
end;
end;
procedure Write_Data(Num:integer); {Вывод сведений о программе на экран}
begin
Writeln(‘Программа № ‘,Num);
with Prog_Kata1og[Num_Array] do
begin
Writeln(‘Название : ‘,Title);
Writeln(‘Фамилия автора : ‘,Author);
Writeln(‘Год разработки : ‘,Entry);
Writeln(‘Фирма : ‘,Firma);
End;
end;
begin
for Num_Array:=l to 3 do {Ввод данных о программах}
Input_Data;
Writeln;
{Поиск программ по фамилии автора}
Writeln(‘Поиск программы по фамилии автора’);
Writeln;
Write(‘Введите фамилию автора : ‘);
Readln(Author);
Yes_Prog:=False; {He найдено программ этого автора}
for Num_Array:=l to 10 do
if Prog_Katalog[Num_Array].Author = Author then
begin {Если программа найдена, то напечатать сведения о ней}
Write_Data(Num_Array); {Вызов процедуры вывода сведений о записи с номером Num_Array на экран (Num_Array — параметр-значение)}
Yes_Prog:=True; {Программа данного автора есть в каталоге}
end;
if not Yes_Prog then Write(‘HeT программ автора ‘.Author);
end.

Изучите текст программы Kat_Prog, затем запустите интегрированную среду программирования, введите текст программы и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. Проверьте работу программы, выполняя ее в пошаговом режиме с трассировкой процедур и наблюдая в окне просмотра за изменением значений переменных Num_Array, Author, Yes_Prog, а также элементов массива Prog_Katalog [Num_Array].

Добавить комментарий