Автор: Пользователь скрыл имя, 26 Октября 2011 в 22:24, курсовая работа
Ознайомлення з програмним забезпеченням для перекладу початкового коду з одних мов програмування на інші.
Розглянуто відповідні засоби для ОС Windows та Linux.
Завдання на курсову роботу 3
Теоретична частина 4
Практична частина 6
3.1 Конвертери мов програмування для ОС Linux 6
3.1.1 Програма OpenCobol 6
3.1.1 Програма F2C 13
3.2 Конвертери мов програмування для ОС Windows 15
3.2.1 Програма BCX 15
Висновки 22
Список використаної літератури
Це ми можемо побачити на рисунку 8.
Рис.
8. BCX to EXE Tool
Після цього у каталозі, де знаходився наш файл hello.bas з’явилися файли hello.C, hello.exe і hello.obj.
Відкриємо
файл hello.C, щоб подивитися на перекладений
код з мови Basic на мову С. Вміщуване файлу:
// ******************************
// Created with BCX32 - BASIC To C/C++ Translator (V) 6.00 (2009/06/02)
// BCX (c) 1999 - 2009 by Kevin Diggins
// ******************************
// Translated for compiling with a C Compiler
// ******************************
#include <windows.h> // Win32 Header File
#include <windowsx.h> // Win32 Header File
#include <commctrl.h> // Win32 Header File
#include <commdlg.h> // Win32 Header File
#include <mmsystem.h> // Win32 Header File
#include <shellapi.h> // Win32 Header File
#include <shlobj.h> // Win32 Header File
#include <richedit.h> // Win32 Header File
#include <wchar.h> // Win32 Header File
#include <objbase.h> // Win32 Header File
#include <ocidl.h> // Win32 Header File
#include <winuser.h> // Win32 Header File
#include <olectl.h> // Win32 Header File
#include <oaidl.h> // Win32 Header File
#include <ole2.h> // Win32 Header File
#include <oleauto.h> // Win32 Header File
#include <conio.h>
#include <direct.h>
#include <ctype.h>
#include <io.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
#include <setjmp.h>
#include <time.h>
#include <stdarg.h>
#include <process.h>
// ******************************
// Compiler Defines
// ******************************
// C++
#if defined( __cplusplus )
#define overloaded
#define C_EXPORT EXTERN_C __declspec(dllexport)
#define C_IMPORT EXTERN_C __declspec(dllimport)
#else
#define C_EXPORT __declspec(dllexport)
#define C_IMPORT __declspec(dllimport)
#endif
// Open Watcom defs
#if defined( __WATCOM_CPLUSPLUS__ ) || defined( __TINYC__ )
#define atanl atan
#define sinl sin
#define cosl cos
#define tanl tan
#define asinl asin
#define acosl acos
#define log10l log10
#define logl log
#define _fcloseall fcloseall
#endif
// Borland C++ 5.5.1 defs - bcc32.exe
#if defined( __BCPLUSPLUS__ )
// ===== Borland Libraries ==========
#include <dos.h>
#pragma comment(lib,"import32.lib")
#pragma comment(lib,"cw32.lib")
// ==============================
#endif
// Microsoft VC++
#ifndef DECLSPEC_UUID
#if (_MSC_VER >= 1100) && defined ( __cplusplus )
#define DECLSPEC_UUID(x) __declspec(uuid(x))
#else
#define DECLSPEC_UUID(x)
#endif
#endif
#if !defined( __LCC__ )
// ******************************
// Instruct Linker to Search Object/Import Libraries
// ******************************
#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"gdi32.lib")
#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"advapi32.lib")
#pragma comment(lib,"winspool.lib")
#pragma comment(lib,"shell32.lib")
#pragma comment(lib,"ole32.lib")
#pragma comment(lib,"oleaut32.lib")
#pragma comment(lib,"uuid.lib")
#pragma comment(lib,"odbc32.lib")
#pragma comment(lib,"odbccp32.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"comdlg32.lib")
#pragma comment(lib,"imagehlp.lib")
#pragma comment(lib,"version.lib")
#else
#pragma lib <winspool.lib>
#pragma lib <shell32.lib>
#pragma lib <ole32.lib>
#pragma lib <oleaut32.lib>
#pragma lib <uuid.lib>
#pragma lib <odbc32.lib>
#pragma lib <odbccp32.lib>
#pragma lib <winmm.lib>
#pragma lib <imagehlp.lib>
#pragma lib <version.lib>
// ******************************
// End of Object/Import Libraries To Search
// ******************************
#endif
// ******************************
// User Global Initialized Arrays
// ******************************
// ******************************
// Main Program
// ******************************
int main(int argc, char *argv[])
{
printf("%s\n","Hello World!");
return 0; // End of main program
}
// ******************************
// Runtime Functions
// ******************************
Крім конвертування програма BCX виконує і інші функції. Розглянемо додатки, які ще входять до її складу.
BCX Menu Maker
BCX Menu Maker – додаток, який полегшує створення меню. BCX Menu Maker створює функцію, яку можна включати у вашу програму для простішого створення меню. Вона може додавати відповідні гарячі клавіші в меню. Після завершення, програма запише функцію у файл (BCX_Menu_Maker.bas), а також помістить його в буфер обміну Windows, щоб можна було вставити у вашу програму. Або ви можете використовувати $INCLUDE "BCX_MENU_MAKER.BAS" у вашій програмі.
Вікно цієї програми бачимо на рисунку 9.
Рис. 10.
Робоче вікно додатку
BCX Menu Maker
BCX MsgBox Builder
BCX MsgBox Builder – додаток, за допомогою якого можна створювати клас MessageBox вікон повідомлень і додавати їх у свої програми. Наприклад, нехай вікно нашого повідомлення буде мати назву Вихід. Зміст повідомлення буде: «Ви дійсно хочете покинути нашу програму?» Можливі варіанти відповіді: «Так, Ні, Відмінити.» Так, як це в нас питання, то значок нехай буде Question.(рис. 11)
Рис. 11 Заповнення вікна BCX MsgBox Builder
Натиснемо на кнопку Test it і отримаємо таке вікно повідомлення(рис. 12):
Рис.
12 Вікно повідомлення
Вихід.
Тепер, натиснувши кнопку Make it, отримаємо повідомлення про те, що Basic MessageBox помістилося в буфер обміну і ми можемо вставити його в нашу програму.(рис. 13):
Рис.
13 Повідомлення про
успішне створення вікна
повідомлення.
При
вставленні з буфера обміну можна
побачити такий код:
Dim MyMsg$
MyMsg$ = _
"Ви
дійсно хочете
покинути нашу
програму?"
MessageBox(GetActiveWindow(),
Jen's File Editor
До пакету BCX також додатково входить додаток Jen's File Editor. Це досить простий, легкий у використання файловий редактор програмування. Він не вимагає установки.
Ось деякі ключові особливості Jen's File Editor:
· Редагування блоків
· Управління кольором
· Підсвічування синтаксису
· Печатки
· Функція пошуку
· Закладки
· Спеціальні налаштування
· Меню інструментів
· Містить Типові шаблони для проекту в HTML
· Контекстне меню
· Макроси
·
Функціональні клавіші
Робоче
вікно Jen's File Editor виглядає, як на рисунку
14.
Рис. 14 Робоче вікно додатку Jen's File Editor
4. Висновки
Ознайомившись з роботою програм-конвертерів BCX, F2C, OpenCobol, виконуючи курсову роботу, я зрозуміла, що автоматично конвертовані програми зазвичай істотно гірші, ніж розроблені в рамках цільової мови від початку до кінця. Зрозуміло, що в ідеалі результат перетворень повинен виглядати так, як ніби він був написаний на цільовій мові з використанням всіх його особливостей, однак реальні результати конвертації часто зберігають ідеологію вихідного мови. Багато хто очікує, що структура програми після автоматизованих перетворень може тільки покращитися, але концептуальні зміни програм практично завжди пов'язані з великим обсягом ручної роботи.