Файл: Особенности и примеры использования массивов при разработке программ (Языки программирования высокого уровня).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 185

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

Современные языки программирования используют механизмы: наследование; полиморфизм; инкапсуляция. Создание нового класса объектов по средствам добавления новых элементов. Некоторые языки позволяют выполнять множественное наследование, то есть объединять в одном классе возможности нескольких других классов; инкапсуляция.

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

Языки программирования позволяют разработать практически любую программу на базе использования базовых алгоритмов. В языках программирования реализованы следующие циклические операторы: for; while; do while. Циклы используются для многократного выполнения одного и того же кода, пока будет истинным некоторое условие. Использование массивов является неотъемлемой составляющей при разработке программ.

Объект исследования – языки программирования.

Предмет исследования – массивы.

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

В соответствии с целью была определена необходимость постановки и решения следующих задач: изучить основные сведения о языках программирования; определить объектные средства языков программирования; изучить использование массивов в языках программирования; разработать программу демонстрации циклических структур и массивов данных.

В работах (Ш.М. Валитов, М.А. Гаврилов М.В. Згадай, А.В. Дарков, Ж. Довек, В.П. Поляков) представлены основные сведения о современных технологиях в управлении. Изучение информационных систем и технологий было предметом непосредственного исследований таких авторов (Е.Л. Румянцева, Н.С. Косиненко, В.В. Кулямин, В.В. Ерохин, Л.С. Сальников, Б.Я. Советов, В.В. Цехановкий).


1. Языки программирования высокого уровня

1.1. Характеристика языков программирования

Рассмотрим основные сведения и особенности использования популярных языков программирования: С++, C#, Java. Язык программирования C# представляет собой объектно-ориентированный язык программирования, который был разработан в 1998-2001 годах группой инженеров при постоянном руководстве Андерса Хейлсберга в компании Microsoft как язык программирования для выполнения разработки приложений под платформу от корпорации Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и стандарт ISO/IEC 23270[1].

Язык программирования C# можно отнести к семейству языков программирования которые имеют C-подобный синтаксис, из них его внутренний синтаксис является наиболее приближенным к языку программирования C++ и Java[2]. Язык программирования C# включает полиморфизм, поддерживает механизм статической типизации, перегрузку используемых операторов, атрибуты, свойства, делегаты, итераторы, обобщённые типы и методы, анонимные функции, поддерживающие замыкания, LINQ, различные исключения, комментарии в формате XML.

Получив многое от своих предшественников - языков C++, Pascal, Модула, Smalltalk и, в особенности, Java - С#, опираясь на практику их практического использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов.

C# был разработан в качестве языка программирования прикладного уровня для CLR и, который зависит от возможностей самой CLR. Это касается системы использования типов данных языка программирования C#, которая отражает BCL[3]. Отсутствие или присутствие тех или иных особенностей языка программирования диктуется тем, что может ли языковая особенность языка программирования быть транслирована в конструкции CLR[4].

Язык программирования С развитием CLR от версии 1.1 к версии 2.0 достаточно сильно обогатился и сам язык программирования C#; подобного взаимодействия можно было ожидать и в дальнейших версиях языка программирования (однако, эта закономерность была нарушена с выходом языка C# 3.0, который представляет собой расширение языка, которое не опирается на расширения платформы технологии .NET).


Например, выполнение сборка мусора не была реализована в самом языке программирования C#, а выполняется CLR для программ, которые написаны на языке C# точно так же, как это выполняется для программ на языке VB.NET, J# и др[5].

Существует несколько реализаций объектно-ориентированного языка программирования C#:

– проект Mono включает в себя реализацию языка программирования C# с открытым исходным кодом;

– проект DotGNU также включает компилятор языка программирования C# с открытым кодом;

– реализация языка программирования C# в виде компилятора csc.exe была включена в состав платформы .NET Framework (включая .NET Micro Framework, .NET Compact Framework);

– в составе проекта Rotor компании Microsoft;

– проект dotNetAnywhere ориентирован на встраиваемые системы, реализация CLR, выполняется поддержку практически всех спецификаций языка программирования C# 2.0[6].

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

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

1.2. Отличия языков программирования

Рассмотрим основные отличия языков программирования, так, например языки программирования C# и Java используют в качестве синтаксической основы язык программирования C. В частности, от него были унаследованы без каких-либо серьезных изменений: использование синтаксиса описания и последующего использования внутренних переменных и специальных функций; использование обозначений начала и конца блоков разрабатываемого программного кода фигурными скобками; использование различных обозначений, ассоциативности и приоритетности основных встроенных операций, к которым можно отнести побитовые операции, логические операции, присвоение, операции декремента и инкремента, тернарная условная операция «?:»); синтаксис всех основных конструкций языка программирования: циклов, встроенных операторов множественного выбора, условного оператора выбора[9].


Немаловажным является использование механизма работы с динамическими данными и сборки мусора в языке программирования. В рассматриваемых языках программирования реализована одна схожая модель работы с динамическими данными: динамическое создания различных объектов при помощи специальной конструкции new, среда исполнения выполняет отслеживание наличия внутренних ссылок на них, а сборщик мусора используется для периодического очищения используемой памяти от обработанных объектов, различных ссылок на которые не существует[10].

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

В языках программирования Java и в C# есть сильные и слабые ссылки на объекты. Оба языка поддерживают методы-финализаторы. Из-за неопределённости момента удаления объекта финализаторы не могут использоваться для освобождения системных ресурсов, занятых объектом, что вынуждает создавать дополнительные методы для «очистки» объекта и вызывать их явно[11].

Java позволяет выполнить регистрацию слушателей (listener), которые будут получать определенные информационные сообщения, когда ссылка будет подвергнута операции сборки мусора, что обеспечивает улучшение производительности WeakHashMaps.

C# позволяет выполнить отмену использования различных специальных финализаторов для некоторых обрабатываемых объектов специализированным методом GC.SuppressFinalizes(obj) (напр., выполнение конструирования запросов SQL на файловом потоке)[12]. Это может понадобиться для выполнения процессов финализации и считается довольно дорогой операцией в процессе непосредственного выполнения сборки мусора. Язык программирования C# в стандартной библиотеке содержит интерфейс IDisposables и специальную конструкцию using, которая гарантирует выполнение своевременного вызова необходимых метода очистки.

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


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

1.3. Средства языков программирования

Окончательный выбор необходимого языка программирования основывается на анализе объектных средств языка и установления конечной технологической платформы. Объектные средства языков программирования C# и Java можно обозначить по следующим основным характеристикам: инкапсуляция; внутренние классы; методы. Рассмотрим более подробно каждую характеристику.

Анализируя объектно-ориентированную особенность языка программирования инкапсуляцию, можно отметить следующее. В языке программирования Java специальный модификатор protected в описании, помимо выполнения операций доступа из классов-потомков, разрешается доступ из всех классов, которые входят в тот же пакет, что и класс-владелец[13].

В языке C# для объектов, которые должны быть видны в пределах сборки введён специальный модификатор internal (аналог default в языке программирования Java), а protected позволяет сохранить свой изначальный смысл, который был взят из языка программирования C++ - доступ выполняется только из классов-потомков[14].

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

Оба языка обеспечивают определение класса внутри пользовательского класса. В языке программирования Java внутренние классы могут быть использованы для эмуляции замыканий. Внутренние классы языка программирования Java имеют доступ к нестатическим членам родительского класса, то есть «знают о this»[15].

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