ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 9 (1 час)
Тема: «Языки программирования»
Цель занятия: изучить классификацию языков программирования, основные конструкции программирования
Форма проведения:беседа
Задание:
1. Рассмотреть классификацию современных языков программирования
2. Охарактеризовать свойства языков программирования
3. Изучить основные конструкции программирования
4. Привести примеры программ на изученных ранее языках программирования
5. Ответить на вопросы
6. Составить отчет
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
Алфавитом - называется произвольное конечное множество попарно различимых символов.
Язык - это знаковая (семиотическая) система, обладающая определенными средствами выражения знаний - алфавитом, словарем и грамматикой.
Как мы отмечали ранее, любой язык (тоже) принадлежит множеству знаковых систем. Его знаками, являются слова и словосочетания. Любой язык отражается в своей грамматике и словаре, и алфавите. Определение алфавита:
Словарный состав или лексика языка - это совокупность употребляемых в нем слов, т.е. правильных слов данного языка.
Грамматика - это конечная система правил, определяющих язык.
Грамматика определяет способы построения изменения и сочетания слов.
Многозначность слов естественного языка не позволяет использовать его в целом для формализации предоставления знаний об окружающем мире, отдельных процессов и явлений, которые исследует человек с помощью ЭВМ, моделирует на ЭВМ и так далее.
Для этого были созданы искусственные языки: языки представления знаний (реляционные (основную роль в них играют отношения)), языки исчисления предикатов (предикаты играют роль отношений, позволяют получать логический вывод, то есть формальным путем получать одни знания из других), а также алгоритмические языки (языки программирования) и декларативные языки (языки фреймового типа).
Все эти языки называются еще и формальными. Нас более всего интересуют алгоритмические языки, к которым относятся все известные языки программирования.
Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере.
Для решения задачи на ЭВМ составляется алгоритм, обеспечивающий выполнение всех необходимых действий для получения искомых результатов. Этот алгоритм описывается средствами формального языка, понятного ЭВМ - языка программирования.
К таким средствам относятся элементы языка - символы, цифры, специальные знаки, а также правила составления операторов для описания действий по вводу - выводу и распределению памяти, управлению ветвлением и организацией циклов, обращениям ко внешним устройствам, контролю и отладке отдельных фрагментов и программы в целом, формированию выходных документов и так далее. Каждая ЭВМ имеет свой собственный язык кодов команд, называемый машинным, который обеспечивает непосредственное выполнение любой последовательности машинных операций. Практически компьютер выполняет программы, записанные только на машинном языке. Однако с помощью дополнительных средств (системных программ) реализуются многоуровневые переводы (трансляции) текстов программ с различных языков программирования на язык ЭВМ. Эти языки программирования в отличие от машинных, называются языками высокого уровня, они мало зависят от особенностей конфигурации конкретной ЭВМ, то есть эти языки являются машинно-независимыми.
Если в качестве признака классификации (рисунок 9.1) взять синтаксис образования конструкций языков программирования, то их можно условно разделить на следующие классы:
- машинные языки (computer language) – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);
- машинно-ориентированные языки (computer-oriented language) – языки программирования, которые отражают структуру конкретного типа компьютера (Ассемблеры);
- алгоритмические языки (algorithmic language) – не зависящие от архитектуры компьютера языки программирования для отражения структуры алгоритма (Паскаль, Фортран, Бейсик и др.);
- процедурно-ориентированные языки (procedure-oriented language) – языки программирования, где имеется возможность описания программы как совокупности процедур (подпрограмм);
- проблемно-ориентированные языки (universal programming language) – языки программирования, предназначенные для решения задач определенного класса (Лисп, РПГ, Симула и др.);
- интегрированные системы программирования.
Если в качестве признака классификации взять принадлежность к одному из оформившихся к настоящему времени стилей программирования, каждому из которых соответствует своя собственная модель вычислений, то языки программирования можно условно разделить на следующие классы:
- процедурные;
- функциональные;
- логические;
- объектно-ориентированные.
Рисунок 9.1 Классификация языков программирования
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Одним из важнейших квалификационных признаков процедурных языков является их уровень, характеризующий степень близости языка программирования и машинного языка. За начало отсчета уровней принимается машинный язык, уровень которого равен нулю. Язык человека рассматривается как язык наивысшего уровня.
Некоторые языки программирования в порядке увеличения их уровня
Двоичный язык – в настоящее время программистами не применяется.
Шестнадцатеричный язык – упрощение за счет представления четырех двоичных цифр одной шестнадцатеричной. Используется в качестве дополнения к языкам высокого уровня для программирования критичных к времени выполнения фрагментов алгоритмов.
Язык Ассемблера – предназначен для представления в удобочитаемой символической форме программ, написанных на машинном языке.
Язык программирования C – разработан в начале 70-х годов. Сочетает достоинства современных высокоуровневых языков (в части структур данных и управляющих структур) и возможность доступа к аппаратным средствам машины на уровне языка Ассемблера.
Fortran (Formula Translator) разработан в 1956 г. Считается «рабочей лошадью» научных работников за счет своей «приспособленности» к ведению сложных вычислений и широко используется до настоящего времени, несмотря на свою ограниченность и «корявость».
Pascal – разработан в 1968 г. профессором Никлаусом Виртом. Язык назван в честь французского учёного Блеза Паскаля, внесшего вклад в развитие средств вычислительной техники.
Modula-2 – создан в 1978 г. Никлаусом Виртом для создания системного программного обеспечения. По существу – развитие Паскаля. Его особенности состоят в высокой модульности программ и наличии средств описания параллельных процессов.
Ada – разработан в 1979 г. по заказу Министерства обороны США для использования во встроенных системах с управляющими ЭВМ, что требует поддержки режима реального времени.
Logo – разработан с целью обучения детей и используется в настоящее время. Отличается простотой, но весьма богат возможностями, среди которых процедуры, графические средства и т.д.
Функциональные языки программирования. Программа на таком языке представляет собой совокупность описаний функций и выражения, которые необходимо вычислить. Функциональное программирование не использует концепцию памяти как хранилища значений переменных. Операторы присваивания отсутствуют, вследствие чего переменные обозначают не области памяти, а объект программы, что полностью соответствует понятию переменной в математике. Наличие стройной математической основы обеспечивает возможность использования алгебраических методов создания структуры, преобразования и исследования программ. Это в какой-то мере приближает их к описанию структуры мышления человека. Примером функционального языка является язык LISP (List Processing – обработка списков). Разработан и реализован в Массачусетском технологическом институте в 1959 г. Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.
Логическое программирование. Логика и программирование долгое время были непересекающимися областями исследований. Только в 1973 впервые было опубликовано описание языка PROLOG (PROgramming in LOGic – программирование в терминах логики). Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами и цели. В логическом программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Логические программы отличаются принципиально низким быстродействием, так как вычисления осуществляются методом проб и ошибок (посредством поиска с возвратами). В настоящее время для ПК существует около двух десятков реализации PROLOG’а, некоторые из них оформлены в виде интегрированных сред.
Объектно-ориентированное программирование. Корни объектно-ориентированного программирования уходят в одну из ветвей логики, в которой первичной является не отношение, а объект. Прототипом объектно-ориентированного программирования явился язык SIMULA-67. Этот стиль программирования характеризуется богатыми графическими возможностями и средой программирования, развитой модульной структурой программ. Именно модульность упрощает разработку сложных программных продуктов. Как пример объектно-ориентированного языка можно назвать Visual Basic и Delphi.
Программа - это представление алгоритма средствами языка программирования: замена блока на один или несколько операторов языка.
Этапы:
- Перенос программы на машинный носитель. Для этого используют клавиатуру дисплея или устройство подготовки данных на магнитных лентах или магнитных дисках. На этом этапе происходит первоначальная трансляция программы и её редактирование - исключение синтаксических ошибок.
- Отладка программы. На этом этапе происходит выполнение программы с использованием контрольных (тестовых) исходных данных. По полученным результатам пользователь делает вывод о правильности работы программы. На этом этапе происходит обнаружение семантических ошибок. Обнаруженные ошибки приводят к изменению текста программы, алгоритма, и, следовательно, к повторению первоначальных этапов.
- Анализ результатов решения. На этом этапе анализируются полученные результаты, на основании этого анализа делаются выводы о правильности выбранного метода решения и составлении алгоритма, вырабатываются рекомендации по модернизации программы; составляются описание и инструкция по эксплуатации программы.
ТЕСТОВЫЕ ВОПРОСЫ
1. Языки программирования условно разделены на классы: машинные, машинно-ориентированные, алгоритмические, процедурно-ориентированные, проблемно-ориентированные. По какому признаку классифицированы языки?
a) синтаксис образования конструкций языков программирования
b) принадлежность к одному из оформившихся к настоящему времени стилей программирования
c) уровень языка программирования, характеризующий степень его близости к машинному языку
2. Языки программирования условно разделены на классы: процедурные, функциональные, логические, объектно-ориентированные. По какому признаку классифицированы языки?
a) синтаксис образования конструкций языков программирования
b) принадлежность к одному из оформившихся к настоящему времени стилей программирования
c) уровень языка программирования, характеризующий степень его близости к машинному языку
3. К языкам высокого уровня не относятся
a) Ada
b) язык Ассемблера
c) двоичный язык
d) C/C++
4. Примером функциональных языков программирования может служить
a) LISP
b) PROLOG
c) DELPHI
d) PASCAL
5. Примером процедурных языков программирования может служить
a) LISP
b) PROLOG
c) DELPHI
d) PASCAL
6. Примером логических языков программирования может служить
a) LISP
b) PROLOG
c) DELPHI
d) PASCAL
7. Программа, на основе которой машина преобразует вводимые в нее команды на машинный язык, называется
a) переводчиком
b) транслятором
c) системным администратором
d) редактором связей
8. Транслятор, который переводит каждую команду программы с одновременным её выполнением и, если обнаруживает ошибку, сообщает о ней и прекращает выполнение программы, называется
a) компилятором
b) редактором связей
c) системным администратором
d) интерпретатором
9. Транслятор, который переводит всю программу целиком и в конце работы выдаёт список ошибок, если они обнаружены, называется
a) компилятором
b) редактором связей
c) системным администратором
d) интерпретатором
10. К языкам высокого уровня относятся
a) Ada
b) язык Ассемблера
c) двоичный язык
d) C/C++
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое алфавит?
2. Что такое язык?
3. Что такое грамматика?
4. Что такое программа, структура программы?
5. Для чего нужны языки программирования?
6. Что такое машинно-ориентированные языки программирования?
7. Что такое процедурно-ориентированные языки программирования?
8. Что происходит в процессе постановки задачи?
9. Что происходит в процессе составления программы?
10. Что происходит в процессе отладки программы?
11. Что происходит в процессе анализа результатов решения?
12. Что происходит в процессе переноса программы на машинный носитель?
Список основной и дополнительной литературы: 2,3,4,5,7,8,9,12,13,14,15,17,18