Автор работы: Пользователь скрыл имя, 25 Декабря 2014 в 14:19, курсовая работа
Стремительно развитие компьютера привело к появлению средств автоматизации программирования: языков программирования и систем программирования. Количество принципиально различных языков программирования колоссально. В данной курсовой работе остановимся на рассмотрении языка высокого уровня С++.
Введение
2
1 Теоретическая часть
4
1.1 Технология разработки программных средств
4
1.2 Алгоритмизация и программирование
7
1.2.1 История развития алгоритмических языков
7
1.2.2 Основные функции технологии программирования
7
1.2.3 История создания С++
12
1.3 Основы теории и синтаксиса языка программирования С++
15
1.3.1 Синтаксис языка С++
15
1.3.2 Правила записи программы на языке С++
15
1.3.3 Правила формального описания синтаксиса языка программирования
17
2 Практическая часть
18
2.1 Решение систем линейных уравнений методом Крамера
18
2.2 Пример решения системы линейных уравнений методом Крамера
20
2.2.1 Техническое задание на учебный программный продукт
20
2.2.2 Алгоритм решения задачи
21
2.2.3 Список используемых идентификаторов
21
2.2.4 Инструкция по использованию программы
21
2.2.5 Минимальная конфигурация
21
2.2.6 Назначение ПО
22
2.2.7 Документация на учебный программный продукт
22
Заключение
24
Литература
1.2.3 История создания языка С++
Язык С++ возник в начале 1980-х годов, когда сотрудник фирмы Bell Labs Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. Когда в конце 1970-х годов Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов), он обнаружил, что попытки применения существующих в то время языков моделирования оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно из-за их ограниченной выразительности. Так, язык Симула имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно, а язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения.
Вспомнив опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы
с классами и объектами. В результате практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов), так и с точки зрения времени вычислений (благодаря быстродействию C). В первую очередь в C были добавлены классы (с инкапсуляцией), наследование классов, строгая проверка типов, inline-функции и аргументы по умолчанию. Ранние версии языка, первоначально именовавшегося «C with classes» («Си с классами»), стали доступны с 1980 года.
Разрабатывая C с классами, Страуструп написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Это позволило работать над новым языком и использовать его на практике, применяя уже имеющуюся в UNIX инфраструктуру для разработки на C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.
При создании C++ Бьёрн Страуструп хотел:
Выбор именно C в качестве базы для создания нового языка программи-
рования объясняется тем, что язык C:
— Б. Страуструп. Язык программирования C++. Раздел 1.6
Несмотря на ряд известных недостатков языка C, Страуструп пошёл на его использование в качестве основы, так как «в C есть свои проблемы, но их имел бы и разработанный с нуля язык, а проблемы C нам известны». Кроме того, это позволило быстро получить прототип компилятора (cfront), который лишь выполнял трансляцию добавленных синтаксических элементов в оригинальный язык C.
По мере разработки C++ в него были включены другие средства, которые перекрывали возможности конструкций C, в связи с чем неоднократно поднимался вопрос об отказе от совместимости языков путём удаления устаревших конструкций. Тем не менее, совместимость была сохранена из следующих соображений:
К 1983 году в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Получившийся язык уже перестал быть просто дополненной версией классического C и был переименован из C с классами в «C++». Его первый коммерческий выпуск состоялся в октябре 1985 года.
Имя языка, получившееся в итоге, происходит от оператора унарного постфиксного инкремента C ++ (увеличение значения переменной на единицу).
До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. Функцию стандартных описаний языка выполняли написанные Страуструпом печатные работы по C++ (описание языка, справочное руководство и так далее).
1.3 Основы теории и синтаксиса языка программирования С++
1.3.1Синтаксис языка С++
Под синтаксисом языка программирования понимают правила построения корректных конструкций данного языка. Синтаксис языка можно описать формально. Для этого удобно использовать расширенную форму Бэкуса-Наура (БНФ), которая состоит из ряда следующих обозначений и правил:
1.3.2 Правила записи программы на языке Си++
Программа перед обработкой компьютером должна быть помещена в файл на диске. Обычно этот файл имеет расширение <.c>.
Рассмотрим типичную структуру файла с программой на языке Си и правила его оформления на следующем простом примере:
/* Включить описания функций стандартного ввода-вывода */
#include <stdio.h>
/* Включить описания
#include <math.h>
/* Другие включаемые файлы */
/* Собственно текст программы */
void main( void )/* <-- заголовок главной функции */
{
float num; /* <-- описание типов данных */
/*Исполняемые операторы -* */
num = 2.345; /*Присвоим переменной num
значение 2.345 */
printf( " sin(%f) = %f\n", num, sin(num) );/*Вывод на экран */
}
Любой файл начинается с директив #include, вставляющих в текст программы так называемые заголовочные файлы, которые содержат описания функций, используемых в этом файле. В нашем примере это описания стандартных функций ввода-вывода <stdio.h> и математических функций <math.h>.
Далее следует заголовок главной функции программы main, операторы описания типов данных и исполняемые операторы.
Директивы #include должны всегда начинаться с новой строки, остальные же операторы программы могут иметь произвольное положение в файле вплоть до записи в одну строку. При записи не допускается разрывать слова, числа, двухсимвольные операции.
Пробелы используются для отделения слов друг от друга и для придания тексту большей выразительности и могут использоваться везде, за исключением случаев, описанных в предыдущем абзаце. Там, где допускается один пробел, можно поставить любое их количество.
В любом месте программы, там, где может стоять пробел, допускается записывать комментарии.
/*Это комментарий */
// Это тоже комментарии.
Комментарии должны помогать понять смысл выполняемых программой действий и являются обязательной ее частью. При написании комментариев следует придерживаться ряда простых истин:
Стиль программирования, расположение операторов в строках, использование пробелов, выбор имен переменных и т.д. должны быть направлены на то, чтобы сделать программу более понятной людям, ее читающим.
1.3.3 ПРАВИЛА ФОРМАЛЬНОГО
ОПИСАНИЯ СИНТАКСИСА ЯЗЫКА
Под синтаксисом языка программирования понимают правила построения корректных конструкций данного языка. Синтаксис языка можно описать формально. Для этого удобно использовать расширенную форму Бэкуса-Наура (БНФ), которая состоит из ряда следующих обозначений и правил:
- символы в кавычках переносятся в конструкцию языка так, как они записаны. Кавычки при этом отбрасываются. Например, "while" означает, что в конструкции языка присутствует while;
- имена, записанные слитно русскими и латинскими буквами, обозначают различные конструкции языка. Например, оператор_цикла;
- квадратные скобки охватывают элементы языка, которые могут повторяться 0 или 1 раз. Например, "AB"["C"] означает, что в конструкции языка может присутствовать или AB или ABC;
- фигурные скобки охватывают элементы языка, которые могут повторяться 0 или много раз. Например, "AB" { "C" } означает, что в конструкции языка может присутствовать или AB, или ABC, или ABCC и т.д.;
- символ | обозначает или, то есть используется для задания альтернативных значений, из списка элементов, разделенных знаком |. Например, "AB"|"C"|"ff" означает, что в конструкции языка может присутствовать или AB или C или ff;
- круглые скобки используются для группировки. Например, "A"("B"|"C")"D" означает, что в конструкции языка может присутствовать или ABD или ACD;
- многоточие используется для обозначения очевидных пропущенных значений в перечислении;
- символ = обозначает - слово есть. Например, буква = "A"|"B"|"C".
В дальнейшем, синтаксис языка Си будет описываться либо с помощью примеров, либо с помощью расширенной формы Бэкуса-Наура. В последнем случае это будет помечаться аббревиатурой БНФ.
2 Практическая часть
2.1 Решение систем линейных уравнений методом Крамера
Пусть нам требуется решить систему линейных уравнений вида:
где x1, x2, …, xn – неизвестные переменные, ai j , i = 1, 2, …, n, j = 1, 2, …, n – числовые коэффициенты, b1, b2, …, bn - свободные члены. Решением СЛАУ называется такой набор значений x1, x2, …, xn при которых все уравнения системы обращаются в тождества.
В матричном виде эта система может быть записана как A ⋅ X = B, где
- основная матрица системы, ее
элементами являются
- матрица – столбец свободных членов,
Информация о работе Решение систем линейных уравнений методом Крамера