Написать программу, которая организует работу с типизированными файлами (2 файла типа реал). У меню должны быть опции: Создание типизированных файлов, Добавление данных в файлы, Просмотр данных из файлов, Выход из программы.
Я примерно набросал код. Посмотрите.
var f,f1: file of real;
k: integer;
procedure CreateFile(f,f1: file of real);
begin
assign(f,‘res.dat’);
assign(f1,‘res2.dat’);
rewrite(f);
rewrite(f1);
end;
procedure Addfile(f,f1:file of real);
x:real;
i:integer;
for…x:=random(101)…write(f,x)…
…
…
while true do begin
writeln(‘Menu’);
writeln('Создание файлов)
writeln(Добавление в файлы)
writeln(Просмотр)
writeln(Выход)
read(k);
case k of
1: Createfile(f,f1);
…
3… Printfile(f,f1);
5: Exit;
end;
end.
Правильно ли?
И как выполняется вызов процедуры?. Я пишу 1 и у меня вызывает процедуру Крит, и там выполняется тело процедуры и конечный результат идет к-> Createfile(f,f1); -< тому что в скобках тут?
При вводе “1” вызывается процедура “procedure Createfile(f, f1: file of real);” и внутрь неё для работы передаются два аргумента типа “file of real”. Они передаются на вход подпрограммы, а результата у процедуры нет, это просто набор команд для выполнения. Вот скажем, если бы у вас была функция, то было бы что-то типа вот этого:
function f(x: double): Double;
begin
Result := x*x + 5*x - 3;
end;
begin
var k: double := f(3.14);
end.
В данном случаем в переменной k хранилось бы значение 22,5596. Вызывается функция “f(x: double)”, на вход которой посылается значение “x” типа “double”, она “что-то” делает и обязана выдать результат типа “Double” через спец. переменную “Result” (А ещё можно через имя функции, например “f := xx + 5x - 3;”, - это тоже считается результирующей переменной). Следует учитывать, что внутри функции или процедуры можно вызывать саму же себя, это называется рекурсией, чаще происходит именно с функциями.
При вызове вы передаёте переменные не в файл, а в процедуру. А код проверять надо, сейчас протестируем) Рекурсия - это вызов подпрограммы из самой себя!
Например:
function factorial(N: integer): longint;
begin
if (N = 0)
then factorial := 1
else factorial := factorial(N - 1) * N;
end;