Автор работы: Пользователь скрыл имя, 30 Октября 2014 в 12:13, реферат
Языки программирования - это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику.
Введение…………………………………………………………………………..2
Глава 1. Языки программирования высокого уровня………………………..3
1.1. Понятия о языках программирования высокого уровня.
1.2. Метаязыки описания языков программирования.
1.3. Грамматика языков программирования.
Глава 2. Обзор современных языков программирования высокого уровня…13
2.1. Паскаль как язык структурно–ориентирования программирования.
2.2. Бейсик как язык проблемно–ориентированного программирования.
2.3. Общая характеристика языка программирования СИ.
2.4. Основы логического программирования на языке Пролог.
2.5. Введение в функциональное программирование на языке Лисп.
2.6. Введение в объектно–ориентированное программирование.
Глава 3. Индивидуальное задание………………………………………….… 35
Выводы и предложения…………………………………………………………38
Список используемой литературы……………………………………………40
телефон(иванов,т561532).
телефон(петров,т642645).
телефон(сидоров,т139833).
Это означает: телефон Иванова - 56-15-32 и т.п. Заметим, что перед цифрами номера идет буква ''т". Она делает номер телефона литерной константой, так как числа 561532,642645, 139833 слишком велики, чтобы быть числовыми константами.
Пример 2, Факты, описывающие студентов:
нравится(сергей,рэп).
нравится(юрий,джаз).
носит(сергей,блейзер).
носит(юрий,пиджак).
Это означает: «Сергею нравится рэп», «Юрию нравится джаз» и т.п.
Правила - это хорновские фразы с заголовком и одной или несколькими подцелями-предикатами. Правила имеют форму
<голова правила> : - <список подцелей>
где знак : - читается «если», а список подцелей состоит из отдельных подцелей, разделенных знаком «запятая» (читаемым как «и»). Правила позволяют определить новые отношения между объектами на основе уже объявленных с помощью фактов. В качестве аргументов в предикатах правила могут использоваться не только константы, но и переменные. На переменные в правилах действуют кванторы общности, поэтому правила очень концентрированно и лаконично выражают конструкции логического вывода. Так, к фактам примера 2 можно добавить следующее утверждение:
крутойпарень(Х):- нравится(Х,рэп),носит(Х,
Это означает «любой Х - крутой парень, если Х нравится рэп и Х носит блейзер». Еще примеры правил:
ест(Х,Y): - пища(Y), любит(Х,Y). («Каждый Х ест любой Y, если Y - пища, и Х любит Y»)
владелец(А,В) : - купил(А,В). («Любой А есть владелец каждого В, если А купил В»)
В Прологе все предложения программы - факты, правила, вопрос - заканчиваются точкой.
Отметим, что в Прологе вместо оператора присваивания имеется более общий и мощный механизм задания значений переменных. Переменные в Прологе получают свои значения в результате сопоставления с константами в фактах и правилах. До тех пор. пока переменная не получила какого-либо значения, она называется «свободной». Когда переменная примет значение, она становится «связанной». Однако, она остается связанной только в течение времени, необходимого для получения одного ответа на запрос, после этого Пролог «развязывает» ее, возвращается и ищет альтернативные решения. Это очень важный момент: нельзя хранить информацию, задавая значения переменных. Переменные служат частью процесса сопоставления, а не «хранилищем» информации. Область действия переменной -ровно одно предложение (правило или запрос программы).
Вопрос - отправная точка логического вывода, происходящего при выполнении программы. На любой вопрос компьютер будет пытаться дать ответ «Да» или «Нет» в зависимости от того. согласуется или нет утверждение, стоящее в вопросе, с фактами и правилами базы знаний. Вопрос, не содержащий переменных, является общим: «имеет ли место факт... ?». Так, например, к базе знаний примера 1 можно поставить вопрос
?-телефон(иванов,т123456).
и ответ будет «Нет», так как константа т123456 не согласуется ни с одним фактом.
Если к базе знаний (пример 3)
нравится(сергей ,рэп).
нравится(юрий,джаз).
носит(сергей,блейзер).
носит(юрий,пиджак).
крутойпарень(Х) : - нравится(Х,рэп),носит(Х,
задать вопрос
?-крутойпарень(юрий).
то будет получен ответ «Нет». В самом деле, в результате резолюции утверждение в этом вопросе согласно правилу заменится конъюнкцией утверждений
нравнтся(юрий,рэп), носит(юрий,блейзер).
(переменная Х в правиле получила значение «юрий»). Эти утверждения не согласуются с остальными фактами базы знаний. Для вопроса
? - крутойпарень(сергей).
будет получен ответ «Да», так как в этом случае противоречий при согласовании вопроса и базы знаний не возникает.
Вопрос, в котором имеются переменные, является частным: «для каких значений переменных факт ... имеет место ?». В процессе сопоставлений при выполнении программы переменные получат значения тех констант (конкретизируются), для которых сопоставление запроса, в целом, успешно, и будут выведены на экран. Так, в ответ на вопрос ? - телефон(иванов,Х).
к базе знаний примера 1 на экране появится сообщение Х=т561532 и будет дан ответ «Да». Если к базе знаний примера 3 задать вопрос в форме ?- крутойпарень(А), то свободная переменная А в вопросе сопоставляется со свободной переменной Х в правиле и совмещается с ней, т.е. становится одним и тем же. В результате резолюции согласно правилу произойдет замена крутой парень(А) на нравится(А,рэп), носит(А,блейзер), а затем предикат «нравнтся(А.рэп)» успешно согласуется с фактом «нравится(сергей,рэп)>>, и при этом переменная А конкретизируется значением «Сергей»; от вопроса теперь остается «носит(сергей,блейзер)», а в базе знаний имеется соответствующий факт. Ответ: «Да» и на экране появится значение присутствовавшей в вопросе переменной А:
А=сергей.
Отметим, что машина «не понимает» используемых в программе имен: «нравится», «носит», «сергей» и т.д. Мы могли бы вместо них использовать любые другие обозначения. Для интерпретатора Пролога существенны только совпадения и различия имен, а также связи между предикатами, устанавливаемые с помощью конъюнкций и импликаций. Осмысленные имена мы будем использовать только для того, чтобы облегчить чтение и понимание программ самим себе. Однако, в Прологе существуют предопределенные имена (встроенные предикаты), которые позволяют выполнить арифметические операции, сравнения, графические построения, ввод-вывод и другие полезные операции как побочный продукт выполнения программы. Встроенные предикаты Arity-Prolog описаны в справке по системе программирования, вызываемой нажатием клавиши F1.
Аналогичный набор встроенных предикатов имеется в других версиях языка Пролог.
Программы на языке Лисп строятся из простейших неделимых элементов, называемых атомами. Символы и числа представляют собой атомы, из них состоят все остальные структуры.
Символ - это имя, состоящее из букв, цифр и специальных знаков, которое обозначает какой-нибудь предмет или действие из реального мира, а также число, функцию (программу) и другие объекты. Наряду с символами используются и числа (значения), которые могут быть целыми (например, 543), десятичными (например, 3.789) и в представлении с мантиссой и порядком (например, 1.0243Е-6).
Главной структурой в Лиспе является список.
Списком называется упорядоченная последовательность, элементами которой являются либо атомы, либо списки (подсписки). Списки заключаются в круглые списки, а их элементы разделяются пробелами. Например,
(ab(cd)e)
(В группе 18 студентов)
(((((первый) 2) третий) 4) 5).
Список, в котором нет ни одного элемента, называется пустым списком и обозначается "( )" или специальным символом NIL. Список - это структура данных, представляющая некоторую иерархическую связь (дерево) с помощью строго соответствующих друг другу открывающих и закрывающих скобок. Имеется и альтернативный способ записи списков - с использованием, так называемой, точечной нотации. Точка при этом отделяет начальный элемент списка -его голову - от остальной части списка - хвоста: (голова, хвост) или (а1 а2 ... aN) = (а1. (а2.... (aN.Nil)...)).
Здесь Nil - это предопределенная константа, означающая пустой список (и одновременно логическое значение «Ложь»).
Атомы и списки называются S-выражениями. Все вышесказанное можно обобщить в следующих формах Бэкуса - Наура
<S-выражение> :: = <атом> | <список>
<список> :: = (<внутренняя часть>)
<внутренняя часть> :: = NIL | <S-выражение> [{внутренняя часть}}
<атом> :: = цепочка алфавитно-цифровых символов без пробелов или специальных символов (,);.
Списки в Лиспе - основное средство представления знаний. Например, с помощью вложенных списков может быть представлена характеристика человека: (сотрудник), (имя Петр), (отчество Петрович ), (фамилия Иванов),
Объектно-ориентированная методология проектирования программ основана на концепциях упрятывания информации и абстрактных типов данных. Такой подход рассматривает все такие ресурсы как данные, модули и системы в качестве объектов. Каждый объект содержит некоторую структуру данных (или тип данных), обрамленную набором процедур (методов), предназначенных для манипулирования этими данными. Используя эту методологию, программист может создать свой собственный абстрактный тип и отобразить проблемную область в эти созданные им абстракции вместо традиционного отображения проблемной области в предопределенные управляющие структуры и структуры данных языка программирования. Подобный подход является более естественным, чем методологии, ориентированные на обработку (на процесс), из-за возможности использовать в процессе программирования разнообразные виды абстракции типов данных. На этом пути программист может сконцентрироваться на проекте системы, не беспокоясь о деталях информационных объектов, используемых в системе.
Основные шаги разработки программы, предусмотренные данной методологией:
• определить проблему;
•развить неформальную стратегию, представляющую общую последовательность шагов, удовлетворяющую требованиям к будущей программе;
• формализовать стратегию;
• идентифицировать объекты и их атрибуты;
• идентифицировать операции;
• установить интерфейсы;
• реализовать операции.
Большинство современных языков и систем программирования развивается в направлении все большего использования объектной методологии в создании программ. Характерными примерами являются универсальные языки Паскаль, СИ и даже Бейсик, в современных версиях которых появились средства объектно-ориентированного программирования. Так, начиная с версии 5.5, Турбо-Паскаль охватывает метод проектирования программ на основе объектно-ориентированного программирования.
Информация о работе Русское просвещение: основные черты и особенности