Программирование на языке С++

Изучение появления и особенностей развития языка программирования С++, возникшего в начале 1980-х годов. Анализ "Комментированного справочного руководства по C++", которое впоследствии было положено в основу стандарта. Характеристика последних обновлений.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 30.05.2010
Размер файла 114,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Содержание

Введение

Индивидуально задание

Блок-схема

Листинги программ

Руководство пользователя

Список используемой литературы

Введение

Язык C++ возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку Си под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году -- нынешняя версия этого стандарта -- ISO/IEC 14882:2003.

Ранние версии языка, известные под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Симула (Simula) имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPLдостаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык Си (преемник BCPL) возможностями, имеющимися в языке Симула. Язык Си, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию Си). В начале в Си были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.

Разрабатывая Си с классами (позднее C++), Страуструп также написал программу cfront -- транслятор, перерабатывающий исходный код Си с классами в исходный код простого Си. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.

В 1983 году произошло переименование языка из Си с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.

В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.

Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций Си printf иscanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.

После многих лет работы совместный комитет ANSI-ISO стандартизировал C++ в 1998 году (ISO/IEC 14882:1998 -- Язык программирования C++). В течение нескольких лет после официального выхода стандарта комитет обрабатывал сообщения об ошибках и в итоге выпустил исправленную версию стандарта C++ в 2003 году. В настоящее время рабочая группа МОС (ISO) работает над новой версией стандарта под кодовым названиемC++0x (ранее известный как C++09).

Индивидуальное задание

Окружности задаются координатами X,Y их центров и радиусами R. Датчик случайных чисел вырабатывает характеристики N окружностей. Определить, имеются ли среди этих окружностей три попарно пересекающихся. Найти среди этих окружностей все уединенные.

Блок-схема

Листинги программ

KOMP.CPP

#include<graphics.h>

#include<iostream.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<dos.h>

#include<bios.h>

#include<process.h>

void pomehi(int x, int y, int i)

{

setcolor(i);

line(x-100,y-60,x-80,y-60);

line(x-60,y-50,x-40,y-50);

line(x-20,y-60,x,y-60);

line(x+20,y-50,x+40,y-50);

line(x+60,y-60,x+80,y-60);

line(x-100,y-20,x-80,y-20);

line(x-60,y-10,x-40,y-10);

line(x-20,y-20,x,y-20);

line(x+20,y-10,x+40,y-10);

line(x+60,y-20,x+80,y-20);

line(x-100,y+20,x-80,y+20);

line(x-60,y+30,x-40,y+30);

line(x-20,y+20,x,y+20);

line(x+20,y+30,x+40,y+30);

line(x+60,y+20,x+80,y+20);

line(x-100,y+60,x-80,y+60);

line(x-60,y+70,x-40,y+70);

line(x-20,y+60,x,y+60);

line(x+20,y+70,x+40,y+70);

line(x+60,y+60,x+80,y+60);

}

void komp(int x, int y)

{

int i;

///////////////monitor////////////////

i=8;

setcolor(i);

rectangle(x-120, y-100, x+120, y+100);

setfillstyle(SOLID_FILL,i);

floodfill(x-115,y-95,i);

i=0;

setcolor(i);

rectangle(x-110, y-90, x+110, y+90);

setfillstyle(SOLID_FILL,i);

floodfill(x,y,i);

i=0;

setcolor(i);

line(x-120, y-100, x-110, y-110);

line(x+120, y+100, x+130, y+90);

line(x+120, y-100, x+130, y-110);

line(x-110, y-110, x+130, y-110);

line(x+130, y-110, x+130, y+90);

line(x+20, y+110, x+20, y+100);

line(x-20, y+110, x-20, y+100);

rectangle(x+60, y+110, x-60, y+120);

line(x+60, y+110, x+70, y+100);

line(x+60, y+120, x+80, y+100);

line(x-60, y+110, x-50, y+100);

line(x+20, y+110, x+30, y+100);

circle(x+110,y+95,3);

circle(x+100,y+95,2);

circle(x+90,y+95,2);

///////////////sistemnik//////////////

i=0;

setcolor(i);

rectangle(x-130, y+120, x-200, y-100);

line(x-200, y-100, x-110, y-190);

line(x-130, y-100, x-40, y-190);

line(x-110, y-190, x-40, y-190);

line(x-130, y+120, x-110, y+100);

line(x-40, y-190, x-40, y-110);

rectangle(x-190, y-90, x-140, y-80);

rectangle(x-190, y-70, x-140, y-60);

rectangle(x-190, y-50, x-140, y-40);

rectangle(x-190, y-30, x-140, y-20);

rectangle(x-180, y-10, x-150, y);

rectangle(x-180, y+10, x-150, y+20);

rectangle(x-190, y+100, x-140, y+110);

circle(x-165,y+80,5);

circle(x-165,y+60,4);

line(x-165,y+80,x-165,y+84);

circle(x-165,y+80,2);

}

void kolonki(int x, int y, int i)

{

int k;

//////////////left//////////////////

k=i;

i=15;

setfillstyle(INTERLEAVE_FILL,i);

i=k;

setcolor(i);

rectangle(x-210, y+120, x-260, y+60);

line(x-210, y+120, x-200, y+110);

line(x-210, y+60, x-200, y+50);

line(x-260, y+60, x-240, y+40);

line(x-240, y+40, x-200, y+40);

i=k;

setcolor(i);

pieslice(x-235, y+90, 0, 180, 20);

rectangle(x-255, y+90, x-215, y+110);

floodfill(x-245,y+95,i);

//////////////right/////////////////

rectangle(x+140, y+120, x+190, y+60);

line(x+190, y+120, x+210, y+100);

line(x+190, y+60, x+210, y+40);

line(x+140, y+60, x+160, y+40);

line(x+160, y+40, x+210, y+40);

line(x+210, y+100, x+210, y+40);

i=k;

setcolor(i);

pieslice(x+165, y+90, 0, 180, 20);

rectangle(x+145, y+90, x+185, y+110);

floodfill(x+155,y+95,i);

circle(x+165,y+115,4);

circle(x+155,y+115,3);

circle(x+175,y+115,3);

arc(x+165,y+40,0,150,40);

}

void main()

{int dr=DETECT,mod;

float snd[] = {659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,

698.46, 783.99, 659.26, 659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,

659.26, 622.25, 587.33, 587.33, 698.46, 880.00, 987.77, 587.33, 698.46,

830.61, 880.00, 440.00, 523.25, 698.46, 698.46, 659.26, 783.95, 698.46, 698.46,

659.26, 493.88, 523.25, 440.00, 987.77, 987.77, 932.33, 880.00, 987.77, 987.77,

880.00, 783.99, 698.46, 659.26, 659.26, 783.99, 659.26, 587.33, 587.33,

698.46, 587.33, 493.88} ;

int x,y,err,i,ki,key,r,h,c,x1,x2,y1,y2;

char s,str[80]={'K','U','R','S','O','V','A','Y','A',' ','R','A','B','O','T','A'};

initgraph(&dr,&mod," ");

err=graphresult();

if(err){

cout<<"error initgraph"<<grapherrormsg(err);

exit(1);

}

snachala:

cleardevice();

i=7;

x=getmaxx()/2;

y=getmaxy()/2;

setfillstyle(SOLID_FILL,i);

floodfill(x,y,i);

setcolor(4);

outtextxy(400,70,"Press any key for STOP Music");

outtextxy(400,80,"Press 'P' for PLAY Music");

outtextxy(400,90,"Press 'M' for GOTO MENU");

outtextxy(400,100,"Press 'Esc' for exit");

settextstyle(0,0,3);

setcolor(2);

outtextxy(150,15,str);

settextstyle(0,0,2);

setcolor(6);

outtextxy(330,380,"KAFEDRA: EVM");

setcolor(5);

outtextxy(330,420,"SPECIALNOST: VMKSiS");

setcolor(4);

outtextxy(30,380,"VIPOLNIL:");

settextstyle(0,0,1);

setcolor(1);

outtextxy(180,380,"STUDENT FITU 1-2a");

settextstyle(0,0,1);

setcolor(0);

outtextxy(180,390,"XLINTCEV A.G.");

settextstyle(0,0,2);

setcolor(4);

outtextxy(30,420,"PROVERIL:");

settextstyle(0,0,1);

setcolor(1);

outtextxy(180,420,"KOLOMEICEVA T.G.");

settextstyle(0,0,1);

setcolor(0);

outtextxy(180,430,"BELIKOV I.Yu.");

komp(x,y); m1:

for(r=0;r<62;r++)

{

if (kbhit()) break;

i=15;

pomehi(x,y,i);

delay(100);

i=7;

kolonki(x,y,i);

i=0;

kolonki(x,y-10, i);

i=0;

pomehi(x,y,i);

delay(100);

sound(snd[r]/1.5);

if (r==11 ^ r==23 ^ r==27 ^ r==31 ^ r==43) { delay (1500); nosound (); delay (600); }

else if (r==53 ^ r==57 ^ r==61) { delay (300); nosound(); delay (1400); }

else if (r==47) { delay (500); nosound (); delay (700); }

else delay(50);

i=7;

kolonki(x,y-10,i);

i=0;

kolonki(x,y,i);

}

nosound();

setcolor(RED);

m:

s=getch();

if (s==27) exit(1);

if (s=='p') {setfillstyle(SOLID_FILL,0); floodfill(getmaxx()/2,getmaxy()/2,8); goto m1;}

if (s!='m') goto m;

cleardevice();

i=15;

setcolor(i);

setfillstyle(SOLID_FILL,i);

floodfill(x,y,i);

settextstyle(0,0,2);

setcolor(RED);

outtextxy(150,30,"MENU");

settextstyle(0,0,1);

setcolor(2);

outtextxy(20,100,"Zadanie po assembleru #1");

setcolor(3);

outtextxy(20,135,"Zadanie po assembleru #2");

setcolor(4);

outtextxy(20,170,"Zadanie po assembleru #3");

setcolor(5);

outtextxy(20,205,"Zadanie po assembleru #4");

setcolor(6);

outtextxy(20,240,"Zadanie po assembleru #5");

setcolor(0);

outtextxy(20,275,"Zadanie po assembleru #6");

setcolor(8);

outtextxy(20,310,"Zadanie po programmirovaniu");

setcolor(9);

outtextxy(20,345,"Back to previos display");

setcolor(12);

outtextxy(20,380,"Exit");

ki=1; x1=14; y1=95; x2=250; y2=115;

rectangle(x1,y1,x2,y2);

sled:

key=bioskey(0);

switch(key)

{

case 18432:{setcolor(15);

rectangle(x1,y1,x2,y2);

if (y1==95) {y1=375;y2=395; ki=9;}

else {y1=y1-35; y2=y2-35; ki--;}

setcolor(RED);

rectangle(x1,y1,x2,y2);

break;

}

case 20480:

{setcolor(15);

rectangle(x1,y1,x2,y2);

if (y1==375) {y1=95;y2=115; ki=1;}

else {y1=y1+35; y2=y2+35; ki++;}

setcolor(RED);

rectangle(x1,y1,x2,y2);

break;

}

case 7181: switch(ki)

{

case 1: spawnl(P_WAIT, "1.EXE", NULL); break;

case 2: spawnl(P_WAIT, "2.EXE", NULL); break;

case 3: spawnl(P_WAIT, "3.EXE", NULL); break;

case 4: spawnl(P_WAIT, "4.EXE", NULL); break;

case 5: spawnl(P_WAIT, "5.EXE", NULL); break;

case 6: spawnl(P_WAIT, "6.EXE", NULL); break;

case 7: spawnl(P_WAIT, "CPP.EXE", NULL); break;

case 8: goto snachala;

case 9: closegraph(); exit(1);

}

}

goto sled;

}

CPP.CPP

#include<graphics.h>

#include<math.h>

#include<iostream.h>

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

int sravnenie(long x1,long x2,long y1,long y2,long r1,long r2)

{int d;

d=int(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

if (d>(r1+r2)) return 1; else return 0;} //1-ne peresekajutsja 0-peresikajutsja

void main()

{char s,otv;

int dr=DETECT, mod, err;

int color[100],KOL,ist;

long x[100],y[100],r[100],l,i,f,k,j,n;

m1:

initgraph(&dr,&mod," ");

err=graphresult();

if(err) {

cout<<"error initgraph"<<grapherrormsg(err);

exit(1);

}

cout<<"Vvedite kol-vo okruzhnostei -> "; cin>>KOL;

randomize();

cleardevice();

for (i=0;i<KOL;i++)

{

x[i]=random(540)+50;

y[i]=random(320)+80;

r[i]=random(20)+30;

color[i]=random(13)+1;

}

for (i=0;i<KOL;i++)

{ setcolor(color[i]);

circle(x[i],y[i],r[i]); }

outtextxy(5,5,"Press '1' for vivoda okryzhnostei yedinenih");

outtextxy(5,15,"Press '2' for vivoda okryzhnostei sgrypirovanih po 3");

outtextxy(5,25,"Press 'q' for quit");

m: ist=0;

s=getch();

if (s=='1') {

cleardevice();

for (i=0;i<KOL;i++)

{ f=0;

for (j=0;j<KOL;j++)

if (i!=j) if (sravnenie(x[i],x[j],y[i],y[j],r[i],r[j])==1) f++;

if (f==KOL-1) {setcolor(color[i]); circle(x[i],y[i],r[i]); ist++;}

}if (ist==0) cout<<"Takix okryzhnostei net\n\n\n\n";

} else

if (s=='2') { cleardevice();

for (i=0;i<KOL;i++)

for (j=0;j<KOL;j++)

if (i!=j) if (sravnenie(x[i],x[j],y[i],y[j],r[i],r[j])==0)

{ f=0;

for(l=0;l<KOL;l++)

if ((l!=i)&&(l!=j))

if

(sravnenie(x[i],x[l],y[i],y[l],r[i],r[l])==0)||(sravnenie(x[l],x[j],y[l],y[j],r[l],r[j])==0)) {f++; k=l;}

if (f==1)

for (n=0;n<KOL;n++)

if ((n!=k)&&(n!=i)&&(n!=j))

if (sravnenie(x[n],x[k],y[n],y[k],r[n],r[k])==0) f++;

if (f==1)

{setcolor(color[i]);

circle(x[i],y[i],r[i]);

setcolor(color[j]);

circle(x[j],y[j],r[j]);

setcolor(color[k]);

circle(x[k],y[k],r[k]); ist++;}

}

if (ist==0) cout<<"Takix okruzhnostei net\n\n\n\n"; } else

if (s=='q') exit(1); else goto m;

cout<<"Snova? (y,n)"; otv=getch();

if (otv=='y') {closegraph(); goto m1;} else exit(1);

}

Руководство пользователя

При запуске курсовой работы на дисплее появится титульный лист сопровождаемый мелодией и анимацией.

Нажмите:

- любую клавишу для остановки мелодии.

- P для проигрывания мелодии

- M для перехода к МЕНЮ

- ESC для выхода

Перейдите к МЕНЮ для запуска курсовой работы

В МЕНЮ наведите курсор на задание и нажмите ENTER. Запускается задание курсовой работы. Просмотрев результат работы задания, нажимаем клавишу клавишу Q и выходим в МЕНЮ. Для выхода из программы нажимаем - ESC.

При работе с программой могут возникнуть проблемы: программа может не запускаться, и выводить ошибку инициализации графики. Чтобы избежать этого пользователь должен перед запуском программы убедиться в том, что файл EGAVGA.BGI находится в данном каталоге. В каталоге так же должны находится исполняемые файлы KOMP.EXE(Титульный лист) CPP.EXE (Задание по курсовой работе).

Программа нормально работает в операционных системах Windows XP/NT/2000/98, а так же в MS-DOS'e. В других операционных системах программа не тестировалась.

Список используемой литературы

- Бьерн Страуструп «Язык программирования С++»

- Дейтел и Дейтел «Как программировать на C++»

- Дейтел и Дейтел «Как программировать на C»

- А.Б.Крупник «Изучаем C++»

- В.В.Подбельский «Язык Си++»

- Курс лекций по предмету «Программирование на ЯВУ»

- Методические указания к лабораторным работам по предмету «Программирование на ЯВУ»


Подобные документы

  • Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".

    практическая работа [26,0 K], добавлен 04.02.2015

  • История происхождения языков Веб-программирования. Исторические факты появления самого первого из них. Сущность современного, актуального в настоящее время, языка HTML, история появления языка PHP, применение языка JavaScript и его использование.

    реферат [23,1 K], добавлен 23.02.2013

  • Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.

    контрольная работа [25,1 K], добавлен 14.03.2015

  • История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.

    курсовая работа [970,5 K], добавлен 15.05.2014

  • Сравнительная характеристика, возможности и функции языков программирования JavaScript и PHP. Основные области их использования. Разработка интерактивного Web-приложения с применением JavaScript на примере теста по теме "Программирование на языке Delphi".

    курсовая работа [19,3 K], добавлен 01.07.2014

  • Программная реализация настольного приложения с использованием языка программирования C#. Проектирование и структура пользовательского интерфейса, требования к нему и оценка функциональности. Разработка руководства пользователя и его использование.

    курсовая работа [297,6 K], добавлен 10.03.2015

  • Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.

    реферат [2,1 M], добавлен 16.09.2011

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.

    курсовая работа [1,3 M], добавлен 24.06.2013

  • Изучение некоторых аспектов языка Ассемблера и ЭВМ в целом. Построение алгоритмов решения поставленной задачи на языках программирования Си, Ассемблер УМ и IBM PC. Составление блок-схем решений и написание программ на каждом из перечисленных языков.

    курсовая работа [691,5 K], добавлен 20.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.