Создание текстового редактора в Turbo Pascal

9778
знаков
0
таблиц
0
изображений

Министерство энергетики РФ

Уфимский Энергетический Колледж

Специальность 2202 Курсовая работа

по Основам алгоритмизации и программирования

на тему “Создание текстового редактора”

Выполнил: студент группы 2 – АС – 3 ____________ Тимофеев Т.П.

Проверил: ____________ Ганиев А.Э.

Уфа – 2001г.

Содержание

1.    Задание ……………………………………………………… стр. 3

2.    Описание программы ………………………………………. стр. 4

3.    Листинг ……………………………………………………… стр. 5

3.1.   Исходный текст программы .…………………………. стр. 5

3.2.   Текст модуля ……………….………………………….. стр.10

4.    Заключение ………………………………………………….. стр.18

5.    Список использованной литературы ……………………… стр.19


Задание.

Создать программу, обеспечивающую:

1.    Cоздание файлов.

2.    Переименование файлов.

3.    Удаление файлов.

4.    Копирование файла в другой файл.

5.    Открытие файла для просмотра.

Программа должна быть написана на Turbo Pascal в текстовом режиме с использованием любых модулей, которые необходимы для её реализации (допускаются также модули пользователя).


Описание программы.

Timofeev Word v.1.0 – это программа для работы с текстом. С её помощью можно создавать, удалять, переименовывать, открывать, копировать файлы друг в друга. Конечно, всё это можно проделать и в MS-DOS, но преимущество этой программы в том, что все эти команды тщательно спрятаны под красивым и дружественным интерфейсом моей программы.

Так как в программе Timofeev Word v.1.0 много процедур, я создал собственный модуль Tim.tpu, куда их (процедуры) и отправил.

Процедуры:

1.    Table – рисует оболочку программы.

2.    Enter_Sandman – происходит проигрывание музыки на песню группы Metallica - “Enter Sandman”. Я не стал делать так, чтобы при нажатии какой-либо клавиши она прекращала играть, потому что для меня (не знаю как для других) это свято.

3.    Menu – эта процедура вызывает меню, где содержится информация о программе и помощь (если её так можно назвать).

4.    Keys – процедура, считывающая код нажатой клавиши.

В этой программе, конечно много недоработок, но я надеюсь, что вскоре появятся дополненные версии 1.2, 1.3, 2.0,2.1,……, n.m.

Эта программа может использоваться в о-о-о-о-о-очень маленьких офисах, которые не имеют возможности приобрести качественный лицензионный продукт, к примеру Microsoft Office’9x, ’2000 (если кто-то имеет на примете такой офис, я с удовольствием продам, за символическую цену, свой программный продукт). Также программа может использоваться для обучения детей в детских садах работе на персональных компьютерах. И, наконец, ей могут воспользоваться студенты I курса для сдачи её как Курсовой работы на следующем курсе.


Листинг.

Исходный текст программы.

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);

until txt='';

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 not eof(f1) do

begin

readln(f1,txt);

writeln(chr(179),txt);

end;

close(f1);

gotoxy(2,21);

write('Файл считан, нажмите чего-нибудь ... ');

end;

68:goto b; {F10} {Происходит выход на метку}

end;

until i<0; {считывай функциональные клавиши пока i<0,

а т.к. i=1 и не изменяется, то этот процесс бесконечен}

b:end.


Текст модуля.

Unit Tim;

Interface

Uses Crt,Dos;

Procedure keys(var n:integer);

Procedure table;

Procedure Enter_sandman;

Procedure menu;

Implementation

Procedure keys(var n:integer);{процедура нажатия клавиши}

var c:char;

begin

if keypressed then

begin

c:=readkey;

if c=#0 then c:=readkey;

n:=ord(c);

end;

end;

Procedure Enter_sandman; {музыка}

Const

m:array [1..6] of integer=(165,330,392,233,220,330);

t:array [1..6] of integer=(1100,600,600,600,1100,600);

e:array [1..7] of integer=(165,165,165,165,165,165,170);

r:array [1..7] of integer=(600,600,600,600,600,600,1100);

w:array [1..5] of integer=(167,167,167,294,233);

q:array [1..5] of integer=(1100,600,600,600,1100);

o:array [1..9] of integer=(165,182,165,182,165,196,165,182,165);

b:array [1..9] of integer=(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);

for w:=2 to 79 do

begin

gotoxy(w,h);

write(c2);

end;

gotoxy(w,h);

write(c6);

for h:=24 downto 1 do

begin

gotoxy(w,h);

write(c4);

end;

gotoxy(w,h);

write(c3);

for w:=78 downto 1 do

begin

gotoxy(w,h);

write(c2);

end;

gotoxy(w,h);

write(c1);

gotoxy(1,20);

write(c7);

for w:=2 to 59 do

begin

gotoxy(w,20);

write(c2);

end;

gotoxy(w,1);

write(c10);

for h:=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;

Procedure menu;

Const

NORM=$17;{ цвет невыделеного пункта }

SEL=$70;{ цвет выделенного пункта }

N=3;

var

menu:array[1..N] of string[12];{ названия пунктов меню }

punkt:integer;{ номер выделенного пункта }

ch:char;{ введенный символ }

x,y,i:integer;{ координаты первой строки меню }

Procedure punkt1;

begin

ClrScr;

writeln('Выполнил студент гр. 2-АС-3 Тимофеев Т.П. (2001 г.)');

writeln('Курсовая работа-а-а-а-а-а-а-а !!!!!!!!!!!!!!!!!');

readln;

end;

Procedure punkt2;

begin

ClrScr;

writeln('Тута всё понятно даже ребёнку.');

readln;

end;

Procedure MenuToScr;{ вывод меню на экран }

var i: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 then begin

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 then begin

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 { нажата клавиша <Enter> }

case punkt of

1:punkt1;

2:punkt2;

3:i:=2;{ выход }

end;

MenuToScr;

end;

 until i=2;

end;

end.


Заключение.

В результате проделанной работы я написал прекрасную программу за 4 часа свободного от учёбы времени практически без помощи литературы и других источников.

Программа основана на стандартных процедурах и функциях модуля Crt: Rename, Erase, Append, Rewrite, Reset, Assign и др.


Список использованной литературы.

1.    Попов В.Б. “Turbo Pascal для школьников”:

Учеб.пособие. – 3-е доп. изд. – М.: Финансы и статистика, 2001г.

2.    Вирт Н. “Алгоритмы и структуры данных”:

Пер. с англ. – М.: Мир, 1989г.

3.    Прайс Д. “Программирование на языке Паскаль: Практическое руководство”.

Пер. с англ. – М.: Мир, 1987г.


Информация о работе «Создание текстового редактора в Turbo Pascal»
Раздел: Информатика, программирование
Количество знаков с пробелами: 9778
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
9627
0
0

... :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('Все права ...

Скачать
16275
0
0

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

Скачать
31468
3
4

... (160,70,'ПАВЛОДАРСКИЙ КОЛЛЕДЖ УПРАВЛЕНИЯ'); outtextxy(170,165,'КУРСОВОЙ ПРОЕКТ ПО ДИСЦИПЛИНЕ: '); outtextxy(110,180,'"ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ"'); outtextxy(150,225,'TEMA: Проектирование баз данных «Справочник покупателя»'); outtextxy(465,345,'Разработал'); outtextxy(465,365,'Запорожец А.С.'); outtextxy(465,385,'Группа П-33); outtextxy(270,410,'2010 год’); Процедура ВВОD ...

Скачать
53631
0
0

... себя от случайного внесения изменений в файл во время сеанса редактирования. Чтобы воспользоваться опцией "только чтение", вызовите редактор следующим образом: view file<CR>   21.Другие текстовые редакторы Unix 21.1. Редактор ED. Редактор текстов ed является диалоговой (интерактивной) программой, которая позволяет добавлять, перемещать, удалять текст и извлекать его из ...

0 комментариев


Наверх