Язык программирования C++

Автор работы: Пользователь скрыл имя, 04 Мая 2013 в 09:36, курсовая работа

Краткое описание

C++ - это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, С++ помимо ООР поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. С++ уже стал универсальным языком для программистов всего мира.
С++ был разработан сотрудником научно-исследовательского центра AT&T Bell Laboratories (Нью-Джерси, США) Бьярном Страуструпом в 1979 году. Первоначальное название «С с классами» было изменено на С++ в 1983 году. Начиная с 1980 года С++ претерпел две существенные модернизации: в 1985 и 1990 годах.

Содержание

1. Введение………….………………………………………………. ….…3
2. Линейное программирование …………………………………….….4
3. Примеры задач линейного программирования ……….…………..6
4. Формы записи задачи линейного программирования………..…..7
5. Свойства задачи линейного программирования…..…….….……10
6. Симплексный метод…………………………………………………...12
5. Вывод ………………………………….……………………………….11
7. Список используемой литературы…….……………………… ……12

Вложенные файлы: 1 файл

Курсовая работа.doc

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

 

 

 

 

Содержание.

 

1. Введение………….………………………………………………. ….…3

2. Линейное программирование …………………………………….….4

3. Примеры задач линейного программирования ……….…………..6

4. Формы записи задачи линейного программирования………..…..7

5. Свойства задачи линейного программирования…..…….….……10

6. Симплексный метод…………………………………………………...12

5. Вывод   ………………………………….……………………………….11

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

Приложение ………………….……………………………..……………..13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Задание: Разработать программу для решения задачи линейного программирования. Алгоритм решения – симплекс-метод. В программе использовать динамические массивы. Результат вывести на консоль.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Язык программирования C++.

 

 

C++ - это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, С++ помимо ООР поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. С++ уже стал универсальным языком для программистов всего мира.

С++ был разработан сотрудником  научно-исследовательского центра AT&T Bell Laboratories (Нью-Джерси, США) Бьярном Страуструпом в 1979 году. Первоначальное название «С с классами» было изменено на С++ в 1983 году. Начиная с 1980 года С++ претерпел две существенные модернизации: в 1985 и 1990 годах. Последняя третья модель связана с процессом стандартизации С++. Несколько лет назад началась работа по созданию единого международного стандарта по С++. Для этой цели был сформирован объединенный комитет по стандартизации ANSI (American National Standards Institute, Американский национальный институт стандартов) и ISO (International Standards Organization, Международная организация по стандартам) для языка С++. Первый рабочий проект указанного стандарта был предложен 25 января1994 года. Комитет ANSI/ISO по С++ фактически сохранил все основные черты языка, заложенные туда еще Страуструпом и добавил несколько новых инструментов.

C++ - универсальный язык программирования, задуманный так, чтобы сделать  программирование более приятным  для серьезного программиста. За  исключением второстепенных деталей  C++ является надмножеством языка  программирования C. Помимо возможностей, которые дает C, C++

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

Ключевым понятием C++ является класс. Класс - это тип,

 

 

 

 

определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную  инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Динамическая память.

 

    Именованный объект является либо статическим, либо автоматическим. Статический объект размещается в памяти в момент запуска

программы и существует там до ее завершения. Автоматический объект

размещается в памяти всякий раз, когда  управление попадает в блок,

содержащий определение объекта, и существует только до тех пор, пока

управление остается в этом блоке. Тем не менее, часто бывает удобно

создать новый объект, который существует до тех пор, пока он

не станет ненужным. В частности, бывает удобно создать объект, который

можно использовать после возврата из функции, где он был создан.

Подобные объекты создает операция new, а операция delete используется

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

объектов являются узлы деревьев или  элементы списка, которые входят

в структуры данных, размер которых  на этапе трансляции неизвестен.

     Объект, созданный с помощью операции new, существует, до тех пор,

пока он не будет явно уничтожен операцией delete. После этого

память, которую он занимал, вновь  может использоваться new. Обычно нет

никакого "сборщика мусора", ищущего  объекты, на которые никто

не ссылается, и предоставляющего занимаемую ими память операции new для повторного использования. Операндом  delete может быть только указатель, который возвращает операция new, или нуль. Применение delete к нулю не приводит ни к каким действиям.

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

операцией new, отводить немного больше памяти, чем под статический

(обычно, больше на одно слово).

    

     Операции со свободной памятью реализуются функциями:

 

           void* operator new(size_t);

          void operator delete(void*);

 

     Здесь size_t - беззнаковый целочисленный тип, определенный в библиотеке <stddef.h>.

 

 

 

 

 

 

 

 

4. Динамические массивы.

 

Массив является одним из ключевых понятий программирования. Итак, массив - это несколько значений одного типа, расположенных в памяти последовательно. Зная местоположение первого из этих элементов, можно обратиться к любому из них. Порядковый номер элемента в массиве называется индексом.

     Массивы - это та часть языка Си, которая не подверглась изменениям при эволюционировании языка в C++. Поэтому их объявление и работа с ними на обоих этих языках совпадает.

Для создания массива надо написать тип (аналогичен типам переменных) затем  имя массива и в квадратных  скобках количество элементов.

 

Например:

       ….

    int numbers[1000]; // массив на 1000 числовых элементов.

       ….

 

А для доступа к n-ому элементу необходимо написать имя массива[номер  элемента] и работать с ним как  с обычной переменной.

     Однако представляется возможным, что до некоторого времени размер массива может быть не так велик, чтобы вместить все необходимые данные. Например, предположим, что мы создали массив для хранения 100 объектов. Если позже нам потребуется хранить более 100 объектов, мы должны изменить свою программу и перекомпилировать ее. С другой стороны, вместо распределения массива фиксированного размера наши программы могут запрашивать необходимое количество памяти динамически, т.е. во время выполнения. Например, если программе необходимо следить за объектами, она могла бы запросить память, достаточную для хранения 100 объектов. Аналогично, если программе необходимы только 25 объектов, она могла бы запросить меньше памяти. Распределяя подобным образом память динамически, наши программы непрерывно изменяют свои потребности без дополнительного программирования.

 

 

 

 

 

 

 

 

 

Итак, основные концепции:

 

  • Чтобы запросить память во время выполнения, программы должны использовать оператор C++ new.
  • При использовании оператора new программы указывают количество требуемой памяти. Если оператор new может успешно выделить требуемый объем памяти, он возвращает указатель на начало области выделенной памяти.
  • Если оператор new не может удовлетворить запрос на память нашей программы (возможно, свободной памяти уже не осталось), он возвращает указатель NULL.
  • Чтобы позже освободить память, распределенную с помощью оператора new, программы должны использовать оператор C++ delete.

 

     Оператор C++ new позволяет программам распределять память во время выполнения. Для использования оператора new нам необходимо указать количество байтов памяти, которое требуется программе. Предположим, например, что программе необходим 50-байтный массив. Используя оператор new, мы можем заказать эту память, как показано ниже:

        …

       char *buffer = new char[50];

        …

 

     Говоря кратко, если оператор new успешно выделяет память, он возвращает указатель на начало области этой памяти. В данном случае, поскольку программа распределяет память для хранения массива символов, она присваивает возвращаемый указатель переменной, определенной как указатель на тип char. Если оператор new не может выделить запрашиваемый вами объем памяти, он возвратит NULL-указатель, который содержит значение 0. Каждый раз, когда наши программы динамически распределяют память с использованием оператора new, они должны проверять возвращаемое оператором new значение, чтобы определить, не равно ли оно NULL.

 

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

 

 

 

 

 

превысят  подобные ожидания программиста, то кому-то придется редактировать и перекомпилировать  такую программу.

Вместо редактирования и перекомпилирования программ, которые просто запрашивают  память с запасом, нам следует создавать свои программы таким образом, чтобы они распределяли требуемую им память динамически во время выполнения, используя оператор new. В этом случае наши программы могут адаптировать использование памяти в соответствии с нашими изменившимися потребностями, избавляя нас от необходимости редактировать и перекомпилировать программу.

     Если программе больше не нужна выделенная память, она должна ее освободить, используя оператор delete. Для освобождения памяти с использованием оператора delete мы просто указываем этому оператору указатель на данную область памяти, как показано ниже:

 

           …

           delete pointer;

           …

 

Следующий пример использует оператор delete для освобождения выделенной с помощью оператора new памяти:

 

#include <iostream.h>

#include <string.h>

void main()

{  
   char *pointer = new char[100]; //Выделение памяти 
 
   delete pointer; //Освобождение памяти 
}

 

     По умолчанию, если наша программа не освобождает выделенную ей память до своего завершения, операционная система автоматически освобождает эту память после завершения программы. Однако если программа использует оператор delete для освобождения памяти по мере того, как она (память) становится ненужной, то эта память вновь становится доступной для других целей (возможно, для нашей программы, которая опять будет использовать оператор new, или для операционной системы).

 

 

 

 

 

 

 

 

5. Многомерные динамические массивы.

 

     Многомерный массив в C++ по своей сути одномерен. Операции new[] и delete[] позволяют создавать и удалять динамические массивы, поддерживая при этом иллюзию произвольной размерности. Деятельность по организации динамического массива требует дополнительного внимания, которое окупается важным преимуществом: характеристики массива (операнды операции new) могут не быть константными выражениями. Это позволяет создавать многомерные динамические массивы произвольной конфигурации. Следующий пример иллюстрирует работу с динамическими массивами.

Информация о работе Язык программирования C++