Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Руководство для пользователяСтр 1 из 3Следующая ⇒
Кафедра ПО ЭВМ
Курсовой проект по дисциплине: «Основы программирования и алгоритмические языки»
Тема: «Разработка текстового редактора»
Харьков, 2000 г.
ХГТУРЭ
Кафедра ПО ЭВМ
Задание на курсовую работу по дисциплине «ОП и АЯ» ст. гр. ИСПР-99-2 Морашко А.Г.
Тема: «Разработка текстового редактора в Borland C++Builder»
І Разработать текстовый редактор, который имел бы такие возможности: · Открывать и сохранять текстовые файлы типа TXT или RTF · Возможности редактирования текста · Простой и удобный интерфейс
ІІ Константы. Их синтаксис и применение.
Дата выдачи задания: Дата защиты:
Студент: Морашко А.Г.
Руководитель:
Реферат
Данная работа содержит 30 страниц, включая приложение; 5 иллюстраций. Цель работы: создать, используя систему программирования C++Builder, текстовый редактор. Объект исследования: текстовый редактор, разработанный в C++Builder, умеющий редактировать файлы типа TXT и RTF. В перспективе планируется редактирование формата документов типа DOC. Ключевые слова: C++BUILDER, ТЕКСТОВЫЙ РЕДАКТОР, КОНСТАНЫ, ФОРМАТ ТЕКСТОВЫХ ФАЙЛОВ, ХАРАКТЕРИСТИКИ Содержание
Реферат.......................................................................................................................................... 3 Содержание................................................................................................................................... 4 Введение........................................................................................................................................ 5 1 Описание программы.............................................................................................................. 6 1.1 Основные характеристики........................................................................................... 6 1.2 Руководство для пользователя..................................................................................... 6 2.1 Константы...................................................................................................................... 14 2.1.1 Целые Константы.................................................................................................... 14 2.1.2 Константы с Плавающей Точкой.......................................................................... 15
2.1.3 Символьные Константы......................................................................................... 15 2.1.4 Строки...................................................................................................................... 16 2.1.5 Ноль.......................................................................................................................... 17 2.1.6 Const......................................................................................................................... 18 2.1.7 Перечисления.......................................................................................................... 19 Перечень ссылок....................................................................................................................... 21 Приложение А............................................................................................................................ 22
Несколько лет назад исследователи заметили, что программисты в течение определенного времени пишут и отлаживают приблизительно одинаковый по объему код, независимо от используемого языка программирования. Объем работы примерно тот же, но результаты разные. Написание 100 строк на С требует столько же затрат, сколько и 100 строк кода на ассемблере, но возможности кода на С гораздо шире. Поняв это, исследователи начали разрабатывать языки высокого уровня, которые увеличивали бы потенциал отдельного программиста, сокращая тем самым строки и стоимость разработки проектов. В 70-х годах среди создателей языков программирования приобрела популярность концепция объекта. Объект является совокупностью кода и данных, созданной для воспроизведения свойств физических объектов или абстрактных понятий. Объектно-ориентированное программирование – это методология, которая концентрируется больше на связях между объектами, чем на деталях реализации. Данные связи обычно развиваются по принципу деревьев, при этом новые типы объектов образуются уже из существующих. Сокрытие реализации объекта ведет к тому, что пользователя больше волнует связь с остальными объектами, чем поведение объекта. Данное отличие очень важно, поскольку оно означает принципиальный отказ от «императивных» языков (таких как С), в которых функции и вызовы функций составляют основу деятельности. В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C++Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность ООП проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в ООП.
C++Builder является объектно-ориентированным языком программирования и на примере создания текстового редактора я хочу продемонстрировать всю мощь и быстроту визуального, объектно-ориентированного программирования. Описание программы
Основные характеристики
Рассматриваемая программа имеет возможность редактирования текстовых файлов типа TXT и RTF, а также им подобные. Программа представляет собой EXE файл; программа умеет открывать и сохранять текстовые файлы, редактировать их, изменять шрифт и размер текста, имеет поиск и замену текста. Описание функций и клавиш будет приведено ниже.
Кнопки панели управления
-создание нового документа. - открытие документа - сохранение документа - вырезание выделенного текста - копирование выделенного текста - вставка текста из буфера обмена - отмена последнего действия - поиск в тексте - замена в тексте - печать документа - выбор шрифта для выделенного текста - изменение размера выбранного текста - полужирный шрифт - курсивный шрифт - подчеркнутый шрифт - равнение текста по левому краю - равнение текста по центру - равнение текста по правому краю - маркировка выделенного абзаца Работа с документами Создание нового документа 1. В меню Файл выберите команду Новый. 2. Начните ввод текста. 3. Чтобы сохранить новый файл, выберите в меню Файл команду Сохранить как и введите имя в поле Имя файла. Примечание · Чтобы сохранить существующий документ под другим именем, выберите команду Сохранить как и введите новое имя в поле Имя файла. Открытие документа 1. В меню Файл выберите команду Открыть. Рисунок 1.2 – Окно открытия файла. 2. В открывшемся окне (рис 1.2), в поле со списком Папка выберите диск, содержащий документ, который следует открыть. 3. Дважды щелкните папку, содержащую нужный документ. 4. Выберите документ и нажмите кнопку Открыть. Примечания · Если вы не видите нужный документ, попробуйте выбрать другой тип документов в поле со списком Тип файлов. · Чтобы открыть один из недавно открывавшихся документов, выберите его имя в меню Файл.
Настройка окна MAGWord Примечания · Панель форматирования содержит кнопки, ускоряющие форматирование текста, например, изменяющие начертание текста или стиль абзаца. Чтобы отформатировать текст, выделите его, а затем нажмите соответствующую кнопку на панели форматирования.
Работа с текстом Отмена последнего действия В меню Правка выберите команду Отменить. Удаление текста 1. Выделите текст, который следует удалить. 2. Чтобы переместить текст в другую часть документа, выберите в меню Правка команду Вырезать. Чтобы просто удалить текст из документа, нажмите клавишу DELETE. Примечания · Чтобы снять выделение, щелкните любое место в документе. · Чтобы отменить удаление, выберите в меню Правка команду Отменить.
· Чтобы выделить для удаления весь текст в документе нажмите Ctrl+A. Поиск текста
1. В документе щелкните место, с которого следует начать поиск текста. 2. В меню Правка выберите команду Поиск. В появившемся окне (Рисунок 1.3) установить параметры поиска. 3. В поле Образец введите образец текста для поиска и нажмите кнопку Найти далее. Рисунок 1.3 – Окно поиска текста 4. Чтобы найти следующие вхождения искомого текста, нажимайте кнопку Найти далее.
Примечания
· Для поиска и замены текста выберите в меню Правка команду Заменить.
Поиск и замена текста
1. В меню Правка выберите команду Заменить. 2. В поле Образец введите образец текста для поиска и замены. 3. В поле Заменить на введите новый текст. Примечания · Чтобы заменить все вхождения искомого текста, нажмите кнопку Заменить все. · Чтобы заменять каждое вхождение образца по отдельности, нажимайте кнопку Найти далее, а затем кнопку Заменить.
Форматирование текста
Примечания · Чтобы задать шрифт для оформления нового текста, измените его до начала ввода текста. · Чтобы изменить шрифт всего документа, нажмите Ctrl+A, а затем в меню Правка выберите Шрифт. Форматирование абзаца
1. Щелкните любое место внутри абзаца, который требуется отформатировать. 2. На панели инструментов щелкните по одной из кнопок выравнивания текста и задайте параметры отступа с помощью линейки.
Печать Константы
C++ дает возможность записи значений основных типов: символьных констант, целых констант и констант с плавающей точкой. Кроме того, ноль (0) может использоваться как константа любого указательного типа, и символьные строки являются константами типа char[]. Можно также задавать символические константы. Символическая константа - это имя, значение которого не может быть изменено в его области видимости. В C++ имеется три вида символических констант: (1) любому значению любого типа можно дать имя и использовать его как константу, добавив к его описанию ключевое слово const; (2) множество целых констант может быть определено как перечисление; и (3) любое имя вектора или функции является константой.
Целые Константы
Целые константы предстают в четырех обличьях: десятичные, восьмеричные, шестнадцатеричные и символьные константы. Десятичные используются чаще всего и выглядят так, как можно было бы ожидать:
Десятичная константа имеет тип int, при условии, что она влезает в int, в противном случае ее тип long. Компилятор должен предупреждать о константах, которые слишком длинны для представления в машине. Константа, которая начинается нулем за которым идет x (0x), является шестнадцатеричным числом (с основанием 16), а константа, которая начинается нулем за которым идет цифра, является восьмеричным числом (с основанием 8). Вот примеры восьмеричных констант: 0 02 077 0123
0x0 0x2 0x3f 0x53
Символьные Константы Хотя в C++ и нет отдельного символьного типа данных, точнее, символ может храниться в целом типе, в нем для символов имеется специальная и удобная запись. Символьная константа - это символ, заключенный в одинарные кавычки; например, 'a' или '0'. Такие символьные константы в действительности являются символическими константами для целого значения символов в наборе символов той машины, на которой будет выполняться программа (который не обязательно совпадает с набором символов, применяемом на том компьютере, где программа компилируется). Поэтому, если вы выполняетесь на машине, использующей набор символов ASCII, то значением '0' будет 48, но если ваша машина использует EBCDIC, то оно будет 240. Употребление символьных констант вместо десятичной записи делает программу более переносимой. Несколько символов также имеют стандартные имена, в которых обратная косая \ используется как escape-символ:
Строки Строковая константа - это последовательность символов, заключенная в двойные кавычки: "это строка"
Вставляя численную константу в строку с помощью восьмеричной или шестнадцатеричной записи благоразумно всегда использовать число из трех цифр. Читать запись достаточно трудно и без необходимости беспокоиться о том, является ли символ после константы цифрой или нет. Разберите эти примеры: char v1[] = "a\x0fah\0129"; // 'a' '\xfa' 'h' '\12' '9' char v2[] = "a\xfah\129"; // 'a' '\xfa' 'h' '\12' '9' char v3[] = "a\xfad\127"; // 'a' '\xfad' '\127'
Ноль
Ноль (0) можно употреблять как константу любого целого, плавающего или указательного типа. Никакой объект не размещается по адресу 0. Тип нуля определяется контекстом. Обычно (но не обязательно) он представляется набором битов все-нули соответствующей длины. Const Ключевое слово const может добавляться к описанию объекта, чтобы сделать этот объект константой, а не переменной. Например: const int model = 145; const int v[] = { 1, 2, 3, 4 };
Перечисления
Есть другой метод определения целых констант, который иногда более удобен, чем применение const. Например: enum { ASM, AUTO, BREAK };
Перечень ссылок 1. Герберт Шилдт, Самоучитель С++, 3-е издание: BHV – Санкт-Петербург, 1998. – 688 с. 2. Рубенкинг Н. Программирование в Delphi для «чайников». 2-е издание – К.: «Диалектика», 1996. – 368 с. 3. Фаронов В.В. Delphi 4. Учебный курс.-М.: «Нолидж», 1999.-464 с.
Приложение А
#include <vcl.h> #pragma hdrstop
#include "About.h" #include "AlexWord.h" #include "LogoStrs.h" const float RulerAdj = 4.0/3.0; const int GutterWid = 6; #pragma link "CGRID" #pragma resource "*.dfm" TForm1 *Form1; __fastcall TForm1::TForm1(TComponent *Owner) : TForm(Owner) {
}
void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender) { char sizebuf[6]; try { FUpdating = True; ComboBox1->Text = RichEdit1->SelAttributes->Name; FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)-4+GutterWid; LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ RichEdit1->Paragraph->FirstIndent)*RulerAdj)-4+GutterWid; RightInd->Left = Ruler->ClientWidth-6-int( (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); if (CurrText()->Style==CurrText()->Style >> fsItalic) ToolButton17->Down=false; else ToolButton17->Down=true; if (CurrText()->Style==CurrText()->Style >> fsBold) ToolButton15->Down=false; else ToolButton15->Down=true; if (CurrText()->Style==CurrText()->Style >> fsUnderline) ToolButton3->Down=false; else ToolButton3->Down=true; Edit2->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); if (RichEdit1->Paragraph->Alignment == taLeftJustify) LeftAlign->Down=true; else LeftAlign->Down=false; if (RichEdit1->Paragraph->Alignment == taCenter) CenterAlign->Down=true; else CenterAlign->Down=false; if (RichEdit1->Paragraph->Alignment == taRightJustify) RightAlign->Down=true; else RightAlign->Down=false; if(RichEdit1->Paragraph->Numbering == TNumberingStyle(nsBullet)) ToolButton14->Down=true; else ToolButton14->Down=false; } catch (...) { FUpdating = False; } FUpdating = False; }
TTextAttributes *__fastcall TForm1::CurrText(void) { return RichEdit1->SelAttributes; }
void __fastcall TForm1::FileNew1Execute(TObject *Sender) { FFileName = LoadStr(sUntitled); RichEdit1->Lines->Clear(); RichEdit1->Modified = false; }
void __fastcall TForm1::FileOpen1Execute(TObject *Sender) { if (OpenDialog->Execute()) { RichEdit1->Lines->LoadFromFile(OpenDialog->FileName); FFileName = OpenDialog->FileName; RichEdit1->SetFocus(); RichEdit1->Modified = false; RichEdit1->ReadOnly = OpenDialog->Options.Contains(ofReadOnly); Form1->Caption = OpenDialog->FileName; } }
void __fastcall TForm1::FileSave1Execute(TObject *Sender) { if (FFileName == LoadStr(sUntitled)) { FileSaveAs1Execute(Sender); Form1->Caption = SaveDialog->FileName; } else { RichEdit1->Lines->SaveToFile(FFileName); RichEdit1->Modified = false; } }
void __fastcall TForm1::FileSaveAs1Execute(TObject *Sender) { String str; TVarRec vrs[1]; if (SaveDialog->Execute()) { if (FileExists(SaveDialog->FileName)) { str = FmtLoadStr(sOverwrite, OPENARRAY(TVarRec, (SaveDialog->FileName))); if (MessageDlg(str, mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0)!= IDYES) return; } RichEdit1->Lines->SaveToFile(SaveDialog->FileName); FFileName = SaveDialog->FileName; RichEdit1->Modified = false; } }
void __fastcall TForm1::CheckFileSave(void) { if (RichEdit1->Modified) { switch(MessageBox(Handle, "Save Changes?", "Confirmation",MB_YESNOCANCEL | MB_ICONQUESTION)) { case ID_YES : FileSave1Execute(this); case ID_CANCEL: Abort(); } } }
void __fastcall TForm1::FileExit1Execute(TObject *Sender) { Close(); }
void __fastcall TForm1::HelpAbout1Execute(TObject *Sender) { AboutBox->ShowModal(); }
void __fastcall TForm1::UndoClick(TObject *Sender) { if (RichEdit1->HandleAllocated()) SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); }
void __fastcall TForm1::PrintClick(TObject *Sender) { if (PrintDialog1->Execute()) RichEdit1->Print(OpenDialog->FileName); }
void __fastcall TForm1::Print_SetupClick(TObject *Sender) { PrinterSetupDialog1->Execute(); }
void __fastcall TForm1::FindClick(TObject *Sender) { FindDialog1->FindText = RichEdit1->SelText; FindDialog1->Execute(); }
void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int FoundAt, StartPos, ToEnd; if (RichEdit1->SelLength) StartPos = RichEdit1->SelStart + RichEdit1->SelLength; else StartPos = 0; ToEnd = RichEdit1->Text.Length() - StartPos; FoundAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd, TSearchTypes()<< stMatchCase); if (FoundAt!= -1) { RichEdit1->SetFocus(); RichEdit1->SelStart = FoundAt; RichEdit1->SelLength = FindDialog1->FindText.Length(); } }
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender) { if (RichEdit1->SelLength == 0) FindDialog1Find(Sender); else { RichEdit1->SelText = ReplaceDialog1->ReplaceText; FindDialog1Find(Sender); }
if (ReplaceDialog1->Options.Contains(frReplaceAll)) while (RichEdit1->SelLength!=0) ReplaceDialog1Replace(Sender); }
void __fastcall TForm1::ReplaceClick(TObject *Sender) { ReplaceDialog1->Execute(); }
void __fastcall TForm1::N5Click(TObject *Sender) { FontDialog1->Options << fdApplyButton; FontDialog1->Execute(); }
void __fastcall TForm1::FontDialog1Apply(TObject *Sender, HWND Wnd) { if (ActiveControl->ClassNameIs("TEdit")) ((TEdit *)ActiveControl)->Font->Assign(FontDialog1->Font); else if (ActiveControl->ClassNameIs("TRichEdit")) ((TRichEdit *)ActiveControl)->SelAttributes->Assign(FontDialog1->Font); else MessageBeep(0); }
void __fastcall TForm1::prClick(TObject *Sender) { ToolButton8->Visible=false; }
void __fastcall TForm1::rp1Click(TObject *Sender) { ToolButton8->Visible=true; }
void __fastcall TForm1::CenterAlignClick(TObject *Sender) { RichEdit1->Paragraph->Alignment = taCenter; }
void __fastcall TForm1::LeftAlignClick(TObject *Sender) { RichEdit1->Paragraph->Alignment = taLeftJustify; }
void __fastcall TForm1::RightAlignClick(TObject *Sender) { RichEdit1->Paragraph->Alignment = taRightJustify; }
void __fastcall TForm1::SetupRuler(void) { int iCtr = 1; char sTmp[201]; while (iCtr < 200) { sTmp[iCtr] = 9; iCtr++; sTmp[iCtr] = '|'; iCtr++; } Ruler->Caption = (AnsiString)sTmp; }
void __fastcall TForm1::FormCreate(TObject *Sender) { OpenDialog->InitialDir = ExtractFilePath(ParamStr(0)); SaveDialog->InitialDir = OpenDialog->InitialDir; SetupRuler(); for (int i = 0; i < Screen->Fonts->Count; i++) ComboBox1->Items->Add(Screen->Fonts->Strings[i]); RichEdit1->SelStart = 0; }
void __fastcall TForm1::ToolButton14Click(TObject *Sender) { if(RichEdit1->Paragraph->Numbering == TNumberingStyle(nsBullet)) RichEdit1->Paragraph->Numbering = TNumberingStyle(nsNone); else RichEdit1->Paragraph->Numbering = TNumberingStyle(nsBullet); }
void __fastcall TForm1::ComboBox1Change(TObject *Sender) { TCharsetObject* ChasrsetObject; if (!FUpdating){ ChasrsetObject = (TCharsetObject*)ComboBox1->Items->Objects[ComboBox1->ItemIndex]; CurrText()->Name = ComboBox1->Items->Strings[ComboBox1->ItemIndex]; } }
void __fastcall TForm1::ToolButton15Click(TObject *Sender) { if (CurrText()->Style == CurrText()->Style >> fsBold) CurrText()->Style = CurrText()->Style << fsBold; else CurrText()->Style = CurrText()->Style >> fsBold; }
void __fastcall TForm1::ToolButton17Click(TObject *Sender) { if (CurrText()->Style ==CurrText()->Style >> fsItalic) CurrText()->Style = CurrText()->Style << fsItalic; else CurrText()->Style = CurrText()->Style >> fsItalic; }
void __fastcall TForm1::Edit2Change(TObject *Sender) { int fontsize = atoi(Edit2->Text.c_str()); if ((!FUpdating) && (fontsize)) { CurrText()->Size = atoi(Edit2->Text.c_str()); } }
void __fastcall TForm1::ToolButton3Click(TObject *Sender) { if (CurrText()->Style ==CurrText()->Style >> fsUnderline) CurrText()->Style = CurrText()->Style << fsUnderline; else CurrText()->Style = CurrText()->Style >> fsUnderline; }
void __fastcall TForm1::FirstIndMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TLabel * oTmpLabel = (TLabel *)Sender; FDragOfs = oTmpLabel->Width / 2; oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; FDragging = True; }
void __fastcall TForm1::FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { FDragging = False; RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); LeftIndMouseUp(Sender, Button, Shift, X, Y); }
void __fastcall TForm1::LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { FDragging = False; RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ RulerAdj)-RichEdit1->Paragraph->FirstIndent; RichEdit1SelectionChange(Sender); }
void __fastcall TForm1::FirstIndMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (FDragging) { TLabel * oTmpLabel = (TLabel *)Sender; oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; } }
void __fastcall TForm1::RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { FDragging = False; RichEdit1->Paragraph->RightIndent = int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / RulerAdj)-2*GutterWid; RichEdit1SelectionChange(Sender); }
void __fastcall TForm1::RulerResize(TObject *Sender) { RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); }
void __fastcall TForm1::FormPaint(TObject *Sender) { TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, ClientHeight); SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct));; }
void __fastcall TForm1::FormResize(TObject *Sender) { RichEdit1SelectionChange(Sender); }
void __fastcall TForm1::FormActivate(TObject *Sender) { FileNew1Execute(Sender); RichEdit1->SetFocus(); }
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { try{ CheckFileSave(); } catch (...) { CanClose = False; } }
void __fastcall TForm1::NRulerClick(TObject *Sender) { if (Ruler->Visible==false) { Ruler->Visible=true; NRuler->Checked=true;} else {Ruler->Visible=false; NRuler->Checked=false; } }
void __fastcall TForm1::NPanelClick(TObject *Sender) { if (Panel1->Visible==false) { Panel1->Visible=true; NPanel->Checked=true; } else {Panel1->Visible=false; NPanel->Checked=false; } }
void __fastcall TForm1::NBarClick(TObject *Sender) { if (StatusBar->Visible==false) {StatusBar->Visible=true; NBar->Checked=true;} else { StatusBar->Visible=false; NBar->Checked=false; } } Кафедра ПО ЭВМ
Курсовой проект по дисциплине: «Основы программирования и алгоритмические языки»
Тема: «Разработка текстового редактора»
Харьков, 2000 г.
ХГТУРЭ
Кафедра ПО ЭВМ
Задание на курсовую работу по дисциплине «ОП и АЯ» ст. гр. ИСПР-99-2 Морашко А.Г.
Тема: «Разработка текстового редактора в Borland C++Builder»
І Разработать текстовый редактор, который имел бы такие возможности: · Открывать и сохранять текстовые файлы типа TXT или RTF · Возможности редактирования текста · Простой и удобный интерфейс
ІІ Константы. Их синтаксис и применение.
Дата выдачи задания: Дата защиты:
Студент: Морашко А.Г.
Руководитель:
Реферат
Данная работа содержит 30 страниц, включая приложение; 5 иллюстраций. Цель работы: создать, используя систему программирования C++Builder, текстовый редактор. Объект исследования: текстовый редактор, разработанный в C++Builder, умеющий редактировать файлы типа TXT и RTF. В перспективе планируется редактирование формата документов типа DOC. Ключевые слова: C++BUILDER, ТЕКСТОВЫЙ РЕДАКТОР, КОНСТАНЫ, ФОРМАТ ТЕКСТОВЫХ ФАЙЛОВ, ХАРАКТЕРИСТИКИ Содержание
Реферат.......................................................................................................................................... 3 Содержание................................................................................................................................... 4 Введение........................................................................................................................................ 5 1 Описание программы.............................................................................................................. 6 1.1 Основные характеристики........................................................................................... 6 1.2 Руководство для пользователя..................................................................................... 6 2.1 Константы...................................................................................................................... 14 2.1.1 Целые Константы.................................................................................................... 14 2.1.2 Константы с Плавающей Точкой.......................................................................... 15 2.1.3 Символьные Константы......................................................................................... 15 2.1.4 Строки...................................................................................................................... 16 2.1.5 Ноль.......................................................................................................................... 17 2.1.6 Const......................................................................................................................... 18 2.1.7 Перечисления.......................................................................................................... 19 Перечень ссылок....................................................................................................................... 21 Приложение А............................................................................................................................ 22
Несколько лет назад исследователи заметили, что программисты в течение определенного времени пишут и отлаживают приблизительно одинаковый по объему код, независимо от используемого языка программирования. Объем работы примерно тот же, но результаты разные. Написание 100 строк на С требует столько же затрат, сколько и 100 строк кода на ассемблере, но возможности кода на С гораздо шире. Поняв это, исследователи начали разрабатывать языки высокого уровня, которые увеличивали бы потенциал отдельного программиста, сокращая тем самым строки и стоимость разработки проектов. В 70-х годах среди создателей языков программирования приобрела популярность концепция объекта. Объект является совокупностью кода и данных, созданной для воспроизведения свойств физических объектов или абстрактных понятий. Объектно-ориентированное программирование – это методология, которая концентрируется больше на связях между объектами, чем на деталях реализации. Данные связи обычно развиваются по принципу деревьев, при этом новые типы объектов образуются уже из существующих. Сокрытие реализации объекта ведет к тому, что пользователя больше волнует связь с остальными объектами, чем поведение объекта. Данное отличие очень важно, поскольку оно означает принципиальный отказ от «императивных» языков (таких как С), в которых функции и вызовы функций составляют основу деятельности. В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C++Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность ООП проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в ООП.
|
|||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-03-14; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.147.122 (0.624 с.) |