МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Звіт
про виконання лабораторної роботи №4
РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ.
СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ
Мета роботи - вивчити види файлів, стандартні процедури і функції мови Турбо-Паскаль для роботи з файлами, навчитися складати та відлагоджувати програми для роботи з тестовими файлами. Навчитись використовувати символьні і рядкові змінні для роботи з текстовими файлами.
ЗАВДАННЯ
Домашня підготовка до роботи
1. Ознайомитися з основними типами файлів і їх описом.
2. Вивчити основні процедури і функції для роботи з текстовими файлами.
3. Ознайомитись зі символьними і рядковими змінними.
4. Вивчити основні процедури та функції для роботи із символьними і рядковими змінними.
5. Дано текстовий файл, в якому міститься програма мовою Турбо Паскаль (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програми мовою Турбо-Паскаль для обробки текстового файлу з використанням розроблених процедур та функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови Турбо Паскаль. Дані для роботи беруться з табл.1 за вказівкою викладача.
Таблиця 1
№ п/п
Завдання
17
Сформувати і вивести на екран текстовий файл в якому символи “+” замінюються словом “SUMA”, символи “-” замінюються символом “MULT”, символи “/” – замінюються символом “DIV”. Підрахувати і вивести на екран кількість символів “:=” у кожному рядку.
Робота в лабораторії
1. Ввести в комп'ютер програми, написані мовою Турбо-Паскаль згідно з отриманим завданням.
2. Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками.
3. Остаточні версії блок-схем, програм та отримані результати занести у звіт з лабораторної роботи.
4. Здати звіт з лабораторної роботи.
СПИСОК ІДЕНТИФІКАТОРІВ ЗМІННИХ, ПРОЦЕДУР І ФУНКЦІЙ:
str, s – рядкова змінна;
p1, p2, p3 – змінні позицій символів “+, - , / ” у рядках;
i, k – проміжні змінні;
f – даний текстовий файл;
temp – перероблений текстовий файл;
druk – процедура виведення на екран файлу;
kilzn – функція, що обчислює кількість знаків присвоєння;
БЛОК-СХЕМА
ПРОГРАМА
program lab4;
uses crt;
var f,temp:text;
str:string;
i,p1,p2,p3:integer;
procedure druk(var f:text);
var str:string;
begin
repeat
readln(f,str);
writeln(str);
until eof(f);
close(f);
reset(f);
end;
function kilzn(s:string):integer;
var i,k:integer;
begin
k:=0;
for i:=1 to length(s) do
if (s[i]=':')and(s[i+1]='=') then
k:=k+1;
kilzn:=k;
end;
BEGIN
clrscr;
assign(f,
assign(temp,'change.pas');
reset(f);
rewrite(temp);
while not eof(f) do
begin
readln(f,str);
repeat
p1:=pos('+',str);
if p1<>0 then
begin
delete(str,p1,1);
insert(' SUMA ',str,p1);
end;
p2:=pos('-',str);
if p2<>0 then
begin
delete(str,p2,1);
insert(' MULT ',str,p2);
end;
p3:=pos('/',str);
if p3<>0 then
begin
delete(str,p3,1);
insert(' DIV ',str,p3);
end;
until (p1=0) and (p2=0) and (p3=0);
writeln(temp,str);
end;
close(f);
close(temp);
reset(temp);
writeln('PEREROBLENYJ FAJL:');
druk(temp);
writeln('KILKIST ZNAKIV PRYSVOJENNA:');
i:=1;
while not eof(temp) do
begin
readln(temp,str);
writeln('v riadku ',i:3,' znakiv := - ',kilzn(str):3,' ');
i:=i+1;
end;
END.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ:
PEREROBLENYJ FAJL:
PROGRAM LAB3;
USES CRT;
CONST N=5;
TYPE MATRIX=ARRAY[1..N,1..N] OF INTEGER;
VAR A:MATRIX;
I,J:INTEGER;
PROCEDURE SORT_ARRAY;
VAR X,Z:INTEGER;
BEGIN
FOR Z:=1 TO N MULT 1 DO
BEGIN
FOR J:=1 TO N DO
FOR I:=N DOWNTO 2 DO
BEGIN
IF A[I,J]<A[I MULT 1,J] THEN
BEGIN
X:=A[I MULT 1,J];
A[I MULT 1,J]:=A[I,J];
A[I,J]:=X;
END END END END;
FUNCTION SER_HEOM(I:INTEGER):REAL;
VAR B:REAL;
BEGIN
B:=1;
FOR J:=1 TO N DO
B:=B*A[I,J];
IF B>0 THEN B:=EXP(1 DIV N*LN(B));
IF B<0 THEN B:= MULT EXP(1 DIV N*LN( MULT B));
SER_HEOM:=B
END;
FUNCTION SER_AR:REAL;
VAR S:REAL;
BEGIN
S:=0;
FOR I:=1 TO N DO
S:=S SUMA SER_HEOM(I);
SER_AR:=S DIV N
END;
BEGIN
CLRSCR;
WRITELN('VVEDIT6 ELEMENTY MATRYTSI:');
FOR I:=1 TO N DO
FOR J:=1 TO N DO
BEGIN
WRITE('A[',I,J,']=');
READ(A[I,J]);
IF J=N THEN WRITELN;
END;
SORT_ARRAY;
WRITELN('VIDSORTOVANA MATRYTSYA:');
FOR I:=1 TO N DO
FOR J:=1 TO N DO
BEGIN
WRITE(A[I,J]:4);
IF J=N THEN WRITELN;
END;
FOR I:=1 TO N DO
WRITELN('SEREDNYE HEOMETRYCHNE=',SER_HEOM(I):3:3);
WRITELN;
WRITE('SEREDNYE ARYFMETYCHNE=',SER_AR:3:3);
END.
KILKIST ZNAKIV PRYSVOJENNA:
v ryadku 1 kilkistb znakiv := - 0
v ryadku 2 kilkistb znakiv := - 0
v ryadku 3 kilkistb znakiv := - 0
v ryadku 4 kilkistb znakiv := - 0
v ryadku 5 kilkistb znakiv := - 0
v ryadku 6 kilkistb znakiv := - 0
v ryadku 7 kilkistb znakiv := - 0
v ryadku 8 kilkistb znakiv := - 0
v ryadku 9 kilkistb znakiv := - 0
v ryadku 10 kilkistb znakiv := - 1
v ryadku 11 kilkistb znakiv := - 0
v ryadku 12 kilkistb znakiv := - 1
v ryadku 13 kilkistb znakiv := - 1
v ryadku 14 kilkistb znakiv := - 0
v ryadku 15 kilkistb znakiv := - 0
v ryadku 16 kilkistb znakiv := - 0
v ryadku 17 kilkistb znakiv := - 1
v ryadku 18 kilkistb znakiv := - 1
v ryadku 19 kilkistb znakiv := - 1
v ryadku 20 kilkistb znakiv := - 0
v ryadku 21 kilkistb znakiv := - 0
v ryadku 22 kilkistb znakiv := - 0
v ryadku 23 kilkistb znakiv := - 0
v ryadku 24 kilkistb znakiv := - 1
v ryadku 25 kilkistb znakiv := - 1
v ryadku 26 kilkistb znakiv := - 1
v ryadku 27 kilkistb znakiv := - 1
v ryadku 28 kilkistb znakiv := - 1
v ryadku 29 kilkistb znakiv := - 1
v ryadku 30 kilkistb znakiv := - 0
v ryadku 31 kilkistb znakiv := - 0
v ryadku 32 kilkistb znakiv := - 0
v ryadku 33 kilkistb znakiv := - 0
v ryadku 34 kilkistb znakiv := - 1
v ryadku 35 kilkistb znakiv := - 1
v ryadku 36 kilkistb znakiv := - 1
v ryadku 37 kilkistb znakiv := - 1
v ryadku 38 kilkistb znakiv := - 0
v ryadku 39 kilkistb znakiv := - 0
v ryadku 40 kilkistb znakiv := - 0
v ryadku 41 kilkistb znakiv := - 0
v ryadku 42 kilkistb znakiv := - 1
v ryadku 43 kilkistb znakiv := - 1
v ryadku 44 kilkistb znakiv := - 0
v ryadku 45 kilkistb znakiv := - 0
v ryadku 46 kilkistb znakiv := - 0
v ryadku 47 kilkistb znakiv := - 0
v ryadku 48 kilkistb znakiv := - 0
v ryadku 49 kilkistb znakiv := - 0
v ryadku 50 kilkistb znakiv := - 0
v ryadku 51 kilkistb znakiv := - 1
v ryadku 52 kilkistb znakiv := - 1
v ryadku 53 kilkistb znakiv := - 0
v ryadku 54 kilkistb znakiv := - 0
v ryadku 55 kilkistb znakiv := - 0
v ryadku 56 kilkistb znakiv := - 0
v ryadku 57 kilkistb znakiv := - 1
v ryadku 58 kilkistb znakiv := - 0
v ryadku 59 kilkistb znakiv := - 0
v ryadku 60 kilkistb znakiv := - 0
v ryadku 61 kilkistb znakiv := - 0
Висновок:на цій лабораторній роботі я вивчив види файлів, стандартні процедури і функції мови Турбо-Паскаль для роботи з файлами, навчився складати та відлагоджувати програми для роботи з тестовими файлами і використовувати символьні і рядкові змінні для роботи з текстовими файлами.