Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА и П.doc
Скачиваний:
23
Добавлен:
29.08.2019
Размер:
13.34 Mб
Скачать

Задание

Напишите программу, производящую сканирование диска, определение его размера, объема свободного пространства, вывод списка файлов по заданному шаблону, поиск указанного файла и его переименование.

Program Find_Ren_File;

uses Dos, Crt;

var

Fil: File of byte;

FileInfo: SearchRec;

H, M, S, Hund: word; {переменные ч, мин, с, 0.01 с для GetTime}

Ftime: longint; {упакованные время и дата в GetFTime}

T: DateTime; {распакованные дата и время в переменной типа DateTime}

Dir_s, N, E, Name, New_Name: string;

I, P: integer;

function LeadingZero (W: Word): string; {преобразовать время в строку

var

S: string;

begin

Str (W: 0, s);

If Length (S)=1 then

S:=’0’+S;

LeadingZero:=S;

end;

procedure Nam_Ext_File; {отделить имя и расширение файла}

begin

P:=Pos (‘.’, FileInfo, Name); {определить позицию символа «.» в имени файла}

if P>1 then

begin

N:=Copy (FileInfo. Name, 1, P-1);

E:=Copy (FileInfo. Name, P+1, 3);

end else {расширение отсутствует}

begin

N:=FileInfo. Name;

E:=’ ‘;

end;

end;

procedure Rename_File; {переименовать файл}

begin

write (‘Введите новое имя файла:’);

readln (New_Name);

rename (Fil, New_Name);

writeln (‘Файл’, Name, ‘переименован в’, New_Name, ‘, нажмите Enter…’);

readln;

end;

begin {основная программа}

ClrScr;

GetTime (H, M, S, Hund); {прочитать системное время}

Writeln (‘Текущее время: ‘, LeadingZero (H), ‘:’, LeadingZero (M), ‘:’, LeadingZero (S));

GetDir (0, Dir_s); {0=читать каталог текущего диска}

Writeln (DiskSize (0) div 1024, ‘Кбайт на диске’);

Writeln (DiscFree(0) div 1024, ‘Кбайт свободно’);

Writeln ;

I:=0; {пока не найдено ни одного файла}

FindFirst (‘*.pas’, Archive, FileInfo);

Writeln (‘Имя файла Размер (байт) Дата Время создания’);

Writeln;

while DosError=0 do {пока поиск файла завершается успешно}

begin

I:=I+1; {найден еще один файл}

Assign (Fil, FileInfo. Name);

Nam_Ext_File; {отделить имя файла от расширения}

Write (N, ‘ ‘: 9 – Length (N), E, ‘ ‘: 4 – Length (E));

Write (‘ ‘, FileInfo. Size: 8);

GetFTime (Fil, Ftime); {возвратить дату и время последнего изменения файла}

UnpackTime (FileInfo. Time, T); {преобразует 4-байтовые, упакованные в Longint время и дату в распакованную запись типа DateTime}

Write (‘ ‘, T. Day:2, ‘-‘, T. Month:2, ‘-‘, T. Year:4);

Writeln (‘ ‘, T. Hour:2, ‘:’, T. Min:2, ‘:’, T. Sec:2);

FindNext (FileInfo);

end;

writeln;

writeln (‘В текущем каталоге найдено’, I, ‘архивных файлов с расширением .PAS’);

repeat

write (‘Введите имя файла для переименования >’);

readln (Name);

{искать файл в каталогах, описанных в переменной окружения PATH}

if Fsearch (Name, GetEnv (‘PATH’))=’ ‘ then

writeln (‘на диске нет файла’, Name);

until Fsearch (Name, GetEnv (‘PATH’)) <<@062> ‘ ‘; {найден файл Name}

Assign (Fil, Name);

Rename_File; {вызов процедуры переименования файла}

end.

Задание для самостоятельного решения.

Запустите интегрированную среду программирования, введите текст программы Find_Ren_File и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. Проверьте работу программы в пошаговом режиме с трассировкой процедур, наблюдая за изменением значений переменных: H, M, Hund, Dir_s, FileInfo. Name, N, E, FileInfo. Size, T. Year, T. Month, T. Day, T. Hour, T. Min, T. Sec.

Лабораторная работа №24.

Тема: «Разработка программ с использованием объектно-ориентированных технологий».

Цель работы: получение навыков составления программ на языке Pascal с использованием объектно-ориентированных технологий.

ЗАДАНИЕ

Напишите программу, которая сначала формирует список, состоящий из объектов типа Tstudent и Tprof, затем, применяя метод print к элементам массива, выводит этот список на экран.

program polivir;

uses Crt;

const

LENLIST=10; { длина списка }

type

TPerson = object

FName: string[30]; { имя }

FAddress: string[40]; { адрес }

constructor init(Name,Address:string); { конструктор объекта }

destructor Done; virtual; { деструктор объекта }

procedure print; virtual;

end;

TStudent = object(TPerson)

FGroup: integer; { учебная группа }

constructor init(Name,Address:string;Group:integer);

destructor Done; virtual;

procedure print; virtual;

end;

TProf = object(TPerson)

FKafedra: string[30]; { кафедра }

constructor init(Name,Address,Kafedra:string);

destructor Done; virtual;

procedure print; virtual;

end;

PStudent=^TStudent;

PProf=^TProf;

constructor TPerson.init(Name,Address:string);

begin

FName:=Name;

FAddress:=Address;

end;

destructor TPerson.Done;

begin

end;

procedure TPerson.print;

begin

writeln(FName);

writeln(FAddress);

end;

constructor TStudent.init(Name,Address:string;Group:integer);

begin

TPerson.init(Name,Address);

FGroup:=Group;

end;

destructor TStudent.Done;

begin

inherited Done; { вызов деструктора родительского типа }

end;

procedure TStudent.print;

begin

TPerson.print;

writeln('úα. ',FGroup);

end;

constructor TProf.init(Name,Address,Kafedra:string);

begin

TPerson.init(Name,Address);

FKafedra:=Kafedra;

end;

destructor TProf.Done;

begin

inherited Done;

end;

procedure TProf.print;

begin

TPerson.print;

writeln('¬áΣ. ',FKafedra);

end;

var

list: array[1..LENLIST] of ^TPerson;

i:integer;

begin

{ инициализация списка }

for i:=1 to LENLIST do

list[1]:=NIL;

{ создать три объекта и поместить в список }

list[1]:=new(PStudent,init('Михаил Иванов','Лесной пр, д.29, корп.6ф, комн.211',3813));

list[2]:=new(PStudent,init('Цветков Станислав','пр. К.Маркса, д.32, кв.3',3813));

list[3]:=new(PProf,init('Некрасов Степан Петрович','Институтский пр., д.7, кв.13','Управление проектами'));

{ вывести объектыэлементы списка }

for i:=1 to LENLIST do

if list[i] <> NIL

then list[i]^.print;

{ уничтожить объекты }

for i:=1 to LENLIST do

if list[i] <> NIL

then

begin

Dispose(list[i],Done);

list[i]:=NIL;

end;

Readln;

end.