- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
§16. Элементы объектно-ориентированного программирования
Языки объектно-ориентированного программирования (ООП) используют очень высокий уровень абстрагирования понятий переменная и операция обработки.
Для внутреннего языка ЭВМ:
переменная это – стандартный фрагмент оперативной памяти, заданный абсолютным адресом,
операция обработки это – стандартный фрагмент процессора, заданный целочисленным кодом (код это – аналог адреса в процессоре).
Инструкции для ЭВМ на этом языковом уровне сводятся к строго упорядоченному (синтаксис!) перечню адресов.
Для процедурных языков программирования (Pascal и др.):
переменная это – некая совокупность стандартных фрагментов оперативной памяти, которой присвоено символьное имя,
операция обработки это – символьное имя некой последовательности кодов стандартных операций процессора.
Инструкции для ЭВМ на процедурном языке сводятся к строго упорядоченному (синтаксис!) перечню операторов.
Для языков ООП: переменные и операции по их обработке объединяются в единое целое – объект. Принципиальная возможность объединения таких разных понятий в единое целое объясняется достаточно просто: процесс ввода каждого нового информационного объекта обработки обязательно и немедленно сопровождается созданием целого комплекса операций по его обработке. При создании нового понятия (объекта - object, class) проводится описание всех мыслимых (и немыслимых…) действий, которые можно произвести над объектами этого типа. Всем характеристикам объекта и действиям над ним присваиваются символьные имена.
Особенность новообразований в том, что пользователю (программисту) вовсе не обязательно знать какая именно битовая структура скрывается под конкретным именем, достаточно знать прикладной смысл (прагматику!) данной характеристики.
Например (см. п.п. 12.2.1.), математический объект–вектор однозначно описывается упорядоченной последовательностью чисел-координат (компонентов) вектора. Вместе с тем, вектор обладает рядом неотъемлемых свойств, которые именно вычисляются на основе его координат:
длина (модуль),
направление, которое может задаваться как единичным вектором, так и направляющими косинусами,
а если вектор, как направленный отрезок-стрелка, планируется изображать на экране и редактировать (с помощью манипулятора Mouse), то количество вспомогательных характеристик возрастает лавинообразно:
цвет, толщина и структура линии,
координаты точки приложения вектора и обозначение вектора,
текстовое пояснение смысла и предназначения этого вектора,
область выделения рисунка, точки управления изображением, масштабируемость, возможность копирования (переноса в другие программы) и т.д. и т.п.
Специфика ООП заключается в том, что большая часть числовых характеристик оформляется не в виде привычных переменных типа: real или integer, а в виде подпрограмм-операций, которые вызываются и выполняются при каждом затребовании данной характеристики. Причем эти подпрограммы не имеют формальных параметров, т.е. внешне выглядят - как привычные переменные требуемого типа.
В таких условиях задача определения длины вектора сводится к «банальному упоминанию» только самого названия требуемой характеристики – длина. Специфика ООП в том, что программисту можно не знать: как именно будет доставлена ему требуемая характеристика объекта: то ли скопирована из памяти, то ли вычислена какой-то процедурой. Главное - он должен:
знать о ее существовании,
что она из себя представляет (число, символ, операция, картинка),
как она называется.
Опр. Способность объекта объединять в себе переменные и операции по их обработке называется инкапсуляцией.
Поскольку разработка абсолютно нового объекта (object) является весьма трудоемким и хлопотливым занятием, особенно если объект использует визуализацию (вывод изображений на экран) или информационный обмен посредством сетей, для этого класса информационных объектов предусмотрена возможность создания нового – путем модернизации (доработки, исправления, дополнения) некоего существующего объекта-родителя.
Опр. Наследование – автоматический перенос всех свойств (характеристик) объекта-прототипа на создаваемый дочерний объект.
Пример описания Tnew-структуры нового класса объектов, которые наследуют свойства ранее созданного класса объектов с именем Tf:
Type Tnew= class (Tf)
<<Здесь описываются новые характеристики создаваемого объекта>>
End;
В отличие от процедурных языков программирования, ООП включает в описание объектов не только переменные и подпрограммы, но и стандартизированные описания принципиально новых структур (типов), как самих включаемых переменных, так и самих включаемых подпрограмм. В упрощенной форме: в тело объекта (object) включаются также операторы типа Type, которые в процедурных языках предназначены только для транслятора. Эти данные дают возможность «дотранслировать» готовый (ранее созданный) программный модуль непосредственно в момент его выполнения, что позволяет обрабатывать старыми (ранее созданными) программами новые (сегодняшнего изготовления) информационные объекты. Это свойство объектов называется полиморфизмом или поздним связыванием.
Информационный объект типа object (class) наделен высоким свойством автономности (почти как отдельная программа), т.е. он вполне самодостаточен. В частности, объекты могут сами реагировать на поступающие извне директивы (команды) и даже сами генерировать такие директивы для других объектов.
Опр. Событие - реальное или абстрактное происшествие в работающем автомате (ЭВМ), которое оформлено в виде стандартного информационного объекта сообщения -message.
Примеры событий: нажата какая-то кнопка на клавиатуре или Mouse, обнаружена попытка записи информации (чтения) в защищенную область оперативной памяти, получено электронное письмо, произошло деление на ноль, на диске не обнаружен затребованный файл и т.д. и т.п.
Основным обработчиком такого рода сообщений является программа-операционная система (Windows), однако все сообщения могут также перехватываться и обрабатываться даже отдельными объектами. В частности, общение различных объектов между собой также реализовано путем обмена специальными сообщениями.