
- •В.В.Ломтадзе л.П.Шишкина
- •Оглавление
- •1. Введение в информационные технологии 8
- •2. Вводные сведения о современных программных средствах 14
- •3. Измерение количества информации, её Кодирование и хранение 24
- •4. Модели и Алгоритмы. Роль моделирования и алгоритмизации в решении задач и формализации знаний. Информационные ресурсы 33
- •5. Технические средства информационных технологий 45
- •6. Классификация и обзор программного обеспечения 66
- •8. Электронные таблицы Microsoft Excel 102
- •9. Системы управления базами данных. Субд Access 119
- •10. Введение в программирование. Создание приложений на языке Visual Basic for Applications 135
- •11. Основы и методы защиты информации 159
- •Введение
- •Введение в информационные технологии
- •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.5. Редактирование документа
- •Выделение фрагмента текста мышью
- •7.6. Списки, табуляция, таблицы, многоколончатая верстка
- •7.7. Вставка символа, рисунка, объекта
- •7.8. Колонтитулы. Создание оглавления и списка иллюстраций. Закладки. Гиперссылки. Печать документа
- •Контрольные вопросы и задания к главе 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. Формирование отчетов
- •С помощью субд Access
- •9.4. Основные возможности языка структурированных запросов (sql)
- •Контрольные вопросы и задания к главе 9
- •10. Введение в программирование. Создание приложений на языке Visual Basic for Applications
- •10.1. Основные понятия
- •10.2. Создание интерфейса пользователя
- •Р Элементы управления ис. 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
- •Библиографический список
- •Приложение а Горячие клавиши в Word 2010
- •Сочетание клавиш для работы с текстом или объектами
- •Приложение б Горячие клавиши в Excel 2010
- •Приложение в Категории встроенных функций Excel Математические функции
- •Ссылки и массивы
- •Логические функции
- •Функции обработки дат
- •Текстовые функции
- •Приложение г Тесты Сообщения, данные, сигнал, атрибутивные свойства информации, показатели качества информации, формы представления информации. Системы передачи информации
- •Кодирование данных в эвм
- •Циклические алгоритмические структуры
- •Трансляция, компиляция и интерпретация
- •Интегрированные среды программирования
- •Этапы решения задач на компьютерах
- •Структурное программирование. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ сверху-вниз и снизу-вверх
- •Основные понятия алгебры логики
- •Логические основы эвм
- •Моделирование как метод познания
- •Состав и назначение основных элементов персонального компьютера.
- •Запоминающие устройства: классификация, принцип работы, основные характеристики
- •Компоненты вычислительных сетей
- •Средства использования сетевых сервисов
- •Классификация программного обеспечения. Виды программного обеспечения и их характеристики
- •Общее понятие о базах данных. Основные понятия систем управления базами данных и базами знаний. Объекты баз данных
- •Модели данных в информационных системах. Реляционная модель базы данных
- •Назначение и основы использования систем искусственного интеллекта. Базы знаний. Экспертные системы
- •Шифрование данных. Электронная подпись
Часто используемые встроенные функции Visual Basic
Категория функций |
Примеры функций |
Математические |
ABS( ) – абсолютное значение числа |
RND( ) – случайное число |
|
INT( ) – целая часть числа |
|
SQR( ) – квадратный корень |
|
Тригонометрические функции, логарифмы и др. |
|
Строковые |
LCASE( ) – преобразование строки в строчные буквы |
UCASE( ) – преобразование строки в заглавные буквы |
|
LEN( ) – определение длины строки и др. |
|
INSTR( ) – позиция первой встречи одной строки внутри другой |
|
Даты и времени |
DATE( ) – текущая дата |
TIME( ) – текущее время |
|
NOW( ) – текущая дата и время |
|
DAY( ) – номер дня года и др. |
|
Преобразования типов данных |
CINT( ) – действительного числа в целое (с округлением) |
CSTR( ) – числа в строку символов |
|
CVAR( ) – преобразование в тип данных VARIANT |
|
FORMAT( ) – форматирование данных, формирование строк |
|
VAL( ) – преобразование строки символов в число и др. |
Второе замечание относится к защите модуля от доступа к нему из других рабочих книг. Для этой цели в начале модуля указывают: Option Private Module. Такая защита полезна во избежание недоразумений, связанных с непредвиденной реакцией некоторых процедур на события в других одновременно используемых рабочих книгах Excel.
10.4. Работа с переменными, массивами, константами и со свойствами объектов
Приложение, созданное средствами VBA и встроенное в рабочую книгу Excel, хранит исходные, промежуточные данные и результаты их обработки в таблицах и отдельных ячейках на листах книги Excel, в переменных, в массивах переменных и в виде констант, а также в виде значений свойств объектов – элементов управления. Кроме того, VBA предоставляет средства для чтения данных из файлов и для записи в файлы, но этот вопрос мы оставим читателю для самостоятельного изучения [4; 8; 12].
Для работы с данными используются инструкции языка программирования, процедуры и функции, но все эти средства рассчитаны на работу с данными определенных типов. Предварительное представление о типах данных было уже дано в разделе 3. Теперь подробнее рассмотрим встроенные типы данных VBA (табл. 10.2). Возможности конструирования в приложении собственных типов данных поясним позже.
Таблица 10.2
Встроенные типы данных vba
Тип данных |
Размер в байтах |
Разрядность (цифр) |
Диапазон, пояснение |
Boolean |
2 |
1 |
True, False – логические значения |
Byte |
1 |
≤ 3 |
0, 255 – целые положительные числа |
Integer |
2 |
≤ 5 |
-32768, 32767 – целые числа |
Long |
4 |
≤ 10 |
-2147483648, 2147483647 – длинные целые |
Single |
4 |
≤ 7 |
-3.402823.1038, -1.401298.10-45– отрицательные числа 1.401298.10-45, 3.402823.1038 – положительные числа |
Double |
8 |
≤ 15 |
Действительные числа с двойной точностью |
Currency |
8 |
≤ 19 |
Действительные числа с 4 знаками после десятичной точки. Используются для точных денежных расчетов |
Date |
8 |
|
01.01.0100, 31.12.9999 – даты |
String |
1+L |
|
Строка из L символов; L≤ 65535 |
Object |
4 |
|
Объект – фактически, ссылка на него, т. е. адрес его размещения в оперативной памяти |
Variant |
|
|
Может принимать любой тип данных, т. е. настройка на тип операнда происходит во время исполнения инструкций или процедур |
Когда при разработке приложения возникает необходимость в переменной для хранения данных, ее описывают в модуле перед процедурами или в конкретной процедуре. В первом случае переменная будет доступна всем процедурам модуля (как контейнер общего пользования), а если в ее описании применено ключевое слово PUBLIC, то переменную смогут использовать даже процедуры других модулей. Такую переменную называют глобальной. В ней удобно размещать данные, требуемые многим процедурам. Переменная, описанная внутри процедуры, называется локальной – она используется только в этой процедуре, а в других могут быть переменные с таким же именем. Инструкция, содержащая описание переменной, имеет вид.
Dim ИмяПеременной As ТипДанных
Для определения глобальной переменной вместо Dim пишут Public. Пример описания переменных.
Pablic Nprof, X0 As Single, Y0 As Single
Dim I As Integer, J As Integer, Date1 As Date, Date2 As Date, ФИО As String*32
Nprf=40
При описании переменной ФИО, кроме ее имени и типа, указана длина в байтах. Длину назначают для строковых переменных. Если длину не задать, то будет считаться, что строка имеет переменную длину. Такой подход менее экономичен. Для переменной Nprof тип вообще не указан – по умолчанию ей будет назначен тип Variant – это удобно для программиста, но также неэкономично: число в формате Variant занимает 16 байт, а строка – 22 байта плюс по одному байту на каждый символ. Переменная Nprf вообще не определена – сразу используется в инструкции присваивания. Она также имеет тип Variant по умолчанию. Такой стиль «ввода в действие» переменных довольно опасен. Если Nprf – это опечатка, а надо было написать Nprof, то, возможно, что эту ошибку будет нелегко обнаружить. Поэтому VBA позволяет наложить требование на явное описание всех переменных в модуле. Для этого в описательную часть модуля (до процедур) надо включить инструкцию Option Explicit. Если теперь попытаться использовать в тексте процедур необъявленные переменные, VBA сразу обнаружит ошибки.
Имена переменных должны начинаться с буквы и могут иметь любую разумную длину – не больше 255 символов. Имена не должны содержать пробелов и специальных символов: ! # $ % & @.
Иногда имена записывают так: Номер_строки или НомерСтроки. Применение полных имен особенно полезно для глобальных переменных, которые хранят параметры моделируемых объектов и явлений. В компактных процедурах удобнее пользоваться переменными, применяемыми в математике и физике, например: X – координата, M – число строк в матрице или таблице, i – номер очередной строки, N – число столбцов, j – номер текущего столбца, V – скорость, S – путь и т. п. При использовании кратких имен их поясняют в комментариях – см. текст процедуры Mrows в подразделе 10.3.
Кроме возможности явного задания типа переменной, VBA позволяет указать тип переменной неявно, добавив к ее имени символ-указатель:
$ – для типа данных String, например, ФИО$="Иванов И.И.";
% – для данных типа Integer, например, i%=1;
& – для данных типа Long, например, CX&=6510200;
! – для данных типа Single, например, x!=107.315;
# – для данных типа Double, например, Pi#=3.14159;
@ – для данных типа Currency, например, SS@=67920.1252.
Такой подход вряд ли стоит рекомендовать, но иногда он может способствовать наглядности.
Наряду с переменными для хранения данных во время работы приложения используются массивы переменных, или просто массивы. Массив описывается так же, как одиночная переменная, только после имени в скобках указывается еще размерность:
Dim V(1 to 200) As Single, T(1 to 200) As Single, i As Integer.
Так можно описать массивы измеренных значений скорости и времени для примера в разделе 4. При вычислениях i-й элемент массива указывают с помощью индекса:
S = S + (V(i) + V(i+1)) * 0.5 * (T(i+1)-T(i)).
Так можно записать блок 2, изображенный на рис. 4.1.
Если при описании массива размерность задать одним числом, например, V(200), то будет считаться, что нумерация элементов массива начинается с 0 и оканчивается числом 200. Кроме одномерных массивов, используются многомерные. Предположим, что на листе Excel в первом столбце размещены идентификаторы строк, например, Y1,Y2,…,YI,…,YM , а в первой строке – идентификаторы столбцов: X1,X2,…,XJ,…,XN. На пересечении I-й строки и J-го столбца находится элемент aIJ матрицы (рис.10.5).
Рис. 10.5. Размещение матрицы с элементами a(I, J) на листе Excel
В этом примере матрица представляет собой таблицу коэффициентов, позволяющих связать любой YI уравнением со значениями X1,…,XN:
YI=aI1*X1+aI2*X2+…+aIJ*XJ+…+aIN*XN.
Другими словами, мы имеем матричную запись системы линейных уравнений. Пусть для последующей работы с матрицей требуется определить M, N, разместить идентификаторы YI (I=1,…,M) и XJ (J=1,…N) в массивах CY, CX, а элементы матрицы в двумерном массиве A(I,J).
Этот пример иллюстрирует часто встречающуюся ситуацию: в момент составления программы обычно не известно количество элементов массива – оно определяется программой во время исполнения. Если заранее можно оценить максимальную длину массива, то его часто резервируют с расчетом на максимальную размерность. Так, в нашем случае можно принять ограничение: разрабатываемая программа предназначается для работы с матрицами, у которых число строк и столбцов не превышает 40. Тогда инструкция для резервирования массивов будет иметь вид:
Dim CY(1 to 40), CX(1 to 40), A(1 to 40,1 to 40) As Double.
Но Visual Basic предоставляет и другую возможность – динамического переопределения размерности массивов. Рассмотрим следующий модуль.
Option Explicit
Dim CY( ), CX( ), A( ) As Double
Dim I As Integer, J As Integer, M As Integer, N As Integer
Private Sub CommandButton1_Click( )
MNTab 'Определение M, N - размерности матрицы
ReDim CY(1 To M)
ReDim CX(1 To N) 'Изменение размерности массивов
ReDim A(1 To M, 1 To N)
TabCXCY 'Копирование идентификаторов столбцов и строк в массивы CX, CY
TabA 'Копирование матрицы в массив A
End Sub
Private Sub MNTab( )
I = 2: Do Until IsEmpty(Cells(I, 2))
I = I + 1
Loop
M = I - 2 'M - число строк в таблице
J = 2: Do While Not IsEmpty(Cells(2, J))
J = J + 1
Loop
N = J - 2 'N - число столбцов в таблице
End Sub
Private Sub TabCXCY( )
For J = 1 To N
CX(J) = Cells(1, J + 1).Value 'Идентификаторы столбцов
Next J
For I = 1 To M
CY(I) = Cells(I + 1, 1).Value 'Идентификаторы строк
Next I
End Sub
Private Sub TabA( )
For I = 1 To M
For J = 1 To N
A(I, J) = Cells(I + 1, J + 1).Value
Next J
Next I
End Sub
Этот модуль содержит событийную процедуру CommandButton1_Click, решающую поставленную выше задачу при нажатии кнопки на листе Excel (на рис. 10.5 показана только сама матрица, причем символически), и общие процедуры: MNTab – определение числа строк и столбцов матрицы (M и N); TabCXCY – копирование идентификаторов столбцов и строк в массивы CX, CY; TabA – копирование матрицы из таблицы на листе Excel в двумерный массив A.
Массивы CX, CY, A и основные переменные, требуемые для работы с матрицей, определены на уровне модуля, т. е. доступны всем его процедурам. Элементы массивов CX и CY имеют тип VARIANT, так как для них тип явно не указан. Выбор типа VARIANT для этих массивов обусловлен тем, что при последующем расширении написанного модуля в этих массивах, возможно, потребуется размещать не имена строк и столбцов, а сами значения YI и XJ. Обратим внимание на то, что все три массива в начале модуля определены без указания размерности, т. е. как динамические, а в процедуре CommandButton1 _Click наши массивы переопределены – но только после определения M и N с помощью процедуры MNTab. Приведенные процедуры еще пригодятся для пояснения циклов и как пример для самостоятельной разработки процедур в практических работах.
Завершая рассмотрение массивов, заметим, что в математике аналогом программистского термина одномерный массив является понятие вектор. Вектор можно и нужно толковать не только геометрически: в общем случае это набор значений, например, свойств (признаков) объекта. Если представить себе многомерную систему координат, где по каждой оси отложено значение одного из свойств объекта (скажем, длина автомобиля, расход горючего, максимальная скорость и т. д.), то каждый объект в такой системе координат будет точкой – точкой в признаковом пространстве. Совокупность значений отдельных координат (в нашем примере – длины автомобиля, расхода горючего, максимальной скорости и др.) и есть вектор. Понятие вектора очень удобно для краткой записи операций с массивами чисел – см. самостоятельную работу «Операции с матрицей» в конце книги. Кстати, математический термин матрица соответствует двумерному массиву. Матрицу можно рассматривать как совокупность векторов – строк или столбцов.
Теперь рассмотрим конструирование собственных типов данных. Например, для хранения записей о книгах определим в начале модуля тип данных RecBook с помощью инструкции.
Type RecBook
Название As String*50
Автор As String*20
Издательство As String*16
Год As Integer
End Type
Теперь в этом же модуле или в одной из его процедур зарезервируем массив для хранения записей о книгах.
Dim Books(500) As RecBook
Для доступа к полям Издательство и Год в i-й записи массива воспользуемся инструкциями.
Books(i).Издательство="Недра" : Books(i).Год=1999
В этой книге мы намеренно пользуемся примерами, а не строгими определениями синтаксиса инструкций VBA. Как уже отмечалось, такие определения легко получить в справочной системе Visual Basic – когда программист тонет, он кричит F1!
Кроме переменных, в программах используются данные, значения которых не изменяются – это константы. Приведем примеры их определения.
Const Pi As Double = 3.14159
Const Nmin As Long = 0
Const Nmax As Long = 999999
Определив константы один раз, например, в начале модуля, ими можно пользоваться во многих инструкциях, не вспоминая каждый раз точное значение числа π. Если же в процессе разработки программы потребуется изменить ограничение Nmax , то это надо будет сделать в единственной инструкции.
Некоторые данные во время работы приложения могут храниться в качестве свойств объектов: свойств ячеек листа Excel, свойств элементов управления и др. Приведем примеры.
Лист2.Cells(2,6).Formula = "=Sum(B1:B5) "
Лист2.Range("A1:D4").Value = Range("A1:D4").Value
TextBox1.Text = "M=" & Str(M) & " N=" & Str(N)
В первом примере свойству Formula объекта Cells(2,6), принадлежащего, в свою очередь, объекту Лист2, присваивается конкретная формула. Этот пример, кстати, показывает, как при программировании на VBA можно пользоваться встроенными в Excel формулами. Но верно и обратное: разрабатывая функции на VBA, можно расширить набор формул, доступных в Excel. Во втором примере значения, хранимые в прямоугольной области ячеек на текущем листе, присваиваются ячейкам одноименной области на листе 2. В третьем примере с помощью операции конкатанации (&) три подстроки объединяются (суммируются) в одну строку, и эта строка присваивается свойству Text объекта TextBox1. Последний пример показывает, как значения M, N вывести в поле, размещенное на форме или на листе Excel.