- •Пояснительная записка
- •Программирование на алгоритмическом языке pascal
- •«Ознакомление с работой в интегрированной среде Borland Pascal»
- •Задание 1
- •Ход работы:
- •Загрузите систему Borland Pascal.
- •После входа в систему появляется рабочий экран (рис. 2).
- •Изучите пункты главного меню.
- •Задание 2
- •Методические указания к лабораторным занятиям для учащихся.
- •Лабораторная работа №1
- •Вопросы для самоподготовки:
- •Краткие теоретические сведения
- •Задание 1
- •Ход выполнения работы.
- •Задание 2
- •Лабораторная работа №2
- •Краткие теоретические сведения
- •Правила работы с условным оператором.
- •Вопросы для самоподготовки:
- •Задание 1
- •Задание 2.
- •Задание 3
- •Правила организации цикла с параметром.
- •Вопросы для самоподготовки:
- •Задание 1
- •Задание 2
- •Решение:
- •Задачи для самостоятельного решения.
- •Лабораторная работа №4. Тема: «Разработка, отладка и испытание простых циклических алгоритмов и программ с неизвестным числом повторений».
- •Краткие теоретические сведения
- •Вопросы для самоподготовки:
- •Задание 1
- •Решение:
- •Задание 2
- •Домашнее задание
- •Вопросы для самоподготовки:
- •Определим необходимые формулы:
- •Составим графическую схему алгоритма.
- •Составим таблицу соответствия переменных.
- •В соответствии с пунктами 2 и 3 составьте программу.
- •Задание 2
- •Задание 3
- •Решение:
- •Составим графическую схему алгоритма:
- •Составим таблицу соответствия переменных
- •Составим программу на языке Pascal.
- •Задание 4
- •Лабораторная работа №6. Тема: «Разработка, отладка и испытание циклических алгоритмов и программ с известным числом повторений с внутренними ветвлениями».
- •Задание
- •Задание 2
- •Решение:
- •Задание 3
- •Решение:
- •Задание 4 (задачи повышенной сложности)
- •Решение:
- •Задания для самостоятельного решения. Напишите программы с использованием процедур.
- •Дана последовательность слов. Напечатайте все слова, предварительно преобразовав каждое из них по следующему правилу:
- •Задание 5
- •Решение:
- •Задание 8 (повышенной сложности)
- •Решение:
- •Задание для самостоятельного решения:
- •(Повышенной сложности)
- •Лабораторная работа №8. Тема: «Разработка алгоритмов и программ методом пошаговой детализации. Обработка двумерных массивов. Организация ввода-вывода с помощью текстовых файлов».
- •Вопросы для самоподготовки:
- •Краткие теоретические сведения
- •Задание 1
- •Задание 2
- •Решение:
- •Составим графическую схему алгоритма.
- •Составляем таблицу соответствия переменных.
- •Составляем программу на языке программирования Pascal.
- •Задание 3
- •Задание 4
- •Лабораторная работа №9. Тема: «Разработка алгоритмов и программ решения различных задач с использованием библиотечных модулей пользователя».
- •Краткие теоретические сведения
- •Задание
- •Задача для самостоятельного решения.
- •Лабораторная работа №10. Тема: «Разработка алгоритмов и программ обработки строк. Использование множеств для решения задач».
- •Вопросы для самоподготовки:
- •Задание 6
- •Решение:
- •Задачи для самостоятельного решения:
- •Лабораторная работа №11. Тема: «Разработка алгоритмов и программ с использованием методов внутренней сортировки».
- •Задание
- •Решение:
- •Для каждой команды в одной строке введите через пробел
- •Задание для самостоятельного решения:
- •Лабораторная работа №12. Тема: «Разработка рекурсивных алгоритмов и программ».
- •Краткие теоретические сведения
- •Задание.
- •Лабораторная работа №13. Тема: «Разработка алгоритмов и программ с использованием процедур и функций модулей crt и dos».
- •Краткие теоретические сведения
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание.
- •Краткие теоретические сведения
- •Решение:
- •Задание 2
- •Андреев
- •Задание для самостоятельного решения.
- •Лабораторная работа №16. Тема: «Разработка алгоритмов и программ с использованием динамических структур данных».
- •Краткие теоретические сведения
- •Задание
- •Задание для самостоятельного решения
- •Задача о «Ханойских башнях».
- •Решение:
- •Задания для самостоятельного решения.
- •Задание для самостоятельного решения:
- •Задания для самостоятельного решения:
- •Лабораторная работа №22. Тема: «Разработка программ обработки созданных файлов».
- •Постановка задачи
- •Содержание отчета
- •Варианты задания:
- •Лабораторная работа №23. Тема: «Разработка программ с использованием прерываний bios и dos, процедурных типов».
- •Краткие теоретические сведения
- •Константы
- •Задание
- •Задание для самостоятельного решения.
- •Лабораторная работа №25. Тема: «Разработка простейших программ с использованием компонентов страницы Standart».
- •Вопросы для самоподготовки:
- •Задание 1
- •Лабораторная работа №26. Тема: «Разработка программ обработки массивов с использованием компонентов страницы Standart».
- •Задание
- •Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}
- •Лабораторная работа №32. Тема: «Разработка программ создания и использования мультимедийных возможностей».
- •Задание
- •Лабораторная работа №34. Тема: «Создание и использование справочной системы».
- •Краткие теоретические сведения
- •Задание
- •Ход работы:
- •Лабораторная работа №35. Тема: «Создание установочного диска».
- •Задание
Задание
Напишите программу, производящую сканирование диска, определение его размера, объема свободного пространства, вывод списка файлов по заданному шаблону, поиск указанного файла и его переименование.
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.
