Смекни!
smekni.com

Удаление комментариев из текста программ (стр. 1 из 2)

Удаление комментариев из текста программ


Содержание

Введение

1. Постановка задачи

2. Основные особенности среды VisualC++

2.1 Описание алгоритма

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

3. Инструкции пользователя

Заключение

Литература

Приложение


Введение

Эволюция языков программирования с момента появления первых электронных компьютеров, построенных для выполнения расчётов траектории движения артиллерийских снарядов во время второй мировой войны, была довольно драматической. Раньше программисты работали с самыми примитивными компьютерными командами, представлявшими собой часть машинного языка. Эти команды состояли из длинных строк единиц и нулей. Вскоре были изобретены ассемблеры, которые могли отображать машинные команды в мнемоническом представлении, более понятном для человека (например, команды ADD или MOV).

Со временем появились такие языки высокого уровня, как BASIC и COBOL. Благодаря этим языкам появилась возможность программировать, используя логические конструкции из слов и предложений, например integerI = 100. Эти команды переводились в машинный язык то есть компилировались.Одно из основных преимуществ компилируемых языков программирования, состоит в том, что полученные программы могут выполняться на компьютерах без компиляции. При работе же с интерпретируемыми языками для выполнения готовой программы нужно обязательно иметь соответствующую программу-интерпретатор.

Следующей шагом в программировании стало появление визуальных сред программирования таких, как Visual C++ , позволяющих использовать визуальные компоненты, не описывая их самому , а брать их из библиотеки стандартных элементов . Это позволяет ускорить написание программ, облегчая тем самым работу программиста . А также позволяет использовать все возможности программирования под Windows, используя при этом относительно не сложные алгоритмы и функции. В связи с выше изложенным нами было выбрана для разработки проекта среда Visual C++ 6.0


1. Постановка задачи

В данном курсовом проекте необходимо разработать программу с использованием функций библиотеки MFC:

– Удаление комментариев из текстов программ;

– Автоматический выбор языка, на котором написана программа;

– Сохранение результата в файл.


2. Основные особенности среды VisualC++

Среда VisualC++ – это сложный механизм, обеспечивающий высокоэффективную работу программиста. Создание прикладных программ, или приложений выполняется в интегрированной среде разработки IDE (IntegratedDevelopmentEnvironment). IDE служит для организации взаимодействия с программистом и включает ряд окон, содержащих различные управляющие элементы. С помощью средств интегрированной среды разработчик может проектировать интерфейсную часть приложения, а также писать программный код и связывать его с управляющими элементами. При этом вся работа по созданию приложения, включая отладку, происходит в IDE.

Интегрированная среда разработки VisualC++ представляет собой многооконную систему. Вид интегрированной среды разработки (интерфейс) может различаться в зависимости от настроек. Кроме стандартных окон, на экране могут присутствовать и другие окна, отображаемые при вызове соответствующих средств, например, ImageEditor (Редактор изображений). Окна VisualC++ (но не главное) можно перемещать, убирать с экрана, а также изменять их размеры.Одной из последних версий стал MicrosoftVisualC++ 6.0. VisualC++ 6.0, вобрав в себя всё самое лучшее от предыдущих версий, предоставляет ряд новых возможностей. Так, например, стал более удобным и современным интерфейс среды программирования, создаваемые VisualC++ программы учитывают архитектуру современных процессоров, существенно расширены возможности отладчика.

VisualC++ 6.0 может работать в среде операционных систем от Windows 95 до Windows 2000 и WindowsXP. Особенных требований к компьютеру система не предъявляет, за исключением того, что процессор должен быть типа Pentium, оперативной памяти – не менее 32 Мбайт и достаточное количество свободной дисковой памяти (порядка 200 Мбайт).


2.1 Описание алгоритма

Согласно условию курсового проекта был разработан алгоритм удаления комментариев из текстов программ. Суть алгоритма заключается в том, что при нажатии кнопки "Удалить комментарии" происходит открытие файла, указанного в верхнем текстовом окне, определение языка, на котором написана программа, удаление из него комментариев и запись в файл, указанный в нижнем текстовом окне.

Удаление комментариев возможно из текстов программ, написанных на следующих языках: C и С++, Pascal, Basic и Assembler.

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

Данное приложение состоит из трех классов: CKursApp, CKursDlg и CSelectLangDlg. Все основные функции содержатся во втором классе, т.к. именно он отвечает за поведение диалогового окна. Работа программы основана на двух функциях: RemoveOneLineComments и RemoveMultiLineComments. Реализация второй является довольно простой. В нее передаются три параметра: исходный текст, символ открывающего комментария и символ закрывающего комментария. В тексте осуществляется поиск открывающих комментариев и парных им закрывающих, содержимое между ними удаляется.

Удаление однострочных комментариев более сложное из-за того, что в отдельных языках, например в Бейсике, строки могут переноситься и однострочный комментарий становится подобным многострочному. В функцию передаются четыре параметра: исходный текст, символ комментария, параметр, определяющий наличие переносов и сам символ переноса. Работа функции заключается в следующем. Исходный текст разбивается на строки, которые заносятся в массив. Затем производится поиск символа комментария. Если он найден, проверяется, есть ли в данной строке перенос. Строка или ее часть после комментария удаляется. При наличии переноса удаляется также и следующая строка.

Определение языка производится по расширению. Если расширение неизвестно, у пользователя запрашивается тип файла. Затем производится удаление комментариев и в случае успешного завершения выдается сообщение.

Результаты сохраняются в указанном файле.


3. Инструкция пользователя

Запуск программы осуществляется при открытии файла kurs.exe, который находится на дискете. При этом на экране появиться окно, в левой верхней части которого будет видна надпись "Удаление комментариев из текста программы " – это имя программы. Для работы необходимо указать исходный и конечный файлы, введя их пути в текстовые окна или выбрав их в диалоге выбора. Если файл имеет неизвестное программе расширение, необходимо дополнительно выбрать язык в диалоге, который автоматически появляется после выбора файла. Затем необходимо нажать кнопку "Удалить комментарии". Если текст программы не содержит некорректно расставленных комментариев, выдается сообщение об успешном выполнении операции.

Системные требования: Pentium 100 , 16 MBRAM, Windows 95/98/2000 NT/XP.


Заключение

В ходе выполнения данного курсового проекта были разработана программа на языке высокого программирования VisualC++. Также изучены графические возможности данного языка.

Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса "Программирование". Основное внимание уделено изучению современных операционных систем, способов проектирования приложений, объектно-ориентированному и системному программированию.

При выполнении курсового проекта произведено знакомство с реферативными журналами и другими информационными источниками по объектно-ориентированному и системному программированию с целью анализа состояния решаемой задачи.

Получены практические навыки работы в среде VisualC++ и в графической среде разработки.


Литература

1. Петзольд Ч. Программирование под Windows 95. В двух книгах: BHV – Санкт - Петербург, 2007, silt.

2. Ричард С.Линкер, Том Арчер. Программирование для Windows7. Библияразработчика. "Диалектика " – Москва, 2009.-864 с.: ил.- Парал. тит. англ.Уч.пос.

3. Джесс Либерти. С++ за 21 день. "Вильямс" - Москва, 2000.-816 с.: ил. .-Парал.тит. англ.


Приложение

Файл kursDlg.cpp

// kursDlg.cpp : implementation file

//

#include "stdafx.h"

#include "kurs.h"

#include "kursDlg.h"

#include "SelectLangDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

#define LANG_CPP 1

#define LANG_PASCAL 2

#define LANG_BASIC 3

#define LANG_ASM 4

/////////////////////////////////////////////////////////////////////////////

// CKursDlg dialog

CKursDlg::CKursDlg(CWnd* pParent /*=NULL*/)

: CDialog(CKursDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CKursDlg)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CKursDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CKursDlg)

// NOTE: the ClassWizard will add DDX and DDV calls here

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CKursDlg, CDialog)

//{{AFX_MSG_MAP(CKursDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BTNSOURCE, OnBtnsource)

ON_BN_CLICKED(IDC_BTNMAKE, OnBtnmake)

ON_BN_CLICKED(IDC_BTNDEST, OnBtndest)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CKursDlg message handlers

BOOL CKursDlg::OnInitDialog()

{

CDialog::OnInitDialog();

/ Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);// Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

m_lang = LANG_CPP;

m_name = "";

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}

void CKursDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

CDialog::OnSysCommand(nID, lParam);

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CKursDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags