Розробка діалогової системи для рішення прикладних задач

Автор работы: Пользователь скрыл имя, 15 Ноября 2013 в 23:44, курсовая работа

Описание работы

Язык программирования C++ широко используется для разработки программного обеспечения. А именно, создание разнообразных прикладных программ, разработка операционных систем, драйверов устройств, а также видео игр и многое другое. Существует несколько реализаций языка программирования C++ — как бесплатных, так и коммерческих. Их производят проекты: GNU, Microsoft и Embarcadero (Borland). Проект GNU — проект разработки свободного программного обеспечения (СПО). Язык программирования С++ был создан в начале 1980-х годов, его создатель сотрудник фирмы Bell Laboratories – Бёрн Страуструп.

Файлы: 1 файл

теория.doc

— 557.00 Кб (Скачать файл)

Для работы с массивами характерным  является использование итерационных циклов for. С их помощью организуется выполнение однотипных операций со всеми  элементами массива, в частности, поэлементный ввод-вывод, поэлементные арифметические операции и др.

Массивы в программах C++ могут быть не только линейными. Довольно частым является использование двух - (и  более) -мерных структур. К примеру, прямоугольная матрица - типичная структура, представимая с помощью двумерного массива; а 3D-тензор может быть записан как соответствующий трехмерный массив.

Многомерный массив в C++ организован  по принципу «массива массивов».

Общий формат его объявления

тип имя[N1][N2]…[NM];

Здесь M - число индексов (или размерность) массива. Индексы изменяются в пределах от 0 до N1 - 1, от 0 до N2 - 1, от 0 до N3 - 1, ..., от 0 до NM - 1, соответственно.

К примеру, запись int G[5][4]; означает объявление двумерного массива целых чисел  с именем G и размерами 54.

 Доступ к элементам многомерного массива в программе производится так же, как и в одномерном случае, то есть путем указания имени массива и набора индексов в квадратных скобках. Например, операция присваивания значения 0 последнему элементу будет записана как G[4][3] = 0.

При работе с многомерными массивами удобно использовать вложенные циклы for. С их помощью можно выполнить заданное действие с каждым из элементов массива путем перебора всех значений индексов.

Двумерный массив - это так называемая матрица (или таблица), у которой есть строки и столбцы. По соглашению программистов первый индекс массива будет указывать на строки, а второй на столбцы. Вот пример объявления и инициализации двумерного массива, состоящего из трех строк и пяти столбцов.

int aMatrix[3][5] = {{3, 5, 5, 7, 8},

{4, 1, 1, 2, 9},

                     {3, 8, 8, 9, 7}};

Как видите, двумерный  массив имеет два индекса (на то он, в принципе, так и называется). Сразу при объявлении мы его инициализируем целочисленными величинами.

 Для удобства мы  их записываем в виде матрицы  (таблицы): каждая строка с новой  строки (их у нас 3), в каждой  строке 5 столбцов.

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

int aMatrix[3][5] = {{3, 5, 5, 7, 8}, {4, 1, 1, 2, 9}, {3, 8, 8, 9, 7}};

Либо вообще так, без  указания фигурных скобок, которые  логически разделяют строки друг от друга.

 

int aMatrix[3][5] = {3, 5, 5, 7, 8, 4, 1, 1, 2, 9, 3, 8, 8, 9, 7};

Кстати, последняя запись демонстрирует то, как на самом  деле элементы массива размещаются  в памяти компьютера. Как я уже  писал в предыдущих главах, они  идут последовательно.

Если инициализация  двумерного массива происходит одновременно с объявлением, то можно даже не указывать первый индекс, т.е. количество строк массива.

int aMatrix[][5] = {{3, 5, 5, 7, 8},

      {4, 1, 1, 2, 9},

{3, 8, 8, 9, 7}};

Зная количество столбцов, компилятор при компиляции сам рассчитает количество строк двумерного массива.

Для доступа к элементам  двумерного массива нужно, так же, как и для одномерного указать  индекс.

 В данном случае  нам нужно будет позаботиться  об указании двух индексов.

1.8 Классы в С++

Классы и объекты  в С++ являются основными концепциями объектно-ориентированного программирования — ООП.  Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нету классов, а следовательно язык С не поддерживает ООП, в отличие от С++.

Чтобы понять, для чего же в действительности нужны классы, проведём аналогию с каким-нибудь объектом из повседневной жизни, например,  с велосипедом. Велосипед — это объект, который был построен согласно чертежам. Так вот, эти самые чертежи играют роль классов в ООП. Таким образом классы — это некоторые описания, схемы, чертежи по которым создаются объекты. Теперь ясно, что для создания объекта в ООП необходимо сначала составить чертежи, то есть классы. Классы имеют свои функции, которые называются методами класса. Передвижение велосипеда осуществляется за счёт вращения педалей, если рассматривать велосипед с точки зрения ООП, то механизм вращения педалей — это метод класса.

Каждый велосипед имеет  свой цвет, вес, различные составляющие — всё это свойства. Причём у  каждого созданного объекта свойства могут различаться.

Имея один класс, можно  создать  неограниченно количество объектов, каждый из которых будет обладать одинаковым набором методов, при этом можно не задумываться о внутренней реализации механизма вращения педалей, колёс, срабатывания системы торможения, так как всё это уже будет определено в классе.

Разобравшись с назначением  класса, дадим ему грамотное определение.

Классы в С++ - это абстракция описывающая методы, свойства, ещё не существующих объектов.  

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

  1. Инкапсуляция - это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя.
  2. Наследование - это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку.
  3. Полиморфизм - свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

1

2

3

4

5

6

7

8

9

10

// объявление классов в С++

class /*имя класса*/

{  

private: 

/* список свойств и методов для использования внутри класса */  

public:  

/* список методов доступных другим функциям и объектам программы */  

protected:  

/*список средств, доступных при наследовании*/};


Все методы и свойства класса, объявленные после спецификатор доступа private будут доступны только внутри класса. Все методы и свойства класса, объявленные после спецификатора доступа public будут доступны другим функциям и объектам в программе. При объявлении класса, не обязательно объявлять три спецификатора доступа, и не обязательно их объявлять в таком порядке. Но лучше сразу определиться с порядком объявления спецификаторов доступа, и стараться его придерживаться. 

 

Заключение

 

 

Развитие объектно-ориентированного метода обусловлено ограниченностью  разработанных ранее методов  программирования. Задачи, для которых создавались процедурные языки программирования, характеризовались небольшим объемом команд и не требовали дополнительной внутренней организации. Когда же размер программы велик, список команд становится слишком громоздким, и код необходимо разделять на более мелкие логические части. Деление программы на функции и модули является основой структурного программирования, как способа организации программ. Однако существенно упростить большие программы структурный подход к программированию позволяет не всегда.

Объектно-ориентированный  подход к программированию заключается  в моделировании объектов реального  мира, интерпретируемых как совокупность свойств и поведения. Примерами  свойств для людей могут являться цвет глаз или место работы; для машин – мощность двигателя и количество дверей. В этом смысле свойства объектов равносильны данным в программах, они имеют определенное значение, например, красный для цвета глаз или 4 для количества дверей автомобиля. Поведение – это некоторое действие объекта в ответ на внешнее воздействие. Поведение сходно с функциями – функция вызывается, чтобы совершить какое-либо действие. В процедурных языках программирования данные и функции принципиально разделены, что затрудняет моделирование ими объектов реального мира. Основополагающей же идеей объектно-ориентированного подхода является объединение данных и функций, оперирующих этими данными, в одно целое, которое и называется объектом.

Из всех объектно-ориентированных  языков С++ является наиболее широко употребительным. C++ добавляет к C объектно-ориентированные возможности.

Он вводит классы, которые  обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм. Наиболее популярными средами разработки для С++ являются продукты, разработанные компаниями Microsoft и Borland.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

  1. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.
  2. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 1994. 400с.
  3. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.
  4. Т. Фейсон. Объектно-ориентированное программирование на Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.
  5. Стенли Липпман. Язык программирования C++. Вводный курс.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

 

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

 

 

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <math.h>

#include <mas.h>

#pragma argsused

using namespace std;

int main()

{

SetConsoleOutputCP (1251);

Zadacha a;

a.vvod();

a.formula();

    int q;

    do{

cout<<"Нажмите 1, чтобы вывести массив x\n";

cout<<"Нажмите 2, чтобы  вывести массив y\n";

cout<<"Нажмите 3, чтобы  вывести Количество\n";

cout<<"Нажмите 4, чтобы  вывести Процент\n";

cout<<"Нажмите 0, чтобы  выйти  из программы \n";

 

    cin >>q;

    if (q==1) a.vivodx();

    if (q==2) a.vivody();

 

 

 

    if (q==3) cout<<a.kolichestvo();

    if (q==4) cout<<a.procent();

} while (q!=0) ;

return 0;

}

 

 

Листинг заголовочного файла MAS.H

 

#ifindef _mas_h_

#define _mas_h_

using namespace std;

const int n=10;

class Zadacha

{float R, Xc, Yc, x[n], y[n] ;

public:

Zadacha();

void vvod();

int formula();

void vivodx ();

void vivody ();

int kolichestvo();

float procent();

};

void Zadacha::vvod()

{

cout<<"Vvedite R,Xc,Yc\n";

cin>>R>>Xc>>Yc;

}

 

 

void Zadacha::vivodx ()

{

int i;

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

cout<<x[i]<<endl;

}

void Zadacha::vivody ()

{      int i;

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

cout<<y[i]<<endl;

}

int Zadacha::formula()

{      int i;

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

{x[i]=((2.0+i)/(3.0+2.0*cos(3.0*i)))-0.5;

If    (x[i]<1) y[i]=2*log(fabs(x[i]*x[i]+1))+pow(sin(pow(x[i],3.0)),3.0)+pow(fabs(x[i]),1/3.0);

else y[i]=(x[i]*sqrt(fabs(pow(sin(x[i]),2.0)+pow(cos(x[i]*x[i]),2.0)+1.0)))/(sqrt(fabs(2*x[i]+1.0))*log(fabs(x[i])+1.0)+1.0);

}

}

int Zadacha::kolichestvo()

{ int i, k=0;

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

if ((x[i]<Xc+R)&&(x[i]>Xc-R)&&(y[i]<Yc+R)&&(y[i]>Yc-R))

{k++;}

return k;

}

 

float Zadacha::procent()

{

float P=(100*Zadacha::kolichestvo())/n;

return P;

}

# indif

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение Б

 

Листинг графика

 

 

#include <math>

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormPaint(TObject *Sender)

{

Canvas->MoveTo(25,ClientHeight/2);

Canvas->Pen->Width=2;

Canvas->LineTo(ClientWidth-25,ClientHeight/2);

Canvas->LineTo(ClientWidth-45,ClientHeight/2-10);

Canvas->MoveTo(ClientWidth-25,ClientHeight/2);

Информация о работе Розробка діалогової системи для рішення прикладних задач