![](/user_photo/2706_HbeT2.jpg)
- •Министерство образования и науки рф
- •В.В.Ломтадзе, л.П.Шишкина
- •Для студентов и специалистов
- •1.Введение в информационные технологии 7
- •2. Вводные сведения о современных программных средствах 13
- •3. Измерение количества информации, её Кодирование и хранение 23
- •4. Модели и Алгоритмы. Роль моделирования и алгоритмизации в решении задач и формализации знаний. Информационные ресурсы 32
- •5. Технические средства информационных технологий 45
- •6. Классификация и обзор программного обеспечения 68
- •8. Электронные таблицы Microsoft Excel 103
- •9. Системы управления базами данных. Субд Access 119
- •10. Введение в программирование. Создание приложений на языке Visual Basic for Applications 135
- •11. Основы и методы защиты информации 161
- •Предисловие
- •Введение в информационные технологии
- •1.1. Предмет изучения информатики. Понятие информации. Информационное общество
- •1.2. Информационные революции
- •1.3. Краткая история вычислительной техники
- •1.4. Поколения вычислительных систем
- •Контрольные вопросы к главе 1
- •2. Вводные сведения о современных программных средствах
- •2.1. Особенности современных программных средств
- •2.2. Основные элементы управления в интерфейсе программных продуктов
- •2.3. Типовые диалоги в интерфейсе программных продуктов
- •Контрольные вопросы к главе 2
- •3. Измерение количества информации, её Кодирование и хранение
- •3.1. Измерение количества информации
- •3.1.1. Измерение количества информации через неопределённость знаний
- •3.1.2. Количество информации в сообщении о том, что произошло одно из n равновероятных событий
- •3.1.3. Алфавитный подход к измерению количества информации
- •3.2. Кодирование информации
- •3.2.1. Данные – формализованная информация
- •3.2.2. Системы кодирования, объёмы данных, системы счисления
- •Запись содержимого полубайта в разных системах счисления
- •3.2.3. Кодирование текста
- •3.2.4. Кодирование чисел
- •3.2.5. Кодирование графической информации
- •3.2.6. Кодирование звука
- •3.2.7. Кодирование видео
- •Контрольные вопросы к главе 3
- •4. Модели и Алгоритмы. Роль моделирования и алгоритмизации в решении задач и формализации знаний. Информационные ресурсы
- •4.1. Модели решения вычислительных и функциональных задач
- •4.2. Алгоритмы
- •Основные элементы, используемые в блок-схемах
- •4.3. Принципы структурного программирования
- •4.4. Объектно-ориентированное программирование
- •4.5. Алгоритмизация как средство формализации знаний. Информационные ресурсы
- •Контрольные вопросы к главе 4
- •5. Технические средства информационных технологий
- •5.1. Логические основы вычислительной техники, алгебра логики
- •5.1.1. Основные понятия
- •Логические операции
- •5.1.2. Основные законы алгебры логики
- •5.1.3. Логические выражения
- •5.1.4. Логические элементы
- •5.1.5. Функциональные схемы и функциональные узлы
- •5.2. Основные блоки персонального компьютера
- •5.3. Основные периферийные устройства, подключаемые к компьютеру
- •5.4. Компьютерные сети
- •Уровни модели osi
- •Контрольные вопросы к главе 5
- •6. Классификация и обзор программного обеспечения
- •6.1. Системное программное обеспечение
- •Поля элемента каталога
- •6.2. Инструментальные средства программирования
- •6.3. Прикладное программное обеспечение
- •Контрольные вопросы к главе 6
- •7. Текстовый процессор Microsoft Word
- •7.1. Назначение. Основные понятия
- •7.2. Модель фрагмента текста. Параметры форматирования. Стили
- •7.3. Типовая последовательность создания документа
- •7.4. Разработка стилей и форматирование фрагментов текста
- •Пример разработки стилей
- •Р ис. 7.3. Выбор варианта обрамления абзаца
- •7.5. Редактирование документа
- •Выделение фрагмента текста мышью
- •7.6. Списки, табуляция, таблицы, многоколончатая верстка
- •7.7. Вставка символа, рисунка, объекта
- •Контрольные вопросы к главе 7
- •8. Электронные таблицы Microsoft Excel
- •8.1. Назначение. Основные понятия
- •8.2. Обобщенная технология работы в электронной таблице
- •8.3. Ввод, редактирование, форматирование данных
- •8.4. Выполнение расчетов по формулам и построение диаграмм
- •Инструкции, используемые в Microsoft Excel
- •Сообщения об ошибках в формуле
- •Ряды и категории данных
- •8.5. Сортировка, консолидация данных, сводные таблицы
- •Получение таблицы, содержащей консолидированные данные
- •Исходные данные для построения сводной таблицы
- •Пример сводной таблицы
- •Контрольные вопросы к главе 8
- •9. Системы управления базами данных. Субд Access
- •9.1. Основные понятия
- •9.2. Нормализация отношений (таблиц) и обеспечение целостности данных в реляционной базе данных
- •9.3. Последовательность действий при создании и использовании базы данных
- •9.3.1. Создание базы данных
- •9.3.2. Создание таблиц базы данных, ввод данных во вспомогательные таблицы
- •9.3.3. Создание основной таблицы
- •9.3.4. Создание схемы данных
- •9.3.5. Создание формы
- •9.3.6. Создание запросов
- •9.3.7. Формирование отчетов
- •9.4. Основные возможности языка структурированных запросов (sql)
- •Контрольные вопросы к главе 9
- •10. Введение в программирование. Создание приложений на языке Visual Basic for Applications
- •10.1. Основные понятия
- •10.2. Создание интерфейса пользователя
- •V Режим конструктора Свойства isual Basic р Элементы управления Свойства объекта SpinButton1 ис. 10.1. Лист Excel в момент создания интерфейса приложения средствами vba
- •10.3. Модули, процедуры, функции
- •Часто используемые встроенные функции Visual Basic
- •10.4. Работа с переменными, массивами, константами и со свойствами объектов
- •Встроенные типы данных vba
- •10.5. Основные инструкции языка Visual Basic и отладка программ
- •Арифметические операции
- •Операции сравнения
- •Контрольные вопросы к главе 10
- •11. Основы и методы защиты информации
- •11.1. Основные понятия информационной безопасности
- •11.2. Классификация угроз информационной безопасности
- •11.2.1. Непреднамеренные
- •11.2.2. Преднамеренные
- •11.3. Обеспечение информационной безопасности
- •11.3.1. Юридические основы информационной безопасности
- •11.3.2. Требования к защите информации в системах
- •11.3.3. Меры по поддержанию работоспособности компьютерных систем
- •11.3.4. Противодействие нарушению конфиденциальности информации
- •11.3.5. Электронная цифровая подпись
- •11.4. Особенности защиты информации в компьютерных сетях
- •Контрольные вопросы к главе 11
- •Библиографический список
- •Приложение Тесты Сообщения, данные, сигнал, атрибутивные свойства информации, показатели качества информации, формы представления информации. Системы передачи информации
- •Меры и единицы количества и объема информации
- •Системы счисления
- •Кодирование данных в эвм
- •Алгоритм и его свойства. Способы записи алгоритма
- •Линейная алгоритмическая структура
- •Разветвляющаяся алгоритмическая структура
- •Циклические алгоритмические структуры
- •Трансляция, компиляция и интерпретация
- •Интегрированные среды программирования
- •Этапы решения задач на компьютерах
- •Структурное программирование. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ сверху-вниз и снизу-вверх
- •Объектно-ориентированное программирование
- •Основные понятия алгебры логики
- •Логические основы эвм
- •Моделирование как метод познания
- •Классификация и формы представления моделей
- •Методы и технологии моделирования
- •Информационная модель объекта
- •Состав и назначение основных элементов персонального компьютера. Центральный процессор. Системные шины и слоты расширения
- •Компоненты вычислительных сетей
- •Сервисы Интернета
- •Средства использования сетевых сервисов
- •Файловая структура операционных систем. Операции с файлами
- •Электронные таблицы
- •Основные операции с данными
- •Назначение и основы использования систем искусственного интеллекта. Базы знаний. Экспертные системы
- •Защита информации в локальных и глобальных компьютерных сетях
- •Шифрование данных. Электронная подпись
6.2. Инструментальные средства программирования
Инструментальные средства программирования подразделяют на средства для создания приложений (системы программирования и среды визуального программирования) и средства для создания информационных систем (CASE-технологии).
На ЭВМ первых трех поколений (см. раздел 1) для создания работающей программы в виде исполняемого файла применялись системы программирования. Они включали в себя: язык программирования (например, Фортран, Кобол и др.) – для записи текста программы и используемых ею подпрограмм-процедур, компилятор – для преобразования текстов программы и процедур в объектные модули (см. также раздел 4), редактор связей – для увязывания программы и процедур в одном исполняемом файле, отладчик – для организации слежения за решением тестовых задач с помощью создаваемой программы, библиотекарь – для ведения библиотек объектных модулей. В наиболее продуманных системах программирования редактор связей не применялся, его функции выполнял интеллектуальный загрузчик: загружая в ОП объектный модуль программы, он разрешал внешние ссылки путем загрузки с диска из библиотеки объектных модулей требуемых подпрограмм с одновременной заменой символических ссылок на адреса фактически загруженных в ОП процедур. Такой подход применялся на ЭВМ БЭСМ-6, Cyber и на многих других, используемых в научных исследованиях, в военной, нефтяной и других наукоемких областях. Применять редактор связей на этих ЭВМ не было никакого смысла. Например, на ЭВМ Cyber-173 загрузка практически любой программы вместе с загрузкой из объектных библиотек всех используемых подпрограмм, включая редактирование связей, длилась не более 1 секунды, а работа программы в упомянутых предметных областях обычно продолжалась несколько минут или часов. При этом для хранения программного обеспечения на дисках требовалось в сотни раз меньше места, чем для хранения исполняемых программных файлов: ведь многие подпрограммы включались в десятки или сотни программ, а изобретенные в IBM и других фирмах редакторы связей включали в исполняемые файлы не только код программ и подпрограмм, но и пустое место, резервируемое в программах для размещения массивов данных. Применение объектных модулей вместо загрузочных позволяло также автономно корректировать и компилировать процедуры, не заботясь о редактировании многих программ, в которых изменяемые модули использовались в качестве подпрограмм.
На компьютерах четвертого поколения применение редакторов связей уже не выглядит таким непродуманным, как на ЭВМ третьего поколения. Во-первых, хранение больших по размерам исполняемых программных файлов перестало быть проблемой при использовании современных дисков. Во-вторых, на смену системам программирования, включающим в себя описание языка программирования, другую документацию, компилятор, редактор связей и вспомогательные инструментальные средства (отладчик, библиотекарь и т.п.), пришли среды визуального программирования (C++, Visual Basic, Delphi и др.), автоматически изменяющие исполняемую программу в случае корректировки любой используемой процедуры. В-третьих, результатом разработок в области программирования стали не многочисленные программы, а многофункциональные приложения, каждое из которых по числу функций заменяет множество программ, разработанных ранее для машин третьего поколения; следовательно, любая общая для многих функций процедура теперь включается не во многие программы, а в одно приложение. Что же касается программных модулей, используемых многими приложениями, то их стали оформлять в виде динамически связываемых библиотек (DLL – Dynamic Linking Libraries), близких по своему назначению к библиотекам объектных модулей на ЭВМ третьего поколения. Правда, последнее несколько усложнило передачу разработанных приложений пользователям. Например, программист, создавший программу в среде Visual Basic и подготавливающий ее к тиражированию, должен знать, какие файлы DLL, обычно автоматически подключаемые системой программирования, используются данной программой. Эти файлы должны входить в комплект поставки приложения (в дистрибутив) вместе с EXE-файлом и файлом, содержащим документацию. Правда, в таких инструментальных системах, как Visual Basic, имеются средства, позволяющие автоматически подготовить дистрибутив.
Для программистов, работавших на ЭВМ третьего поколения, большое значение имел выбор языка программирования. В науке и технике преимущественно использовался Фортран, причем часто в сочетании с Ассемблером. Фортран был прост в освоении, содержал множество встроенных математических функций, позволял пользоваться обширными библиотеками объектных модулей, причем формат объектного модуля был одинаковым для откомпиллированной подпрограммы, текст которой написан на Фортране, Ассемблере или другом языке. Благодаря этому в крупных системах обработки данных основные программы и большая часть подпрограмм создавались на Фортране, а те функции, которые Фортран, из-за своей универсальности не позволял гибко реализовывать на конкретной машине, программировали на Ассемблере – машинно-ориентированном языке, позволяющем символически записывать прямо машинные команды и макрокоманды. На Ассемблере обычно создавались подпрограммы ввода-вывода (гибкая работа с магнитными лентами, дисками и т.п.), динамического управления памятью и самых массовых вычислений, когда требовалось минимизировать число обращений к ОП путем активного использования регистров арифметического устройства конкретной ЭВМ. С включением небольшого числа ассемблерных подпрограмм на Фортране строились мощные системы обработки данных во многих предметных областях. Эти системы управлялись путем задания параметров для каждого этапа обработки данных, например, X0=300, Y0=100 и т.п. Результаты распечатывались на широкоформатном алфавитно-печатающем устройстве (АЦПУ) или выводились на графопостроитель в виде схем, карт и других документов.
В сфере экономики и финансов на машинах третьего поколения часто применялись такие языки программирования, как PL-1 и Кобол. Эти языки постепенно сошли со сцены, в то время как программы, созданные на Фортране еще применяются, но обычно не как самостоятельные программные продукты, а как EXE-модули, динамически вызываемые (непосредственно или в составе командного файла) из современного событийно-ориентированного приложения, обладающего унифицированным графическим интерфейсом.
На персональных компьютерах в первые годы их применения большое распространение получили такие языки программирования, как Си, Паскаль и Бейсик. Фортран также продолжал использоваться.
Бейсик первое время рассматривался как учебный язык, причем после написания текста программы ее не надо было компилировать и редактировать – программа исполнялась в режиме интерпретации команд. Это означает, что все команды программы (вычисления, проверки условий, передачи управления и др.) последовательно воспринимались интерпретатором Бейсик и немедленно исполнялись. Это гораздо медленнее, чем исполнение готовой программы – EXE-файла, так как каждая языковая инструкция, находящаяся внутри цикла, преобразуется в машинные команды не один раз, как при компиляции, а ровно столько раз, сколько исполняется цикл. Но зато такой подход проще в реализации и удобен для обучения. Кстати, роль интерпретации программ (как альтернативы компиляции) в последнее время вновь начала расти благодаря взрывообразному росту производительности вычислительных систем и в связи с удобством включения интерпретируемых текстов программ в HTML-документы и макросы документов, создаваемых текстовыми и табличными процессорами.
Си и Паскаль в 80-х и первой половине 90-х годов получили наибольшее распространение при разработке программ для ПК. Постепенно совершенствуясь, эти языки стали сочетать в себе высокий уровень (большую информационную емкость языковых инструкций) с возможностью учета конкретных технических особенностей ПК. Си преимущественно использовали профессионалы, а Паскаль – широкая программирующая публика. Си позволяет программисту больше полагаться на себя, выигрывая в краткости программного кода, а компилятор Паскаля, который первоначально также создавался как учебный язык, постоянно контролирует программиста, принуждая его следовать строгим правилам, особенно при работе с данными разных типов. На базе Си и Паскаля были созданы различные версии систем программирования, которые содержали удобные редакторы для подготовки текстов программ, быстрые компиляторы, мощные средства для отладки программ. Системы программирования Си++ и Борланд Паскаль для Windows ориентированы уже на создание событийно-объектно-ориентированных приложений с унифицированным графическим интерфейсом. Но принципиально технология создания программных продуктов изменилась в середине 90-х годов после того, как завоевали всеобщее признание среды визуального программирования, среди которых наибольшее распространение для ПК получили Delphi (разработка корпорации Borland) и Visual Basic (разработка корпорации Microsoft).
Основные идеи современного визуального программирования тесно связаны с особенностями современных программ, рассмотренными в разделе 2. Приложение строится из крупных блоков – компонентов. Важнейшим компонентом является форма. Это как бы площадка для размещения объектов, видимых в окне. Главному окну программы (см. раздел 2) соответствует главная форма, диалоговым окнам – диалоговые формы и т.п. Компоненты, из которых можно строить программу, представлены в палитре компонентов. Программист выбирает щелчком мыши в палитре компонентов требуемый ему объект, например, кнопку и “рисует” его мышью на форме. После этого в специальном окне он устанавливает свойства данного объекта, если его не устраивают те значения свойств, которые предусмотрены по умолчанию. Каждый объект имеет свои свойства и методы, в том числе процедуры реагирования на события. Например, свойствами кнопки являются ее цвет, шрифт надписи, сама надпись (Caption – заголовок) и др. Если в режиме конструирования приложения по командной кнопке щелкнуть мышью, то откроется окно текстового редактора с заготовкой событийной процедуры. В этой заготовке присутствуют только заглавная и конечная строки, а само тело процедуры программист должен написать на языке программирования, применяемом в данной среде. В Delphi используется Pascal, а в Visual Basic – Basic.
При написании текста процедуры программист может использовать методы объектов, размещенных им на форме. Например, “затащил” на форму Delphi объект Таблица с именем Table1, и можно использовать методы этого объекта: открыть (Table1.Open), встать на первую запись (Table1.First), извлечь из очередной записи поле X (X:=Table1.FieldByName('X').AsFloat), перейти к следующей записи (Table1.Next) и т.д. Кстати, этот пример показывает, что компонент - это не обязательно видимый объект (как кнопка, меню, список и др.), но использование готовых методов объекта резко упрощает программирование. Что же касается видимых объектов, то в них встроены многие процедуры реагирования на события. Например, когда пользователь щелчком мыши выбирает элемент списка, этот элемент изменяет свой цвет – и это не надо программировать. Таким образом, идеи событийного объектно-ориентированного программирования не только изменили интерфейс и облик современных приложений, но и технологию их создания. Естественно, что программист не в состоянии помнить свойства, методы всех объектов и события, на которые каждый объект реагирует. Но это и не требуется. Разместив объект, например, символическое изображение таблицы в виде значка, на форме, программист может выделить этот объект, щелкнув по нему мышью, и далее нажать клавишу <F1>. В ответ на эти действия он получит исчерпывающую хорошо формализованную справку о свойствах, методах объекта и о событиях, на которые он реагирует.
Важным достоинством сред визуального программирования также является их ориентация на работу с таблицами баз данных, хотя предусмотрены и удобные средства для работы с обычными файлами. Пример некоторых инструкций Delphi для работы с таблицей был приведен выше, хотя, конечно, перед организацией доступа к записям таблицы устанавливаются некоторые ее свойства, определяющие, в частности, в какую базу данных эта таблица входит.
С помощью Delphi и Visual Basic теперь успешно создаются системы программного обеспечения крупнейших организаций. Эти системы обычно опираются на технологию клиент/сервер и на информационно-логическую модель предприятия (см. раздел 9), в соответствии с которой все данные размещаются в десятках и сотнях взаимоувязанных таблиц, характеризующих финансы, кадры, состояние складов, различные сделки, технологические процессы и т.д. Главный принцип таких систем: каждый элемент данных должен вовремя оказаться на своем месте – в соответствующей таблице. В таких системах, например, нет необходимости бухгалтеру начислять зарплату сотрудникам. Бухгалтерия и отдел кадров должны только позаботиться о том, чтобы вся информация (кадровая, табельная, нормативная и т.п.) была вовремя введена в свои таблицы, а процедура начисления зарплаты, хранимая на сервере, сама включится по таймеру в определенный день и час каждого месяца и сформирует необходимые документы, например, на листах книги Excel.
Опыт создания информационных систем предприятий привел разработчиков к типовой технологии, включающей в себя определенный набор действий: распределение всех исходных, промежуточных и конечных данных в плоских таблицах «объекты-свойства», создание этих таблиц, создание приложений, позволяющих осуществлять ввод данных в таблицы, их корректировку, выполнение типовых расчетов и т.п. Осознание и формализация этой технологии позволили разработчикам СУБД и некоторым независимым фирмам-создателям ПО сделать очередной шаг в автоматизации формирования информационного и программного обеспечения предприятий. Таким шагом стали CASE-технологии (CASE – Computer-Aided Software Engineering). Они реализуются с помощью инструментальных программных комплексов, позволяющих на основе формализованного описания модели предприятия автоматически сформировать пусковой комплекс его информационного и программного обеспечения. Инструментальные средства CASE включают в себя методы моделирования, позволяющие формализовать необходимые для работы системы процессы и данные. В результате разработка системы превращается в логичный, документируемый и достаточно быстрый процесс. Кроме того, инструментальные средства CASE дают реальную отдачу, так как с самого начала позволяют разработать надежную систему. Пользователи могут начать продуктивно работать уже с первой версией приложения, а разработчикам и администраторам не нужно тратить много времени на исправление непредвиденных проблем или на неучтенные в процессе разработки изменения в дизайне приложения. Средства CASE имеют и другие возможности, которые позволяют сэкономить время на обслуживании системы в процессе ее работы. Например, инструментальные средства Oracle CASE [11] имеют утилиты анализа влияния, которые помогают получать ответы на вопросы типа: «На какие модули приложения повлияет изменение определения в данной таблице?»