Функциональное проектирование
Содержание
ВВЕДЕНИЕ.. 5
ПОСТАНОВКА ЗАДАЧИ.. 6
1. Анализ решаемой проблемы.. 7
2. СИСТЕМНОЕ ПРОЕКТИРОВАНИЕ.. 8
2.1 Разработка структуры приложения и структуры данных
2.2 Разработка спецификаций функций. 9
3. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ.. 10
3.1 Разработка обобщенного алгоритма функционирования приложения. 10
3.2 Разработка спецификаций методов (назначение метода, описание вызова, типов
передаваемых и возвращаемых данных, ограничений, выдаваемых сообщений)……………………………………………………………………………...11
3.2 Разработка программного кода приложения. ….13
4. Результаты тестирования приложения. Используемые тесты.. 14
5. Описание приложения, инструкция по его использованию.. 16
ЗАКЛЮЧЕНИЕ.. 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 20
Приложение. 21
ВВЕДЕНИЕ
Широкое распространение новых информационных технологий привело к радикальным изменениям всей хозяйственной деятельности на территории Республики Беларусь, связанной с обслуживанием населения.
Тем не менее, при использование современных информационных технологий и компьютерных сетей способствует значительным изменениям их роли в организации рабочего места и доступности информации.
Активно внедряя автоматизацию в производственные процессы, руководство Министерства образования четко определило главную цель: повышение качества знаний учащихся, создание оптимальных условий работы преподавателей. Успех в этой работе во многом зависит от того, насколько технологически грамотно весь этот сложный программно-технический комплекс будет использован для главной цели его создания - эффективного обслуживания населения.
ПОСТАНОВКА ЗАДАЧИ
Необходимо разработать программное обеспечение для автоматизированного рабочего места завуча, позволяющее автоматизировать контроль успеваемости учащихся школы , выводило информацию об текущих оценках и средний балл. На данный момент завуч записывает всю информацию об учащихся вручную в журнал успеваемости. Она показала, какие формы используются для ведения журнала:
· личный номер ученика
· список учащихся
· текущие оценки
· средний балл
В приложении должны быть реализованы следующие модули:
- ввод данных в базу;
- добавление данных в базу;
- вывод данных из базы, на монитор для просмотра;
- сортировка записей базы по алфавиту и последующего их вывода на монитор в удобном для просмотра виде;
- поиск элемента;
- модуль удаления данных из базы.
Анализ решаемой проблемы
Вначале нужно определить, кто будет являться действующими субъектами. Кто будет вводить информацию? Кто будет запрашивать? Будет ли кто-либо ещё взаимодействовать с программой? Будет ли сама программа взаимодействовать с другими программами ?
С данным программным продуктом работает один человек — завуч. Таким образом, один и тот же человек вводит информацию и просматривает её в разных видах. Однако программой могут воспользоваться другие учителя или родители учащихся.
Системное проектирование
Для работы программы требуется PC совместимый компьютер и компилятор Microsoft Visual C++ . При использовании иного сочетания характеристик системы, на которой будет использоваться программа, возможны некоторые расхождения с результатами работы.
2.1 Разработка спецификаций функций
Для решения поставленных задач необходимо разработать следующие функции:
void look()
//вывод информации на экран
void enter()
//ввод данных
void poisk()
//поиск записи
void sort()
//сортировка данных
void redac()
//редактирование данных
void delet()
//удаление записи
Так как разрабатываемая программа состоит из подпрограмм, то реализация вышеописанных функций на языке С++ представлена в Приложении .
Ввод данных в базу
Для ввода данных в базу выбираем пункт 2 и нажимаем Enter, после чего вводим нужное нам личный номер, фамилию, имя, отчество, текущие оценки, по окончании ввода нажимаем на клавишу Enter. Далее следуем указаниям системы:
Личный номер – 123 ФИО – Петров Валерий Алексеевич Математика - 9 ……. Биология - 8 Для выхода в главное меню <1> для выхода <2> |
При выборе в последнем запросе 1 происходит выход в Главное меню.
Сортировка
Для сортировки записи в базе выбираем пункт 5 и нажимаем Enter, после чего на запрос вводим нужный нам пункт , по окончании ввода нажимаем на клавишу Enter. Система сортирует данные и по завершении сортировки возвращает нас (пользователя) в Главное меню:
Сортировка по: 1 – Личному номеру 2 – По фамилии 3 – Среднему баллу : |
Поиск
Для поиска нужного элемента и вывода информации о нем выбираем пункт 4 и нажимаем Enter, после чего на запрос вводим личный номер ученика, по окончании ввода нажимаем на клавишу Enter. Система выводит искомую запись .
4 |Данильчук| Валерий| Валерьевич| 8|7| 7| 7| 7| 9| 7| 8| 8| 7| 6| 8| 7| 7,4 11|Петров | Валерий |Алексеевич | 9| 9| 9| 9| 9| 9| 9| 9| 9 |9 |9 |9 |9 |9 Поиск по личному номеру:4 4 |Данильчук| Валерий| Валерьевич| 8|7| 7| 7| 7| 9| 7| 8| 8| 7| 6| 8| 7| 7,4 Для выхода в главное меню <1> для выхода <2> |
Удаление
Чтобы воспользоваться удалением записи выбираем пункт 6 и нажимаем Enter, после чего на запрос вводим личный номер удаляемого по окончании ввода нажимаем на клавишу Enter. Система удаляет запись.
4 |Данильчук| Валерий| Валерьевич| 8|7| 7| 7| 7| 9| 7| 8| 8| 7| 6| 8| 7| 7,4 11|Петров | Валерий |Алексеевич | 9| 9| 9| 9| 9| 9| 9| 9| 9 |9 |9 |9 |9 |9 Введите личный номер ученика который нужно удалить:11 Для выхода в главное меню <1> для выхода <2> |
Вывод информации
Для вывода статистической информации выбираем пункт 1 и нажимаем Enter, после чего на экран выводятся все данные в виде таблицы:
4 |Данильчук| Валерий| Валерьевич| 8|7| 7| 7| 7| 9| 7| 8| 8| 7| 6| 8| 7| 7,4 11|Петров | Валерий |Алексеевич | 9| 9| 9| 9| 9| 9| 9| 9| 9 |9 |9 |9 |9 |9 Для выхода в главное меню <1> для выхода <2> |
Выход
Выход из программы осуществляется при выборе пункта 7 Главного меню.
Главное меню 1 - Просмотр …. 2 - Ввод….. 3 - Редактирование …… 4 - Поиск… 5 - Сортировка … 6 - Удаление записи 7- Выход Press any key to continue |
ЗАКЛЮЧЕНИЕ
При выполнении курсового проекта были пройдены все этапы разработки специализированного прикладного программного обеспечения:
· формализация задачи;
· сбор необходимых исходных данных, используемых в программе;
· составление блок-схемы алгоритма решения задачи и программы.
В курсовой работе были рассмотрены существующие процедуры ввода, вывода, поиска, сортировки и редактирования информации . На основании рассмотренных процедур была создана программа, позволяющая быстро и качественно обрабатывать информацию необходимую для ведения журнала успеваемости учащихся, которая автоматизировала роботу преподавателя в данном напровлении.
Подводя итоги, следует отметить, что переход на качественно новый уровень информационного обслуживания пользователей возможен только путем внедрения новых технологий в практику работы. И поэтому при принятии новых решений (технологических, организационных, структурных, методических) мы не должны игнорировать тот факт, что главное для пользователя компьютеризированного журнала - не только оперативно найти необходимую информацию о ученике, но и оперативно, с сервисом получить его в электронном виде.
Приложение
#include <iostream>
#include <fstream>
#include <windows.h>
#include <cstdlib>
#include <iomanip>
#include <conio.h>
using namespace std;
const char *file="jurnal";
char *r (char *buf);
char a[256];
char *r(char *b)
{
CharToOem(b,a); return a;
}
inline void eatline()
{ while (cin.get()!='\n')continue;}
struct Stud
{
int number;
char fam[15];
char name[15];
char otchestvo[15];
double istor_bel;
double informatic;
double fizika;
double matem;
double bel_yz;
double bel_lit;
double rus_yz;
double rus_lit;
double chog;
double in_yz;
double fizra;
double biologia;
double geografiy;
double sredni_ball;
};
class Base
{
int a,num,j,b, g;
public:
Stud ob;
void menu()
{
system("cls");
cout<<r(" Êîíòðîëü óñïåâàåìîñòè ó÷àùèõñÿ Ñع 3\n")<<endl;
cout<<r(" 1.Ïðîñìîòð")<<endl;
cout<<r(" 2.Ââîä")<<endl;
cout<<r(" 3.Ðåäàêòèðîâàíèå")<<endl;
cout<<r(" 4.Ïîèñê")<<endl;
cout<<r(" 5.Ñîðòèðîâêà")<<endl;
cout<<r(" 6.Óäàëåíèå")<<endl;
cout<<r(" 7.Âûõîä")<<endl;
a=_getch();
switch (a)
{
case '1':look();next(); break;
case '2':enter();next(); break;
case '3':redac(); next(); break;
case '4': poisk();next(); break;
case '5':sort(); next(); break;
case '6': delet();next(); break;
case '7':exit(1); break;
default:cout<<r("Îøèáêà ïîâòîðèòå ââîä!!!");}}
void next()
{
cout<<r("Äëÿ âûõîäà â ãëàâíîå ìåíþ íàæìèòå (1) äëÿ âûõîäà (2)")<<endl;
a=_getch();
switch (b)
{
case '1': menu(); break;
case '2':exit(1);}}
void proverka()
{fstream fil;
fil.open(file,ios::out | ios::in | ios::binary);
if (!file)
{cout<<r(" Ôàéë íå íàéäåí !!!")<<endl; system("pause");}
fil.close();}
void look()
{ system("cls");
Stud ob;
ifstream in;
in.open(file, ios::in | ios::binary);
if (!in){
cout<<r("Îøèáêà");}
cout<<"********************************************************************************"<<endl;
while(in.read((char*)&ob,sizeof ob))
cout<<"|"<< setw (2)<< ob.number<<"|"<<setw(10)<<ob.fam<<"|"<<setw(8)<<ob.name<<"|"
<<setw(13)<<ob.otchestvo<<"|"<<setw(2)<< ob.matem<<"|"<<setw(2)<<ob.bel_yz<<"|"
<<setw(2)<<ob.bel_lit<<"|"<<setw(2)<<ob.rus_yz<<"|"<<setw(2)<<ob.rus_lit<<"|"
<<setw(2)<<ob.informatic<<"|"<<setw(2)<<ob.in_yz<<"|"<<setw(2)<<ob.chog<<"|"
<<ob.istor_bel<<"|"<<setw(2)<<ob.geografiy<<"|"<<setw(2)<<ob.fizika<<"|"<<setw(2)
<<ob.biologia<<"|"<<setw(2)<<ob.fizra<<"|"<<setw(4)
<<setprecision(2)<<ob.sredni_ball<<"|"<<endl;
cout<<"***************************************************"<<endl;
in.close();
}
void enter()
{
Stud ob;
ofstream out;
out.open(file, ios::out | ios::app | ios::binary);
if (!out)
{
cout<<r("Îøèáêà");
}
system("cls");
cout<<r("Ëè÷íûé íîìåð:");
cin >>ob.number;
eatline();
cout<<r ("Ôàìèëèÿ:");
cin.getline(ob.fam,15);
cout<<r("Èìÿ:");
cin.getline(ob.name,15);
cout<<r("Îò÷åñòâî:");
cin.getline(ob.otchestvo,15);
cout<<r("Ìàòåìàòèêà:");
cin>>ob.matem;
cout<<r("Áåëîðóññêèé ÿçûê:");
cin>>ob.bel_yz;
cout<<r("Áåëîðóññêàÿ ëèòåðàòóðà:");
cin>>ob.bel_lit;
cout<<r("Ðóññêèé ÿçûê:");
cin>>ob.rus_yz;
cout<<r("Ðóññêàÿ ëèòåðàòóðà:");
cin>>ob.rus_lit;
cout<<r("Èíîñòðàííûé ÿçûê:");
cin>>ob.in_yz;
cout<<r("Èíôîðìàòèêà:");
cin>>ob.informatic;
cout<<r ("Ôèçèêà:");
cin>>ob.fizika;
cout<<r("Èñòðîðèÿ Áåëàðóñè:");
cin>>ob.istor_bel;
cout<<r("×.Î.Ã:");
cin>>ob.chog;
cout<<r("Ãåîãðàôèÿ:");
cin>>ob.geografiy;
cout<<r("Áèîëîãèÿ:");
cin>>ob.biologia;
cout<<r("Ô-ðà:");
cin>>ob.fizra;
ob.sredni_ball=(ob.matem+ob.bel_yz+ob.informatic+ob.bel_lit+ob.in_yz+ob.rus_yz+ob.rus_lit+ob.biologia+ob.istor_bel+ob.chog+ob.fizika+ob.fizra+ob.geografiy)/13; eatline();
out.write((char*)&ob, sizeof ob);
out.close();
system("pause");
}
void poisk()
{
system("cls");
int temp;
Stud ob;
fstream poisk(file, ios::in | ios::binary);
look();
cout<<r("Ïîèñê ïî ëè÷íîìó íîìåðó:")<<endl;
cin>>temp;
eatline();
while(true){
poisk.read((char*)&ob,sizeof (Stud));
if(poisk.eof())
{cout<<"net "<<temp<<endl;return;}
if (temp==ob.number)
{
cout<<"*****************************************************************************"<<endl;
cout<<"|"<< setw (2)<< ob.number<<"|"<<setw(10)<<ob.fam<<"|"<<setw(8)<<ob.name<<"|"
<<setw(13)<<ob.otchestvo<<"|"<<setw(2)<< ob.matem<<"|"<<setw(2)<<ob.bel_yz<<"|"
<<setw(2)<<ob.bel_lit<<"|"<<setw(2)<<ob.rus_yz<<"|"<<setw(2)<<ob.rus_lit<<"|"
<<setw(2)<<ob.informatic<<"|"<<setw(2)<<ob.in_yz<<"|"<<setw(2)<<ob.chog<<"|"
<<ob.istor_bel<<"|"<<setw(2)<<ob.geografiy<<"|"<<setw(2)<<ob.fizika<<"|"<<setw(2)
<<ob.biologia<<"|"<<setw(2)<<ob.fizra<<"|"<<setw(4)
<<setprecision(2)<<ob.sredni_ball<<"|"<<endl;
cout<<"*****************************************************************************"<<endl;
return;}}
}
void sort()
{
system("cls");
fstream sort;
sort.open(file, ios::in | ios::binary);
Stud ob[1000];
Stud tem;
int count = 0;
while(!sort.eof())
{
sort.read((char*)&ob[count],sizeof(Stud)); count++;
} count--;
cout<<r("Ñîðòèðîâêà ïî:\n1 -Ëè÷íîìó íîìåðó\n2 - Ïî ôàìèëèå\nÇ - Ñðåäíåìó áàëëó: ");
int a;
cin>> a;
eatline();
if(a==1)
{
for(int i=0;i<count;i++)
for(int j=0;j<count;j++)
{
if(ob[i].number<ob[j].number)
{
tem=ob[i];
ob[i]=ob[j];
ob[j]=tem;}}
if(a==2)
for(int i=0;i<count;i++)
for(int j=0;j<count;j++)
if(ob[i].fam[0]<ob[j].fam[0])
{
tem=ob[i];ob[i]=ob[j];
ob[j]=tem;
}}
else if(a==3)
for(int i=0;i<count;i++)
for(int j=0;j<count;j++)
if(ob[i].sredni_ball<ob[j].sredni_ball)
{tem=ob[i]; ob[i]=ob[j];
ob[j]=tem;}
sort.close(); sort.clear();
sort.open(file, ios::out | ios::binary);
for (a = 0; a < count; a++)
sort. write((char*)&ob[a],sizeof (Stud)); sort.close();}
//////////////////////////////////////////////////
void redac()
{system("cls");
int t=0;
Stud ob[ 1000];
fstream del;
del.open(file, ios::in | ios::out | ios::binary);
if (!del.is_open()){ cout <<r("Îøèáêà!!!")<< endl; exit(1);}
int count = 0;
while (!del.eof())
{
del.read((char*)&ob[count], sizeof(Stud));
count++;}
look();
count--;
cout<<r ("Ââåäèòå ëè÷íûé íîìåð ó÷åíèêà äëÿ ðåäàêòèðîâàíèÿ: ");
double number;
cin >>number;
del.close();
del.clear();
del.open(file, ios::out | ios::binary);
for (int x = 0; x < count; x++)
if (ob[x].number!=number)
del.write((char*)&ob[x],sizeof (Stud));
enter();
del.close();}
void delet()
{
system("cls");
int t=0;
Stud ob[ 1000];
fstream del;
del.open(file, ios::in | ios::out | ios::binary);
if (!del.is_open()){ cout <<r("Îøèáêà!!!")<< endl; exit(1);}
int count = 0;
while (!del.eof())
{
del.read((char*)&ob[count], sizeof(Stud));
count++;
}
look();
count--;
cout<<r ("Ââåäèòå ëè÷íûé íîìåð ó÷åíèêà êàòîðîãî íàäî óäàëèòü: ");
double number;
cin >>number;
del.close();
del.clear();
del.open(file, ios::out | ios::binary);
for (int x = 0; x < count; x++)
if (ob[x].number!=number)
del.write((char*)&ob[x],sizeof (Stud));
del.close();
}};
void main()
{
Base ob;
ob.proverka();
while (1)
{ ob.menu();
}}
Содержание
ВВЕДЕНИЕ.. 5
ПОСТАНОВКА ЗАДАЧИ.. 6
1. Анализ решаемой проблемы.. 7
2. СИСТЕМНОЕ ПРОЕКТИРОВАНИЕ.. 8
2.1 Разработка структуры приложения и структуры данных
2.2 Разработка спецификаций функций. 9
3. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ.. 10
3.1 Разработка обобщенного алгоритма функционирования приложения. 10
3.2 Разработка спецификаций методов (назначение метода, описание вызова, типов
передаваемых и возвращаемых данных, ограничений, выдаваемых сообщений)……………………………………………………………………………...11
3.2 Разработка программного кода приложения. ….13
4. Результаты тестирования приложения. Используемые тесты.. 14
5. Описание приложения, инструкция по его использованию.. 16
ЗАКЛЮЧЕНИЕ.. 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 20
Приложение. 21
ВВЕДЕНИЕ
Широкое распространение новых информационных технологий привело к радикальным изменениям всей хозяйственной деятельности на территории Республики Беларусь, связанной с обслуживанием населения.
Тем не менее, при использование современных информационных технологий и компьютерных сетей способствует значительным изменениям их роли в организации рабочего места и доступности информации.
Активно внедряя автоматизацию в производственные процессы, руководство Министерства образования четко определило главную цель: повышение качества знаний учащихся, создание оптимальных условий работы преподавателей. Успех в этой работе во многом зависит от того, насколько технологически грамотно весь этот сложный программно-технический комплекс будет использован для главной цели его создания - эффективного обслуживания населения.
ПОСТАНОВКА ЗАДАЧИ
Необходимо разработать программное обеспечение для автоматизированного рабочего места завуча, позволяющее автоматизировать контроль успеваемости учащихся школы , выводило информацию об текущих оценках и средний балл. На данный момент завуч записывает всю информацию об учащихся вручную в журнал успеваемости. Она показала, какие формы используются для ведения журнала:
· личный номер ученика
· список учащихся
· текущие оценки
· средний балл
В приложении должны быть реализованы следующие модули:
- ввод данных в базу;
- добавление данных в базу;
- вывод данных из базы, на монитор для просмотра;
- сортировка записей базы по алфавиту и последующего их вывода на монитор в удобном для просмотра виде;
- поиск элемента;
- модуль удаления данных из базы.
Анализ решаемой проблемы
Вначале нужно определить, кто будет являться действующими субъектами. Кто будет вводить информацию? Кто будет запрашивать? Будет ли кто-либо ещё взаимодействовать с программой? Будет ли сама программа взаимодействовать с другими программами ?
С данным программным продуктом работает один человек — завуч. Таким образом, один и тот же человек вводит информацию и просматривает её в разных видах. Однако программой могут воспользоваться другие учителя или родители учащихся.
Системное проектирование
Для работы программы требуется PC совместимый компьютер и компилятор Microsoft Visual C++ . При использовании иного сочетания характеристик системы, на которой будет использоваться программа, возможны некоторые расхождения с результатами работы.
2.1 Разработка спецификаций функций
Для решения поставленных задач необходимо разработать следующие функции:
void look()
//вывод информации на экран
void enter()
//ввод данных
void poisk()
//поиск записи
void sort()
//сортировка данных
void redac()
//редактирование данных
void delet()
//удаление записи
Так как разрабатываемая программа состоит из подпрограмм, то реализация вышеописанных функций на языке С++ представлена в Приложении .
ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ
3.1 Разработка обобщенного алгоритма функционирования приложения
Разработаем обобщенный алгоритм функционирования приложения.
Рис. 3.1. Схема обобщенного алгоритма функционирования приложения
3.2 Разработка структуры приложения и структуры данных
Приложение будет иметь меню, через которое можно будет обращаться к реализуемым функциям.
Структура меню имеет следующий вид:
Главное меню.
1) Просмотр.
-вывод содержимого файла на экран
-возврат в меню
2) Ввод данных.
-ввод личного номера
-ввод Ф.И.О.
-ввод текущих оценок.
-возврат в меню
3) Редактирование.
-ввод личного номера
-удаление записи
-ввод личного номера
-ввод Ф.И.О.
-ввод текущих оценок.
-возврат в меню
4) Поиск.
-ввод личного номера
-вывод записи на экран
-возврат в меню
5) Сортировка
-1 -Личному номеру
-2 - По фамилии
-3 - Среднему баллу
-возврат в меню
6) Удаление.
-ввод личного номера
-удаление записи
-возврат в меню
7) Выход.
Для работы программы необходимо задать структуры данных, описанные конструкциями языка С++, необходимые для корректного функционирования приложения.
const char *file=" jurnal";
//структура данных ученика
struct Stud
{
int number; //личный номер
char fam[15]; //фамилия
char name[15]; //имя
char otchestvo[15]; // отчество
double istor_bel; // оценка по истории Белоруссии
double informatic; // оценка по информатике
double fizika; // оценка по физике
double matem; // оценка по математике
double bel_yz; // оценка по белорусскому языку
double bel_lit; // оценка по белорусской литературе
double rus_yz; // оценка по русскому языку
double rus_lit; // оценка по русской литературе
double chog; // оценка по Ч.О.Г.
double in_yz; // оценка по иностранному языку
double fizra; // оценка по физкультуре
double biologia; // оценка по биологии
double geografiy; // оценка по географии
double sredni_ball; // средний балл
3.3 Разработка программного кода приложения
C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.
C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.
Для разработки программы использовался пакет Microsoft Visual C++
Листинг программы представлен в Приложении .