Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Обзор языков программирования высокого уровня (ОСНОВЫ ТЕОРИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ)

Содержание:

ВВЕДЕНИЕ

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

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

Все языки программирования можно условно поделить на такие две части:

– языки низкого уровня;

– языки высокого уровня.

Более понятными для ЭВМ являются машинно-ориентированные языки. ЯП, более понятные для обычного человека, именуются языками высокого уровня.

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

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

Цель работы – рассмотрение самых популярных языков программирования высокого уровня.

При написании работы поставлены такие задачи:

– описать основные понятия теории языков программирования и их классификацию;

– дать характеристику современным языкам программирования высокого уровня;

– рассмотреть среды программирования, которые применяются в ЯП высокого уровня;

– описать основные понятия объектно-ориентированного подхода к написанию программ;

– на практике рассмотреть основные возможности языка программирования С++.

Проблему исследования изучали: К. Хортон [1], Н. Прата [12], В. Страуструп [4], Р. Лафортс [13].

1.ОСНОВЫ ТЕОРИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1.Определение языков программирования

Языком программирования (ЯП) называют любую символьную систему обозначений для описания данных и применяемых алгоритмов.

Другими словами, языки программирования – формальные искусственные языки, которые состоят с:[5]

– алфавита;

– синтаксиса;

– семантики.

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

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

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

Все современные ЯП применяются при написании самых разных программных продуктов для ПК.

На рисунке 1 показана структура классического ЯП:

Результат пошуку зображень за запитом "структура языка программирования"

Рис. 1. Структура ЯП

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

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

Результат выполнения программы находится в памяти ПК (также может ожидать следующую операцию в арифметическом устройстве процессора).

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

Хотя, стоит заметить, что здесь речь идет об специальных универсальных ЯП, что нашли свое широкое применение непосредственно для разработки программ в областях человеческой жизнедеятельности. Все такие языки создавались для конкретных целей, а также имеют свои достоинства и недостатки. [11]

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

Знание всех таких концептуальных оснований современной теории языков программирования для использования их базовых языковых конструкций дает возможности:[14]

– более обоснованно определять ЯП для создания конкретного программного проекта;

– разрабатывать алгоритмы для более эффективной работы приложения;

– пополнять весь набор полезных конструкций для языков программирования;

– ускорять изучение самых современных языков программирования;

– применять полученные знания как фундаментальную базу для разработки более новых ЯП;

– получать базовые знания, что необходимы для выполнения разработки трансляторов ЯП, поддерживающих самые различные вычислительные модели.

Стоит заметить, что языки программирования очень часто отличаются синтаксисом и своими функциональными возможностями.

Также некоторые различия в программном синтаксисе играют только малую роль при изучении основ ЯП, при чем само наличие или же отсутствие функциональных возможностей также влияет на реализацию, область применения языка.[11]

1.2. Классификация языков программирования

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

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

В нынешнее время имеются 4 основные парадигмы написания программ, отражающие вычислительные модели, при использовании которых описывается совокупность существующих методов программирования (рисунок 2).

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

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

Рис. 2. Парадигмы программирования

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

Полная приверженность человека к одной парадигме носит часто очень сильный характер.[19]

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

Заметим, что императивная программа очень похожа на приказы, которые выражаются повелительно в человеческих языках.

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

Функциональное программирование – раздел дискретной математики, для которой процесс работы программы трактуют как вычисление некоторых значений математической функции.[17]

Логическое программирование относится к парадигме программирования, которая изучает методы и возможности по заданным логическим правилам. [4]

Все программы, которые при использовании данного подхода к программированию основаны на теории дискретной или математической логики. [13]

Первым языком, поддерживающим логическое программирование был ЯП Planner, где была заложена возможность автоматического вычисления результатов по правилам перебора вариантов.

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

В результате был создан ЯП Prolog, который не требовал плана для реализации перебора вариантов, к тому же был, в некотором смысле, упрощением ЯП Planner.[15]

Объектно-ориентированное программирование (сокращенно ООП) – парадигма программирования, которая использует своими основными концепциями объекты и классы.

Стоит отметить, что кроме описанных параметров ООП часто применяются свойства, методы и другие (рисунок 3).

Результат пошуку зображень за запитом "Объектно-ориентированное программирование"

Рис. 3. Понятия ООП

Классом является тип, который описывает полное устройство объектов. Понятие подразумевает некоторое поведение, а также способ представления программируемого объекта. Термин «объект» подразумевает обладание определённым поведением или же способом представления. [11]

Стоит отметить, что каждый объект является экземпляром класса. Класс также часто сравнивают с неким чертежом, по которому формируются объекты.

С понятием ООП также связаны такие термины (рисунок 4):

Файл:New-Mind-Map 3m96t.jpg

Рис. 4. Понятия ООП

Абстрагирование в ООП – это придание объекту некоторых характеристик, которые его отличают от других объектов, определяя его концептуальные границы.

Такой подход является базовым для объектно-ориентированного программирования. Он позволяет работать с разными объектами, не вдаваясь непосредственно в особенности реализации. [7]

В каждом случае, кроме абстрагирования, применяется тот или иной инструмент:

– инкапсуляция;

– полиморфизм;

– наследование.

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

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

Данное разделение может выражаться через специальный «интерфейс», которые сосредотачивает описание всех применений программы[3].

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

Пользователь может выполнять взаимодействия с объектом через этот интерфейс. [1]

Инкапсуляция – это один с четырёх важнейших механизмов ООП.

Сокрытие реализации применяют в случаях:

– большой уровень локализации изменений при надобности таких изменений,

– прогнозируемость разного рода изменений (какие именно изменения в программном коде надо сделать непосредственно для заданного изменения функциональности).

Наследование позволяет описать новый класс на базе уже существующего (так называемого, родительского), при этом все свойства и функциональность для родительского класса будут заимствоваться новым классом.

Иными словами, класс-наследник выполняет реализацию уже существующего класса.

В программировании различают 2 вида наследования:[14]

– простое наследование;

– множественное наследование.

Полиморфизм – это возможность объектов с аналогичной спецификацией иметь разную реализацию.

ЯП поддерживает полиморфизм, когда классы с аналогичной спецификацией могут иметь разную реализацию. К примеру, реализация класса может изменяться в процессе наследования[11].

Стоит отметить, что кроме классификации ЯП по поддерживаемым парадигмам применяется и следующая (рисунок 5):

Результат пошуку зображень за запитом "классификация языков программирования"

Рис. 5. Классификация ЯП

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

В первой главе представляемой курсовой работы рассмотрены некоторые основные понятия теории ЯП, а именно, выполнено определения языка программирования, дана характеристика основным парадигмам, которые используются при создании программ.

2. ОПИСАНИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

2.1. Обзор популярных языков программирования высокого уровня

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

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

В последние годы господство С++ слегка пошатнулось, ведь широкое развитие получили Java, Python и C#, но маятник мнения опытных разработчиков уже качнулся в обратную сторону, большинство программистов, что оставили программировать на С++, поспешили сразу возвратится к привычному ЯП. [6]

ЯП С++ – ЯП для общего назначения, что часто применим для написания кода системного программирования, понимаемом при этом в очень широком понимании.

Кроме того, ЯП С++ успешно применяется для написания приложений, выходящих далеко за рамки классического кода. Реализации ЯП С++ также часто присутствует полностью на всех ПК, от самых малофункциональных – и для применения в супер-ПК. [20]

Б. Страуструп является самым первым создателем и разработчиком ЯП С++, а также создателем транслятора. Он является авторитетным и очень опытным сотрудником научного центра корпорации AT&T, что находится в Нью-Джерси.

Страуструп получил почетное звание почетного магистра по вычислительной техники в институте города Арус, а имеющееся у него докторское звание – в Кембридже. [16]

Он специализируется и в сфере операционных систем, разных распределенных ИС, принципов программирования, моделирования, а также является автором руководства С++.

ЯП С++ обязан безусловно языку С [17], который сохраняется в качестве некоторое его подмножество. В нем сохранены все свойственные для С средства и методы программирования низкого уровня, предназначенные для разрешения задач по системного программирования. [6]

Название С++ придумано Р. Маскитти в 1982 г. Оно имело возможность показать свой эволюционный характер для нового ЯП С++. Обозначение «++» определяет операцию инкремента.

Изначально ЯП С++ был спроектирован также для того, чтоб Б. Страуструпу и его команде не надо было выполнять программирование программы на ЯВ ассемблера или других ЯП низких уровней. [3]

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

До какого-то времени определенного какого-то графика по разработке для языка С++ не было. Реализация и документирование для всех средств шли параллельно.

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

Примерно в 1984 г. стало очевидным, что работы по стандартизации С++ будут неизбежными и надо приступить незамедлительно к проектированию базиса.

Организация AT&T внесла также свой вклад в рассматриваемый этап работы. Больше 90 представителей выполняли приемы для изучение и комментировали аспекты языка, что стали современной версией для руководства по С++.

В процессе разработки ЯП С++ самым важным этапом была его простота. Поскольку при возникновении вопросов, именно что надо упростить: либо руководство, или документацию, то всегда выбирали первое. Огромное значение также все разработчики придавали совместимости ЯП С++ с С, что мешало изменить весь синтаксис.[9]

Пример кода на С++ показан на рисунке 6:[10]

Результат пошуку зображень за запитом "код С++"

Рис. 6. Пример кода С++

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

Хотя иногда пользователю понадобится самому создать некоторый тип, то он может его определить с легкостью посредством самого языка. Написание программ в С++ также сводится и к определению зависящих параметров для типов или области программирования. [9]

Язык С++ создавался и по причине использования его для традиционной сферы, а именно в системах для программирования С на ОС Linux. Но есть уже обоснованные способы по применению С++ в этой богатой программной среде. К примеру, все системы трансляции, динамическую загрузка данных и БД, можно применять также и в Linux.[16]

2.1.2. Обзор Java

ЯП Java является кросс-платформенным языком программирования, что был создан корпорацией Sun Microsystems.

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

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

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

Java – не лишь ЯП, но и специальная платформа проектирования приложений. Изначально указанный язык назывался Oak, и был разработан Джеймсном Гослингтом с целью программирования разных бытовых электронных устройств.

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

Чтобы не связывать разработку программного обеспечения с конкретно применяемой платформой, Д. Гослингт начал использовать разные расширение компилятора С++.

Заметим, со временем он понял, что только один С++ не будет удовлетворять всем необходимым потребностям, как бы не расширять его. Поэтому в середине 1990 г. спроектировал язык Oak.

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

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

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

Пример кода показан на рисунке 7:

Результат пошуку зображень за запитом "пример кода на java"

Рис. 7. Пример кода Java

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

  • широкое использование кода в платформенно-ориентированном виде;
  • применение технологий трансляции для специального байт-кода в машинный код прямо во время работы программы и сохранения промежуточных версий,
  • аппаратные средства, что обеспечивают ускоренную обработку байт-кодов.

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

Такие идеи нашли выражение в структуре CLI.[20]

2.1.3. Обзор C#

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

Указанные языки могут устраивать многих разработчиков, хотя не обеспечивают в действительности какой-то требуемой продуктивности разработки. [5] Процессы для написания приложения при использовании ЯП С++ занимает много времени, чем разработка такого же приложения на C#.

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

Традиционным средством для выполнения отладки программных продуктов на стадиях выполнения этапов разработки C++ является маркировка частей кода программ директивами #ifdef.

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

Все это позволяет сильно упрощать работу, вместо создания автоматизированного инструмента по проверке классов или интерфейсов, он является действительно частью некоторого абстрактного объекта, что можно воспользоваться просто при помощи сообщений основанных на локальных атрибутах.[17]

ЯП C#, являясь одним из последних с широко используемых ЯП, имеет возможность впитать полностью весь опыт, лучшие стороны всех современных ЯП, при этом являясь также созданным для программирования в среде программирования .NET.

Архитектура.NET продиктовала ему перспективную объектно-ориентированную направленность. [6]

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

2.2. Среды разработки программных продуктов

Интегрированная среда разработки, ИСР (англ. IDE, Integrated Development Environment или Integrated Debugging Environment) — система программных средств, используемая программистами для разработки программного обеспечения (ПО).

Обычно среда разработки включает в себя:

  • текстовый редактор;
  • компилятор и / или интерпретатор;
  • средства автоматизации сборки;
  • отладчик.

Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя и существуют ИСР, предназначенные для нескольких языков программирования — такие, как Eclipse, NetBeans, Embarcadero RAD Studio, Qt Creator или Microsoft Visual Studio, но обычно ИСР предназначается для одного определённого языка программирования - как, например, Visual Basic, PureBasic, Delphi, Dev-C++.

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

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

Обычно IDE ориентирована на определенный язык программирования, предоставляя набор функций, который наиболее близко соответствует парадигмам этого языка программирования. Однако, есть некоторые IDE с поддержкой нескольких языков, такие как Eclipse, ActiveState Komodo, последние версии NetBeans, Microsoft Visual Studio, WinDev и Xcode.

IDE обычно представляет из себя единственную программу, в которой проводилась вся разработка. Она обычно содержит много функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения. Цель среды разработки заключается в том, чтобы абстрагировать конфигурацию, необходимую, чтобы объединить утилиты командной строки в одном модуле, который позволит уменьшить время, чтобы изучить язык, и повысить производительность разработчика. Также считается, что трудная интеграция задач разработки может далее повысить производительность. Например, IDE позволяет проанализировать код и тем самым обеспечить мгновенную обратную связь и уведомить о синтаксических ошибках. В то время как большинство современных IDE являются графическими, они использовались еще до того, как появились системы управления окнами (которые реализованы в Microsoft Windows или X11 для *nix-систем). 

Работа в интегрированной среде дает программисту:

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

Каждая программа должна иметь удобный интерфейс для организации диалога с пользователем. Основным элементом интерфейса в Windows являются окна. Одной из разновидностей окон является форма, которая может содержать кнопки, текстовые поля, переключатели и т.д. Поэтому программы, написанные для использования в Windows, обычно имеют оконный (графический) интерфейс. [12]

Для быстрого и удобного создания программ с графическим интерфейсом используют специальные среды визуального программирования. Почти каждый современный язык программирования имеет по крайней мере одну такую среду: Object Pascal - Borland Delphi, Basic - Visual Basic, C++ - Borland C ++ Builder, Microsoft Visual C.

Визуальное программирование еще называют Rapid Application Development (RAD), "быстрая разработка приложений". Технология RAD существенно ускоряет создание программ с графическим интерфейсом. Инструментальная система Builder, подобно другим системам визуального программирования (Visual C, Visual Basic, Delphi и т.д.), в первую очередь является посредником между интерфейсом прикладного программирования Windows (API - Application Program Interface) и программистом, позволяя даже начинающим разработчикам быстро создавать программные продукты, которые будут иметь графический интерфейс пользователя (GUI - Graphic User Interface). [7]

C++ Builder – это технология визуального программирования, в которой максимально автоматизировано ее трудоемкую часть – создание графических программ с диалоговыми окнами.

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

В С++ Builder используется более 100 компонент. Все компоненты собраны в библиотеке визуальных компонентов VCL - Visual Class Library. С++ Builder предназначен для написания программ на языке программирования C++ и сочетает VCL и среду программирования (IDE - Integrated Development Environment), написанную для Delphi с компилятором C++.

Цикл создания программных проектов в C++ Builder является аналогичным Delphi, но с существенными улучшениями. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но, к сожалению, обратное утверждение не справедливо. С++ Builder позволяет методом drag-and-drop довольно просто разрабатывать интерфейсные программы, что приводит к повышению эффективности и простоты программирования, поскольку программисту не надо каждый раз создавать те элементы собственных программ, которые могут быть реализованы с помощью уже существующих объектов.

Основным объектом визуального программирования является компонент. Компонентами в C ++ Builder являются объекты или классы объектов. Их непосредственно видно на экране (за исключением группы невидимых компонентов), их можно передвигать мышью, они могут реагировать на щелчки клавиш клавиатуры, мыши. [6]

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

Методы (функции-члены) выполняют определенные операции над компонентным объектом, в том числе и такие сложные, как воспроизведение или перемотка устройства мультимедиа.

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

Окно среды C ++ Builder состоит из следующих элементов (рис. 8): [3]

– окно формы;

– окно кода программы;

– главное меню;

– кнопки инструментальных панелей;

– палитра компонентов;

– окно инспектора объектов.

Окно формы занимает большое место и является прямоугольным серым "контейнером", на который при проектировании формы размещают компоненты (кнопки, надписи, панели, окна редакторов и т.д.). Форма сама является компонентом с названием Form. Без дополнительных указаний заголовок компонента (свойство Caption) совпадает с его названием (свойство Name), к которой добавляется порядковый номер, начиная с 1 (например Button1, Button2). но заголовок можно изменить с помощью свойства Caption. Размеры формы можно изменять или с помощью окна Object Inspector, или просто перетащив мышкой линии границы формы.

Рис. 8. Интерфейс среды разработки C++ Builder

Для размещенных на форме компонентов можно вызвать контекстную справку, для чего следует выделить нужный компонент и нажать клавишу <F1>. Если щелкнуть на самой форме и нажать клавишу <F1>, откроется справка по классу формы TForm. [9]

После запуска C++ Builder редактор кода содержит минимальный набор инструкций, обеспечивает нормальное функционирование пустой формы в качестве Windows окна. При создании проекта программист вносит в него нужный программный код.

3.РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ ЯЗЫКА ВЫСОКОГО УРОВНЯ С++

3.1.Практическое использование шаблонов в языках программирования высокого уровня

Шаблоном класса называют обобщенное определение класса, что может содержать типы информации как параметры, для которого компилятор может создавать автоматически класс для заданных пользователем определенных типов данных.

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

Поэтому шаблоны класса называют также родовыми классами.[20] Синтаксис объявления шаблона:

template <class М1 | М1 идент1>,

class М1 | М1 идент 2,

...

class Мn | Мn идент n>

class наименование

{

// Тело

}

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

Каждый параметр является:[6]

– ключевым словом;

– именем типа.

После этого нужно выполнить объявления класса. Объявление или же инициализация класса используется с помощью списка параметров шаблона. Которые могу быть разного типа.

По задании параметризованных типов информации после ключевого слова class в угловых скобках может быть записано и ключевое слово typename.

Ключевая фраза class или же typename может показывать, параметрическое указание встроенный определенный пользователем формат данных или нет.

Параметры шаблона, которые идут после ключевого слова typename или class, называют также параметризованными типами.

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

Поэтому такие параметры называются нетипичными. Непосредственно название формального параметра в списке параметров шаблона класса должны являться уникальными. Функции-члены для шаблона класса могут определяться и в теле класса. [3]

Таким образом, все параметризованные типы или же нетипичные константы указываются дважды. Первый раз при использовании ключевого слове template (указывается именно так, как и при выполнении объявления шаблона).

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

В других определениях функции-члены не отличаются от простых вовсе.

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

Такой механизм позволяет решить разные задачи, для которых будет использоваться полиморфизм.

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

– программа содержит код для всех отдельных представителей порожденного класса;

– далеко не для всех форматов предусмотрена реализация шаблонных классов и функций.

3.2. Разработка программы для обработки алгебраических матриц на языке высокого уровня

Напишем приложение на языке высокого уровня С++, реализующий матричные операции, а именно:

– сложение;

– вычитание;

– умножение;

– транспонирование матриц;

– умножение матрицы на число;

– умножение вектора на матрицу;

– вывод элементов на монитор;

– проверку матриц на их равенство;

– выполнение определителя.

Разработаем программу с оконным интерфейсом и при этом продемонстрируем работу шаблонного класса.[16]

С помощью среды интегрированной разработки C++ Builder разработаем интерфейс вида (рисунок 9)

Рис. 9. Созданный интерфейс пользователя

Проект программы состоит с файла под названием Matrix.cpp, где и находится описание используемого в работе шаблонного класса, а также всех его функций.

Рассмотрим кратко несколько самых основных частей кода для реализации шаблонного класса.

//Выполнение объявления шаблонного класса имеет вид

template<class М>

class Matrix

{

//указание открытых полей

public:

// конструктор

Matrix(int n_1, int m_1)

{

rows = n_1;

cols = m_1;

mt = new М*[rows];

for(int i_1=0; i_1<rows; i_1++)

{

mt[i_1] = new М[cols];

}

}

//описание конструктора копирования

Matrix(const Matrix<М> &m_1)

{

rows = m_1.rows;

cols = m_1.cols;

mt = new М*[rows];

for(int i_1=0; i_1<rows; i_1++)

{

mt[i_1] = new T[cols];

for(int j_1=0; j_1<cols; j_1++)

{

mt[i_1][j_1] = m.get(i_1,j_1);

}

}

}

//подпрограмма арифметического сложения двух матриц

Matrix<М> ad(const Matrix<М> &m) {

Matrix<М> res_1(rows, cols);

for(int i_1=0; i_1<rows; i_1++) {

for(int j_1=0; j_1<cols; j_1++) {

res_1.mtx[i_1][j_1] = get(i_1,j_1)+ m.get(i_1,j_1);

}

}

return res_1;

}

//функция транспонирования

void tran() {

for(int i_1=0; i_1<rows; i_1++) {

for(int j_1=i_1; j_1<cols; j_1++) {

М tmp = mt[i_1][j_1];

mt[i_1][j_1] = mt[j_1][i_1];

mx[j_1][i_1] = tmp;

}

}

}

Функционирование программы указано на рисунке 10:

Рис. 10. Описание интерфейса

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

ЗАКЛЮЧЕНИЕ

Широкое использование современных информационных технологий практически во всех сферах деятельности человека является одним с основных признаков цивилизованного общества.

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

Прогресс компьютерных технологий определяет процесс появления новых самых разнообразных знаковых систем по записи алгоритмов – языков программирования.

Весь смысл появления такого ЯП – оснащенный набор вычислительных средств дополнительной информации, превращает его в алгоритм. Язык программирования также служит 2-м между собой связанным целям:

– он дает программисту аппараты для задания действий, что должны быть выполнены;

– формирует концепции, что используется программистом, размышляя о том, что именно делать.

В работе выполнены такие задачи:

При написании работы поставлены такие задачи:

– описаны основные понятия теории языков программирования и их классификацию;

– дана характеристика современным языкам программирования высокого уровня;

– рассмотрены среды программирования, которые применяются в ЯП высокого уровня;

– описаны основные понятия объектно-ориентированного подхода к написанию программ;

– на практике рассмотрены основные возможности языка программирования С++.

В процессе проводимого анализа работы выявлены положительные стороны языков высокого уровня:

  • удобность применения иерархии классов;
  • гибкость языков;

– интегрированность шаблонных классов и прочее.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Айвор Хортон. Visual Studio. Полный курс. Издательский дом «Вильямс». – 2014. – 300 с.
  2. Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. – 2014. – 436 с.
  3. Брайан Керниган Алгоритмизация и программирование. Издательство «Невский диалект». – 2014. – 320 с.
  4. Бьерн Страуструп. Программирование. Принципы и практика использования. Издательский дом «Вильямс». – 2015. – 258 с.
  5. Джесс Либерти. Освой самостоятельно Java за 21 день. Издательский дом «Вильямс». – 2014. – 230 с.
  6. Динман М.И. Алгоритмизация и программирование. Освой на примерах. – СПб.: БХВ-Петербург, 2014.– 260 с.
  7. Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на С. Издательство «Эксмо». – 2017. – 400 с.
  8. Кнут, Дональд, Эрвин. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. Пер. с англ. – : Уч. пос. М.: Издательский дом. «Вильямс», 2014.– 720с.
  9. Кубенский А.А. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++. – СПб.: БХВ-Петербург, 2017. – 464с.
  10. Лаптев В.В., Морозов А.В., Бокова А.В. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер. 2017. – 288 с.
  11. Майерс С. Эффективное использование алгоритмизации. 50 рекомендаций по улучшению ваших программ и проектов. Пер. с англ. – М.: ДМК Пресс; – СПб.: Питер. 2017.–240с.
  12. Прата С. Язык программирования Python. Издание 6. Издательский дом «Вильямс» – 2016. – 304 с.
  13. Р. Лафоре. Объектно-ориентированное программирование в С++. Издательство «Питер». Издание 4. – 2014. – 628 с.
  14. С++ Стандартная библиотека. Для профессионалов./Н. Джосьютис. – СП Питер, 2014. – 350 с.
  15. Седжвик Роберт. Фундаментальные алгоритмы. Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», – 2014. – 500 с.
  16. Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие. – Минск. «Вышейшая школа». – 2014. – 478с.
  17. Харви Дейтел, Пол Дейтел. Как программировать на С++. Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 2014. – 430 с.
  18. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си. Учеб. пособие. – Финансы и статистика, 2014. – 464с.
  19. Штерн Виктор. Основы С++: Методы программной инженерии.– Издательство «Лори», 2017. – 860с.
  20. Язык С++: Учеб. Пособие /И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин.–Мн.: Новое знание, 2017. – 203 с.