МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захисту інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 4
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
РОБОТА З ТЕКСТОВИМИ ФАЙЛАМИ.
СИМВОЛЬНІ ТА РЯДКОВІ ЗМІННІ
кафедра “Автоматика і
телемеханіки”
Львів – 2006
Мета роботи - вивчити види файлів, стандартні процедури і функції мови Турбо-Паскаль для роботи з файлами, навчитися складати та відлагоджувати програми для роботи з тестовими файлами. Навчитись використовувати символьні і рядкові змінні для роботи з текстовими файлами.
ЗАВДАННЯ
1. Ознайомитися з основними типами файлів і їх описом.
2. Вивчити основні процедури і функції для роботи з текстовими файлами.
3. Ознайомитись зі символьними і рядковими змінними.
4. Вивчити основні процедури та функції для роботи із символьними і рядковими змінними.
5. Дано текстовий файл, в якому міститься програма мовою Турбо Паскаль (Лабораторна робота №3). Скласти блок-схеми алгоритмів та програми мовою Турбо-Паскаль для обробки текстового файлу з використанням розроблених процедур та функцій для роботи зі стрічками. Оформити виконання одного із завдань у вигляді підпрограми. Словами є слова в коментарях, назви ідентифікаторів, зарезервовані слова, які розділяються між собою згідно із синтаксисом мови Турбо Паскаль. Дані для роботи беруться з табл.1 за вказівкою викладача.
Таблиця 1
23
Сформувати і вивести на екран текстовий файл в якому усі літери які зустрічаються замінити послідовно на літери в алфавітному порядку. Вивести на екран непарні рядки файлу.
Програма, що використовується
PROGRAM lab3;
uses crt;
const f=5; l=5;
type matrix=array[1..f,1..l]of integer;
matrix2=array[1..f]of integer;
var a:matrix;
summa:matrix2;
i,j,m,n,k:integer;
PROCEDURE SORTING;
var g:integer;
begin
for m:=1 to l do
begin
i:=2;
repeat
j:=1;
repeat
if a[i,m]<=a[j,m] then
begin
k:=i;
g:=a[i,m];
repeat
a[k,m]:=a[k-1,m];
k:=k-1;
until not (k>j);
a[j,m]:=g;
j:=i;
end
else
begin
j:=j+1;
end;
until not (j<i);
i:=i+1;
until not (i<=f);
end;
end;
FUNCTION suma (a:matrix;i:integer):integer;
var sum,x:integer;
begin
sum:=0;
for m:=1 to l do
begin
if i<m then
sum:=sum+a[i,m];
suma:=sum;
end;
end;
FUNCTION gmean(summa:matrix2;i:integer):real;
var gm:real;
begin
gm:=1;
for i:=1 to f-1 do
gm:=gm*summa[i];
gmean:=exp(1/i*ln(gm));
end;
begin
clrscr;
for i:=1 to f do {reading of matrix}
for m:= 1 to l do
begin
write('a[',i,',',m,']=');
read(a[i,m]);
end;
SORTING;
for i:=1 to f do {showing of sorted matrix}
for m:=1 to l do
begin
write(a[i,m], ' ' );
writeln;
end;
readln;
for i:=1 to f-1 do
begin
summa[i]:=suma(a,i);
writeln('SUMA[',i,']=',summa[i]);
end;
writeln('GMEAN=',gmean(summa,i):4:2);
readln;
end.
Текст програми мовою Pascal
Program lab4;
uses crt;
var ofile,filenew:text;
temp:string;
ch:char;
Procedure replace (var ch:char;var temp:string);
var i:byte;
begin
for i:=1 to length(temp) do
begin
if((temp[i]<='z')and(temp[i]>='a'))or((temp[i]<='Z')and(temp[i]>='A'))
then
begin
temp[i]:=ch;
if ch='z' then
ch:='a'
else ch:=succ(ch);
end;
end;
end;
Begin
clrscr;
assign(ofile,'lab3.pas');
assign(filenew,'new.txt');
reset(ofile);
rewrite(filenew);
ch:='a';
while not eof(ofile) do
begin
readln(ofile,temp);
replace(ch,temp);
writeln(filenew,temp);
end;
close(filenew);
close(ofile);
reset(filenew);
while not eof (filenew) do
begin
readln(filenew);
readln(filenew) ;
writeln;
while not eoln (filenew) do
begin
read(filenew,ch);
write(ch);
end;
end;
close(filenew);
readln;
reset(ofile);
while not eof (ofile) do
begin
readln(ofile);
writeln;
while not eoln (ofile) do
begin
read(ofile,ch);
write(ch);
end;
end;
close(ofile);
readln;
End.
Результат виконання роботи
abcdefg hij3;
klmn opq;
rstuv w=5; x=5;
yzab cdefgh=ijklm[1..n,1..o]pq rstuvwx;
yzabcd2=efghi[1..j]kl mnopqrs;
tuv w:xyzabc;
defgh:ijklmn2;
o,p,q,r,s:tuvwxyz;
abcdefghi jklmnop;
qrs t:uvwxyza;
bcdef
ghi j:=1 kl m no
pqrst
u:=2;
vwxyza
b:=1;
cdefgh
ij k[l,m]<=n[o,p] qrst
uvwxy
z:=a;
b:=c[d,e];
fghijk
l[m,n]:=o[p-1,q];
r:=s-1;
tuvwx yza (b>c);
d[e,f]:=g;
h:=i;
jkl
mnop
qrstu
v:=w+1;
xyz;
abcde fgh (i<j);
k:=l+1;
mnopq rst (u<=v);
wxy;
zab;
cdefghij klmn (o:pqrstu;v:wxyzabc):defghij;
klm nop,q:rstuvwx;
yzabc
def:=0;
ghi j:=1 kl m no
pqrst
uv w<x yzab
cde:=fgh+i[j,k];
lmno:=pqr;
stu;
vwx;
yzabcdef ghijk(lmnop:qrstuv2;w:xyzabcd):efgh;
ijk lm:nopq;
rstuv
wx:=1;
yza b:=1 cd e-1 fg
hi:=jk*lmnop[q];
rstuv:=wxy(1/z*ab(cd));
efg;
hijkl
mnopqr;
stu v:=1 wx y za {bcdefgh ij klmnop}
qrs t:= 1 uv w xy
zabcd
efghi('j[',k,',',l,']=');
mnop(q[r,s]);
tuv;
wxyzabc;
def g:=1 hi j kl {mnopqrs tu vwxyza bcdefg}
hijkl
mno p:=1 qr s tu
vwxyz(a[b,c], ' ' );
defghij;
klm;
nopqrs;
tuv w:=1 xy z-1 ab
cdefg
hijkl[m]:=nopq(r,s);
tuvwxyz('abcd[',e,']=',fghij[k]);
lmn;
opqrstu('vwxyz=',abcde(fghij,k):4:2);
lmnopq;
rst.
PROGRAM lab3;
const f=5; l=5;
matrix2=array[1..f]of integer;
summa:matrix2;
PROCEDURE SORTING;
begin
begin
repeat
repeat
begin
g:=a[i,m];
a[k,m]:=a[k-1,m];
until not (k>j);
j:=i;
else
j:=j+1;
until not (j<i);
until not (i<=f);
end;
var sum,x:integer;
sum:=0;
begin
sum:=sum+a[i,m];
end;
FUNCTION gmean(summa:matrix2;i:integer):real;
begin
for i:=1 to f-1 do
gmean:=exp(1/i*ln(gm));
begin
for i:=1 to f do {reading of matrix}
begin
writeln;
readln;
begin
writeln('SUMA[',i,']=',summa[i]);
writeln('GMEAN=',gmean(summa,i):4:2);
end.
Таблиця ідентифікаторів, що використовуються
ofile
Текстовий файл, що використовується
filenew
Файл, у який записується ofile зі змінами
temp
Змінна типу string, використовується для перевірки чи є наступний символ буквою
ch
Змінна типу char для по символьного формування файлу
replace
Процедура, що заміняє усі літери які зустрічаються на літери в алфавітному порядку
i
Тимчасова змінна для по символьної перевірки
Висновок: На цій лабораторній роботі я вивчив види файлів, стандартні процедури і функції мови Турбо-Паскаль для роботи з файлами, навчився складати та відлагоджувати програми для роботи з тестовими файлами. Навчився використовувати символьні і рядкові змінні для роботи з текстовими файлами.