Файл: Обзор и анализ особенностей применения языков программирования.pdf
Добавлен: 17.05.2023
Просмотров: 33
Скачиваний: 2
1. Обзор и анализ особенностей применения языков программирования
Языки программирования высокого уровня используют в аппаратно-независимых системах программирования.
Языки программирования высокого уровня подразделяют на [3]:
процедурно-ориентированные;
проблемно-ориентированные;
объектно-ориентированные.
Каждый из описанных ниже языков программирования применяется для решения определенного круга задач.
К первому классу языков, который используется для записи процедур или алгоритмов обработки информации относят:
а) язык Фортран (Fortran). Является одним из первых языков программирования высокого уровня. К его основным достоинствам относится наличие огромного числа математических библиотек, поддержка работы с целыми, вещественными и комплексными числами высокой точности [3,4], встроенных средств обработки массивов.
К недостаткам можно отнести отсутствие средств отладки и анализа поведения программы, сложность понимания исходного кода. По сути, на данный момент Фортран является узкоспециализированным языком, применяемым для научных и инженерных вычислений.
б) язык Бейсик (Basic). Был разработан в 1964 г. в качестве языка для обучения программированию [12].
Основными достоинствами этого языка являются, простой синтаксис, который позволяет в кратчайшие сроки освоить этот язык программирования, простота реализации графического интерфейса, возможность использования WinAPI функций, что значительно расширяет возможности языка.
Одним из основных недостатков языка является то, что он поддерживает только операционные системы семейства Windows, DOS и Mac OS X, что значительно сужает сферы его применения. Также к недостаткам можно отнести низкую скорость работы и отсутствие механизма наследования реализации объектов [6].
в) язык Си (С) был создан в 1969—1973 годах в качестве языка системного программирования и первоначально предназначался для написания ОС UNIX [4,12]. В 1980-е гг. язык С был дополнен инструментами объектно-ориентированного программирования и на основе него был создан язык C++.
Одним из главных достоинств является кроссплатформенность, а также минимальные аппаратные требования для запуска скомпилированных программ, широкий набор средств для реализации как прикладных, так и системных задач.
К недостаткам языка можно отнести отсутствие четкой стандартизации. В ходе исторического развития языка его элементы зачастую заимствовались из других языков, вне зависимости от наличия других элементов. Это привело к наличию дублирующих и иногда противоречащих друг другу элементов. Данные аспекты привели к тому, что язык стал чрезвычайно сложным для восприятия.
г) язык Паскаль (Pascal). Был создан математиком Н. Виртом специально для обучения программированию. Однако со временем стал широко применяться для разработки программных средств в профессиональном программировании.
Самая первая версия была создана в 1968 году профессором кафедры вычислительной техники Швейцарского федерального института технологии Никласом Виртом [3]. Основной целью, при создании нового языка, является его простота, с сохранением всех достоинств уже имеющихся языков высокого уровня программирования.
Популярность созданного языка стала столь высокой, что уже к 1980 году насчитывалось более восьми десятков его трансляторов. В начале 80-х годов язык программирования Паскаль еще более усилил свои позиции после создания трансляторов Turbo-Pascal для персональных компьютеров. С этого момента язык смело вышел за рамки узкого использования программистами-профессионалами. Он начал использоваться как рабочий инструмент пользователей и как средство обучения языков программирования.
Одним из главных достоинств языка Паскаль является четкая структуризация, удобная среда разработки и отладки, позволяющая пользователю обнаружить логические и синтаксические ошибки в программе. Также к достоинствам можно отнести высокую скорость компиляции программ, возможность использования вставок языка Ассемблер.
В отличие от языка С (С++) в при использовании Паскаль сведены к минимуму возможные синтаксические неоднозначности [1,2], синтаксис языка является интуитивно понятным и доступным, поскольку, как уже было отмечено выше, язык изначально разрабатывался для обучения студентов программированию.
К недостаткам первоначально разработанного компилятора можно бы отнести ряд ограничений: невозможность передачи функциям массивов переменной длины, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках и раздельной компиляции [7,9].
Несмотря на долгую историю, Паскаль является динамично развивающимся языком программирования высокого уровня. Современные версии компилятора ликвидировали большинство перечисленных выше недостатков.
Рассмотрим особенности языков другого класса. Основным достоинством проблемно-ориентированных языков программирования является минимизация трудозатрат программиста при решении задач принадлежащих некоторому четко выделяемому классу [3]. К проблемно-ориентированным относят следующие языки программирования:
а) язык Лисп. Считается вторым после Фортрана старейшим высокоуровневым языком программирования [3,16]. Данный язык наиболее часто применяется при разработке экспертных систем и систем аналитических вычислений. Существуют современные версии этого языка, которые активно применяются при разработке новейших web-технологий. Также модификации данного языка используются в качестве встроенных языков программирования в САПР. Примером может послужить AutoLISP – язык для разработки надстроек в продуктах компании AutoDesk.
б) язык Пролог. Используется для реализации систем искусственного интеллекта, а также и интеллектуальных систем баз данных [3].
Написание программ на языке Пролог существенно отличается от использования других языков программирования. Программа на Прологе не является реализацией некоторого алгоритма, а представляет собой запись на языке формальной логики [16]. Таким образом, данный язык относится к описательным языкам программирования.
Таким образом, сферой применения данного языка является решение логических задач. Для создания вычислительных, графически задач, реализации пользовательского интерфейса данный язык не предназначен.
Большинство объектно-ориентированных языков являются версиями процедурно-ориентированных и проблемно-ориентированных.
В настоящий момент наиболее активно используются и развиваются следующие среды программирования [3,4]:
а) Delphi (Lazarus некоммерческая – версия для ОС семейства Linux) – основана на Object Pascal;
б) C++, С# (~ C);
в) Visual Basic (~ Basic);
г) Visual Fortran (~ Fortran);
д) Prolog++ (~ Prolog).
Предметом исследования данной курсовой работы является изучение такого актуального вопроса, как использование процедур, функции и подпрограмм в языках программирования высокого уровня, а также основных подходов к созданию пользовательских меню.
Одним из важных факторов для выполнения поставленной задачи может отказаться и верный выбор языка программирования. Для реализации поставленной задачи можно использовать различные языки высокого уровня, наиболее распространенными из которых являются С++ и Паскаль.
Язык Паскаль является статически типизированным, компилируемым, поддерживает низкоуровневую работу с памятью. Именно поэтому его можно рекомендовать в качестве языка программирования для изучения работы подпрограмм, процедур и функций. Простота реализации графического интерфейса позволяет наглядно продемонстрировать процесс создания пользовательского меню.
В данной главе курсовой работы нами была произведена классификация языков программирования, рассмотрены сферы их применения, вкратце изложены их основные особенности, достоинства и недостатки.
Проанализировав все выше изложенное, нами был сделан аргументированный выбор языка программирования высокого уровня Паскаль для дальнейшего изучения предмета исследования.
2. Теоретические аспекты использования процедур и функций в языке Паскаль
В алгоритмическом языке Паскаль различают два вида подпрограмм – процедуры и функции.
Составляя программу, в особенности достаточно большую, даже не задумываясь, автор разбивает ее на отдельные блоки, выполняющие ту или иную функцию. Соединяя их (компонуя), в конечном итоге, добиваются решения поставленной задачи. Такие блоки программы не обязательно носят завершенный вид. Они называются процедурами [1]. В отличие от процедур, функции имеют завершенный вид [7].
Процедуры и функции могут быть как стандартными (находятся в библиотеке Паскаля), так и созданные пользователем. С помощью процедур и функций можно сделать программу компактнее с учетом того, что они могут несколько раз повторяться. Процедура, как и программа, имеет свое имя.
Форма записи процедуры: PROCEDURE имя ;
После объявления процедуры идет, как и в программе, объявление переменных процедуры и между Begin End ; записывается ее программа (порядок выполнения операторов). Программы, с применением процедур, имеет следующую структуру:
Program имя программы ;
Label .... ; Определение меток, констант,
Const ..... ; массивов и других переменных
: программы
Var ..... ;
Procedure имя ; Определение процедур и функций
Var ...... ; пользователя
Begin
:
End ;
Procedure имя ;
Var ...... ;
Begin
:
End ;
:
Procedure имя ;
Var ...... ;
Begin
:
:
End ;
BEGIN Основная программа, в которой
: процедуры и функции могут вызы-
: ваться сколь угодно раз
:
END.
Отметим только одну особенность [13] - в процедуре после End ставится точка с запятой. Принято считать, что если большая часть программы размещается в процедурах и функциях, тем рациональнее она составлена.
Подпрограмма-функция предназначена для вычисления какого-либо параметра [10]. Результат ее работы возвращается в виде значения этой функции и может использоваться в выражениях. У этой подпрограммы два основных отличия от процедуры.
Первое отличие – в заголовке [7]: через двоеточие указывается тип возвращаемого параметра. Второе отличие заключается в том, что в теле функции хотя бы один раз имени функции должно быть присвоено значение. Для вызова функции следует в выражении, где используется ее значение, указать имя функции.
В качестве примера рассмотрим функцию, которая возвращает максимальное значение из двух чисел.
uses crt;var a,b:byte;function max(a,b:byte):byte; {a,b – формальные параметры функции}begin {начало функции} if a>b then max:=a else max:=b;
end; {конец функции}
{ основная программа}
begin
clrscr;
readln(a,b);
write(max(a,b)); {фактические параметры a,b передаются функции max}
readkey
end.
С применением процедур и функций возникает вопрос использования переменных. Понятие места работы этих переменных можно пояснить на простом примере [10]. Имеется некоторый внутригородской транспорт и междугородний. Естественно, что внутригородской не работает на маршрутах между городами. Т.е., его применение ограничено (локализовано). Это является прямой аналогией работы переменной внутри процедуры (работа транспорта внутри города) такие переменные называются локальными переменными. Но, междугородний транспорт может перемещаться как между городами, так и внутри любого города переменная работает не только между процедурами, но и внутри каждой из них. Подобные переменные называются глобальными переменными [10].
Если программа содержит много процедур и переменных, то может возникнуть ситуация, когда глобальные и локальные идентификаторы имеют одинаковые имена. Для компилятора это не имеет никакого значения. Дело в том, что при такой ситуации [18,20], с входом в процедуру, запоминается значение глобальной переменной, а при выходе из нее возвращается первоначальное значение. Из этого следует, что Паскаль дает возможность нескольким программистам писать одну программу, не заботясь об опасности перепутать идентификаторы [7,9].
Любая большая программа, в основном, собирается из процедур и функций. В свою очередь процедуры и функции объединяются в большие блоки, которые называются программными модулями. Каждый программный модуль транслируется отдельно [10], объединяясь в выполняемую программу. Для подключения модуля к программе, необходимо упомянуть его имя в предложении:
USES имя модуля (модулей - через запятые) ;
Объявление модулей должно записываться в программе второй строкой, после имени программы. При объявленном модуле процедуры и функции, встроенные в этот модуль, вписываются в программу только своим именем, без раскрытия их программного содержания. Это существенно сокращает текстовую часть основной программы [8]. Ниже, в краткой форме, изложено содержание и назначение некоторых программных модулей [1].