Принципы разработки алгоритмов и программ для решения прикладных задач

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

по дисциплине «Программирование и основы алгоритмизации»

Принципы разработки алгоритмов и программ

для решения прикладных задач

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

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

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

Умение образовывать из базовых структур их суперпозиции в соответствии с условиями конкретной задачи — одно из важнейших в программировании. Допустим, надо ввести в память компьютера 100 чисел и по дороге отсуммировать те из них, которые положительны. Ясно, что ввод — операция циклическая, а внутри этого цикла находится развилка, в которой проверяется знак числа и производится суммирование. Схематически соответствующая суперпозиция изображена на рис.1.27.

9 стр., 4142 слов

Создание программы-переводчика текстов с английского на русский язык

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

Так как выражение, управляющее циклом, проверяется в самом начале, то в случае, если условие сразу окажется ложным, операторы циклической части «a» могут вообще не выполняться. Операторы циклической части «а» должны изменять переменную (или переменные), влияющие на значение логического выражения, иначе программа «зациклится» — будет выполняться бесконечно. Рассмотренная циклическая конструкция называется также цикл «пока», или «цикл с предусловием».

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

Рис 1.7. Алгоритм типа развилка, вложенная в цикл, для нахождения суммы положительных чисел из 100 возможных.

Схематические изображения нескольких суперпозиций базовых алгоритмических структур представлены ниже на рис.1.28-1.31.

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

1) возможность создания программы несколькими программистами;

2) простота проектирования и последующих модификаций программы;

3) упрощение отладки программы — поиска и устранения в ней ошибок;

4) возможность использования готовых библиотек наиболее употребительных модулей.

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

На следующем этапе эти задачи, в свою очередь, разбиваются на более мелкие подчиненные подзадачи и так далее, до уровня относительно небольших подзадач, вторые требуют для решения небольших модулей в 3 — 5 строк. Такой метод проектирования программ позволяет преодолевать проблему сложности разработки программы (и ее последующей отладки и сопровождения).

6 стр., 2612 слов

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

... выполнения программы для одного из вариантов исходных данных ЗАКЛЮЧЕНИЕ В ходе выполнения курсовой работе ... разработке алгоритмов служил структурны ... массив Исходное данное, результат Массив вещ. чисел 2.5. Программа решения задачи на языке Паскаль Текст программы на языке программирования ... цикла. Обозначим A – исследуемый массив элементов; i – номер текущей строки массива, j – номер текущего стлобца; ...

Создаем массив указателей, каждый элемент которого будет указывать на соответствующую ему строку первого массива. Далее выполняем сортировку указателей. Конечно, сам массив строк отсортирован не будет, однако благодаря указателям у нас будет храниться отсортированный «срез» массива:

Параметром функции sortlen() является указатель на указатель. Хотя для понимания проще сказать, что параметром является массив указателей на символы. Мы передаем в функцию указатель на первый элемент массива strP, который сам является указателем. Если бы в функции мы инкрементировали переменную s, то переходили бы к следующему элементу-указателю массива strP.

Сортировка выполняется методом пузырька: если длина строки, на которую ссылается следующий указатель массива strP, меньше длины строки под текущим указателем, то значения указателей меняются.

Выражение strP[i] = &strings[i][0] означает, что элементу массива указателей присваивается ссылка на первый символ каждой строки.

Текстовый файл содержит следующие строки:

Умом Россию не понять, Аршином общим не измерить:

У ней

особенная стать — В Россию можно только верить.

После обработки мы получаем следующий текст:

У ней

В Россию

особенная стать-

можно только верить

Умом Россию не понять,

Аршином общим не измерить,

Этот отсортированный текст записывается в выходной файл «rez», то есть результат.

3.2 Составим блок-схему

Заключение

C++ —компилируемый статически типизированный язык программирования общего назначения.

Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков.[1][2] В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.[2]

Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной. Являясь одним из самых популярных языков программирования,[3][4] C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).

Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

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

10 стр., 4617 слов

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

... организация динамических массивов, взаимодействие с операционной системой или реализация элементов пользовательского интерфейса. программирование java мобильность 1. История создания языка JAVA Язык Java зародился как ... машине. Альтернативный механизм доставки кода, предложенный компанией Microsoft, опирается на технологию ActiveX и для безопасности использует только цифровые подписи. Но этого ...

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

Павловская Т.А. С/С++. Программирование на языке высокого уровня. — СПб: Питер, 2007.

Дэвис С. С++ для «чайников». — К. : Диалектика, 2003.

Подбельский В.В. Фомин С.С. Программирование на языке Си — М.: Финансы и статистика, 2000.

Богуславский А.А., Соколов С.М. Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. — Коломна: КГПИ, 2002.

Программирование на алгоритмических языках. Лабораторный практикум /Артемьев И.Т./, ЧГУ: Чебоксары, 2005 г.

Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ :учебн. пособие. — СПб.: БХВ-Петербург, 2006.

Плохотников К.Э. Методы разработки курсовых работ. Моделирование, вычисления, программирование на С/С++ и МАТLAB, виртуализация, образцы лучших студенческих курсовых работ: учебное пособие. — М.: СОЛОН-ПРЕСС, 2006.