Реферат: Создание текстового редактора в Turbo Pascal
Министерство энергетикиРФ
Уфимский Энергетический Колледж
Специальность 2202Курсовая работапо Основамалгоритмизации и программирования
на тему“Создание текстового редактора”
Выполнил: студент группы 2 – АС – 3 ____________ Тимофеев Т.П.
Проверил: ____________ Ганиев А.Э.
Уфа –2001г.
Содержание1.<span Times New Roman"">
Задание ……………………………………………………… стр. 32.<span Times New Roman"">
Описание программы ………………………………………. стр. 43.<span Times New Roman"">
Листинг ……………………………………………………… стр. 53.1.<span Times New Roman"">
Исходный текст программы .…………………………. стр. 53.2.<span Times New Roman"">
Текст модуля ……………….…………………………… стр.104.<span Times New Roman"">
Заключение …………………………………………………… стр.185.<span Times New Roman"">
Список использованной литературы ……………………… стр.19<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Задание.
Создать программу, обеспечивающую:
1.<span Times New Roman"">
2.<span Times New Roman"">
3.<span Times New Roman"">
4.<span Times New Roman"">
5.<span Times New Roman"">
Программадолжна быть написана на Turbo Pascal в текстовом режиме с использованием любыхмодулей, которые необходимы для её реализации (допускаются также модулипользователя).
<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Описание программы.
Timofeev Word v.1.0– этопрограмма для работы с текстом. С её помощью можно создавать, удалять,переименовывать, открывать, копировать файлы друг в друга. Конечно, всё этоможно проделать и в MS-DOS, но преимущество этой программы в том, что все этикоманды тщательно спрятаны под красивыми дружественным интерфейсом моейпрограммы.
Таккак в программе Timofeev Word v.1.0много процедур, я создал собственный модуль Tim.tpu, куда их (процедуры) и отправил.
Процедуры:
1.<span Times New Roman"">
Table– рисует оболочкупрограммы.2.<span Times New Roman"">
Enter_Sandman–происходит проигрывание музыки на песню группы Metallica — “Enter Sandman”. Я не стал делать так, чтобы при нажатиикакой-либо клавиши она прекращала играть, потому что для меня (не знаю как длядругих) это свято.3.<span Times New Roman"">
Menu– эта процедура вызывает меню, где содержитсяинформация о программе и помощь (если её так можно назвать).4.<span Times New Roman"">
Keys– процедура, считывающая код нажатой клавиши.В этой программе, конечно много недоработок, но янадеюсь, что вскоре появятся дополненные версии 1.2, 1.3, 2.0,2.1,……, n.m.
Эта программа может использоваться в о-о-о-о-о-оченьмаленьких офисах, которые не имеют возможности приобрести качественныйлицензионный продукт, к примеру Microsoft Office’9x, ’2000 (если кто-то имеетна примете такой офис, я с удовольствием продам, за символическую цену, свойпрограммный продукт). Также программаможет использоваться для обучения детей в детских садах работе на персональныхкомпьютерах. И, наконец, ей могут воспользоваться студенты I курса для сдачи еёкак Курсовой работы на следующем курсе.
<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Листинг.
Исходный текст программы.
Program Redaktor;
Uses Crt,Tim; {использовать модули Crt и Tim}
Label b; {метка}
Var {тело}
Programname,Cmdline:string;
nn,i,x,y:integer;
f1,f1_new:text;
Name,New_name:string[12];
txt,text:string;
ch:char;
begin
i:=1;
textbackground(red);
clrscr;
textcolor(yellow);
gotoxy(22,10);
writeln('Текстовыйпроцессор Timofeev Word');
gotoxy(22,11);
writeln(' Версия 1.0 (2001 год)');
gotoxy(40,15);
writeln('СоставилТимофеев Тимур (2-АС-3)');
textcolor(green);
gotoxy(40,16);
writeln('Всеправа защищены.');
gotoxy(40,17);
writeln('Незаконноекопирование');
gotoxy(40,18);
writeln('илиподделка без согласия автора');
gotoxy(40,19);
writeln('преследуетсяпо понятиям !!!');
delay(5000);
textcolor(yellow);
table;
gotoxy(2,21);
write('Введитеимя:');
readln(name);
assign(f1,name);
rewrite(f1);
gotoxy(2,21);
write('Вводитетекст !!! ');
gotoxy(1,2);
repeat
write(chr(179),':>');
readln(txt);
writeln(f1,txt);
until txt='';
close(f1);
gotoxy(2,21);
writeln('Ввод окончен, нажмите чего-нибудь ...');
repeat
readkey;
keys(nn);
case nn of {определяет нажатиефункциональных клавиш}
59:menu; {F1}
60:begin {F2}
table;
gotoxy(2,21);
write(' ');
gotoxy(2,21);
write('Введитеимя:');
readln(name);
assign(f1,name);
rewrite(f1);
gotoxy(2,21);
write('Вводитетекст !!! ');
gotoxy(1,2);
repeat
write(chr(179),':>');
readln(txt);
writeln(f1,txt);
untiltxt='';
close(f1);
gotoxy(2,21);
writeln('Ввод окончен, нажмитечего-нибудь ...');
end;
61:begin {F3}
gotoxy(2,21);
write('Введитеимя файла, в который копир-я файл ',name,'->');
readln(new_name);
reset(f1);
assign(f1_new,new_name);
append(f1_new);
while not eof(f1) do
begin
readln(f1,txt);
writeln(f1_new,txt);
end;
close(f1);
close(f1_new);
gotoxy(2,21);
writeln('Файл',name,' скопирован в ',new_name,' нажмите
чего-нибудь...');
end;
62:begin{F4}
gotoxy(2,21);
write(' ');
gotoxy(2,21);
write('Введитеновое имя файла:');
readln(new_name);
assign(f1,name);
rename(f1,new_name);
gotoxy(2,21);
writeln('Файл',name,' перименован в ',new_name,' нажмите
чего-нибудь… ');
end;
63:begin {F5}
erase(f1);
gotoxy(2,21);
writeln('Файл',name,' удалён с диска, нажмите чего-нибудь ...');
end;
64:begin {F6}
{$I-}
repeat
gotoxy(2,21);
write('Введитеимя файла для считывания текста ->');
readln(name);
assign(f1,name);
reset(f1);
if ioresult<>0 then
begin
gotoxy(2,21);
writeln('Файлне найден ... ');
close(f1);
end;
until ioresult=0;
{$I+}
table;
gotoxy(1,2);
while noteof(f1) do
begin
readln(f1,txt);
writeln(chr(179),txt);
end;
close(f1);
gotoxy(2,21);
write('Файлсчитан, нажмите чего-нибудь ... ');
end;
68:gotob; {F10} {Происходит выход на метку}
end;
untili<0; {считывай функциональныеклавиши пока i<0,
а т.к. i=1 и не изменяется,то этот процесс бесконечен}
b:end.
<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Текст модуля.
Unit Tim;
Interface
UsesCrt,Dos;
Procedurekeys(var n:integer);
Proceduretable;
ProcedureEnter_sandman;
Proceduremenu;
Implementation
Procedurekeys(var n:integer);{процедура нажатия клавиши}
var c:char;
begin
if keypressed then
begin
c:=readkey;
if c=#0 then c:=readkey;
n:=ord(c);
end;
end;
ProcedureEnter_sandman; {музыка}
Const
m:array [1..6] of integer=(165,330,392,233,220,330);
t:array [1..6] ofinteger=(1100,600,600,600,1100,600);
e:array [1..7] ofinteger=(165,165,165,165,165,165,170);
r:array [1..7] ofinteger=(600,600,600,600,600,600,1100);
w:array [1..5] ofinteger=(167,167,167,294,233);
q:array [1..5] ofinteger=(1100,600,600,600,1100);
o:array [1..9] ofinteger=(165,182,165,182,165,196,165,182,165);
b:array [1..9] ofinteger=(600,1100,600,600,600,600,600,600,3000);
var a,u,z,x:integer; i:byte;
begin
for a:=1 to 4 do
begin
for i:=1 to 6 do
begin
sound(m[i]);
delay(t[i]);
nosound;
end;
end;
for u:=1 to 3 do
begin
for i:=1 to 7 do
begin
sound(e[i]);
delay(r[i]);
nosound;
end;
end;
for z:=1 to 3 do
begin
for i:=1 to 5 do
begin
sound(w[i]);
delay(q[i]);
nosound;
end;
end;
for i:=1 to 9 do
begin
sound(o[i]);
delay(b[i]);
nosound;
end;
end;
Procedure table;{рисует таблицу}
var
w,h:integer;
c1,c2,c3,c4,c7,c5,c6,c8,c9,c10:char;
begin
textbackground(blue);
clrscr;
textcolor(yellow);
w:=1;
h:=1;
c1:=chr(218);
c2:=chr(196);
c3:=chr(191);
c4:=chr(179);
c5:=chr(192);
c6:=chr(217);
c7:=chr(195);
c8:=chr(180);
c9:=chr(193);
c10:=chr(194);
for h:=2 to 25 do
begin
gotoxy(w,h);
write(c4);
end;
gotoxy(w,h);
write(c5);
forw:=2 to 79 do
begin
gotoxy(w,h);
write(c2);
end;
gotoxy(w,h);
write(c6);
forh:=24 downto 1 do
begin
gotoxy(w,h);
write(c4);
end;
gotoxy(w,h);
write(c3);
forw:=78 downto 1 do
begin
gotoxy(w,h);
write(c2);
end;
gotoxy(w,h);
write(c1);
gotoxy(1,20);
write(c7);
forw:=2 to 59 do
begin
gotoxy(w,20);
write(c2);
end;
gotoxy(w,1);
write(c10);
forh:=2 to 24 do
begin
gotoxy(w,h);
write(chr(179));
end;
gotoxy(w,20);
write(c8);
gotoxy(59,25);
write(c9);
gotoxy(62,4);
writeln('F1-Помошь');
gotoxy(62,5);
writeln('F2-Новый');
gotoxy(62,6);
writeln('F3-Копировать');
gotoxy(62,7);
writeln('F4-Переименовать');
gotoxy(62,8);
writeln('F5-Удалить');
gotoxy(62,9);
writeln('F6-Просмотреть');
gotoxy(62,10);
writeln('F10-Выход');
end;
Proceduremenu;
Const
NORM=$17;{ цвет невыделеного пункта }
SEL=$70;{ цвет выделенного пункта }
N=3;
var
menu:array[1..N] of string[12];{ названияпунктов меню }
punkt:integer;{ номер выделенного пункта }
ch:char;{ введенный символ }
x,y,i:integer;{ координаты первой строкименю }
Procedurepunkt1;
begin
ClrScr;
writeln('Выполнил студент гр. 2-АС-3Тимофеев Т.П. (2001 г.)');
writeln('Курсовая работа-а-а-а-а-а-а-а!!!!!!!!!!!!!!!!!');
readln;
end;
Procedurepunkt2;
begin
ClrScr;
writeln('Тута всё понятно даже ребёнку.');
readln;
end;
ProcedureMenuToScr;{ вывод меню на экран }
vari:integer;
begin
ClrScr;
for i:=1 to N do begin
GoToXY(x,y+i-1);
write(menu[i]);
end;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);{ выделим строку меню }
TextAttr:=NORM;
end;
begin
menu[1]:=' О программе ';
menu[2]:=' Помощь ';
menu[3]:=' Выход ';
punkt:=1;
x:=5;
y:=5; TextAttr:=NORM;
MenuToScr;
repeat
ch:=ReadKey;
if ch=char(0) then begin
ch:=ReadKey;
case ch of
chr(80):{ стрелка вниз }
if punkt<N thenbegin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt+1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
chr(72):{ стрелка вверх }
if punkt>1 thenbegin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt-1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
end;
end
else
if ch=chr(13) then begin {нажата клавиша }
case punkt of
1:punkt1;
2:punkt2;
3:i:=2;{ выход }
end;
MenuToScr;
end;
until i=2;
end;
end.
<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Заключение.
В результате проделанной работы я написал прекраснуюпрограмму за 4 часа свободного от учёбы времени практически без помощилитературы и других источников.Программаоснована на стандартных процедурах и функциях модуля Crt: Rename, Erase, Append, Rewrite, Reset, Assign и др.
<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Список использованной литературы.
1.<span Times New Roman"">
Попов В.Б.“TurboPascal для школьников”:Учеб.пособие.– 3-е доп. изд. – М.: Финансы и статистика, 2001г.
2.<span Times New Roman"">
Вирт Н.“Алгоритмыи структуры данных”:Пер.с англ. – М.: Мир, 1989г.
3.<span Times New Roman"">
Прайс Д.“Программирование на языке Паскаль: Практическое руководство”.Пер.с англ. – М.: Мир, 1987г.