![](/stc/img/evkova.png)
Классификация языков программирования высокого уровня (Основы теории языков программирования)
Содержание:
ВВЕДЕНИЕ
Подавляющее большинство разных языков программирования (ЯП) исчезало, едва только появившись. Лишь к очень немногим был проявлен какой-то интерес, и буквально единицы с них получили действительно широкое распространение среди программистов.
При всем своем множестве языки программирования оказывают также и взаимовлияние друг на друга. По мере быстрого прогресса компьютерной техники также происходит постоянное расширение ЯП. Кроме этого, в разных местах могут предприниматься попытки разработки новых, современных языков, однако распространение их очень затруднено, поскольку такие программисты очень консервативные.
Все языки программирования можно условно поделить на такие две части:
– языки низкого уровня;
– языки высокого уровня.
Более понятными для ЭВМ являются машинно-ориентированные языки. ЯП, более понятные для обычного человека, именуются языками высокого уровня.
Все языки низкого уровня можно разделять на машинный язык (совокупности машинных слов), а также автокод (символьное представление машинного кода).
Актуальность курсовой работы в том, что необходимость в разработке программ на высокоуровневых языках программирования, считается основой для удобного применения, к примеру, дружественного внешнего вида, который без использования классификации ЯП – невозможен.
Цель работы – рассмотрение принципов классификации языков программирования высокого уровня.
Проблему исследования изучали: К. Хортон [1], Н. Прата [12], В. Страуструп [4], Р. Лафортс [13].
1. ОСНОВЫ ТЕОРИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1.1. Определение языков программирования
Языком программирования (ЯП) называют любую символьную систему обозначений для описания данных и применяемых алгоритмов.
Другими словами, языки программирования – формальные искусственные языки, которые состоят с:[5]
– алфавита;
– синтаксиса;
– семантики.
Алфавит является набором символов, которые программист может использовать. [5]
Синтаксисом является система правил, которая предназначена для записи конструкций языка.
Под семантикой понимается набор правил, на основании которых следует толковать рассмотренные конструкции.
Все современные ЯП применяются при написании самых разных программных продуктов для ПК.
На рисунке 1 показана структура классического ЯП: [20]
Рисунок 1 –Структура ЯП
Основное требования с точки зрения написания программного кода – использовать систему команд, при непосредственной работе с которыми будут производится операции над самыми различными данными.
Принцип работы ПК при выполнении программ следующий. Данные, а также программные команды хранятся непосредственно в памяти ПК. Устройства управления анализируют очередную команду, потом переносят ее в так называемое арифметическое устройство с памяти нужные программисту обозначения и сообщает ему номер операции, которую нужно выполнить. [15]
Результат выполнения программы находится в памяти ПК (также может ожидать следующую операцию в арифметическом устройстве процессора).
Любую систему символьных обозначений, а также с ней согласованную связанную систему различных понятий, применяемых для характеристики алгоритмов и разного рода структур информации также считают языками программирования.
Хотя, стоит заметить, что здесь речь идет об специальных универсальных ЯП, что нашли свое широкое применение непосредственно для разработки программ в областях человеческой жизнедеятельности. Все такие языки создавались для конкретных целей, а также имеют свои достоинства и недостатки. [11]
Для того, чтоб оптимально использовать имеющиеся языки программирования каждому программисту, нужно прекрасно понимать их фундаментальные понятия и принципы использования.
Знание всех таких концептуальных оснований современной теории языков программирования для использования их базовых языковых конструкций дает возможности:[14]
– более обоснованно определять ЯП для создания конкретного программного проекта;
– разрабатывать алгоритмы для более эффективной работы приложения;
– пополнять весь набор полезных конструкций для языков программирования;
– ускорять изучение самых современных языков программирования;
– применять полученные знания как фундаментальную базу для разработки более новых ЯП;
– получать базовые знания, которые необходимы для выполнения разработки трансляторов ЯП, поддерживающих самые различные вычислительные модели.
Стоит заметить, что языки программирования очень часто отличаются синтаксисом и своими функциональными возможностями. [7]
Также некоторые различия в программном синтаксисе играют только малую роль при изучении основ ЯП, при чем само наличие или же отсутствие функциональных возможностей также влияет на реализацию, область применения языка.[11]
1.2. Классификация языков программирования
В нынешнее время имеются 4 основные парадигмы написания программ, отражающие вычислительные модели, при использовании которых описывается совокупность существующих методов программирования (рисунок 2).
Под парадигмой программирования понимается совокупность методов, подходов, понятий, идей, стратегий, определяющая принципы и стиль создания программных продуктов.
Парадигма программирования в современной индустрии программирования определяется часто набором разных инструментов для программиста (операционная система (ОС), язык программирования, интегрированная среда написания программ). [3]
Рисунок 2 – Парадигмы программирования
Парадигмы программирования дают возможность представить то, как именно разработчик видит выполнение написанной программы. Например, для одного с самых популярных подходов объектно-ориентированного программирования разработчик рассматривает программу как набор взаимодействующих объектов, но при функциональном программировании эта же программа представляется в виде цепочки вычисления функций. [11]
Полная приверженность человека к одной парадигме носит часто очень сильный характер.[19]
Императивное программирование (рисунок 3) – это парадигма программирования, описывающая процесс вычисления при применении инструкций, изменяющих общее состояние создаваемой программы.
Заметим, что императивная программа очень похожа на приказы, которые выражаются повелительно в человеческих языках.
Императивные ЯП противопоставляются функциональным или логическим. Такие функциональные языки, как Haskell, вообще не используют последовательность программных инструкций. [19]
Рисунок 2 – Схема императивного программирования
Функциональное программирование – раздел дискретной математики, для которой процесс работы программы трактуют как вычисление некоторых значений математической функции.[17]
Пример кода функционального языка W# показан на рисунке 4 [10]
Рисунок 4 – Пример кода на W#
Логическое программирование относится к парадигме программирования, которая изучает методы и возможности по заданным логическим правилам. [4]
На рисунке 5 показан программный код ЯП Пролог, которые является типовым примером ЯП данной парадигмы. [2]
Рисунок 5 – Программный код языка Пролог
Все программы, которые при использовании данного подхода к программированию основаны на теории дискретной или математической логики. [13]
Первым языком, поддерживающим логическое программирование был ЯП Planner, где была заложена возможность автоматического вычисления результатов по правилам перебора вариантов.
Planner применялся, чтоб понизить требования для разных вычислительных ресурсов того времени, а также обеспечивать возможность вывода информации, не используя программный стек. [14]
В результате был создан ЯП Prolog, который не требовал плана для реализации перебора вариантов, к тому же был, в некотором смысле, упрощением ЯП Planner.[15]
Объектно-ориентированное программирование (сокращенно ООП) – парадигма программирования, которая использует своими основными концепциями объекты и классы.
Стоит отметить, что кроме описанных параметров ООП часто применяются свойства, методы и другие (рисунок 6).
Рисунок 6 – Понятия ООП
Классом является тип, который описывает полное устройство объектов. Понятие подразумевает некоторое поведение, а также способ представления программируемого объекта. Термин «объект» подразумевает обладание определённым поведением или же способом представления. [11]
Стоит отметить, что каждый объект является экземпляром класса. Класс также часто сравнивают с неким чертежом, по которому формируются объекты. [18]
С понятием ООП также связаны такие термины (рисунок 7): [19]
Рисунок 7 – Понятия ООП
Абстрагирование в ООП – это придание объекту некоторых характеристик, которые его отличают от = других объектов, определяя его концептуальные границы (рисунок 8). [1]
Рисунок 8 – Пример абстрагирования
Такой подход является базовым для объектно-ориентированного программирования. Он позволяет работать с разными объектами, не вдаваясь непосредственно в особенности реализации. [7]
В каждом случае, кроме абстрагирования, применяется тот или иной инструмент:
– инкапсуляция;
– полиморфизм;
– наследование.
К примеру, при необходимости обратиться непосредственно к скрытым данным, следует воспользоваться инкапсуляцией, при этом создав функцию доступа.
Абстракция данных – это популярная техника программирования. Фундаментальные идеи состоят в разделении деталей реализации подпрограммы, а также характеристик существенных для ее корректного использования. [8]
Данное разделение может выражаться через специальный «интерфейс», которые сосредотачивает описание всех применений программы[3].
Инкапсуляция – это свойство ЯП, позволяющее пользователю не рассматривать понятие сложности реализации применяемого программного компонента, а с ним взаимодействовать посредством предоставляемого интерфейса, а также защитить и объединить жизненно важные данные для компонента. При этом пользователям предоставляется только интерфейс объекта. [17]
Рисунок 9 – Пример инкапсуляции
Пользователь может выполнять взаимодействия с объектом через этот интерфейс. [1]
Инкапсуляция – это один с четырёх важнейших механизмов ООП.
Сокрытие реализации применяют в случаях:
– большой уровень локализации изменений при надобности таких изменений,
– прогнозируемость разного рода изменений (какие именно изменения в программном коде надо сделать непосредственно для заданного изменения функциональности).
Наследование позволяет описать новый класс на базе уже существующего (так называемого, родительского), при этом все свойства и функциональность для родительского класса будут заимствоваться новым классом.
Иными словами, класс-наследник выполняет реализацию уже существующего класса (рисунок 10). [4]
Рисунок 10 – Пример наследования
В программировании различают 2 вида наследования:[14]
– простое наследование;
– множественное наследование.
Полиморфизм – это возможность объектов с аналогичной спецификацией иметь разную реализацию (рисунок 11).
ЯП поддерживает полиморфизм, когда классы с аналогичной спецификацией могут иметь разную реализацию. К примеру, реализация класса может изменяться в процессе наследования[11].
Кратко смысл полиморфизма выражают фразой: «Один интерфейс, много реализаций».
Рисунок 11 – Принцип полиморфизма
Стоит отметить, что кроме классификации ЯП по поддерживаемым парадигмам применяется и следующая (рисунок 12): [2]
Рисунок 12 – Классификация ЯП
В настоящее время существует в мире несколько сотен реально применяемых языков программирования, хотя с времени создания первых компьютерных машин человечество придумало более 8 тысяч языков программирования.[2]
В первой главе представляемой курсовой работы рассмотрены некоторые основные понятия теории ЯП, а именно, выполнено определения языка программирования, дана характеристика основным парадигмам, которые используются при создании программ.
2. ОПИСАНИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
2.1.Язык С++
В нынешнее время С++ считают одним из популярнейших и основных языков, что могут применяться для разработки ПО.
В последние годы господство С++ слегка пошатнулось, ведь широкое развитие получили Java, Python и C#, но маятник мнения опытных разработчиков уже качнулся в обратную сторону, большинство программистов, что оставили программировать на С++, поспешили сразу возвратится к привычному ЯП. [6]
ЯП С++ – ЯП для общего назначения, что часто применим для написания кода системного программирования, понимаемом при этом в очень широком понимании.
Кроме того, ЯП С++ успешно применяется для написания приложений, выходящих далеко за рамки классического кода. Реализации ЯП С++ также часто присутствует полностью на всех ПК, от самых малофункциональных и для применения в супер-ПК. [20]
Б. Страуструп является самым первым создателем и разработчиком ЯП С++, а также создателем транслятора. Он является авторитетным и очень опытным сотрудником научного центра корпорации AT&T, что находится в Нью-Джерси.
Страуструп получил почетное звание почетного магистра по вычислительной технике в институте города Арус, а имеющееся у него докторское звание – в Кембридже. [16]
Он специализируется и в сфере операционных систем, разных распределенных ИС, принципов программирования, моделирования, а также является автором руководства С++.
ЯП С++ обязан безусловно языку С [17], который сохраняется в качестве некоторое его подмножество. В нем сохранены все свойственные для С средства и методы программирования низкого уровня, предназначенные для разрешения задач ПО системного программирования. [6]
Название С++ придумано Р. Маскитти в 1982 г. Оно имело возможность показать свой эволюционный характер для нового ЯП С++. Обозначение «++» определяет операцию инкремента.
Изначально ЯП С++ был спроектирован также для того, чтоб Б. Страуструпу и его команде не надо было выполнять программирование программы на ЯВ ассемблера или других ЯП низких уровней. [3]
Главным предназначением было сделать еще более приятным сам процесс программирования, упрощать его для некоторых программистов, которые имеют свое видение на реализацию программного продукта.
До какого-то времени определенного какого-то графика по разработке для языка С++ не было. Реализация и документирование для всех средств шли параллельно.
Поэтому указанный язык продолжает развиваться для быстрого преодоления некоторых проблемы, возникающие для разных пользователей.
Примерно в 1984 г. стало очевидным, что работы по стандартизации С++ будут неизбежными и надо приступить незамедлительно к проектированию базиса.
Организация AT&T внесла также свой вклад в рассматриваемый этап работы. Больше 90 представителей выполняли приемы для изучения и комментировали аспекты языка, что стали современной версией для руководства по С++. [17]
В процессе разработки ЯП С++ самым важным этапом была его простота. Поскольку при возникновении вопросов, именно что надо упростить: либо руководство, или документацию, то всегда выбирали первое. Огромное значение также все разработчики придавали совместимости ЯП С++ с С, что мешало изменить весь синтаксис.[9]
Пример кода на С++ показан на рисунке 13:[10]
Рисунок 13 – Пример кода С++
В ЯП С++ не используются различные типы данных, а также и операции высокого уровня. К примеру, в нем не существует одного типа под названием «матрица» с операциями обращения ее, или «строка» с операциями встроенной конкатенации.
Хотя иногда пользователю понадобится самому создать некоторый тип, то он может его определить с легкостью посредством самого языка. Написание программ в С++ также сводится и к определению зависящих параметров для типов или области программирования. [9]
Язык С++ создавался и по причине использования его для традиционной сферы, а именно в системах для программирования С на ОС Linux. Но есть уже обоснованные способы по применению С++ в этой богатой программной среде. К примеру, все системы трансляции, динамическую загрузка данных и БД, можно применять также и в Linux.[16]
ЯП Java является кросс-платформенным языком программирования, что был создан корпорацией Sun Microsystems.
Все имеющиеся приложения для Java будут также обычно компилироваться в специально созданный стандартный байт-код, а потому работать они могут практически на всех виртуальных Java-машинах быть выполнены не зависимо от любой архитектуры ПК. [16]
Сегодня популярная технология разработки ПО Java достигает своего совершенства, она может предоставлять инструменты по превращении любых статических веб-страниц в интерактивные динамические документы, что могут использоваться для создания распределенных и не зависящих от платформ приложений.
Чтоб успешно конкурировать с другими производителями в сфере создания бытовой электроники, любая из компаний также должна рассматривать для работы процессоры в качестве специального товара, который заменятся на более дешевые, а также обеспечивать совместимость работы, соблюдать все возможные стандарты. [14]
Java – не лишь ЯП, но и специальная платформа проектирования приложений. Изначально указанный язык назывался Oak, и был разработан Джеймсном Гослингтом с целью программирования разных бытовых электронных устройств. [12]
Потом, его переименовали, и в последствии, на Java и стал использоваться для создания самых разных клиентских приложений серверного программного обеспечения. ЯП был назван в честь вида кофе Java, который любили некоторые из разработчиков, поэтому на официальном логотипе изображена чашка с парящим кофе. Также существует и другая из версий происхождения этого названия, Java – это сленговое название кофе со специальной кофе-машины, как пример для бытового устройства или выполнения программ для которых он изначально был создан.
Чтобы не связывать разработку программного обеспечения с конкретно применяемой платформой, Д. Гослингт начал использовать разные расширение компилятора С++. [14]
Заметим, со временем он понял, что только один С++ не будет удовлетворять всем необходимым потребностям, как бы не расширять его. Поэтому в середине 1990 г. спроектировал язык Oak.
Программы на Java сразу транслируются в байт-код, который выполняется на любой виртуальной машине Java посредством специальной программы, что обрабатывает транслированный код и сразу впередает се инструкции оборудованию методами работы интерпретатора. [6]
Достоинство методов выполнения программ находится в полной независимости от рассмотренного байт-кода и другого оборудования, которое выполняет все имеющиеся Java-приложения в основном на любых устройствах, для которых существует уже соответствующая виртуальная машина. Еще одной специфической особенностью технологии считается гибкая система безопасности, благодаря чему выполнение программы полностью может контролироваться виртуальной машиной.
Практически все основные операции, которые превышают установленные полномочия программ (а именно, попытка несанкционированного доступа, соединения с ПК) вызывают немедленное их прерывание. Часто к основным недостаткам концепции применения виртуальной машины можно относить и то, что применение специального байт-кода для конкретной виртуальной машине значительно будет снижать общую производительность программ и алгоритмов, что реализованы с помощью Java. [8]
Пример кода показан на рисунке 14:
Рисунок 14 – Пример кода Java
В последнее время внесен ряд новых усовершенствований, которые увеличивали скорость выполнения некоторых программ. [4]
- широкое использование кода в платформенно-ориентированном виде;
- применение технологий трансляции для специального байт-кода в машинный код прямо во время работы программы и сохранения промежуточных версий,
- аппаратные средства, что обеспечивают ускоренную обработку байт-кодов.
Идеи, что заложены в концепцию, а различные системы для реализации виртуальных машин в Java, значительно вдохновляли энтузиастов для расширения перечня языков, что могли бы быть применены для создания программных продуктов.
Такие идеи нашли выражение в структуре CLI.[20]
2.3. Обзор C#
В последнее время С и С++ являются самыми используемых для разработки коммерческих программ разного рода, а также современных бизнес-приложений. [18]
Указанные языки могут устраивать многих разработчиков, хотя не обеспечивают в действительности какой-то требуемой продуктивности разработки. [5] Процессы для написания приложения при использовании ЯП С++ занимает много времени, чем разработка такого же приложения на C#.
Сейчас существуют разные ЯП, которые увеличивают в несколько раз общую продуктивность разработки за счет уменьшения гибкости, которая привычна, к примеру, в С++.
Традиционным средством для выполнения отладки программных продуктов на стадиях выполнения этапов разработки C++ является маркировка частей кода программ директивами #ifdef. [3]
В языке C#, применив такие атрибуты с ориентацией на условные слова, программисты могут быстрее написать программный код.
Все это позволяет сильно упрощать работу, вместо создания автоматизированного инструмента по проверке классов или интерфейсов, он является действительно частью некоторого абстрактного объекта, что можно воспользоваться просто при помощи сообщений основанных на локальных атрибутах.[17]
ЯП C#, являясь одним из последних с широко используемых ЯП, имеет возможность впитать полностью весь опыт, лучшие стороны всех современных ЯП, при этом являясь также созданным для программирования в среде программирования .NET.
Архитектура.NET продиктовала ему перспективную объектно-ориентированную направленность. [6]
В результате написания второго раздела курсовой работы можно сделать вывод, что в С# отсутствуют некоторые факторы, что необходимы для проектирования некоторых высокопроизводительных приложений, деструкторы, подставляемые функции, выполнение которых гарантируется в разных точках кода. При этом Java не может обеспечивать полноценное низкоуровневое программирования.
2.4.Обзор языка Ruby
В каждой с сфер разработки программного обеспечения (ПО) обычно есть минимум 2-3 языка, способных справиться в принципе с поставленными задачами. [11]
Но подход к решению для таких языков обычно отличается, и тут постает вопрос приоритетов к разработке и индивидуальных правил программиста.
В конце концов важно мышление и понимание такого факта, что нужно сделать, каким образом это поддерживать. [4]
Стоит отметить, что также имеет смысл выбирать тот язык, для которого будет удобней и проще писать, который дает возможность раскрыть свой качественный потенциал программиста.
Ruby был задуман еще в 1993 г. японцем Юкихиро Мацумото, который стремился создать язык, что бы вобрал из других языков лучше подходы, облегчающие работу программиста (рисунок 15).
Рисунок 15 – Логотип Ruby
Он также действовал во многом и согласно постулату Абельсона:[2] «Программы должны создаваться так, чтобы их всегда могли читать люди, а лишь иногда так, чтоб их могли выполнить машины».
Мацумото хотелось, чтоб это был только объектно-ориентированный, простой при использовании высокоуровневый язык программирования. Таким образом, главное назначение языка Ruby – это создание мощных и одновременно понятных программ, в которых важна не так скорость работы программы, как малое время разработки, а также понятность и простота его синтаксиса. [12]
Язык функционирует принципу «наименьшей неожиданности»: написанная программа должна себя вести так, как хочет того программист. Он также выполнил наследование идеологии языка Perl в предоставлении программисту возможностей для достижения одного и такого же результата разными способами.
В Японии Ruby был популярным с момента его появления первой версии в 1995 г.
Знакомство же международного общества программистов началось после перевода документации его на английский язык, создания первых списков для рассылки в 1998 году. [11]
После 2000 года началось распространение языка Ruby по всему миру, а этому способствовало появление разных англоязычных книг:
– «Programming Ruby»;
– «Why's (Poignant) Guide to Ruby».
Стоит отметить, что до 2004 года Ruby широко известен не был в Европе, однако благодаря возможностям и большому числу поддерживаемых платформ язык Ruby медленно, но уверенно умножал ряды своих поклонников.
Настоящий всплеск интереса к языку Ruby спровоцировало появление модуля Ruby-On-Rails (или RoR) — фреймворка для разработки веб-приложений. RoR стал катализатором для Ruby, благодаря которому данный язык получил признание сейчас во всем мире.
Настоящий скачок и интерес к применению языка для серьёзных проектов начался после выхода версии Ruby 1.8.0 в 2003 г. и новой версии Ruby on Rails в 2007 году, что и вывело программирование языком Ruby на новый качественный уровень. [14]
Ruby on Rails также включает в себя уже заготовленный функционал для разрешения практически всех обыденных заданий, с которыми сталкиваются се современные веб-специалисты. [3]
А это значит, что скорость разработки их заметно возрастает.
Если до версии языка 1.8 он развивался, сохраняя свою совместимость с предыдущими созданными версиями, то позже создатели Ruby, во главе с Мацумото, решили, что для движения вперёд следует сделать отказ от полной совместимости. [3]
Поэтому вся разработка Ruby могла быть разделена на 2 ветви:
– создание новых версий 1.9;
– поддержка версий 1.8,
что являются предтечей следующих версий языка, Ruby 2. На рисунке 16 показано изменение быстродействия версий Ruby:
Рисунок 16 – Увеличение быстродействия
Согласно рейтинга компании TIOBE Ruby в 2018 году занял 5 место среди самых популярных языков программирования, а это более 1,5% всего рынка (рисунок 17) [1]
Рисунок 17 – Рейтинг языков программирования
Рисунок 17 показывает количество предложений по работе, он совпадает также с выводами фирмы TIOBE [18]– спрос на Ruby есть, и достаточно высокий, но он все-таки ниже, нежели спрос на Python, или значительно ниже, нежели на язык PHP, что и ясно – несравнимы активные сроки использования таких языков (рисунок 18): [9]
Рисунок 18 – Темпы развития языков программирования
На рисунке 18 видно, как стремительно растёт интерес к самым различным языкам, а темпы развития Ruby очень впечатляют: за последние 3 года они стремительно возросли в почти 2,5 раза. [2]
3.ПРИМЕР СОЗДАНИИ ПРОГРАММЫ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ С++
Рассмотрим пример, в котором показано создание файла, последовательное записи и считывания данных.
Записать в файл sport.txt, что находиться на диске D фамилии и результаты трех победителей олимпиады по информатике. Вывести содержимое файла на экран для визуального контроля. Внести в конец файла фамилия и имя председателя жюри.
//подключение библиотеки для использования кириллицы
#include <clocale>
//подключение библиотеки обработки файлов
#include <fstream>
//подключение библиотек для организации ввода-вывода
#include <conio.h>
#include <iostream>
//определение пространства имен
using namespace std;
//главный модуль программы
int main ()
{
//подключение локали
setlocale (LC_ALL, "Russian_Russia")
// откройте файл для записи
ofstream file1 ( "D: \ sport.txt")
//определение переменных
char name [15], prizv [15], name1 [15];
float bal;
//ввод исходных данных
cout << "Введите фамилию и результат первого спортсмена" << endl;
cin >> name >> bal;
file1 << name << "" << bal << endl;
// Запись данных в файл
cout << "Введите фамилию и результат второго спортсмена" << endl;
cin >> name >> bal;
// Запись данных в файл
file1 << name << "" << bal << endl;
cout << "Введите фамилию и результат третьего спортсмена" << endl;
cin >> name >> bal;
// Запись данных в файл
file1 << name << "" << bal << endl;
file1 << "___________________________________________________";
//закрытие файла
file1.close ();
//считывание файла
cout << "Выведем содержимое файла" << endl;
ifstream file2 ( "D: \ sport.txt")
cout << "Первое место:";
file2 >> name >> bal; // считывание данных из файла
cout << name << "" << bal << endl;
cout << "Второе место:";
file2 >> name >> bal; // считывание данных из файла
cout << name << "" << bal << endl;
cout << "Третье место:";
file2 >> name >> bal; // считывание данных из файла
cout << name << "" << bal << endl;
// вввод фамилия и имя председателя жюри
ofstream file3 ( "D: \ sport.txt", ios :: app)
cout << "Введите фамилию и имя председателя жюри" << endl;
cin >> prizv >> name1;
file3 << prizv << "" << name1 << endl; // Запишите данные в файл
file3.close ();
getch ();
return 0;
}
В результате получим (рисунок 19):
Рисунок 19 – Результат выполнения программы
В языке С++ также можно применять команды для обработки файлов в нотации ЯА С, где файл рассматривается как поток последовательности байтов.
Информация о файле заносится в переменной типа FILE *. Этот тип объявляет указатель потока, используется в дальнейшем во всех операциях с этим файлом.
Тип FILE отмечено в библиотеке <stdio.h>. Поэтому, если в программе предусматривается работа с файлами, этот заголовочный файл следует приложить:
#include <stdio.h>
Теперь можно объявить файловую переменную - указатель потока, который в дальнейшем будет передаваться в функции ввода-вывода в качестве параметра:
FILE * f;
Функция fopen () для открытия файла имеет следующий синтаксис:
FILE * fopen (const char * filename, const char * mode)
Первый параметр filename определяет имя файла, который открывается
Во второй главе курсовой работы рассмотрены основные определения и понятия о файловой системе, файлах, описана структура именования файлов, приведены операторы для обработки файловых структур данных.
ЗАКЛЮЧЕНИЕ
Широкое использование современных информационных технологий практически во всех сферах деятельности человека является одним с основных признаков цивилизованного общества.
Вся мировая история никакой другой отрасли технологий и науки не знает, развивающейся столь стремительными шагами. Трудно представить себе нынешнего специалиста, не владеющего самыми основными навыками в работе ПК.
Прогресс компьютерных технологий определяет процесс появления новых самых разнообразных знаковых систем по записи алгоритмов – языков программирования.
Весь смысл появления такого ЯП – оснащенный набор вычислительных средств дополнительной информации, превращает его в алгоритм. Язык программирования также служит 2-м между собой связанным целям:
– он дает программисту аппараты для задания действий, что должны быть выполнены;
– формирует концепции, что используется программистом, размышляя о том, что именно делать.
В процессе проводимого анализа работы выявлены положительные стороны языков высокого уровня:
- удобность применения иерархии классов;
- гибкость языков;
– интегрированность шаблонных классов и прочее.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Айвор Хортон. Visual C++ 2010. Полный курс. Издательский дом «Вильямс». – 2014. – 300 с.
- Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. – 2014. – 436 с.
- Брайан Керниган Алгоритмизация и программирование. Издательство «Невский диалект». – 2014. – 320 с.
- Бьерн Страуструп. Программирование. Принципы и практика использования. Издательский дом «Вильямс». – 2015. – 258 с.
- Джесс Либерти. Освой самостоятельно С++ за 21 день. Издательский дом «Вильямс». – 2014. – 230 с.
- Динман М.И. Алгоритмизация и программирование. Освой на примерах. – СПб.: БХВ-Петербург, 2014.– 260 с.
- Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на С. Издательство «Эксмо». – 2017. – 400 с.
- Кнут, Дональд, Эрвин. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. Пер. с англ. – : Уч. пос. М.: Издательский дом. «Вильямс», 2014.– 720с.
- Кубенский А.А. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++. – СПб.: БХВ-Петербург, 2017. – 464с.
- Лаптев В.В., Морозов А.В., Бокова А.В. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер. 2017. – 288 с.
- Майерс С. Эффективное использование алгоритмизации. 50 рекомендаций по улучшению ваших программ и проектов. Пер. с англ. – М.: ДМК Пресс; – СПб.: Питер. 2017.–240с.
- Прата С. Язык программирования С++. Издание 6. Издательский дом «Вильямс» – 2016. – 304 с.
- Р. Лафоре. Объектно-ориентированное программирование в С++. Издательство «Питер». Издание 4. – 2014. – 628 с.
- С++ Стандартная библиотека. Для профессионалов./Н. Джосьютис. – СП Питер, 2014. – 350 с.
- Седжвик Роберт. Фундаментальные алгоритмы. Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», – 2014. – 500 с.
- Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие. – Минск. «Вышейшая школа». – 2014. – 478с.
17. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011
18. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А.
19. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014.
20. Белов П.М. Основы алгоритмизации в информационных системах: Учебн. Пособие.- Спб.: СЗТУ, 2003.
- Факторы, влияющие на эффективность управленческих решений (Сущность и этапы процесса принятия управленческих решений)
- Оценка стоимости проекта (Содержание подходов к оценке стоимости проекта)
- Автоматизация учета инвестиций и ценных бумаг ( Технико-экономическая характеристика учета инвестиций и ценных бумаг и ОАО «Верес»)
- Оценка стоимости проекта (Общетеоретические основы оценки стоимости проекта)
- Роль международного валютного фонда в регулировании международного финансового рынка (МВФ: место и роль в содействии международному развитию)
- Американская модель менеджмента (Специфика управления в американских фирмах)
- Хозяйственная деятельность организации малого и среднего бизнеса (Теоретические основы деятельности организации малого и среднего бизнеса по торговому обслуживанию населения)
- Финансовые ресурсы фондов и ассоциаций (Теоретические аспекты формирования финансовых ресурсов фондов и ассоциаций)
- Ручной этап развития вычислительной техники
- Эффективность менеджмента организации (Принципы оценки эффективности менеджмента)
- Эффективность государственного и муниципального управления (Содержание и сущность эффективности управления)
- Использование наглядного метода в начальной школе (Средства наглядности, используемые при организации процесса обучения)