Вложенность отмечена отступами.
Начало
F(1)
Вывод 1
1 < 4 Истина
F(1+1=2)
Вывод 2
2 < 4 Истина
F(2+1=3)
Вывод 3
3 < 4 Истина
F(3+1=4)
Вывод 4
4 < 4 Ложь
<u>Конец
</u>
F(3+3=6)
Вывод 6
6 < 4 Ложь
<u>Конец</u>
F(2+3=5)
Вывод 5
5 < 4 Ложь
<u>Конец
</u>
F(1+3=4)
Вывод 4
4 < 4 Ложь
<u>Конец
</u>
<u>Конец</u>.
1+2+3+4+6+5+4 = 25
<u>1. Программа, которая создает файл</u>
<em>// PascalABC.NET 3.3, сборка 1547 от 07.10.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
type
tДатаРождения=record
день, месяц, год:integer
end;
tАдрес=record
город:string[16];
улица:string[16];
дом:string[16]
end;
tСтудент=record
ФИО:string[24];
Датарождения:tДатаРождения;
Пол:char; // М/Ж
Адрес:tАдрес
end;
begin
Writeln('Вводите данные анкеты, значение * в ФИО - конец ввода');
var Stud:tСтудент;
var f:file of tСтудент;
Rewrite(f,'Student.bin');
while true do begin
Stud.ФИО:=ReadlnString('ФИО студента:');
if Stud.ФИО='*' then break;
Writeln('День, месяц и год рождения: ');
Readln(Stud.Датарождения.день, Stud.Датарождения.месяц,
Stud.Датарождения.год);
Stud.Пол:=ReadlnChar('Пол (М/Ж):').ToUpper;
Stud.Адрес.город:=ReadlnString('Город:');
Stud.Адрес.улица:=ReadlnString('Улица:');
Stud.Адрес.дом:=ReadlnString('Дом:');
Write(f,Stud);
end;
f.Close
end.
<u>2. Программа, которая выводит существующий файл</u>
type
tДатаРождения=record
день, месяц, год:integer
end;
tАдрес=record
город:string[16];
улица:string[16];
дом:string[16]
end;
tСтудент=record
ФИО:string[24];
Датарождения:tДатаРождения;
Пол:char; // М/Ж
Адрес:tАдрес
end;
begin
var Stud:tСтудент;
var f:file of tСтудент;
Reset(f,'Student.bin');
while not Eof(f) do begin
Read(f,Stud);
Writeln(Stud.ФИО,' (',Stud.Пол,'), ',Stud.Датарождения.день,'.',
Stud.Датарождения.месяц,'.',Stud.Датарождения.год,', ',
Stud.Адрес.город,', ',Stud.Адрес.улица,', ',Stud.Адрес.дом);
end;
f.Close
end.
<u>3. Программа, которая делает все это вместе</u>
type
tДатаРождения=record
день, месяц, год:integer
end;
tАдрес=record
город:string[16];
улица:string[16];
дом:string[16]
end;
tСтудент=record
ФИО:string[24];
Датарождения:tДатаРождения;
Пол:char; // М/Ж
Адрес:tАдрес
end;
begin
Writeln('Вводите данные анкеты, значение * в ФИО - конец ввода');
var Stud:tСтудент;
var f:file of tСтудент;
Rewrite(f,'Student.bin');
while true do begin
Stud.ФИО:=ReadlnString('ФИО студента:');
if Stud.ФИО='*' then break;
Writeln('День, месяц и год рождения: ');
Readln(Stud.Датарождения.день, Stud.Датарождения.месяц,
Stud.Датарождения.год);
Stud.Пол:=ReadlnChar('Пол (М/Ж):').ToUpper;
Stud.Адрес.город:=ReadlnString('Город:');
Stud.Адрес.улица:=ReadlnString('Улица:');
Stud.Адрес.дом:=ReadlnString('Дом:');
Write(f,Stud);
end;
Seek(f,0);
while not Eof(f) do begin
Read(f,Stud);
Writeln(Stud.ФИО,' (',Stud.Пол,'), ',Stud.Датарождения.день,'.',
Stud.Датарождения.месяц,'.',Stud.Датарождения.год,', ',
Stud.Адрес.город,', ',Stud.Адрес.улица,', ',Stud.Адрес.дом);
end;
f.Close
end.
<u>Пример работы программы 3)</u>
Вводите данные анкеты, значение * в ФИО - конец ввода
ФИО студента: Иванов И.И.
День, месяц и год рождения:
24 6 1998
Пол (М/Ж): м
Город: Москва
Улица: пр.Ленина
Дом: 152, кор.3
ФИО студента: Петрова Т.Н.
День, месяц и год рождения:
13 11 1999
Пол (М/Ж): ж
Город: Тверь
Улица: ул.Сиреневая
Дом: 18
ФИО студента: *
Иванов И.И. (М), 24.6.1998, Москва, пр.Ленина, 152, кор.3
Петрова Т.Н. (Ж), 13.11.1999, Тверь, ул.Сиреневая, 18