ЕН.Ф.2_Информатика (новое окно)

advertisement
Содержание
Аннотация УМКД………………………………………………………………...3
Рабочая программа учебной дисциплины…………….………………………..5
Конспект лекций………………………………………………………………196
Контрольно-измерительные материалы………………………………………245
Список литературы……………………………………………………………289
Аннотация учебно-методического комплекса дисциплины
«Информатика»
Учебно-методический
комплекс
дисциплины
«Информатика»
разработан для студентов 2 курса по специальности 280103.65 Защита в
чрезвычайных ситуациях в соответствие с требованиями ГОС ВПО по
данной образовательной программе и положением об учебно-методических
комплексах
дисциплин
образовательных
программ
высшего
профессионального образования (утверждено приказом и.о. ректора ДВФУ
от 17.04.2012 № 12-13-87).
Дисциплина «Информатика» входит в федеральный компонент цикла
общих математических и естественнонаучных дисциплин.
Общая трудоемкость освоения дисциплины составляет 198 часов.
Учебным планом предусмотрены лекционные занятия (72/36 часов),
лабораторные работы (36/36 часов), самостоятельная работа студента (90/126
часов). Дисциплина реализуется на 2 курсе в 3 и 4 семестрах.
Содержание дисциплины охватывает круг вопросов, связанных с
современными информационными технологиями (аппаратное и программное
обеспечение компьютера, моделирование информационных процессов,
сетевые технологии, алгоритмизация и программирование и компьютерная
безопасность). Отдельные информационные технологии рассматриваются во
взаимосвязи с другими. Анализируются основные тенденции современного
этапа развития информационных технологий. В ходе изучения курса
рассматривается полный цикл решения практических задач от постановки
задачи
до
ее
реализации
средствами
компьютерных
технологий.
Теоретические и практические знания по информационным технологиям, а
также понимание важнейших тенденций развития компьютерных технологий
даст возможность студентам более уверено ориентироваться в сложных и
многообразных явлениях современного этапа развития информационного
общества,
а
также
применять
практические
навыки
использования
вычислительной
техники
в
учебной,
научно-исследовательской,
производственной и экспериментальной деятельности.
Учебно-методический комплекс включает в себя:
рабочую программу учебной дисциплины;
конспекты лекций;
материалы лабораторных работ;
контрольно-измерительные материалы;
список литературы (в том числе интернет-ресурсов);
глоссарий.
Достоинством данного УМКД является раздел «Конспекты лекций», в
котором приведены подробные авторские лекции, подготовленные для
использования не только в рамках очного, но и дистанционного обучения. В
разделе «Контрольно-измерительные материалы» для каждого учебного
модуля представлены наборы тестов и индивидуальных заданий, которые
сгруппированы по уровням сложности для обеспечения индивидуализации
обучения каждого студента. Все материалы УМКД курса «Информатика»
подготовлены к размещению в современных LMS, например BlackBoard.
При разработке рабочей программы учебной дисциплины использованы:
Государственный
образовательный
стандарт
высшего
профессионального образования образовательной программы, утвержденный
"05" апреля 2000 г., регистрационный номер №304 тех/дс.
Требования к дисциплине из государственного образовательного стандарта:
ЕН.Ф.02
Информатика
Понятие информации, общая характеристика процессов сбора, передачи,
обработки и накопления информации; технические и программные средства
реализации информационных процессов; модели решения функциональных и
вычислительных задач; алгоритмизация и программирование; языки
программирования высокого уровня; базы данных; программное обеспечение и
технологии программирования; локальные и глобальные сети ЭВМ; основы
защиты информации и сведений, составляющих государственную тайну;
методы защиты информации; компьютерный практикум.
Цель курса. Обучить студентов использовать методы компьютерных и
информационных технологий, в том числе программно-аппаратные средства
вычислительной техники, для автоматизированного решения прикладных
задач.
Задачи курса:
Дать целостное представление о возможностях вычислительной техники,
современном ее состоянии и тенденциях развития.
Сформировать умение ставить задачу для решения ее на компьютере, а также
реализовать ее средствами имеющейся вычислительной техники.
Классифицировать типы данных и программы для их обработки на
компьютере с целью корректного отображения реальных процессов и
потоков данных на язык компьютера.
Сформировать умение решать прикладные задачи средствами языков
программирования высокого уровня, в том числе осуществлять не только
решение, но и постановку задач для реализации их на компьютере.
Дать методику, позволяющую свободно изучать и применять новые
программные системы.
Развить логическое и алгоритмическое мышление.
При изучении курса по возможности отсутствует привязка к конкретным
программным системам. В качестве основного алгоритмического языка
выбран Паскаль, как наиболее распространенный и типичный для
современных языков высокого уровня. Однако его изучение не является
самоцелью, так как в процессе дальнейшего обучения и, тем более,
практической деятельности может использоваться другой алгоритмический
язык.
Поэтому
большое
внимание
уделяется
тем
алгоритмическим
инвариантам, которые почти наверняка будут отображены в современных
языках программирования.
НАЧАЛЬНЫЕ ТРЕБОВАНИЯ К ОСВОЕНИЮ ДИСЦИПЛИНЫ
Предполагается, что к началу обучения студент на среднем уровне обладает
знаниями
и
навыками
общения
с
ЭВМ
и
программирования,
соответствующими целям и задачам курса “Информатики”, изучаемого в
старших классах средней школы.
ТРЕБОВАНИЯ УРОВНЮ ОСВОЕНИЮ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ
По окончанию изучения курса студент должен:
свободно ориентироваться в назначении и возможностях программ для
компьютера, уметь выбирать программные инструменты для реализации
простейших задач в своей предметной области;
свободно осуществлять реализацию, ввод, редактирование и отладку
программ на выбранном языке программирования;
иметь представление о классах задач, реализуемых в среде Паскаль, освоить
типовые алгоритмы поиска, сортировки, вычисления сумм и рядов;
уметь формализовать и осуществить реализацию алгоритмов; научится
проектировать, отлаживать и тестировать программы
иметь представление о тенденциях развития программного и аппаратного
обеспечения ЭВМ, уметь самостоятельно осваивать новые программные
продукты.
СТРУКТУРА ДИСЦИПЛИНЫ
Вид учебной работы
Общая трудоемкость дисциплины
Лекции
Лабораторные занятия
Практические занятия
Всего самостоятельная работа
В том числе: курсовое проектирование
Другие виды(РГЗ, рефераты и др.)
Вид итогового контроля (экзамен, зачет)
Всего часов
198
108
36
90
Распределение по семестрам
3
4
99
99
36
36
18
18
45
45
зачет
экзамен
Содержание теоретической части курса(72 часа)
№
пп
Наименование темы, краткое содержание
3 семестр
1
Информатика. Цели и задачи.
Вычислительная система, компьютер. История развития вычислительной техники и
информационных технологий.
2
Основы обработки данных.
Понятие информации. Общая характеристика процессов сбора, передачи,
обработки и накопления информации. Системы счисления. Кодирование данных в
ЭВМ. Представление числовой и символьной информации в машине и основы
машинной арифметики
3
Аппаратная конфигурация персонального компьютера. Программное обеспечение
персонального компьютера.
Технические и программные средства реализации информационных процессов.
Схема фон-Неймана. Архитектура ПК. Материнская плата, микропроцессоры, ОЗУ,
ПЗУ, внешние запоминающие устройства, организация хранения данных на дисках.
Внешние устройства, устройства ввода-вывода. Программные средства реализации
информационных процессов. Классификация программного обеспечения ПК.
Системное, прикладное программное обеспечение. Служебные программы. Типы и
назначение ОС. Классификация интерфейсов ОС. Характеристика интерфейсов ОС.
Особенности интерфейса ОС Windows.
4
Многофункциональные системы обработки текстов.
Характеристики и возможности. Создание и редактирование многостраничных текстов
сложной структуры. Графические возможности систем. Создание табличных форм.
Использование деловой и научной графики для данных, заданных в виде таблиц.
Задание математических формул Технология использования многофункциональных
редакторов текстов.
5
Технологии обработки информации и решение задач средствами электронных таблиц.
Базы данных.
Модели решения функциональных и вычислительных задач.
Представление данных. Организация вычислений в среде электронных таблиц.
Реализация простых расчетных задач. Построение графиков и диаграмм. Рекурсивные
алгоритмы. Реализация обработки связанных данных. Программирование в среде
электронных таблиц.
6
Локальные и глобальные сети ЭВМ
Типы и организация локальных сетей. Особенности организации работы сети Internet.6
7
Информационная безопасность
Основы защиты информации и сведений, составляющих государственную тайну;
Распределение по
видам
Лекц
СР
4
4
4
4
4
4
4
4
6
4
6
4
6
№
пп
Наименование темы, краткое содержание
Распределение по
видам
Лекц
СР
8
методы защиты информации. Компьютерные вирусы.
Моделирование как метод познания.
Модели решения функциональных и вычислительных задач.
4
6
Математические пакеты.
Характеристика
и возможности.
Выполнение
символьных алгебраических
преобразований. Дифференцирование, интегрирование. Матричные вычисления.
Построение и исследование
графиков.
Итого
4 семестр
1
Парадигмы программирования.
Процедурное,
объектно-ориентированное,
функциональное
и
логическое
программирование.
История
развития
языков
программирования.
Языки
программирования высокого уровня; Назначение языков программирования.
2
Основы технологии программирования.
Программное обеспечение и технологии программирования.
3
Алгоритмизация и программирование.
Синтаксис и семантика программы. Структура программы на языке Паскаль. Понятие
синтаксиса и семантики. Представление данных в алгоритмических языках. Простейшие
типы данных: INTEGER, REAL.
4
Алгоритмы решения вычислительных задач, использующих выражения и ветвления
Операторы присваивания, ввода, вывода, условные операторы. Этапы разработки
программы: проектирование и реализация. Оператор ветвления. Его синтаксис и
семантика.
5
Операторы повторения.
Назначение операторов цикла. Различные типы циклов. Типовые алгоритмы,
реализуемые с помощью циклов: суммирование рядов, вычисление произведений и пр.
6
Алгоритмы решения вычислительных задач, использующих операторы повторения.
4
9
36
45
4
6
4
6
4
6
4
5
4
5
4
5
Структурные типы данных
Назначение и структура массивов. Описание массивов. Типовые задачи на
использование массивов (ввод данных, вставка/удаление элементов, поиск
максимума/минимума).
Алгоритмы решения вычислительных задач на одномерные и двухмерные массивы.
Структура программ поиска и сортировки. Поиск “со сторожем”, двоичный поиск.
Методы сортировки данных – алгоритмы “пузырька”, обмена и вставки.
Арифметические операции над матрицами и векторами. Сложение матриц и векторов,
умножение матриц, умножение матрицы на вектор. Скалярное произведение векторов
Процедуры и функции.
Описание процедур. Область действия имён. Локальные и глобальные параметры.
Процедуры и функции. Способы передачи параметров.
Итого
Итого по дисциплине
4
4
4
4
4
4
36
72
45
90
9
7
8
9
Содержание практической части курса (36 часов)
Компьютерный практикум
1. Редакторы текстов (2 часов)
Создание и редактирование многостраничных текстов сложной структуры.
2. Электронные таблицы (2 часа)
Решение простой вычислительной задачи в среде Excel. Использование
формул.
3. Электронные таблицы (2 часа)
Решение задачи в среде Excel. Построение табличных значений функции.
Использование диаграмм и графиков.
4. Электронные таблицы (2 часа)
Решение задачи в среде Excel. Построение табличных значений функции.
Использование диаграмм и графиков.
5. Internet (2 часа)
Работа в Web-браузере. Организация поиска информации в сети Интернет.
6. Разработка простейшей HTML – страницы (2 часа)
7. Математические пакеты (2 часов)
Организация
работы
в
виртуальных
лабораториях
через
Интернет.
Использование WolframAlpha для выполнения символьных математических
преобразований.
8. Алгоритмизация и программирование (2 часа)
Алгоритмы.
Использование
визуальной
среды
программирования
programmm.me. Реализация программ с использованием визуальной среды
программирования.
9. Программирование в среде Free Pascal. Выражения и ветвления (4 часа)
Интегрированные
среды
программирования.
Универсальная
среда
программирования Free Pascal. Ввод, трансляция и выполнение программы.
Методы отладки. Реализация программ с целочисленными и вещественными
данными,
использующих
операторы
ввода/вывода,
присваивания
и
ветвления.
10. Программирование в среде Free Pascal. Решение задач на тему
«Выражения и ветвления»(4 часа)
11. Программирование в среде Free Pascal. Операторы повторения (4 часов).
Организация итеративных вычислений. Различные типы циклов. Вычисление
сумм и произведений.
12. Программирование в среде Free Pascal. Структурированные типы данных
(4 часов)
Реализация программ с использованием одномерных массивов. Сортировка и
поиск данных. Реализация программ с использованием двумерных массивов.
Заполнение массивов. Реализация математических операций с матрицами и
векторами.
13. Программирование в среде Free Pascal. Процедуры и функции (4 часов)
Нисходящая и восходящая технология разработки программ. Решение задач
на процедуры и функции.
Контроль достижения целей курса
Тестирование
Тест 1 Программное и аппаратное обеспечение компьютера
Тест 2 Сетевые и Web-технологии
Тест 3 Безопасность информационных систем
Тест 4 Алгоритмизация и программирование.
Индивидуальные домашние задания
ИДЗ 1. Системы счисления
ИДЗ 2 Решение задач по теме «Выражение и ветвление».
ИДЗ 3 Решение задач по теме «Циклы».
ИДЗ 4 Решение задач по теме «Массивы».
Вопросы к экзамену
1.
Информационные технологии
как фундаментальная наука и как
прикладная дисциплина.
2.
Понятие информации и ее свойства.
3.
Непрерывная и дискретная формы представления информации.
Количество и единицы измерения информации.
4.
Виды информации. Кодирование информации.
6.
История развития компьютерной техники, поколения ЭВМ и их
классификация.
7.
Структурная схема современного компьютера. Принцип программного
управления. Машина Фон-Неймана.
8.
Микропроцессор, его структура и краткая характеристика основных
элементов.
9.
Периферийные устройства компьютера и их основные характеристики.
10.
Булевы функции. Формы представления булевых функций. Таблицы
истинности.
11.
Логические элементы. Понятие о технологических типах логик.
12.
Последовательные и комбинированные логические схемы. Триггеры,
счетчики.
13.
Классификация программного обеспечения.
14.
Операционные системы (ОС). Назначение и состав ОС.
15.
Прикладное программное обеспечение. Классификация, примеры.
16.
Графическая среда Windows. Особенности представления информации
в среде. Средства организации работы пользователя.
17.
Многофункциональный текстовый редактор Word. Типы объектов,
включаемые в документ Word.
18.
Основные принципы функционирования электронных таблиц.
19.
Модель ячейки электронной таблицы.
20.
Типы расчетов в электронных таблицах
21.
Назначение и функциональные возможности математических пакетов.
22.
Структура программы на языке Паскаль.
23.
Целые и вещественные типы данных. Операции над ними. Правила
преобразования и совместимости типов.
24.
Операторы присваивания, ввода и вывода.
25.
Логический тип данных.
26.
Условный оператор.
27.
Операторы повторения в языке Паскаль.
28.
Цикл с параметрами.
29.
Цикл с предусловием.
30.
Цикл с постусловием.
31.
Труктурированные типы данных: одномерные массивы. Операции
ввода и вывода. Заполнения элементов массива случайным образом.
32.
Операции
над
массивами:
перебор,
перестановка
элементов,
копирование массива целиком.
33.
Операции над массивами: удаление и вставка элементов массива.
34.
Вычисление суммы ряда для заданного числа членов и с заданной
точностью.
35.
Разбиение числа на цифры.
36.
Алгоритм Эвклида нахождения наибольшего общего делителя двух
чисел.
37.
Поиск первого встретившегося и последнего встретившегося элемента
в неупорядоченном массиве.
38.
Сортировка пузырьком.
39.
Сортировка обменом.
40.
Сортировка вставками.
41.
Поиск элемента в упорядоченном массиве (двоичный поиск).
42.
Структурированные типы данных: двумерные массивы. Типовые
операции над массивами.
43.
Двумерные массивы. Арифметические операции над матрицами и
векторами.
тематика и перечень курсовых работ и рефератов
Рефераты
1. Передача, преобразование, хранение и использование информации в
технике.
2.
Язык
как
способ
представления
информации,
двоичная
форма
представления информации, ее особенности и преимущества.
3. Принципы представления данных и команд в компьютере.
4. Принцип автоматического исполнения программ в ЭВМ.
5. Операционные системы семейства UNIX.
6. Построение и использование компьютерных моделей.
7. Телекоммуникации, телекоммуникационные сети различного типа, их
назначение и возможности.
8. Мультимедиа технологии.
9. Информатика в жизни общества.
10. Информация в общении людей.
11. Подходы к оценке количества информации.
12. История развития ЭВМ.
13. Современное состояние электронно-вычислительной техники.
14. Классы современных ЭВМ.
15. Вредное воздействие компьютера. Способы защиты.
16. Суперкомпьютеры и их применение.
17. Ноутбук – устройство для профессиональной деятельности.
18. Карманные персональные компьютеры.
19. Основные типы принтеров.
20. Сканеры и программное обеспечение распознавания символов.
21. Сеть Интернет и киберпреступность.
22. Криптография.
23. Компьютерная графика на ПЭВМ.
24. WWW. История создания и современность.
25. Проблемы создания искусственного интеллекта.
26. Поиск информации в Интернет. Web-индексы, Web-каталоги.
27. Компьютерная грамотность и информационная культура.
30. Устройства ввода информации.
Учебно-методическое обеспечение дисциплины
Основная литература
1.
В. В. Трофимов. Информатика. Учебник для вузов. 911 с. М: Юрайт –
2010.
2. В.В. Глухов. Основы информационных технологий. Уч. пособие. 316 с. Влк., Изд-во ДВГУ. – 2010 г.
3. Кригер А. Б. Управление информационными системами. Уч. пособие. 257
с. Вл-к Изд-во ДВФУ – 2011 г.
4. Т. В. Бураго. Информатика. Метод. указания. 74 с. Вл-к., Изд-во ТГЭУ –
2010 г.
5. Информатика Учебник. 3-е изд-е переработанное /под ред. Макаровой Н.В.
- М.: Финансы и статистика, 2004 - 768 с.
5.
Фигурнов В.Э. IBM PC для пользователя. - М.: Финансы и статистика.
2005. - 520 с.
6.
Акулов О.А., Медведев Н.В. Информатика: базовый курс. –М.: Омега,
2004. –551 с
7.
Е. Андреева, И. Фалина. Системы счисления и компьютерная
арифметика. Учебное пособие. - М: Бином.,2004 г.- 256 стр.
8.
Окулов С. Основы программирования (2-е издание). - М: "Бином.
Лаборатория знаний", 2005. - 440 стр.
9.
Фаронов В. Turbo Pascal. Учебное пособие. – СПб: Питер, 2007. – 367 с.
10.
Моргун. Программирование на языке Паскаль. Основы обработки
структур данных. - "Вильямс", 2005 г. - 576 с.
11.
Программирование на языке Паскаль: задачник/ под ред. Усковой О.Ф.
– СПб: Питер, 2005. – 336 с.
Дополнительная литература
1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика.. - М.: ACADEMA,
2004 - 800 с.
2. Безручко В.Т. Практическая работа в Word 2000. - М.: Финансы и кредит,
2004. -428с.
3. Лавренов С.М. Excel: Сборник примеров и задач. - М. Финансы и
статистика, 2000. - 336 с.
4. Дьяконов В. Mathematica 4.1/4.2/5.0 в математических и научнотехнических расчетах - СОЛОН-Пресс, 2004
5. Потопахин В.В. Turbo Pascal. Решение сложных задач. – СПб: «BHVСанкт-Петербург», 2006. – 208 с.
6. Адаменко А. Pascal на примерах из математики.- СПб: «BHV-СанктПетербург», 2005. -416 с.
7. Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. – М:
Наука и техника, 2007. – 544 с.
8. Кулямин В. Технологии программирования. Компонентный подход.
Учебное пособие. –М: "ИНТУИТ.РУ", 2007 г. - 463 с.
Программное обеспечение
1.
Операционная система Windows.
2.
Microsoft Office.
3.
Wolfram Mathematica.
4.
Pascal ABC или FreePascal.
5.
Обучение алгоритмам программирования (programmm.me)
Интернет-ресурсы
1. Мациевский С.В., Ишанов С.А., Клевцур С.В. Информатика: Учебное
пособие. - Калининград: Изд-во КГУ, 2003. - 140 с.
http://window.edu.ru/resource/039/24039
2. Толстяков Р.Р. Информатика: учебное пособие / Р.Р. Толстяков, Т.Ю.
Забавникова, Т.В. Попова. - Тамбов: Изд-во ФГБОУ ВПО "ТГТУ", 2011. - 112
с.
http://window.edu.ru/resource/540/76540
3. Терехов А.В., Селезнев А.В., Чернышов В.Н., Рак И.П. Информатика:
Учебное
пособие.
Тамбов:
-
Изд-во
ТГТУ,
2004.
-
100
с.
http://window.edu.ru/resource/016/22016
Материально-техническое обеспечение дисциплины (модуля)
Для проведения лекционных и практических занятий требуется аудитория,
вместимостью 1 учебная группа, оснащенная доской под мел или маркер.
Желательно,
чтобы
аудитория
была
оснащена
мультимедийными`
средствами (компьютер и проектор), а также доступом в Интернет.
Проведение
лабораторного
практикума
требует
дисплейного
класса,
вместимостью не менее 15 рабочих мест, оборудованного стандартными
комплектами ПЭВМ. Сложившаяся практика, а также перспективы развития
делают желательным использование ЭВМ класса IBM PC. Допустимо
использование IBM PC со следующими характеристиками:
-
операционная система Windows;
-
процессор Pentium;
-
оперативная память не менее 2 ГБ;
-
жесткий
диск,
размер
которого
достаточен
для
размещения
операционной системы и приложений;
-
стандартные устройства ввода (клавиатура, манипулятор мышь).
Дисплейный класс должен быть оборудован доской (под мел или
маркер).Для проведения аудиторных занятий с применением интерактивных
технологий
необходима
аудитория,
оснащенная
мультимедийными
средствами (компьютер и проектор), а также доступом в Интернет.
Министерство образования и науки Российской федерации
Филиал государственного образовательного учреждения высшего профессионального образования
«Дальневосточный государственный технический университет
(ДВПИ имени В.В.Куйбышева)» в г. Артеме
КОНСПЕКТЫ ЛЕКЦИЙ
по дисциплине «Информатика»
Специальность 280103.65 – Защита в чрезвычайных ситуациях
специализация – Гражданская защита
г. Артём
2010г.
Лекция 1 (2 часа)
История развития информационных технологий
Информатика – сводное название областей науки и техники, связанных с
использованием ВТ и современных средств коммуникации.
Предмет курса – использование ВТ для решения профессиональных и учебных
задач.
Компьютеры, средства связи
Данные (информация)
Как работать?
Алгоритмы, программы
Сигналы, данные, информация, информационный процесс.
Как представить и сохранить?
Как составить и выполнить?
Информация (сведения) – базовое неопределяемое понятие (наряду с материей
и энергией), соответствует наличию порядка, организации в какой–то области,
и отсутствию неопределенности. Противоположное понятие – энтропия
(беспорядок)
Увеличение информации
Полный
хаос
Строгий
порядок
Рост энтропии
(неопределеннос
ть)
Данные – запись информации в определенном виде, на определенном носителе
(информация = содержание данных).
Сигнал (сообщение) – передача данных (данные=зарегистрированный сигнал).
Если ситуацию можно полностью выяснить, задав N вопросов, требующих
ответа «да» или «нет», описание ситуации содержит информацию объемом N
бит (binary digit). Если в ситуации возможно N равновероятных вариантов, ее
информативность в битах log2N. Если в ситуации возможно N вариантов с
вероятностями p1,…,pN, ее информативность в битах –(p1log2 p1+…+ pNlog2 pN).
Объем информации может быть и целым и нецелым действительным числом.
Знание – информация, как описание объектов, их свойств и связей. Включает
компоненты – декларативный (само описание) и процедурный (правила
действия, операции).
Семантическая емкость информации (знаний) – ее смысл, содержание общие
для различных форм представляющих информацию данных (форм записи).
19
Адекватность или достоверность знаний (информации) – степень их
соответствия реальности*.
Свойства информации включают также полноту (достаточность для данных
целей), доступность (возможность получения и использования), актуальность
(соответствие текущим задачам и ситуации), объективность–субъективность
(степень искажений, внесенных участниками и элементами информационного
процесса)
Основные операции с данными.
Информация функционирует в информационном процессе, включающем
источник (человек, документ, СМИ и т.д), передатчик, информационный канал
(способ передачи), приемник и получателя. Информационные процессы могут
связывать между собой людей, живые организмы и их элементы, компьютеры и
другие технические устройства. Функции (цели использования) информации в
обществе могут быть познавательными, коммуникативными, управленческими.
Основные операции с данными включают: генерацию (производство),
преобразование (фильтрация, группировка, перенос на другой носитель,
перекодировка, формализация), транспортировку (передачу, распространение,
прием), хранение (организацию, накопление, архивацию), поиск, обработку и
использование (проверка, анализ, вывод следствий, выбор, принятие решений)
Основные этапы развития информатики и ВТ.
Информатика объединяют методы и средства реализации информационных
процессов. Их развитие включает этапы: дописьменный, письменности,
книгопечатания (механический), электромеханический (телеграф, телефон,
пищущая машинка и т.д.), электронный (компьютеры и информационно–
вычислительные сети).
Развитие ВТ – смена поколений компьютеров:
Поколение
Первое (середина 40-х
– конец 50-х)
Элементная база
Электронные лампы
Второе (конец 50-х –
середина 60-х)
Третье (середина 60-х
– конец 70-х)
Полупроводниковые
элементы
Интегральные
схемы,
многослойный печатный
монтаж
Микропроцессоры,
большие интегральные
схемы
Четвертое (конец 70-х
– по настоящее время)
Характеристики
Большие габариты и энергопотребление, низкие
быстродействие
и
надежность,
программирование в кодах.
Лучше по всем параметрам, программирование
на алгоритмических языках
Качественное улучшение всех параметров,
удаленный доступ
Массовое использование ПК,
глобальные сети, внедрение
документооборота
локальные и
электронного
Иногда эти понятия различают и понимают более узко, включая в адекватность степень соответствия
ситуации и намерениям источника, а в достоверность степень подтвержденности, гарантированности данных.
*
20
Перспектива
Микропроцессорная революция в технических и биологических системах,
распределенная обработка данных, интеграция социальной памяти на базе
компьютерных сетей, медиатехнологий и систем связи, безбумажная
информатика,
использование
систем
искусственного
интеллекта,
нанотехнологии.
Единицы представления, измерения и хранения данных.
В памяти компьютера данные хранятся в виде дискретных единиц (знаков),
закодированных цифрами. Минимальная единица хранения – 1 бит (binary
digit), элемент памяти (регистр, ячейка), который может переключаться между
2-мя состояниями, обозначаемыми 0 и 1 (может быть реализован на различных
физических принципах – гидравлическом, механическом, электрическом,
электронном и т.д.).
Любая информация в памяти занимает целое число бит.
В 1 бите может храниться признак принимающий 1 из 2-х значений («ж», «м»).
для признака с 3-мя значениями («ребенок», «средний возраст», «пожилой») – 2
бита. Всего 2 бита, позволяют хранить признак с 4-мя значениями («ребенок»,
«подросток», «средний возраст», «пожилой»), N бит с 2N. Для хранения кода
символа текста (66 знаков кириллицы, 52 латиницы, 10 цифр, ≈20
дополнительных) требуется 8 бит=1 байт.
Единицы памяти: байт(б)=8бит,полуслово=2б(16бит),слово=4б(32бита),двойное
слово=8б(64бита), Кбайт=1024(210)б, Мбайт=1024Кб(220б), Гигобайт=1024Мб
(230б), Терабайт=1024ГБ(240б).
Кодирование текстовых (символьных) данных
Отличия – место под 1 знак, таблица кодов.
1б (8 бит на знак), 256 возможных знаков:
КОИ–8 (код обмена информацией), ASCII (American
Standard Code for
Information Interchange), введенный ANSI (American National Standards Institute).
Недостаток – только один национальный алфавит. Для латинских букв 1 общая
таблица кодировки, для русских букв 5 таблиц кодировки: CP866 (для MS
21
DOS), CP1251 (для MS Windows), ISO 8859–5 (автор – International Standards
Organization), Mac (для Mac OS компьютеров Apple).
2б (16 бит на знак), 65 536 возможных знаков:
UNICODE (код обмена информацией), ASCII (American
Standard Code for
Information Interchange), используется в MS Windows, MS Office с 1997.
Основные
национальные
алфавиты
плюс
математические,
химические,
музыкальные и т.п. символы в единой кодировке.
При кодировке 1б на знак обычный текст (файл .txt) из 100 знаков занимает
100б или 800 бит (текст .doc содержит еще сведения об оформлении). Средняя
текстовая страница из 50 строк по 50 символов занимает около 2,5 Кб (1Мб
вмещает около 400, а 1Гб – около 400 000 страниц).
Кодирование графической информации.
Используется для построения изображений на кране и при печати.
3 способа кодирования: растровая, векторная, фрактальная графика.
Растровая графика: изображение из точек – пикселей (picture element), для
каждой из которых нужно задать цвет и яркость.
При индексном кодировании в каждой точке один из 256 цветов, хранится
индекс (номер) цвета – 1б на точку.
Качественное черно–белое изображение с полутонами («серое») – 256 уровней
(градаций) яркости в точке 1б на точку.
Полноцветное изображение (режим реального цвета, True Color) – в точке
сумма 3 цветов RGB (Red–Green–Blue) для каждого 256 градаций яркости – 3б
на точку (иногда использют 4 цвета – 4б на точку).
Режим высококачественного цвета ( High Color) – 2б на точку.
Глубина цвета – число бит на каждую точку. При уменьшении числа цветов в
палитре от 22k до 2k глубину цвета и объем файла можно уменьшить в 2 раза.
Векторная графика: изображение не из точек, а из объектов – линий (отрезки,
дуги и т.п.) и ограниченных ими фигур. Линии и фигуры задаются уравнениями
22
и свойствами (цвет и начертание линии, цвет и способ заполнения фигуры).
Занимает меньший объем памяти, который зависит от числа и сложности
объектов. Построение по данным требует специальных расчетов.
Фрактальная графика – изображение не из линий, а целиком строится по
специальным формулам. Позволяет получать наиболее сложное и реалистичное
изображение. Используется в играх и других мультимедийных системах.
Кодирование звуковой информации
Используется частотная модуляция звука – разложение звуковой волны на
синусоиды, описывающие базовые колебания (гармоники) или таблично–
волновой синтез звука из заранее заготовленных образцов (сэмплов).
23
Лекция 2 (2 часа)
Аппаратное обеспечение информационных процессов
Классификация ЭВМ
Массовость использования
персональных компьютеров (ПК), не должна
заслонить использование больших, мощных вычислительных систем. В
настоящее время немногие государства могут производить супер-ЭВМ.
Рассмотрим
схему
классификации
компьютеров,
исходя
из
их
производительности, размерности и функционального назначения.
ЭВМ
Супер-ЭВМ
Большие ЭВМ
Мини-ЭВМ
Мини-супер
МикроЭВМ
Многопользовательские
Схема 1. Классификация ЭВМ.
Встроенные
Мощные -супер
Рабочие станции
Персональные
Архитектура ЭВМ
Классическая структура ЭВМ фон Неймана.
Архитектура ЭВМ – это наиболее общие принципы построения ЭВМ,
реализующие программное управление работой и взаимодействием основных
ее функциональных узлов.
Общие принципы построения ЭВМ:
Структура памяти ЭВМ;
Способы доступа к памяти и внешним устройствам;
Возможность изменения конфигурации компьютера;
Система команд;
24
Форматы данных;
Организация интерфейса.
Основы учения об архитектуре ЭВМ заложил американский математик Джон
фон Нейман. Он выдвинул как основополагающие принципы логического
устройства ЭВМ, так и предложил структуру, которая применялась в ЭВМ 1
и 2 поколений.
Внешнее запоминающее устройство
ПРОЦЕССОР
Устройство
ввода
Арифметикологическое
устройство
(АЛУ)
Устройство
управление
(УУ)
Устройство
ввода
Оперативное запоминающее устройство (ОЗУ)
Схема 2.Классическая архитектура ЭВМ, построенная на принципах фон
Неймана.
направление потоков информации;
направление управляющих сигналов от процессора к остальным узлам ЭВМ.
Разработанные фон Нейманом основы архитектуры вычислительных устройств
– фундаментальны.
Большее число вычислительных машин
- фон-
неймановские машины.
Совершенствование и развитие внутренней структуры ЭВМ
Классическая структура ЭВМ свойственна для ЭВМ 1 и 2 поколений. В ЭВМ
3-его поколения использовались интегральные схемы, что значительно
увеличило быстродействие.
Процессор,
руководивший работой внешних
устройств, большую часть времени простаивал в ожидании информации из вне
25
– это снижало эффективность работы. Происходит освобождение процессора
от этих функций. Их принимают на себя такие схемы:
каналы обмена;
процессоры ввода-вывода;
периферийные процессоры.
В последнее время их называют
- контролеры внешнего устройства. С
использованием контролеров для связи между отдельными функциональными
узлами ЭВМ используется общая шина – магистраль.
Шина состоит из трех частей:
шина данных, по которой передается информация;
шина адреса, определяющая, куда передаются данные;
шина управления, регулирующая процесс обмена информацией.
26
Центральный
процессор
Устройство
ввода
Видеопамять
Данных
Адреса
управления
ШИНА
К
Память
К
К
К
К
К
Внешнее
запоминающее
устройство
Устройство
ввода
Устройство
вывода
Внешнее
запоминающее
устройство
Устройство
вывода
Схема 3. Шинная архитектура ЭВМ.
Различают также IBM PC-совместимые микрокомпьютеры (читается Ай-Би-Эм
Пи-Си) и IBM PC-несовместимые микрокомпьютеры. В конце 1990-х годов
IBM
PC-совместимые
микрокомпьютеры
составляли
более
девяноста
процентов мирового компьютерного парка. IBM PC был создан американской
фирмой Ай-Би-Эм (IBM) в августе 1981, при его создании был применен
принцип открытой архитектуры, который означает применение в конструкции
при сборке компьютера готовых блоков и устройств, а также стандартизацию
способов соединения компьютерных устройств.
Принцип открытой архитектуры способствовал широкому распространению
IBM PC-совместимых микрокомпьютеров-клонов. Их сборкой занялось
множество фирм, которые в условиях свободной конкуренции снизили в
несколько раз цены, энергично внедряли в производство новейшие технические
достижения.
Пользователи
в
свою
27
очередь
получили
возможность
самостоятельно модернизировать свои микрокомпьютеры и оснащать их
дополнительными устройствами сотен различных производителей.
Единственный из IBM PC-несовместимых микрокомпьютеров, получивший
относительно широкое распространение, — компьютер Макинтош (Macintosh).
Начиная с 1980-х годов микрокомпьютеры Макинтош американской фирмы
Эпл (Apple) составляли достойную конкуренцию IBM PC-совместимым
микрокомпьютерам, так как, несмотря на свою дороговизну, они обеспечивали
пользователю наглядный графический интерфейс, были значительно проще в
эксплуатации и обладали большими возможностями. Начиная с 1990-х годов
разница между возможностями Макинтошей и IBM PC все более нивелируется.
Последние были оснащены операционными системами с графическим
интерфейсом (Windows, OS/2), многочисленными рассчитанными на них
прикладными программами. В настоящее время Макинтоши удерживают
лидирующие позиции лишь на рынке настольных издательских систем.
Аппаратное обеспечение информационных технологий
Компьютер
–
универсальное
многофункциональное
электронное
программно-управляемое устройство для работы с информацией – обработки,
хранения и обмена информацией с внешними объектами.
Персональный компьютер имеет четыре типа устройств:
устройства ввода информации: клавиатура, мышь, сканер, модем;
устройства
вывода
информации:
дисплей,
принтер,
(графопостроитель);
устройство для обработки информации – микропроцессор;
устройства памяти – внутренняя и внешняя память.
Основные характеристики ПК
Основными характеристиками конкретного компьютера являются:
быстродействие;
емкость оперативной памяти;
емкость жесткого магнитного диска (ЖМД) – винчестера и др.
28
плоттер;
( Термин «винчестер» возник в 1973г. Из жаргонного названия первой модели
жесткого диска емкостью 16 Кбайт, имеющего 30 дорожек и 30 секторов – это
совпало с калибром 30/30 охотничьего ружья «Винчестер».)
Важными характеристиками компьютера являются:
тип видеосистемы – монитора и видеоадаптера;
тип принтера (матричный, струйный, лазерный; черно-белый или цветной);
аппаратная и программная совместимость с другими ПК;
совместимость программного обеспечения сверху вниз (каждый новый
процессор «понимает» все команды своих предшественников;
открытая архитектура – возможность дополнения имеющихся аппаратных
средств новыми компонентами без замены старых.
Рассмотрим характеристики более подробно.
1. Быстродействие компьютера можно оценить, зная тактовую частоту и
разрядность микропроцессора.
Тактовая частота определяется частотой генератора тактовых импульсов. Она
равна количеству тактов в секунду и измеряется в мегагерцах (МГц). Частота
в 1 МГц соответствует миллиону тактов в секунду. Процессоры ПК могут
иметь частоты 266, 400, 700, 1000 МГц и более. Процессоры Pentium IV
выпускаются с тактовой частотой более 2 МГц.
Разрядность
–
это
количество
битов,
которое
воспринимается
микропроцессором как единое целое (или максимальное количество разрядов
двоичного числа, над которым может выполняться одна машинная операция) –
4, 8, 16, 32, 64, т.е. целая степень числа 2. Чем больше разрядность, тем
больше производительность (скорость работы) компьютера.
2. Емкость оперативной памяти – измеряется в мегабайтах. При оперативной
памяти менее 8 мегабайт, многие современные прикладные программы либо
совсем не работают, либо работают очень медленно.
3. Емкость жесткого диска.
29
Жесткий диск – это кружок из немагнитного материала (алюминий, стекло,
керамика), на одну или обе поверхности нанесены тончайший магнитный слой.
Запись и чтение информации осуществляется блоком магнитных головок. На
диске имеется система не делимых сегментов информации – кластеров,
входящих в магнитную дорожку – окружность. Совокупность таких дорожек
с одним диаметром окружности на нескольких дисках образует цилиндр. Блок
головок считывания/записи быстро устанавливается на нужный цилиндр, а
переключением головок быстро выбирается нужная дорожка. Накопитель
может содержать несколько сцепленных жестких дисков,
вращающихся со скоростью до 10000 оборотов в минуту.
30
постоянно
Лекция 3 (2 часа)
Программное обеспечение информационных технологий
Классификация программного обеспечения.
Для реализации информационных технологий необходимы две составляющие:
• аппаратное обеспечение (Hardware);
• программное обеспечение (Software).
Программное обеспечение — совокупность программ обработки данных и
необходимых для их эксплуатации документов.
Программа — упорядоченная последовательность команд (инструкций)
компьютера для решения задачи.
Классификация программных продуктов
Программные продукты для обеспечения информационной технологии по
сфере их использования делятся на три больших класса:
•
системное программное обеспечение (System Software) — совокупность
программ и программных комплексов для обеспечения работы компьютера
и сетей ЭВМ;
• инструментарий технологии программирования — совокупность программ и
программных комплексов для разработки, отладки и внедрения создаваемых
программных продуктов;
•
прикладное программное обеспечение (пакеты прикладных программ) —
комплекс взаимосвязанных программ для решения задач в конкретной
предметной
области.
Прикладные
программы
являются
самым
многочисленным классом программных продуктов.
Системное программное обеспечение - предназначено для:
обеспечения надежной и эффективной работы компьютера и вычислительной
сети;
создания операционной среды функционирования других программ;
проведения
диагностики
и
профилактики
вычислительных сетей;
31
аппаратуры
компьютера
и
выполнения
вспомогательных технологических операций (копирования,
архивирования,
восстановления
файлов программ и баз данных и т. д.).
Системное программное обеспечение подразделяется на базовое и сервисное
программное обеспечение.
Базовое программное обеспечение — минимальный набор программных средств,
обеспечивающих работу компьютера; к нему относятся операционные
системы и операционные оболочки.
Сервисное программное обеспечение — программы и программные комплексы,
которые расширяют возможности базового программного обеспечения и
организуют
более
удобную
среду
работы
пользователя.
Сервисное
программное обеспечение включает программы:
диагностики работоспособности компьютера;
обслуживания сети;
обслуживания дисков и архивирования данных (архиваторами называют
программы, которые осуществляют упаковку и распаковку файлов);
антивирусные и др.
Прикладное программное обеспечение
Прикладное программное
обеспечение
(пакеты
прикладных программ) —
комплекс взаимосвязанных программ для решения! задач в конкретной
предметной области.
Приложение
(прикладная
программа)
—
компьютерная
программа,
предназначенная для выполнения конкретного вида paботы: подготовки
текстов, создания электронных таблиц, рисунков, диаграмм и т. п.
Документ — объект обработки приложения.
Пакеты прикладных программ являются самым многочисленным
программных
продуктов,
областей применения
что
классом
обусловлено большим разнообразием
компьютерной техники. По типам предметных
областей, функциям и комплексам реализуемых с их помощью задач пакеты
прикладных программ (ППП) подразделяются на несколько больших групп
32
Прикладное программное обеспечение
Проблемно-ориентированные
(1С Бухгалтерия, RS-Bank)
Метод о-ориентированные
MathLAB)
Интеллектуальные системы
(Eros, GURU)
(MathCAD,
ПП
автоматизированного
проектирования (AutoCAD)
Офисные ПП
(Internet Explorer, MS Outlook, Promt)
Издательские системы
(Page Maker, Quark Xpress, Corel)
Состав диска
Диск физический
Дорожка
Сектор
Диск логический
С
D
E
….
Папка
Файл
Кластер
первый
второй
сектор
1
2
..
Последний
….
Последний
Средства мультимедиа
(Multimedia Viewer, 3D Studio)
ПП общего назначения
(Word, Excel, Access, Photoshop)
33
Папка. Память любого диска может быть разбита на поименованные участки,
называемые каталогами или папками. Папка предназначена для группировки
данных и не позволяет запутаться в большом количестве файлов. Намного
легче сначала выбрать одну из 10 групп, а затем один из 10 файлов, чем
производить выборку одного файла из 100. Для того чтобы раскрыть папку,
делают двойной щелчок по её значку. В ОС Windows имеется специальная
папка, называемая корзиной, в которую помещаются файлы после их удаления.
До тех пор пока корзина не будет очищена, удалённый файл можно
восстановить.
Диск (том) - долговременная память компьютера, выполнена в виде магнитных
(МД) или лазерных дисков. Каждый диск имеет имя в виде одной латинской
буквы. Чаще всего используются следующие буквы : A , B - сменные МД или
дискеты C , D , E .... - встроенный в компьютер МД ( винчестер) или
лазерные
диски.
Перед
использованием
каждый
диск
форматируют.
Форматированием диска называется процесс разбиения его поверхности на
сектора и дорожки. Одна дорожка состоит из нескольких секторов. Таким
образом, сектор является наименьшей физической единицей хранения данных
на жестком диске. В процессе эксплуатации необходимо проводить
обслуживание диска, запуская следующие программы: ПРОВЕРКА ДИСКА,
которая
выявляет логические ошибки в файловой структуре и физические
ошибки, связанные с дефектами жесткого диска и программу, производящую
дефрагментация диска, которая улучшает его структуру. При многократных
операциях записи и стирания файлов их фрагментация резко усиливается
(кластеры, в которых записан один файл, могут быть разбросаны по всему
диску) и время считывания файла сильно замедляется. При дефрагментации
этот недостаток ликвидируется -
кластеры, где записан один файл,
размещаются подряд. Эти программы могут выполняться в любое время
независимо от необходимости выполнения данной операции.
34
Для облегчения взаимодействия пользователя с операционной системой(поиска
и корректировки информации на дисках в папках и файлах) используются
операционные (файловые) оболочки или менеджеры файлов . Наиболее
известными и популярными из них в настоящее время являются: Norton
Commander фирмы Symantic; Volkov Commander; DOS Navigator; Far Manager;
Windows 3.11 .
35
Лекция 4 (2 часа)
Информатика документационного обеспечения
Редактор Word поддерживает объектно-ориентированное представление
документа. В соответствии с ним документ рассматривается в виде
совокупности объектов, таких как текст, рисунки, таблицы. Каждый из этих
объектов имеет иерархическое представление. Например, текст делиться на
абзацы, абзацы на предложения, предложения на слова.
Документ
Абзацы
Предложения
Слова
Таблицы
...
Строки
Рисунки
Встроенные
средства
Ячейки
Стандартные
рисунки
Рис. 1. Структура документа Word
Такое
иерархическое
деление
не
является
обязательным
и
строго
определенным. В некоторых случаях удобнее опустить деление абзаца на
предложения и слова, а считать абзац состоящим из строк. Таблицу можно
рассматривать как совокупность столбцов, а столбцы в свою очередь как
совокупность ячеек. Пользователю необязательно явно определять иерархию
объектов, редактор сам, исходя из текущего контекста работы, использует тот
или иной способ представления. Текущий контекст определяется тем, какой
объект в данный момент выделен (то есть выбран пользователем для работы). В
случае, если ничего не выделено, редактор считает, что работа происходит с
простым текстом.
С каждым уровнем иерархии объекта связаны допустимые с этим уровнем
операции. Например, для абзаца можно задать способ выравнивания, отступы и
т.д. , для фрагментов текста - шрифт. Документ целиком можно создать,
сохранить, закрыть и открыть.
36
Документ Word может включать следующие объекты:
Текст.
Абзацы текста.
Таблицы.
Встроенные объекты Word, предназначенные для автоматизации работы над
оформлением документов, такие как автоматически собираемое оглавление,
номера страниц, стандартные подписи под рисунками, колонтитулы.
Заголовки.
Рисунки, созданные средствами Word.
Кадры, используемые для
создания
сложных
текстов с наложением
разнотипных объектов друг на друга.
Объекты, созданные другими приложениями Windows:
рисунки из графических редакторов;
таблицы и диаграммы из электронных таблиц;
математические формулы;
надписи, представленные с различными плакатными эффектами;
другие объекты.
Организация работы пользователя в редакторе
Для просмотра и корректировки документ выводится на экран. Экран можно
рассматривать как некоторое окно по документу, который вытянут в длинную
полосу. В окне отображается только ограниченный фрагмент. Но экран можно
перемещать по документу, выделяя тем самым нужный контекст для работы.
Окно редактора Word имеет следующий вид:
функциональное меню
пиктографическое меню
37
рабочее поле
линейки прокрутки
Рис.2. Структура окна редактора Word
Для обозначения места ввода текста используется маркер, который имеет вид
вертикальной черты | . Для перемещения маркера по документу можно
использовать управляющие клавиши (стрелки ,,,, Home, End и пр), а
также манипулятор мышь (установить его указатель в нужное документа и
щелкнуть по левой клавише мыши).
Для перемещения экрана по тексту используются линейки прокрутки,
находящиеся на правой и нижней границе окна. Допускается:
- перемещение экрана вверх/вниз на строку (щелчок по соответствующим
указателем на соответствующих границах линеек);
- плавное движение экрана по тексту (протаскивание по линейке бегунка);
- перемещение экрана на страницу вверх/вниз (щелчок по линейке между
указателями границ и бегунком).
Пользователь работает с документом с помощью команд. Команды в редакторе
Word можно выполнить любым из 4 способов:
выбором действий из функционального меню, находящегося во второй строке
экрана (щелкнуть уазателем мыши по нужному пункту);
38
выбором действий из пиктографических меню (щелчком указателя мыши по
сответствующей пиктограмме);
выбором действий из динамических меню, формируемых в зависимости от
контекста работы (установить курсор мыши на выделенный объект и нажать
правую клавишу мыши);
заданием команд с помощью функциональных клавиш.
Типы объектов и операции над ними
Фрагменты документа
Под фрагментом документа понимают выделенные пользователем объекты
(часть объекта, несколько объектов и т.д.). Для выполнения любой операции с
объектами их необходимо предварительно выделить. Выделение может быть
сделано с помощью мыши, для этого:
установить указатель мыши перед объектом, с которого начинается выделение;
нажать левую кнопку мыши;
протянуть указатель, удерживая нажатой левую кнопку, так чтобы захватить
нужный фрагмент( при этом выделяемые объекты окрашивается).
Для каждого типа допустимы и другие способы выделения, подробнее они
будут рассматриваться ниже.
Общие операции над выделенными фрагментами
Копирование (пункт меню ПРАВКА, КОПИРОВАТЬ). При этом выделенный
фрагмент помещается в буфер промежуточного хранения, где он будет
храниться до тех пор, пока в него не будет помещен новый фрагмент.
Вставка (пункт меню ПРАВКА, ВСТАВИТЬ). В случае, если в буфере
промежуточного хранения есть какая-то информация, ее можно вставить в
любом месте документа. При вставке содержимое буфера не очищается.
Очистка (пункт ПРАВКА, ОЧИСТИТЬ). Выделенный фрагмент с экрана
пропадает, но в буфер промежуточного хранения не заносится.
Перемещение объекта. Любой объект может быть из одного места документа
перемещен в другое, для этого:
39
установить указатель мыши на выделенный фрагмент так, чтобы он
превратился в наклоненную влево стрелку.
нажать левую кнопку мыши и, не отпуская ее, перетащить указатель в нужное
место. В процессе перетаскивания вид указателя изменяется (на стрелку
накладывается пунктирный квадрат ).
после того, как указатель установится в нужное место текста, левую кнопку
нужно отпустить.
Обрамление
объекта
(пиктографическое
меню
или
пункт
ФОРМАТ,
ОБРАМЛЕНИЕ). Любой выделенный объект (фрагмент таблицы, абзац) может
быть заключен в различные рамки и по разному закрашен. Для раскрытия
панели Обрамления нужно щелкнуть указателем мыши на пиктограмме
Обрамление. С ее помощью можно:
задать стиль линии для обрамления (одинарную, двойную, разной толщины);
задать способ закрашивания объекта
использовать разные рамки для оформления текста, например, только по
левому или правому краю.
Текст
Текст является самым простым объектом в редакторе. Он используется
практически во всех объектах: из текста состоят абзацы, текст можно заносить
в таблицы, рисунки и т.д. Для выполнения любой операции с текстом его
нужно предварительно выделить.
Выделение текста:
а) выделение фрагмента текста:
- установить курсор мыши слева от первого символа, так чтобы он превратился
в |;
- нажать левую клавишу мыши и, удерживая ее, передвигать указатель до тех
пор, пока не отметится последний нужный символ;
- отпустить левую кнопку.
в) выделение строки целиком:
40
- установить курсор мыши слева от первого символа строки, так чтобы он
превратился в наклонную стрелку;
- щелкнуть по левой клавише мыши.
г) выделение нескольких строк:
- выделить первую строку;
- нажать левую клавишу мыши и, удерживая ее, переместить указатель вниз
или вверх так, чтобы захватить все нужные строки;
- отпустить клавишу мыши.
Основной операцией над объектом типа текст является изменение шрифта
(средства пиктографического меню или пункт меню ФОРМАТ, ШРИФТ).
Шрифты в среде Windows имеют следующие характеристики:
тип шрифта (начертание букв);
размер шрифта;
способы выделения или стиль (курсивный, жирный, подчеркнутый);
различные эффекты (нижний индекс, верхний и прочее).
Для выделенного фрагмента можно переустановить все или часть из этих
характеристик. При этом надо иметь в виду, что не все реализованные в
Windows шрифты имеют русский эквивалент. При задании подобного шрифта
вместо букв появляются небуквенные символы. Однако, это не значит, что
русский
текст
испорчен.
Достаточно
изменить
шрифт
на
другой,
поддерживающий русские буквы, текст восстанавливается.
Характеристики шрифта для выделенного фрагмента можно установить с
помощью меню ФОРМАТ, ШРИФТ:
41
Все характеристики шрифта занесены в окна (Шрифт, Начертание, Размер).
Для того, чтобы выбрать нужное - щелкнуть указателем мыши по
соответствующей строке. Некоторые характеристики (Цвет) занесены в поля
со списками, раскрывая которые (щелчком по стрелочке справа от окна) можно
выбрать одно из пердложенных значений. После выполнения необходимой
настройки - щелкнуть по клавише ОК. При этом выделенный текст будет
преобразован в соответствии с установками.
Абзац текста
Под абзацем Word понимает последовательность строк, выровненных слева и
справа по некотором правилам, причем первая строка абзаца может начинаться
с отступа. При вводе происходит автоматическое разбиение текста на строки.
Причем это разбиение для установленного формата выравнивания всегда верно,
то
есть
при
любом
исправлении
текста
весь
абзац
автоматически
переформатируется так, чтобы отвечать заданным правилам. Для перехода к
следующему абзацу нужно ввести Enter. При этом следующий абзац будет
иметь те же характеристики, что и предыдущий.
К основным характеристики абзаца относятся:
способ размещения на странице (правая, левая граница, отступ);
способ выравнивания текста, традиционно поддерживаются следующие
разновидности расположения текста:
42
по правому краю страницы;
по центру страницы;
по левому краю страницы;
по ширине страницы (текст выравнивается и слева, и справа).
межстрочный интервал (1; 1,5; 2).
Все это для текущего или выделенных абзацев можно установить в диалоговом
окне,
открывающемся
при
выборе
пунктов
ФОРМАТ,
АБЗАЦ
функционального меню:
Те же характеристики можно задать и используя графический интерфейс
Windows:
Непосредственно над рабочим полем экрана расположена линейка размещения
абзацев на листе:
Перемещая указатели, расположенные внизу линейки, можно изменять левую и
правую границу абзаца, а указатель вверху линейки служит для установки
абзацного отступа.
Способ выравнивания задается с помощью соответствующих пиктограмм в
стандартной панели инструментов:
Еще одной удобной характеристикой абзаца является возможность его
автоматической нумерации. При установленной характеристике нумерованный
список перед каждым новым абзацем вставляется либо очередной номер, либо
43
специальный символ списка. В стандартной панели инструментов приведены
два типа списка нумерованный и с точками. После щелчка по одной из них
либо текущий, либо выделенные абзацы преобразуются в список. Например:
элемент списка 1;
элемент списка 2.
Для выбора других символов списка можно воспользоваться диалоговым
окном, которое отображается при выборе пунктов ФОРМАТ, СПИСОК
функционального меню:
Из предлагаемых образцов можно выбрать подходящий. Кроме отображенных
в окне, есть и другие варианты оформления списка, занесенные на другие
“карточки” (Бюллетень, Иерархический). Для того чтобы отобразить их,
нужно щелкнуть мышкой по соответствующим закладкам.
В некоторых случаях, например для изменения шрифта отдельных слов, абзац
можно рассматривать как совокупность предложений, предложения - как
совокупность
слов.
В
соответствии
с
этим
допускаются
следующие
дополнительные способы выделения частей абзаца:
а) выделение слова целиком:
- установить курсор мыши в любое место слова, так чтобы он превратился в |;
- дважды с короткими перерывами щелкнуть по левой клавиши мыши.
б) выделение одного предложения:
- установить курсор мыши в любое место предложения;
- нажать клавишу Ctrl и, удерживая ее, дважды с короткими перерывами
щелкнуть по левой клавиши мыши.
с) выделение абзаца целиком:
44
- установить курсор мыши слева от абзаца, так чтобы он превратился в
наклонную стрелку;
- дважды с короткими перерывами щелкнуть по левой клавиши мыши.
д) выделение текста целиком:
- установить курсор мыши слева от любого абзаца текста, так чтобы он
превратился в наклонную стрелку;
- нажать клавишу Ctrl и, удерживая ее, щелкнуть по левой клавиши мыши.
Объекты, используемые для оформления документа
Такие объекты позволяют автоматизировать часть наиболее рутинной работы
по оформлению документов, например, сбор оглавления, нумерацию страниц.
Их перечень сведен в меню ВСТАВКА. При вставке одного из объектов
рассматриваемого типа, в документ помещается так называемое поле,
корректировка которого простыми операциями редактора недопустима.
Единой для всех объектов, вставляемых в виде полей, является операция войти
или раскрыть объект (двойной щелчок по левой кнопке манипулятора мыши,
при условии, что указатель мыши установлен на объект). После чего либо
раскрывается диалоговое окно, с помощью которого был вставлен текущий
объект, либо активизируется скрытое окно в документе, предназначенное для
отображения только этого объекта. В них можно либо заново настроить
вставленный объект, либо внести какие-то корректировки.
Другой специфической операцией над объектами оформления является
операция обновить поле. Для части объектов она выполняется автоматически,
например, нумерация страниц, для других требует специального указания,
например, сбор оглавления. Эту операцию можно выполнить щелкнув по
соответствующему пункту динамически вызываемого меню (установить
указатель мыши на объект и нажать правую кнопку мыши).
К объектам оформления документов относятся:
Номера страниц. (ВСТАВКА, НОМЕРА СТРАНИЦ). Номера страниц в
документе устанавливаются либо в верхней, либо в нижней части страницы.
Такая часть страницы имеет название КОЛОНТИТУЛ. Кроме номеров страниц
45
туда можно занести некоторую информацию, которая повторяется на каждой
странице определенной части документа, например, главы.
Разрыв страницы. (ВСТАВКА, РАЗРЫВ). Разбиение страниц в документах
поддерживается автоматически по достижению нижней границы страницы, но
пользователю предоставлена возможность самому указывать явное начало
новой страницы, например, для следующей главы. Тогда будет начата новая
страница независимо от того какая часть листа заполнена. Вставленный разрыв
можно удалить стандартными средствами редактора.
Дата и время. (ВСТАВКА, ДАТА И ВРЕМЯ). В любое место документа, а
также в колонтитулы можно вставить текущую дату и время. Вставленное
значение
не
будет
обновляться
автоматически.
При
необходимости
переустановить время нужно установить указатель мыши на поле и выполнить
команду обновить поле.
Название. (ВСТАВКА, НАЗВАНИЕ) Редактор позволяет автоматизировать
нумерацию в документе рисунков, таблиц, схем. Каждый вставляемый объектназвание имеет имя и номер. Все объекты с одним именем имеют общую
нумерацию, которая изменяется автоматически при вставке или удалении
новых названий.
Оглавление и указатели. (ВСТАВКА, ОГЛАВЛЕНИЕ И УКАЗАТЕЛИ)
Оглавление составляется из тех строк в документе, которые относятся к стилю
заголовков разного уровня. Если в документе таковые строки отсутствуют,
оглавление
не
может
быть
собрано.
Каждому
объекту
заголовка
устанавливается в соответствие страница, на которой он расположен. При
вставке оглавления пользователю в диалоговом окне предлагается выбрать
стиль его отображения. При изменении структуры документа
оглавление
автоматически не исправляется. Для актуализации структуры оглавления
нужно выполнить команду обновить поле.
Нумерация заголовков (пункт меню ФОРМАТ). Для тех строк в тексте,
которые
имеют
стиль
заголовков
разного
уровня
можно
вставить
автоматически настраиваемую нумерацию. При этом способ ее отображения в
46
документе выбирается пользователем из достаточно большого набора
вариантов, выдаваемого в диалоговом окне.
Кроме перечисленных в Word предусмотрены достаточно широкий набор
объектов для оформления документа: сноски, ссылки и пр. Работа с ними
осуществляется аналогично
Таблицы
Для удобного ввода данных, представленных в виде таблиц, в редакторе
реализованы соответствующие возможности. Под таблицей понимается
совокупность ячеек, объединенных по горизонтали в строки, а по вертикали в
столбцы. Описать таблицу можно 2 способами:
1 вариант
Таблица
строка 1
ячейка 1.1
...
ячейка 1.n
строка 2
...
...
строка m
2 вариант
Таблица
столбец 1
ячейка 1.1
...
ячейка m.1
столбец 2
...
...
столбец n
47
Выбор первого или второго представления зависит от того, что в данный
момент выделено (если строка - то используется 1 вариант, если столбец второй). В случае, если ничего не выделено применяется 1 вариант
представления таблицы. С учетом этого формируются пункты ТАБЛИЦА
функционального меню.
Самым нижним элементом в иерархии объектов является ячейка. Каждая
ячейка в таблице рассматривается как небольшое текстовое окно, в котором
допустимы все операции с текстом и абзацами, реализованные в редакторе (
изменение шрифта, задания способа выравнивания и т.д.). В нее можно
занести
числовые
значения
и
даты,
над
которыми
допустимы
арифметические вычисления, а также любые объекты редактора, за
исключением новой таблицы.
Для выполнения всех действий с таблицей и ее фрагментами, их необходимо
выделить:
Для быстрого выделения таблицы целиком нужно выбрать пункты
ТАБЛИЦА,
ВЫДЕЛИТЬ
ТАБЛИЦУ
функционального
меню
(предварительно установив курсор в любое место таблицы) .
Для выделения столбца целиком - установить указатель мыши чуть выше
верхней границы столбца так, чтобы он превратился в вертикальную
направленную вниз стрелку, и щелкнуть по левой кнопки мыши. Удерживая
нажатой левую клавишу мыши, можно сразу выделить несколько столбцов.
Кроме того для выделения текущего столбца можно воспользоваться
пунктами ТАБЛИЦА, ВЫДЕЛИТЬ СТОЛБЕЦ функционального меню.
Для выделения строки целиком - установить указатель мыши слева от
текущей строки так, чтобы он превратился в наклоненную вправо стрелку, а
затем щелкнуть по левой кнопки мыши. Для выделения нескольких строк протянуть курсор, удерживая нажатой левую кнопку мыши. Также можно
воспользоваться
пунктами
функционального меню.
ТАБЛИЦА,
ВЫДЕЛИТЬ
СТРОКУ
Для выделения отдельной ячейки устаноновить указатель мыши перед
началом текста в ячейке, так чтобы он превратился наклоненную вправо
стрелку и щелкнуть по левой клавиши мыши. Для выделения группы ячеек выделить первую ячейку и удерживая нажатой левую клавишу растянуть
указатель, чтобы захватить остальные.
Над элементами в таблице допустимы следующие операции:
Вставить объект:
Для вставки таблицы можно воспользоваться либо пунктами ТАБЛИЦА,
ВСТАВИТЬ ТАБЛИЦУ функционального меню, либо воспользоваться
соответствующей пиктограммой. В первом случае нужно в диалоговом окне
указать количество строк и столбцов в таблице, а во втором с помощью
мыши выделить нужное количество строк и столбцов в предлагаемом
шаблоне. После этого таблица будет вставлена в текст, ячейки в ней друг от
друга будут отделены пунктирной сеткой.
Для вставки строки нужно установить маркер на ту строку, перед которой
осуществляется вставка, для вставки столбца - выделить столбец целиком.
Затем выбрать пункты ТАБЛИЦА, ВСТАВИТЬ функционального меню.
Удалить объект. Для этого нужно выделить либо таблицу целиком, либо
отдельные строки или столбцы, а затем выйти в меню ТАБЛИЦА,
УДАЛИТЬ.
Изменить размеры объекта (ширины столбца и высоты строки).
Осуществляется либо в диалоговом окне, вызываемом с помощью пунктов
меню ТАБЛИЦА, ВЫСОТА И ШИРИНА ЯЧЕЙКИ, либо с помощью
манипулятора мышь. Например, для изменения ширины столбца нужно
установить указатель мыши на границу столбца так, чтобы он превратился в
двойную стрелку, и удерживая нажатой левую клавишу, перетащить
указатель для достижения нужной ширины столбца.
49
Обрамить объект. Для оформления таблицы рамками необходимо
последовательно выделять нужные фрагменты таблицы и выбирать нужный
способ обрамления в пиктографическом меню Обрамление.
Объединить ячейки. Выделив несколько соседних ячеек в строке, можно
их объединить с помощью
пунктов меню ТАБЛИЦА, ОБЪЕДИНИТЬ
ЯЧЕЙКИ.
Пример таблицы:
Заголовки
Заголовки используется для создания иерархии текста в документе типа:
глава, раздел, подраздел. Для такого представления характерны новые
понятия: раскрытый объект и свернутый объект, позволяющие выводить
текст на экран с разной детализацией уровней (или степенью прозрачности)
документа. На самом верхнем уровне текст представляет собой совокупность
глав, содержимое которых “свернуто”. Для примера, рассмотрим структуру
лекции по редактору Word:
Структура документа редактора Word
Организация работы пользователя в редакторе
Типы объектов и операции над ними
В таком представлении совершенно не видно никаких деталей, зато можно
оценить полноту и последовательность изложения материала. Далее можно
“раскрыть” каждый из этих разделов и получить более подробную
информацию о структуре лекции:
1. Организация пользовательского интерфейса
1.1 Окно редактора
1.2 Средства работы пользователя
50
Уже более подробно, но опять же без особенных деталей. Достоинств у
такого
представления
достаточно
много:
человеку
не
обязательно
просматривать целиком весь текст, можно сразу ограничиться нужными
разделами, легко выполнить операции над целыми объектами, например,
удалить целую главу или переставить ее в другое место документа.
Для обозначения глав в документе используются Заголовок уровня 1
(Заголовок 1), для разделов - Заголовок уровня 2 и т.д. Чтобы указать, что
данная строка текста является заголовком необходимо:
- установить курсор в любое место строки;
- раскрыть окно Стиль:
- выбрать нужный
заголовок,
соответствующей строке списка.
щелкнув
указателем
мыши
по
При использовании заголовков приняты следующий соглашения:
текст и другие объекты, расположенные после заголовка считаются
принадлежащими объекту с именем и уровнем детализации этого заголовка,
конец документа в целом или появление нового заголовка того же уровня
определяют конец текущего объекта;
все заголовки одного уровня обозначаются в документе в едином стиле
(одинаковый тип и размер шрифта, единый способ выравнивания);
заголовки могут быть нумерованными, вид нумерации задается
пользователем (меню ФОРМАТ, НУМЕРАЦИЯ ЗАГОЛОВКОВ) и
автоматически поддерживается редактором, например, при удалении любого
заголовка, все остальные автоматически перенумеровываются так, чтобы
нумерация в тексте всегда была верной.
Работа с объектно-ориентированным представлением осуществляется в
режиме Структура документа ( меню ВИД, СТРУКТУРА). В нем
появляется новая панель, с помощью которой можно работать с логической
структурой документа.
51
Лекция 5(2 часа)
Технологии
обработки
информации
и
решение
задач
средствами
электронных таблиц
Электронные таблицы - это прикладная программа, предназначенная для
редактирования,
арифметической
представленной
в
виде
обработки
таблиц.
Идея
и
анализа
создания
информации,
подобных
систем,
предназначенных для обработки простых табличных данных, принадлежит
Д.Бриклину и Р.Фрестону. Они разработали в 1978 году первую подобную
систему VisiCalc.
Электронная таблица основывается на весьма простых и наглядных
понятиях:
электронная
таблица
представляет
собой
прямоугольную
матрицу,
состоящую из ячеек;
строки электронной таблицы пронумерованы числами, а столбцы помечены
буквами; из этих букв и цифр образуются указатели ячеек (ссылки), такие
как В2 или С15;
в любую ячейку можно поместить значение - число, дату, текст;
если значение в одной ячейке должно зависеть от значений каких-то других
ячеек (например, быть их суммой), то вместо конкретного числа в нее можно
поместить формулу, определяющую способ вычисления значения (например,
в ячейку А5 можно ввести формулу =А3+А4);
в электронной таблице при изменении значения ячейки автоматически
осуществляется пересчет, то есть вычисление всех входящих в нее формул,
что приводит к появлению новых вычисленных значений в тех ячейках, в
которых хранятся формулы;
электронные
таблицы
позволяют
деловую
графику
(гистограммы, круговые диаграммы, точечные графики и
др.) для
отображения табличных данных.
52
использовать
На этих принципах построены практически все современные табличные
процессоры, такие как Lotus 1-2-3, Excel, SuperCalc, QuatroPro и др.
Возможности электронных таблиц позволяют рекомендовать их для решения
задач, связанных с обработкой в экранном режиме табличной информации.
При этом не требуется специальных знаний по программированию.
Рассмотрим структуру и возможности электронных таблиц на примере
системы Excel, как одной из наиболее типичных и применяемых систем.
Структура электронной таблицы
Электронную таблицу можно представить в виде набора листов, каждый из
которых можно описать в виде матрицы, состоящей из совокупности ячеек,
причем максимальное количество столбцов и строк в ней определяется
конкретной реализацией. Одновременно на экране можно видеть только
небольшую прямоугольную часть одного листа таблицы.
. Экран можно двигать по каждому листу, выделяя нужную область для
работы.
Для обозначения положения пользователя в таблице используется маркер,
который накрывает целиком ячейку таблицы. После вызова программы на
экране отображается следующая картинка:
53
Функциональное
меню
Пиктографическ
ое меню
Командная
строка
Рис. 1. Пользовательская среда
Это среда работы пользователя. Пользователь работает с таблицей в
экранном режиме. Верхняя часть экрана используются для служебных целей,
здесь же располагается командная строка, в которой отображается
содержимое ячейки, на которую установлен курсор. В служебной части
экрана отображается функциональное меню и пиктографические меню.
Для выполнения различных действий с данными или листами электронной
таблицей используется набор команд, активизация которых осуществляется
одним из 4-х способов:
С помощью пиктограмм из пиктографических меню. Для этого курсор мыши
нужно установить на нужную пиктограмму и щелкнуть по левой клавише
мыши.
Выбором действий из функционального меню. Для этого необходимо
установить указатель мыши на один из пунктов меню и щелкнуть по левой
кнопкой мыши. Выбранное действие в меню выделится, а ниже пункта
раскроется новое меню, относящееся конкретно к данному действию. Работа
с подменю аналогична работе с основным функциональным меню. Выбор
54
одного из пунктов подменю приведет либо к открытию диалогового окна,
либо
к
выполнению
заданного
действия,
если
оно
не
требует
дополнительных пояснений.
Выбором действий из динамических меню, вызываемых нажатием правой
кнопки мыши при условии, если указатель мыши установлен на объект, с
которым осуществляется работа;
Нажатием “горячих” функциональных клавиш.
Общее управление таблицей
Операции над таблицами в целом.
Каждая электронная таблица хранится в отдельном файле, поэтому должна
иметь уникальное имя, расширение которого .xls. Над каждой электронной
таблицей допустимы операции с файлами. Ее можно создать, считать с диска,
сохранить под другим именем, напечатать, очистить:
СОЗДАТЬ - создает либо электронную таблицу, либо другой объект,
допустимый в данной среде
ОТКРЫТЬ - считывает электронную таблицу с диска, имя этой таблицы
задается в диалоговом окне;
СОХРАНИТЬ - сохраняет текущую электронную таблицу под исходным
именем;
СОХРАНИТЬ КАК - сохраняет текущую электронную таблицу под новым
именем, которое также задается в диалоговом окне;
ЗАКРЫТЬ - закрывает текущую электронную таблицу
Управление движением маркером и экраном
Для перемещения от одной ячейки к другой внутри экрана
можно
использовать манипулятор мышь. Для установки маркера в любое место
экрана нужно щелкнуть указателем мыши на соответствующей ячейке. Для
движения экрана по таблице используются стандартные линейки прокрутки.
Те же действия можно осуществить нажатием функциональных клавиш:
, - на одну строку вверх/вниз;
55
, - на один столбец влево/вправо;
Page Up, Page Down - на экран вверх/вниз;
Home - на начало строки;
Сtrl Home - в начало электронной таблицы;
Сtrl End - в конец окна;
Alt PageUp - переход на ширину окна влево
Alt PageDown - переход на ширину окна вправо
Модель ячейки в электронной таблице
Ячейку электронной таблицы можно представить в виде сложного объекта,
модель которого можно представить в виде совокупности уровней (рис. 2):
Значение
Формат
Формула
Комментарий
Имя
Рис. Модель ячейки электронной таблицы
Первые два уровня отображаются на экране. Под значением понимается
либо константа одного из стандартных типов (число целое или вещественное,
дата, текст), либо результат вычисления формулы. Понятие формата
включает следующее:
формат вывода числа в ячейке (целый, вещественный и пр.);
тип и размер шрифта, в котором выдается значение ячейки;
способ форматирования значения (по центру, левому и правому краю
ячейки);
расположение текста в ячейке (вертикальное, горизонтальное);
56
обрамление ячейки, то есть наличие или отсутствие рамок, а также тип
линии обрамления;
заполнение ячейки, то есть задание цвета поля ячейки.
Следующий уровень - это формула. Она на экране не отображается. Для
просмотра формулы, записанной в ячейке, нужно установить курсор на
ячейку таблицы. Формула, записанная в ячейке, отобразиться в командной
строке. Все формулы начинаются со знака “=“ и могут включать ссылки на
ячейки, имена функции, разделенные знаками арифметических и логических
операций.
Каждая ячейка электронной таблицы может иметь уникальное имя, которое
используется для ссылки на ячейку в других формулах. Этот уровень в
модель ячейки включен для того, чтобы облегчить пользователю процесс
решения задач в среде электронных таблиц. Ведь значительно удобнее
запомнить мнемоническое имя, например, МИН, чем ссылку на ячейку (С12),
в которой находится какое-то минимальное значение. Задать ячейки имя
можно с помощью меню ВСТАВКА, ИМЯ, ОПРЕДЕЛИТЬ. После выбора
этих пунктов на экране отобразиться диалоговое окно, в котором нужно
указать ссылку на ячейку и придумать для нее имя. После этого в любом
месте
таблицы
можно
использовать
это
имя
вместо
ссылки
на
соответствующую ячейку.
Последним уровнем в модели ячейки является уровень комментариев.
Зачастую при решении сложных задач желательно описать назначение той
или иной ячейки. Это можно сделать с помощью комментария. При его
задании с ячейкой, на которую установлен маркер, связывается текстовое
окошко, которое выдается на экран по специальному указанию. В нем можно
написать любой пояснительный текст.
Ввод и корректировка значений в ячейки
Ввод значения осуществляется только в текущую ячейку (ту на которой
стоит маркер). После нажатия любой нефункциональной клавиши начинается
57
прием ячейки. При этом ячейка превращается в маленькое текстовое окно, в
котором допустимы обычные текстовые операции корректировки. Ввод
значений завершается нажатием Enter или любой функциональной клавиши.
В этот момент значение анализируется и преобразуется в один из
стандартных типов, допустимых в электронных таблицах:
Числовой. Числа задаются по обычным правилам, при использовании
вещественных чисел целая часть от вещественной отделяется запятой.
Например: 12; 1234; 12,231; -67,09.
Текстовый.
При вводе текстовой константы, если она не помещается в
ячейку, текст располагается в соседней ячейке, если она свободна. В случае
если соседняя ячейка занята, текст на экране усекается, но в памяти таблицы
сохраняется. При установке маркера на ячейку текст полностью выводится в
командной строке.
Дата и время. При вводе даты число, месяц и год отделяются друг от друга
либо точкой, либо наклонной чертой. Например:
ввод 12.3.99 – определяет дату 12 марта 1999 года;
ввод 2.99 – определяет дату февраль 1999 года.
Для корректировки уже заполненных ячеек маркер устанавливается на
нужную ячейку. При этом содержимое ячейки отобразится в командной
строке. Ее можно корректировать как простой текст, щелкнув указателем
мыши в любом месте строки. Корректировка заканчивается вводом Enter.
Форматирование ячеек
Для того чтобы отформатировать значение ячейки необходимо:
установить курсор на нужную ячейку;
выйти в меню ФОРМАТ, ЯЧЕЙКА;
выбрать нужное действие (щелкнув указателем мыши по соответствующей
закладке).
Задание
формата
электронных
таблиц
вывода
могут
числовой
информации.
выдаваться
58
в
Числа
различных
в
среде
форматах:
с
фиксированной точкой, в экспоненциальном виде, во всевозможных
денежных форматах, в стиле дат и пр. При вводе чисел устанавливается
формат,
который
выбирается
электронной
таблицей
автоматически.
Например, при вводе 5,5 - формат с фиксированной точкой, при вводе 10.3
или 10/3 - формат для отображения дат, при этом вводимые данные
преобразуются к следующему виду 10.03.1996 (добавляется текущий год).
Для управления форматами вывода чисел используется закладка ЧИСЛО, на
которой приведены все допустимые в Excel форматы вывода чисел.
Чтобы задать нужный формат числа необходимо:
выбрать соответствующий формат в окне Числовые форматы;
при необходимости задать дополнительную информацию о выбранном
формате, например, указать количество знаков после запятой, необходимость
разделения групп разрядов и пр.;
закончить задание формата щелчком по клавише ОК.
Изменение шрифта ( средства пиктографического меню или закладка ШРИФТ).
59
Шрифты в среде Windows имеют следующие характеристики:
тип шрифта (начертание букв);
размер шрифта;
способы выделения или стиль (курсивный, жирный, подчеркнутый);
различные эффекты (нижний индекс, верхний и прочее).
Для ячеек можно переустановить все или часть из этих характеристик. При
этом надо иметь в виду, что не все реализованные в Window шрифты имеют
русский эквивалент. При задании подобного шрифта вместо букв появляются
небуквенные символы. Однако это не значит, что русский текст испорчен.
Достаточно изменить шрифт на другой, поддерживающий русские буквы,
текст восстанавливается.
Выравнивание текста внутри ячейки (пиктографическое меню или
закладка ВЫРАВНИВАНИЕ).
60
Текст в ячейке может быть выровнен по горизонтали:
по правому краю ячейки;
по центру ячейки;
по левому краю ячейки;
также может быть задан произвольный отступ текста.
По вертикали текст можно выровнять по верхнему, нижнему краю ячейки, а
также центру ячейки.
Текст в ячейке может иметь разную ориентацию: располагаться не только
горизонтально, но и вертикально, иметь разный угол наклона.
Можно задать режим, при котором текст при вводе ограничивается шириной
ячейки. При установке Переносить по словам, при достижении границы
ячейки текст автоматически переносится на следующую строку внутри
ячейки.
Для оформления шапок таблицы часто необходимо именовать несколько
столбцов одновременно, для чего используется окно Объединение ячеек.
Чтобы реализовать это действие, нужно предварительно выделить интервал
ячеек, подлежащих объединению. В результате текст, введенный в первую
61
ячейку интервала, будет выровнен по центру всех выделенных столбцов. В
дальнейшем это выравнивание будет сохраняться, даже при изменении
ширины столбцов.
Обрамление объекта рамками (пиктографическое меню или закладка
Граница и ВИД).
Выбирая нужный тип линии, способ обрамления и цвет можно:
задать стиль линии для обрамления (одинарную, двойную, разной толщины);
задать способ закрашивания объекта
использовать разные рамки для оформления текста, например, только по
левому или правому краю.
Форматирование строк и столбцов таблицы
Над столбцом и строкой целиком допустимы следующие операции
форматирования (пункт меню ФОРМАТ, СТРОКА или СТОЛБЕЦ):
Изменение ширины столбца и высоты строки. Осуществляется либо в
диалоговом окне, вызываемом с помощью пункта дополнительного меню
ВЫСОТА или ШИРИНА, либо с помощью манипулятора мышь. Например,
для изменения ширины столбца нужно установить указатель мыши в строке
именования столбцов на границу столбца так, чтобы он превратился в
двойную разделенную стрелку, и, нажав левую кнопку протащить указатель
62
для достижения нужной ширины столбца. Аналогично можно изменить
высоту ячейки, только маркер нужно установить в столбец именования
строк.
Скрыть столбец или строку с экрана. Эта операция позволяет не
отображать на экране часть столбцов или строк в таблице.
Показать столбец или строку. Выводит скрытый столбец или строку на
экран.
Вычисления в таблицах
Задание формул
Ячейка может содержать не фиксированное значение, а вычисляемое
выражение, которое зависит от других ячеек. Для этого в ячейку необходимо
ввести формулу, по которой это значение будет вычисляться.
Формулы строятся по общепринятым правилам из знаков арифметических
операций, обращений к функциям, чисел и имен ячеек. Формула всегда
должна начинаться со знака “=“. Так, например, чтобы в ячейке А3
содержалась сумма значений А1 и А2, в нее должна быть введена формула:
=А1+А2.
Другим примером является следующая формула, вычисляющая минимальное
из тех же двух значений: =МАКС(А1,А2).
Некоторые функции допускают в качестве аргументов не отдельные числа, а
целые наборы чисел, так например, функции вычисления Суммы, Минимума,
Максимума или Среднего Арифметического. Аргументами таких функций
может быть интервал, задаваемый парой ячеек через двоеточие. Так
например для вычисления суммы чисел, находящихся в столбце А в ячейках
от А1 до А100, можно в ячейку А101 ввести формулу: =СУММ(А1:А100).
Набор функций, реализованный в электронной таблице, достаточно
объемный. Приведем лишь наиболее используемые функции:
математические функции:
ABS - абсолютное значение;
ОСТАТ - остаток от деления;
63
СУММ - сумма;
КОРЕНЬ - квадратный корень;
ЦЕЛОЕ - целая часть числа;
ОКРУГЛ - округление до указанного
числа знаков;
SIN - синус угла в радианах;
COS - косинус числа, выраженного в
радианах;
статистические функции:
СРЗНАЧ - среднее арифметическое;
MAКС - наибольшее значение
CЧЕТ - подсчет числа элементов в списке;
MИН - наименьшее значение;
СЛЧИСЛ - случайное число.
Все перечисленные функции имеют единый формат записи: сначала
указывается функция, а затем в круглых скобках перечисляются ее
аргументы. Например:
СУММ(A1:D1,D2,D5:D7) - находит сумму значений, содержащихся в
следующих ячейках A1,B1,C1,D1,D2,D5,D6,D7;
ОКРУГЛ(R4,2) - округляется значение, содержащееся в ячейке R4 до сотен;
СЛЧИСЛ- вставляет в ячейку случайное число, меньшее единицы.
Для задания формулы необходимо
- установить маркер на нужную ячейку;
ввести символ =;
ввести формулу;
закончить ввод клавишей Enter.
Если формула введена правильно, то в ячейке сразу отобразится значение,
которое получилось в результате вычисления формулы. Сама же формула
будет отображаться в командной строке таблицы. В случае если формула
введена неверно, то выведется сообщение об ошибке. Ошибку необходимо
исправить. Если это пока невозможно, можно занести ее в ячейку в виде
текста. Для этого убрать символ “=“ в начале формулы. В дальнейшем эту
ошибку нужно найти и исправить, после чего обязательно вставить в начало
формулы символ “=“.
64
Занесенные в электронную таблицу формулы автоматически вычисляются
всякий раз, когда пользователь вносит изменения в ячейки. В результате
пересчета изменяются значения тех ячеек, в которых занесены формулы,
содержащие ссылки на имена измененных ячеек.
Копирование формул
Во многих случаях требуется выполнять вычисления над целыми столбцами
или строками. Например, каждая строка таблицы должна содержать среднее
арифметическое четырех ячеек в строке. Составление такой таблицы
является очень трудоемким делом, если вводить каждую из этих формул
вручную.
Вместо этого достаточно ввести формулу в одну ячейку, например, в D4,
после этого скопировать ее во весь столбец D с помощью операции
копирования в соседние ячейки. Для этого необходимо:
установить курсор на ячейку с формулой для копирования;
установить указатель мыши в правый нижний угол ячейки так, чтобы он
превратился в черный крестик;
протянуть указатель, не отпуская левой кнопки, через те ячейки, куда
копируются формулы, при этом интервал копирования будет окрашен;
отпустить кнопку мыши, после чего формулы будут занесены в ячейки и
сразу же вычислены.
Важным свойством этой операции является то, что формулы копируются не
буквально, а с перенастройкой содержащихся в них имен ячеек. Так при
копировании формулы =A1+В1 из ячейки C1 в ячейку C2 она после
перенастройки превращается в формулу =A2+В2. Это происходит из-за того,
что ссылки на ячейки трактуются как относительные имена ячеек,
определяемые относительно той ячейки, в которой формула находится.
Такая относительная адресация нужна не всегда. Часто требуется, чтобы
формула зависела от фиксированной ячейки независимо от своего положения
в таблице. Для этого имя ячейки необходимо сделать абсолютным. Это
65
достигается установкой специального указателя $ перед буквенными и
числовыми частями ячейки: $В$23
Два $ требуются потому, что относительной может быть каждая из частей
имени ячейки независимо друг от друга:
$В23 - столбец - абсолютный, строка - относительна;
В$23 - столбец - относительный, строка - абсолютная.
Формулы с условными выражениями
Возможности занести в ячейку разное значение в зависимости от некоторого
условия реализуется в электронных таблицах с помощью логической
функции ЕСЛИ, которая имеет три аргумента:
выражение, определяющее условие, по которому выбирается один из двух
оставшихся аргументов;
выражение, которое вычисляется и заносится в ячейку в том случае, если
логическое выражение в первом аргументе истинно;
выражение, которое вычисляется и заносится в ячейку, если выражение в
первом аргументе - ложно.
Например, в ячейку В11 вводится формула:
=ЕСЛИ(В1=A1, СУММ(В2:В10), 0) - в В11 занесется сумма ячеек от В2 до
В11 при условии, если значение в ячейке А1 равно В1 и 0 в противном
случае.
Для реализации сложных условий можно использовать логические функции:
ИЛИ, И и НЕ. Операция И и ИЛИ имеет два аргумента, а НЕ - один.
Например:
=ЕСЛИ(ИЛИ(B1=2,B2=2), 10, 0) - в ячейку заносится значение 10, если
хотя бы в одной из двух ячеек В1 и В2 содержится 2, и 0 - в противном
случае.
Группировка ячеек в таблицах
Для того чтобы выполнять операции не над отдельной ячейкой, а над
группами ячеек, их объединяют в интервалы. Интервалы - группы ячеек,
66
занимающих прямоугольную область. Это может быть весь или часть
столбца, вся или часть строки, группа рядом стоящих ячеек из нескольких
строк и столбцов. Виды интервалов:
прямоугольная область ячеек, расположенных
в нескольких строках и
столбцах, задается ссылками на ячейки, находящиеся в противолежащих
углах интервала, разделенные символом ":" (А1:С3 - в интервал входят 9
ячеек, расположенных в верхнем левом углу таблицы);
группа строк (столбцов) задается ссылкой на первую и последнюю строку
(столбец) интервала (А:С - в интервал входят три столбца, 1:10 – в интервал
входят 10 строк таблицы).
Выделение интервалов осуществляется следующим образом:
указать
первую
границу
интервала,
для
этого
указатель
мыши
устанавливается на нужную ячейку так, чтобы он превратился в (белый
плюсик) ;
зафиксировать первую границу, нажав левую клавишу мыши;
протащить указатель мыши по таблице так, чтобы захватить нужный
интервал, удерживая нажатой левую кнопку мыши;
закончить выделение, отпустив левую кнопку мыши.
В результате выделенный фрагмент будет окрашен.
В Excel допустимо одновременное выделение нескольких интервалов. Для
этого необходимо:
выделить первый интервал;
выделять остальные интервалы, удерживая нажатой клавишу Ctr.
Операции над выделенными ячейками
Копирование данных
Особенности представления данных в электронных таблицах делает
нетривиальной операцию копирования выделенных данных (интервалов).
Поддерживается как копирование ячейки целиком, то есть всех уровней
67
модели ячейки одновременно, так и копирование отдельных уровней модели,
например, только значения или формата.
Кроме того, операция копирования в электронных таблицах допускает
получения не только точной копии выделенного для копирования интервала.
Здесь вводится понятие интервал-источник и интервал-получатель. Как
будет выполнена операция зависит от вида интервала-источника (то что
хотим скопировать) и интервала-получателя (то куда хотим скопировать):
если интервал-источник одна ячейка, то эта ячейка копируется в каждую
ячейку интервала-получателя;
если интервал-источник расположен в одной строке, то строка копируется в
каждую строку интервала-получателя;
если интервал-источник расположен в одном столбце, то этот столбец
копируется в каждый столбец интервала-получателя;
для получения точной копии интервала-источника в качестве интервалаполучателя достаточно указать ссылку на левую верхнюю ячейку нового
интервала.
Для выполнения операции копирования необходимо:
выделить интервал-источник;
выбрать пункт ПРАВКА КОПИРОВАТЬ, при этом интервал-источник
будет обведен в пунктирную рамку;
выделить интервал-получатель (если одновременно с копированием хотим
провести операцию размножения) или одну ячейку ( для получения точной
копии);
ввести Enter, в случае если хотим скопировать интервал-источник как целый
объект без разделения на уровни, если же нужно скопировать часть модели
ячейки, выбрать пункты ПРАВКА, СПЕЦИАЛЬНАЯ ВСТАВКА и в
открывшемся диалоговом окне указать уровни модели ячейки, которые
нужно скопировать.
68
Допускается также копирование интервалов ячеек с формулами, для этого
необходимо:
выделить интервал ячеек с формулами для копирования;
установить указатель мыши в правый нижний угол интервала так, чтобы он
превратился в черный крестик;
протянуть указатель, не отпуская левой кнопки, через те ячейки куда
копируются формулы, при этом интервал копирования будет окрашен;
отпустить кнопку мыши, после чего формулы будут занесены в ячейки и
сразу же вычислены.
Перемещение данных
Операция перемещения используется для того, чтобы перенести некоторый
фрагмент таблицы в другое место. Причем при перемещении ячейка
рассматривается как единый объект, который нельзя разделить на уровни.
Эта операция перемещает и форматы, и значения, и формулы, и имена. Для
выполнения операции перемещения с помощью мыши необходимо:
выделить интервал перемещаемых ячеек;
установить указатель на интервал так, чтобы превратился в белую,
наклоненную влево стрелку;
нажать левую кнопку мыши, не отпуская ее переместить указатель в нужное
место таблицы, при перемещении указатель будет иметь вид стрелку с
прикрепленным к нему пунктирным квадратом;
после того, как указатель установлен в нужное место, отпустить кнопку, при
этом выделенный интервал переместиться в новое место.
Очистка
Операция очистки применима как для всей ячейки, так и для отдельных ее
уровней. Можно очистить, например, только формат таблицы. При этом
нужно иметь в виду, что будут очищены не только рамки, но и все элементы,
относящиеся к уровню формата. Для выполнения операции необходимо:
выделить очищаемый интервал;
69
выйти в меню ПРАВКА, ОЧИСТИТЬ;
в появившемся дополнительном меню указать, что нужно очищать: ячейку
целиком (ВСЕ), только формулы, форматы, комментарии.
Удаление и вставка фрагментов таблицы
Для изменения структуры таблицы используются операции вставки (пункт
меню ВСТАВКА) и удаления (пункт меню ПРАВКА УДАЛИТЬ) фрагментов
таблицы. Операция вставки раздвигает информацию в таблице по
горизонтали (для вставки новых строк) или по вертикали (для вставки новых
столбцов). В случае, если вставляется целый интервал, необходимо
дополнительно указать, куда сдвигать существующие данные - вправо или
вниз относительно вставляемого блока.
Для вставки новой части таблицы необходимо:
выделить интервал ячеек для вставки, в случае, если вставляется целая
строка или столбец этого делать необязательно;
установить маркер на ячейку, выше или левее которой будет вставляться
фрагмент;
выбрать соответствующий пункт меню ВСТАВКА:
СТРОКУ - для вставки строк;
СТОЛБЕЦ - для вставки столбцов;
ЯЧЕЙКИ - для вставки интервала ячеек, указав, куда сдвигать старые
данные:
Со сдвигом вниз - вниз относительно нового интервала;
Со сдвигом вправо - вправо относительно нового интервала;
подтвердить вставку вводом Enter или щелкнув по клавиши ОК.
70
В результате на экране появится пустой интервал ячеек, раздвинувший
старую информацию в таблице.
Операция удаления строк, столбцов и интервалов осуществляется
аналогично.
Решение прикладных задач в среде Excel
В среде электронных таблиц можно решать достаточно широкий класс задач:
от простых расчетов, в которых электронная таблица рассматривается в виде
удобного калькулятора, до сложных рекурсивных алгоритмов и задач,
решение которых предполагает наличие взаимосвязей между несколькими
таблицами.
Но у всех этих задач есть одно общее - они связаны с экранной обработкой
табличной информации, причем даже очень сложные задачи могут быть
решены без особых знаний по программированию. Решая подобные задачи,
желательно следовать следующим правилам:
Задача должна легко настраиваться на изменение исходных данных. Для
этого целесообразно изменяемые данные выделять в отдельные ячейки и
давать им имена, показывающие назначения этих данных. А во всех
формулах использовать имена ячеек. Тогда при изменении в исходных
данных достаточно изменить значение в одной ячейке.
При разработке задачи ориентироваться на создание “дружественного”
интерфейса с пользователем, то есть электронная таблица должна иметь
наглядный внешний вид, быть хорошо комментируемой.
Должна быть предусмотрена защита от ошибочных действий пользователя
так, чтобы не были случайно испорчены реализованные в таблице алгоритмы
и формулы.
Решение задачи в среде электронных таблиц состоит их нескольких этапов:
постановка задачи;
проектирование;
реализация;
отладка и тестирование;
документирование.
Для простых задач такое четкое разграничение необязательно, часть из этих
этапов могут быть объединены или выполнены неявно. Но для создания
системы, которая действительно может использоваться в реальном
производственном процессе, они необходимы.
71
Раздел III. Сетевые технологии и безопасность информационных систем
Лекция 6 (2 часа)
Компоненты и функции телекоммуникационных систем. Локальные и
глобальные сети.
Компьютерная сеть – соединенные между собой компьютеры. Позволяет
обмениваться данными и совместно использовать общие ресурсы –
документы, данные, программы технические устройства (принтеры,
вычислительные мощности процессоров и т.п.).
Локальная сеть соединяет компьютеры в одном помещении, здании или
нескольких соседних зданиях. Охватывает не более нескольких десятков
компьютеров, расположенных на расстоянии от нескольких метров до 2
километров.
Корпоративная сеть соединяет компьютеры и локальные сети организации
(компании, министерства и т.п.), которые могут находиться в разных
регионах и странах. Региональная сеть соединяет компьютеры и локальные
сети на территории города, региона. Глобальная сеть соединяет компьютеры
и локальные сети на большой территории (разные страны и материки).
Региональные и глобальные сети называют территориальными.
В мире несколько сотен глобальных сетей. Наиболее мощная – всемирная
сеть Интернет (Internet), основанная на оказавшейся очень эффективной
технологии (протоколах). Локальную или корпоративную сеть, работающую
по той же технологии (что, в частности, обеспечивает удобное включение в
Интернет) называют Интранет (Intranet, Интрасеть).
Лицо или орган управляющие работой сети (если они есть в данной сети)
называют системным администратором.
Локальные сети могут быть одноранговыми – все узлы (компьютеры)
равноправны или (в большинстве случаев) с выделенным сервером. Функции
сервера* (центрального компьютера) может выполнять специальный
мощный или обычный персональный компьютер (ПК). При этом остальные
компьютеры (чаще всего обычные ПК) называют рабочими станциями или
клиентами.
Топология (конфигурация) локальной сети – схема соединения компьютеров.
Все варианты топологии основаны на трех базовых:
кольцо – компьютеры соединяются «по кругу»;
звезда (радиальная) – каждый компьютер соединен с центральным узлом;
От слов serve (служить), servant (слуга), однокоренных со словом серб. Считается, что их этимология
восходит ко временам торговли невольниками в Европе.
72
*
шинная – все компьютеры подключены к линейной шине (магистрали, линии
передачи).
Кольцо
Звезда
Линейная шина
Для соединения компьютеров в локальной сети могут использоваться:
витая пара (скрученная пара медных проводов)** – скорость передачи до 100
Мбит/с, расстояние до 1 км, обычно в пределах 100 м;
коаксиальный кабель (внутренняя медная жила, слой изоляции, внешний
экран, оболочка, пример – телевизионная антенна) – скорость передачи до
500 Мбит/с, расстояние до 10 км;
волоконно-оптический (стекло-волоконный, оптоволоконный) кабель
(передача света по центральному стекловоду – волокну из кварцевого стекла
толщиной в человеческий волос, окруженному стеклянной оболочкой) –
скорость передачи до 100 Гбит/с, расстояние (без ретрансляции) более 50 км.
Используется также беспроводная связь электромагнитными волнами
различного диапазона, включая спутниковую связь и инфракрасное
излучение. В частности, беспроводная локальная сеть стандарта Wi-Fi
(Wireless Fidelity – беспроводная точность) обеспечивает скорость передачи
до 11 Мбит/сек.
Для подключения компьютера к сети может использоваться:
сетевая плата (сетевая карта, сетевой адаптер), подключающая его к
специальной кабельной линии для передачи сигналов в цифровом двоичном
коде (каждая карта имеет уникальнй 48-битовый адрес);
модем (модулятор–демодулятор), подключающая его к телефонной линии.
Здесь цифровые данные компьютеры преобразуются в непрерывные
электрические импульсы (модулируются), передаются по телефонным
каналам, а после приема снова преобразуются в цифровой двоичный код
(демодулируются).
**
Телефонный кабель тоже пара медных проводов, но не скрученных.
73
Для связи на дальнее расстояние (расширение сети) и соединения локальных
сетей используется коммуникационное оборудование (отдельный компьютер
с дополнительной аппаратурой или рабочая станция (сервер) с несколькими
сетевыми платами):
повторитель (репитер*) усиливает сигнал для передачи его далее по сети;
концентратор (хаб**) объединяет несколько рабочих станций, подключая их
как единый сегмент к сети;
мост соединяет сегменты одной сети или сети с одинаковой технологией
передачи данных;
маршрутизатор (роутер***) соединяет сети разного типа, но с одинаковым
программным обеспечением, определяя куда нужно направить данные и
лучший маршрут их передачи;
шлюз соединяет сети с разными технологиями передачи данных;
Такое оборудование подразделяют на мультиплексоры (один выход,
несколько входов), демультиплексоры (несколько выходов, один вход) и
коммутаторы (несколько входов и выходов).
Для защиты информации используются сетевые экраны (межсетевой экран,
щит, брандмауэр, файрвол, FireWall****) – программы, специальные
технические устройства или специально выделенный компьютер, которые
«отгораживают» защищаемый компьютер или локальную сеть от внешней
сети, пропуская в обе стороны только разрешенные данные и команды, а при
затруднениях обращающиеся за разрешением к администратору сети.
Взаимодействие компьютеров в сети обеспечивается за счет соблюдения
сетевых протоколов – правил представления и передачи данных, которые
реализуются аппаратно или программно. Передача данных состоит из ряда
этапов (уровней), на каждом из которых используется свой протокол.
Эталонной является модель обмена информацией в открытой системе OSI
(Open System Interchange) или модель взаимодействия открытых систем,
предложенная в 1984 г. и включающая 7 уровней протоколов:
физический – непосредственная передача сигналов по линиям связи;
канальный (уровень соединения) – формирование сигналов для передачи,
обнаружение и исправление ошибок, возникающих при физической передаче
(этот уровень может реализоваться модемом или сетевой картой);
repeat – повторять
hub – ступица колеса, концентратор
***
route – маршрут
****
Последние термины переводятся, соответственно, с немецкого и английского, как «огненная стена».
74
*
**
сетевой – определение маршрутов (маршрутизация) передачи пакетов, на
которые разбиваются передаваемые данные (разные пакеты из одного
сообщения могут направляться по разным путям);
транспортный – формирование адреса отправителя и получателя, разборка
данных на пакеты и сборка на компьютере–получателе с контролем доставки
пакетов и устранением возникших при этом ошибок;
сеансовый – открытие и закрытие сеанса связи с определением ее характера
(односторонняя или двухсторонняя, последовательная или параллельная
передача в обе стороны);
представительный – определение кодов и форматов передачи данных с
соответствующим их преобразованием;
прикладной – определение данных для передачи, формируемых прикладной
программой (например, отправления по электронной почте).
На компьютере отправителя выполняются этапы с 7-го по 1–ый уровень, а на
компьютере получателя те же этапы в обратном порядке для восстановления
сообщения. На промежуточных компьютерах могут выполняться с 1-го по 3ий этап для дальнейшей отправки поступившего пакета (который является
частью всего сообщения).
Отправитель
Промежуточный узел
Получатель
Представительский
7
6
7
6
Сеансовый
5
5
Транспортный
4
Сетевой
Канальный
3
3
3
2
2
2
Физический
1
1
1
4
Линии связи
II.Глобальная сеть Интернет.
Интернет – единая глобальная сеть, соединяющая между собой огромное
количество сетей по всему миру (Inter Net можно перевести как «межсеть»
или «сеть сетей»). Возникла в 60-е годы в США в результате экспериментов
по созданию жизнеспособной сети, которую нельзя было бы вывести из
строя, уничтожив один или несколько командных пунктов с центральными
компьютерами.
75
Интернет – децентрализованная сеть, не имеющая собственника или органа
управления (хотя в каждой входящей в нее сети есть собственник и
системный администратор), функционирующая и развивающаяся путем
добровольного (в том числе коммерческого) сотрудничества различных
организаций и пользователей на основе общих соглашений и стандартов
(протоколов). Зарегистрированные и пронумерованные стандарты,
протоколы, спецификации Интернета образуют систему электронных
документов RFC (Request For Comments – запрос для пояснений).
Организации обеспечивающие подключение к и предоставление услуг
Интернета – провайдеры (Internet Service Providers*) связаны
высокоскоростными магистральными каналами (кабельными, волоконнооптическими, спутниковыми, радиорелейными). Отдельный компьютер или
локальная сеть могут подключаться к провайдеру по выделенной линии
(постоянное соединение) или по коммутируемой линии (временное
подключение через модем и обычную телефонную сеть). Первый способ
более дорог, но обеспечивает более высокую скорость передачи.
Сигнал модема может передаваться (а)по обычному телефонному каналу –
коммутируемой линии, (б)по выделенной телефонной линии, (в)на базе
технологии ADSL (Asymmetric Digital Subscriber Line (Loop) – асимметричная
цифровая абонентская линия («петля»)) по обычному телефонному каналу,
не занимая его и позволяя независимо и одновременно вести телефонные
переговоры.
Скорость передачи данных через коммутируемую телефонную линию –
около 30 Кбит/сек для аналоговых телефонных линий и 60–120 Кбит/сек для
цифровых. Для выделенных телефонных линий скорость передачи до 2
Мбит/сек, для волоконно-оптических и спутниковых линий связи – сотни
Мбит/сек.
Работа Интернета основана на базовом протоколе TCP/IP**, внедренном в
1983 г. и состоящем из:
транспортного протокола TCP (Transmission Control Protocol – протокол
управления передачей), обеспечивающего «нарезку» данных на «маленькие»
пакеты (сегменты) перед отправкой и сборку после доставки;
сетевого протокола (протокол маршрутизации) IP (Internet Protocol –
межсетевой протокол), обеспечивающего выбор маршрутов по различным
*
provide – снабжать, обеспечивать; provider – поставщик.
На самом деле под этим названием объединяется целый ряд (стек) протоколов.
76
**
узлам и сетям между отправителем и получателем (возможно, различных для
разных пакетов из одного сообщения). Пакеты данных, подготовленные по
этому протоколу, называют дейтаграммами IP (или IP-пакетами). Они
включают сегменты, подготовленные по протоколу TCP, к которым
добавлены адреса отправителя и получателя.
На самом деле эти протоколы выполняют и другие задачи (например,
протокол TCP функции не только транспортного, но и сеансового уровня), не
укладываясь полностью в разделение по уровням модели взаимодействия
открытых систем, так как были разработаны до ее появления.
Каждая из информационных служб (информационных сервисов) Интернета
решает свои задачи, используя свои прикладные протоколы, опирающиеся на
базовые протоколы TCP/IP. Наиболее известные из них:
«Всемирная паутина» WWW дает возможность перемещения в огромном
информационном пространстве документов, книг, новостей, фотографий,
рисунков, учебных курсов, справочных материалов и т.д.; претендует на роль
основного носителя «коллективной памяти» человечества. Она использует
протокол http и подробнее рассмотрена далее.
Электронная почта E-Mail (Electronic mail***) позволяет обмениваться по
сети «письмами», к которым могут прилагаться дополнительные файлы. С ее
помощью можно передавать сообщения на сотовый телефон, факс, пейджер.
Для отправки корреспонденции используется протокол SMTP (Simple Mail
Transfer Protocol – простой протокол передачи почты), для получения ее из
своего «почтового ящика» на почтовом сервере – протокол POP (Post Office
Protocol – протокол почтового отделения). Протокол IMAP (Internet Message
Access Protocol – протокол доступа к сообщениям Интернета) позволяет
хранить почту в своем почтовом ящике на почтовом сервере. Для вложения в
письмо произвольных файлов применяется стандарт MIME (Multipurpose
Internet Mail Extension – многоцелевое расширение почты Интернета).
Для работы с электронной почтой используются почтовые программы
Outlook Express (входит в Microsoft Internet Explorer), Microsoft Outlook
(входит в Microsoft Office), Netscape Messenger (входит в Netscape
Communicator), The Bat! и др.
Служба передачи файлов между удаленными компьютерами используется
для передачи крупных файлов (архивов, книг и т.п.) по протоколу FTP (File
Transfer Protocol – протокол передачи файлов).
***
mail – почта
77
Служба телеконференций (новостей, новостных групп) UseNet News
(Newsgroups) обеспечивает просмотр материалов по выбранной тематике,
присылаемых на сервер телеконференции самими пользователями.
Используются также списки рассылки, формируемые с участием
администратора (модератора) конференции и рассылаемые подписавшимся
абонентам.
До повсеместного распространения Интернета функции телеконференций во
многом выполняли электронные доски объявлений BBS (Bulletin Board
System – система электронных бюллетеней), наиболее известной системой
которых является сеть FidoNet, подключение к ним осуществляется по
малым компьютерным сетям с одним сервером с помощью модемов через
телефонные линии.
Служба интерактивного общения IRC (Internet Relay Chat – дословно,
Интернет–трансляция болтовни), которую часто называют чатконференциями или просто чатом, поддерживает коллективный разговор,
участники которого набирают свои реплики на клавиатуре и видят сказанное
другими на мониторе.
Система интернет-пейджинга ICQ (эти буквы звучат как английская фраза
«I seek you» – я ищу тебя, а на жаргоне русского Интернета эту систему
называют «аськой») дает возможность обмениваться сообщениями и
файлами в режиме реального времени. Эта система обеспечивает поиск
сетевого адреса абонента (постоянного или временного), если он в данный
момент подключен к сети, по его персональному идентификационному
номеру UIN (Universal Internet Number), получаемому при регистрации на
центральном сервере данной службы.
Режим Telnet служит для удаленного управления (по протоколу Telnet) через
Интернет другими компьютерами и установленными на них программами,
например, подключеннымми к аппаратуре для проведения экспериментов
или выполняющими сложные математические расчеты.
Важными направлениями использования Интернета являются Интернеттелефония (IP-телефония) – передача телефонных разговоров и факсов по
Интернету в кодировке, соответствующей протоколу IP, трансляция по
Интернету радио- и телевизионных передач, беспроводное подключение к
Интернету с мобильных телефонов: непосредственно по протоколу WAP
(Wireless Application Protocol – протокол беспроводных приложений), или
через компьютер по протоколу GPRS (General Packet Radio Service).
Шифрование передаваемой по Интернету информации обеспечивается
протоколом SSL (Secured Socket Layer).
78
III.Адресация в Интернете.
Каждый компьютер, подключенный к Интернет, получает уникальный
(неповторяющийся) IP-адрес (то есть адрес, соответствующий протоколу IP).
При постоянном подключении этот адрес закреплен за ним, при временном –
выделяется временный (динамический) адрес на сеанс*.
Физический IP-адрес представляет собой 32-битное (4-х байтное) двоичное
число, которое принято записывать, переводя каждый байт в десятичное
число, и разделяя их точками. Это число кодирует сеть, через которую
компьютер входит в Интернет, и номер компьютера в сети. В зависимости от
допустимого числа компьютеров сети разделяются на три класса:
Адрес
Макс.
число
Клас
компьют
Первое число
Адрес сети
компьютеров в
с
ера
IP-адреса
сети
в сети
A
0 7 бит
24 бита
224 – 2 = 16 777 0 – 126
214
B
1 0 14 бит
16 бит
216 – 2 = 65 534
128 – 191
C
1 1 0 21
8 бит
28 – 1 = 254
192 – 223
бит
Например, адрес 197.98.140.101 соответствует номеру узла 0.0.0.101 в сети
197.98.140.0 класса C.
Несколько IP-адресов зарезервировано для специальных целей, например,
адрес 127.0.0.0–127.0.0.255 обеспечивает обращение пользователя к себе
самому (используется для тестирования программ). Номер сети с номером
компьютера, равным 0, обозначает всю эту сеть, а с максимально возможным
номером (255 для сети C) – используется для широковещательного
сообщения, отправляемого всем компьютерам сети.
Пользователям удобнее работать не с физическими адресами, а с доменными
именами сетей и компьютеров в Интернет. Такое имя состоит из разделенных
точками символьных обозначений доменов** – фрагментов сети. Справа
налево указываются самый обширный, старший домен (первый или верхний
уровень), затем более младшие, вложенные один в другой домены, и так
далее до самого левого домена, соответствующего конечному узлу сети. В
Компьютер, который постоянно подключен к сети и через который подключаются временные
пользователи, называют хост-компьютером (host (англ.) – хозяин).
**
dominium (лат.) – владение.
79
*
начале доменного имени перед именем компьютера может указываться
служба Интернета, в которой работает данный узел сети (например, www. –
«всемирная паутина» или ftp. – служба пересылки файлов).
Домены верхнего уровня обозначают чаще всего двумя (страна) или тремя
(тип организации) буквами.
Домен
Домен
верхнего
Страна
верхнего
Тип организации
уровня
уровня
ca
Канада
com
Коммерческая
de
Германия
edu
Образовательная
jp
Япония
gov
Правительственная
(США)
ru
Россия
int
Международная
uk
Великобритан net
Компьютерная сеть
ия
us
США
org
Некоммерческая
Однозначное соответствие между физическими и доменными именами
обеспечивается специальной службой (системой) доменных имен Интернета
– DNS (Domain Name Syervice (System)), состоящей из компьютеров, которые
называют DNS-серверами (у каждого домена есть обслуживающий его DNSсервер). Пользователь имеет дело с доменными именами, а передача данных
между
компьютерами
осуществляется
по
физическим
адресам,
автоматически определяемым путем обращения к соответствующим DNSсерверам.
Доменные имена и физические IP-адреса распределяются международным
координационным центром доменных имен и IP-адресов (ICANN), в который
входят по 5 представителей от каждого континента (адрес в Интернет
www.icann.org).
Для доступа к файлу (программе, документу) в Интернете нужно указать
URL-адрес (Uniform* Resource Locator – унифицированный указатель
ресурсов), состоящий из:
названия протокола, используемого для доступа к файлу и отделенного от
последующей части двоеточием и двумя косыми чертами;
доменного имени компьютера, отделяемого от последующего косой чертой;
Иногда, вероятно, неправильно, первую букву аббревиатуры расшифровывают как Universal –
универсальный.
80
*
полного имени файла на компьютере (без указания логического диска),
включающего, как известно, путь доступа (перечень вложенных каталогов),
собственно имя и расширение файла.
В URL-адресе могут использоваться только латинские буквы (строчные и
прописные буквы считаются различными) без пробелов. Путь и имя файла
могут отсутствовать, что соответствует обращению к самому компьютеру
(серверу).
Адрес ftp://ftp.netscape.com/books/history.doc используется при получении
файла history.doc, расположенного на сервере netscape коммерческого домена
Интернета с использованием протокола передачи файлов ftp (службы ftp).
Для работы с электронной почтой необходимо зарегистрировать на одном из
серверов Интернета свой почтовый ящик, которому присваивается адрес
электронной почты. Такой адрес состоит из доменного имени сервера и
записанного перед ним имени почтового ящика (его выбирает пользователь
при регистрации). Две эти части адреса разделяются символом @.
IV.Всемирная паутина и гипертексты в Интернете.
«Всемирная паутина» WWW (World Wide Web – мировая обширная паутина)
или Web охватила огромный объем информационных ресурсов и является
наиболее широко используемой службой Интернета. В этой системе легко
найти новости, справочные и нормативные материалы, книги, статьи,
рефераты, мнения и советы экспертов и т.д. практически по любой теме.
Эта служба основана на представлении документов в виде гипертекста –
текста, элементы которого (фразы, слова, рисунки) могут отсылать к другим
фрагментам этого же текста или другим документам, расположенным,
возможно, в другом компьютере на «другом конце света». Ссылки
(гиперссылки, гиперсвязи) обычно помечаются особым цветом и шрифтом, а
переход по ним выполняется автоматически после щелчка манипулятором
мыши по метке. Таким образом, разнообразная информация оказывается
связанной между собой переплетающейся паутиной ссылок, а введенные в
систему коллективные знания человечества в определенной мере
уподобляются индивидуальной памяти, сплетаемой в одно целое
ассоциациями и смысловыми связями.
«Всемирная паутина» WWW на основе гипертекстов была разработана в
1989 г. английским ученым Тимоти Бернерс-Ли для Европейской
Лаборатории Физики элементарных частиц, базирующейся в Швейцарии и
объединяющей физиков из различных стран мира. Сама концепция
81
гипертекста
Нельсоном.
предложена
американским
ученым
Теодором
Хольмом
Документ, представленный в WWW называют Web-страницей, а компьютер,
на котором расположены такие документы – Web-сервером. Web-страницы
создаются с помощью языка разметки текстов HTML (Hyper Text Markup
Language), который позволяет определить гиперсылки и организацию текста,
включая в него управляющие символы – тэги (теги) (tag – ярлычок).
Форматирование Web-страницы на мониторе определяется управляющими
конструкциями разметки (тэгами) и конкретными настройками компьютера.
На Web-странице можно помещать рисунки (рекомендуется использовать
один из 3–х графических форматов – gif, jpg(jpeg), png), мультимедийные
объекты (анимацию, вызов звуковых и видео–файлов), формы для диалога с
пользователем, элементы управления (ActiveX), запускающие программы.
Такие программы чаще всего составляются на языке программирования Java
(Ява), специально предназначенным для поддержки Web-страниц.
Трансляторы с этого языка являются интерпретаторами, что позволяет писать
универсальные программы, работающие на разных компьютерах и в разных
операционных системах.
Набор связанных в одно целое гиперссылками и переходами Web-страниц
образует Web-сайт (site – участок).
Для доступа к Web-страницам используется протокол передачи гипертекста
HTTP (Hyper Text Transfer Protocol).
Просмотр Web-страниц и перемещение между ними в информационном
пространстве сети по гиперссылкам (навигацию в сети) обеспечивают
специальные программы «просмотрщики» или «навигаторы» – браузеры
(brows – просмотр). Наиболее часто используются браузеры Internet Explorer
(фирмы Microsoft) и Netscape Navigator (фирмы Netscape).
Широкие возможности предоставляет использование поисковых систем
(поисковых серверов) Web, которые выдают подборку всех документов
WWW, содержащих ключевые слова из запроса пользователя. Самые
известные и эффективные поисковые серверы – Google, Yahoo, AltaVista, а
для русскоязычного Интернета – Rambler, Яндекс.
Быстрота поиска информации в таких системах обеспечивается невидимой
для пользователя работой специальных программ («поисковых роботов»),
непрерывно сканирующих различные Web–сайты и обновляющих списки
82
встречающихся на них терминов (индексы поисковой системы). При этом
формируются также рубрикаторы (каталоги) – иерархические структуры
тем и понятий, передвигаясь по которым пользователь может найти нужные
документы.
83
Лекция 7 (2 часа)
Информационная безопасность
В связи с все возрастающей ролью информации в жизни общества вопросы
информационной безопасности занимают особое место и требуют к себе все
большего внимания. Первичным является понятие информационной
безопасности - это защищенность информации и поддерживающей
инфраструктуры от случайных или преднамеренных воздействий
естественного или искусственного характера, чреватых нанесением ущерба
владельцам или пользователям информации.
Безопасность данных - такое состояние хранимых, обрабатываемых и
принимаемых данных, при которых невозможно их случайное или
преднамеренное получение, изменение или уничтожение.
Защита данных - совокупность целенаправленных действий и мероприятий
по обеспечению безопасности данных. Таким образом, защита данных есть
процесс обеспечения безопасности данных, а безопасность - состояние
данных, конечный результат процесса защиты. Защита данных
осуществляется с использованием методов (способов) защиты.
Метод (способ') защиты данных - совокупность приемов и операций,
реализующих функции защиты данных. Примерами их могут служить,
например, методы шифрования и паролирования.
На основе методов защиты создаются средства защиты (например,
устройства шифрации/дешифрации, программы анализа пароля, датчики
охранной сигнализации и т.д.).
Механизм защиты - совокупность средств защиты, функционирующих
совместно для выполнения определенной задачи по защите данных
(криптографические протоколы, механизмы защиты операционных систем
и т.д.). Система обеспечения безопасности данных (СОБД) - совокупность
средств и механизмов защиты данных.
Концептуальная модель безопасности информации представлена на рис. 1.
84
Сведения о составе, -за счет разглашения
состоянии и
-за счет утечки
деятельности
-за счет НСД
Объекты угроз
Способы доступа
-целостности
-конфиденциальности
-полноте
-доступности
Угрозы
Источники угроз
-конкуренты
-преступники
-административные органы
-правовая
-организационная
-инженерно-техническая
Направления защиты
Информация
Способы
защиты
-физические
-аппаратные
-программные
-криптографические
Средства защиты
-упреждение
-предотвращение
-пресечение
-противодействие
Источники информации
Цели
-ознакомление
-модификация
-уничтожение
-люди
-документы
-публикации -тех.носители
-тех.средства -продукция
-отходы
Рис. 1. Концептуальная модель безопасности информации
Информационная безопасность и её составляющие
Гарантами национальной безопасности РФ являются: Президент РФ, а также
законодательные и иные правовые акты РФ, регулирующие правовые
отношения в сфере информационной безопасности (ИБ) и защиты
государственной тайны.
Угрозами информационной войны для РФ являются:
значительная
протяженность территории и открытость границ.
Концепция системы защиты от информационного оружия должна включать в
себя:
механизмы защиты пользователей от различных типов и уровней угроз для
национальной информационной инфраструктуры;
процедуры оценки уровня и особенностей атаки против национальной
инфраструктуры в целом и отдельных пользователей;
признаки, сигнализирующие о возможном нападении.
Основные угрозы безопасности данных
Для того чтобы сформулировать главную цель защиты данных, необходимо
определить потенциально существующие возможности нарушения
безопасности хранимых, обрабатываемых и передаваемых данных. Знание
возможных угроз, а также уязвимых мест защиты, которые эти угрозы
обычно используют, необходимо для того, чтобы выбирать наиболее
экономичные средства обеспечения информационной безопасности.
Под угрозой безопасности данных будем понимать потенциально
существующую возможность случайного или преднамеренного действия или
бездействия, в результате которого может быть нарушена безопасность
данных. Несанкционированный доступ к данным (НСД) - злоумышленное
или случайное действие, нарушающее технологическую схему обработки
85
данных и ведущее к получению, модификации или уничтожению данных.
НСД может быть пассивным (чтение, копирование) и активным
(модификация, уничтожение).
Классификация угроз безопасности данных приведена на рис. 2.
Угрозы безопасности данных
Каналы утечки
Косвенные
Прямые
Воздействие
Случайные (природная среда)
Целенаправленные (нарушитель)
Внутренние (внутрисистемные)
Отказы технических средств
и программного обеспечения
Действия обслуживающего
персонала
Рис. 2. Классификация угроз безопасности данных
Воздействия, в результате которых может быть нарушена безопасность
данных, включают в себя:
случайные воздействия природной среды (ураган, пожар и т.п.);
целенаправленные воздействия нарушителя (шпионаж, разрушение
компонентов
ин
формационной системы, использование прямых каналов утечки данных);
внутренние возмущающие факторы (отказы аппаратуры, ошибки в
математическом
и
программном обеспечении, недостаточная подготовка персонала и т.д.).
Под каналом утечки данных будем понимать потенциальную возможность
нарушителю получить доступ к НСД, которая обусловлена архитектурой,
технологической схемой функционирования информационной системы, а
также существующей организацией работы с данными. Все каналы утечки
данных можно разделить на косвенные и прямые.
Косвенными называются такие каналы утечки, использование которых для
НСД не требует непосредственного доступа к техническим устройствам
информационной системы. Они возникают, например, вследствие
недостаточной изоляции помещений, просчетов в организации работы с
данными и предоставляют нарушителю возможность применения
подслушивающих устройств, дистанционного фотографирования, перехвата
электромагнитных излучений, хищения носителей данных и отходов и т.п.).
Прямые каналы утечки данных требуют непосредственного доступа к
техническим средствам информационной системы и данным. Наличие
прямых каналов утечки обусловлено недостатками технических и
программных средств защиты, ОС, СУБД, математического и программного
обеспечения. Прямые каналы утечки данных позволяют нарушителю
86
подключиться к аппаратуре информационной системы, получить доступ к
данным и выполнить действия по анализу, модификации и уничтожению
данных.
Технические каналы утечки информации классифицируются по физической
природе носителя. С учетом физической природы путей переноса
информации каналы утечки данных можно классифицировать на следующие
группы:
визуально-оптические - источником информации здесь служит, как правило,
непосредственное или удаленное наблюдение (в том числе и
телевизионное);
акустические - источником информации здесь служат речь и шумы, средой
распространения звука являются воздух, земля, вода, строительные
конструкции (кирпич, железобетон, металлическая арматура и др.);
электромагнитные (включая магнитные и электрические) - источником
информацииздесь служат различные провода и кабели связи, создающие
вокруг себя магнитное иэлектрическое поле, информацию с которых
можно перехватить путем наводок надругие провода и элементы
аппаратуры в ближней зоне их расположения;
материально-вещественные (бумага, фото, магнитные носители и т.д.).
Основные методы и средства защиты данных
На первом этапе развития концепций обеспечения безопасности данных
преимущество отдавалось программным средствам защиты. Когда практика
показала, что для обеспечения безопасности данных этого недостаточно,
интенсивное развитие получили всевозможные устройства и системы.
Постепенно, по мере формирования системного подхода к проблеме
обеспечения безопасности данных, возникла необходимость комплексного
применения методов защиты и созданных на их основе средств и
механизмов защиты. Обычно на предприятиях в зависимости от объема
хранимых, передаваемых и обрабатываемых конфиденциальных данных за
информационную безопасность отвечают отдельные специалисты или
целые отделы.
Рассмотрим кратко основные методы защиты данных. Классификация
методов и средств защиты данных представлена на рис. 3.
87
формальные
управление
препятствия
Методы
защиты
данных
маскировка
регламентация
побуждение
принуждение
технические
физические
аппаратные
криптографические
программные
неформальные
Средства
защиты
данных
организационные
законодательные
морально-этические
Рис. 3. Классификация методов и средств защиты данных
Управление представляет собой регулирование использования всех ресурсов
системы в рамках установленного технологического цикла обработки и
передачи данных, где в качестве ресурсов рассматриваются технические
средства, ОС, программы, БД, элементы данных и т.п.
Препятствия физически преграждают нарушителю путь к защищаемым
данным.
Маскировка представляет собой метод защиты данных путем их
криптографического закрытия.
Регламентация как метод защиты заключается в разработке и реализации в
процессе функционирования информационной системы комплексов
мероприятий, создающих такие условия технологического цикла обработки
данных, при которых минимизируется риск НСД к данным. Регламентация
охватывает как структурное построение информационной системы, так и
технологию обработки данных, организацию работы пользователей и
персонала.
Побуждение состоит в создании такой обстановки и условий, при которых
правила обращения с защищенными данными регулируются моральными и
нравственными нормами.
Принуждение включает угрозу материальной, административной и
уголовной ответственности за нарушение правил обращения с защищенными
данными.
Отдельную
группу
формальных
средств
защиты
составляют
криптографические средства, которые м. б. реализованы в виде
программных, аппаратных и программно-аппаратных средств защиты.
Криптография
связана
с
шифрованием
и
расшифровыванием
конфиденциальных данных в каналах коммуникаций. Она также применяется
для того, чтобы исключить возможность искажения информации или
подтвердить ее происхождение. Криптографические преобразования
призваны для достижения двух целей по защите информации. Во-первых,
88
они обеспечивают недоступность ее для лиц, не имеющих ключа и, вовторых, поддерживают с требуемой надежностью обнаружение
несанкционированных искажений.
Криптографические преобразования: шифрование и кодирование.
Шифрование возможно осуществить с помощью нескольких методов.
Шифрование заменой (подстановка)-символы шифруемого текста
заменяются другими символами (А-м, Б-л и т. д.); Шифрование методом
перестановки (например, Стул можно зашифровать Тсул), шифрование с
использованием ключей: если для шифрования и расшифровывания
используется один ключ, то такой криптографический процесс называется
симметричным. Недостаток этого процесса в том, что для передачи ключа
надо использовать связь, а она должна тоже быть защищенной. Т. е.
проблема повторяется. Поэтому в Интернет используют несимметричные
криптографические системы, основанные на использовании не одного, а двух
ключей, один открытый (Public-публичный), а другой закрытый (privateличный). Например, фирма отправляет клиенту квитанцию о том, что заказ
принят к исполнению, она закодирует ее своим закрытым ключом, а клиент
прочитает ее, воспользовавшись имеющимся у него публичным ключом
данной фирмы.
Кодирование бывает двух типов: Смысловое по специальным таблицам и
Символьное – по кодовым алфавитам.
Таким образом:
Показателями безопасности информации являются
время, в течение
которого обеспечивается определенный уровень безопасности.
Основные виды защищаемой информации по содержанию: секретная и
несекретная.
Компьютерные вирусы и другие угрозы, а также средства защиты
В человеко-компьютерных системах необходимо обеспечивать защиту
информации от следующих угроз: сбоев оборудования; случайной потери
или изменения; преднамеренного искажения; компьютерных вирусов.
Компьютерный вирус - небольшая программа, которая без ведома
пользователя, приписывая себя к другим программам, проникает на диск
через приносимые на компьютер диски или по компьютерной сети,
распространяется на нем и производит какие-то вредные действия
(например, портит данные, нарушает нормальную работу программ и т.п.).
В настоящее время существует более 150 000 вирусов.
89
Иногда компьютерный вирус приписывает себя не к файлам, а к
загрузочному сектору (имеющемуся на каждом диске, в котором
содержится служебная информация о структуре файлов и каталогов на нем).
Написание компьютерного вируса - не очень сложная работа, доступная
профессиональным программистам среднего уровня. Люди, которые
занимаются написанием компьютерных вирусов (хакеры) делают это
потому, что либо не могут найти более достойного применения своим
знаниям, либо из желания (а иногда и политики) нанести вред какой-либо
фирме или организации, либо просто из баловства.
Бывают относительно «безобидные» компьютерные вирусы, которые
приводят к тому, что в ходе работы зараженной программы (т.е. программы,
к которой приписался вирус) на экран выводятся какие-то сообщения, ее
работа прерывается паузами и т.п. Однако в любом случае такие вирусы не
позволяют продолжить нормальную работу пользователя с компьютером.
Существуют и очень опасные компьютерные вирусы, которые способны
безвозвратно уничтожать информацию на диске. Заражение компьютерным
вирусом может привести к очень серьезным последствиям. Например, в 1989
году вирус, написанный американским студентом Моррисом, вывел из строя
тысячи компьютеров, часть из которых принадлежала министерству
обороны США.
Наибольшая опасность компьютерных вирусов заключается в том, что они
распространяются без ведома пользователя. Для борьбы с ними нужно четко
представлять, когда может произойти заражение вирусом. Это может
случиться, если на компьютере хотя бы раз была выполнена зараженная
программа, например, принесенная с другого компьютера. Компьютерные
вирусы не могут совершать сверхъестественных действий, поэтому не стоит
преувеличивать их возможностей. Известны комичные случаи
«вирусофобии», когда из-за боязни заражения компьютерными вирусами
пользователи при хранении дискет прокладывали между ними листы
бумаги «чтобы вирусы не перескочили с одной дискеты на другую».
Исторически сложились четыре вида вирусов: загрузочные - присоединяются
к загрузочным модулям и распространяются с помощью дискет, поэтому
скорость их распространения не велика; макровирусы
используют
недостатки системы Windows, присоединяются к документам создаваемым
офисными пакетами, имеют более высокую скорость распространения вместе
с документами в т.ч. и по сети; черви присоединяются к любым письмам,
циркулирующим в сети, и имеют очень высокую скорость распространения;
90
сетевые черви рассылают себя сами, заражая все подключённые к сети
компьютеры.
История вирусов
Время
Вид вируса Носитель
Время появления
глобального
распространения
загрузочный программа на дискете 1986 (Brain)
год
макровирус макрокоманда
в 1995
месяц
документе
червь
электронное письмо
1999 (Ilovel)
день
сетевой
сеть
2001 (Blaster)
час
червь
Классификация вирусов по среде обитания
Сетевые вирусы используют для своего распространения команды и
протоколы телекоммуникационных сетей.
Файловые вирусы чаще всего внедряются в исполняемые файлы, имеющие
расширение exe и com, но могут внедряться и в файлы с компонентами
операционных систем, драйверы внешних устройств, объективные файлы и
библиотеки, в командные пакетные файлы. При запуске зараженных
программ вирус на некоторое время получает управление и в этот момент
производит запланированные действия и внедрение в другие файлы
программ.
Загрузочные вирусы внедряются в загрузочный сектор дискеты или в
главную загрузочную запись жесткого диска. Такой вирус изменяет
программу начальной загрузки оперативной системы, запуская необходимые
для нарушения конфиденциальности программы или подменяя, для этой же
цели ,системные файлы, в основном это относится к файлам.
обеспечивающим доступ пользователей в систему.
Документные вирусы (макровирусы) заражают текстовые файлы редакторов
или электронных таблиц, используя макросы, которые сопровождают такие
документы. Вирус активизируется, когда документ загружается в
соответствующее приложение.
Классификация вирусов по способу заражения:
Резидентные вирусы после завершения работы инфицированной программы
остаются в оперативной памяти и продолжают свои деструктивные действия,
заражая другие исполняемые программы, вплоть до выключения
компьютера.
91
Нерезидентные вирусы запускаются вместе с зараженной программой и
удаляются из памяти вместе с ней.
Классификация вирусов по алгоритмам функционирования:
Паразитирующие – изменяющие содержимое зараженных файлов. Легко
удаляются из файлов.
Троянские кони – маскируемые под полезные программы. Нарушают работу
системы и собирают сведения, содержащиеся в ней.
Вирусы – невидимки – способны прятаться при попытке их обнаружения. По
типу маскировки вирусы делятся на видимые и невидимые.
Мутирующие вирусы – периодически изменяют свой программный код,
поэтому их обнаружение очень затруднительно.
Основные признаки проявления вирусов в компьютере
Основные действия (фазы), выполняемые компьютерным вирусом это:
заражение,
размножение, проявление. Симптомами заражения являются:
Отказ в работе в работе компьютера или его отдельных компонентов;
Отказ в загрузке операционной системы;
Замедление работы компьютера;
Нарушение работы отдельных программ;
Искажение, увеличение размера или исчезновение файлов;
Уменьшение доступной оперативной памяти и свободного места на диске без
видимых причин.
Классификация антивирусных средств.
Для обнаружения и удаления компьютерных вирусов разработано много
различных программ, которые можно разделить на детекторы, ревизоры,
фильтры, доктора и вакцины. Детекторы осуществляют поиск
компьютерных вирусов в памяти и при обнаружении сообщают об этом
пользователю. Ревизоры выполняют значительно более сложные действия
для обнаружения вирусов. Они запоминают исходное состояние программ,
каталогов, системных областей и периодически сравнивают их с текущими
значениями. При изменении контролируемых параметров ревизоры
сообщают об этом пользователю. Фильтры выполняют выявление
подозрительных процедур, например, коррекция исполняемых программ,
изменение загрузочных записей диска, изменение атрибутов или размеров
файла и др. При обнаружении подобных процедур фильтры запрашивают
пользователя о правомерности их выполнения. Доктора являются самым
распространенным типом антивирусных программ. Эти программы не только
обнаруживают, но и удаляют вирусный код из файла- «лечат программы».
92
Доктора способны обнаружить и удалить только известные им вирусы,
поэтому их необходимо периодически, обычно раз в месяц, обновлять.
Вакцины- это антивирусные программы, которые так модифицируют файл
или диск, что он воспринимается программой- вирусом уже зараженным и
поэтому вирус не внедряется.
Современные антивирусные решения обладают всеми означенными
механизмами и постоянно добавляют новые средства борьбы с
вредоносными программами.
Мероприятия по защите информации от компьютерных вирусов
Предотвращение доступа к компьютеру посторонних лиц. Бывает, что
заражение вирусом происходит, когда на компьютер пустили поработать
какого-то человека, который принес свои дискеты со своими программами,
оказавшимися зараженными.
Использование только надежного лицензионного программного обеспечения.
Не следует без разбора копировать на свой компьютер понравившиеся или
нелицензионные программы. В особенности это касается компьютерных игр,
именно с ними компьютерные вирусы и передаются чаще всего.
Отслеживание любых изменений в работе компьютера для возможно более
быстрого обнаружения компьютерного вируса. К таким изменениям
относятся: нарушения работы программ, которые раньше работали
нормально, появление каких-либо посторонних сообщений на экране и т.п.
Чем раньше удастся обнаружить компьютерный вирус, тем больше шансов,
что он не успел сильно распространиться на диске и заразить много
программ, а значит, последствия заражения вирусом будут минимальными.
Важно иметь в виду, что некоторые компьютерные вирусы характеризуются
«инкубационным периодом», т.е. после проникновения на диск в течение
определенного времени они только распространяются на нем, не производя
никаких вредных действий, а проявляют себя только потом, когда
зараженным оказывается не один десяток файлов.
Размещение наиболее ценной информации на защищенных от записи дисках.
Если запись на диск запрещена, то, очевидно, компьютерный вирус не может
приписать себя к файлам на нем, и заражение защищенного диска будет
невозможным.
Использование антивирусных программ для постоянной и периодической
проверки компьютера. Важно помнить, что антивирусные программы быстро
устаревают, так как новые компьютерные вирусы появляются быстрее их,
также как яд всегда появляется раньше противоядия.
Мероприятия по защите информации от случайного удаления
93
Аккуратность и внимательность при работе.
Размещение наиболее ценной информации на защищенных от записи дисках.
Понятно, что с защищенных дисков даже специально удалить информацию
невозможно.
Своевременное удаление ненужных файлов и рациональное размещение
файлов по каталогам. С течением времени на диске появляется все больше и
больше файлов, таким образом, диск забивается. Постепенно пользователь
забывает, что в каком файле находится, и в каких каталогах (папках)
содержится нужная информация. В результате, когда возникнет
необходимость освободить место на диске, могут быть удалены файлы,
содержащие ценную информацию. Поэтому необходимо периодически
приводить диски в порядок.
Быстрое восстановление ошибочно удаленных файлов при помощи
специальных программ. Дело в том, что при удалении файла информация с
диска не стирается, просто на его место разрешается запись другой
информации. Если пользователь быстро обнаружил свою ошибку, у него
остаются шансы восстановить случайно удаленную информацию, причем,
если после удаления он не копировал, не перемещал другие файлы, не
запускал другие программы или не перезапускал компьютер, эти шансы
будут выше. Для восстановления ошибочно удаленных файлов существуют
специальные программы. В операционной системе Windows копии
удаленных файлов автоматически помещаются в специальную папку
(каталог) - «Корзина», откуда в случае необходимости их можно
восстановить.
Мероприятия по защите информации от сбоев в работе устройств
Периодическая проверка исправности оборудования.( в частности
поверхности жёсткого диска).Иногда для исправления ошибок, используется
специальная процедура - корректирующий код.
Периодическая оптимизация(дефрагментация) диска для рационального
размещения файлов на нём, ускорения работы и уменьшения его износа.
Наличие загрузочных (системных) дискет или дисков, с которых можно
запустить компьютер (т.е. загрузить операционную систему) в случае сбоев
системного диска.
КОМПЬЮТЕРНАЯ БЕЗОПАСНОСТЬ
I.Допуск пользователя и предоставление прав доступа.
94
Необходимы идентификация (определение «кто это» – группы и, возможно,
имени для выяснения на какие действия он имеет право) и аутентификация
(проверка подлинности, действительно ли «он это он») пользователя.
Например, при входе в систему пользователь вводит свое имя
(идентификация) и пароль (аутентификация). В банкоматах: идентификация
– ввод карточки, аутентификация – набор PIN (PersonaI Identification Number)
кода.
Могут использоваться токены – физические ключи или магнитные карты,
которые пользователь вставляет в считывающее устройство (token –
опозновательный знак).
II.Шифрование сообщений.
Для шифрования используются методы криптографии, для вскрытия
(взлома) зашифрованных данных – методы криптоанализа.
Нужно использовать общеизвестные и проверенные алгоритмы шифрования
(свой алгоритм может оказаться легко взламываемым) и промышленно
выпускаемые пакеты программ (разработка своей программы очень
трудоемка). При этом нельзя допустить расшифровку посторонними,
знающими алгоритм и имеющими аналогичный пакет.
Традиционные
методы
шифрования
(симметричное
шифрование,
шифрование с одним ключом, шифрование с закрытым ключом) –
составитель и получатель сообщения знают секретный ключ (большое
двоичное число), который используют для шифровки и расшифровки текста.
Упрощенно, можно представить ключ как матрицу, на которую умножаются
блоки определенной длины двоичного представления исходного текста. Для
расшифровки достаточно умножить на обратную матрицу. В реальных
алгоритмах используют операции сдвига (блоки цифр увеличиваются на
определенные величины) и перестановки (фрагменты блока меняются
местами), последовательность и характеристики которых задаются ключом.
Наиболее распространен стандарт (алгоритм) симметричного шифрования
DES (Data Encryption Standard), использующий 56-битовый закрытый ключ
(реальная длина ключа 64 бита за счет информации для контроля) и
опубликованный в 1977 году. При шифровании используются 16 проходов
текста так, что каждый бит блока зашифрованного текста зависит от каждого
бита блока исходного текста и каждого бита ключа.
95
Недостаток любой системы симметричного шифрования – нужен личный
контакт обеих сторон (не по сети, не компьютерный) для передачи каждого
секретного ключа без угрозы перехвата.
Ассиметричные системы шифрования (нетрадиционные системы,
шифрование с двумя ключами, шифрование с открытым ключом) – будущий
получатель сообщения создает два ключа: закрытый (секретный), который
сохраняет только у себя и открытый, который по любому каналу, не скрывая,
передает будущему отправителю. Зашифрованное отправителем с помощью
открытого ключа сообщение нельзя расшифровать, не зная закрытый ключ.
С помощью открытого ключа выполняются математические преобразования
с блоками исходного текста. Для нахождения обратного преобразования
нужно либо знать закрытый ключ, либо решить уравнение в целых числах,
требующее перебора большого числа вариантов, не выполнимого за реальное
время на самых мощных компьютерах. Условный иллюстрационный пример
приведен в приложении.
Наиболее широко применяется для шифрования с открытым ключом
алгоритм (система) RSA (по фамилиям авторов – Rivest, Shamir, Adleman),
предложенный в 1978 году.
Алгоритмы ассиметричного шифрования требуют значительно больших
затрат машинного времени. Поэтому используются комбинированное
(гибридное) шифрование с созданием электронного цифрового конверта
RSA (RSA digital envelope) – пользователь создает секретный ключ, шифрует
им все большое сообщение по DES, сам (относительно короткий) секретный
ключ шифрует своим открытым ключом по RSA и отправляет адресату в
одном пакете. Получатель своим секретным ключом по RSA
расшифровывает секретный ключ отправителя, а с его помощью по DES
основное сообщение.
При использовании открытого ключа (в том числе цифровых конвертов),
доступного посторонним, имеется опасность фальсификации – отправки
сообщения третьим лицом от имени пользователя.
III.Цифровая подпись (ЭЦП – электронная цифровая подпись).
Задача заключается в добавлении к основному сообщению дополнительных
данных (в виде дополнительного документа или в текст самого сообщения)
так чтобы: (а)гарантировалось авторство; (б)автор не мог отказаться,
96
сославшись на отправку кем-то от его имени; (в)гарантировалась
целостность сообщения (никто не изменил, прехватив «по дороге»).
Первые две задачи решаются применением ассиметричного шифрования «в
обратной последовательности» – отправитель создает секретный ключ
(оставляет только себе) и открытый ключ, который открыто помещает в
справочнике, в Интернет и т.п. С помощью секретного ключа он шифрует
открытое кодовое слово (свое название или тот же открытый ключ) и
прилагает к сообщению. Любой получатель может расшифровать эту часть
сообщения с помощью открытого ключа. Если при этом действительно
получается кодовое слово, значит шифрование могло быть выполнено только
определенным секретным ключом, который может быть известен только
предполагаемому автору.
Для гарантии целостности документа в дополнительную шифруемую
секретным ключом информацию (цифровую подпись) включается дайджест
(сжатый образ исходного текста) основного документа, например,
контрольная сумма или более сложная функция образующих его двоичных
цифр. Если после расшифровки она совпадает с реальной характеристикой
полученного сообщения, – значит оно не было подменено «по дороге».
Таким образом, для формирования цифровой подписи нужна специальная
информация отправителя (секретный и открытый ключ, кодовое слово) и сам
файл исходного документа (для получения дайджеста).
IV.Защита от вирусов и вредоносных программ.
Вирусы – специально разработанные программы, которые самопроизвольно
копируются («саморазмножаются»), включаясь в текст других файлов
(программ) или занимая загрузочные (используемые при запуске) сектора
дисков, т.е. «заражая» файлы и диски.
Название дано Ф. Когеном (США) по аналогии с биологическими объектами,
которые паразитируют на клетках живых организмов, проникая в них и
размножаясь за их счет путем перехвата управления системой
наследственности. Само латинское слово «вирус» означает «яд».
Вирусы перехватывают управление при обращении к зараженым файлам и
дискам, обеспечивая дальнейшее свое распространение. При этим они могут
вызывать помехи – от появления посторонних надписей на экране,
замедления работы компьютера и вплоть до полного стирания
долговременной памяти с уничтожением всей информации и всех программ.
Аналогичные эффекты могут вызывать другие типы вредоносных программ,
рассматриваемые наряду с вирусами (иногда их все вместе называют
97
вирусами, но это не верно): (а)«троянские кони» («трояны») – программы,
рекламируемые и распространяемые как выполняющие определенные
полезные функции (игры, обслуживание диска) и т.п., но при запуске,
причиняющие вред; (б)«часовые бомбы» – фрагменты программ,
активизирующиеся для нанесения вреда в определенное время и дату;
(в)репликаторы («черви», «сетевые черви») – программы, массово
самокопирующиеся («расползающиеся») по сети, используя адресную книгу
компьютера и захватывающие ресурсы отдельных компьютеров и сети.
В составе программы–вируса выделяют:
а)«голову» – начальный код, который перехватывает управление обращение к
диску или зараженной вирусом программе–носителю;
б)«хвост» (иногда говорят «тело») – основную часть вируса,
осуществляющую копирование и вредоносные действия.
По среде обитания вирусы подразделяют на:
а)Файловые – внедряются в файлы, чаще всего исполняемые файлы
программ с расширение .com или .exe, но также и, в виде макросов, в
документы MS OFFICE – макровирусы (документные), и в элементы
управления Web страниц Интернет – скриптовые вирусы.
б)Загрузочные (бутовые) – внедряются в загрузочные (используемые при
запуске диска) сектора дисков (Boot–сектора).
в)Файлово–загрузочные – внедряются и в файлы и в загрузочные сектора.
Иногда сетевые репликаторы (черви) тоже включают в понятие вирусов и
классифицируют по среде обитания как сетевые вирусы.
По способу заражения вирусы подразделяют на:
а)Резидентные – после начала действия остаются в оперативной памяти до
выключения компьютера и перехватывают команды операционной системы
для заражения новых файлов и дисков (как правило, загрузочные вирусы
являются резидентными).
а)Нерезидентные – активизируются только на ограниченное время,
например, при вызове зараженной ими программы для файловых вирусов.
По степени опасности (вредного воздействия) вирусы подразделяют на:
а)Неопасные – вызывают только графические и звуковые эффекты, в крайнем
случае, уменьшают объем свободной памяти и быстродействие.
б)Опасные – вызывают серьезные нарушения и сбои в работе.
98
в)Очень опасные – уничтожают программы, данные, вплоть до потери всей
информации, включая системную, необходимую для работы компьютера.
Выделяют особые классы вирусов по характерным особенностям
функционирования:
а)Самомаскирующиеся (вирусы-невидимки, стелс (Stealth*) вирусы) –
перехватывают попытки их обнаружить и выдают ложную, маскирующую их
присутствие информацию. Например, при запросе длины файла сообщают
старую длину до заражения вирусом.
б)Полиморфные (самомодифицирующиеся, вирусы–мутанты) –
при
копировании в новые заражаемые файлы меняют (шифруют) текст вируса,
что затрудняет его обнаружение по наличию определенных фрагментов кода.
Программы–антивирусы подразделяют на:
а)Фильтры (сторожа, блокираторы) – обнаруживают и блокируют до
разрешения пользователя действия, похожие на действия вирусов (запись в
загрузочные сектора дисков, изменение характеристик файлов, коррекция
файлов с расширениями com и exe и т.п.). При этом они могут слишком часто
и «назойливо» обращаться к пользователю за разрешением.
б)Ревизоры – запоминают характеристики файлов и сообщают об их
изменениях. Эти программы не могут обнаружить вирусы в новых файлах,
поступающих на компьютер.
в)Сканеры (детекторы) – ищут вирус по определенным признакам. В
частности, они выполняют функции программ–мониторов (мониторинг –
отслеживание), проверяя файлы при их загрузке в оперативную память.
Использование полифагов требует наличия и постоянного обновления
антивирусных баз данных, содержащих признаки максимального количества
известных вирусов.
в)Фаги (доктора) – пытаются «вылечить» файлы, удаляя вирусы из них. В
случае невозможности – предлагают удалить зараженый файл.
Особенно важны полифаги – программы для поиска большого количества и
вирусов различного типа и лечения от них. Они выполняют одновременно
функции сканеров и фагов. Использование полифагов требует наличия и
постоянного обновления антивирусных баз данных, содержащих признаки
максимального количества известных вирусов.
*
stealth (англ.) – тайно, украдкой.
99
Наиболее известные и распространенные полифаги: Антивирус Касперского,
(Kaspersky AntiVirus, Kaspersky Internet Security), Symantec Norton AntiVirus,
Doctor Web (Dr.Web).
V.Защита в сети (сетевая безопасеность).
Для компьютеров, подключенных к сети, возникают дополнительные угрозы:
поступление вирусов по сети, доступ посторонних к данным компьютера,
перехват ими управления компьютером, сетевая атака (например,
поступление непрерывного потока сообщений, полностью загружающего
компьютер и лишающего его возможности нормально работать) и т.п.
Абсолютных средств, гарантирующих 100%-ое устранение этих угроз при
работе в сети не существует.
Для минимизации угроз могут использоваться:
а)Сетевой экран (межсетевой экран, щит, брандмауэр, FireWall*) –
программа, специальное техническое устройство или специально
выделенный компьютер, которые «отгораживают» защищаемый компьютер
или локальную сеть от внешней сети, пропуская в обе стороны только
разрешенные данные и команды, а при затруднениях обращающиеся за
разрешением к администратору. Эти экраны могут включать, в частности,
систему обнаружения атак, позволяющую заметить и пресечь
целенаправленные внешние воздействия, например, массовую засылку
сообщений с целью парализовать работу компьютера.
б)Сетевой аудит, выполняемый специальными программами, и основанный
на протоколировании всех действий пользователей и компьютеров в сети или
заданного перечня критических событий в сети, которые могут привести к
нарушению безопасности. Анализ протоколов (регулярный или непрерывный
в режиме реального времени) позволяет выявить и отследить нарушения
безопасности и их виновников (аналог – видеокамера непрерывного
наблюдения).
в)Передача данных по сети в защищенном режиме с использованием
специального протокола (правил взаимодействия) Secured Socket Layer (SSL).
В этом случае используются и симметричные и ассиметричные алгоритмы
шифрования, обеспечивающие невозможность перехвата сообщений
посторонними.
*
Оба последних термина переводятся, соответственно, с немецкого и английского, как «огненная стена».
100
Лекция 8 (2 часа)
Моделирование как метод познания
Модель (от лат modulus – мера, образец, норма) – искусственно созданный
заместитель фрагмента действительности (предмета, объекта, явления,
ситуации), который можно в определенных целях использовать для
получения информации об исходной реальности. Модель должна: а)
отражать существенные черты явления, чтобы сделанные по модели выводы
можно было применить к этому явлению; б) упрощать явление так, чтобы
действовать с моделью было легче, чем с реальным объектом. Примеры
моделей: бумажный макет здания, уменьшенная копия судна, схема
расположения помещений, формула для вычисления площади поверхности
стола по его длине и ширине*.
Модель, как упрощенный объект, отбрасывает несущественные для наших
целей свойства исходного явления и содержит меньше информации, чем
можно извлечь из самого явления. Поэтому каждую модель можно
применять только для определенных целей: макеты зданий – для выбора их
расположения, но не расчета на прочность; копию судна – для проверки на
плавучесть в бассейне, но не для оценки удобства пассажиров; формулу
площади поверхности стола – для оценки возможности размещения бытовой
техники, но не срока службы.
С другой стороны, модель позволяет получить новую информацию, которая
ранее отсутствовала и которую невозможно или трудно получить,
манипулируя с самим объектом (при какой нагрузке сломается мост,
потепления или похолодания климата следует ожидать в будущем).
Один и тот же реальный объект может быть описан разными моделями (в
разных аспектах и с разными целями). Одна и та же модель (например,
уравнение) может рассматриваться как модель разных реальных ситуаций
(времени наполнения бассейна и пути, пройденного телом).
Моделирование – метод познания, включающий создание модели
(искусственного заменителя) явления, предмета, объекта, ситуации (объекта
моделирования), и действия с этой моделью для последующего применения
полученных результатов к объекту моделирования.**
Отношение объект–модель взаимообратимо: про натурщика говорят, как про модель для скульптуры, но и
скульптура является его моделью; в математической логике любое приложение рассматривается как модель
формальной теории, а в прикладной математике – наоборот; система дифференциальных уравнений
является моделью токов в цепи, но это отношение можно обратить, заменяя решение уравнений замерами на
физической модели.
**
Строго говоря, мы всегда имеем дело только с моделями – зрительным образом, созданным сетчаткой
глаза и нейронами мозга, фразой «преподаватель идет в аудиторию» (условное обозначение определенного
101
*
В инженерных и экономических задачах использование моделирования
целесообразно, в частности, если: (а) нет смысла дожидаться наступления
интересующих нас событий, растянутых во времени (прогноз численности
населения); (б) создание объекта чрезвычайно дорого (определение
последствий строительства ГЭС); (в) исследование объекта приводит к его
разрушению (оценка предельного веса снега, который может выдержать
купол построенного здания).
ИСПОЛЬЗОВАНИЕ МОДЕЛИРОВАНИЯ НЕВОЗМОЖНО, ЕСЛИ НЕ
ИЗВЕСТНЫ
СУЩЕСТВЕННЫЕ
СВОЙСТВА
ИССЛЕДУЕМОГО
ОБЪЕКТА.
Классификация моделей.
По характеру модели – способам (инструментам) моделирования.
Физические (материальные) – объекты реального мира.
Натурные – воспроизведение с другими размерами, из другого материала и
т.п. (уменьшенная модель самолета, увеличенная модель сердца, бумажный
макет здания).
Аналоговые – объект другой физической природы, но с аналогичным
поведением (электрическая схема, заменяющая измерение распределения
температур в физической среде).
Абстрактные (идеальные, информационные) – мысленные представления,
зафиксированные в обозначениях определенной степени условности.
Наглядные (зрительные).
Образные – «похожие» на объект при «привычном» восприятии (рисунки,
фотографии).
Схематические – использующие условные обозначения (карта, чертеж, блок–
схема, схема оргструктуры предприятия, график, круговая или столбиковая
диаграмма).
Знаковые – сформулированные на естественном или искусственном языке.
Описательные (словесные) – текст на естественном языке (милицейский
протокол, пересказ сюжета, описание отношений в группе).
Табличные – данные в виде таблицы (хроника событий, бухгалтерская
ведомость, справочник по прочности материалов, таблица химических
элементов).
типа связи между 2 сущностями) и т.д. Но в данной теме нас интересуют только осознано и
целенаправленно конструируемые модели, как инструмент познания и практической деятельности.
102
Математические – описания в виде определенного математического
аппарата, языка (см. далее).
Компьютерные – программы, позволяющие ответить на вопросы об объекте
(предсказать будущее поведение, выбрать наилучший вариант действий и
т.д.).
Модели могут сочетать в себе черты разных типов. Так, форма глобуса
является натурной моделью Земли, а изображение на нем – схематической
моделью. Описываемые ниже графы представляют собой математическую
модель, в которой используются элементы наглядной схематической модели.
Предмет информатики включает, прежде всего, компьютерные модели.
Однако все такие модели строятся на базе определенных математических
(иногда схематических или табличных) моделей. А результаты
компьютерных расчетов должны быть представлены в наглядной или
табличной форме. Поэтому информатика рассматривает компьютерное
моделирование в связи с математическим и со способами (моделями)
представления результатов в виде схем, графиков, таблиц и формул.
II) По способу представления системы (объекта) в модели.
А) Моделирование системы в виде черного ящика – указания входов,
выходов и совокупности связей между входами и выходами (зависимостей
характеристик выходов от характеристик входов). При этом не
рассматривается, что происходит внутри системы и как она устроена. Так,
обработав имеющиеся данные методами математической статистики, можно
получить график, показывающий, как зависит производительность работника
(выход) от оплаты труда (вход).
Б) Моделирование путем описания состояний (пространства состояний)
системы как целого. При этом задаются (а) форма описания состояний
(перечень возможных состояний или их характеристики – фазовые
переменные); (б) законы перехода из одного состояния в другое (множество
правил (операторов) перехода или зависимости между параметрами); (в) при
использовании моделирования для управления системой задаются также
цели управления (характеристики (свойства) желаемых (целевых)
состояний). Например, при моделировании подготовки специалиста можно
определить разные уровни подготовки с соответствующими объемами
знаний и умений (состояния), рассчитать объемы подготовки для перехода от
одного уровня к другому с необходимыми затратами времени и средств
(правила перехода) и определиться с желаемым результатом обучения
(целевым состоянием).
103
В) Структурное моделирование функционирования системы – описание
взаимодействия элементов системы, например материальных, финансовых,
миграционных трудовых и т.п. потоков между регионами страны или
передачи энергии и силовых взаимодействий между конструктивными
элементами станка.
III) По свойствам математической и компьютерной моделей, используемых
для описания объекта. С этих позиций можно выделить независимые
признаки, каждый из которых разделяет модели на два противоположных
класса.
1) Статические модели, описывающие состояние системы в определенный
момент времени (распределение нагрузки по длине балки; состав населения
по возрастным группам), – Динамические модели, отражающие изменение во
времени (движение краев колеблющейся балки; изменение рождаемости,
смертности, численности населения по годам).
2)
Детерминированные модели, позволяющие получить однозначно
определенный результат (каким будет ток при заданном напряжении и
сопротивлении), – Стохастические (вероятностные) модели, позволяющие
предсказать только вероятность каждого возможного результата (пол
ребенка; выигрыш в лотерею).
3) Непрерывные модели, в которых для переменных возможны любые
значение из определенного интервала (скорость, путь, ток), – Дискретные
модели, в которых переменная может принимать только одно из конечного
множества значений (номер выбранного проекта или исполнителя работ).
III) По специализации – универсальности различают:
1) Содержательные, предметные модели, описывающие конкретное явление
из определенной области (уравнения физики, описывающие процессы в
атмосфере или недрах Земли; модели управления запасами на складе в
менеджменте).
2) Формальные модели – «заготовки» математического аппарата, которые
могут быть применены к разнообразным задачам и явлениям.
Среди моделей последнего типа можно отметить:
А) Системы алгебраических уравнений, которые можно использовать для
описания силовых взаимодействий между стержнями фермы моста, потоков
жидкости в трубопроводе, поставок товаров между предприятиями и т.д.
Б) Системы дифференциальных уравнений, связывающих между собой
изменения во времени переменных, их скоростей и ускорений, которые
104
можно использовать для описания непрерывных динамических процессов в
физике (движение планет), химии (изменение концентрации веществ) и т.д.
В) Модели конечных автоматов, которые представляют собой перечень
ограниченного числа состояний объекта и условия перехода из одного
состояния в другое (эти условия могут быть однозначно заданы –
детерминированный конечный автомат или включать «бросание жребия» –
вероятностный автомат). Такие модели хорошо подходят для задач
оперативного управления, например, выбора момента переключения
светофора в зависимости от ситуации на перекрестке или выбора модели,
запускаемой на сборочный конвейер в зависимости от наличия
комплектующих.
Г) Модели графов, представляющие из себя множество вершин (узлов) и
соединяющих некоторые из вершин линий (ребер, дуг). Эти модели
позволяют описывать планирование строительства (сетевые графики) и
задачи логистики (маршрутизации потоков), например, классическую
«задачу коммивояжера» – выбора наиболее короткого и неповторяющегося
маршрута развозки товара.
В прикладных задачах используют частные случаи графов, такие как:
(а)дерево – граф, у каждой вершины которого ровно один «предшественник,
а у одной «главной» («корня») предшественников нет; (б)гамильтонов граф, в
котором есть путь (последовательность дуг), проходящий только один раз
через каждую вершину; (в)эйлеров граф, в котором есть путь, проходящий
только один раз через каждую дугу.
Д) Модели интеллектуальных систем, основанные на имитации рассуждений
экспертов при решении сложных задач – в компьютере формируется набор
правил логического вывода, который опирается на знание эксперта в
конкретной предметной области и позволяет перейти от описания исходной
ситуации к заключению о наилучшем из нескольких возможных вариантов
действия. Такой подход оказывается эффективным при решении задач
планирования, требующих перебора огромного числа вариантов, очень
быстро (по экспоненте) растущего с ростом размерности задачи (такие
задачи называют экспоненциальными).
Е) Модели эволюции используют генетические алгоритмы, которые
имитируют действующие в живой природе механизмы случайной генерации
наследуемых изменений с последующим естественным отбором. Такие
105
модели перспективны для решения широкого класса задач прогнозирования
развития и отбора лучших вариантов, что подтверждается впечатляющими
результатами эволюции в природе.
Классификация задач, решаемых с помощью моделей.
Задачи (функции) моделирования: а) выработка понимания устройства и
поведения
объекта
(инструмент
познания);
б)
прогнозирование
характеристик и состояния объекта (инструмент прогнозирования); в) выбор
воздействий, которые позволят достичь наших целей (инструмент
планирования и управления). В реальности эти задачи могут быть связаны и
переплетены.
В зависимости от характера решаемой задачи и свойств моделируемого
объекта выбираются свойства модели и используемый математический
аппарат.
Методы и технологии моделирования.
Технология решения задач (анализа, прогнозирования, управления) с
использованием компьютерного моделирования включает основные этапы:
1) Постановка задачи – описание исходной задачи и исходных данных («что
дано») и определение целей моделирования, требований к результатам («что
нужно найти»).
2) Разработка концептуальной модели («расчетной схемы», упрощенного
представления) или структуризация или качественный анализ –
формулировка предположений и упрощений, выделение существенных
элементов и взаимосвязей (результаты этапа желательно представить
максимально наглядно – в виде схем, диаграмм или, по крайней мере,
сжатого лаконичного описания).
3) Разработка математической модели, формализация задачи – описание
объекта (точнее, разработанной ранее его упрощенной концептуальной
модели) на искусственном математическом («формальном») языке с
использованием наиболее адекватного математического аппарата.
4) Алгоритмизация задачи – разработка алгоритма расчета, представляющего
математическую модель в виде четкой и однозначной последовательности
операций, которые могут быть выполнены на компьютере.
106
5)
Кодирование
алгоритма
с
помощью
выбранных
средств
программирования (языка и системы программирования, электронных
таблиц, набора запросов, форм и отчетов базы данных и т.п.).*
6) Тестирование (отладка) компьютерной системы (программы, расчетной
таблицы, базы данных) для выявления и устранения ошибок. Этот этап
является обязательным и, зачастую, наиболее длительным, потому что, в
силу причин, объясняемых в соответствующем разделе курса, создать сразу
программу без ошибок невозможно.
7) Использование компьютерной системы для решения поставленных задач
объяснения функционирования моделируемой системы, прогнозирования ее
поведения, принятия управленческих решений и т.п.
8) Интерпретация результатов компьютерного моделирования –
формулировка выводов из анализа явления и следствий полученных
прогнозов, выработка мер по реализации выбранного решения.
Процесс решения задачи с использованием компьютерного моделирования
является итеративным (циклическим): на любом из этапов может
потребоваться возврат на любой из предыдущих и внесение изменений. Так,
даже на этапе интерпретации результатов может оказаться, что полученные
выводы неприменимы практически и нужно вернуться к постановке задачи,
пересмотрев состав исходных данных и цели моделирования (требования к
результатам).
Жизненный цикл моделируемой системы:
Сбор информации об объекте, выдвижение гипотез, предмодельный анализ;
Проектирование структуры и состава моделей (подмоделей);
Построение спецификаций модели, разработка и отладка отдельных
подмоделей, сборка модели в целом, идентификация (если это нужно)
параметров моделей;
Исследование модели - выбор метода исследования и разработка алгоритма
(программы) моделирования;
Исследование адекватности, устойчивости, чувствительности модели;
Оценка средств моделирования (затраченных ресурсов);
Интерпретация, анализ результатов моделирования и установление
некоторых причинно - следственных связей в исследуемой системе;
Генерация отчетов и проектных (народно - хозяйственных) решений;
Иногда этот этап называют программированием. Но более корректно включать в понятие
программирования содержание трех этапов 4, 5 и 6.
107
*
Уточнение, модификация модели, если это необходимо, и возврат к
исследуемой системе с новыми знаниями, полученными с помощью
моделирования.
Основными операциями, используемыми над моделями, являются:
Линеаризация. Пусть М=М(X,Y,A), где X - множество входов, Y - выходов, А состояний системы. Схематически можно это изобразить:
XAY
Если X, Y, A - линейные пространства (множества), а  - линейные
операторы, то система (модель) называется линейной. Другие системы
(модели) - нелинейные. Нелинейные системы трудно поддаются
исследованию, поэтому их часто линеаризуют - сводят к линейным каким-то
образом.
Идентификация. Пусть М=М(X,Y,A), A={ai }, ai=(ai1,ai2,...,aik) - вектор
состояния объекта (системы). Если вектор ai зависит от некоторых
неизвестных параметров, то задача идентификации (модели, параметров
модели) состоит в определении по некоторым дополнительным условиям,
например, экспериментальным данным, характеризующим состояние
системы в некоторых случаях. Идентификация - решение задачи построения
по результатам наблюдений математических моделей, описывающих
адекватно поведение реальной системы.
Агрегирование. Операция состоит в преобразовании (сведении) модели к
модели (моделям) меньшей размерности (X, Y, A).
Декомпозиция. Операция состоит в разделении системы (модели) на
подсистемы (подмодели) с сохранением структур и принадлежности одних
элементов и подсистем другим.
Сборка. Операция состоит в преобразовании системы, модели, реализующей
поставленную цель из заданных или определяемых подмоделей (структурно
связанных и устойчивых).
Макетирование. Эта операция состоит в апробации, исследовании
структурной связности, сложности, устойчивости с помощью макетов или
подмоделей упрощенного вида, у которых функциональная часть упрощена
(хотя вход и выход подмоделей сохранены).
Экспертиза,
экспертное
оценивание.
Операция
или
процедура
использования опыта, знаний, интуиции, интеллекта экспертов для
исследования или моделирования плохо структурируемых, плохо
формализуемых подсистем исследуемой системы.
Вычислительный эксперимент. Это эксперимент, осуществляемый с
помощью модели на ЭВМ с целью распределения, прогноза тех или иных
108
состояний системы, реакции на те или иные входные сигналы. Прибором
эксперимента здесь является компьютер (и модель!).
Модели и моделирование применяются по следующим основным и важным
направлениям.
Обучение (как моделям, моделированию, так и самих моделей).
Познание и разработка теории исследуемых систем - с помощью каких - то
моделей, моделирования, результатов моделирования.
Прогнозирование (выходных данных, ситуаций, состояний системы).
Управление (системой в целом, отдельными подсистемами системы,
выработка управленческих решений и стратегий).
Автоматизация (системы или отдельных подсистем системы).
В базовой четверке информатики: "модель - алгоритм - компьютер технология" при компьютерном моделировании главную роль играют уже
алгоритм (программа), компьютер и технология (точнее, инструментальные
системы для компьютера, компьютерные технологии).
Например, при имитационном моделировании (при отсутствии строгого и
формально записанного алгоритма) главную роль играют технология и
средства моделирования; аналогично и в когнитивной графике.
Основные функции компьютера при моделировании систем:
выполнять роль вспомогательного средства для решения задач, решаемых
обычными вычислительными средствами, алгоритмами, технологиями;
выполнять роль средства постановки и решения новых задач, не решаемых
традиционными средствами, алгоритмами, технологиями;
выполнять роль средства конструирования компьютерных обучающе моделирующих сред;
выполнять роль средства моделирования для получения новых знаний;
выполнять роль "обучения" новых моделей (самообучающиеся модели).
Компьютерное моделирование - основа представления знаний в ЭВМ
(построения различных баз знаний). Компьютерное моделирование для
рождения новой информации использует любую информацию, которую
можно актуализировать с помощью ЭВМ.
Разновидностью компьютерного моделирования является вычислительный
эксперимент.
Компьютерное моделирование, вычислительный эксперимент становится
новым инструментом, методом научного познания, новой технологией также
из-за возрастающей необходимости перехода от исследования линейных
математических моделей систем .
109
Компьютерное моделирование, от постановки задачи - до получения
результатов, проходит следующие этапы.
Постановка задачи.
Формулировка задачи.
Определение цели моделирования и их приоритетов.
Сбор информации о системе, объекте моделирования.
Описание данных (их структуры, диапазона, источника и т. д.).
Предмодельный анализ.
Анализ существующих аналогов и подсистем.
Анализ технических средств моделирования (ЭВМ, периферия).
Анализ программного обеспечения(языки программирования, пакеты
программ, инструментальные среды).
Анализ математического обеспечения(модели, методы, алгоритмы).
Анализ задачи (модели).
Разработка структур данных.
Разработка входных и выходных спецификаций, форм представления
данных.
Проектирование структуры и состава модели (подмоделей).
Исследование модели.
Выбор методов исследования подмоделей.
Выбор, адаптация или разработка алгоритмов, их псевдокодов.
Сборка модели в целом из подмоделей.
Идентификация модели, если в этом есть необходимость.
Формулировка используемых критериев адекватности, устойчивости и
чувствительности модели.
Программирование (проектирование программы).
Выбор метода тестирования и тестов (контрольных примеров).
Кодирование на языке программирования(написание команд).
Комментирование программы.
Тестирование и отладка.
Синтаксическая отладка.
Семантическая отладка (отладка логической структуры).
Тестовые расчеты, анализ результатов тестирования.
Оптимизация программы.
Оценка моделирования.
Оценка средств моделирования.
Оценка адекватности моделирования.
Оценка чувствительности модели.
110
Оценка устойчивости модели.
Документирование.
Описание задачи, целей.
Описание модели, метода, алгоритма.
Описание среды реализации.
Описание возможностей и ограничений.
Описание входных и выходных форматов, спецификаций.
Описание тестирования.
Описание инструкций пользователю.
Сопровождение.
Анализ использования, периодичности использования, количества
пользователей, типа использования (диалог, автономно и др.), анализ отказов
во время использования модели.
Обслуживание модели, алгоритма, программы и их эксплуатация.
Расширение возможностей: включение новых функций или изменение
режимов моделирования, в том числе и под модифицированную среду.
Нахождение, исправление скрытых ошибок в программе, если таковые
найдутся.
111
Лекция 9 (2 часа)
Математические пакеты
1. Общие сведения. Ядро и интерфейс пакета Математика
Пакет прикладных программ Mathematica разработан фирмой Wolfram
Research. Объявление о появлении первой версии Математики было сделано
в 1988г. В настоящее время распространены версии 4 и 5.
Пакет Математика позволяет:
производить численные и аналитические вычисления;
объединять последовательности вычислений в программы;
создавать диалоговые документы, объединяющие активные
формулы, тексты, живые графики и звук;
подключать внешние программы;
использоваться как встроенная система, вызываемая из других
программ.
Пакет Математика включает две части: ядро (Kernel) и интерфейс
(Front End). Ядро является неизменной частью, а интерфейс
Математики настраивается на конкретный компьютер и
конкретный графический интерфейс. Ядро включает основную
часть всех математических функций.
Интерфейс обеспечивает программную поддержку для
создаваемых в процессе работы документов: чтение, запись и
редактирование файлов. Интерфейс также обеспечивает доступ к
справочной системе Help.
Полная версия четвертой версии Математики занимает на диске
160 MB. Минимальный необходимый для работы объем
составляет 40 MB, 13MB занимает интерфейс и 24,5 MB занимает
ядро.
Кроме основной части пакета, используемой для проведения вычислений,
Математика включает большую библиотеку "упаковок" (Packages) –
дополнительных программ вычислений по отдельным разделам
математической науки. Эта библиотека в четвертой версии Математики
занимает объем 25.5 MB.
Математика следует распространенным стандартам, благодаря чему
возможен обмен с другими программами. Например, графики
представляются в стандарте PostScript. Математика может читать данные в
различных форматах и генерировать данные для систем таких, как C, Fortran,
TEX. Математика может обмениваться с другими программами,
112
использующими стандарт MathLink. В частности, в этом стандарте
производится обмен между собственным интерфейсом и ядром Математики.
В случае стандартной конфигурации при запуске Математики загружается
только интерфейс, а для подключения ядра нужно произвести какое-либо
математическое действие. Стандартная конфигурация может быть изменена
так, чтобы ядро загружалось одновременно с интерфейсом.
Запустив Математику обычными средствами системы Windows: с помощью
иконки, либо с помощью команды Run (выполнить) – получим типичное для
приложений Windows окно со строкой заголовка, строкой раскрывающегося
меню и полосами прокрутки, позволяющими двигать рабочий документ.
Можно открыть дополнительные инструментальные окна-«палитры»,
содержащие обозначения математических и других функций. Названия
инструментальных окон содержатся в разделе меню File – Palette. Часто
используемые обозначения содержатся в палитре Basic Input, показанной на
рисунке.
Для вызова ядра запишем простое действие: 2*2 - и запустим систему на
счет; для запуска системы нажмем на клавиши Shift+Enter. Некоторое
время потребуется для загрузки ядра, затем на экране появится:
In[1] := 2*2
Out[1] = 4
После этого Математика полностью готова к работе.
2. Точные и приближенные
аналитические операции
вычисления.
Численные
и
Рассмотрим примеры вычислений. Вычислим число 100!. Запишем это
выражение и нажмем клавиши Shift+Enter. Получим ответ, занимающий три
строки. (Отметим попутно, что знаком продолжения числа в следующей
строке является косая черта "\".) Полученное число трудно обозримо,
поэтому, переформулируем задачу - поставим в числе 100 десятичную точку:
100.! - и вновь запустим на счет. Получим приближенное значение: 9.33262
10157 . Итак, если не указано явно, что нужен приближенный ответ,
Математика стремится
найти точное значение. Если мы спросим у
Математики, чему равен корень квадратный из двух: получим ответ: Sqrt[2]
– другого точного выражения для квадратного корня из двух Математика не
знает. Для того, чтобы получить приближенное значение корня, нужно либо
поставить десятичную точку в числе 2, либо записать входное выражение в
одном из видов: Sqrt[2]//N или N[Sqrt[2]].
113
По умолчанию приближенные вычисления в пакете Математика
производятся с точностью, которую обеспечивает математический
сопроцессор: ~10-15. Если необходима более высокая точность, это можно
явно указать с помощью команды N[expr, n], где expr – вычисляемое
выражение, n – требуемое число десятичных знаков. Например, N[ Sqrt[2],
20] – команда подсчитать и вывести на экран значение корня из двух с
точностью до 20 знаков.
В ряде случаев точные вычисления занимают слишком много времени; в
таких случаях целесообразно прибегать к приближенным вычислениям.
Наряду с обычными вычислениями Математика производит и аналитические
преобразования. При этом, как правило, не требуется дополнительных
указаний: смысл команды ясен из контекста. Ниже приведены примеры
численных и аналитических операций. В примерах слева от знака равенства
стоит входное выражение, справа – выходное – результат выполнения
команды.
Sin’[x] = Cos[x] – производная функции Sin[x] в произвольной точке x.
Sin’[0] = 1 – производная функции Sin[x] в точке x=0.
Integrate[ x2, x] = x3/3 – неопределенный интеграл – первообразная функции
x2.
Integrate[ x2, {x, 0, 1}] = 1/3 – определенный интеграл на отрезке [0, 1].
Integrate[ Sin[x]*Log[Sin[x]], {x, 0, Pi/2}] = -1+Log[2] – аналитический
результат вычисления определенного интеграла на отрезке от нуля до “пи”
пополам. Добавив во входном выражении десятичную точку в числе 2,
получим численный результат:
Integrate[ Sin[x]*Log[Sin[x]], {x, 0, Pi/2.}] = -0.306853. Тот же результат
получим, заменив слово Integrate на NIntegrate.
3. Рабочий документ и ячейки. Основные команды
Создаваемый пользователем рабочий документ называется в Математике
Notebook. Для названий файлов, содержащих рабочие документы, в
Математике, начиная с версии 3, используется стандартное расширение: "nb".
Для открывания и записи файлов с рабочими документами можно
пользоваться командами меню и панели инструментов, либо командами
Windows:
Ctrl+N
– открыть новый файл,
Ctrl+O
– открыть существующий файл,
Ctrl+S
– сохранить файл,
114
Ctrl+F4
– закрыть файл.
Информация в рабочих документах содержится в ячейках (cells). Например,
входное и выходное выражения занимают каждое свою ячейку. Ячейка
занимает одну или несколько строк. Скобка справа показывает размер
ячейки. Характеристики ячейки зависят от ее назначения и вида
содержащейся информации. Математика позволяет организовывать
иерархическую структуру ячеек, отраженную скобками справа.
Математика группирует ячейки автоматически по их стилю. Например,
входное и выходное выражения объединяются в группу, что отражается
объединяющей скобкой справа. Можно также группировать ячейки вручную.
Для этого нужно:
Установить опцию меню Cell – Cell Grouping – Manual Grouping.
Выделить нужные ячейки, "протянув" мышкой с нажатой кнопкой указатель
через скобки ячеек.
Выбрать команду "Group Cells" из Cell-меню, или нажать клавиши
Shift+Ctrl+G.
В результате появится новая скобка, охватывающая группу. Разделить
группу можно с помощью команды меню Ungroup Cells, или с помощью
клавишной команды Shift+Ctrl+U, предварительно выделив группу.
Для того, чтобы произвести какую-либо операцию над содержимым ячейки,
нужно предварительно выделить ячейку, "щелкнув" мышкой на скобке,
выделяющей ячейку. После этого можно, например, применить обычные
команды редактирования системы Windows:
удаление в буфер (cut) – Ctrl+X,
копирование в буфер (copy) – Ctrl+C,
копирование из буфера (paste) – Ctrl+V.
Все эти команды могут быть также поданы из раздела меню Edit. Можно
также просто удалить ячейку без копирования с помощью клавиши Del.
Команды редактирования применимы также к группе ячеек. С другой
стороны, команды можно применить к части содержимого ячейки. Для этого
следует предварительно выделить с помощью мышки нужную часть ячейки.
Для запуска содержимого ячейки на счет достаточно нажать клавиши
Shift+Enter.
Cтиль (статус) ячеек может быть изменен. Соответствующие команды
содержатся в разделе меню "Style". Например, можно присвоить ячейке
статус "text", тогда содержимое ячейки становится комментариями. Эта
команда может быть также подана с помощью клавиш Alt+7. С помощью
команд раздела Style можно сделать ячейку заголовком, подзаголовком и т.д.
115
Все эти команды могут быть поданы также с помощью клавиш.
Соответствующие подсказки есть в меню.
Можно спрятать содержимое группы ячеек, дважды щелкнув мышкой на
объединяющей скобке, или нажав клавиши Alt+', или выбрав в меню
команду "Open/Close Group" (предварительно выделив группу). В
результате остается видимым содержание только головной ячейки. Закрытая
ячейка обозначается небольшим прямоугольником и характерной скобкой со
стрелкой внизу. Для того, чтобы открыть группу, достаточно дважды
щелкнуть мышкой на этой скобке либо на прямоугольнике.
Большую ячейку можно поделить на части с помощью команды "Divide
Cells" (Shift+Ctrl+D). Группу ячеек можно объединить в одну ячейку с
помощью команды "Merge Cells" (Shift+Ctrl+M).
Отметим команду выделения всех ячеек: "Select All Cells" (Ctrl+A). Эта
команда полезна, если требуется пересчитать все входные выражения
рабочего документа.
Продолжительные вычисления можно прервать с помощью команды Abort
Fvaluation из раздела меню Kernel, либо с помощью команды «Alt+.».
4. Сеанс работы в системе Математика. Глобальный характер
данных.
В течение сеанса работы Математика нумерует все обращения к ядру пакета все входные и выходные выражения. Комментарии не нумеруются. Эта
нумерация – сквозная, проходящая через все файлы - рабочие документы, с
которыми ведется работа. Если, например, в одном рабочем документе мы
произвели обработку десяти входных выражений и затем обратились к
новому файлу, то первому подсчитываемому выражению в новом документе
присваивается номер 11. Если затем вернемся в прежний файл и пересчитаем
вновь какое-либо выражение из первых десяти, то теперь этому выражению
присвоится номер 12. Таким образом, хотя Математика и помнит результаты
всех вычислений данного сеанса, но номера ячеек на экране могут быть
вразнобой. Мы можем вновь упорядочить нумерацию, пересчитав заново все
ячейки. Для этого можно воспользоваться командой "Evaluate Notebook" из
раздела меню "Kernel – Evaluation", или выделить все ячейки с помощью
клавиш Ctrl+A и запустить их на счет. После такого пересчета нумерация
будет упорядочена, но будет начинаться, естественно, не с единицы.
Обращаться к полученным ранее результатам можно с помощью команд:
% - обращение к последней подсчитанной ячейке,
116
%% - обращение к предпоследней подсчитанной ячейке и т.д.
Из сказанного ясно, что последняя подсчитанная ячейка - это не обязательно
самая нижняя на экране, а предпоследняя - не обязательно вторая снизу.
Существует также обращение к ячейкам непосредственно по их номеру:
%n, либо In[n], либо Out[n],
где n - номер ячейки. Следует при этом не забывать, что при повторных
пересчетах номер ячейки изменяется, так что в обращении к пересчитанной
ячейке нужно изменить номер. С другой стороны, результаты всех
обращений к ядру хранятся в течение всего сеанса под их первоначальными
номерами, поэтому в любой момент можно обратиться к этим результатам по
их номеру, даже если соответствующие ячейки к этому моменту уже удалены
из рабочего документа.
Для обращения к результатам расчетов можно также пользоваться
идентификаторами. Например, обозначим идентификатором "a" десятичный
логарифм числа 2; для этого запишем выражение:
a=Log[10,2]//N .
В этом выражении знак равенства описывает операцию присваивания. Нажав
затем клавиши Shift+Enter, получим значение логарифма: 0.30103. Теперь
мы можем вызывать это число из любого рабочего документа (в течение
данного сеанса работы), просто написав идентификатор "a". Изменить
значение введенного идентификатора можно также из любого рабочего
документа. Если идентификатор в дальнейшем не понадобится, его значение
можно стереть с помощью команды "Clear[идентификатор]". Узнать
значение любого идентификатора позволяет команда: "?идентификатор".
Приведенные рассуждения иллюстрируются следующим примером рабочего
сеанса. Вначале, находясь в рабочем документе Newnb-1, присвоим
идентификатору "a" значение 5. Затем перейдем в новый файл Newnb-2 и
убедимся, что и в этом файле a=5. После этого сотрем значение а с помощью
команды Clear[a]. Возвратившись теперь в файл Newnb-1, убедимся, что
значение идентификатора стерто, однако значение 5 в ячейке номер 1
сохранилось.
Итак, результаты расчетов, проводимых в течение сеанса работы, носят
глобальный характер:
все результаты нумеруются и сохраняются в течение всего сеанса работы,
результаты расчетов доступны из любого рабочего документа либо по
номеру ячейки, либо по имени идентификатора,
Значения, присвоенные идентификаторам, могут быть изменены (или стерты)
из любого рабочего документа.
117
В связи с глобальным характером результатов следует внимательно
относиться к выбору идентификаторов. При одновременной работе с
несколькими файлами может возникнуть путаница, если разные данные
имеют одинаковые обозначения. Часто Математика информирует о
непонятных на первый взгляд ошибках, возникающих из-за того, что разные
по характеру данные обозначены одинаково. Разобраться в таких ошибках
помогает команда "?идентификатор", позволяющая узнать, что скрывается
за данным именем в текущий момент. Локализовать, а иногда и устранить
ошибку позволяет повторный пересчет всего рабочего документа; пересчет
можно запустить с помощью команды меню Kernel – Evaluation – Evaluate
Notebook. Более радикальный способ – перезагрузка Математики.
5. Правила написания. Некоторые встроенные функции.
В языке Математики малые и большие буквы различаются.
Названия всех встроенных функций и констант начинаются с большой
буквы; поэтому, во избежание недоразумений, рекомендуется вводимые
пользователем идентификаторы начинать с малой буквы.
Знак умножения (*) можно опускать, заменяя его в случае необходимости
пробелом. Несколько примеров представления оператора умножения:
2a эквивалентно 2*a,
a b эквивалентно a*b,
a(x+y) эквивалентно a*(x+y),
Sin[x]2 эквивалентно 2 Sin[x], эквивалентно 2*Sin[x].
Однако, выражения "a2", "ab" воспринимаются Математикой как единые
идентификаторы. Выражение "aSin[x]" воспринимается как идентификатор
новой функции.
Круглые скобки используются для объединения объектов или операндов, как
это принято обычно в математических выражениях. При этом соблюдаются
обычные соглашения о приоритетах математических операций, поэтому в
ряде случаев скобки можно опускать. Например, Sin[x]^2/2 есть
сокращенная запись более полного выражения ((Sin[x])^2)/2.
Аргументы функций пишутся в квадратных скобках.
Значения строковых переменных записываются в кавычках.
Комментарии выделяются знаками (* и *). Пример:
In[ ] := (* Определим функцию: *) f[x_] = x^2 Out[ ] = x2
118
Фигурные скобки используются при описании
списков, в частности, массивов, и для задания
пределов изменения переменной величины.
Таблица 1. Примеры
Для того, чтобы результат расчета не
выражений
выводился на экран, следует в конце входного
выражения поставить точку с запятой.
Входное
Выходное
Указать, что выражение продолжается в
выражение
выражение
a="строка";
следующей строке, можно с помощью косой
aa={a,b,2}
{строка, b, 2}
черты "\". Этот знак можно опустить, если в
44\
4455
строке
помещено
явно
незаконченное
55
выражение: отсутствует закрывающая скобка, отсутствует
необходимый
a+
строка + b
операнд и т.п. Отметим, что, если в конце строкиb стоит знак "\", то пустые
позиции в начале следующей строки игнорируются. Примеры выражений
даны в таблице 1.
Приведем некоторые наиболее часто используемые функции и константы:
E или <Esc>ee<Esc> – основание натуральных логарифмов; I – мнимая
единица;
Infinity или <Esc>inf<Esc> – бесконечность; Pi или <Esc>p<Esc> – число
"пи";
Floor[x], Ceiling[x] – целые числа, ближайшие к действительному числу x
(меньшее и большее);
x^y – x в степени y;
Exp[x] или E^x – экспоненциальная функция аргумента x;
Sin[x], Cos[x], Tan[x], Cot[x], ArcSin[x], ArcCos[x] и т.д. - прямые и
обратные тригонометрические функции;
Log[z] – натуральный логарифм числа z;
Log[b, z] – логарифм числа z по основанию b;
Sqrt[a] – квадратный корень числа a.
Вычисление пределов:
Limit[ expr, x –> x0] – предельное значение выражения expr при x
стремящемся к x0. Более полный формат команды: Limit[ expr, x –> x0,
Direction –> 1] – нахождение предела при x стремящемся к x0 слева.
Соответственно, Direction –> -1 – нахождение предела справа.
Пример 5.1:
Limit[ Sin[x] / x, x –> 0] = 1, Limit[ Tan[fi], fi –> Pi / 2, Direction –> -1] = Infinity.
119
Замечание. Функция вычисления пределов не вызывается автоматически.
Если, например, в ходе вычислений встречается выражение вида 0/0, то
вычисления прекращаются.
Правило преобразования Rule:
lhs –> rhs – левая часть выражения заменяется на правую.
Функция замещения ReplaceAll[expr, rule] – применяет правило
преобразования rule (lhs –> rhs) к выражению expr – каждое вхождение lhs
заменяется на rhs. Та же функция может быть записана более коротко с
помощью оператора замещения “/.” (произносится “slash-dot”):
expr /. lhs –> rhs
Может быть задана последовательность правил преобразования:
expr /. {lhs1 –> rhs1, lhs2 –> rhs2,…}
Может также быть задан список списков правил: expr /. {{lhs –> rhs1}, {lhs –
> rhs2},…}, –
в этом случае на выходе мы получим список результатов.
Примеры применения: слева от знака равенства представлено входное
выражение, справа – результат замещения.
Простая замена: 1 + x + x2 /. x –> Sin[x] = 1 + Sin[x] + Sin[x]2.
Применение списка правил замены: {a, b, c} /. {a –> b, b –> d} = {b, d,
c}.
Последовательное применение тех же правил замены дает другой
результат:
{a, b, c} /. a –> b /. b –> d = {d, d, c}.
Применение списка списков правил замены x + y /. {{x –> 2}, {y –> 5}}
дает список результатов: {2 + y, 5 + x}.
Дифференцирование:
D[f, x] – производная функции f по аргументу x.
D[f, {x, n}] – производная порядка n.
D[f, x1, x2, …] – смешанная производная функции f по аргументам x1, x2, и
т.д.
Другое обращение к производной:
f’[x], f’’[x], f’’’[x] – соответственно, первая, вторая и третья производная
функции f[x].
Для обращения к производной можно воспользоваться также “заготовкой”,
имеющейся в палитре Basic Input.
Пример 5.2:
D[Sin[x], x] = Cos[x], D[Sin[x], x] /. x –> 0 = 1,
Sin'[x] = Cos[x],
Sin'[0] = 1.
120
Дифференцирование сложных функций:
D[f[g[x]], x] = f’[g[x]] g’[x], D[f[x, y[x]], x] = y’[x] f(0, 1)[x, y[x]] + f(1, 0)[x,
y[x]],
D[Sin[x^2], x] = 2 x Cos[x2], D[x Log[x], x] = 1 + Log[x].
Вычисление смешанной производной:
D[x^3 / y, {x, 2}, y] = -6x / y2.
Интегрирование:
Integrate[f,
x]
–
неопределенный
интеграл.
Integrate[f,
{x, xmin,
xmax}]
–
определенный интеграл на отрезке от
xmin до xmax.
Integrate[f, {x, xmin, xmax}, {y, ymin,
ymax}] – кратный интеграл.
NIntegrate – численное интегрирование.
“Заготовка” для интеграла имеется в палитре Basic Input.
Пример 5.3:
Integrate[ Exp[-x], {x, 0, Infinity}] = 1,
NIntegrate[ 2 / Sqrt[2 Pi] Exp[-x^2 / 2], {x, 0, 3}] = 0.9973,
Integrate[ 3 u Sin[v]^2 Cos[v]^2, {u, 0, a}, {v, 0, 2Pi}] = 3 a2 Pi / 8.
Нахождение минимумов и максимумов:
Функция FindMinimum[f, {x, x0}] ищет локальный минимум функции f,
ближайший к точке x0. Функция возвращает список: {fmin, {x –> xmin}] – где
xmin – точка минимума, fmin – значение функции f в точке минимума.
Функция FindMinimum[f, {x, x0}, {y, y0},…] ищет локальный минимум
функции нескольких аргументов.
Пример 5.4:
Нахождение экстремумов функции P(x) = 8x4 – 8x2 + x + 1, график которой
приведен на рис. 1.
FindMinimum[ P[x], {x, 1}] = {-0.309, {x –> 0.673}},
FindMinimum[ P[x], {x, -1}] = {-1.722, {x –> -0.736}}.
Для нахождения максимума функции P(x) вблизи точки x=0 запишем
команду:
In[ ] := FindMinimum[ -P[x], {x, 0}] – получим ответ:
Out[ ] = { -1.031, {x –> 0.063}}.
Генераторы случайных чисел:
Random[] – дает псевдослучайное число типа Real с равномерным
распределением в диапазоне значений от 0 до 1;
121
Random[type, range] – дает псевдослучайное число типа "type" (Integer, Real
или Complex) со значениями в диапазоне "range" ({min, max});
Random[Integer] – дает 0 или 1 с вероятностью 1/2;
Random[Real, {min,max}, n] - дает псевдослучайное действительное число в
диапазоне от min до max с точностью n знаков;
Таблица 2. Примеры циклических
операций
Входное выражение
zmin до
Выходное выражение
1+x+x
Sum[x^i, {i,0,3}]
Product[x-i, {i,0,3}]
2
+x
3
Random[Complex,
{zmin,zmax}] – дает
псевдослучайное
комплексное число в
прямоугольнике
от
zmax.
(-3+x) (-2+x) (-1+x) x
(-7+x) (-2+x) (8+x)
Product[
Random[
x
-
Integer, {-9, 9}],
{3}]
Циклические операции:
Sum[f, {i, imin, imax, di}] – суммирование значений функции f по индексу i в
пределах от imin до imax с шагом di;
Sum[f, {i, imin, imax}, {j, jmin, jmax}] – вычисление двойной суммы;
Product[f, {i, imin, imax}] – вычисление произведения.
Циклические операции могут быть описаны также с помощью
математических символов, имеющихся в палитре Basic Input.
В циклических операциях значения di и imin можно опускать, если эти
значения равны единице; в тех случаях, когда значения функции f не зависят
от индекса, индекс можно не указывать. Примеры циклических операций
даны в таблице 2.
Обратим внимание, что Математика соблюдает определенный порядок при
выводе результатов; в частности, сомножители сортируются в порядке
возрастания их значений.
Функция Fit[data, funs, vars]. Эта функция находит такую линейную
комбинацию функций, заданных в списке funs, которая аппроксимирует
данные data с наименьшей среднеквадратичной ошибкой. Vars – список
122
аргументов функций funs. Данные data могут быть заданы в виде списка {{x 1,
y1,…,f1}, {x2, y2,…,f2},…}, где количество координат x,y,… должно быть
равно количеству аргументов функций funs.
Пример 5.5: Требуется аппроксимировать последовательность точек
In[1] := data = {{0, -1}, {2, -1}, {3, 5}, {4, 2}, {5, 7}, {8, 7}} линейной
зависимостью. Решение:
In[2] := Fit[ data, {1, x}, x]
Out[2] = -0.991071 + 1.13393x
Функция Print[expr1, expr2,…] – печатает
выражения expri, соединяя их.
Пример 5.6:
Таблица 3
In[ ] := Print[ “Объем куба со стороной ”,
Входное
Название
Значение
выражение
формы
v = Random[Integer, {2, 5}], “ равен ”,
Sin[Pi/2]
standard
1
v^3 ]
Sin@(Pi/2)
prefix
1
Один их возможных ответов:
Pi/2//Sin
postfix
1
Out[] = Объем куба со стороной 4 равен
N@Sqrt@2
prefix
1.41421
64
Обращение к функциям в системе
Математика может быть записано в разных формах:
f[x] - стандартная форма (standard form),
f@x - префиксная форма (prefix form),
x//f - постфиксная форма (postfix form).
Примеры обращений даны в таблице 3.
Отметим, что префиксная форма имеет наиболее высокий приоритет, а
постфиксная – самый низкий, так что Sin@x+y = y+Sin[x], а x+y//Sin =
Sin[x+y].
Для функций нескольких переменных кроме Таблица 4
Standard form
Infix form
стандартной существует также инфиксная
Plus[x,y]
x+y
форма. Обычная запись суммы (x+y) и
Times[x,y]
xy
произведения (x*y) является инфиксной
Power[x,y]
xy
формой. Примеры функций двух аргументов
даны в таблице 4.
Функции, вводимые пользователем, также могут быть записаны в разных
формах.
Получить информацию о любой функции можно с помощью команды "?имя
функции".
123
Лекция 10(2 часа)
Парадигмы программирования
Языки программирования - это искусственные языки. Они отличаются от
естественных ограниченным, достаточно малым числом слов, значение
которых понятно компьютеру (транслятору), и очень строгими правилами
записи команд (операторов). Совокупность требований для записи команд
образуют синтаксис языка, а смысл каждой команды – семантику языка.
Нарушение формы записи программы приводят к синтаксической ошибке, а
правильно написанная программа, но не отвечающая алгоритму, приводит к
семантической ошибке (по другому – логической, или ошибке времени
выполнения программы).
Процесс поиска ошибок в программе называют тестированием, процесс
устранения ошибок – отладкой программы.
Уровни языков программирования
Если язык программирования ориентирован на конкретный тип процессора и
учитывает его особенности, то он называется языком программирования
низкого уровня. “Низкий уровень” –это значит, что операторы близки к
машинному коду и ориентированы на конкретный тип процессора. Языком
самого низкого уровня является язык Ассемблера, который представляет
каждую машинную команду в виде символьных условных обозначений,
называемых символьными мнемониками. Перевод программы на языке
Ассемблера в машинный язык называется транслитерацией. Программа,
написанная на языке низкого уровня, может быть использована только в
такой среде, в которой она была создана. С помощью языков низкого уровня
создаются очень эффективные и компактные программы, так как разработчик
получает доступ ко всем возможностям процессора.
Языки программирования высокого уровня ближе и понятнее человеку, чем
компьютеру. В программах, созданных на языках высокого уровня,
особенности компьютерных систем не учитываются, перенос программ на
уровне исходных текстов на другие платформы не создает трудностей, если в
них создан транслятор этого языка. Программы разрабатывать на языках
высокого уровня проще, а ошибок допускается меньше.
Поколения языков программирования.
Языки программирования принято делить на пять поколений. В первое
поколение входят языки, созданные в начале 50-х годов, когда первые
124
компьютеры только появились на свет. Это был первый язык ассемблера,
созданный по принципу « одна инструкция – одна строка».
Расцвет второго поколения языков программирования пришелся на конец 50х – начало 60-х годов. Тогда был разработан символический ассемблер, в
котором появилось понятие переменной. Он стал первым полноценным
языком программирования. Благодаря его возникновению заметно возросли
скорость разработки и надежность программ.
Появление третьего поколения языков программирования принято относить
к 60-м годам. В это время родились универсальные языки высокого уровня, с
их помощью удается решать задачи из любых областей. Такие качества
новых языков, как относительная простота, независимость от конкретного
компьютера и возможность использования мощных синтаксических
конструкций, позволили резко повысить производительность труда
программистов. Подавляющее большинство языков этого поколения
успешно применяется и сегодня.
С начала 70-х годов по настоящее время продолжается период языков
четвертого поколения. Эти языки предназначены для реализации крупных
проектов, повышения их надежности и скорости создания. Они обычно
ориентированы на специализированные области применения, где хороших
результатов можно добиться, используя не универсальные, а проблемноориентированные языки, оперирующие конкретными понятиями узкой
предметной области. Как правило, в эти языки встраиваются мощные
операторы, позволяющие одной строкой описать такую функциональность,
для реализации которой в языках младших поколений потребовались бы
тысячи строк исходного кода.
Рождение языков пятого поколения произошло в середине 90-х годов. К ним
относятся также системы автоматического создания прикладных программ с
помощью визуальных средств разработки, без знания программирования.
Главная идея, которая закладываемая в эти языки,- возможность
автоматического формирования результирующего текста на универсальных
языках программирования (который потом требуется откомпилировать).
Инструкции же вводятся в компьютер в максимально наглядном виде с
помощью методов, наиболее удобных для человека, не знакомого с
программированием.
Классификация и обзор языков программирования
125
Языки программирования
Процедурные
Операционны
е
Структурны
е
Объектноориентированные
Объектны
е
Визуальны
е
Декларативные
Функциональны
е
Логические
Деление языков программирования на классы можно представить на схеме
таким образом:
Процедурное программирование - есть отражение фон Неймановской
архитектуры компьютера. Программа, написанная на процедурном языке,
представляет собой последовательность команд, определяющих алгоритм
решения задачи. Основная идея процедурного программирования использование памяти для хранения данных. Основная команда- присвоение,
с помощью которой определяется и меняется память компьютера. Программа
производит преобразование содержимого памяти, изменяя его от исходного
состояния к результирующему.
Различают такие языки процедурного программирования:
Язык Фортран создан в начале 50-х годов 20-го века для программирования
научно-технических задач;
Кобол – создан в конце 60-х годов 20-го века для решения задач обработки
больших объемов данных, хранящихся на различных носителях данных;
Алгол (1960 год) – это многоцелевой расширенный язык программирования.
В нем впервые введены понятия «блочная структура программы» и
«динамическое распределение памяти»;
В середине 60-х годов 20-го века был создан специализированный язык
программирования для начинающих – BASIC. Характеризуется простотой
освоения и наличием универсальных средств для решения научных,
технических и экономических задач, а также задач, например, игровых.
Все перечисленные выше языки были ориентированы на различные классы
задач, но они в той или иной мере были привязаны к конкретной архитектуре
ЭВМ.
В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот
язык хорошо приспособлен для исследования и планирования
вычислительных процессов, моделирования, решения логических задач,
разработки систем математического обеспечения.
126
Язык
Паскаль
(PASCAL)
(1968-1971гг)язык
процедурного
программирования наиболее популярный для ПК, который и в настоящее
время успешно применяется. В основу языка Pascal положен подход от
общей задачи к частным (более простым и меньшим по объему). К основным
принципам, которыми обладает Паскаль, можно отнести: а) Структурное
программирование, которое основано на использовании подпрограмм и
независимых структур данных; б) Программирование «сверху-вниз», когда
задача делится на простые, самостоятельно решаемые задачи. Затем
выстраивается решение исходной задачи полностью сверху вниз.
К языкам процедурного программирования можно отнести язык АДА (1979
г) Язык назван в честь первой программистки Ады Лавлейс- дочери Байрона.
Его отличает модульность конструкций.
Язык СИ (начало 70-х годов) также относится к языкам процедурного
программирования. Первоначальный его вариант планировался как язык для
реализации операционной системы Unix вместо языка Ассемблера. Одной из
особенностей языка СИ является то, что различия между выражениями и
операторами сглаживаются, что приближает его к функциональным языкам
программирования. Кроме того, в языке СИ отсутствует понятие
процедуры, а использование подпрограмм основано на понятии функции,
которая может сочетать в себе возможности процедуры. С одной стороны, по
набору управляющих конструкций и структур данных его можно отнести к
языкам высокого уровня, а с другой – он имеет набор средств прямого
обращения к функциональным узлам компьютера, а это означает, что его
можно использовать как операционный язык.
Объектно-ориентированное программирование (ООП)
Объектно-ориентированное программирование (ООП) — это метод
программирования, при использовании которого главными элементами
программ являются объекты. В языках программирования понятие объекта
реализовано как совокупность свойств (структур данных, характерных для
данного объекта), методов их обработки (подпрограмм изменения их
свойств) и событий, на которые данный объект может реагировать и,
которые приводят, как правило, к изменению свойств объекта.
Объединение данных и свойственных им процедур обработки в одном
объекте, называется инкапсуляцией и является одним из важнейших
принципов ООП.
127
Другим фундаментальным понятием является класс. Класс это шаблон,
на основе которого может быть создан конкретный программный объект, он
описывает свойства и методы, определяющие поведение объектов этого
класса. Каждый конкретный объект, имеющий структуру этого класса,
называется экземпляром класса.
Следующими важнейшими принципами ООП являются наследование и
полиморфизм.
Наследование предусматривает создание новых классов на базе
существующих и позволяет классу потомку иметь (наследовать) все свойства
класса – родителя.
Полиморфизм
означает,
что
рожденные
объекты
обладают
информацией о том, какие методы они должны использовать в зависимости
от того, в каком месте цепочки они находятся.
Другим важнейшим принципом ООП является модульность – объекты
заключают
в себе
полное определение их
характеристик, никакие
определения методов и свойств не должны располагаться вне его, это делает
возможным свободное копирование и внедрение одного объекта в другие.
Наиболее современными языками программирования являются С++ и
Java. С середины 90-х годов многие объектно–ориентированные языки
реализуются
как
системы
визуального
проектирования,
в
которых
интерфейсная часть программного продукта создается в диалоговом режиме,
практически без написания программных операторов. К объектно –
ориентированным системам визуального проектирования относятся Visual
Basic, Delphi, C++ Builder, Visual C++.
Язык VBA (Visual Basic for Application) – язык приложений Microsoft
Office (Excel, Word, Power Point и др). VBA соблюдает основной синтаксис
языка и правила программирования языков Basic – диалектов, позволяет
создавать макросы для автоматизации выполнения некоторых операций и
графический интерфейс пользователя, интеграцию между различными
128
программными продуктами.
Декларативные языки программирования
К ним относятся функциональные и логические языки программирования.
Функциональное программирование- это способ составления программ, в
которых
единственным
действием
является
вызов
функции.
В
функциональном программировании не используется память, как место для
хранения данных, а, следовательно, не используются промежуточные
переменные, операторы присваивания и циклы. Ключевым понятием в
функциональных языках является выражение. Программа, написанная на
функциональном языке, представляет собой последовательность описания
функций и выражений. Выражение вычисляется сведением сложного к
простому. Все выражения записываются в виде списков. Первым языком стал
язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959г. Этот
язык позволяет обрабатывать большие объемы текстовой информации.
Логическое программирование- это программирование в терминах логики.
В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG)
(Programming in Logic). Программа на языке Пролог строится из
последовательности фактов и правил, затем формулируется утверждение,
которое Пролог пытается доказать с помощью правил. Язык сам ищет
решение с помощью методов поиска и сопоставления, которые в нем
заложены. Логические программы не отличаются высоким быстродействием,
так как процесс их выполнения сводится к построению прямых и обратных
цепочек рассуждений разнообразными методами поиска.
Языки программирования баз данных.
Языки программирования баз данных отличаются от алгоритмических
языков прежде всего своим функциональным назначением. При работе с
базами данных выполняются следующие операции:
создание, преобразование и удаление таблиц в БД;
поиск, отбор, сортировка по запросам пользователя;
129
добавление новых записей и модификация существующих, удаление записей
и др.
Для обработки больших массивов информации и выборки записей по
определенным признакам был создан структурированный язык запросов SQL
(Structured Query Language). Язык SQL – это стандартный язык работы с
реляционными базами данных.
Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM
(DB2), Oracle, Software AG (Adabas), Informix и Sybase. Практически в
каждой СУБД имеется свой встроенный язык работы с БД. Так, например, в
Oracle имеется встроенный язык PL/SQL, в Informix – INFORMIX 4GL, в
Adabas – Natural и т.д.
Языки программирования для компьютерных сетей
Языки
программирования
для
компьютерных
сетей
являются
интерпретируемыми. Интерпретаторы для них распространяются бесплатно,
а сами программы – в исходных текстах. Такие языки называются скрипт –
языками.
Язык HTML (Hyper Text Markup Language) – универсальный язык разметки
гипертекста, используемый для подготовки Web документов для Internet.
Язык позволяет форматировать текст, добавлять графические образы,
работать с таблицами и организовывать связь одного документа с другим с
помощью механизма гиперссылок.
Язык Perl (80 г) содержит многочисленные функции работы со строками,
массивами, всевозможные средства преобразования данных.
Язык PHP (1995-1997гг) обладает средствами доступа к БД и используется
создателями динамических сайтов во всем мире.
Язык Tcl/Tk (конец 80-х годов) состоит из мощных команд, предназначенных
для работы с абстрактными нетипизированными объектами и позволяет
создавать программы с графическим интерфейсом.
130
Язык VRML (1994г) создан для организации виртуальных трехмерных
интерфейсов в Интернете.
131
Лекция 11 (2 часа)
Основы технологии программирования
Алгоритм – это точно определенное описание способа решения задачи в виде
конечной последовательности действий. Иначе, это описание называется
формальным
Программа – это логически упорядоченная последовательность команд
необходимая для управления компьютером.
Программа,
с
которой
последовательность
программу
в
чисел,
машинном
работает
процессор,
называемую
коде
представляет
машинным
достаточно
кодом.
сложно
и
собой
Написать
поэтому
для
представления алгоритма в виде, понятном компьютеру, служат языки
программирования.
Структурное программирование
Основная идея структурного программирования состоит в том, что структура
программы должна отражать структуру решаемой задачи, чтобы алгоритм
программы был ясно виден из исходного текста. Следовательно, надо
разбить программу на последовательность модулей, каждый из которых
выполняет одно или несколько действий. Требование к модулю – чтобы его
выполнение начиналось с первой команды и заканчивалось последней.
Модульность
–
это
основная
характеристика
структурного
программирования. А для этого надо иметь средства для создания программы
не только с помощью трех простых операторов, но и с помощью средств
более точно отражающих конкретную структуру алгоритма.
С этой целью в программирование введено понятие подпрограммы – набора
операторов, выполняющих нужное действие и не зависящих от других частей
исходного кода. Программа разбивается на множество подпрограмм, каждая
из которых выполняет одно из действий исходного кода. Комбинируя эти
блоки, удается сформировать итоговый алгоритм уже не из операторов, а из
законченных блоков. Обращаться к блокам надо по названиям, а название
132
несет смысловую нагрузку. Например, Call Summa, означает обращение к
подпрограмме с именем Summa, Call - вызов. При структурном подходе к
составлению алгоритмов и программ используются три основные типа
алгоритмов: условные, циклические алгоритмы и подпрограммы.
Структурированными считаются алгоритмы и программы, составленные с
использованием только этих трех типов алгоритмов, при этом для записи
циклов и условий должна использоваться ступенчатая запись. Например:
Если a>b то
Вывод “Первое число больше”
Иначе
Вывод “Второе число больше”
Конец если
Алгоритм считается неструктурированным, если нет ступенчатой записи
или если при создании программы использован оператор безусловного
перехода GoTo – переход к метке, т. е. структурное программирование – это
программирование без GoTo.
НЦ для I:=I1 до I2
S:=S+A(I)
КЦ;
S=0
I2=5
I1=1
VV: Ввод A(I1)
S:=S+A(I1)
I1=I1+1
Если I1I2 то перейти к метке VV
Вывод S
Например, рассмотрим 2 фрагмент программ:
Анализируя эти фрагменты, можно сказать, что они подготовлены не по
правилам структурного программирования, т. к. в первом фрагменте
программы отсутствует ступенчатая запись, а во втором есть переход к
метке:
Нисходящее программирование
Основным
принципом
технологии
структурного
программирования
являетсяяя нисходящее программирование - это программирование с
использованием
подпрограмм,
которое
133
позволяет
вести
разработку
приложения сверху вниз. Суть такого программирования состоит в том, что
сначала выделяются несколько подпрограмм, решающих глобальные задачи,
потом каждый из этих модулей разбивается на небольшое число других
подпрограмм и так происходит до тех пор, пока вся задача не окажется
реализованной. Достоинство такого подхода в том, что небольшие
программы легче отлаживать, программа становится более надежной и
подпрограммы можно использовать повторно.
3. Чтение структурированных программ
Подпрограммы бывают двух видов: процедуры и функции. Процедуры
просто выполняют последовательность операторов, а функции вычисляют
значение и передают его в главную программу. Подпрограмма – процедура
или
подпрограмма
–
функция-
это
отдельный
блок
операторов,
начинающийся с заголовка и заканчивающийся признаком конца процедуры
или функции. Чтобы подпрограмма имела смысл ей надо получить какие-то
значения,
которые
называются
параметрами.
Параметры,
которые
принимаются в подпрограмме, описываются в заголовке и называются
формальными.
Например,
Процедура Summa(a,b) – это заголовок подпрограммы - процедуры, имя
которой Summa, а в скобках указываются формальные параметры a и b.
Обращение из главной программы к процедуре осуществляется по имени
подпрограммы-процедуры с перечнем в скобках параметров, которые ей
передаются, например, Call Summa(x,y) – означает обратиться к процедуре
Summa и передать ей параметры x и y, которые называются фактическими
параметрами.
Подпрограмма
-
функция
оформляется
таким
образом:
Функция Длина( a, b, c, d), где Длина – имя функции, а в скобках указаны
формальные параметры. Подпрограмма–функция возвращает только одно
значение, которое обязательно присваивается названию функции в теле
подпрограммы–функции. Так как функция возвращает значение, то
134
обращение к ней из основной программы может входить в выражение, как
операнд.
При выполнении процедуры или функции формальные параметры временно
заменяются на фактические.
Задача 1. Составить на структурированном языке алгоритм вычисления
периметра
треугольника,
если
известны
координаты
его
вершин
(треугольник лежит на плоскости).
Обозначим координаты вершин xA, yA, xB, yB, xC, yC и ввод их значений
осуществим в главной программе. Пусть AB-расстояние между точками A и
B, BC-между B и C, AC-между A и С, а Р – периметр. Периметр вычислим по
известной формуле Р=AB+BC+AC, а расстояние же между двумя точками
вычислим по формуле: d  ( x2  x1 ) 2  ( y2  y1 ) 2 . Вычисление расстояния
между двумя точками вынесем в подпрограмму-функцию, назовем ее Длина,
а формальные аргументы подпрограммы – функции обозначим через x1, y1,
x2, y2. Тогда для вычисления AB, BC и AB надо три раза обратиться к
подпрограмме-функции, передав ей значения фактических аргументов,
сначала координаты, например, точек A и B, затем B и C, A и C.
Составим подпрограмму-функцию:
Функция Длина(x1, y1, x2, y2)
d  ( x2  x1 ) 2  ( y2  y1 ) 2
Длина=d
Конец функции
Основная программа:
Ввод координат вершин треугольника xA, yA, xB, yB, xC, yC.
P=Длина(xA,yA,xB,yB)+Длина(xB,yB,xC,yC)+Длина(xA,yA,xC,yC)
Вывод P
Задача 2. Дан массив целых чисел {Ai}, где i=1,2,3,…,M, причем М=15.
Программа вычисляет произведение сумм некоторых элементов этого
135
массива. Какое алгебраическое выражение описывает работу программы? В
программе введены следующие константы: G=1; W=12; T=8; L=15.
Программа 15;
Начать функцию
Функция SUMMA(I1,I2);
S=0;
НЦ для I:=I1 до I2
S:=S+A(I)
КЦ;
SUMMA:=S
Конец функции;
Начать программу
Писать (‘Введите значение массива A’);
НЦ для J:=1 до M
Читать (A(J)
КЦ;
P:= SUMMA(G,W)*SUMMA(T,L);
Писать (‘Произведение равно:’, P:6);
Конец программы.
Варианты ответов:
1.
8
12
i 1
j 1
P   Ai *  A j
2.
12
15
i 1
j 8
P   Ai *  A j
3.
15
6
i 1
j 1
P   Ai *  A j
4.
12
12
i 1
j 8
P   Ai *  A j
Правильный ответ с номером 2.
Стратегии решения задач (Этапы решения задач на ПК)
В процессе подготовки задачи (программной системы (ПС)) на ПК можно
выделить такие этапы:
Постановка задачи
На этом этапе формулируется цель решения задачи, анализируются
требования и подробно описывается содержание задачи, выявляются
136
условия, при которых решается задача, а также определяются входные
параметры, которые называются исходными данными. Например, для задачи
1, рассмотренной в предыдущей теме, целью является вычисление
периметра треугольника, а исходными данными являются координаты его
вершин, при этом условием является то, что вершины треугольника лежат
на плоскости.
Формальное построение модели задачи
На этом этапе составляется формальная модель решения задачи, например,
модель базы данных, адекватная оригиналу, модель объектов и потоков
информации. Для задачи 1 мы определили, что периметр треугольника
вычислим, если будем знать длины его сторон, а длины сторон
определяются по координатам вершин треугольника.
Построение математической модели решения задачи
Этот этап иначе называют формализацией задачи, на котором описательная
модель записывается с помощью какого-либо формального языка, например,
математического. Для задачи 1, рассмотренной в предыдущей теме, для
вычисления периметра используем формулу Р=AB+BC+AC, а для вычисления
длины одной стороны такую - d  ( x2  x1 ) 2  ( y2  y1 ) 2 .
Построение алгоритма
Процесс обработки данных разбивается на отдельные самостоятельные блоки
и определяется последовательность выполнения этих блоков. Для задачи 1
мы вынесли в самостоятельный блок (в подпрограмму-функцию) вычисление
расстояния между двумя точками, вызов которой будет осуществляться из
основной программы.
Составление программы
На этом этапе алгоритм записывается на каком - либо конкретном языке
программирования.
Отладка программы
137
Когда программа составлена, говорят, что готова альфа-версия. Начинается
отладка программы. Отладка программы - это процесс поиска и устранения
синтаксических и логических ошибок в программе. Метод выявления
ошибок называется тестированием.
Если программная система сложная, и ее разрабатывает компанияисполнитель по заданию заказчика, то программа, так называемая ее альфаверсия, сначала тестируется людьми компании-исполнителя (тестологами).
По истечении определенного времени тестирования, когда количество
ошибок резко уменьшается, начинается интенсивное использование системы
у заказчика с целью выявления и устранения максимального количества
ошибок перед выходом системы на рынок. Этот процесс называется бетатестированием.
В том случае, если ошибки не найдены, говорят, что при тестировании
системы получен положительный результат.
Если заказчик удовлетворен качеством программного продукта, то наступает
период его внедрения в эксплуатацию. После того, как заказчик подписывает
акт
приемки,
проект
разработки
программной
системы
считается
завершенным. Как правило, сотрудничество исполнителя по обслуживанию
системы с заказчиком продолжается, которое называется сопровождением
системы.
Жизненным циклом разработанного программного продукта является весь
период от анализа требований до внедрения и сопровождения, т. е. весь
период разработки и эксплуатации программного средства.
Главным
качеством
любого
программного
продукта
является
его
надежность.
Постановка задачи, формальное построение модели задачи и построение
математической модели решения задачи, построение алгоритма – это этапы
системного анализа задачи (если задача сложная, то рассматривают такие
этапы конструирования ИС -разработка архитектуры ИС, разработка
138
структур программ и разработка схемы информационных обменов ИС), а
далее идет этап кодирования алгоритма.
139
Лекция 12(2 часа)
Синтаксис и семантика программы
Язык программирования - это средство общения человека с компьютером.
Язык Паскаль был разработан профессором Никлаусом Виртом для целей
обучения, однако затем он получил широкое распространение и используется
для самых различных целей.
В отличии от человеческого, языки для компьютеров не допускают
двусмысленности
и
неопределенности.
Каждый
язык
имеет
строго
определенную грамматику, называемую синтаксисом . Если какое-то
предложение программы(оператор) не соответствует синтаксису языка, то
оно не имеет смысла. С другой стороны, синтаксически правильный
оператор имеет однозначную трактовку.
Программа на языке Паскаль - это последовательность операторов.
Операторы же представляют собой команды для ЭВМ, следуя которым она
решает задачу. Метод, используя который программист решает задачу,
называется алгоритмом . Работа программиста состоит в том, чтобы выбрать
алгоритм
и
составить
по
нему
программу
на
выбранном
языке
программирования.
ОБЩИЙ ВИД ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ
Упрощенную структуру программы на языке Паскаль можно представить в
следующем виде:
PROGRAM <имя программы>;
VAR
<раздел описания переменных>;
BEGIN
<тело программы>
END.
140
Слова, выделенные большими буквами называются зарезервированными или
ключевыми, то есть в синтаксисе языка они имеют вполне определенное
назначение и не могут использоваться в качестве имен пользователя.
Приведенные ключевые слова обозначают следующее:
PROGRAM - данная строка является заголовком программы;
VAR - за этим словом последует определение переменных;
BEGIN ... END - блок, объединяющий некоторую последовательность
действий. В нашем случае он ограничивает тело программы.
Конструкции типа BEGIN ... END выступают в роли привычных для нас
скобок в математическом выражении. В них каждая открывающая скобка
должна обязательно иметь пару - закрывающую скобку. В нашем случае в
качестве открывающей скобки служит BEGIN, обозначающее начало блока,
и ЕND - в качестве закрывающей скобки.
Раздел описания переменных
Он указывает компьютеру сколько переменных используется в программе,
какие имена у этих переменных и данные какого типа будут хранится в них.
Рассмотрим смысл, который вкладывается в понятие "переменная". Будем
представлять переменную в виде некоторого "черного ящика", где могут
храниться данные. Естественно, что таких "черных ящиков" в программе
может быть много. Поэтому каждый из них должен иметь свое имя, причем
оно должно быть уникальным.
В каждом "черном ящике" могут храниться данные одного типа, например
целые числа (INTEGER) или вещественные (REAL). Причем в каждый
момент времени в "черном ящике" может храниться только одно значение
указанного типа. Стандартные типы переменных определены в языке
программирования, и для их обозначения используются ключевые слова.
Например, объявление переменных:
141
VAR
add1,add2: INTEGER;
означает, что мы заводим две переменные с именами add1 и add2. В них мы
можем хранить только целочисленные данные, на что указывает ключевое
слово INTEGER.
Введем правила выбора имен переменных (идентификатиров) :
- нельзя использовать ключевые слова языка в качестве имен переменных;
- имена состоят из букв или цифр, могут включать некоторые спецсимвол (_).
Начинаться должны только с буквы и могут иметь произвольную длину (имя
add1 является допустимым, а 1add - нет);
- желательно использовать имена в латинской транскрипции;
-
строчные
и
прописные
буквы
в
именах
переменных
являются
эквивалентными.
Имена, присваиваемые переменным, должны нести смысловую нагрузку, так
как это делает программу более легкой для понимания и чтения. Сравните
имена: add1 - сразу ассоциируется с первым слагаемым и ссс совершенно
непонятно, о чем идет речь (аналогия с переездом и упаковкой вещей в
одинаковые ящики).
Для лучшего восприятия имен необходимо использовать единый способ
написания имени. Например, идентификатор, состоящий из одного слова маленькими буквами, а идентификатор, в который входит несколько слов, начиная каждое слово с большой буквы. Так имена будут выглядеть очень
наглядно. Имена переменных не должны содержать пробелов. Например,
ResAdd - результат сложения.
Все переменные, используемые в программе должны быть описаны.
Тело программы
142
Это та часть программы, в которой описываются выполняемые действия. В
теле программы указывается последовательность действий, которые должны
быть выполнены компьютером.
Тело программы заключается между двумя зарезервированными словами
BEGIN и END. В конце программы после END обязательно ставится точка
".". В теле программы располагаются операторы языка Паскаль, разделенные
";". Точка с запятой ставится после каждого оператора, за некоторым
исключением:
- не ставится после ключевых слов в теле программы;
- может не ставится в последнем операторе блока перед END.
Причина этому становится понятна, если рассматривать BEGIN и END как
скобки в математическом выражении:
BEGIN
<оператор_1>;
<оператор_2>;
(<опер_1>;<опер_2>;<опер_3>)
<оператор_3>
END.
и совершенно нелепо выглядит запись
BEGIN
<оператор_1>;
<оператор_2>;
(<опер_1>;<опер_2>;<опер_3>;)
<оператор_3>;
END.
ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ
Оператор присваивания
Простейшей конструкцией языка является оператор присваивания, который
имеет следующий вид:
<имя_переменной>:=<выражение>
143
Смысл этого оператора состоит в задании некоторого значения переменной,
имя которой указано в левой части оператора присваивания. Объявив в
разделе объявления переменную определенного типа, мы только определили
возможность записать в переменную некоторое значение (аналогия - пустой
термос), а с помощью оператора присваивания мы можем занести в наш
"черный ящик"(переменную) уже некоторое значение (аналогия - наливаем
воду в термос). Например
add1:=5;
Выполняется
присваивание
так:
переменной
стоящей
слева
(add1)
присваивается значение, стоящее справа (5).
Кроме непосредственного присваивания некоторого значения, можно
вычислять и одновременно присваивать результат сложных арифметических
выражений.
В целочисленной арифметике используются следующие операции:
+ - сложение
- - вычитание
* - умножение
DIV - целочисленное деление
MOD - остаток от деления
ABS - абсолютная величина
SQR - квадрат числа
Например:
9 DIV 3 = 3
9 MOD 3 = 0
ABS(-5) = 5
10 DIV 3 = 3
10 MOD 3 = 1
SQR(6) - 3 = 33
144
В вещественной арифметики используются те же операторы, что и
целочисленной, за исключением символа деления: зарезервированное слово
DIV заменяется на символ "/", так
5 DIV 2 = 2, но 5/2 = 2.5
Также в арифметических выражениях можно использовать следующие
функции, которые дают вещественный результат:
SIN(x) - синус х, заданного в радианах
COS(x) - косинус х, заданного в радианах
EXP(x) - е в степени х
LN(x) - натуральный логарифм х (при х>0)
LOG(x) - десятичный логарифм х (при х>0)
SQRT(x) - корень квадратный из х (при х>=0)
ARCTAN(x) - арктангенс х, заданный в радианах
В выражениях, которые содержат несколько операций, порядок их
выполнения
определяется
стандартными
алгебраическими
правилами
следования. Для изменения порядка операций служат скобки. Отметим, что
если "+" или "-" встречаются после другого знака, то их следует разделить
скобками. Например
add1:=5*(-add2)
Рассмотрим решение задачи сложения двух чисел. Здесь и далее, если в
программе используется какое-то действие, которое мы не изучали, будем
обозначать его в свободном формате.
PROGRAM sum;
VAR
add1, add2, ResAdd : INTEGER;
BEGIN
add1:=3;
add2:=8;
145
ResAdd:=add1+add2;
вывод ("полученное значение", ResAdd)
END.
В стандарте языка Паскаль переменная, если значение ей еще не задано,
рассматривается как неопределенная. При попытке использовать ее в
выражении, машина должна выдать сообщение об ошибке.
Например, фрагмент:
add2:=8;
ResAdd:=add1+add2;
является неправильным. К числу нельзя прибавить "пустоту", находящуюся
в "черном ящике" после описания соответствующей переменной в разделе
описания переменных. В современных версиях Турбо Паскаля переменной
по умолчания присваивается ноль, но все таки желательно явно присваивать
каждой переменной начальное значение.
Рассмотрим, что делает данный фрагмент:
add1:=3;
add1:=add1+1;
Сначала в переменную add1 заносится 3, а затем ее значение увеличивается
на 1.
При присваивании переменной нового значения, ее старое значение просто
теряется. Необходимо при программировании быть очень осторожным,
чтобы не потерять нужное значение.
Решим задачу: поменять местами значения двух переменных.
PROGRAM chang;
VAR
146
add1, add2 : INTEGER;
work : INTEGER;
BEGIN
add1:=3;
add2:=8;
work:=add1;
add1:=add2;
add2:=work
END.
Взаимное преобразование целых и вещественных чисел
В языке Паскаль для численных переменных используются два типа
INTEGER и REAL. Но очевидно, что в выражениях необходимо использовать
переменные обоих типов одновременно. Поэтому необходимо ввести
правила их взаимного преобразования (аналогия со шкафом и полкой):
1. Если переменной типа REAL присваивается целочисленное значение, то
целое число автоматически преобразуется в целочисленный эквивалент (5 -->
5.0). Например при следующем объявлении переменных:
div1 : INTEGER; ResDiv : REAL;
будет верным следующий оператор присваивания:
ResDiv:=div1;
2. Если же наоборот, переменной типа INTEGER присвоить значение REAL,
то возникнет ошибка преобразования типов. Чтобы обойти это используются
функции преобразования типов для вещественных чисел:
TRUNC(x) - целая часть числа х;
ROUND(x) - значение округленное к ближайшему целому.
Например: TRUNC(2.6)=2; ROUND(2.6)=3
3. Необходимо иметь в виду, что если в выражении используется хотя бы
одно вещественное число, то все оно преобразуется к вещественной форме. А
147
также, то что функции вещественной арифметики возвращают значения в
вещественной форме, не зависимо от того какого вида использовался
аргумент (SQRT(4)=2.0).
Задача. Вычислить значение выражения в целочисленной и вещественной
арифметике: y 
1
a1  a2
PROGRAM FDiv;
VAR
add1, add2, ResAdd, ResDivI : INTEGER;
ResDivR : REAL;
BEGIN
ввод(add1,add2);
ResAdd:=add1+add2;
ResDivI:=1 DIV ResAdd;
ResDivR:=1/ResAdd;
вывод ("полученные значения", ResDivI, ResDivR)
END.
Вроде бы эта программа написана правильно. Но это только на первый
взгляд. По сути, здесь есть очень серьезная ошибка, которая при
определенном наборе входных данных сделает успешное выполнение этой
программы невозможным.
Действительно, если пользователь введет в качестве исходных данных числа
3 и -3, тогда мы получим деление на ноль. Подобные ошибки необходимо
учитывать
при
написании
программы,
для
чего
обрабатывать
все
исключительные ситуации.
Для устранения ошибки деления на ноль, необходимо перед выполнением
операции деления проверить: не равен ли нулю знаменатель вычисляемого
148
выражения? В случае равенства вычисления не производить, а иначе
вычислить отношение.
Лекция 12(2 часа)
Алгоритмы решения вычислительных задач, использующих выражения и
ветвление
Условные операторы
Оператор, позволяющий в зависимости от условия выполнять разные
действия называется условным или оператором ветвления . Его синтаксис:
IF <условие> THEN
<оператор_1>
ELSE <оператор_2 >
<оператор_1> выполняется, если <условие> верно, а <оператор_2> в
противном случае. Ветвь ELSE может отсутствовать. В качестве условия
может быть любое логическое выражение. Следующий фрагмент позволяет
найти максимум из двух чисел:
IF add1>add2 THEN
max:=add1
ELSE max:=add2;
Однако часто бывает необходимым выполнять в соответствии с условием не
один, а несколько операторов. В этом случае их объединяют в блок с
помощью BEGIN и END:
IF <условие> THEN
BEGIN
<оператор_1.1>;
149
. . .
<оператор_1.n>
END
ELSE
BEGIN
<оператор _2.1>;
. . .
<оператор _2.m>
END
Исправим нашу программу с вычислением выражения:
PROGRAM FDiv;
VAR
add1, add2, ResAdd, ResDivI : INTEGER;
ResDivR : REAL;
BEGIN
ввод(add1,add2);
ResAdd:=add1+add2;
IF ResAdd<>0 THEN
BEGIN
ResDivI:=1 DIV ResAdd;
ResDivR:=1/ResAdd;
вывод ("полученные значения", ResDivI, ResDivR)
END
ELSE вывод("операцию деления производить нельзя")
END.
Операторы вывода
Для вывода информации на экран используются операторы вывода:
150
WRITE(<выражение_1>,<выражение >,<выражение_3> ...)
WRITELN(<выражение_1>,<выражение >,<выражение_3> ...)
В качестве выражений могут выступать:
- имена переменных, в этом случае на экран будет выведено значение
переменной;
- арифметическое выражение, которое необходимо заключать в скобки (на
экран выведется его значение);
- произвольная текстовая строка, которую необходимо заключить в
апострофы "'" - на экран будет выведен текст в том виде, в котором он задан.
Внутри строки использовать символ апострофа нельзя.
Оба эти операторы выполняют одинаковое действие, отличие их состоит в
том, что при использовании WRITELN последующий вывод данных будет
осуществляться с новой строки. Например:
WRITELN ('первая строка,');
первая строка,
WRITELN ('вторая строка');
вторая строка
WRITE ('первая строка,');
первая строка, вторая строка
WRITE ('вторая строка');
Вывод
числовых
значений.
При
выводе
на
экран
целые
числа
представляются в привычном для нас виде, а для изображения вещественных
чисел используется две формы записи: с плавающей точкой и с
фиксированной точкой (4.234Е+0 = 423.4). Для управления выводом
численных значений используется формат, который записывается после
переменной или арифметического выражения в операторе вывода:
WRITE(<цел_переменная>:w);
151
WRITE(<вещ_переменная>:w:d);
где w - размер поля для вывода числа в целом;
d - размер дробной части.
Целые числа выравниваются по правому краю, а вещественные - по
положению точки.
Например:
div1:=2; ResDiv:=45.6
WRITELN('целое число ',div1:6);
WRITELN('вещественное число ',ResDiv);
WRITELN('вещественное число ',ResDiv:10:5);
В результате такого вывода на экране будет отображено следующее:
целое число
6
вещественное число 4.56000000Е+01
вещественное число
45.6
Для вставки пустой строки используется оператор WRITELN.
Пример. Вывести на экран:
значение тангенса вычисляется по формуле:
Tg(x)=sin(x)/cos(x)
для угла х= <значение_х>
Tg(x)= <значение_sin(x)>/ <значение cos(x)> = <значение_Tg(x)>
WRITELN('значение тангенса вычисляется по формуле');
WRITELN('Tg(x)=sin(x)/cos(x)');
152
WRITELN('для угла х=', х:10:4);
WRITE('Tg(x)=', SIN(x):10:4,'/',COS(x):10:4,'=');
WRITELN(SIN(x)/COS(x):10:4);
Операторы ввода
Рассмотрим нашу программу сложения двух чисел, в которой значения
слагаемым было дано с помощью оператора присваивания. Чтобы
использовать эту программу для нахождения суммы двух других чисел
необходимо переписать заново два оператора присваивания.
Кому захочется выполнять эту работу? Основное назначение компьютеров
экономить время человеку, а не создавать для него дополнительную работу.
Поэтому необходимо обеспечить возможность однажды написав программу,
многократно использовать ее в различных ситуациях для различных входных
данных. В нашем случае она выражается в возможности определять
слагаемые.
В языке Паскаль такая возможность реализована в виде оператора ввода:
READ(<переменная_1>,<переменная >,<переменная_3>...);
READLN(<переменная_1>,<переменная >,<переменная_3>...);
Например: READ(add1,add2)
Теперь уже можно переписать любую из наших программ в полной форме:
PROGRAM FDiv;
VAR
add1, add2, ResAdd, ResDivI : INTEGER;
ResDivR : REAL;
BEGIN
WRIITE('введите два слагаемых');
READLN(add1,add2);
ResAdd:=add1+add2;
IF ResAdd<>0 THEN
153
BEGIN
ResDivI:=1 DIV ResAdd;
ResDivR:=1/ResAdd;
WRITELN('вычисляем выражение 1/(а1+а2)');
WRITELN ('полученные значения');
WRITELN('для целочисленного деления',ResDivI:3)
WRITELN('для вещест. деления', ResDivR:8:4)
END
ELSE WRITELN('операцию деления производить нельзя')
END.
Примечание. Качество программы во многом определяется не только ее
содержанием, но и формой ввода/вывода информации. Написать программу это еще полдела, важно, чтобы ею мог кто-то воспользоваться. Ведь в
конечном итоге мы создаем программу не для себя, а для того, чтобы она
кому-то пригодилась. А для этого необходимо так оформить ввод/вывод
информации, чтобы любой пользователь, не заглядывая в текст программы,
мог с ней работать. Например, если в предыдущей программе опустить
развернутый вывод, то совершенно не понятно ни сколько чисел вводить, ни
что программа делает, ни какие значения выводит.
Тип данных BOOLEAN
Не всегда переменные используются для того, чтобы представлять числа.
Одним из нечисловых типов данных является тип данных BOOLEAN.
Булевы или логические переменные могут иметь одно из двух значений:
TRUE(истина) и FALSE(ложь). Булевы выражения могут принимать
несколько различных форм:
- быть просто константами типа TRUE или FALSE, например:
flag := TRUE; sign:=FALSE;
154
- использоваться, чтобы проверить отношение между двумя переменными,
например:
res := (add1 = add2); - булево выражение, проверяющее равенство двух
переменных, res будет присвоено значение TRUE, если значения переменных
равны, и FALSE в противном случае.
В логических выражениях допустимо использовать следующие знаки
отношения: =, >,<,>=,<=,<>
- булевы выражения могут конструироваться с помощью булевых операций,
в Паскаль включены три булевы операции AND(и), OR(или), NOT(не).
Результаты операций для булевых значений:
TRUE AND TRUE = TRUE
TRUE OR TRUE = TRUE
FALSE AND FALSE = FALSE
FALSE OR FALSE = FALSE
TRUE AND FALSE = FALSE
FALSE AND TRUE = FALSE
TRUE OR FALSE = TRUE
F
ALSE OR TRUE = TRUE
NOT TRUE = FALSE
NOT FALSE = TRUE
Приоритеты вычисления в булевских выражениях:
1. ()
2. NOT, OR, AND
3. <,>,<=,=>,<>
Например, в выражении:
add1 := add2 OR add1<>2
сначала выполнится операция OR, а затем уже операции отношения. Для
того, чтобы сначала выполнились операции отношения, необходимо
поставить скобки: (add1=add2) OR (add1<>2).
Булевские выражения могут используются:
155
- в качестве условия в операторе ветвления, например, проверить
правильность ввода четырех чисел, если они являются координатами полей
шахматной доски:
PROGRAM Games;
VAR
k,l,m,n : INTEGER;
BEGIN
READ(k,l,m,n);
IF (k<1) OR (k>8) OR (l<1) OR (l>8) OR (m<1) OR (m>8)
OR(n<1) OR (n>8)
THEN WRITE ('введены неправильные координаты');
END.
- для реализации различных переключателей внутри программы (flag:=
TRUE);
- в качестве значений переменных, объявленных типа BOOLEAN, например,
решение предыдущей задачи другим способом:
PROGRAM Games;
VAR
flag : BOOLEAN;
k,l,m,n : INTEGER;
BEGIN
READ(k,l,m,n);
(*flag=TRUE, если введены неверные координаты,
и FALSE в противном случае *)
flag:= (k<1) OR (k>8) OR (l<1) OR (l>8) OR (m<1)
OR (m>8) OR (n<1) OR (n>8);
IF flag THEN
WRITE ('введены неправильные координаты')
END.
156
В языке Паскаль имеется встроенная булева функция:
ODD(x) - принимает значение TRUE, если целочисленное x нечетно и
FALSE, если х четно
Например, определить является ли четным число k:
Flag:= ODD(k);
IF flag THEN WRITELN('число нечетное')
ELSE WRITELN('число четное');
Примечание: В принципе можно смоделировать функцию ODD:
flag := (k MOD 2) = 1
ОПИСАНИЕ КОНСТАНТ
При написании программ возможна ситуация, когда одна и та же числовая
величина используется в программе несколько раз. Например, при решении
тригонометрических задач часто используется величина 3.14159.
В этом случае числу удобно присвоить имя, то есть описать его как
константу. Все используемые в программе константы объединяются в блок,
который описывается перед разделом переменных. То есть общий вид
программы на Паскале будет иметь следующий вид:
PROGRAM <имя_программы>;
CONST
<раздел_описания_констант>;
VAR
<раздел_описания_переменных>;
BEGIN
<тело_программы>;
END.
Само описание констант имеет вид:
<имя_константы>=<простое_значение>;
157
Например:
pi=3.14159;
DayYear=365;
При использовании констант необходимо учитывать:
- справа от знака равенства может стоять только простое значение типа
INTEGER, REAL, BOOLEAN и других простых типов, используемых в языке
Паскаль;
- константе не может быть присвоено новое значение после того, как она
объявлена.
Использовать константы можно в любых выражения языка: арифметических,
логических, а также при указании формата вывода в операторах WRITE и
WRITELN.
158
Лекция 14(2 часа)
Операторы повторения
При написании программ типичной является ситуация, когда некоторая
последовательность действий выполняется несколько раз. Например,
рассмотрим задачу: найти максимальный элемент последовательности из 6
элементов.
VAR
num, max: REAL;
BEGIN
WRITELN('num=');READ(num);
max:=num;
(* явно повторяющийся блок *)
WRITELN('num=');READ(num);
IF num>max THEN max:=num;
WRITELN('num=');READ(num);
IF num>max THEN max:=num;
WRITELN('num=');READ(num);
IF num>max THEN max:=num;
WRITELN('num=');READ(num);
IF num>max THEN max:=num;
WRITELN('num=');READ(num);
IF num>max THEN max:=num;
WRITELN('максимальный элемент =', max:10:5)
END.
Очевидно, что в этой программе можно выделить явно повторяющийся блок.
Этот блок выполняется 5 раз в неизменном виде, и естественным было бы
просто указать сколько раз должна выполнятся эта последовательность
действий. Это можно сделать с помощью оператора цикла.
Цикл с параметрами (со счетчиком)
159
Цикл - это последовательность операторов, которая может выполняться
более одного раза. В языке Паскаль имеется несколько механизмов для
конструирования циклов. Один из них - цикл со счетчиком, это такой класс
циклов, в котором некоторая последовательность действий должна
выполняться заданное число раз. Синтаксис этого оператора следующий:
FOR <счетчик>:=<нач_значение> TO <конечное_значение> DO
<тело_цикла>;
Выполняется этот оператор следующим образом:
1. переменной целого типа <счетчик> присваивается целое значение которое
определяет начальное значение переменной <счетчик>;
2. значение <счетчик> сравнивается с <конечным_значением>, которое
также является целочисленным значением:
ЕСЛИ <счетчик> <= <конечное_значение>
ТО выполняется <тело_цикла>
ИНАЧЕ выполнение цикла заканчивается, переход к 4 пункту
3. значение счетчика автоматически увеличивается на 1, снова выполняется
пункт 2;
4. выполнение цикла заканчивается.
В качестве <тела_цикла> может выступать либо один оператор, либо группа
операторов, объединенных с помощью операторных скобок BEGIN и END.
Используя цикл со счетчиком, программу нахождения максимума можно
переписать
в
более
общем
виде
последовательности.
VAR
num, max: REAL;
n,i: INTEGER;
BEGIN
WRITELN('n=’); READ(n);
IF n>0 THEN
160
для
любого
числа
чисел
в
BEGIN
WRITELN('num=');READ(num);
max:=num;
FOR i:=1 TO n-1 DO
BEGIN
WRITELN('num=');READ(num);
IF num>max THEN max:=num
END;
WRITELN('максимальный элемент =', max:10:5)
END
ELSE
WRITELN(‘ошибочный ввод’);
END.
Также можно использовать другую форму записи оператора цикла со
счетчиком.
FOR <счетчик>:=<нач_значение> DOWNTO <конеч_значение> DO
<тело_цикла>;
Выполнение этого оператора аналогично выполнению первого оператора,
только здесь значение управляющей переменной на каждом шаге цикла не
увеличивается на 1, а уменьшается на 1.
Особенности использования цикла со счетчиком
1. Управляющей переменной <счетчик> нельзя в цикле присваивать никаких
значений вручную.
2. После нормального завершения цикла значение управляющей переменной
<счетчик> считается неопределенным, поэтому его не рекомендуется
использовать после оператора цикла.
Циклы со счетчиком целесообразно использовать, когда количество
повторений заранее определено. Например, при вычислении суммы
заданного числа элементов ряда, факториала и т.д.
Пример 1. Вычислить сумму n чисел, вводимых с клавиатуры.
161
Сначала напишем программу без циклов для 5 чисел и выделим
повторяющийся фрагмент:
VAR
num, sum: REAL;
BEGIN
WRITELN('num=');READ(num);
sum :=num;
(* явно повторяющийся блок *)
WRITELN('num=');READ(num);
sum :=sum + num;
WRITELN('num=');READ(num);
sum :=sum + num;
WRITELN('num=');READ(num);
sum :=sum + num;
WRITELN('num=');READ(num);
sum :=sum + num;
WRITELN('sum = ', sum:6:2)
END.
А теперь оформим эту программу с использованием цикла:
VAR
num, sum: REAL;
n,i: INTEGER;
BEGIN
WRITELN('n=’); READ(n);
IF n>0 THEN
162
BEGIN
WRITELN('num=');READ(num);
sum:=num;
FOR i:=1 TO n-1 DO
BEGIN
WRITELN('num=');READ(num);
sum := sum + num;
END;
WRITELN('sum =', sum:10:5)
END
WRITELN(‘ошибочный ввод’);
ELSE
END.
Пример 2. Вычислить значение n!.
Алгоритм вычисления заключается в следующем: на каждом шаге будем
использовать значение факториала на предыдущем шаге:
1 шаг: fact=1;
2 шаг: домножаем предыдущее значение факториала на 2: fact=fact*2;
3 шаг: домножаем предыдущее значение факториала на 3: fact=fact*3;
...
PROGRAM CountFact;
VAR
fact: LONGINT;
n,i:INTEGER;
BEGIN
WRITELN('введите N');
READ(n);
fact:=1;
FOR i:=2 TO n do
fact:=fact*i;
163
WRITELN('значение ',n,'! =',fact)
END.
Лекция 15(2 часа)
Алгоритмы решения задач, использующих операторы повторения
Цикл с предусловием
Другой допустимый класс циклов - это цикл с предусловием. При его
выполнении повторяется группа операторов до тех пор пока условное
выражение в заголовке цикла истинно. Его синтаксис:
WHILE <условное_выражение> DO
<тело цикла>;
В случае, если <условное выражение> ложно, когда оператор цикла
выполняется первый раз, то цикл вообще ничего делать не будет. В качестве
<тела_цикла> может выступать либо один оператор, либо группа операторов,
объединенных с помощью операторных скобок BEGIN и END.
Пример 3. Найти сумму цифр произвольного положительного числа
(проверку правильности ввода числа выполнить самостоятельно).
PROGRAM SumNum;
VAR
num: LONGINT;
a, sum: INTEGER;
BEGIN
WRITELN('введите число');
READ(num);
WHILE num>0 DO
BEGIN
{выделение последней цифры}
a:= num MOD 10;
{уменьшение разряда числа}
num:= num DIV 10;
164
sum:=sum+a
END
END.
Использование цикла с предусловием целесообразно, если некоторая
последовательность действий выполняется в зависимости от некоторого
условия, например для вычисления ряда с заданной точностью и т.д.
Пример 4. Дана последовательность чисел, заканчивающаяся 0. Найти
среднее арифметическое этой последовательности.
PROGRAM AverAge;
VAR
count:INTEGER;
sum, num : REAL;
BEGIN
sum:=0; count:=0;
WRITELN('mum=’); READ(num);
WHILE num<>0 DO
BEGIN
sum:=sum+num;
count:=count+1;
WRITELN('mum=’); READ(num);
END;
IF count = 0 THEN
WRITELN(‘введена пустая последовательность’)
ELSE
WRITELN('avg= ', (sum/count):10:5)
END.
Используя цикл с предусловием важно помнить:
1. При каждом повторении должно происходить приближение к цели, то
есть к условию окончания. Очевидным следствием этого является
165
необходимость того, чтобы повторяющиеся вычисления влияли каким-то
образом на условие, например:
WHILE i>0 DO
k:=k+1;
в этом цикле значение i не изменяется, значит в случае, если раньше i было
присвоено положительное значение, то получится бесконечный цикл.
Бесконечные циклы возникают также и тогда, когда цикл сконструирован
таким образом, что проверяемое условие никогда не становится ложным.
2. Следует избегать повторения идентичных вычислений. Необходимо
избегать в теле цикла выражений, которые не меняют своих значений,
например фрагмент программы:
WHILE i<3*n DO
BEGIN
k:=3*n; u:=x+y*z;
следует записать
sum:=x+y*z+z*i;
WHILE i<k DO
BEGIN
num:=u+z*i;
i:=i+1
END
i:=i+1
END
3. Если условие не выполнено в самом начале, то цикл эквивалентен пустому
оператору, то есть не производит никаких действий.
4. По возможности необходимо использовать для вычислений результаты
предыдущих итераций цикла.
Цикл с постусловием
Третьим видом операторов цикла в Паскале является цикл с постусловием.
Его синтаксис имеет вид:
REPEAT
<тело цикла>
UNTIL <условное выражение>;
Эта конструкция работает аналогично циклу WHILE. Различие заключается
в том, что цикл с предусловием (WHILE) проверяет условие до выполнения
166
<тела цикла>, в то время как REPEAT проверяет условие после выполнения
<тела цикла>. Это гарантирует хотя бы одно выполнение действий,
указанных в <теле цикла>, до завершения цикла.
Кроме того выполнение этого цикла завершается тогда, когда условное
выражение становится истинным, а в цикле WHILE - наоборот.
Пример 5. Определить, является ли данное число простым.
PROGRAM prime;
VAR
num: INTEGER; (* исследуемое число *)
count:INTEGER;(* возможный делитель *)
BEGIN
WRITELN('num='); READ(num);
count:=1;
(* число является простым, если оно делится
только на себя и 1*)
REPEAT
count:=count+1
UNTIL (num MOD count)=0;
(*если у числа не нашлось других делителей,
кроме себя – то это простое число,
в противном случае - составное*)
IF count=num
THEN WRITELN('число',num:5,'является простым')
ELSE WRITELN(num:5, '- делится на ',count:5)
END.
Пример 6. Найти наибольший общий делитель двух натуральных чисел,
используя алгоритм Эвклида.
167
Алгоритм Евклида нахождения НОД основан на следующих свойствах этой
величины:
Пусть x и y одновременно не равные нулю целые неотрицательные числа и
пусть x>=y
Тогда если y = 0, то НОД(x, y) = x,
Если y не равен 0, то для чисел x, y и r, где r - остаток от деления x н аy
выполняется равенство НОД(x, y) = НОД(y, r).
Например, найдем НОД 1071 и 462.
1 шаг. x = 1071 и y = 462, x > y
x = x MOD y
x = 1071 MOD 462 = 147
2 шаг. x = 147 и y = 462, x < y
y = y MOD x
y = 462 MOD 147 = 21
3 шаг. x = 147 и y = 21, x > y
x = x MOD y
x = 147 MOD 21 = 0
4 шаг. x = 0 и y = 21, x =0 => НОД = 21
VAR
x, y, nod : INTEGER;
BEGIN
WRITE(‘x=’); READ(x);
WRITE(‘y=’); READ(y);
REPEAT
IF x > y THEN x := x MOD y
ELSE y := y MOD x;
UNTIL x * y = 0;
WRITELN(‘NOD=’, x+y);
168
END.
Лекция 16(2 часа)
Структурированные типы данных
Рассматриваемые до сих пор типы данных являются простыми типами
данных. Простой тип - это такой тип, который может принимать только одно
значение. Например, переменная типа INTEGER может хранить только одно
целое число.
Язык Паскаль содержит наряду с этим и структурированные типы данных,
которые могут представлять совокупности значений. Наиболее часто
используемым структурированным типом является массив. Описание
массива осуществляется в разделе VAR и имеет следующий вид:
<переменная> : ARRAY [<тип индекса>] OF <тип компонент>;
где <тип индкса> - <целое>..<целое>
Например:
list: ARRAY [1..10] OF INTEGER;
list - массив, содержащий 10 значений типа INTEGER. К первому элементу
массива можно обратиться, указав list[1], к следующему - list[2] .
Значения
внутри
квадратных
скобок
называются
индексами.
Они
используются для указания конкретной компоненты массива. Индекс может
быть произвольным выражением или переменной, но пока для нас
обязательно целого типа.
Тип компонент массива - это просто тип данных, который связывается с
каждым элементом массива. Например, если массив имеет тип компонент
INTEGER, то каждая его компонента может быть использована как
целочисленная переменная, если тип компонент REAL - то как переменная
вещественного типа.
Тип индекса определяет границы изменения индекса. Если сделана попытка
обратиться к несуществующему элементу массива, то возникает ошибка.
169
Такого рода ошибки называются ошибками неверного индекса. Следующие
операторы присваивания приведут к ошибкам неверного индекса:
list[0]:=89;
list[11,6]:=67;
В основном все операции над массивами осуществляются поэлементно. Над
массива целиком допустима только операция сравнения на равенство или
неравенство в том случае, если два массива имеют одинаковый тип
компонент и тип индекса. Например, объявив массив:
list, list1: array [1..10] of integer;
можно в условном операторе сравнить массивы list и list1:
IF list = list1
THEN WTITELN('два одинаковых массива')
ELSE WRITELN('массивы разные');
В качестве границ массива желательно использовать константы целого типа,
описанные разделе CONST. Тогда, чтобы изменить границы массива
достаточно будет изменить значения констант. Например:
CONST
n=10;
VAR
a : ARRAY [1..n] OF INTEGER;
b : ARRAY [1..n] OF REAL;
Типовые операции над массивами
1. Заполнение массива. Осуществляется с помощью оператора присваивания
поэлементно. Например, рассмотрим заполнение массива нулями:
FOR i:=1 TO n DO
a[i]:=0;
также массив можно заполнить случайными числами:
FOR i:=1 TO n DO
170
a[i]:=Randomize(100); {генерирует случайные числа до 100}
Задание:
Заполнить массив целыми числами в интервале [a1,b1]
FOR i:=1 TO n DO
a[i]:=a1+Randomize(b1-a1);
Заполнить массив вещественными числами в интервале [a1,b1], количество
знаков после запятой – 2
FOR i:=1 TO n DO
a[i]:=a1+Randomize((b1-a1)*100)/100;
2. Ввод элементов массива. Осуществляется поэлементно:
FOR i:=1 TO n DO
BEGIN
WRITE (‘a[‘,i,’]=’); READLN(a[i]);
END;
3. Вывод элементов массива.
- в строку
WRITELN(‘массив а’);
FOR i:=1 TO n DO
WRITE (a[i],’ ‘);
WRITELN;
- в столбец
WRITELN(‘массив а’);
FOR i:=1 TO n DO
WRITELN (a[i],’ ‘);
171
Задание:
Вывести массив по 5 элементов в строке
WRITELN(‘массив а’);
FOR i:=1 TO n DO
BEGIN
IF i MOD 5 = 0 THEN WRITELN
WRITE (a[i],’ ‘);
END;
4. Перебор. Решение большинства задач с массивами связаны с выполнением
некоторых однотипных действий над каждым элементом массива, например
поиск максимума, вычисление суммы и т.д. Перебор элементов массива
осуществляется с помощью цикла, в котором некоторая переменная,
например i, последовательно принимает значения от нижней до верхней
границы массива. Ниже приведен фрагмент программы нахождения
максимального элемента массива:
max:=a[1];
FOR i:=2 TO n DO
IF max<a[i]
THEN max:=a[i];
Сначала max присваивается значение первого элемента массива. Затем в
цикле исследуются все компоненты, начиная со второго, чтобы определить,
не содержат ли они элемента большего, чем max. Если такая компонента
найдена, то она заменяется на найденное значение. Таким образом, после
окончания
работы
цикла,
в
переменной
максимальное значение в массиве.
Задание:
Найти номер максимального элемента массива.
Найти сумму всех элементов массива
172
max
будет
содержаться
Найти среднее арифметическое всех элементов массива
5.
Перестановка элементов в массиве. Переставить элементы в массиве
можно только через встопомогательную переменную. Например, поменять
местами первый и последний элемент массива:
num:=list[1];
list[1]:=list[n];
list[n]:=num;
6. Удаление элементов масcива. При удалении одного или нескольких
элементов массива осуществляется сдвиг элементов внутри массива. При
удалении из данного массива 4 элемента, 5 становиться на место 4, 6 - на
место 5 и т.д
№ 1
24
№ 1
24
2
3
4
5
6
7
8
9
10
23
6
1
-5
45
21
90
3
1
2
3
4
5
6
7
8
9
10
23
6
-5
45
21
90
3
1
1
Отметим, что последний элемент массива(10) остается прежним и не должен
учитываться. Фактический размер массива при удалении 1 элемента
уменьшился на 1, но реально он остался прежним, так как размер
объявленного массива внутри программы изменить нельзя. Поэтому
желательно
иметь
специальную
переменную,
в
которой
хранится
фактический размер массива.
Пример, удалить из массива элемент с заданным номером p (объявленный
размер массива n, реальный - m ).
m:=n; {в начале программы}
…
173
FOR i:=p TO m-1 DO
a[i]:=a[i+1];
m:=m-1; {уменьшаем фактический размер массива}
7. Вставка элементов в массив. При вставке новых элементов в массив
необходимо иметь в виду, что размер массива всегда фиксированный, такой
как указан при объявлении массива. Поэтому решая задачи, связанные со
вставкой одного или нескольких элементов, чтобы не было выхода за
границу, нужно задавать размер массива с запасом, а реальный конец
массива хранить в отдельной переменной. Например при вставке нового
элемента перед 5, необходимо сдвинуть 10 элемент на 11 место, 9 - на 10, 8 на 9 и т.д.
№ 1
24
№ 1
24
2
3
4
5
6
7
8
9
10
11
12
13
14
23
6
1
-5
45
21
90
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
23
6
1
-5
45
21
90
3
1
А затем занести на 4 место новый элемент. При этом фактический конец
массива нужно увеличить на 1.
Пример, вставить новый элемент new перед заданным с номером p
(объявленный размер массива n, реальный - m).
m:=n; {в начале программы}
…
m:=m+1; {так как вставляется один элемент, фактический размер
массива увеличивается на 1 }
FOR i:=p+1 DOWNTO m DO
list[i]:=list[i-1];
list[m]:=new;
174
8. Копирование элементов массива в другой массив. Иногда необходимо
скопировать один массив в другой или часть одного массива в другой. Если
массив list1 описан также как и массив list, Паскаль допускает копирование
идентичныхмассивов одним оператором присваивания:
list1:= list;
Предыдущее содержимое list1 будет уничтожено и заменено содержимым
массива list. Сам массив list при этом не измениться. Если же описание двух
массивов отличается либо типом индекса, либо типом компонент, такое
простое присваивание недопустимо.
Пусть второй массив описан так:
list1: ARRAY [10..20] OF REAL;
тогда фрагмент программы, копирующий первые 5 элементов массива list в
list1 будет выглядеть так:
FOR i:=1 TO 5 DO
list1[9+i]:= list[i];
В цикле последовательно каждому элементу второго массива присваивается
соответствующий элемент первого. Индекс массива list1 перевычисляется на
каждом шаге цикла.
В случае, если тип компонент массивов не совпадает, используются
стандартные принципы совместимости типов данных и их взаимного
преобразования. Например, для
list1: ARRAY [1..n] OF INTEGER;
операция копирования будет иметь вид
FOR i:=1 TO n DO
list1[i]:=TRUNC(list[i]);
175
Лекция 17(2 часа)
Алгоритмы решения задач на одномерные и двухмерные массивы
1. Поиск заданного элемента в массиве. К этому классу относятся задачи,
связанные с поиском элемента или его номера в массиве. Часто необходимо
вставить новый элемент в конец массива, если такового в нем нет.
Использовать полный перебор элеиентов массива (с помощью цикла с
параметрами) нецелесообразно, так как будет осуществляться слишком
много лишних сравнений. Необходимо найти элемент и закончить перебор
вцикле.
Рассмотрим фрагмент программы поиска элемента. Пусть у нас заполнены m
(m<n) элементов массива, новый элемент находится в переменной newn,
тогда
i:=1;
WHILE (i<=m) AND (list[i]<>newn) DO
i:=i+1;
IF i>m THEN WRITELN(‘заданного элемента в массиве нет’)
ELSE WRITELN(‘заданный элемент находиться на ‘,i,’ -ом месте’);
В
этом
случае
последовательно
перебираются
элементы
массива,
сравниваются с новым. Перебор продолжается до тех пор, пока количество
проверяемых элементов не исчерпано (условие i<=m) и нового элемента в
массиве нет (условие list[i]<>newn).
Для решения задачи поиска элемента со вставкой его в конец при отсутствии
его в массиве, можно воспользоваться алгоритмом поиска со сторожем:
list[m+1]:=newn; { вставляем новый элемент вконец }
i:=1;
WHILE list[i]<>newn DO
i:=i+1;
{ заданного элемента в массиве не было, увеличиваем индекс
заполняемости массива }
176
IF i=(m+1) THEN m:=m+1;
В этом случае новый элемент сначала вставляется в конец массива. Затем в
цикле перебираются все компоненты массива до тех пор, пока не встретится
новый элемент (а встретится он обязательно либо в середине массива, если
он там уже есть, либо но m+1 месте, куда мы его сами вставили). После
окончания цикла остается только сдвинуть индекс заполненности массива, в
случае, если заданного элемента в массиве не было.
2.
Двоичный
поиск.
Рассмотренные
алгоритмы
поиска
связаны
с
последовательным перебором элементов массива. В некоторых случаях,
например
при
упорядоченности
массива
это
неэффективно.
Для
упорядоченных массивов применяются другие методы, наиболее простой из
которых - алгоритм двоичного поиска.
Задача. Найти элемент, равный x, в упорядоченном массиве, то есть при
условии a[i+1]<=a[i] для всех i=1..n-1.
Алгоритм двоичного поиска состоит в следующем:
1. вычисляется номер среднего элемента массива;
2. если он равен искомому, поиск прекращается;
3. в противном случае пункты 1-2 применяются к левой или правой
половине, в зависимости от результата сравнения искомого элемента со
средним.
PROGRAM DSerch;
CONST
n=10;
VAR
a : array [1..n] OF INTEGER;
x, { искомый элемент }
i, { левая граница интервала поиска }
j, { правая граница интервала поиска }
c, { центр массива }: INTEGER;
177
FlSerch: BOOLEAN; { признак того, найден элемент или нет }
BEGIN
WRITELN('введите упорядоченный массив из',n,'элементов');
FOR i:=1 TO n DO
READLN(a[i]);
WRITELN('введите искомый элемент');
READLN(x);
i:=1; j:=n; {устанавливаем правую и левую границу интервала на
начало и конец массива }
FlSerch:=FALSE;
REPEAT
c:=(i+j) DIV 2;
IF x<a[c] THEN j:=c-1 {устанавливаем правую границу на центр
ELSE
IF x>a[c] THEN i:=c+1 {устанавливаем левую границу на центр
ELSE FlSerch:=TRUE; { элемент найден }
UNTIL (i>j) OR FlSerch;
IF FlSerch THEN WRITELN('элемент найден на ',c,'месте')
ELSE WRITELN('элемент не найден');
END.
Поскольку каждый шаг делит интервал поиска пополам, то число
необходимых сравнений равно Log2(N+1). Рассмотрим еще один более
эффективный вариант решения этой задачи, исключающий составное
условие завершения:
...
i:=1; j:=n;{ устанавливаем правую и левую границу интервала на нача ло и
конец массива }
REPEAT
c:=(i+j) DIV 2;
178
IF x<=a[c] THEN j:=c-1;{устанавливаем правую границу на центр}
IF x>=a[c] THEN i:=c+1{устанавливаем левую границу на центр}
UNTIL i>j;
IF i>j+1 THEN WRITELN('элемент найден на',c,'месте')
ELSE WRITELN('элемент не найден');
3. Сортировка массивов.
Метод пузыpька. Алгоритм сортировки массива a по возрастанию состоит в
следующем:
- последовательно сравниваются пары соседних элементов a[k] и a[k+1]
(k=1..N-1);
- если a[k]>a[k+1], они переставляются (тем самым наибольший элемент
окажется на своем месте в конце массива);
- метод применяется ко всем элементам массива, кроме последнего.
PROGRAM PSort;
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,wp: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
FOR i:=1 TO N-1 DO
FOR k:=1 TO N-i DO
IF a[k]>a[k+1] THEN
BEGIN
wp:=a[k+1];
a[k+1]:=a[k];
179
a[k+1]:=wp
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
Сортировка перестановками.
Алгоритм сортировки по возрастанию
состоит в следующем
- выбирается наименьший элемент массива и меняется местами с первым;
- затем наименьший элемент ищется в массиве, начиная со второго элемента;
- меняется местами со вторым;
- и так далее, начиная с третьего.
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,j,min: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
FOR i:=1 TO N-1 DO
BEGIN
min:=a[i]; k:=i; { фиксируем место в массиве, начиная с которого
будем искать минимальный элемент }
FOR j:=i TO N DO
IF a[j]>min THEN
BEGIN
min:=a[j];
180
k:=j; { фиксируем место нового min }
END;
a[k]:=a[i]; a[i]:=min { меняем местами очередной и минимальный
элементы }
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
Сортировка вставками. Алгоритм сортировки массива а по убыванию
состоит в следующем:
- пусть первые k элементов уже упорядочены по неубыванию;
- берется (k+1) элемент и размещается среди первых k элементов так, чтобы
упорядоченными оказались уже k+1 первых элементов;
- этот метод применяется при k от 1 до N-1.
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,j,max: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
{ считаем упорядоченным первый элемент массива }
FOR k:=1 TO N-1 DO
BEGIN
max:=a[k+1];
{ рассматриваем последовательность из k+1 элементов, в которой
181
k элементов уже упорядочены }
i:=1;
WHILE a[i]>max DO { пока новый элемент не нарушит
упорядоченность }
i:=i+1;
{ анализируем результат просмотра }
IF i<k { новый элемент нарушает упорядоченность, его нужно
вставить на i -е место, а все остальные упорядоченные
элементы сдвинуть вправо на 1 } THEN
BEGIN
FOR j:=k+1 DOWNTO i+1 DO
a[j]:=a[j-1];
a[i]:=max;
END
{ теперь уже отсортированы к+1 элементов, продолжаем цикл для
следующего элемента }
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
ЛЕКЦИЯ 18 (2 часа)
Процедуры и функции
Рассмотрим задачу обработки некоторого набора данных, состоящего из
строки заголовка и последовательности из N строк. Все строки и заголовок
состоят из слов, разделенных пробелами и знаками препинания. Причем
обработка заголовка отличается от обработки остальных строк. В общем виде
эту программу можно записать так:
. . .
182
READ(Заголовок);
Обработка_Заголовка;
FOR i:=1 TO N DO
BEGIN
READ(Строка);
Обработка_Строки;
END;
Печать_Результатов;
.
.
.
Описание исходной задачи сделано в терминах подзадач, причем выделена
только
основная
структура
задачи,
а
детали
опущены.
Конечно,
Обработка_Заголовка, Обработка_Строки и Печать_Результатов должны
быть в дальнейшем описаны со всеми необходимыми деталями. Однако,
можно не заменять слова-описатели соответствующими фрагментами
программ на Паскале, а рассматривать эти слова как идентификаторы, и
определить детали подзадач в отдельных частях программы, которые
называются
подпрограммами
(процедурами).
Такие
определения
отдельных подзадач называются описаниями процедур. В них определяются
действия процедуры и ее имя. Идентификаторы в главной программе
называются вызовами процедур и их действие заключается в выполнении
соответствующей процедуры.
Процедуры играют важнейшую роль при разработке программ на любом
языке программирования. Они помогают выделять структуру алгоритма и
разбивать программу на логически связанные единицы. Это особенно важно
в случае сложных алгоритмов, то есть длинных программ. Конечно, в таком
простом примере использование отдельно написанных процедур довольно
расточительное дело, но для получения ясной структуры программы часто
рекомендуется использовать явные процедуры даже в таком простом случае.
183
Особенно полезна процедура, если она должна вызываться из различных
мест программы. Например, если в нашем примере, Обработка и строки и
заголовка связана с разбиением строки на слова, целесообразно иметь
отдельную
процедуру
Выделение_
слова
и
вызывать
ее
по
мере
необходимости.
Синтаксис программе на Паскале, использующий вложенные процедуры,
имеет следующий вид:
PROGRAM <имя>;
CONST
< описание констант>
VAR
<описание переменных>
<описание процедур и функций>
BEGIN
<последовательность действий>
END.
В самом простом случае описание процедуры имеет вид:
PROCEDURE <имя>;
CONST
< описание констант>
VAR
<описание переменных>
BEGIN
<последовательность действий>
END; {процедуры <имя>}
Не случайно синтаксис процедуры так похож на синтаксис программы в
целом, это еще раз подчеркивает тот факт, что это та же самая программа, но
184
решающая отдельную небольшую подзадачу. Причем описание процедур
может быть вложенным, что позволяет структурировать не только главную
программу, но и каждую процедуру в отдельности. Тогда в процедуру после
объявления переменных включается раздел
Описание процедур и
функций.
Пример. Найдем сумму элементов одномерного массива, оформив задачу в
виде процедуры:
PROCEDURE SumAr;
. . .
BEGIN
sum:=0;
FOR i:=1 TO N DO
sum:=sum+a[i];
END; {SumAr}
Локальные и глобальные переменные
Рассмотрим теперь
все переменные, которые есть в нашем примере.
Очевидно, что роль переменной i, используемой в качестве управляющей
переменной цикла, строго ограничено телом процедуры. Это свойство
локальности следует выразить явно, что можно сделать, описав i внутри
процедуры. Тем самым i становится локальной переменной. Считается
хорошей привычкой описывать локальные объекты, то есть ограничивать
область существования локальных переменных той процедурой, в которой он
имеет смысл. Процедура, для которой действительно описание имени,
областью видимости. Так как описания могут быть вложены друг в друга,
то вложены друг в друга и области видимости.
Наряду с локальными переменными, в нашем примере используются и
переменные другого типа, например, переменная sum или массив a. Внутри
данной процедуры результаты вычисления суммы никак не используются,
значение этой переменной понадобится в главной программе для каких либо
185
целей. Переменные такого рода не могут быть локальными, они должны быть
описаны в вызывающей данную процедуру основной программе, которая,
например, сравнивает сумму двух массивов:
CONST
N=10;
VAR
a: ARRAY [1..N] OF INTEGER;
sum, sum1,j: INTEGER;
PROCEDURE SumAr;
VAR i: INTEGER;
BEGIN
sum:=0;
FOR i:=1 TO N DO
sum:=sum+a[i];
END; {SumAr}
BEGIN
WRITELN(‘введите элементы первого массива’);
FOR j:=1 TO N DO READ(a[i]);
SumAr; {считаем сумму элементов первого массива}
sum1:=sum; {запоминаем рассчитанную сумму}
WRITELN(‘введите элементы второго массива’);
FOR j:=1 TO N DO READ(a[i]);
SumAr; {считаем сумму элементов второго массива}
WRITЕ(‘сумма элементов ’);
IF sum1>sum THEN WRITELN(‘первого массива больше’)
ELSE IF sum1<sum THEN WRITELN(‘втрого массива больше’)
ELSE WRITELN(‘обоих массивов равны’);
END.
Программу, состоящую из набора процедур можно рассматривать как
совокупность концентрических блоков. Главная программа - это внешний
186
блок, процедура вычисления суммы - это вложенный по отношению к
программе блок.
Переменные sum
и массив а, описаны в главной программе. Процедура
вычисления суммы является вложенным блоком по отношению к главной
программы, поэтому все переменные главной программы могут быть
использованы внутри вложенных процедур. Такие переменные называются
глобальными по отношению к вложенным блокам.
Различия между локальными и глобальными параметрами являются
существенными. Поведение локальной переменной отлично от поведения
глобальной. Переменная, которая является локальной по отношению к
некоторой процедуре, создается при каждом вызове процедуры. После того
как выполнение процедуры завершается, переменная уничтожается. Таким
образом, локальная переменная недоступна вне блока, в котором она
описана.
Правила, регулирующие действия идентификаторов внутри программных
блоков, называются правилами локализации (области действия):
Идентификатор определен только в пределах блока, в котором он описан. В
нашем примере переменные sum, a, sum1, j являются глобальными
переменными и они доступны из любого места программы. Идентификатор i
может быть использован только внутри процедуры вычисления суммы.
Один и тот же идентификатор может быть по-разному определен в каждом
отдельном блоке. При этом если подобный идентификатор описан и
используется в ряде концентрических блоках, то такой идентификатор
интерпретируется в соответствии с описанием самого внутреннего из
вложенных блоков, содержащих данный идентификатор. Например:
VAR sum: REAL;
. . .
PROCEDURE L1;
187
VAR sum: INTEGER;
PROCEDURE L2;
VAR sum: CHAR;
BEGIN {L2}
. . .
sum:=‘a’; {переменная символьного типа}
. . .
END; {L2}
BEGIN {L1}
. . .
sum:=10; {переменная целого типа}
. . .
END; {L1}
BEGIN {главной программы}
...
sum:=5.5; {переменная вещественного типа}
...
END.
Однако такого дублирования идентификаторов нужно по возможности
избегать, так как это приводит к затруднениям при чтении и отладки
программы. Совершенно не понятно, зачем использовать одно и тоже имя
для определения разнородных объектов, например для числовых и
символьных данных.
На уровне блока идентификатор может описываться только один раз, то есть
все идентификаторы в блоке должны быть уникальными, нельзя задавать
одинаковые имена для определенных на одном уровне переменных и имен
процедур.
188
Стандартные идентификаторы Паскаля (например, стандартные процедуры
и
функции)
считаются
описанными
в
воображаемой
процедуре,
охватывающую всю программу.
Эти правила можно запомнить с помощью алгоритма поиска идентификатора
i. Вначале просматривается описание
процедуры P, в теле которой
идентификатор встретился. Если в разделе объявления переменных
идентификатора i нет, то продолжается поиск в процедуре, охватывающей P.
Далее повторяется это же правило, пока не встретится нужное описание.
Следствием концепции локальности и правила о том, что переменная не
существует за пределами ее видимости, является тот факт, что значение
переменной теряется, когда описывающая ее процедура завершается.
Использование параметров
Процедуры могут иметь параметры. Именно это делает процедуры такими
полезными. Рассмотрим еще раз пример процедуры сложения элементов
массива. Весьма вероятно, что в программе содержатся несколько массивов,
к которым нужно ее применить. Переписывать новый массив в массив а для
каждого применения процедуры - громоздко и некрасиво. Этого можно
избежать, введя суммируемый массив в виде параметра процедуры:
Const
N=10;
TYPE
Tarr = ARRAY [1..N] OF INTEGER;
PROCEDURE SumAr(Vector: Tarr);
VAR i: INTEGER;
BEGIN
sum:=0;
FOR i:=1 TO N DO
sum:=sum+Vector[i];
END; {SumAr}
189
В список параметров процедуры введен параметр Vector. Тем самым он
становится локальным объектом, подменяющим фактический массив,
указанный в вызове процедуры:
SumAr(a); SumAr(b);
Массивы b и а называются фактическими параметрами, заменяющими
массив Vector,
называемый формальным параметром. При задании
формального параметра должен указываться его тип, который должен
полностью соответствовать типу фактического параметра. В нашем примере
описание типа формального и фактического параметра одинаковы - ARRAY
[1..n] OF INTEGER;
Еще лучшая версия процедуры может включать в качестве параметра не
только массив, но и результат суммирования.
Существует два типа формальных параметра - параметр-переменная и
параметр-значение. Первый отмечается ключевым словом VAR, а второй его отсутствием. Самое главное их отличие в том, что в внутри процедуры
параметр-переменная может изменяться, а при возвращении в вызывающую
программу эти изменения сохраняются. Так можно передать результат
выполнения процедуры во внешний блок. Параметр-значение не может быть
внутри процедуры изменен и используется только для передачи параметра
внутрь процедуры. При выходе из нее значение параметра становится таким
же, как при входе в процедуру.
В списке параметров может быть несколько формальных параметров, при
этом их описание разделяется “;”, а при вызове список фактических
параметров разделяется “,”.
В нашем случае с помощью параметра-переменной можно вернуть
вычисленную в процедуре сумму.
PROCEDURE SumAr(Vector:Tarr; VAR sum: INTEGER);
VAR i: INTEGER;
BEGIN
190
sum:=0;
FOR i:=1 TO N DO
sum:=sum+Vector[i];
END; {SumAr}
При использовании этой процедуры программа сравнения сумм двух
векторов будет иметь следующий вид:
CONST
N=10;
VAR
a,b: ARRAY [1..N] OF INTEGER;
sum2, sum1,j: INTEGER;
{описание процедуры SumAr}
BEGIN
WRITELN(‘введите элементы первого массива’);
FOR j:=1 TO N DO READ(a[i]);
SumAr(a,sum1); {считаем сумму элементов первого массива}
WRITELN(‘введите элементы второго массива’);
FOR j:=1 TO N DO READ(b[i]);
SumAr(b,sum2); {считаем сумму элементов второго массива}
WRITЕ(‘сумма элементов ’);
IF sum1>sum2 THEN WRITELN(‘первого массива больше’)
ELSE IF sum1<sum2 THEN WRITELN(‘второго массива больше’)
ELSE WRITELN(‘обоих массивов равны’);
END.
191
Министерство образования и науки Российской федерации
Филиал государственного образовательного учреждения высшего профессионального образования
«Дальневосточный государственный технический университет
(ДВПИ имени В.В.Куйбышева)» в г. Артеме
МАТЕРИАЛЫ ДЛЯ ЛАБОРАТОРНЫХ РАБОТ
по дисциплине «Информатика»
Специальность 280103.65 – Защита в чрезвычайных ситуациях
специализация – Гражданская защита
г. Артём
2010
192
Лабораторная работа 1 (8 часов)
Создание и редактирование многостраничных текстов сложной структуры
Задание: Создать документ в редакторе Word (размер шрифта 12 пикселей,
полтора интервала между строками, отступ красной строки 1 см), вставить
нумерацию разделов, страниц, собрать оглавление:
Заголовок уровня 1
Аннотация
Курсовая работа посвящена реализации прямого и обратного преобразования
Радона в виде Web-приложения.
Обращение преобразования Радона
осуществляется на основе алгоритма свертки и обратного проецирования. Это
приложение позволит осуществлять преобразование и восстановление
изображения произвольного формата через Web-браузер.
Введение
В настоящее время существуют эффективные реализации методов прямого и
обратного преобразования Радона, но большинство из них представляют
собой «настольные» приложения, ориентированные на работу на локальном
компьютере. Современные клиент-серверные технологии позволяют создавать
приложения, которые можно использовать через web-браузер (при наличия
доступа в Интернет). Все вычисления осуществляются на серверной части, а
пользователь просматривает результаты на своем компьютере и даже на
мобильном устройстве.
Цель данной работы – реализовать вычислительной модуль метода свертки и
обратного проецирования обращения преобразования Радона на основе
клиент-серверной технологии.
Для реализации поставленной цели были решены следующие задачи:
- изучен алгоритм построения прямого преобразования Радона на основе
обработки изображения в виде графического файла (в формате jpg, gif, bmp);
193
- реализован алгоритм прямого преобразования Радона на основе обработки
изображения в виде графического файла (в формате jpg, gif, bmp);
-
изучен
метод
свертки
и
обратного
проецирования
обращения
преобразования Радона для восстановления изображения по его интегральным
характеристикам;
- реализован алгоритм свертки и обратного проецирования обращения
Заголовок уровня 1 с нумерацией
преобразования Радона.
Математические основы методов компьютерной томографии
В главе рассматриваются основы метода построения прямого преобразования
Радона и метода свертки и обратной проекции обращения преобразования
Радона, который предлагается для реконструкции изображений в задачах
компьютерной томографии.
Заголовок уровня 2 с нумерацией
Построение сечений
В основе большинства томографов лежит идея, состоящая в том, что
внутреннюю
структуру
объекта
можно
представить,
получив
ряд
параллельных поперечных сечений. Поэтому главная задача компьютерной
томографии - получить двумерное (плоское) изображение поперечного
сечения исследуемого объекта.
Рисунок
файла)
(вставить
из
Рисунок 1. Схема получения проекций
194
Чтобы определить плотность распределения вещества 𝑢(𝑥, 𝑦) в сечении
объекта, исследуемый объект в пределах тонкого поперечного слоя
просвечивается
параллельным
пучком
хорошо
сфокусированных
рентгеновских лучей (рисунок 1). Направление лучей составляет некоторый
угол 𝜑 с осью. Лучи ослабляются веществом, находящимся внутри объекта,
пропорционально его плотности. С противоположной стороны объекта
располагается
устройство
(линейка
детекторов),
регистрирующее
интенсивность каждого луча, прошедшего через объект. При этом полагается,
что лучи распространяются в объекте вдоль прямой линии, определяемой
уравнением:
𝑥𝑐𝑜𝑠𝜑 + 𝑦𝑠𝑖𝑛𝜑 − 𝑠 = 0,
(1)
где 𝑠 - расстояние от начала координат до соответствующего луча.
Заголовок уровня 2 с нумерацией
Метод построения прямого преобразования Радона
Интенсивность луча на выходе из объекта равна интегралу от искомой
функции 𝑢(𝑥, 𝑦) вдоль траектории луча 𝑙 (рисунок 1):
∞
∞
𝑝(𝑠, 𝜃) = ∫ ∫ 𝑢(𝑥, 𝑦)𝛿(𝑥𝑐𝑜𝑠𝜃 + 𝑦𝑠𝑖𝑛𝜃 − 𝑠)𝑑𝑥𝑑𝑦,
(2)
−∞ −∞
где траектория луча 𝑙 описывается уравнением (1);
𝛿(∙) – дельта-функция;
𝑝(𝑠, 𝜃) - радоновский образ, проекция для угла 𝜃.
Запишем связь между координатами (𝑥, 𝑦) исходной и (𝑥′, 𝑦′) повернутой на
угол 𝜃 прямоугольными системами координат:
𝑥 ′ = 𝑥𝑐𝑜𝑠𝜃 + 𝑦𝑠𝑖𝑛𝜃, 𝑥 = 𝑥 ′ 𝑐𝑜𝑠𝜃 − 𝑦 ′ 𝑠𝑖𝑛𝜃,
{ ′
{
𝑦 = −𝑥𝑠𝑖𝑛𝜃 + 𝑦𝑐𝑜𝑠𝜃, 𝑦 = 𝑥 ′ 𝑠𝑖𝑛𝜃 + 𝑦 ′ 𝑐𝑜𝑠𝜃,
в повернутой на угол 𝜃 системе координат уравнение прямой (1) имеет вид:
𝑥 ′ = 𝑠.
Выполним замену переменных в выражении (2):
195
∞
∞
𝑝(𝑠, 𝜃) = ∫ ∫ 𝑢(𝑥 ′ 𝑐𝑜𝑠𝜃 − 𝑦′𝑠𝑖𝑛𝜃, 𝑥 ′ 𝑠𝑖𝑛𝜃 + 𝑦′𝑐𝑜𝑠𝜃)𝛿(𝑥′
−∞ −∞
− 𝑠)|J|𝑑𝑥 ′ 𝑑𝑦 ′ ,
(3)
𝜕𝑥 𝜕𝑥
𝜕𝑥′ 𝜕𝑦′
𝑐𝑜𝑠𝜃 −𝑠𝑖𝑛𝜃
𝐽 = 𝑑𝑒𝑡
=(
) = 1,
𝜕𝑦 𝜕𝑦
𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜃
(𝜕𝑥′ 𝜕𝑦′)
воспользуемся фильтрующим свойством дельта-функции:
∞
∫ 𝑓(𝑥)𝛿(𝑥 − 𝑠)𝑑𝑥 = 𝑓(𝑠)
−∞
и сведем интеграл в (3) к одномерному
∞
𝑝(𝑠, 𝜃) = ∫ 𝑢(𝑠𝑐𝑜𝑠𝜃 − 𝑦′𝑠𝑖𝑛𝜃, 𝑠𝑠𝑖𝑛𝜃 + 𝑦′𝑐𝑜𝑠𝜃)𝑑𝑦 ′ .
(4)
−∞
Проекции 𝑝(𝑠, 𝜃), получаемые по формуле (1), вычисляются под всеми
возможными углами 𝜃 и для тех значений 𝑠, при которых функция 𝑢(𝑥, 𝑦)
отлична от 0:
𝜃 изменяется в пределах от 0 до 180о , так как 𝑝(𝑠, 𝜃) =
𝑝(−𝑠, 𝜃 + 𝜋) и 𝑠 ограничивается физическим размером объекта, чаще всего
рассматриваю окружность радиуса 𝑎, охватывающую рассматриваемое
поперечное сечение (−𝑎 ≤ 𝑠 ≤ 𝑎). В этом случае интеграл (4) будет иметь вид:
√𝑎2 −𝑠
𝑝(𝑠, 𝜃) =
∫
𝑢(𝑠𝑐𝑜𝑠𝜃 − 𝑦𝑠𝑖𝑛𝜃, 𝑠𝑠𝑖𝑛𝜃 + 𝑦 𝑐𝑜𝑠𝜃) 𝑑𝑦,
(5)
−√𝑎2 −𝑠
где траектория луча 𝑙 описывается уравнением (1); 𝑝(𝑠, 𝜃) - радоновский
образ, проекция для угла 𝜃.
Таким образом, каждое значение радоновского образа 𝑝(𝑠, 𝜃) есть интеграл от
тех значений функции 𝑢(𝑥, 𝑦), которые она принимает вдоль луча 𝑙,
определяемого параметрами −𝑎 ≤ 𝑠 ≤ 𝑎 и 0 ≤ 𝜃 < 𝜋.
196
Рассмотрим алгоритм,
реализующего прямое преобразование Радона. На
̅̅̅̅̅̅
входе алгоритма – графическое изображение 𝐺[𝑥, 𝑦], где 𝑥 = 1.
. 𝑁, 𝑦 = ̅̅̅̅̅̅
1. . 𝑁,
сохраненное в графическом файле, например, формата .gif. Каждый пиксель
представлен в формате RGB и может быть описан в виде:
̅̅̅̅̅̅̅
где 𝑟𝑥𝑦 , 𝑔𝑥𝑦 , 𝑏𝑥𝑦 = 0.
. 2𝑘 ,
𝐺[𝑥, 𝑦] = {𝑟𝑥𝑦 , 𝑔𝑥𝑦 , 𝑏𝑥𝑦 },
𝑘 зависит от того, сколькими битами кодируется цвет данного пикселя (для
формата gif k=8).
Преобразование изображения в дискретную функцию 𝑢(𝑥, 𝑦), элементами
которой являются значения, полученные преобразованием пикселя (x, y)
исходного изображения:
𝑘
̅̅̅̅̅̅̅̅̅̅̅̅
𝑢(𝑥, 𝑦) = 𝑟𝑥𝑦 2𝑘 +𝑔𝑥𝑦 22 + 𝑏𝑥𝑦 , где 𝑥 = ̅̅̅̅̅̅̅̅̅̅̅̅
0. . 𝑁 − 1, 𝑦 = 0.
. 𝑁 − 1.
2. Вычисление двумерных проекций 𝑝(𝑠, 𝜃), −𝑎 ≤ 𝑠 ≤ 𝑎 и 0 ≤ 𝜃 < 𝜋. Заменим
прямое преобразование Радона в формуле (5) дискретным преобразованием,
для этого воспользуемся квадратурной формулой трапеций с 𝑀 узлами,
погрешность которой оценивается как 0(h2) и применим метод ближайшего
соседа для получения значений функции 𝑢(𝑥, 𝑦), в узлах сетки:
𝑀−2
0
0
𝑀−1
𝑀−1
𝑢([𝑥𝑟𝑡
], [𝑦𝑟𝑡
]) + 𝑢([𝑥𝑟𝑡
], [𝑦𝑟𝑡
])
𝑗
𝑗
𝑝(𝑠𝑟 , 𝜃𝑡 ) = Δ𝑧
+ Δ𝑧 ∑ 𝑢 ([𝑥𝑟𝑡 ], [𝑦𝑟𝑡 ]),
2
𝑗=1
𝑠𝑟 𝑐𝑜𝑠𝜃𝑡 − 𝑧𝑗 𝑠𝑖𝑛𝜃𝑡 − 𝑥𝑚𝑖𝑛 𝑗
𝑠𝑟 𝑠𝑖𝑛𝜃𝑡 + 𝑧𝑗 𝑐𝑜𝑠𝜃𝑡 − 𝑦𝑚𝑖𝑛
, 𝑦𝑟𝑡 =
Δ𝑥
Δ𝑦
𝜋
𝜃𝑡 = 0 + 𝑡Δ𝜃,
𝑡 = ̅̅̅̅̅̅̅̅̅̅̅
0. . 𝑃 − 1,
Δ𝜃 = ,
𝑃
−2𝑥𝑚𝑖𝑛
Δ𝑥 = Δ𝑦 =
, 𝑥𝑚𝑖𝑛 = −𝑎,
𝑁
2∗𝑎
𝑠𝑟 = 𝑠𝑚𝑖𝑛 + 𝑟Δ𝑠,
𝑟 = ̅̅̅̅̅̅̅̅̅̅̅
0. . 𝑅 − 1,
Δ𝑠 =
,
𝑠𝑚𝑖𝑛 = −𝑎,
𝑅
2 ∗ √𝑎2 − 𝑠𝑟
2
𝑧𝑗 = −√𝑎 − 𝑠𝑟 + 𝑗Δ𝑧, Δ𝑧 =
,
𝑀
где P – количество углов просвечивания, R – количество проекций.
𝑗
𝑥𝑟𝑡 =
197
На рисунке 2 для изображения размером 145 на 145 пикселей в формате gif
показаны результаты каждого шага алгоритма прямого преобразования
Радона.
Реализация приложения
Функциональные возможности приложения,
реализующего описанные в
предыдущей главе алгоритмы прямого и обратного преобразования Радона:
- выбор графического файла любого формата, например jpeg, gif, bmp;
- настройка параметров ля выполнения алгоритмов (ввод количество углов
поворота, углов для построения одномерных проекций);
- прямое преобразование Радона по алгоритму, предложенному в разделе 1.2;
- вывод результатов прямого
преобразования в виде одномерного и
двухмерного графиков.
Реализация приложения осуществлена в виде web-приложения на языке
Python. Для работы приложения необходим только web-браузер, работа
приложения гарантирована в
Safari;
Gооgle Сhrоme;
Mоzilla Firefоx;
Internet Explorer.
Выбор
графических
файлов
и
настройка
параметров
приложения
осуществляется на стороне клиента, непосредственно в web-браузере,
алгоритмы прямого и обратного преобразования запускаются на сервере.
Структура модулей приложения, реализующих серверную часть, приведена на
рисунке 7. Приведем их краткое описание:
модуль GraphConvert – реализует преобразование графических файлов в
двухмерный массив точек, и обратное преобразование из массива в
графическое изображение;
198
модуль Radon – реализует прямое преобразование радона, на входе он
получает двухмерный массив размера N на N, количество углов поворота, на
выходе – двухмерный массив проекций размера R на P, построенный в
соответствии с алгоритмом раздела 1.2;
модуль Filter – реализует свертку (фильтрацию массива), построенного
прямым преобразованием Радона, на входе – массив проекций размера R на P,
на выходе – массив преобразованных проекций размера R на P;
модуль BackProjection – реализует метод обратной проекции обращения
Радона, на входе - массив преобразованных проекций размера R на P, на
выходе – массив, описывающий изображение;
модуль ShowGraph – реализует вывод графических файлов в окно браузера и
построение графиков одномерных функций.
GraphConvert
Filter
Radon
Main
BackProjection
ShowGraph
Рисунок 3. Структура модулей приложения
Заключение
В процессе выполнения курсовой работы были изучены метод построения
прямого преобразования Радона и метод свертки и обратной проекции
обращения преобразования Радона, разработаны соответствующие алгоритмы.
Создано web-приложение, которое реализует описанные методы. Таким
образом, цель и задачи, поставленные в курсовой работе, выполнены
полностью.
199
Данная работа может быть дальше продолжена: для разработанных
алгоритмов можно применить технологию параллельных вычислений для
повышения их эффективности.
Список литературы
Грузман И.С.., B.C. Киричук, Косых В.П., Перетягин Г.И., Спектор А.А.
Цифровая обработка изображений в информационных системах: Учебное
пособие. — Новосибирск: Изд-во НГТУ, 2000.
Губарени Н.М. Вычислительные методы и алгоритмы малоракурсной
компьютерной томографии. - Киев, Изд-во Наукова думка, 1997, 328 с.
Левин Г.Г., Вишняков Г.И. Оптическая томография. - М.: Радио и связь, 1981.
Наттерер Ф. Математические аспекты компьютерной томографии. — М.: Мир,
1990 г.
Хермен Г. Восстановление изображений по проекциям. - М.: Мир, 1983, 350 с.
200
Лабораторная работа 2 (4 часа).
Решение простой вычислительной задачи в среде Excel. Использование формул.
Задание: Реализовать задачи «Учет успеваемости студентов» и «Начисление стипендии» в виде электронной
таблицы:
201
202
Лабораторная работа 3 (4 часа).
Решение задачи в среде Excel. Построение табличных значений функции. Использование диаграмм и
графиков
Задание: Построить графики функций одной и двух переменных:
203
204
Лабораторная работа 4 (4 часа)
Решение задач в среде Excel
Задание. Реализовать в среде Excel следующую задачу:
Лабораторная работа 5 (4 часа)
Работа в сети INTERNET
Лабораторная работа 6 (4 часа)
Создание простейшей HTML-страницы
205
«Глобальная компьютерная сеть Internet»
Создать каталог Lab_2 и записать в него следующие файлы: W_lab2.doc,
W_lab2_pic1.wmf, W_lab2_pic2.wmf, W_lab2_pic3.wmf.
Открыть БЛОКНОТ и набрать приведенный ниже код:
<HTML>
<HEAD>
<TITLE>Web-страница</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H1 ALIGN="center"><B>Глобальная компьютерная сеть Internet</B></H1>
<P> В настоящее время интенсивно развивается <I>Internet</I> компьютерная сеть, охватывающая весь мир. Сегодня Интернет имеет десятки
миллионов абонентов в большинстве стран мира. <I>Internet</I> образует как
бы ядро, обеспечивающее связь различных информационных сетей.</P>
<UL>
<LI>История создания </LI>
<LI>Протоколы сети <I>Internet</I></LI>
<LI>Услуги, представляемые <I>Internet</I></LI>
</UL>
</BODY>
</HTML>
Сохранить его в файле Main_Int.html в каталоге Lab_2.
Просмотреть его в Web-обозревателе (ФАЙЛ, ОТКРЫТЬ, ОБЗОР, найти
нужный файл).
Используя справочник по HTML коду, а также текст из файла W_lab2.doc
создать файлы:
History.html на основе информации, предложенной в файле W_lab3.doc,
вставить в него картинку W_lab2_pic1.wmf, изменить цвет фона и пр.
Protocol.html,
оформить
уровни
взаимодействия
компьютеров
и
соответствующие им протоколы в виде таблицы, вставить рисунок
W_lab2_pic3.wmf.
Service.html, вставить файл W_lab2_pic2.wmf в виде фоновой картинки.
В файл Main_Int.html включить гиперссылки на соответствующие файлы.
Краткий справочник по HTML
Назначение
Тип документа
Имя документа
Заголовок
Синтаксис
<HTML></HTML>
<TITLE></TITLE>
<HEAD></HEAD>
Пояснения
Начало и конец файла
Описание документа
206
Назначение
Синтаксис
Тело
<BODY></BODY>
Определение структуры документа
Заголовки
<H?> текст </H?>
с выравниванием
<H? ALIGH=”left| center| right”> </H?>
Секция
<DIV> текст </DIV>
с выравниванием
<DIV ALIGH=”left| center| right”> </DIV>
Параграф текста
<P> текст </P>
с выравниванием
<P ALIGH=”left| center| right”> </P>
Простой список
<UL Type="disk | square | circle"
элемент списка
<LI> текст </LI>
</UL>
Фон и цвета для всего документа
Цвет текста
<BODY TEXT=”цвет”>
Цвет фона
<BODY BGCOLOR=”цвет”>
Фоновая картинка
Формат шрифта
Жирный
Курсив
Верхний индекс
Нижний индекс
Размер шрифта
Цвет шрифта
Вставляемые объекты
Рисунок из файла
Гиперссылка
Закладки
именование объекта
переход к объекту
Таблицы
Определить таблицу
Ширина в процентах и
толщина рамки
Строка таблицы
Ячейка таблицы
Ширина в процентах
Пояснения
Содержимое страницы
?-цифра от 1 до 6
disk,square, circle
маркировки списка
<BODY
BACKGROUND=”имя_файла”>
Имя_файла включает расширение и путь (если
файл находится в текущем каталоге, путь можно
опустить)
<B> текст </B>
<I> текст </I>
<SUB> текст </SUB>
<SUP> текст </SUP>
<FONT SIZE=?> текст </FONT>
<FONT COLOR=”цвет”>текст</FONT>
<IMG SRC="имя_файла">
<A HREF="имя_файла"> текст </A>
<A NAME="имя закладки">
<A HREF="#имя_закладки"> текст</A>
<TABLE> </TABLE>
<TABLE WIDTH="#%" BORDER="?">
</TABLE>
<TR> </TR>
<TD> </TD>
<TD WIDTH="#%"> </TD>
Код
? – цифра от 1 до 7
Вызывает
документ
с
указанным именем
Используется
для
перемещения
внутри
документа
# - от 1 до 100
? от 0 до 4
Результат
207
тип
цвет:
#000000 - черный
#FFFFFF - белый
#FF0000 - красный
#FFFF00 - желтый
#408080 - бирюзовый
Например:
<BODY background=
“W_lab2_pic1.wmf”>
Примеры использования тегов HTML
Пример
-
Построение таблицы из
двух строк и двух
столбцов.
Таблица
занимает 75% экрана.
Использование закладок,
для
перехода
из
оглавления
к
соответствующему
разделу документа
<TABLE WIDTH="75%" BORDER="1">
<TR>
<TD WIDTH="38%">1 стр 1 ст</TD>
<TD WIDTH="62%">1 стр 2 ст</TD>
</TR>
<TR>
<TD WIDTH="38%">2 стр 1 ст</TD>
<TD WIDTH="62%">2 стр 2 ст</TD>
</TR>
</TABLE>
<P>Оглавление</P>
<A HREF="#p1"> Списки </A>
…
<A NAME="p1"> <H2> Списки</Н2>
1стр1ст
2стр1ст
1стр 2ст
2стр 2ст
Лабораторная работа 7 (8 часов)
Математические пакеты
Графики
. Для построения простого графика нескольких функций одного аргумента
достаточно написать команду:
Plot[{f1(x), f2(x),...}, {x, xmin, xmax}],
где {f1(x), f2(x),...} – список функций, xmin, xmax – диапазон изменения
аргумента.
Пример1 Напишем следующую последовательность команд.
In[1] := p1 = Plot[{Sin[x]/x, x^2/100}, {x, -10, 10}, { PlotStyle –> {RGBColor[1,
0, 0], RGBColor[0, 0, 1]},
AxesLabel –> {“x”, “Sin[x]/x, x2/100”}, DisplayFunction –> Identity
}];
In[2] := n = 10; v2 = Sort[ Table[ { v = Random[ Integer, {-9, 9}],
v + Random[ Integer, {-3, 3}]}, {n} ]]
Out[2] = {{-9, -10}, {-7, -10}, {-6, -4}, {-5, -7}, {-4, -2}, {-1, -2}, {-1, 1}, {3, 6},
{5, 5}, {9, 10}}
In[3] := p2 = ListPlot[ v2, {PlotJoined –> True, PlotStyle –> RGBColor[1, 0, 0],
Epilog -> {Circle[ Scaled[{.2, .8}]]}, Scaled[{.2, .15}]],
Text[“Random”, Scaled[{.2, .8}]]}, DisplayFunction –> Identity }];
In[4] := f5 = Fit[ v2, {1, x}, x ]
Out[4] = 0.524129 + 1.14008 x
In[5] := p3 = Plot[ f5, {x, v2[[1, 1]], v2[[n, 1]]}, {PlotStyle –>
{ Thickness[ .015], RGBColor[1, 0, 0]}, DisplayFunction –> Identity }];
208
In[6] := Show[ GraphicsArray[ { p1, Show[ p2, p3] } ] ];
Запустив эту последовательность команд, получим в итоге графики,
Рис. 2. Примеры двумерных графиков
показанные на рис 2.
Массив графиков. Формат функции:
GraphicsArray[{g1, g2,…}] или GraphicsArray[{{g1, g2,…},…}]
В первом случае выводится ряд, а во втором – двумерный массив графических
объектов. Ряд графиков, построенный с помощью функции GraphicsArray,
показан на рисунке 2.
В пакете Математика заложена определенная логика выбора области
построения графика.
Пример 2 На рис. 3 приведен график “колокольной” функции exp(-x2) с
выбором области построения по умолчанию и график той же функции, но с
указанием опции PlotRange -> All. Программа построения графиков:
In[ ] := Module[ {a, b, c},
a = Exp[-x^2];
b = Plot[ a, {x, -5, 5}, PlotLabel -> “PlotRange -> Automatic”,
DisplayFunction -> Identity];
c = Plot[ a, {x, -5, 5} PlotRange -> All, PlotLabel -> “PlotRange -> All”,
DisplayFunction -> Identity];
Show[ GraphicsArray[{b, c}]]; ]
209
Из рассмотренного примера следует, что в некоторых случаях необходимо
явно указать, какая область графика должна быть построена.
Соответствующая опция – PlotRange – может иметь следующие значения:
Automatic – установка по умолчанию,
All – вся область графика,
{min, max} – пределы изменения координаты y для двумерных графиков и
координаты z – для трехмерных,
{{xmin, xmax},…} – пределы для указанных координат.
Обратим внимание на то, что программа построения графиков оформлена в
виде: Module[{a, b, c},…], – так что переменные a, b и c являются локальными.
Пример 3 На рис. 4 приведены два изображения одной и той же поверхности
f[x, y] = x2 – x y2. Программа построения графиков:
In[ ] := Module[ {a, b, f}, f[x_, y_] = x^2 – y^2 x;
a = Plot3D[ f[x, y], {x, -2, 4}, {y, -2, 2},
ViewPoint -> {1.75, -2.5, 1.5},
Boxed -> False, DisplayFunction -> Identity
];
b = ContourPlot[ f[x, y], ], {x, -2, 4}, {y, -2, 2},
ColorFunction -> (Hue[ 1-# ] &), DisplayFunction -> Identity ];
Show[ GrasphicsArray[{ a, b }] ]; ]
График “a” типа Plot3D
представляет
собой
трехмерное
изображение. Для этого
графика указаны опции
Boxed и ViewPoint.
Опция Boxed -> False
содержит
команду
опустить
охватывающий график параллелепипед (Box). Опция ViewPoin -> {..}
указывает координаты расположения наблюдателя. По умолчанию список
координат имеет вид: {1.3, -2.4, 2}. Другие возможные варианты:
{0, -2, 0} – прямо спереди,
{-2, -2, 0} – в левом углу,
{0, -2, 2} – спереди и сверху,
{2, -2, 0} – в правом углу,
{0, -2, -2} – спереди и снизу,
{0, 0, 2} – прямо сверху.
Для выбора нужного ракурса можно воспользоваться
командой меню Input – 3D ViewPoint Selector
(Ctrl+Shift+V). В результате выполнения этой команды на
экране появляется диалоговое окно с тем же названием. В
210
окне находится изображение кубика, который можно вращать с помощью
мышки. Выбранное положение кубика можно запомнить, нажав на кнопку
Paste. В итоге в рабочем документе появляется строчка, содержащая
соответствующее значение опции ViewPoint. Это значение можно
использовать при построении графика.
Отметим еще одну полезную опцию, задающую соотношение длин осей для
трехмерного графика. По умолчанию эта опция имеет значение: BoxRatios ->
{1, 1, 0.4}.
График “b” типа ContourPlot описывает поверхность с помощью линий
уровня, подобно тому, как изображается рельеф на географических картах.
Использование опции ColorFunction -> (Hue[ 1- # ] &) позволяет сделать этот
график цветным.
Пример 4 На рис. 5 представлен параметрический график единичной
окружности. Программа построения графика:
In[ ] := ParametricPlot[ {Cos[fi], Sin[fi]}, {fi, 0, 2 Pi}, AspectRatio -> Automatic ];
Окружность описывается с помощью уравнений: x=Cos[fi], y=Sin[fi].
Параметр fi задает угловое положение текущей точки окружности.
Существенным для этого графика является явное указание опции AspectRatio > Automatic. Опция AspectRatio -> n для любого типа рисунка задает
отношение высоты к ширине. Если мы положим n=2, график будет вытянут в
высоту; при n=0.5 график вытянут вдоль горизонтальной оси. При выборе
значения AspectRatio -> Automatic устанавливается одинаковый масштаб для
осей «x» и «y», и автоматически вычисляются длины осей. По умолчанию
соотношение размеров рисунка устанавливается в пропорциях “золотого
сечения” AspectRatio -> 1/GoldenRatio, поэтому, если в нашем случае принять
значение этой опции по умолчанию, окружность окажется приплюснутой.
Пример 5 На рис. 6 показаны несколько готовых фигур – “примитивов”.
Программа построения имеет следующий вид:
In[ ] := Module[ {a, b, c, d},
a = Graphics[ Disc[ { 0, 0}, 1, {0, 60 Degree} ],
DefaultColor -> Hue[ 0.4 ], AspectRatio ->
Automatic ];
b = Graphics[ Circle[ {0, 0}, 1],
DefaultColor -> Hue[ 1 ], AspectRatio -> Automatic
];
c = Graphics[ Poligon[ Table[{ Sin[2Pi/5 (1+2n)], Cos[2Pi/5 (1+2n)] }, {n,
5}] ],
211
DefaultColor -> Hue[ 1 ], AspectRatio -> Automatic
];
d = Graphics[ Disc[ { 0, 0}, { 0.5, 1} ],
DefaultColor -> Hue[ 0.7 ], AspectRatio ->
Automatic ];
Show[ GraphicsArray[{a, b, c, d}] ]; ]
Надо полагать, что программа, в
основном,
понятна
без
пояснений. Читатель может сам
поэкспериментировать
с
выбором цвета, с выбором шага
перебора вершин в таблице вершин многоугольника – полигона и т.д.
Отметим, что существенным для сохранения пропорций фигур является
указание опции AspectRatio -> Automatic.
Пример 6 Следующий рисунок представляет собой
параметрический график конуса и секущей
плоскости:
Module[ {fi, z}, ParametricPlot3D[
{{Cos[fi Pi](1-z/2), Sin [fi Pi](1-z/2), z},
{-1+fi, -1+z, 0.5+z/2}},
{fi, 0, 2}, {z, 0, 2},
ViewPoint->{3.13, -2.4, 2.04} ]; ]
Пакет Математика позволяет “оживить” построенные
графики; для этого нужно выделить их и выбрать
команду меню Cell – Animate Selected Graphics
(Ctrl+Y). Графики будут поочередно сменять друг
друга на экране монитора. При анимации может оказаться полезной команда
выравнивания графиков: Cell – Align Selected Graphics.
Из нерассмотренных здесь типов графиков отметим набор трехмерных
примитивов, включающий многогранники, спирали, тороид, бутылку Клейна
и др.
Аналитические операции. Решение уравнений
Разложение функции в степенной ряд:
Series[f, {x, x0, n}] – строит степенной ряд для функции f относительно точки
x0 до слагаемого степени n.
Series[f, {x, x0, nx}, {y, y0, ny}] – разложение по двум переменным.
212
Функция Series позволяет строить ряд Тейлора, а также разложения,
включающие отрицательные и дробные степени. Функция Series строит
разложения относительно бесконечной точки.
Пример 1:
In[ ] := Series[f[x], {x, a, 3}]
Out[ ] = f[a] + f’[a] (x-a) + 1/2 f’’[a] (x-a)2 + 1/6 f(3)[a] (x-a)3 + O[x-a]4
In[ ] := Series[Exp[Sqrt[x]], {x, 0, 2}]
Out[ ] = 1 + x1/2 + x/2 + (x3/2)/6 + x2/24 + O[x]5/2
In[ ] := Series[Exp[1/x], {x, Infinity, 3}]
Out[ ] = 1 + 1/x + 1/2 (1/x)2 + 1/6 (1/x)3 + O[1/x]4
Интерполяция:
InterpolatingPolynomial[data, var] – строит интерполяционный многочлен
Ньютона с аргументом var. Исходные данные data для интерполируемой
функции f(x) могут быть заданы либо в виде {{x1, f1}, {x2, f2}, …}, либо в виде
{ f1, f2, …} в том случае, когда xi принимает натуральные значения 1, 2, … .
Пример 2:
In[ ] := InterpolatingPolinomial[{1, 0, 1, 2}, x]


 3 x
1    1  1 
  2  x   1  x 
3 


= 
Out[ ]
Заметим, что интерполяционный многочлен записан по схеме Горнера – схеме
с минимальным количеством умножений (количество умножений равно
степени многочлена).
Пакет Математика содержит ряд функций для преобразования выражений.
Функция Expand[expr] – производит все возведения в степень и
перемножения в выражении expr.
Пример 3: Expand[(x + 1)(x - 1)] = -1 + x2.
Функция TrigExpand[expr] – преобразует тригонометрические и
гиперболические функции в выражении expr.
Пример 4:
1). TrigExpand[Cosh[a + b]] = Cosh[a] Cosh[b] + Sinh[a] Sinh[b].
2). Определим многочлен Чебышева:
In[ ] := P[n_Integer, x_] = Cos[n ArcCos[x]];
С помощью функции TrigExpand можем найти явный вид многочленов
Чебышева разной степени:
In[ ] := Table[TrigExpand[P[k, x], {k, 4}]
Out[ ] = {x, -1 + 2 x2, -3 x + 4 x3, 1 – 8 x2 + 8 x4}
213
Функция
Simplify[expr,
assum]
–
осуществляет
алгебраические
преобразования для упрощения выражения expr, используя допущения assum
(необязательный элемент).
Пример 5: Simplify[ Cos[a] Cos[b] – Sin[a] Sin[b] ] = Cos[a + b].
Функция FullSimplify[expr, assum] – упрощает выражение, используя
элементарные и специальные функции.
Пример 6:
1). FullSimplify[ Log[8] / Log[2] ] = 3.
2). FullSimplify[ ArcCos[ Sqrt[ 1 – a^2 ]], a > 0 ] = ArcSin[a].
Решение алгебраических уравнений.
Функция Solve[eqns, vars] ищет решение системы уравнений eqns
относительно переменных vars. Solve[eqns] ищет решение для всех
переменных в системе eqns. Уравнения задаются в виде: lhs==rhs – левая и
правая части уравнения связаны логическим знаком равенства. Система может
быть представлена в виде списка уравнений, либо уравнения могут быть
объединены знаком конъюнкции (&&). Решение записывается в форме правил
замены: x–>so Решение может быть найдено как в численном, так и в
аналитическом виде.
Пример 7: Решение системы линейных уравнений:
In[ ] := Solve[ x + 2y == 0 && 2x – y == 5a, {x, y}]
Out[ ] = {{x –> 2 a, y –> -a}}
При наличии нескольких решений, Solve дает их список. Решение может быть
представлено также в аналитическом виде.
Пример 8: In[ ] := Solve[x (y + b) == a^2&&x – y == b, {x, y}]
Out[ ] = {y –> -a - b, x –> -a}, {y –> a - b, x –> a}}
Если имеется корень кратности m, Solve выписывает решение m раз,
например:
Пример 9: In[ ] := Solve[ (x – 1)2 == 0]
Out[ ] = {{ x –> 1}, { x –> 1}}
Функция Solve применима, когда точное решение может быть записано в
явном виде.
Функция LinearSolve[m, b] предназначена для решения систем линейных
алгебраических уравнений. Эта функция находит решение системы: m*x == b,
где m – матрица, b и x – известный и неизвестный векторы. b и x могут также
быть матрицами. Функция LinearSolve дает решение как в численном, так и в
аналитическом виде.
Пример 10. Найдем матрицу, обратную к матрице m:
In[ ] := (m = {{1, 2}, { 2, -1}}; b={{1, 0}, { 0, 1}}; m1 = LinearSolve[m, b]//N)
214
Out[ ] = {{ 0.2, 0.4}, { 0.4, -0.2}}
Для проверки полученного результата вычислим произведение матриц m и
m1:
In[ ] := m1. m
Out[ ] = {{1, 0}, { 0, 1}}
Функция Roots[eqn, var] – ищет корни полиномиального уравнения eqn для
переменной var. Решение записывается в виде логических равенств,
объединенных знаком дизъюнкции – логического “или”.
Пример 11.11.
Найдем корни многочлена Чебышева третьей степени (ChebyshevT[3, x] = -3x
+ 4x3):
In[ ] := Roots[ChebyshevT[3, x] == 0, x]
Out[ ] = x == 0 || x == Sqrt[s]/2 || x == -Sqrt[3]/2
Функция FindRoot[eqn, {x, x0}] – ищет численное решение уравнения eqn,
используя начальное приближение x=x0.
FindRoot[ {eqn1, eqn2, …}, {x, x0}, {y, y0}, …] – ищет решение системы
уравнений. Если все начальные приближения – действительные числа,
FindRoot ищет только действительные решения; для поиска комплексных
решений необходимо, чтобы хотя бы одно из начальных приближений было
комплексным.
Пример 12.
In[ ] := c = FindRoot[Exp[x] == x, {x, 1+I}]
Out[ ] = {x –> 0.318132 + 1.33724 I}
Проверка: Exp[ c[[1,2]] ] = 0.318132 + 1.33724 I.
Решение дифференциальных уравнений.
DSolve[ eqn, y[x], x ] – решает дифференциальное уравнение для функции
y[x].
DSolve[{eqn1, eqn2,…},
{y1[x], y2[x],…}, x ] – решает систему
дифференциальных уравнений.
Пример 13.
1). Общее решение.
In[ ] := DSolve[ y’’[x] + y[x] == 0, y[x], x ]
Out[ ] = {{ y[x] –> C[2] Cos[x] – C[1] Sin[x] }}
2). Решение задачи Коши.
In[ ] := DSolve[{ y’’[x] + y[x] == 0, y[0] == 1, y’[0] == 0 }, y[x], x ]
Out[ ] = {{ y[x] –> Cos[x] }}
3). Решение краевой задачи.
In[ ] := DSolve[{ y’’[x] + y[x] == 0, y[0] == 0, y[5Pi / 6] == 1}, y[x], x ]
Out[ ] = {{ y[x] –> 2 Sin[x] }}
4). Решение краевой задачи для системы уравнений.
215
In[ ] := DSolve[{ y’[x] == z[x], z’[x] == -y[x], y[0] == 0, z[Pi] == -1}, {y[x], z[x]},
x]
Out[ ] = {{ y[x] –> Sin[x], z[x] –> Cos[x] }}
NDSolve[ eqns, {y1, y2,…}, {x, xmin, xmax}] дает приближенное решение
системы дифференциальных уравнений eqns на отрезке [xmin, xmax] для
функций yi[x]. NDSolve представляет решение на данном отрезке в виде
интерполирующей функции InterpolatingFunction. Интерполирующая функция
позволяет найти значения y для всех x, принадлежащих отрезку интерполяции,
и построить график.
Дифференциальные уравнения должны иметь достаточное количество
начальных или краевых условий. Значение x0, входящее в начальные или
краевые условия, может не принадлежать отрезку [xmin, xmax]. Уравнения
могут включать комплексные числа.
Пример
14.
Найдем
решение
уравнения,
описывающего затухающую синусоиду:
In[ ] := s = NDSolve[{ y’’[x] + 0.1y’[x] + 3y[x] == 0,
y[0] == 1, y’[0] == 0}, y, {x, 0, 10}]
Out[ ] = {{ y –> InterpolatingFunction[{{ 0., 10. }},
<>]}}
Построим график решения:
In[ ] := Plot[ Evaluate[ y[x] /. s ], {x, 0, 10}];
График приведен на рис. 8.
216
Лабораторная работа 8 (4 часа).
Визуальная среда программирования programmm.me
217
218
Лабораторная работа 9 (4 часа).
Программирование в среде Free Pascal. Выражения и ветвления
Задание: Реализовать на языке Паскаль следующие задачи, отладить
программы и придумать тесты.
1. Дан треугольник, заданный координатами трех его вершин. Определить,
лежат ли хотя бы две его вершины в одной четверти координатной плоскости.
PROGRAM koord;
VAR
x1, y1, x2, y2, x3, y3, r1, r2, r3 : REAL;
BEGIN
WRITELN('введите координаты трех точек');
READLN (x1, y1, x2, y2, x3, y3);
(* определить, может ли треугольник быть задан этими точками, для этого
необходимо проверить, лежат ли они на одной прямой*)
r1 := sqr(x1 - x2) + sqr(y1 - y2);
r2:= sqr(x2 - x3) + sqr(y2 - y3);
r3:= sqr(x3 - x1) + sqr(y3 - y1);
IF (r1 = r2 + r3) OR (r2 = r1 + r3) OR (r3 = r2 + r1)
THEN
WRITELN('точки не могут быть вершинами треугольника')
ELSE
BEGIN
(* две точки лежат в одной четверти, если произведение их
первых и вторых координат положительно *)
IF ((x1*x2 >= 0) AND (y1*y2 >= 0)) OR
((x1*x3 >= 0) AND (y1*y3 >= 0)) OR
((x3*x2 >= 0) AND (y3*y2 >= 0))
THEN
WRITELN('две вершины лежат в одной четверти')
ELSE
WRITELN('все вершины лежат в разных плоскостях')
END
END.
2. Определить, равна ли сумма двух первых цифр заданного четырехзначного
числа сумме двух его последних цифр.
Алгоритм выделения цифр состоит в следующем:
219
1. выделить последнюю цифру числа:
a4:=num MOD 10; {5461 MOD 10= 1}
2. удалить последнюю цифру числа:
num:=num DIV 10; { 5461 DIV 10 = 546}
3. для остальных цифр повторить пункты 1,2.
PROGRAM num4;
VAR
num, a1, a2, a3, a4: INTEGER;
BEGIN
WRITELN('введите четырехзначное число');
READLN(num);
IF (num < 0) OR (num > 9999) THEN
WRITELN('введено неверное значение')
ELSE
BEGIN
a1 := num MOD 10; {выделение последней цифры}
num := num DIV 10; {уменьшение разряда числа}
a2 := num MOD 10;
num := num DIV 10;
a3 := num MOD 10;
num := num DIV 10;
a4 := num MOD 10;
IF (a1 + a2)=(a3 + a4) THEN
WRITELN(‘сумма цифр равна’)
ELSE
WRITELN(‘сумма цифр не равна’);
END
END.
3. Выяснить, являются ли поля (k,l) и (m,n) шахматной доски полями одного
цвета.
PROGRAM game;
VAR
k,l,m,n : INTEGER;
BEGIN
WRITELN('введите координаты двух шахматных полей’);
READ(k,l,m,n);
220
IF (k<1) OR (k>8) OR (l<1) OR (l>8) OR (m<1)
OR (m>8) OR (n<1) OR (n>8)
THEN WRITE ('введены неправильные координаты')
ELSE
(* поля имеют одинаковый цвет, если сумма их координат
является для обоих полей либо четной, либо нечетной *)
IF ODD(k+l) = ODD(n+m)
THEN WRITELN('поля имеют одинаковый цвет')
ELSE WRITELN('поля имеют разный цвет')
END.
Лабораторная работа 10 (4 часа).
Программирование в среде Free Pascal. Решение задач на тему «Выражения и
ветвления»
Задание: Реализовать на языке Паскаль следующие задачи, отладить
программы и придумать тесты.
1. Определить, является ли треугольник, заданный длинами его сторон
остроугольным.
2. По координатам трех вершин некоторого треугольника найти его площадь
и периметр.
3. Вычислить периметр и площадь прямоугольного треугольника по длинам
его катетов.
4. Определить число, полученное выписыванием в обратном порядке цифр
заданного трехзначного числа.
5. Определить максимальное число, полученное из цифр заданного
трехзначного числа.
6. Определить, есть ли среди цифр заданного трехзначного числа одинаковые.
7. Даны координаты (как целые от 1 до 8) двух полей шахматной доски.
Определить, может ли конь за один ход перейти с одного из этих полей в
другое.
8. На поле с координатами (k,l) шахматной доски расположен слон.
Определить, угрожает ли он полю (m,n). Все координаты целые числа от 1 до
8.
9. На поле с координатами (k,l) шахматной доски расположена
ладья. Определить, угрожает ли она полю (m,n). Все координаты целые
числа от 1 до 8.
Лабораторная работа 11 (8 часов).
Программирование в среде Free Pascal. Операторы повторения.
221
Задание: Реализовать на языке Паскаль следующие задачи, отладить
программы и придумать тесты.
1. Дана последовательность из n элементов. Найти максимальный элемент
последовательности и его номер.
VAR
num, max: REAL;
n,i, nMax: INTEGER;
BEGIN
WRITELN('n=’); READ(n);
IF n>0 THEN
BEGIN
WRITELN('num=');READ(num);
max:=num;
nMax:= 1;
FOR i:=1 TO n-1 DO
BEGIN
WRITELN('num=');READ(num);
IF num>max THEN
BEGIN
max:= num;
nMax:= i;
END;
END;
WRITELN('max=', max:10:5,’ nMax=’, nMax);
END
ELSE
WRITELN(‘ошибочный ввод’);
END.
2. Дана последовательность из n элементов. Найти сумму всех отрицательных
элементов последовательности.
VAR
num, sum : REAL;
n,I : INTEGER;
BEGIN
WRITELN('n=’); READ(n);
IF n>0 THEN
BEGIN
s:= 0;
222
FOR i:=1 TO n DO
BEGIN
WRITELN('num=');READ(num);
IF num < 0 THEN sum:= sum + num;
END;
WRITELN('sum=', sum:10:5);
END
ELSE
WRITELN(‘ошибочный ввод’);
END.
3. Вычислить сумму ряда для заданного числа членов n:
x
x2 x3 x4
xn


 ... 
 ...
2
3
4
n
VAR
n,i:INTEGER;
sum, r, x: REAL;
BEGIN
WRITE('n=');
READ(n);
WRITE(‘x=’);
READ(x);
IF n > 0 THEN
BEGIN
sum:= x;
r:= x;
FOR i:=2 TO n DO
BEGIN
r:=r*x;
sum:=sum + r /i;
END;
WRITELN('sum=',sum:10:5);
END
ELSE WRITE(‘ошибочный ввод’);
END.
4. Вычислить сумму ряда для заданного числа членов n:
sin( x)  x  x
3
3!

x5 x7
x 2 n1

 ...  (1) n
 ...
5! 7!
(2n  1)!
VAR
n,i:INTEGER;
sum, r, x: REAL;
BEGIN
223
WRITE('n=');
READ(n);
WRITE(‘x=’);
READ(x);
IF n > 0 THEN
BEGIN
sum:= x;
r:= x;
FOR i:=1 TO n DO
BEGIN
(* используем предыдущее значение r *)
r:=r*(-1)*sqr(x)/(2*i*(2*i+1));
sum:=sum + r;
END;
WRITELN('sum=',sum:10:5,’sin(x)=’,sin(x):10:5);
END
ELSE WRITE(‘ошибочный ввод’);
END.
5. Вычислить с заданной точностью  сумму ряда:
x
x2 x3 x4
xn


 ... 
 ...
2
3
4
n
VAR
i:INTEGER;
sum, r, x, e: REAL;
BEGIN
WRITE('n=');
READ(n);
WRITE(‘x=’);
READ(x);
IF e > 0 THEN
BEGIN
sum:= x;
r:= x;
i:= 2;
WHILE abs(r)>e DO
BEGIN
r:=r*x;
sum:=sum + r / i;
i:= i+1;
END;
WRITELN('sum=',sum:10:5);
END
224
ELSE WRITE(‘ошибочный ввод’);
END.
6. Вычислить с заданной точностью  сумму ряда:
x3 x5 x7
x 2 n1
n
sin( x)  x     ...  (1)
 ...
3! 5! 7!
(2n  1)!
VAR
i:INTEGER;
sum, r, e, x: REAL;
BEGIN
WRITE('e=');
READ(e);
WRITE(‘x=’);
READ(x);
IF e>0 THEN
BEGIN
sum:= x;
r:= x; i:= 1;
WHILE abs(r)>=e DO
BEGIN
r:=r*(-1)*sqr(x)/(2*i*(2*i+1));
i:=i + 1;
sum:=sum + r;
END;
WRITELN('sum=',sum:10:5,’sin(x)=’,sin(x):10:5);
END
ELSE WRITE(‘ошибочный ввод’);
END.
7. Подобрать всевозможные варианты размена произвольной >7 руб. суммы с
помощью 3-х и 5-ти рублевых купюр.
VAR
x, y, n :INTEGER;
BEGIN
WRITE(‘n=’);
READ(n);
IF sum > 7 THEN
BEGIN
FOR x :=1 TO n div 3 DO
FOR y :=1 TO n div 5 DO
IF x*3 + y*5 = n THEN
WRITELN('3*',x,’+5*’,y,’=’,n);
END
225
ELSE WRITE(‘ошибочный ввод’);
END.
8. Вывести все правильные, несократимые дроби со знаменателем n.
Например, если n=10, то необходимо вывести дроби 1/10, 3/10, 7/10, 9/10.
VAR
n, x, y, nod : INTEGER;
BEGIN
WRITE(‘n=’); READ(n);
IF n > 0 THEN
FOR i := 1 TO n DO
BEGIN
x:= i; y:= n;
REPEAT
IF x > y THEN x := x MOD y
ELSE y := y MOD x;
UNTIL x * y = 0;
nod: =x+y;
IF nod = 1 THEN WRITELN(i,’/’,n);
END
ELSE WRITELN(‘ошибочный ввод’)
END.
8. Дано натуральное число n. Является ли это число факториалом? Например,
число 120 является факториалом числа 5. (5! = 120)
VAR
n, i: INTEGER;
BEGIN
WRITE(‘n=’); READ(n);
IF n > 0 THEN
BEGIN
x:= n;
i := 2;
WHILE x MOD i =0 DO
BEGIN
x:= x DIV i;
i:= i + 1;
END;
226
IF x = 1 THEN
WRITELN((i-1),’!=’,n)
ELSE
WRITELN (n,’ – не факториал‘);
END
ELSE WRITELN(‘ошибочный ввод’)
END.
Лабораторная работа 12 (8 часа).
Программирование в среде Free Pascal. Структурированные типы данных
Задание: Реализовать на языке Паскаль следующие задачи, отладить
программы и придумать тесты.
1. Найти элемент, равный x, в упорядоченном массиве, то есть при условии
a[i+1]<=a[i] для всех i=1..n-1.
PROGRAM DSerch;
CONST
n=10;
VAR
a : array [1..n] OF INTEGER;
x, { искомый элемент }
i, { левая граница интервала поиска }
j, { правая граница интервала поиска }
c, { центр массива }: INTEGER;
FlSerch: BOOLEAN; { признак того, найден элемент или нет }
BEGIN
WRITELN('введите упорядоченный массив из',n,'элементов');
FOR i:=1 TO n DO
READLN(a[i]);
WRITELN('введите искомый элемент');
READLN(x);
i:=1; j:=n; {устанавливаем правую и левую границу интервала на
начало и конец массива }
FlSerch:=FALSE;
REPEAT
c:=(i+j) DIV 2;
IF x<a[c] THEN j:=c-1 {устанавливаем правую границу на центр
ELSE
IF x>a[c] THEN i:=c+1 {устанавливаем левую границу на центр
ELSE FlSerch:=TRUE; { элемент найден }
227
UNTIL (i>j) OR FlSerch;
IF FlSerch THEN WRITELN('элемент найден на ',c,'месте')
ELSE WRITELN('элемент не найден');
END.
2. Метод пузыpька.
PROGRAM PSort;
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,wp: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
FOR i:=1 TO N-1 DO
FOR k:=1 TO N-i DO
IF a[k]>a[k+1] THEN
BEGIN
wp:=a[k+1];
a[k+1]:=a[k];
a[k+1]:=wp
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
Сортировка перестановками.
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,j,min: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
FOR i:=1 TO N-1 DO
228
BEGIN
min:=a[i]; k:=i; { фиксируем место в массиве, начиная с которого
будем искать минимальный элемент }
FOR j:=i TO N DO
IF a[j]>min THEN
BEGIN
min:=a[j];
k:=j; { фиксируем место нового min }
END;
a[k]:=a[i]; a[i]:=min { меняем местами очередной и минимальный
элементы }
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
4. Сортировка вставками.
CONST
N=10;
VAR
a : array [1..N] OF INTEGER;
i,k,j,max: INTEGER;
BEGIN
WRITELN('введите массив из',N,'элементов');
FOR i:=1 TO N DO
READ(a[i]);
{ считаем упорядоченным первый элемент массива }
FOR k:=1 TO N-1 DO
BEGIN
max:=a[k+1];
{ рассматриваем последовательность из k+1 элементов, в которой
k элементов уже упорядочены }
i:=1;
WHILE a[i]>max DO { пока новый элемент не нарушит
упорядоченность }
i:=i+1;
{ анализируем результат просмотра }
IF i<k { новый элемент нарушает упорядоченность, его нужно
229
вставить на i -е место, а все остальные упорядоченные
элементы сдвинуть вправо на 1 }
THEN
BEGIN
FOR j:=k+1 DOWNTO i+1 DO
a[j]:=a[j-1];
a[i]:=max;
END
{ теперь уже отсортированы к+1 элементов, продолжаем цикл для
следующего элемента }
END;
WRITELN('отсортированный массив');
FOR i:=1 TO N DO
write(a[i]:4);
END.
Лабораторная работа 13 (8 часов)
Программирование в среде Free Pascal. Процедуры и функции
Пример 1. Ввести с клавиатуры 6 целых положительных чисел и найти их
наибольший общий делитель
const
n=6;
VAR
a: array [1..n] of integer;
i, nodArr : integer;
FUNCTION NOD(x,y : integer):integer;
BEGIN
REPEAT
IF x > y THEN x := x MOD y
ELSE y := y MOD x;
UNTIL x * y = 0;
NOD := x+y;
END;
BEGIN
FOR i:=1 TO N DO
230
BEGIN
writeln(i,'-ое число);
readln(a[i]);
END;
nodArr := NOD (a[1], a[2]);
FOR i:= 3 TO n do
nodArr := NOD(a[i], nodArr);
writeln('NOD=',nodArr);
end.
Пример 2. Вывести все простые числа, меньшие N.
VAR
i, n : integer;
FUNCTION Simple(x: integer):boolean;
VAR count : integer;
BEGIN
count:=1;
(* простое число делится только на себя и на 1*)
REPEAT
count:=count+1
UNTIL (x MOD count)=0;
IF x = count THEN Simple := true
else Simple := false;
END;
BEGIN
write('N=');
readln(n);
FOR i:=2 TO n-1 DO
IF Simple(i) THEN write(i,' ');
END.
Пример 3. Посчитать периметр N- угольника, заданного координатами своих
вершин.
const
n1=10;
VAR
x, y : array [1..n1] of real;
231
i, n : integer;
sumLength : real;
FUNCTION Len(x1,y1,x2,y2 : real):real;
BEGIN
len:=sqrt(sqr(x1-x2)+sqr(y1-y2));
END;
BEGIN
write('n=');readln(n);
FOR i:=1 TO n DO
BEGIN
write('x[',i,']=');
readln(x[i]);
write('y[',i,']=');
readln(y[i]);
END;
SumLength := Len (x[1], y[1], x[n], y[n]);
FOR i:= 1 TO n-1 do
SumLength := Len(x[i], y[i], x[i+1], y[i+1]);
writeln(' SumLength=', SumLength);
END.
Пример 3. Дан двумерный массив, состоящий из целых чисел. Все
трехзначные числа в массиве заменить на сумму их цифр.
const
n1=4;
VAR
a : array [1..n1, 1..n1] of integer;
i, j, n : integer;
FUNCTION SumDigits(x: integer):integer;
var
sum, a : integer;
BEGIN
sum:=0;
WHILE x<>0 DO
BEGIN
a := x mod 10;
x :=x div 10;
sum := sum + a;
END;
232
SumDigits := sum;
END;
BEGIN
write('n=');readln(n);
FOR i:=1 TO n DO
FOR j:= 1 TO n DO
BEGIN
write('a[',i,',',j,']=');
readln(a[i,j]);
END;
FOR i:=1 TO n DO
FOR j:= 1 TO n DO
IF (a[i,j] >= 100) and (a[i,j] <= 999)
THEN a[i,j]:= SumDigits(a[i,j]);
FOR i:=1 TO n DO
BEGIN
FOR j:= 1 TO n DO
write(a[i,j],' ');
writeln;
END;
END.
233
Министерство образования и науки Российской федерации
Филиал государственного образовательного учреждения высшего профессионального образования
«Дальневосточный государственный технический университет
(ДВПИ имени В.В.Куйбышева)» в г. Артеме
МАТЕРИАЛЫ ДЛЯ ОРГАНИЗАЦИИ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
СТУДЕНТОВ
по дисциплине «Информатика»
Специальность 280103.65 – Защита в чрезвычайных ситуациях
специализация – Гражданская защита
г. Артём
2010
234
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Основы обработки данных.(4 часа)
- Выполнить Индивидуальное домашнее задание 1 Системы
счисления.
- литература 7 (основная)
Аппаратная конфигурация персонального компьютера. Программное
обеспечение персонального компьютера.(4 часа)
- изучить литературу 2-4 (основная)
Многофункциональные системы обработки текстов(4 часа).
- выполнить необходимое форматирование в документе, собрать
оглавление и пр.
- изучить литературу 2(дополнительная)
Технологии обработки информации и решение задач средствами
электронных таблиц. Базы данных. (8 часов)
- изучить литературу 3-4 (основная)
Локальные и глобальные сети ЭВМ (8 часов)
- изучить литературу 5 (основная)
Информационная безопасность (8 часов)
- изучить литературу 6 (основная)
Моделирование как метод познания (8 часов)
изучить литературу 2-3 (основная)
Математические пакеты (10 часов)
- выполнить ИДЗ по Математическому анализу в виртуальной
лаборатории WolframAlpha
Парадигмы программирования (2 часа).
- изучить литературу (7-8) основная
Основы технологии программирования (2 часа).
- изучить литературу 8 (основная)
Алгоритмизация и программирование (2 часа).
- изучить литературу 8-9 (основная)
Алгоритмы решения вычислительных задач, использующих
выражения и ветвления (8 часов)
- выполнить индивидуальное задание 2
- изучить литературу 11 (основная)
Операторы повторения (8 часов).
- выполнить индивидуальное задание 3
Алгоритмы решения вычислительных задач, использующих
операторы повторения (4 часа).
- изучить литературу 7-8 (дополнительная)
235
15
16
17
Структурные типы данных (8 часов)
- выполнить индивидуальное задание 4
- изучить литературу 11 (основная)
Алгоритмы решения вычислительных задач на одномерные и
двухмерные массивы (4 часа).
- изучить литературу 10 (основная)
Процедуры и функции (4 часа).
- выполнить Индивидуальное задание 5
- изучить литературу 11 (основная)
236
Министерство образования и науки Российской федерации
Филиал государственного образовательного учреждения высшего профессионального образования
«Дальневосточный государственный технический университет
(ДВПИ имени В.В.Куйбышева)» в г. Артеме
КОНТРОЛЬНО-ИЗМЕРИТЕЛЬНЫЕ МАТЕРИАЛЫ
по дисциплине «Информатика»
280103.65 Защита в чрезвычайных ситуациях
г. Артем
2010
237
ТЕСТЫ
Аппаратное обеспечение информационных технологий
Укажите устройство, которое не относится к базовой конфигурации
персонального компьютера
+принтер
системный блок
монитор
клавиатура
Что такое разрядность микропроцессора?
+максимальное количество разрядов двоичного числа, над которым может
выполняться одна машинная операция
количество тактов в секунду
минимальное количество разрядов двоичного числа, над которым может
выполняться одна машинная операция
количество операций, выполняемых в секунду
Радикально позволяет изменить элементную базу ЭВМ
+оптоэлектроника
кибернетика
нейробиология
эволюционное программирование
Функциональными частями компьютера, предназначенными для приёма,
хранения и выдачи данных, являются
+память, процессор
алгоритм, программа
монитор, мышь
На материнской плате размещается:
+процессор
блок питания
жёсткий диск (винчестер)
238
системный блок
Укажите, что не является основными характеристиками процессора
+объём оперативной памяти
разрядность
тактовая частота
объём кэш-памяти
При включении компьютера процессор в первую очередь обращается к
+постоянной памяти (ПЗУ)
компакт-диску
оперативной памяти (ОЗУ)
гибкому диску
В соответствии со своими функциями персональные компьютеры не могут
выступать в роли…
+подстанции
рабочей станции
сервера
терминала
Укажите не верное высказывание:
+Первое поколение компьютеров – это ЭВМ, основанные на использовании
транзисторов.
Третье поколение компьютеров – это персональные компьютеры
серии
Pentium III.
Второе поколение компьютеров – это ЭВМ, основанные на использовании
транзисторов.
Первое поколение компьютеров – это ЭВМ, основанные на использовании
радиоламп.
Аппаратное
подключение
периферийного
производится через
+контроллер
239
устройства
к
магистрали
регистр
драйвер
стример
Арифметико-логическое устройство (АЛУ) является составной частью...
+микропроцессора
генератора тактовых импульсов
системной шины
основной памяти компьютера
Для объединения функциональных устройств персонального компьютера в
вычислительную систему используется...
+системная шина пли магистраль
блок управления
шифратор/дешифратор
системный блок
Основная интерфейсная система компьютера, обеспечивающая сопряжение и
связь всех его
+системной шиной
устройств между собой, называется...
системой ввода/вывода
системой мультиплексирования
шиной питания
КЭШ-память компьютеров...
+ повышает быстродействие компьютеров
выполняет кодирование/декодирование данных
является энергонезависимой памятью
значительно увеличивает емкость оперативной памяти
В принципы фон Неймана работы компьютера входят:
+ принцип программного управления
+принцип однородности памяти
240
+принцип адресности
принцип программного обеспечения
Последовательность смены элементной базы ЭВМ:
а) дискретные полупроводниковые приборы
б) электронно-вакуумные лампы
в) интегральные микросхемы
+б), а), в)
б), в), а)
в), а), б)
а), б), в)
Компьютеры, созданные для решения предельно сложных вычислительных
задач, - это ...
+суперкомпьютеры
персональные компьютеры
серверы
карманные персональные компьютеры
Один из физических каналов ввода/вывода компьютера – разъем –
называется...
+портом
кабелем
шиной
регистр
Одним из важных параметров жёсткого диска является
+время доступа
количество системных шин
время раскрутки диска
тактовая частота процессора
жёсткость диска
Оперативное запоминающее устройство относится к _______ памяти
241
+внутренней
виртуальной
внешней
дополнительной
Устройством ввода не является
+монитор
клавиатура
мышь
сканер
Компакт диск (CD) это:
+оптический диск, информация с которого считывается лазерным лучом
диск после выполнения операции сжатия информации
магнитный диск с высокой плотностью записи информации
сменный магнитный диск малого размера
Сканеры какого типа не существуют
+четырёхмерные
ручные
штрих-кодовые
планшетные
Разрешение принтера – это
+число точек, которое способен напечатать принтер на одном дюйме
число листов, которые принтер печатает за минуту
максимальный размер печатного листа
число цветов, используемых для печати
Наименьшей физической единицей хранения данных на жёстком диске
является
+сектор
кластер
слово
242
файл
Какое из перечисленных устройств ввода относится к классу манипуляторов:
+Джойстик;
Тачпад;
Микрофон;
Клавиатура
К внешним запоминающим устройствам (ВЗУ) относятся:
+ флэш-память
+ CD-R
кэш-память
регистры микропроцессора
Принцип записи данных на винчестер заключается в...
+намагничивании поверхности диска
ядерно-магнитном резонансе рабочего слоя компьютера
просвечивании лазером поверхности диска
прожигании рабочего слоя диска лазером
Для временного хранения информации в персональном компьютере
используется...
+оперативная память (ОЗУ)
BIOS
ПЗУ
операционная система
Энергонезависимым
устройством
памяти
персонального
является...
+жесткий диск
кэш-память
ОЗУ
регистры микропроцессора
Укажите то, что не относится к компьютерной периферии
243
компьютера
+компакт-диск
монитор
мышь
клавиатура
Программное обеспечение информационных технологий
Укажите наиболее точное определение. Приложения – это
+прикладные
программы,
созданные
для
работы
под
управлением
конкретной операционной системы
техническая документация компьютера
средства для обмена данными между разными приложениями Windows
программы для ознакомления пользователя с принципами устройства
компьютера
В основные функции операционной системы не входит
+разработка программ для ЭВМ
организация файловой структуры
управление ресурсами компьютера
обслуживание файловой системы
обеспечение диалога с пользователем
В операционной системе Windows уникально
+полное имя файла
путь доступа к файлу
собственное имя файла
собственное имя файла плюс его расширение
Операционная система – это
+совокупность управляющих программ
система управления вводом и выводом информации
иерархия абстракций
система прерываний
Программа «Проверка диска» выявляет
244
+логические ошибки в файловой структуре и физические ошибки, связанные
с дефектами жесткого диска
неиспользуемые файлы в файловой системе диска
устаревшие файлы и дефекты жесткого диска
типичные ошибки в файловой структуре и наличие неиспользуемых
программ
Операционная система – это…
+комплекс программ, обеспечивающих управление работой всех аппаратных
устройств и доступ пользователя к ним
техническая документация компьютера
совокупность программ, используемых для операций с документами
совокупность основных устройств компьютера
Список команд, с которым в данный момент работает пользователь, - это
+контекстное меню
каскадное меню
текущее меню
панель инструментов
В операционной системе Windows логической единицей хранения данных
является
+файл
папка
бит
байт
Файловая система определяет
+способ организации данных на диске
совокупность программа, установленных на компьютере
способ организации оперативной памяти
список пользователей системы
Определением понятия «пользовательский интерфейс» являются
245
+средства
взаимодействия
человека
с
аппаратным
и
программным
обеспечением компьютера
средства для обмена данными между разными приложениями Windows
программы для автоматизации работ по проверке, наладке и настройке
компьютерной системы
программы, отвечающие за проверку работоспособности компьютера
Драйверы – это…
+программы для согласования работы внешних устройств и компьютера
системы автоматизированного проектирования
комплекс программ, обеспечивающий перевод программы, написанной на
языке программирования в машинном коде
Технические устройства
Не существует следующей классификации операционных систем (ОС)
+структурные и объектные ОС
однопользовательские и многопользовательские ОС
сетевые и локальные ОС
графические и неграфические ОС
Ядро
операционной
системы
можно
отнести
к
____программному
обеспечению
+системному
служебному
базовому
прикладному
Тип шрифта True Type означает,
+ что текст, набранный с помощью данного шрифта выглядит одинаково на
экране и на печати
что использование данного типа шрифта предпочтительнее по сравнению с
другими типами
шрифт может быть изменён средствами MS Word
246
что данный шрифт рекомендуется для использования при создании
текстовых документов в MS Word
Колонтитул – это
+текст или рисунок, который печатается внизу или вверху каждой страницы
документа
рисунок, который печатается внизу или вверху каждой страницы документа
текст, который печатается внизу или вверху каждой страницы документа
текст, который печатается внизу страницы, или рисунок который печатается
вверху каждой страницы документа
Каждый раздел документа MS Word:
+имеет собственные параметры страниц
только один из разделов может иметь собственные параметры страниц
имеет одинаковые параметры страниц
только раздел, к которому принадлежит первая страница, может иметь
собственные параметры страниц
Форматирование текста – это
+процесс установления параметров фрагмента текста, которые определяют
внешний вид текста в этом фрагменте
процесс выравнивания текста по ширине с сохранением абзацных отступов
процесс конвертации текстового файла из одного формата в другой
процесс изменения текста с целью повышения читабельности
Двойной щелчок на внедренном объекте Microsoft Equation в MS Word
приводит к тому, что запускается
+редактор формул
режим расположения объекта поверх текста
режим настройки изображений
режим трансформации объекта (формулы) в обычный текст
В электронной таблице Microsoft Excel знак $ перед номером строки в
обозначении ячейки указывает на…
247
+абсолютную адресацию
начало формулы
денежный формат
начало внедрения блока ячеек
«Легенда» диаграммы Microsoft Excel – это
+условные обозначения рядов или категорий данных
порядок построения диаграммы(список действий)
руководство для построения диаграмм
таблица для построения диаграммы
Если данные уже отфильтрованы по одному из столбцов, то при
использовании фильтра для другого столбца в Microsoft Excel
+будут предложены только те значения, которые видны в отфильтрованном
списке
будут
предложены
только
те
значения,
которые
не
входят
в
отфильтрованный список
это вызовет ошибку
данные станут отфильтрованными по другому столбцу
Какой вид примет содержащая абсолютную и относительную ссылку
формула, записанная в ячейке C1, после ее копирования в ячейку С2?
+=$A$1*B2
=$A$1*B1
=$A$2*B1
=$A$2*B2
В каком разделе меню, находятся
форматированию текста, абзаца, списка?
248
пункты
меню,
относящиеся
к
+Формат;
Файл;
Сервис;
Свойства;
Правка
Как напечатанное слово сделать зачеркнутым?
+Для этого надо изменить свойства шрифта у этого слова;
Это сделать невозможно;
Для этого нужен специальный шрифт;
Для этого надо изменить свойства шрифта и абзаца у этого слова
Когда можно поменять свойства шрифта?
+В любое время;
Только после окончательного редактирования;
Только в начале редактирования;
Перед распечаткой документа
Вы набрали текст, но после выяснилось, что его надо было набрать
прописными буквами. Ваши действия?
+Изменяю регистр у данного текста через меню
Удаляю набранный текст и набираю заново при нажатой клавише «Shift»;
Удаляю набранный текст и набираю заново, предварительно нажав клавишу
«Caps Lock»;
Меняю свойства абзаца и таблицы у данного текста;
Меняю свойства шрифта у данного текста;
Какое действие можно ассоциировать с макросом?
+Практически любое, выполнимое в приложении MS Word, кроме того,
можно написать свое
Практически любое, выполнимое в приложении MS Word;
Практически любое, выполнимое в операционной системе;
Только те, которые перечислены в (Меню – Сервис – Настройка – Команды –
Все команды);
Сетевые технологии и Интернет
1. Комплекс аппаратных и программных средств, позволяющих компьютерам
обмениваться данными, называется:
+компьютерная сеть
магистраль
интерфейс
249
адаптер
2. Техническая система, предназначенная для обмена информацией между
пользователями компьютеров и доступа к хранящимся на них
информационным ресурсам, называется:
+компьютерной сетью
программным обеспечением
аппаратными средствами компьютера
вычислительным комплексом
3. Множество компьютеров, связанных каналами передачи информации и
находящихся в пределах одного здания, называется:
+локальной компьютерной сетью
глобальной компьютерной сетью
информационной системой с гиперсвязями
региональной компьютерной сетью
электронной почтой
4. Схема соединений узлов сети называется _________сети
+топологией
доменом
протоколом
маркером
5. Глобальная компьютерная сеть – это:
+совокупность локальных сетей и компьютеров, расположенных на больших
расстояниях и соединенных с помощью каналов связи в единую систему
информационная система с гиперсвязями
множество компьютеров, связанных каналами передачи информации и
находящихся
в
пределах
одного
здания
система обмена информацией на определенную тему
6. Топология сети определяется:
+способом соединения узлов сети каналами (кабелями) связи
структурой программного обеспечения
способом взаимодействия компьютеров
конфигурацией аппаратного обеспечения
7. Топология сети _________ НЕ ЯВЛЯЕТСЯ базовой
+в виде снежинки
звездообразная
в виде кольца
общей шины
250
8. Конфигурация (топология) локальной компьютерной сети, в которой все
рабочие станции соединяются с файл-сервером называется:
+радиальной
кольцевой
шинной
древовидной
9. Компьютер, предоставляющий свои ресурсы другим компьютерам при
совместной работе называется:
+сервером
коммутатором
магистралью
модемом
10. Клиентами, в распределенной вычислительной среде являются:
+прикладная программа, работающая в интересах пользователя для
предоставления услуг взломщик
пользователь
хакер
с сервера в сети
11. Модем – это устройство для:
+передачи информации по телефонным каналам связи
хранения информации
обработки информации
вывода информации на печать
12. Модем обеспечивает:
+преобразование двоичного кода в аналоговый сигнал и обратно
ослабление аналогового сигнала
исключительно преобразование двоичного кода в аналоговый сигнал
исключительно преобразование аналогового сигнала в двоичный код
усиление аналогового сигнала
13. Сетевой адаптер – это:
+аппаратное средство для взаимодействия персональных компьютеров
программа для связи нескольких компьютеров
система управления сетевыми ресурсами общего доступа
система обмена информацией между компьютерами
14. Сетевой протокол – это:
+набор соглашений о взаимодействиях в компьютерной сети
согласование различных процессов во времени
последовательность записи событий, происходящих в компьютерной сети
251
правила интерпретации данных, передаваемых по сети
правила установления связи между двумя компьютерами в сети
15. Скорость передачи данных – это:
+количество битов информации, передаваемой в единицу времени
количество информации, передаваемой в одну секунду
количество байт информации, передаваемой за одну минуту
количество байт информации, передаваемой с одного компьютера на другой
16. Электронная почта (e-mail) позволяет передавать:
+сообщения и приложенные файлы
исключительно базы данных
исключительно текстовые сообщения
исполняемые программы
www-страницы
17. Служба FTP в Интернете предназначена для:
+приема и передачи файлов любого формата
создания, передачи и приема Web-страниц
обеспечения функционирования электронной почты
обеспечения работы телеконференций
удаленного управления техническими системами
18. Компьютер, подключенный к Интернету обязательно имеет:
+IP-адрес
Web-страницу
доменное имя
E-mail (электронную почту)
19. IP-адрес используется для:
+однозначного определения (идентификации) компьютера в сети
обозначения адреса электронной почты
обозначения имени пользователя в одной из почтовых программ
определения пароля при регистрации пользователя у провайдера
20. Задан адрес электронной почты в сети Internet: user-name@dvfu.ru. Каково
имя владельца этого электронного адреса?
+user-name
ru
mtu-net.ru
mtu-net
21. Выберите правильную расшифровку аббревиатуры WWW:
+World Wide Web
World What Work
252
World Work Wide
What Where When
22. Гипертекст это:
+структурированный текст, в котором могут осуществляться переходы по
выделенным меткам
очень большой текст
текст, набранный на компьютере
текст,
в
котором
используется
шрифт
большого
размера
23. Язык HTML – это
+язык для разметки гипертекстовых страниц
алгоритмический язык высокого уровня
язык для создания исполняемого файла
средство подготовки изображений для сайта
Безопасность информационных систем
Безопасность данных – это
+такое состояние хранимых, обрабатываемых и принимаемых данных, при
которых невозможно их случайное или преднамеренное получение,
изменение или уничтожение
совокупность приемов и операций, реализующих функции защиты данных
совокупность целенаправленных действий и мероприятий по обеспечению
безопасности данных
методы шифрования и паролирования.
Метод (способ) защиты данных – это
+совокупность приемов и операций, реализующих функции защиты данных
такое состояние хранимых, обрабатываемых и принимаемых данных, при
которых невозможно их случайное или преднамеренное получение,
изменение или уничтожение
процесс обеспечения безопасности данных
методы шифрования и паролирования.
Защита данных – это
+процесс обеспечения безопасности данных
совокупность приемов и операций, реализующих функции защиты данных
такое состояние хранимых, обрабатываемых и принимаемых данных, при
которых невозможно их случайное или преднамеренное получение,
изменение или уничтожение
методы шифрования и паролирования.
253
Несанкционированный доступ к данным - это
+злоумышленное или случайное действие, нарушающее технологическую
схему обработки данных и ведущее к получению, модификации или
уничтожению данных
возможность случайного или преднамеренного действия или бездействия, в
результате которого может быть нарушена безопасность данных
совокупность средств защиты, функционирующих совместно для
выполнения определенной задачи по защите данных
Угроза безопасности данных - это
+возможность случайного или преднамеренного действия или бездействия, в
результате которого может быть нарушена безопасность данных
злоумышленное или случайное действие, нарушающее технологическую
схему обработки данных и ведущее к получению, модификации или
уничтожению данных
совокупность средств защиты, функционирующих совместно для
выполнения определенной задачи по защите данных
Стойкость шифра – это
+способность шифра противостоять всевозможным атакам на него
программа для расшифровки сообщений
время, за которое можно расшифровать сообщение
количество различных сообщений, которые можно получить с помощью
данного шифра
Шифрование – это
+процесс применения шифра к защищаемой информации
процесс преобразование шифрованного сообщения в исходную информацию
методы и способы преобразования информации с целью ее защиты
программа, позволяющая зашифровать сообщение
Шифр – это
+методы и способы преобразования информации с целью ее защиты
процесс применения шифра к защищаемой информации
процесс преобразование шифрованного сообщения в исходную информацию
набор специальных устройств, с помощью которого шифруется текст
Симптомами заражения компьютера вирусами НЕ являются
+периодическое мерцание экрана
уменьшение объёма системной памяти и свободного места на диске без
видимых причин
изменение длины файлов и даты создания
замедление работы программ, зависание и перезагрузка
254
В человеко-компьютерных системах необходимо обеспечивать защиту
информации от угроз:
+случайной потери или изменения
+преднамеренного искажения
+сбоев оборудования
санкционированного просмотра
резервного копирования.
Отличительные особенности компьютерного вируса:
+маленький объем программного кода
+способность к самостоятельному запуску, многократному копированию
кода, созданию помех работе компьютера
легкость распознавания и уничтожения
значительный объем программного кода
Сетевые черви – это программы, которые:
+не изменяют файлы на дисках, а распространяются в компьютерной сети,
проникают в операционную систему компьютера, находят адреса других
компьютеров или пользователей и рассылают по этим адресам свои копии
изменяют файлы на дисках и распространяются в пределах компьютера
создают сбои при питании компьютера от электросети
распространяются только по электронной почте через Интернет
К недостаткам антивирусных средств относят:
+необходимость постоянного обновления вирусных баз
невозможность лечения «подозрительных» объектов
разнообразие настроек
автоматическую проверку всех открываемых файлов
Антивирусным пакетом является:
+Антивирус Касперского
Delphi
Microsoft Office
Internet Explorer
Криптографическое преобразование информации это:
255
+шифрование данных
введение системы паролей
ограничение доступа к информации
резервное копирование информации
По среде обитания компьютерные вирусы классифицируют на:
+сетевые, файловые, загрузочные, макровирусы
резидентные и нерезидентные
неопасные, опасные и очень опасные
паразиты, репликаторы, невидимки, мутанты, троянские
По особенностям функционирования алгоритма компьютерные вирусы
классифицируют на:
+паразитирующие, вирусы - невидимки, мутирующие, троянские кони
резидентные и нерезидентные
неопасные, опасные и очень опасные
сетевые, файловые, загрузочные, макровирусы
По способу заражения компьютерные вирусы классифицируют на:
+ резидентные и нерезидентные
неопасные, опасные и очень опасные
паразитирующие, вирусы - невидимки, мутирующие, троянские кони
сетевые, файловые, загрузочные, макровирусы
При входе в систему пользователь вводит свое имя и пароль. Тогда
+процесс идентификации – ввод имени, процесс аутентификации – ввод
пароля
процесс идентификации – ввод пароля,
имени
процесс аутентификации – ввод
процесс идентификации – ввод имени и пароля
процесс аутентификации – ввод имени и пароля
Протоколирование действий пользователя позволяет:
+реконструировать
информации
события
при
реализации
обеспечивать конфиденциальность
256
угрозы
безопасности
управлять доступом к информации
восстанавливать утерянную информацию
257
Министерство образования и науки Российской федерации
Филиал государственного образовательного учреждения высшего профессионального образования
«Дальневосточный государственный технический университет
(ДВПИ имени В.В.Куйбышева)» в г. Артеме
СПИСОК ЛИТЕРАТУРЫ
По дисциплине «Информатика»
Специальность 280103.65 – Защита в чрезвычайных ситуациях
специализация – Гражданская защита
Артем
2010
258
Основная литература
1.
В. В. Трофимов. Информатика. Учебник для вузов. 911 с. М:
Юрайт – 2010.
2. В.В. Глухов. Основы информационных технологий. Уч. пособие. 316
с. Вл-к., Изд-во ДВГУ. – 2010 г.
3. Кригер А. Б. Управление информационными системами. Уч.
пособие. 257 с. Вл-к Изд-во ДВФУ – 2011 г.
4. Т. В. Бураго. Информатика. Метод. указания. 74 с. Вл-к., Изд-во
ТГЭУ – 2010 г.
5. Информатика Учебник. 3-е изд-е переработанное /под ред.
Макаровой Н.В. - М.: Финансы и статистика, 2004 - 768 с.
5.
Фигурнов В.Э. IBM PC для пользователя. - М.: Финансы и
статистика. 2005. - 520 с.
6.
Акулов О.А., Медведев Н.В. Информатика: базовый курс. –М.:
Омега, 2004. –551 с
Е. Андреева, И. Фалина. Системы счисления и компьютерная
7.
арифметика. Учебное пособие. - М: Бином.,2004 г.- 256 стр.
8.
Окулов С. Основы программирования (2-е издание). - М: "Бином.
Лаборатория знаний", 2005. - 440 стр.
9.
Фаронов В. Turbo Pascal. Учебное пособие. – СПб: Питер, 2007. –
10.
Моргун. Программирование на языке Паскаль. Основы обработки
367 с.
структур данных. - "Вильямс", 2005 г. - 576 с.
11.
Программирование на языке Паскаль: задачник/ под ред. Усковой
О.Ф. – СПб: Питер, 2005. – 336 с.
Дополнительная литература
Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика.. - М.: ACADEMA,
2004 - 800 с.
259
Безручко В.Т. Практическая работа в Word 2000. - М.: Финансы и
кредит, 2004. -428с.
Лавренов С.М. Excel: Сборник примеров и задач. - М. Финансы и
статистика, 2000. - 336 с.
Дьяконов В. Mathematica 4.1/4.2/5.0 в математических и научнотехнических расчетах - СОЛОН-Пресс, 2004
Потопахин В.В. Turbo Pascal. Решение сложных задач. – СПб: «BHVСанкт-Петербург», 2006. – 208 с.
Адаменко А. Pascal на примерах из математики.- СПб: «BHV-СанктПетербург», 2005. -416 с.
Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. –
М: Наука и техника, 2007. – 544 с.
Кулямин В. Технологии программирования. Компонентный подход.
Учебное пособие. –М: "ИНТУИТ.РУ", 2007 г. - 463 с.
Программное обеспечение
1.
Операционная система Windows.
2.
Microsoft Office.
3.
Wolfram Mathematica.
4.
Pascal ABC или FreePascal.
5.
Интерактивная
удаленная
лаборатория
http://www.wolframalpha.com/
6. Обучение алгоритмам программирования (programmm.me)
Интернет-ресурсы
1. Мациевский С.В., Ишанов С.А., Клевцур С.В. Информатика:
Учебное пособие. - Калининград: Изд-во КГУ, 2003. - 140 с.
http://window.edu.ru/resource/039/24039
2. Толстяков Р.Р. Информатика: учебное пособие / Р.Р. Толстяков, Т.Ю.
Забавникова, Т.В. Попова. - Тамбов: Изд-во ФГБОУ ВПО "ТГТУ", 2011. - 112
с.
260
http://window.edu.ru/resource/540/76540
3.
Терехов
А.В.,
Селезнев
А.В.,
Чернышов
В.Н.,
Рак
И.П.
Информатика: Учебное пособие. - Тамбов: Изд-во ТГТУ, 2004. - 100 с.
http://window.edu.ru/resource/016/22016
261
Download