Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Логическое программирование




Создание языка искусственного интеллекта PROLOG (PRO gramming in LOG ic – программирование в терминах логики) в 1973 г. французским ученым Аланом Кольмероэ открыло новую об­ласть – логическое или реляционное программирование.

Концепция логического программирования базируется на поня­тии отношение. Логическая программа – это совокупность аксиом и правил, определяющих отношения между объектами и целью. Выпол­нение программы представляет собой попытку доказательства ло­гического утверждения, построенного из программы по правилам, определенным семантикой используемого языка. Результатом вычис­лений является вывод следствий из аксиом. Алгоритм логической программы предполагает определение и перечень специфических свойств объектов и отношений между ними, а не определение по­рядка выполнения отдельных шагов. Это подтверждает декларатив­ный характер логического языка программирования. Логические про­граммы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска.

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

Объектно-ориентированное программирование (ООП)

Пионером данного направления явился язык Smalltalk, первоначально предназначенный для реализаций функций машин­ной графики. Работа над языком началась в 1970 г. в исследователь­ской лаборатории XEROX (США), а закончилась в 1980 г. оконча­тельным вариантом интерпретатора Smalltalk-80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется ис­ключительно на понятии объекта. В нем отсутствуют операторы или данные, все, что входит в Смолток, является объектами, а объекты общаются друг с другом исключительно с помощью сообщений. В настоящее время версия VisualAge for Smalltalk развивает­ся компанией IBM.

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

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

ООП является более естественным, так как предоставляет воз­можность выбрать имеющиеся или создать новые объекты и органи­зовать взаимодействия между ними. Следовательно, объектно-ориен­тированные языки по сравнению с процедурными являются языками более высокого уровня.

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

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

Т.е. использование функций не является принципом объектно-ориентированного программирования.

К наиболее распространенным современным языкам ООП относятся C++ и Java.

Язык C++ был разработан в начале 80-х гг. Бьерном Страуструпом в лаборатории Bell корпорации AT&T. Им была создана компак­тная компилирующая система, в основе которой лежал язык С, до­полненный элементами языков BCPL, Simula-67 и Алгол-68. Более ранние версии языка были известны как «С с классами». В июле 1983 г. C++ был впервые использован за пределами исследовательской груп­пы автора, однако тогда еще многие особенности языка не были придуманы. К 1990 г. была выпущена третья версия языка C++, стан­дартизированная американским государственным комитетом стан­дартов ANSI.

В 1990 г. сотрудник корпорации Sun Д. Гослинг на ос­нове расширений C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка получила название Java. С января 1995 г. Java получает распространение в Internet. По определению автора, Java является простым объектно-ори­ентированным и архитектурно-нейтральным языком интерпретиру­ющего типа, обеспечивающим надежность, безопасность и перено­симость, обладает высокой производительностью, многопоточностью и динамичностью.

Синтаксис языков C++ и Java во многом совпада­ет. Принципиальным различием является то, что язык C++ компи­лируемый в машинный код, a Java - в платформо-независимый байт-код (каждая команда занимает один байт), этот байт-код может выполняться с помощью интерпретатора – виртуальной Java-маши­ны (J ava V irtual M achine, JVM), версии которой созданы сегодня для лю­бых платформ. С точки зрения возможностей объектно-ориентируе­мых средств, Java имеет ряд преимуществ перед C++. Механизм наследования, реализованный в Java, обязывает к более строгому подходу к программированию, что способствует надежнос­ти и читабельности кода. Язык C++ обладает сложной и трудной для понимания системой наследования. Возможности ди­намического связывания объектов одинаково хорошо представлены в обоих языках, но синтаксическая избыточность C++ и здесь при­нуждает к выбору языка Java.

Идеи ООП проникли во многие процедурные языки. Например, в состав интегрированной системы программирования Паскаль (кор­порации Borland International), начиная с версии 5.5, входит специ­альная библиотека ООП Turbo Vision.

 

Рассмотрим пример объектно-ориентированного программирования:

Создадим класс Животные. Животные обладают следующими характеристиками: вес, рост. Они могут делать следующие действия: издавать звук.

Итак:

class Animals //название класса

{

Weight, //переменная, в которой хранится вес

Height; //переменная, в которой хранится рост

Voice(); //функция издающая звук

}

 

Теперь создадим классы Кошка и Собака, унаследовав их от класса Животные.

class Cat: Animals

{

};

 

class Dog: Animals

{

}

 

Поскольку, классы Кошка и Собака унаследованы от класса Животные, они обладают всеми атрибутами класса Животные – Weight, Height, Voice(). Это называется – наследование.

 

Создадим теперь конкретные экземпляры класса Кошка и Собака, т.е. объекты:

Cat Barsik; //создали кота Барсик

Dog Muhtar; //создали собаку Мухтар

 

Определим рост и вес для Барсика и Мухтара:

Weight=10 – так написать нельзя, т.е. нужно указывать чей рост и вес будем определять.

Barsik.Weight=10; //установили для Барсика вес 10 кг

Barsik.Height =50; //установили для Барсика рост 50 см

Muhtar.Weight=60;

Muhtar.Height =80;

Определение параметров объекта через обращение к нему – называется инкапсуляцией.

 

Поскольку, и класс Кошка и класс Собака унаследованы от класса Животные, у них одинаковая функция – издавать звук. Переопределим эту функцию для этих классов, чтобы собака лаяла, а кошка мяукала. Такое переопределение функции называется перегрузкой функции. Это переопределение выполняется при создании класса:

class Cat: Animals

{

Voice()

{

Mau;

}

};

 

class Dog: Animals

{

Voice()

{

Gav;

}

}

 

Теперь, при подаче звука животным:

Barsik.Voice(); //результат – Mau, замяукал

Muhtar.Voice(); //результат – Gav, загавкал

Принцип переопределения (перегрузки) функций называется полиморфизмом.

Системы программирования

С середины 90-х гг. многие объектно-ориентированные языки реализуются как системы визуального программирования. Такие систе­мы имеют интерфейс, позволяющий при составлении текста про­граммы видеть те графические объекты, для которых она пишется. Отличительной особенностью этих систем является наличие в них среды разработки программ из готовых «строительных блоков», по­зволяющих создавать интерфейсную часть программного продукта в диалоговом режиме, практически без написания программных опе­раций. Система берет на себя значительную часть работы по управ­лению компьютером, что делает возможным в простых случаях об­ходиться без особых знаний о деталях ее работы. Она сама пишет значительную часть текста программы: описания объектов, заголов­ки процедур и многое другое. Программисту остается только вписать необходимые строчки, определяющие индивидуальное поведение программы, которые система не в состоянии предвидеть. Но даже в этих случаях система сама указывает место для размещения таких строк. К объектно-ориентированным системам визуального проек­тирования относятся: Visual Basic, Delphi, C++ Builder, Visual C++. Это системы программирования самого высокого уровня.

VВА (Visual Basic for Application) является общей языковой плат­формой для приложений Microsoft Office (Excel, Word, Power Point и др.). VBA соблюдает основной синтаксис и правила программирова­ния языков Бейсик-диалектов. VBA помогает довольно сильно рас­ширить возможности приложений за счет написания макросов – программ, предназначенных для автоматизации выполнения многих операций. VBA позволяет создавать объекты управления графичес­кого интерфейса пользователя, задавать и изменять свойства объек­тов, подключать к ним необходимый для конкретного случая про­граммный код. С помощью VBA можно производить интеграцию между различными программными продуктами. Программы на язы­ке VBA для приложений создаются двумя способами: в автоматическом режиме как результат построения клавишной макрокоманды или путем написания программного кода.





Поделиться с друзьями:


Дата добавления: 2016-11-20; Мы поможем в написании ваших работ!; просмотров: 548 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2316 - | 2171 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.