Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 3-4(ЯП)+.doc
Скачиваний:
66
Добавлен:
10.06.2015
Размер:
680.96 Кб
Скачать

Основы алгоритмических языков программирования Понятие о языках программирования. Современные языки программирования высокого уровня

Слово «программа»имеет греческое происхождение и означает – объявление, распоряжение. В современном понимании, относящемся к программированию как разделу информатики, программа определяет план действий подлежащих выполнению исполнителем, обычно вычислительной машиной (компьютером). Программа выглядит как конечная совокупность инструкций, каждая из которых приводит к выполнению некоторой элементарной операции над данными, хранящимися в памяти вычислительной машины (ВМ). Автоматизм исполнения достигается тем, что любая текущая команда, однозначно указывает на команду, которая должна быть выполнена следующей. Особенностью процесса исполнения команд является наличие командветвления которые на основании и в зависимости от выполнения некоторых условий передают управление на ту или другую следующую инструкцию программы. Другой особенностью программ является возможность многократного выполнения некоторого числа инструкций. Эти особенности приводят к тому что длина выполнения программы, т.е. количество выполненных инструкций, и время ее выполнения должны однозначно определятся некоторым набором входных данных.

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

Исходя из вышесказанного, языки для записи программ являются наряду cтеоретическим программированием одной из важнейших разделов математики и информатики.

Программы исполняемые ВМ должны формулироваться с использованием специальных знаковых систем, которые получили называние языков программирования (programming language, computer language).

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

Наиболее распространенным видом языков программирования является алгоритмические языки(algorithmical language). Среди важнейших понятий алгоритмических ЯП выделяются базовые конструкции:

 описанияобъектов программы (definition, declaration) определяют имена илиидентификаторыпрограммных информационных (или в некоторых языках и операционных) сущностей, таких как типы данных, классы, интерфейсы, шаблоны, скалярные переменные, объекты классов, подпрограммы и др. Например:

var

x: integer; // описание переменной на языке Pascal

 выражения (expression) являются источником значений для программных сущностей (объектов) и представляются в программе в виде комбинации имен объектов и операторов. Например:

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

x + y * sin(x) / x – z

 операторы(statements) представляют в программе элементарные вычислительные действия (математические операции, логические операции, операции сравнения) или алгоритмические действия (операция приваривания, передача управления от одного оператора к другому, повторяющиеся исполнение одного или нескольких операторов). Например:

x := y + 10; // оператор присваивания в языке Pascal

Базовыми операторами, на основе которых могут быть сформированы законченные предложения, подлежащие исполнению в алгоритмических языках программирования являются операторы присваиваниязначения (assignment statement),передачи управления(transfer‑of-control statement),вызов подпрограммы (subroutinecall statement) ицикл (cycle statement). Операторы других видов должны использоваться в контексте базовых операторов и не могут формировать исполняемые предложения программы.

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

 неструктурного программирования (chaos paradigm);

 структурного программирования (structured programming);

 процедурного программирования (procedure-oriented programming);

 объектно-ориентированного программирования.

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

Рис. 1. Типы алгоритмических структур

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

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

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

Основным недостатком процедурной парадигмы было то, что данные и подпрограммы их обработки были логически отделены друг с другом, что создавало определенные проблемы при построении программ высокой степени сложности. Следующим шагом в развитии ЯП стало развитие представлений об абстрактных типах данных(abstract data type, АТД). АТД в отличие от скалярных типов (целых чисел, строк, чисел с плавающей точкой) являются не только и не сколько простым контейнером для данных на физическом уровне, которому сопоставлены одна или несколько ячеек памяти, но на ряду с данными содержит определенные методы в виде подпрограмм для обработки этих данных. Такие АТД получили названиеклассов. Класс сродни обычным скалярным типам и на его основе также создаются особые переменные называемыеобъектами.

В настоящее время существует множество различных ЯП, которые в большинстве своем относятся к категории универсальных, многофункциональных, объектно-ориентированных ЯП. Одним из наиболее синтаксически и семантически развитым языком программирования на сегодняшний день является язык программирования С++ (читается как «си плюс плюс» ). Этот ЯП был разработан как объектно-ориентированное расширение (надмножество) языка С ученым Бьерном Страуструпом в начале 80-х годов. Отличительной особенностью С++ является его исключительная гибкость и наличие всех возможных объектно-ориентированных средств, таких как наследование классов и интерфейсов, множественное наследование классов, виртуальные и абстрактные классы, перегрузка методов класса и операторов, параметризованные типы данных. В тоже время ЯП С++ унаследовал такие важные черты, как гибкость, эффективность, мобильность свойственные языку С. Язык С++ сочетает простоту синтаксиса и наличие низкоуровневых программных средств для работы с адресами памяти (указателями) и в тоже время мощные высокоуровневые стандартные библиотеки подпрограмм, а также библиотеки классов. С++ является на сегодняшний день стандартом де факто на ЯП, на который ориентируются все остальные языки программирования. Этот язык программирования используется в качестве основного инструмента при реализации современных ОС (Windows, Linux,Unix), базового прикладного программного обеспечения. Наряду с ассемблером язык С++ применяется для создания драйверов устройств в операционных системах. Этот язык положен в основу наиболее популярных и мощных интегрированных средств (т.е. сочетающих в себе средства управления проектами, редактор кода, дизайнер пользовательского интерфейса и транслятор языка программирования) разработки, таких как MicrosoftVisual C++, BorlandC+Builder, IBM Visual Age for C++ и др. В конце 2001 года корпорацияMicrosoft, являющаяся одним из лидеров индустрии программных сред разработки и языков программирования, выпустила среду программирования VisualStudio.NETв которой был впервые представлен новый компонентно-ориентированный ЯП получивший название С# (читается как «си шарп»), который явился ЯП следующего поколения на основе С++.

Другим объектно-ориентированным языком программирования, который не уступает языку С++ по своим функциональным возможностям является язык Object Pascal(в последней своей реализации называется Delphi Language). ЯзыкObjectPascalявляется объектно-ориентированным надмножеством процедурного языка программирования разработанного в 1971 году ученым Никлаусом Виртом. Этот ЯП составляет языковую основу интегрированной среды разработки Delphi компании BorlandEnterprise. Распространенность этого языка обусловлена несколькими факторами: во-первых, язык Pascal использовался долгое время как язык для обучения программированию в университетах США, во-вторых, модификации этого языка (Ада) используются министерством обороны США, в-третьих, огромная популярность среды Delphi и языка Pascal в Европе и России. Среда разработки Delphi и язык программированияObjectPascalможет быть использован для реализации прикладных программ любой степени сложности.

Рассматривая современные языки программирования и среды разработки на их основе нельзя не упомянуть язык программирования BASICи его современную реализацию Visual BASIC. Этот ЯП и соответствующая среда разработки разработанная и долгие годы развиваемая корпорацией Microsoftпозиционируется в качестве инструмента для создания как автономных приложений начального и среднего уровня сложности, так и для автоматизации прикладных задач пакетаMicrosoftOffice(VisualBASICforApplication). Этот язык программирования отличает простота и интуитивная ясность синтаксиса, что делает его привлекательным для начинающих разработчиков. Последняя версия этого языка, поддерживающая в полном объеме современную объектно- и компонентно-ориентированную модель, под названием Visual BASIC.NET включена в качестве одного из базовых языков среды разработки VisualStudio.NET.

Последних два языка программирования, то есть PascalиBASICполучили употребление в среде разработчиков, использующих в качестве программной платформы разновидности операционной системыMicrosoftWindows. Напротив, на платформе UNIX-подобных ОС разработчики в основном использовали до последнего времени только С/С++. Однако с ростом популярности такого нового языка программирования какJavaмногие разработчики прикладных программ перешли на использование этого инструмента. Язык Java синтаксически подобен языку С++, однако вобрал в себя многие полезные идеи языкаObjectPascal. Программы, написанные на Java являются кросс-платформенными, то есть могут без перекомпиляции исполняться на различных программных и аппаратных платформах, за счет использовании идеи компиляции промежуточного кода (так называемый байт-код) программы во время ее исполнения (just-in-time compilation).

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