Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
часть2.doc
Скачиваний:
5
Добавлен:
26.11.2019
Размер:
382.98 Кб
Скачать

Задания

Выполнить задания лабораторной работы «Строки, записи, множества», оформив в виде функций законченные последовательности действий. Все необходимые данные для подпрограмм должны передаваться им в качестве параметров. Использование глобальных переменных в подпрограммах не допускается.

Контрольные вопросы

  1. Для чего нужны в программе процедуры и функции?

  2. В чем отличие между процедурой и функцией?

  3. Чем отличаются формальные и фактические параметры?

  4. Чем отличаются параметры-значения и параметры-переменные?

  5. Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?

  6. Почему при обращении к процедуре, аргумент, передаваемый параметру-переменной, может быть только переменной, а не константой или выражением?

Лабораторная работа № 3 «Файлы»

Цель работы: познакомить с понятием файлового типа данных (типизированные, текстовые и нетипизированные файлы); выработать навыки работы с файловым типом данных в языке программирования Pascal. научиться считывать информацию из файлов, записывать информацию в файл; научиться решать задачи с использованием файлов.

Общие сведения

Файл представляет собой структурированный тип данных, содержащий последовательность компонентов одного типа и одной длины. Число элементов в файле (длина файла) не фиксировано. Это является основным отличием файла от массива.

Файл можно представить как ленту, у которой есть начало, а конец не фиксирован. Элементы файла записываются на эту ленту последовательно, друг за другом с помощью некоторого устройства - указателя файла. При чтении или записи этот указатель перемещается к следующему элементу и делает его доступным для обработки. В каждый момент доступен для чтения или записи только тот элемент файла, на который установлен указатель.

Перед выполнением данной работы необходимо изучить виды файлов, процедуры и функции работы с типизированными, текстовыми и нетипизированными файлами, правила работы с файлами [1–7].

Пример1. Переписать из текстового файла f в файл g в обратном порядке строки в перевернутом виде.

Этапы решения задачи:

  1. Будем считывать файл f построчно и перевертывая строки будем записывать их в массив, далее создадим файл и заполним его строками из массива меняя порядок строк на обратный.

  2. Программа

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. Дан файл, содержащий целые числа. Определить сколько в нем четных чисел.

Этапы решения задачи

  1. Будем считывать из файла по одному элементу и проверять, является ли он четным. Если да, то количество четных элементов увеличивается на единицу.

  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.