БРАТЬЯ ИМЕЮТ ОДНОГО ОТЦА
ДЖОН - ОТЕЦ ДЖЕКА
МАЙК - БРАТ ДЖЕКА
то система логического программирования должна сделать вывод: ДЖОН - ОТЕЦ МАЙКА.
Хотя работы по логическому программированию ведутся с 50-х гг., в настоящее время данное направление несколько потеряло свою актуальность в связи с отсутствием реальных результатов, поскольку большинство реализованных на принципах логического программирования систем оказались практически непригодными.
Объектно-ориентированное (ОО) программирование, разработанное в середине 70-х гг. Керниганом и Риччи и реализованное в ОО-версиях языков Си и Паскаль, представляет собой отображение объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. Структурное программирование подразумевает наличие ряда встроенных структур данных: целых, вещественных и строковых переменных, массивов, записей - при помощи которых и производится отображение свойств объектов реального мира. При объектно-ориентированном подходе для объекта создается своя структура данных (класс), содержащая как свойства объекта (поля), так и процедуры для управления объектом (методы).
Например, рассмотрим простейший объект - точку на экране. Она имеет как минимум три поля (координаты и цвет) и методы вроде "ChangeColor" (поменять цвет), "MoveXY" (переместиться в точку х, у) и т.д. Объектно-ориентированный подход является в настоящее время доминирующим и позволяет сократить время разработки и увеличить надежность больших проектов. Однако программы в данном стиле отличаются громоздким синтаксисом; в целом идеология объектно-ориентированного подхода весьма неочевидна часто воспринимается с трудом (особенно это характерно для языка Си, который и в своем первоначальном виде отличается крайне неудобочитаемым синтаксисом) и переход к его использованию труден или невозможен для большого числа программистов.
В основе функционального стиля лежит понятие функции как "черного ящика", имеющего вектор параметров (аргументов)
на входе и результат r (скаляр) на выходе:Допустим случай , т.е. вектор параметров отсутствует. В функциональных языках программирования отсутствуют операторы: все действия, в том числе и управляющие конструкции, выполняются при помощи вызовов функций. Поскольку каждая функция возвращает значение, ее можно подставить в качестве аргумента другой функции, что позволяет записывать сложные выражения в функциональной форме. Одним из первых функциональных языков стал язык Лисп, созданный в конце 50-х гг. как язык искусственного интеллекта.
К языкам искусственного интеллекта (сокращенно обозначается AI - artificial intelligence) относят такие языки, которые способны в зависимости от набора исходных данных модифицировать алгоритм работы, т.е. "на ходу" менять программу (поговорка гласит, что на языках искусственного интеллекта программируют те, кому не хватает интеллекта естественного).
Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками, в которых синтаксис и семантика строго определены. Поэтому при применении их по назначению они не допускают свободного толкования выражения, характерного для естественного языка [Толковый,1989].
Программа - это совокупность допустимых операторов конкретного языка программирования.
Программирование , в узком смысле, это запись алгоритма на конкретном языке программирования - языке, "понимаемом" компьютером. Заметим, что довольно часто в литературе можно встретить и другое более широкое определение программирования - это все технические операции, необходимые для создания программы, включая анализ требований и все стадии разработки и реализации алгоритма решения задачи с помощью компьютера.
Напомним, что алгоритм - это точное и понятное предписание (указание) исполнителю совершить последовательность действий, направленных на достижение указанной цели или на решение поставленной задачи. Существует три базовые конструкции алгоритмов: "линейная","ветвление" и "цикл".
В данном пособии Вам предлагается изучать язык программирования Pascal (диалект TURBO Pascal, версия 3.0). Pascal - это императивный язык программирования высокого уровня, имеющий строгую типизацию данных и переменных. Автором языка Pascal является профессор, директор Института информатики Швейцарской высшей политехнической школы Никлаус Вирт, работавший над созданием этого языка в 1965-1971 гг. Язык программирования Pascal был назван в честь Блеза Паскаля, выдающегося французского математика и философа, жившего в 1623-1662 гг.
Императивные языки программирования [Толковый,1989] - это класс языков программирования. Программа, написанная на императивном языке, явно указывает способ получения желаемого результата, не определяя при этом ожидаемых свойств результата. Процедура получения желаемого результата имеет вид последовательности операций, поэтому для императивных языков характерно указание порядка выполнения операторов. В основе такого программирования лежат извлечение из памяти значения некоторой переменной, совершение над ним действия и сохранение нового значения с помощью оператора присваивания. Отметим, что операторы присваивания разрушают информацию (присваиваемое значение заменяет предыдущее значение переменной) и зависят от порядка выполнения.
Система программирования включает в себя:
1. редактор текстов программ;
2. компилятор;
3. компоновщик (компонует исполняемый код программы);
4. отладчик (используется для отладки программ).
Среда программирования Turbo Pascal – интерактивная, работа с которой выполняется с помощью команд меню или управляющих клавиш.
Структура программы: программа состоит из трех частей:
1. заголовок программы(Program имя программы);
2. описательная часть – объявляются все объекты, которые будут использованы в программе с указанием имен и типов данных. Раздел описаний состоит из подразделов:
· uses – список имен, подключенных в стандартных библиотеках;
· uses crt – стирание предыдущих выводов на экран;
· label – описание меток (Label M1, M2);
· const – описание констант (const p=3,1415);
· type (a: array [1..10] of real);
· var – объявление переменных (var a, b, c: real; x, y: integer;);
· procedure – объявление процедурного пользователя;
function – объявление функций пользователя;
3. раздел операторов (Begin … End.).
Алфавит и словарь языка Pascal. Алфавит содержит:
1. строчные и заглавные буквы латинского алфавита
2. десятичные цифры (от 0 до 10)
3. специальные символы + - * / > < = ; # ‘ . , : { } [ ] ( )
Примечание: буквы русского алфавита и другие символы можно написать только в строковых константах (‘…’).
Словарь Pascal содержит зарезервированные слова [имеют фиксированное написание и навсегда определяют смысл(begin, end, type и т.д.)].Стандартные идентификаторы используются для обозначения встроенных в язык функций, процедур и т.д.
Идентификаторы - имена тех объектов программы, которые создает и называет программист (до 127 символов).
Компиляторы языка Pascal требуют, чтобы сведения об объеме памяти, необходимой для работы программы, были предоставлены до начала ее работы. Для этого в разделе описания переменных (var) нужно перечислить все переменные, используемые в программе. Кроме того, необходимо также сообщить компилятору, сколько памяти каждая из этих переменных будет занимать. А еще было бы неплохо заранее условиться о различных операциях, применимых к тем или иным переменным...
Все это можно сообщить программе, просто указав тип будущей переменной. Имея информацию о типе переменной, компилятор "понимает", сколько байтов необходимо отвести под нее, какие действия с ней можно производить и в каких конструкциях она может участвовать.
Для удобства программистов в языке Pascal существует множество стандартных типов данных и плюс к тому возможность создавать новые типы.
Конструируя новые типы данных на основе уже имеющихся (стандартных или опять-таки определенных самим программистом), нужно помнить, что любое здание должно строиться на хорошем фундаменте. Поэтому сейчас мы и поговорим об этом "фундаменте".
На основании базовых типов данных строятся все остальные типы языка Pascal, которые так и называются: конструируемые.
Типы данных. Данные в программе обрабатываются в виде констант и переменных константы, не изменяют своего значения в процессе выполнения в программе. Переменные могут принимать различные значения в процессе выполнения программы. Переменную можно трактовать как именованную область оперативной памяти, в которой можно записывать различные значения. Для описания множества допустимых значений величин используют указания типа данных. В Pascal существуют стандартные типы данных и есть возможность создавать свои. Типы данных могут быть простыми (целые, вещественные…) или составными (файлы, записи…).
Основные типы данных:
1. целочисленные: integer (-32768 - 32767), longint, byte (0 - 255), shorint (-128 - 127), word (0 - 65537);
2. вещественные: представляют данные которые могут представлять не целые значения (real, single, double, extende, comp);
3. символьный тип: char – определяет множество значений символов, каждый символ кодируется числом от 0 до 255, каждое значение такого типа один символ (var b, a: char; begin … a: = ‘1’; b: = ‘A’;);
4. логические (булевские): Boolean: определяет два возможных значения: истина (true) или ложь (false).
Типы данных, конструируемые программистом, описываются в разделе type по следующему шаблону:
type <имя_типа> = <описание_типа>;Например:
type lat_bukvy = 'a'..'z','A'..'Z';Базовые типы данных являются стандартными, поэтому нет нужды описывать их в разделе type. Однако при желании это тоже можно сделать, например, дав длинным определениям короткие имена. Скажем, введя новый тип данных