
- •Часть II
- •Содержание
- •Общие указания к выполнению лабораторных работ
- •Лабораторная работа № 1 «Строки, записи, множества»
- •Общие сведения.
- •Задания
- •Контрольные вопросы
- •Лабораторная работа № 2 «Процедуры и функции»
- •Общие сведения
- •Задания
- •Контрольные вопросы
- •Лабораторная работа № 3 «Файлы»
- •Общие сведения
- •Задания
- •Контрольные вопросы
- •Лабораторная работа № 4 «Динамические структуры данных»
- •Общие сведения
- •Задания
- •Контрольные вопросы
- •Список рекомендуемой литературы
- •Приложение
- •3.3. Спецификация подпрограмм:
- •Вывод элементов массива в начальном расположении
- •Отсутствуют
- •Процедура
- •Текст программы:
- •Контрольный пример:
Задания
Выполнить задания лабораторной работы «Строки, записи, множества», оформив в виде функций законченные последовательности действий. Все необходимые данные для подпрограмм должны передаваться им в качестве параметров. Использование глобальных переменных в подпрограммах не допускается.
Контрольные вопросы
Для чего нужны в программе процедуры и функции?
В чем отличие между процедурой и функцией?
Чем отличаются формальные и фактические параметры?
Чем отличаются параметры-значения и параметры-переменные?
Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?
Почему при обращении к процедуре, аргумент, передаваемый параметру-переменной, может быть только переменной, а не константой или выражением?
Лабораторная работа № 3 «Файлы»
Цель работы: познакомить с понятием файлового типа данных (типизированные, текстовые и нетипизированные файлы); выработать навыки работы с файловым типом данных в языке программирования Pascal. научиться считывать информацию из файлов, записывать информацию в файл; научиться решать задачи с использованием файлов.
Общие сведения
Файл представляет собой структурированный тип данных, содержащий последовательность компонентов одного типа и одной длины. Число элементов в файле (длина файла) не фиксировано. Это является основным отличием файла от массива.
Файл можно представить как ленту, у которой есть начало, а конец не фиксирован. Элементы файла записываются на эту ленту последовательно, друг за другом с помощью некоторого устройства - указателя файла. При чтении или записи этот указатель перемещается к следующему элементу и делает его доступным для обработки. В каждый момент доступен для чтения или записи только тот элемент файла, на который установлен указатель.
Перед выполнением данной работы необходимо изучить виды файлов, процедуры и функции работы с типизированными, текстовыми и нетипизированными файлами, правила работы с файлами [1–7].
Пример1. Переписать из текстового файла f в файл g в обратном порядке строки в перевернутом виде.
Этапы решения задачи:
Будем считывать файл f построчно и перевертывая строки будем записывать их в массив, далее создадим файл и заполним его строками из массива меняя порядок строк на обратный.
Программа
program example1;
var
f,g:TextFile;
m:array[1..100] of string;
k,i:integer;
begin
AssignFile(f,'input.dat');
reset(f);
k:=0;
while not eof(f) do
begin
readln(f,st);
k:=k+1;
st1:='';
for i:= 1 to length(st) do st1:= st[i]+st1;
m[k]:=st1;
end;
AssignFile(g,'output.dat');
rewrite(g);
for i:= 1 to k do writeln(g,m[i]);
end.
Пример 2. Дан файл, содержащий целые числа. Определить сколько в нем четных чисел.
Этапы решения задачи
Будем считывать из файла по одному элементу и проверять, является ли он четным. Если да, то количество четных элементов увеличивается на единицу.
Программа. При запуске программы на экране отображается меню из 4 пунктов: первый пункт вызывает процедуру создания нового файла и его заполнения – Create_File; второй пункт вызывает процедуру вывода на экран содержимого существующего файла – Print_File; третий пункт обращается к функции Count_Chet, которая возвращает количество четных элементов в заданном файле и четвертый пункт осуществляет выход из программы.
Program Example2;
type
TIntFile = file of integer;
const FileName = '1.dat';
procedure Create_File;
//Данная процедура создает новый файл и заполняет его
var N,i, element:integer;
f: TIntFile;
begin
AssignFile(f, FileName); //Связывание файловой переменной с файлом, имя которого записано в FileName
Rewrite(f); //Создание файла с именем FileName
//Заполнение файла
write('Введите кол-во элементов в файле: ');readln(N);
writeln('Введите ', N,’ чисел: ');
for i:=1 to N do
begin
read(element);
Write(f, element);//запись элемента в файл
end;
CloseFile(f); //закрытие файла
end;{of procedure Create_File}
function Count_Chet:integer;
// Функция определяет количество четных элементов в файле
var element:integer;
f: TIntFile;
begin
AssignFile(f, FileName);
Reset(f); //Открытие файла для чтения и записи; окно файла указывает на его первый элемент
Result := 0;
while not Eof(f) do //Пока не конец файла
begin
Read(f,element);//Считываем элемент из файла
//Проверка четности элемента и определение количества четных
if not odd(element) then result:=result+1;
end;
CloseFile(f);
end;{of function Count_Chet}
procedure Print_File;
//Данная процедура распечатывает существующий файл
var element:integer;
f: TIntFile;
begin
AssignFile(f, FileName);
Reset(f);
writeln;write('Ваш файл -> ');
while not Eof(f) do
begin
Read(f,element);
Write(element,' ');
end;
CloseFile(f);
writeln; writeln;
end; {of Print_File}
var c:byte; //Переменная определяет номер выбранного пункта меню
begin {of Main}
Writeln('Данная программа определяет количество четных элементов в файле');
writeln;writeln;
writeln('1. Создать новый файл. ');
writeln('2. Распечатать существующий файл.');
writeln('3. Найти количество четных в файле. ');
writeln('4. Выход. ');
writeln;
//Бесконечный цикл. Выход из него только при выборе пункта 4
while true do
begin
write('Выберете пункт меню: ');
Readln(c);
case c of
1:Create_File;
2:Print_File;
3:Writeln('В файле кол-во четных элем = ',Count_Chet);
4:break;
else writeln('Введите число от 1 до 4!');
end;
end;
end.