
Лабораторная работа № 1
Работа со встроенным текстовым редактором интегрированной среды Borland C++ v3.1 (ИС BC) (3 занятия)
1 Цель работы
1) Закрепление теоретических сведений о командах редактора ИС BС.
2) Изучение особенностей выполнения команд редактора ИС BC.
3) Получение практических навыков работы с редактором.
2 Домашнее задание
1) Изучить назначения основных команд встроенного текстового редактора.
2) Подготовить ответы на контрольные вопросы, приведенные в разделе 5.
3) Привести в протоколе список команд с описанием, разделив их на группы: управления курсором, удаления и вставки, работы с блоками, поиска и замены.
3 Работа в лаборатории
1) Ознакомиться на практике с особенностями выполнения команд текстового редактора ИС BС.
2) Пользуясь изученными командами, ввести и отредактировать предложенный преподавателем исходный текст программы (смотри ниже) на языке “C”.
3) Сохранить текст программы на диске.
4) Добавить в начале файла комментарии с информацией указанной в ТРЕБОВАНИЯХ К ПРОГРАММЕ.
5) Используя команды поиска и замены, найти в тексте программы слово “goto” и поменять во всем тексте на слово “gotoxy”.
6) Выделить начало блока на первом символе строки, которая расположена перед строкой:
/* Прорисовка бордюра окна по координатам */
а конец блока перед строкой, которая предшествует строке:
Void main(void) /* Главная функция */
и перенести блок в конец файла.
7) Сохранить текст программы на диске.
4 Требования к отчету
1) Титульный лист.
2) Цель лабораторной работы.
3) Домашнее задание: список команд встроенного редактора ИС ВС.
4) Список команд, используемых при работе с текстом.
5) Выводы о проделанной работе.
5 Контрольные вопросы
1) Поясните значение параметров, отображаемых в верхней строке окна редактирования и укажите способы управления ими.
2) Перечислите основные и расширенные команды управления курсором и поясните особенности их выполнения.
3) Перечислите и поясните команды вставки и удаления.
4) Перечислите и поясните команды работы с блоками.
5) Поясните особенности выполнения команд поиска и замены.
6) Какая команда позволяет сохранить на диске файл, который находится в активном окне?
7) Какая команда отображает на экране блок диалога, позволяющий открыть файл?
8) Какая команда позволяет распахивать на весь экран активное окно?
9) Какая команда позволяет осуществлять циклическое перемещение от одного открытого окна к следующему?
10) Поясните назначение ИС BС
Програма
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
/***************** Объявление используемых функций *****************/
void menu(void);
void activ(int);
void func0(void);
void func1(void);
void func2(void);
void clear(int, int, int, int, int);
float edit(int x, int y, int kol, char *txt);
void win(int, int, int, int);
/*********************** Определение констант **********************/
#define BG BLUE /* TextBackground */
#define TC WHITE /* TextColor */
#define TA LIGHTRED /* TextActiv */
#define NumPos 3 /* Кол-во пунктов меню */
/********************** Глобальные переменные **********************/
char *TextMenu[NumPos]={ "File", "Edit", "Run"};
int xMenu[NumPos]=
{ 34, /* Позиция х первого пункта меню */
41, /* Позиция х второго пункта меню */
48}; /* Позиция х третьего пункта меню */
float C=0.15; /* Начальное значение емкости */
/*******************************************************************/
/* Прорисовка бордюра окна по координатам */
/*******************************************************************/
void win(int left, int top, int right, int bottom)
{
int i;
textcolor(TC); /* Установка цвета текста */
textbackground(BG); /* Установка цвета фона */
goto(left,top); /* Перемещение курсова в указанную позицию */
putch(201); /* Вывод псевдосимвола ╔ (Alt+201) */
for(i=left+1; i<right; i++)
putch(205); /* Вывод псевдосимвола ═ (Alt+205) */
putch(187); /* Вывод псевдосимвола ╗ (Alt+187) */
for(i=top+1; i<bottom; i++)
{
goto(right,i); /* Перемещение курсова в указанную позицию */
putch(186); /* Вывод псевдосимвола ║ (Alt+186) */
}
goto(right,bottom); /* Перемещение курсова в указанную позицию */
putch(188); /* Вывод псевдосимвола ╝ (Alt+188) */
for(i=right-1; i>left; i--)
{
goto(i,bottom);
putch(205); /* Вывод псевдосимвола ═ (Alt+205) */
}
goto(left,bottom);
putch(200); /* Вывод псевдосимвола ╚ (Alt+200) */
for(i=bottom-1; i>top; i--)
{
goto(left,i);
putch(186); /* Вывод псевдосимвола ║ (Alt+186) */
}
/* Заполнение цветом фона */
clear(left+1,top+1,right-1,bottom-1,BG);
}
/*******************************************************************/
/* Главная функция */
/*******************************************************************/
void main(void)
{
int ch; /* Выводимый символ */
int pos=0; /* Номер активного пункта меню */
/* Очистка экрана (заполнение цветом фона) */
clear(1,1,80,25,BLACK);
_setcursortype(_NOCURSOR); /* Выключение курсора */
do /* Цикл движения по пунктам меню */
{
menu(); /* Вывод не активных всех пунктов меню */
activ(pos); /* Активизация пункта меню */
/* Считывание кода нажатой клавиши */
if((ch=getch()) == 0) ch=getch();
if(ch == 77) /* Если нажата клавиша -> */
/* Меняем позицию курсора в меню */
if(++pos >= NumPos) pos = 0;
if(ch == 75) /* Если нажата клавиша <- */
if(--pos < 0) pos = NumPos-1;
/* Меняем позицию курсора в меню */
if(ch == 13) /* Если нажата клавиша Enter */
{
switch(pos)
{
case 0:
func0(); break; /* Функция первого пункта меню */
case 1:
func1(); break; /* Функция второго пункта меню */
case 2:
func2(); break; /* Функция третьего пункта меню*/
}
}
}
while(ch != 27); /* Пока не нажата клавиша Esc */
clear(1,1,80,25,BLACK); /* Очистка экрана */
_setcursortype(_NORMALCURSOR); /* Включение курсора */
} /* Конец программы */
/*******************************************************************/
/* Вывод не активных всех пунктов меню */
/*******************************************************************/