
- •160001, Г. Вологда, ул. Челюскинцев, 3.
- •Предисловие
- •Введение
- •Раздел 1. Теория информации
- •Глава 1. Исходные понятия информатики
- •1.1. Начальные определения
- •1.2. Формы представления информации
- •1.3. Преобразование сообщений
- •Контрольные вопросы и задания
- •Глава 2. Понятие информации в теории Шеннона
- •2.1. Понятие энтропии
- •2.1.1. Энтропия как мера неопределенности
- •2.1.2. Свойства энтропии
- •2.1.3. Условная энтропия
- •2.2. Энтропия и информация
- •2.3. Информация и алфавит
- •Контрольные вопросы и задания
- •Глава 3. Кодирование символьной информации
- •3.1. Постановка задачи кодирования, Первая теорема Шеннона
- •3.2. Способы построения двоичных кодов
- •3.2.1. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды
- •3.2.2. Равномерное алфавитное двоичное кодирование. Байтовый код
- •3.2.3. Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •3.2.4. Блочное двоичное кодирование
- •Контрольные вопросы и задания
- •Глава 4. Представление и обработка чисел в компьютере
- •4.1. Системы счисления
- •4.2. Представление чисел в различных системах счисления
- •4.2.1. Перевод целых чисел из одной системы счисления в другую
- •4.2.2. Перевод дробных чисел из одной системы счисления в другую
- •4.2.3. Понятие экономичности системы счисления
- •4.2.4. Перевод чисел между системами счисления 2 ↔ 8 ↔ 16
- •4.2.5. Преобразование нормализованных чисел
- •4.3. Кодирование чисел в компьютере и действия над ними
- •4.3.1. Кодирование и обработка в компьютере целых чисел без знака
- •4.3.2. Кодирование и обработка в компьютере целых чисел со знаком
- •4.3.3. Кодирование и обработка в компьютере вещественных чисел
- •Контрольные вопросы и задания
- •Глава 5. Передача информации
- •5.1. Общая схема передачи информации в линии связи
- •5.2. Характеристики канала связи
- •5.3. Влияние шумов на пропускную способность канала
- •5.4. Обеспечение надежности передачи и хранения информации
- •5.4.1. Постановка задачи
- •5.4.2. Коды, обнаруживающие ошибку
- •5.4.3. Коды, исправляющие одиночную ошибку
- •5.5. Способы передачи информации в компьютерных линиях связи
- •5.5.1. Канал параллельной передачи
- •5.5.2. Последовательная передача данных
- •5.5.3. Связь компьютеров по телефонным линиям
- •Контрольные вопросы и задания
- •Глава 6. Хранение информации
- •6.1. Классификация данных. Проблемы представления данных
- •6.2. Представление элементарных данных в озу
- •6.3. Структуры данных и их представление в озу
- •6.3.1. Классификация и примеры структур данных
- •6.3.2. Понятие логической записи
- •6.3.3. Организация структур данных в озу
- •6.4. Представление данных на внешних носителях
- •6.4.1. Иерархия структур данных на внешних носителях
- •6.4.2. Особенности устройств хранения информации
- •Контрольные вопросы и задания
- •Раздел 2. Алгоритмы. Модели. Системы
- •Глава 7. Элементы теории алгоритмов
- •7.1. Нестрогое определение алгоритма
- •7.2. Рекурсивные функции
- •7.3. Алгоритм как абстрактная машина
- •7.3.1. Общие подходы
- •7.3.2. Алгоритмическая машина Поста
- •7.3.3. Алгоритмическая машина Тьюринга
- •7.4. Нормальные алгоритмы Маркова
- •7.5. Сопоставление алгоритмических моделей
- •7.6. Проблема алгоритмической разрешимости
- •7.7. Сложность алгоритма
- •Контрольные вопросы и задания
- •Глава 8. Формализация представления алгоритмов
- •8.1. Формальные языки
- •8.1.1. Формальная грамматика
- •8.1.2. Способы описания формальных языков
- •8.2. Способы представления алгоритмов
- •8.2.1. Исполнитель алгоритма
- •8.2.2. Строчная словесная запись алгоритма
- •8.2.3. Графическая форма записи
- •8.2.4. Классификация способов представления алгоритмов
- •8.3. Структурная теорема
- •Контрольные вопросы и задания
- •Глава 9. Представление о конечном автомате
- •9.1. Общие подходы к описанию устройств, предназначенных для обработки дискретной информации
- •9.2. Дискретные устройства без памяти
- •9.3. Конечные автоматы
- •9.3.1. Способы задания конечного автомата
- •9.3.2. Схемы из логических элементов и задержек
- •9.3.3. Эквивалентные автоматы
- •Контрольные вопросы и задания
- •Глава 10. Модели и системы
- •10.1. Понятие модели
- •10.1.1. Общая идея моделирования
- •10.1.2. Классификация моделей
- •Модели структурные и функциональные
- •Модели натурные и информационные
- •Модели проверяемые и непроверяемые
- •Модели по назначению
- •10.1.3. Понятие математической модели
- •10.2. Понятие системы
- •10.2.1. Определение объекта
- •10.2.2. Определение системы
- •10.2.3. Формальная система
- •10.2.4. Значение формализации
- •10.3. Этапы решения задачи посредством компьютера
- •10.4. Об объектном подходе в прикладной информатике
- •Контрольные вопросы и задания
- •Заключение
- •Приложение а. Элементы теории вероятностей
- •А.1. Понятие вероятности
- •А.2. Сложение и умножение вероятностей
- •A.3. Условная вероятность
- •Контрольные вопросы и задания
- •Приложение б. Некоторые соотношения логики
- •Глоссарий
- •Список литературы
- •Содержание
- •Глава 4. Представление и обработка чисел в компьютере 45
- •Глава 5. Передача информации 69
- •Глава 6. Хранение информации 83
- •Раздел 2. Алгоритмы. Модели. Системы 98
- •Глава 7. Элементы теории алгоритмов 99
- •Глава 8. Формализация представления алгоритмов 120
- •Глава 9. Представление о конечном автомате 134
- •Глава 10. Модели и системы 147
10.4. Об объектном подходе в прикладной информатике
Имеется определенная специфика использования введенных выше терминов «объект» и «система» при решении практических задач компьютерными методами, вызванная, в первую очередь тем, что все рассматриваемые сущности могут быть только информационными, т.е. нематериальными и они не существуют сами по себе, а появляются лишь в результате исполнения компьютером последовательности действий, представленной ему в виде программы. Начнем обсуждение этой специфики с термина «система» - обращение к нему при решении задач с применением компьютерной техники происходит постоянно. Согласно приведенному в п. 10.2.2. определению системой является сам компьютер и отдельные его устройства, что отражено даже в их названиях: системный блок, система ввода-вывода, система мультимедиа и пр. В программном обеспечении выделяются операционные системы, системы программирования, прикладные программные системы. Наконец, под определение системы подпадают и результаты применения некоторых программ - документы. Интересны будут именно последние классы систем - программы и документы. Уточним понятия:
Программа - последовательность действий по обработке информации исполнителем «компьютер».
Программа перед исполнением обязательно представляется на языке машинных кодов команд процессора, может запускаться к исполнению непосредственно из операционной системы и далее функционировать, вообще говоря, независимо от других программ или документов. В операционных системах семейства Windows 9x программы получили название «приложения».
Документ - продукт, сформированный в результате исполнения некоторой программы.
Особенности, отличающие документ от программы, состоят в следующем:
документ не существует независимо; он доступен только из породившей его программы (или других программ, использующих тот же формат представления данных);
для документа непосредственным исполнителем является не компьютер, а порождающая его программа; язык документа, т.е. способ представления его данных и команд также определяется программой.
Различия между программой и документом исчезают при их записи и хранении на носителе, например, жестком диске компьютера - все представляется в виде двоичных файлов. В некоторых случаях возможно преобразование документа в программу, например, при компиляции текста, написанного на языке программирования, в машинные коды. Существует и операция преобразования машинной программы в текст на языке ассемблера - дезассемблирование. Однако в подавляющем большинстве ситуаций программы и документы четко различаются по перечисленным выше признакам.
Теперь отметим общие для документов и программ моменты:
они являются системами, т.е. состоят из взаимосвязанных составных частей и обладают свойствами единства и системности;
по природе это информационные системы;
их представлением (отображением) является некоторая конфигурация экрана.
Конфигурация экрана - это все, что возможно создать и наблюдать на экране компьютера.
Под этот обобщающий термин подпадают и экранный документ, и игровая ситуация, и программная оболочка, управляющая конфигурацией. Современный подход к организации программ, порождающих экранные конфигурации, состоит в том, что они должны предоставлять пользователю некоторый набор управляемых элементов, комбинируя которые можно нужную конфигурацию построить. Этот подход получил название объектного, а сами элементы -называние экранных объектов. Примерами экранных объектов являются кнопки, фрагменты документов (тексты, рисунки, диаграммы, клипы и пр.), окна, меню и т.д. Экранный объект обладает всеми признаками, указанными в определении объекта вообще (см. п.10.2.1.):
его строение (фактическая программная реализация) недоступно пользователю - по этой причине он рассматривается как неделимое целое;
он обладает определенным (заданным) набором свойств, часть из которых могут быть изменены пользователем;
он имеет имя в обслуживающей программной системе, по которому осуществляется доступ к нему.
Наряду с этим, экранные объекты обладают рядом специфических особенностей:
по своей природе они являются информационными (т.е. нематериальными), хотя могут иметь свои материальные представления (например, при выводе образов экранных объектов на принтер);
характеристики их свойств дискретны; по типам величин это целые числа, символьные или логические данные;
любые воздействия, в результате которых происходит изменение свойств объекта, имеют дискретное представление*; каждое такое воздействие называется событием, а изменение свойств - реакцией на событие; перечень событий определяется возможностями внешних устройств ввода информации (чаще всего - это клавиатура и манипулятор «мышь»);
все объекты размещаются в плоскости экрана - по этой причине управляющая программная оболочка обязана обеспечивать разрешение конфликтов при попадании нескольких объектов в одну область экрана; вариантами разрешения могут быть вытеснение (объект занимает данную область, заставляя конкурирующий объект переместиться в другое место) или перекрытие (объект визуально размещается поверх конкурирующего или за ним).
* Поскольку любая непрерывная во времени функция допускает дискретизацию без потери точности описания (см. п.1.3.), постоянное воздействие (например, перетаскивание объекта по экрану мышью) всегда можно представить как последовательность дискретных событий.
Объектно-ориентированная прикладная программа предоставляет пользователю набор готовых объектов, инструментальные средства для создания новых объектов и средства управления, благодаря которым он может изменять свойства объектов и строить желаемую (конечно, в рамках предусмотренного) конфигурацию экрана. Таким образом, при объектном подходе документы или иные конфигурации конструируются (собираются) из экранных объектов. Ситуация напоминает детский конструктор, позволяющий создавать различные устройства из имеющегося в распоряжении набора деталей. При этом человеку, производящему такую сборку, можно не знать строение отдельной детали, а только представлять ее свойства и способы соединения с другими деталями. Такой подход к построению и использованию чего-либо получил название «принцип черного ящика».
Черный ящик - это система, строение которой неизвестно пользователю, однако, известна ее реакция на определенные внешние воздействия.
Совокупность всех средств воздействия образуют интерфейс черного ящика. Человеку, который желает применить черный ящик в качестве средства для решения некоторой практической задачи, вообще говоря, не требуется знать, как ящик устроен и функционирует, а достаточно овладеть его интерфейсом. Такие люди называются пользователями. Круг пользователей, безусловно, намного шире круга специалистов, способных создать устройство или при необходимости восстановить его работоспособность. С подобными черными ящиками сталкиваемся в повседневной жизни -телефон, телевизор, автомобиль, компьютер и т.д. Любая компьютерная программа, которой пользуется не сам разработчик, также оказывается черным ящиком - именно по этой причине, чем нагляднее и дружественнее ее интерфейс, тем шире круг пользователей.
Важными в объектном подходе для прикладных программ оказываются следующие обстоятельства:
из всевозможных объектов выделяется некоторое подмножество объектов инвариантных - тех, что имеются в различных программах; это позволяет унифицировать их интерфейс (примером могут служить кнопки, окна, фрагменты текста, клипы и пр., используемые в документах пакета MS Office);
освоение каких-либо объектных программ для их применения, по сути, сводится к освоению интерфейса объектов; общий же принцип - конструирование документа из объектов - одинаков для всех программ;
для начала работы с программой не требуется ее полного изучения - достаточно освоить некоторые минимально-необходимые возможности (подобно тому, как для начала изъяснения на иностранном языке можно знать небольшую часть его лексики и грамматики).
Перечисленные обстоятельства заметно облегчают освоение и практическое использование объектно-ориентированных прикладных программ, а также повышают производительность при подготовке в них документов.
Объектный подход принят в настоящее время не только в прикладных программных системах. Объектно-ориентированное программирование является одной из наиболее прогрессивных современных парадигм программирования и технологий разработки программ. Программа строится путем комбинирования программных объектов.
Программный объект есть совокупность некоторого набора данных и процедур, определяющих возможности их изменения.
Программный объект объединяет определенную структуру данных и доступные только ему механизмы изменения данных, т.е. в объектно-ориентированном программировании ликвидируется противопоставление и неравноправность между процедурами и данными. Объединение данных и процедур в объекте называется инкапсуляцией. Принципиальное отличие программных объектов от объектов в документах состоит в возможности формирования новых объектов из уже имеющихся путем наследования свойств -так образуются классы объектов.
Известным примером объектно-ориентированного языка является C++, а также его версии Turbo C++ и Borland C++. В идеологии объектного программирования построены и среды визуального программирования такие, как DELPHI, VISUAL BASIC, JAWA.
Таким образом, объектный подход объединяет и программистскую ветвь прикладной информатики, и пользовательскую. Единство подходов к построению документа или программы весьма важно с идейной точки зрения, поскольку демонстрирует общность и универсальность методов информатики, с одной стороны, и заметно облегчает освоение компьютерных приложений, с другой стороны.