- •ПРЕДИСЛОВИЕ
- •ВВЕДЕНИЕ
- •ЧАСТЬ ПЕРВАЯ
- •ГЛАВА 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
- •ВВЕДЕНИЕ
- •1.1. ИСТОРИЯ РАЗВИТИЯ ИНФОРМАТИКИ
- •1.2. ИНФОРМАТИКА КАК ЕДИНСТВО НАУКИ И ТЕХНОЛОГИИ
- •1.3. СТРУКТУРА СОВРЕМЕННОЙ ИНФОРМАТИКИ
- •1.4. МЕСТО ИНФОРМАТИКИ В СИСТЕМЕ НАУК
- •1.5. СОЦИАЛЬНЫЕ АСПЕКТЫ ИНФОРМАТИКИ
- •1.6. ПРАВОВЫЕ АСПЕКТЫ ИНФОРМАТИКИ
- •1.7. ЭТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ
- •Контрольные вопросы
- •§ 2. ИНФОРМАЦИЯ, ЕЕ ВИДЫ И СВОЙСТВА
- •2.1. РАЗЛИЧНЫЕ УРОВНИ ПРЕДСТАВЛЕНИЙ ОБ ИНФОРМАЦИИ
- •2.2. НЕПРЕРЫВНАЯ И ДИСКРЕТНАЯ ИНФОРМАЦИЯ
- •2.3. ЕДИНИЦЫ КОЛИЧЕСТВА ИНФОРМАЦИИ: ВЕРОЯТНОСТНЫЙ И ОБЪЕМНЫЙ ПОДХОДЫ
- •2.4. ИНФОРМАЦИЯ: БОЛЕЕ ШИРОКИЙ ВЗГЛЯД
- •2.5. ИНФОРМАЦИЯ И ФИЗИЧЕСКИЙ МИР
- •§ 3. СИСТЕМЫ СЧИСЛЕНИЯ
- •3.1. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ
- •3.2. ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ
- •3.3. ВОСЬМЕРИЧНАЯ И ШЕСТНАДЦАТИРИЧНАЯ СИСТЕМЫ СЧИСЛЕНИЯ
- •§ 4. КОДИРОВАНИЕ ИНФОРМАЦИИ.
- •4.1. АБСТРАКТНЫЙ АЛФАВИТ
- •4.2. КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ
- •4.3. ПОНЯТИЕ О ТЕОРЕМАХ ШЕННОНА
- •4.4. МЕЖДУНАРОДНЫЕ СИСТЕМЫ БАЙТОВОГО КОДИРОВАНИЯ
- •§ 5. ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ
- •5.1. ОСНОВНЫЕ ПОНЯТИЯ
- •5.2. ПРЕДСТАВЛЕНИЕ ГРАФОВ
- •§ 6. АЛГОРИТМ И ЕГО СВОЙСТВА
- •6.1. РАЗЛИЧНЫЕ ПОДХОДЫ К ПОНЯТИЮ «АЛГОРИТМ»
- •6.2. ПОНЯТИЕ ИСПОЛНИТЕЛЯ АЛГОРИТМА
- •6.3. ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ АЛГОРИТМОВ
- •6.4. СВОЙСТВА АЛГОРИТМОВ
- •6.5. ПОНЯТИЕ АЛГОРИТМИЧЕСКОГО ЯЗЫКА
- •Контрольные вопросы
- •§7. ФОРМАЛИЗАЦИЯ ПОНЯТИЯ «АЛГОРИТМ»
- •7.1. ПОСТАНОВКА ПРОБЛЕМЫ
- •7.2. МАШИНА ПОСТА
- •73. МАШИНА ТЬЮРИНГА
- •7.4. НОРМАЛЬНЫЕ АЛГОРИТМЫ МАРКОВА
- •7.5. РЕКУРСИВНЫЕ ФУНКЦИИ
- •Контрольные вопросы и задания
- •8.1. ОПЕРАЦИОНАЛЬНЫЙ ПОДХОД
- •8.2. СТРУКТУРНЫЙ ПОДХОД
- •8.3. НОВЕЙШИЕ МЕТОДОЛОГИИ РАЗРАБОТКИ ПРОГРАММ ДЛЯ ЭВМ
- •Контрольные вопросы и задания
- •§ 9. СТРУКТУРЫ ДАННЫХ
- •9.1. ДАННЫЕ И ИХ ОБРАБОТКА
- •9.2. ПРОСТЫЕ (НЕСТРУКТУРИРОВАННЫЕ) ТИПЫ ДАННЫХ
- •9.3. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ
- •Контрольные вопросы и задания
- •§ 10. ПОНЯТИЕ ОБ ИНФОРМАЦИОННОМ МОДЕЛИРОВАНИИ
- •10.1. МОДЕЛИРОВАНИЕ КАК МЕТОД РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ
- •10.2. ОСНОВНЫЕ ПОНЯТИЯ ИНФОРМАЦИОННОГО МОДЕЛИРОВАНИЯ
- •10.3. СВЯЗИ МЕЖДУ ОБЪЕКТАМИ
- •Контрольные вопросы и задания
- •§ 11. НЕКОТОРЫЕ КИБЕРНЕТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ
- •11.1. ПРЕДМЕТ КИБЕРНЕТИКИ
- •11.2. УПРАВЛЯЕМЫЕ СИСТЕМЫ
- •11.3. ФУНКЦИИ ЧЕЛОВЕКА И МАШИНЫ В СИСТЕМАХ УПРАВЛЕНИЯ
- •Контрольные вопросы и задания
- •§ 12. ПОНЯТИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА
- •12.3. МОДЕЛИРОВАНИЕ РАССУЖДЕНИЙ
- •12.4. ИНТЕЛЛЕКТУАЛЬНЫЙ ИНТЕРФЕЙС ИНФОРМАЦИОННОЙ СИСТЕМЫ
- •12.5. СТРУКТУРА СОВРЕМЕННОЙ СИСТЕМЫ РЕШЕНИЯ ПРИКЛАДНЫХ ЗАДАЧ
- •Контрольные вопросы и задания
- •Дополнительная литература к главе 1
- •ГЛАВА 2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ
- •ВВЕДЕНИЕ
- •§ 1. ОПЕРАЦИОННЫЕ СИСТЕМЫ
- •1.1. НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ
- •1.2. ПОНЯТИЕ ФАЙЛОВОЙ СИСТЕМЫ
- •1.3. ОПЕРАЦИОННЫЕ СИСТЕМЫ ДЛЯ КОМПЬЮТЕРОВ ТИПА IBM PC
- •1.4. ОБОЛОЧКИ ОПЕРАЦИОННЫХ СИСТЕМ
- •Контрольные вопросы и задания
- •§ 2. ПОНЯТИЕ О СИСТЕМЕ ПРОГРАММИРОВАНИЯ
- •2.1. ОСНОВНЫЕ ФУНКЦИИ И КОМПОНЕНТЫ
- •2.2. ТРАНСЛЯЦИЯ ПРОГРАММ И СОПУТСТВУЮЩИЕ ПРОЦЕССЫ
- •Контрольные вопросы
- •§3. ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ОБЩЕГО НАЗНАЧЕНИЯ
- •3.1. КЛАССИФИКАЦИЯ
- •3.2. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ОБЩЕГО НАЗНАЧЕНИЯ
- •3.3. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ
- •3.4. ПРОГРАММНЫЕ СРЕДСТВА ПРОФЕССИОНАЛЬНОГО УРОВНЯ
- •3.5. ОРГАНИЗАЦИЯ «МЕНЮ» В ПРОГРАММНЫХ СИСТЕМАХ
- •Контрольные вопросы ч задания
- •§ 4. СИСТЕМЫ ОБРАБОТКИ ТЕКСТОВ
- •4.1. ЭЛЕМЕНТЫ ИЗДАТЕЛЬСКОГО ДЕЛА
- •4.2. ТЕКСТОВЫЕ РЕДАКТОРЫ
- •4.3. ИЗДАТЕЛЬСКИЕ СИСТЕМЫ
- •§ 5. СИСТЕМЫ КОМПЬЮТЕРНОЙ ГРАФИКИ
- •5.1. ПРИНЦИПЫ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЙ НА ЭКРАНЕ
- •5.2. ИЗОБРАЗИТЕЛЬНАЯ ГРАФИКА
- •5.3. ГРАФИЧЕСКИЕ РЕДАКТОРЫ
- •5.4. ДЕЛОВАЯ ГРАФИКА
- •5.5. ИНЖЕНЕРНАЯ ГРАФИКА
- •5.6. НАУЧНАЯ ГРАФИКА
- •Контрольные вопросы и упражнения
- •§ 6. БАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
- •6.1. ПОНЯТИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ
- •6.2. ВИДЫ СТРУКТУР ДАННЫХ
- •6.3. ВИДЫ БАЗ ДАННЫХ
- •6.4. СОСТАВ И ФУНКЦИИ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
- •6.5. ПРИМЕРЫ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
- •Контрольные вопросы и задания
- •§ 7. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ
- •7.1. НАЗНАЧЕНИЕ И ОСНОВНЫЕ ФУНКЦИИ ТАБЛИЧНЫХ ПРОЦЕССОРОВ
- •7.2. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ SUPERCALC
- •7.3. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ EXCEL
- •§8. ИНТЕГРИРОВАННЫЕ ПРОГРАММНЫЕ СРЕДСТВА
- •8.1. ПРИНЦИПЫ ПОСТРОЕНИЯ ИНТЕГРИРОВАННЫХ ПРОГРАММНЫХ СИСТЕМ
- •8.2. ИНТЕГРИРОВАННЫЙ ПАКЕТ MS-WORKS
- •§ 9. ЭКСПЕРТНЫЕ СИСТЕМЫ
- •Контрольные вопросы и задания
- •§ 10. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ДЛЯ РЕШЕНИЯ ПРИКЛАДНЫХ МАТЕМАТИЧЕСКИХ ЗАДАЧ
- •10.1. НАЗНАЧЕНИЕ ПРОГРАММ
- •10.2. ПАКЕТ MATHCAD
- •10.3. СИСТЕМА АНАЛИТИЧЕСКИХ ПРЕОБРАЗОВАНИЙ REDUCE
- •§ 11. КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ
- •11.1. ТЕХНОЛОГИЯ ПРОЕКТИРОВАНИЯ КОМПЬЮТЕРНЫХ ТЕСТОВ ПРЕДМЕТНОЙ ОБЛАСТИ
- •11.2. ТИПЫ КОМПЬЮТЕРНЫХ ТЕСТОВ
- •11.3. ИНСТРУМЕНТАЛЬНЫЕ ТЕСТОВЫЕ ОБОЛОЧКИ
- •11.4. ПРИМЕР ТЕСТА ПО ШКОЛЬНОМУ КУРСУ ИНФОРМАТИКИ
- •§12. КОМПЬЮТЕРНЫЕ ВИРУСЫ
- •12.1. ЧТО ТАКОЕ КОМПЬЮТЕРНЫЙ ВИРУС
- •12.2. РАЗНОВИДНОСТИ КОМПЬЮТЕРНЫХ ВИРУСОВ
- •12.3. АНТИВИРУСНЫЕ СРЕДСТВА
- •Контрольные вопросы и задания
- •§ 13. КОМПЬЮТЕРНЫЕ ИГРЫ
- •13.1. ВИДЫ И НАЗНАЧЕНИЕ КОМПЬЮТЕРНЫХ ИГР
- •13.2. ОБЗОР КОМПЬЮТЕРНЫХ ИГР
- •Контрольные вопросы
- •ГЛАВА 3 ЯЗЫКИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ
- •ВВЕДЕНИЕ
- •§ 1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
- •§2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
- •2.1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
- •2.2. МЕТАЯЗЫКИ ОПИСАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
- •23. ГРАММАТИКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
- •§3. ПАСКАЛЬ КАК ЯЗЫК СТРУКТУРНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
- •3.1. ВВЕДЕНИЕ
- •Контрольные вопросы
- •3.2. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА
- •Контрольные вопросы
- •3.3. СТРУКТУРЫ ДАННЫХ
- •3.4. ПРОЦЕДУРЫ И ФУНКЦИИ
- •3.5. РАБОТА С ФАЙЛАМИ
- •3.6. ДИНАМИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СТРУКТУРЫ
- •Контрольные вопросы
- •Контрольные вопросы и задания
- •Контрольные вопросы
- •§4. МЕТОДЫ И ИСКУССТВО ПРОГРАММИРОВАНИЯ
- •4.1. ПРОЕКТИРОВАНИЕ ПРОГРАММ
- •Контрольные вопросы и задания
- •4.2. ОСНОВНЫЕ ПРИНЦИПЫ РАЗРАБОТКИ И АНАЛИЗА АЛГОРИТМОВ
- •Задания
- •4.3. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ, ОРИЕНТИРОВАННЫЕ НА СТРУКТУРЫ ДАННЫХ
- •Контрольные задания
- •4.4. РЕКУРСИВНЫЕ АЛГОРИТМЫ
- •Контрольные задания
- •4.5. ВАЖНЕЙШИЕ НЕВЫЧИСЛИТЕЛЬНЫЕ АЛГОРИТМЫ (ПОИСК И СОРТИРОВКА)
- •Контрольные вопросы и задания
- •5.1. ВВЕДЕНИЕ В БЕЙСИК
- •Контрольные вопросы
- •5.2. БАЗОВЫЕ ОПЕРАТОРЫ
- •Контрольные вопросы ч задания
- •5.3. МУЗЫКАЛЬНЫЕ ВОЗМОЖНОСТИ
- •Контрольные вопросы и задания
- •5.4. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ
- •Контрольные вопросы и задания
- •5.5. ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ
- •Контрольные вопросы и задания
- •5.6. ПОДПРОГРАММЫ
- •Контрольные вопросы
- •5.7. РАБОТА С ФАЙЛАМИ
- •5.8. СРЕДСТВА И МЕТОДЫ ОРГАНИЗАЦИИ ДИАЛОГА
- •Контрольные задания
- •5.9. ВЕРСИИ БЕЙСИКА
- •5.10. БЕЙСИК И ПАСКАЛЬ
- •§ 6. ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ СИ
- •6.1. ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА И ПРИМЕР ПРОГРАММЫ НА СИ
- •6.2. ЭЛЕМЕНТЫ СИ: АЛФАВИТ, ИДЕНТИФИКАТОРЫ, ЛИТЕРАЛЫ, СЛУЖЕБНЫЕ СЛОВА
- •6.3. ТИПЫ ДАННЫХ И ОПЕРАЦИИ В ЯЗЫКЕ СИ. ВЫРАЖЕНИЯ
- •6.4. ОПЕРАТОРЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА
- •6.5. СТРУКТУРА ПРОГРАММЫ НА СИ. ПОНЯТИЕ О ФУНКЦИЯХ
- •6.6. КЛАССЫ ПАМЯТИ
- •6.7. ФУНКЦИИ ВВОДA-ВЫВОДА
- •6.8. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА
- •6.9. СИ И ПАСКАЛЬ
- •§ 7. ОСНОВЫ ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ПРОЛОГ
- •7.1. ОБЩИЕ СВЕДЕНИЯ
- •7.2. АЛГОРИТМ ВЫПОЛНЕНИЯ ПРОГРАММ НА ПРОЛОГЕ
- •7.3. РЕКУРСИЯ
- •7.4. ПРЕДИКАТ ОТСЕЧЕНИЯ И УПРАВЛЕНИЕ ЛОГИЧЕСКИМ ВЫВОДОМ В ПРОГРАММАХ
- •7.5. ОБРАБОТКА СПИСКОВ
- •7.6. РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ НА ПРОЛОГЕ
- •Контрольные вопросы и задания
- •§ 8. ВВЕДЕНИЕ В ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ЛИСП
- •8.1. НАЗНАЧЕНИЕ И ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА
- •8.2. ОСНОВНЫЕ ЭЛЕМЕНТЫ ПРОГРАММЫ НА ЛИСПЕ. СПИСКИ
- •8.3. ФУНКЦИИ
- •8.4. ФОРМЫ. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ В ЛИСП-ПРОГРАММЕ
- •8.5. РЕКУРСИЯ И ЦИКЛ В ПРОГРАММАХ НА ЛИСПЕ
- •8.6. ВВОД-ВЫВОД ДАННЫХ
- •8.7. ПРИМЕР ПРОГРАММИРОВАНИЯ НА ЛИСПЕ
- •8.8. СВОЙСТВА СИМВОЛОВ
- •Контрольные вопросы и задания
- •§9. ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
- •9.1. ОСНОВНЫЕ ПОЛОЖЕНИЯ
- •9.2. ОСНОВЫ ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ В СИСТЕМЕ ТУРБО-ПАСКАЛЬ
- •9.3. ОБОЛОЧКА TURBO-VISION
- •9.4.* СРЕДА ОБЪЕКТНОГО ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ DELPHI
- •9.8. СИСТЕМА ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ SMALLTALK
- •Контрольные вопросы и задания
- •Дополнительная литература к главе 3
- •ЧАСТЬ ВТОРАЯ
- •ГЛАВА 4 ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА
- •ВВЕДЕНИЕ
- •§ 1. ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
- •1.1. НАЧАЛЬНЫЙ ЭТАП РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
- •1.2. НАЧАЛО СОВРЕМЕННОЙ ИСТОРИИ ЭЛЕКТРОННОЙ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
- •1.3. ПОКОЛЕНИЯ ЭВМ
- •1.4. ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ
- •1.5. И НЕ ТОЛЬКО ПЕРСОНАЛЬНЫЕ КОМПЬЮТЕРЫ...
- •1.6. ЧТО ВПЕРЕДИ?
- •Контрольные вопросы
- •§2. АРХИТЕКТУРА ЭВМ
- •2.1. О ПОНЯТИИ «АРХИТЕКТУРА ЭВМ»
- •1.2. КЛАССИЧЕСКАЯ АРХИТЕКТУРА ЭВМ II ПРИНЦИПЫ ФОН НЕЙМАНА
- •2.3. СОВЕРШЕНСТВОВАНИЕ И РАЗВИТИЕ ВНУТРЕННЕЙ СТРУКТУРЫ ЭВМ
- •2.4. ОСНОВНОЙ ЦИКЛ РАБОТЫ ЭВМ
- •2.5. СИСТЕМА КОМАНД ЭВМ И СПОСОБЫ ОБРАЩЕНИЯ К ДАННЫМ
- •Контрольные вопросы
- •§3. АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ
- •3.1. ИСТОРИЯ РАЗВИТИЯ МИКРОПРОЦЕССОРОВ
- •3.3. ВНУТРЕННЯЯ ОРГАНИЗАЦИЯ МИКРОПРОЦЕССОРА
- •3.3. РАБОТА МИКРОПРОЦЕССОРА С ПАМЯТЬЮ. МЕТОДЫ АДРЕСАЦИИ
- •3.4. ФОРМАТЫ ДАННЫХ
- •3.5. ОБРАБОТКА ПРЕРЫВАНИЙ
- •3.6. РАБОТА МИКРОПРОЦЕССОРА С ВНЕШНИМИ УСТРОЙСТВАМИ
- •3.7. ПРИМЕР: СИСТЕМА КОМАНД ПРОЦЕССОРОВ СЕМЕЙСТВА PDP
- •Контрольные вопросы и задания
- •§4. УЧЕБНАЯ МОДЕЛЬ МИКРОКОМПЬЮТЕРА
- •4.1. СТРУКТУРА УЧЕБНОГО МИКРОКОМПЬЮТЕРА
- •4.2. СИСТЕМА КОМАНД
- •4.3. АДРЕСАЦИЯ ДАННЫХ
- •4.4. РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ
- •4.5. ПРИМЕРЫ ПРОГРАММ
- •Контрольные вопросы и задания
- •§ 5. ВНЕШНИЕ УСТРОЙСТВА ЭВМ: ФИЗИЧЕСКИЕ ПРИНЦИПЫ И ХАРАКТЕРИСТИКИ
- •5.1. ВНЕШНИЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА
- •5.2. УСТРОЙСТВА ВВОДА ИНФОРМАЦИИ
- •5.3. УСТРОЙСТВА ВЫВОДА ИНФОРМАЦИИ
- •Контрольные вопросы и задания
- •§ 6. ЛОГИЧЕСКИЕ ОСНОВЫ ФУНКЦИОНИРОВАНИЯ ЭВМ
- •6.1. ЛОГИКА ВЫСКАЗЫВАНИЙ. ЭЛЕМЕНТАРНЫЕ ЛОГИЧЕСКИЕ ФУНКЦИИ
- •6.2. СХЕМНАЯ РЕАЛИЗАЦИЯ ЭЛЕМЕНТАРНЫХ ЛОГИЧЕСКИХ ОПЕРАЦИЙ. ТИПОВЫЕ ЛОГИЧЕСКИЕ УЗЛЫ
- •63. ПРИМЕР ЭЛЕКТРОННОЙ РЕАЛИЗАЦИИ ЛОГИЧЕСКОГО ЭЛЕМЕНТА
- •Контрольные вопросы и задания
- •Дополнительная литература к главе 4
- •ГЛАВА 5 КОМПЬЮТЕРНЫЕ СЕТИ И ТЕЛЕКОММУНИКАЦИИ
- •ВВЕДЕНИЕ
- •§ 1. ЛОКАЛЬНЫЕ СЕТИ
- •1.1. АППАРАТНЫЕ СРЕДСТВА
- •1.3. ЛОКАЛЬНЫЕ СЕТИ УЧЕБНОГО НАЗНАЧЕНИЯ
- •Контрольные вопросы
- •§2. ОПЕРАЦИОННЫЕ СИСТЕМЫ ЛОКАЛЬНЫХ СЕТЕЙ
- •Параметр
- •Контрольные вопросы ч задания
- •§3. ГЛОБАЛЬНЫЕ СЕТИ
- •3.1. ОБЩИЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ
- •3.2. АППАРАТНЫЕ СРЕДСТВА И ПРОТОКОЛЫ ОБМЕНА ИНФОРМАЦИЕЙ
- •3.3. ЭЛЕКТРОННАЯ ПОЧТА
- •§ 4. ПРЕДСТАВЛЕНИЕ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ UNIX
- •§ 5. ИСПОЛЬЗОВАНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ В ОБРАЗОВАНИИ
- •5.1. ТЕЛЕКОММУНИКАЦИИ КАК СРЕДСТВО ОБРАЗОВАТЕЛЬНЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
- •5.2. ПЕРСОНАЛЬНЫЙ ОБМЕН СООБЩЕНИЯМИ
- •5.3. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ
- •5.4. СОВМЕСТНОЕ РЕШЕНИЕ ЗАДАЧ
- •ГЛАВА 6 ИНФОРМАЦИОННЫЕ СИСТЕМЫ
- •ВВЕДЕНИЕ
- •§ 1. БАНКИ ИНФОРМАЦИИ
- •1.1. БАНКИ ДАННЫХ
- •1.2. БАНКИ ДОКУМЕНТОВ
- •1.3. БАНК ПЕДАГОГИЧЕСКОЙ ИНФОРМАЦИИ
- •§ 2. БАЗЫ ДАННЫХ В СТРУКТУРЕ ИНФОРМАЦИОННЫХ СИСТЕМ
- •2.1. ОСНОВНЫЕ ПОНЯТИЯ
- •2.2. ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ
- •2.3. ПРЕДСТАВЛЕНИЕ ОБ ЯЗЫКАХ УПРАВЛЕНИЯ РЕЛЯЦИОННЫМИ БАЗАМИ ДАННЫХ ТИПА dBASE
- •§ 3. АВТОМАТИЗИРОВАННЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ
- •3.1. АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ
- •3.2. ИНФОРМАЦИОННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ
- •3.3. АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ НАУЧНЫХ ИССЛЕДОВАНИЙ
- •3.4. СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ
- •3.5. ГЕОИНФОРМАЦИОННЫЕ СИСТЕМЫ
- •Контрольные вопросы
- •§4. ЭКСПЕРТНЫЕ СИСТЕМЫ
- •Контрольные вопросы и задания
- •§ 5. КОМПЬЮТЕРНЫЕ ОБУЧАЮЩИЕ СИСТЕМЫ
- •5.2. ТИПЫ ОБУЧАЮЩИХ ПРОГРАММ
- •5.3. КОМПЬЮТЕРНОЕ ТЕСТИРОВАНИЕ
- •ГЛАВА 7 КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
- •ВВЕДЕНИЕ
- •§ 1. О РАЗНОВИДНОСТЯХ МОДЕЛИРОВАНИЯ
- •§2. ПОНЯТИЕ О КОМПЬЮТЕРНОМ МАТЕМАТИЧЕСКОМ МОДЕЛИРОВАНИИ
- •2.1. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И КОМПЬЮТЕРЫ
- •2.2. ЭТАПЫ И ЦЕЛИ КОМПЬЮТЕРНОГО МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ
- •2.3. КЛАССИФИКАЦИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ
- •2.4. НЕКОТОРЫЕ ПРИЕМЫ ПРОГРАММИРОВАНИЯ
- •§3. МОДЕЛИРОВАНИЕ ФИЗИЧЕСКИХ ПРОЦЕССОВ
- •3.1. ФИЗИКА И МОДЕЛИРОВАНИЕ
- •3.2. СВОБОДНОЕ ПАДЕНИЕ ТЕЛА С УЧЕТОМ СОПРОТИВЛЕНИЯ СРЕДЫ
- •3.4. ДВИЖЕНИЕ ТЕЛА С ПЕРЕМЕННОЙ МАССОЙ: ВЗЛЕТ РАКЕТЫ
- •3.5. ДВИЖЕНИЕ НЕБЕСНЫХ ТЕЛ
- •3.6. ДВИЖЕНИЕ ЗАРЯЖЕННЫХ ЧАСТИЦ
- •3.7. КОЛЕБАНИЯ МАТЕМАТИЧЕСКОГО МАЯТНИКА
- •3.8. МОДЕЛИРОВАНИЕ ЯВЛЕНИЙ
- •3.9. МОДЕЛИРОВАНИЕ ПРОЦЕССА ТЕПЛОПРОВОДНОСТИ
- •Контрольные вопросы и задания
- •§ 4. КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ В ЭКОЛОГИИ
- •4.1. ЭКОЛОГИЯ И МОДЕЛИРОВАНИЕ
- •4.2. МОДЕЛИ ВНУТРИВИДОВОЙ КОНКУРЕНЦИИ
- •4.3. ЛОГИСТИЧЕСКАЯ МОДЕЛЬ МЕЖВИДОВОЙ КОНКУРЕНЦИИ
- •4.4. ДИНАМИКА ЧИСЛЕННОСТИ ПОПУЛЯЦИЙ ХИЩНИКА И ЖЕРТВЫ
- •4.5. ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ ДИНАМИКИ ПОПУЛЯЦИЙ
- •Контрольные вопросы и задания
- •§5. ГЛОБАЛЬНЫЕ МОДЕЛИ РАЗВИТИЯ ЧЕЛОВЕЧЕСТВА
- •§ 6. МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ
- •6.1. ТЕХНИКА СТОХАСТИЧЕСКОГО МОДЕЛИРОВАНИЯ
- •6.2. МОДЕЛИРОВАНИЕ СЛУЧАЙНЫХ ПРОЦЕССОВ В СИСТЕМАХ МАССОВОГО ОБСЛУЖИВАНИЯ
- •6.3. РАЗЛИЧНЫЕ ПРИМЕРЫ МОДЕЛИРОВАНИЯ СЛУЧАЙНЫХ ПРОЦЕССОВ
- •Контрольные вопросы и задания
- •§7. КОМПЬЮТЕРНОЕ МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЭКОНОМИКЕ
- •7.1. ПОСТАНОВКА ЗAДAЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
- •7.2. СИМПЛЕКС-МЕТОД
- •Контрольные вопросы и задания
- •Дополнительная литература к главе 7
- •Содержание
скобках - типичные языки соответствующих групп.
Контрольные вопросы
1.Какие события и когда стали толчком для начала работ по программированию?
2.Каковы основные вехи на пути развития программирования?
3.Какие основные направления существуют в современном программировании?
§2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
2.1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
Языки программирования - это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику.
Алфавит - фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.
Синтаксис - система правил, определяющих допустимые конструкции языка программирования из букв алфавита.
Семантика - система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.
При описании языка и его применении используют понятия языка. Понятие подразумевает некоторую синтаксическую конструкцию и определяемые ею свойства программных объектов или процесса обработки данных.
Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т.д. В отличие от естественных языков правила грамматики и семантики для языков программирования, как и для всех формальных языков, должны быть явно, однозначно и четко сформулированы.
Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называют языками «высокого уровня». В настоящее время насчитывается несколько сотен таких языков, а если считать и их диалекты, то это число возрастет до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа в конечном счете записывается с помощью лишь двух символов 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операций, ориентированных на структуру процессора. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т.п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которой выполняется закодированное действие.
Языки программирования высокого уровня имеют следующие достоинства:
•алфавит языка значительно шире машинного, что делает его гораздо более выразительным
исущественно повышает наглядность и понятность текста;
•набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
•конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде;
•используется аппарат переменных и действия с ними;
•поддерживается широкий набор типов данных.
Таким образом, языки программирования высокого уровня являются машиннонезависимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться.
212
2.2. МЕТАЯЗЫКИ ОПИСАНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Интерпретация конструкций языка программирования должна быть абсолютно однозначной, ибо фраза на языке программирования превращается в машинный код автоматически, с помощью программы-транслятора, и любой намек на неоднозначность либо делает эту фразу непереводимой, либо приводит к ошибке. В этом отношении языки программирования значительно отличаются от естественных языков, допускающих неоднозначно интерпретируемые фразы, рассчитанные на здравый смысл и жизненный опыт человека - слушателя и исполнителя, способного додумать содержание фразы. «Додумывание» не входит в способности компьютеров, поэтому необходимы приемы описания конструкций языков программирования типа: «Оператором присваивания называется ...», причем продолжение подобной фразы на естественном языке чаще всего оказывается либо слишком громоздким, либо неоднозначным, либо и тем, и другим одновременно.
Для строгого и точного описания синтаксиса языка программирования, как правило, используют специальные метаязыки (языки для описания других языков). Наиболее распространенными метаязыками являются металингвистические формулы Бэкуса - Наура (язык БНФ) и синтаксические диаграммы Вирта.
Язык БНФ (называемый также языком нормальных форм) представляет компактную форму в виде некоторых формул, похожих на математические. Для каждого понятия языка существует единственная метаформула (нормальная форма). Она состоит из левой и правой частей. В левой части указывается определяемое понятие, а в правой - задается множество допустимых конструкций языка, которые объединяются в это понятие. В формуле используют специальные метасимволы в виде угловых скобок, в которых заключено определяемое понятие (в левой части формулы) или ранее определенное понятие (в ее правой части), а разделение левой и правой частей указывается метасимволом «::=», смысл которого эквивалентен словам «по определению есть».
Например, метаформулы
<переменная>::=А]В <выражение>::=<переменная>|<переменная>+<переменная>|<переменная><переменная>- <переменная>
означают, что в том (сугубо модельном) языке, на который эта метаформула распространяется, под термином <переменная> понимается любая из букв А или В, а под термином <выражение> - любая из следующих десяти записей: А; В; А+А; А+В; В+А; В+В; А-А; А-В: В-А; В-В Знак 1 следует читать «или».
Правая часть метаформулы может содержать правило построения допустимых последовательностей. Допускаются рекурсивные определения терминов и понятий, т.е. когда в правой части формулы участвует понятие, определяемое левой частью. Например, пусть необходимо ввести понятие <двоичный код>, под которым понимался любая непустая последовательность цифр 0 и 1. Тогда простое и компактное рекурсивное определение с помощью метаформул выглядит так:
<двоичная цифра>::= 0|1 <двоичный код>::=<двоичная цифра>|<двоичный код> <двоичная цифра>
Рекурсия здесь не мешает конструктивному построению понятия <двоичный код>, так как по принятым правилам при первом обращении к рекурсивно определяемому понятию следует ограничиться нерекурсивной частью формулы, т.е. под двоичным кодом понимать двоичную цифру - 0 или 1. Но при втором обращении к метаформуле, определяющей двоичный код, мы имеем варианты (конечно, неполные) понятия <двоичный код>, и можем применить рекурсию, которая даст нам следующие варианты этого понятия: 0 1 00 01 10 11, т.е. все возможные одно- и двухцифровые двоичные коды. Очевидно, что при следующих применениях рекурсии мы получим любой возможный двоичный код.
213
Для задания синтаксических конструкций произвольной длины часто используют фигурные скобки как метасимволы. Фигурные скобки означают, что конструкция может повторяться нуль или более раз. В частности, термин <двоичный код> можно определить по другому, а именно:
<двоичный код>::=<двоичная цифра><двоичная цифра>
И еще, для полноты множества синтаксических конструкций, необходимо определить конструкцию <пусто>:
<пусто>::=.
В большинстве учебных пособий по программированию, технических описаний языков, метаформулы рассматриваемого языка представлены полностью.
Синтаксическая диаграмма является графическим представлением значения метапеременной метаязыка. Диаграмма состоит из основных символов или понятий языка.
Каждая диаграмма имеет входящую и выходящую стрелки, означающие начало и конец синтаксической конструкции и отражающие процесс ее чтения и анализа . Из каждого элемента выходит одна или несколько стрелок, оказывающих на те элементы, которые могут следовать непосредственно за данным элементом.
Для сравнения с метаформулами приведем несколько примеров. Синтаксическая диаграмма
<переменная>:: =
цсвивалентна метаформуле <переменная>::= А\В.
Еще примеры:
Читатель может поупражняться в составлении синтаксических диаграмм для известных ему языков программирования.
Металингвистические формулы в некотором виде заложены в трансляторы; с их помощью ведется проверка конструкций, используемых программистом, на формальное соответствие какойнибудь из конструкций, синтаксически допустимых в этом языке (синтаксический контроль).
23. ГРАММАТИКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Описанию грамматики языка предшествует описание его алфавита. Алфавит любого языка состоит из фиксированного набора символов, однозначно трактуемых. Алфавит языков программирования, как правило, связан с литерами клавиатуры печатной машинки. Клавиатуры персональных компьютеров близки к ним по наличию литер.
Алфавиты большинства языков программирования близки друг другу и основываются на буквах латинского алфавита, арабских цифрах и общепринятых спецсимволах, таких как знаки препинания, математических операций, сравнений и обозначений. Большинство популярных языков программирования в своем алфавите содержат следующие элементы:
<буква> : : = AaBbCcDdEeFf и т.д. <цифра> ::=0123456789 <знак арифметической операции >::=*/+- <разделитель> ::=.,;:()[]{}':=
<служебное слово> :: = begin end if then else for next и т.д.
214
<спецсимвол> :: = <знак арифметической операции> | <разделитель> | <служебное слово> <основной символ>::=<буква> | <цифра> | <спецсимвол>
<комментарий>::=<любая последовательность символов>
Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Приведем часть этих понятии.
Оператор - одно из ведущих понятий всех языков программирования (теоретически, за исключением чисто декларативных; но в действительности и они используют родственное понятие). Каждый оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных В соответствии с теорией алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным, не основным, относят составной оператор, оператор выбора, оператор цикла и оператор присоединения.
Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например:
Sl;S2;...;Sn
Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен.
Большая часть операторов ведет обработку величин. Величины могут быть постоянными и переменными. Значения постоянных величин не изменяются в ходе выполнения программы. Величина характеризуется типом, именем и значением. Наиболее распространенные типы величин - числовые (целые и вещественные), символьные, логические. Тип величины определяется ее значением.
Другая важная классификация величин - простые и структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти (поскольку термин «ячейка» несколько устарел, часто говорят «машинное слово») или ее эквивалент во внешней памяти компьютера. Структурированная величина, имея одно имя, может иметь разом несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый широкоизвестный пример - массив, у которого элементы различаются по индексам (номерам). Вопрос о структурировании величин - входных, выходных и промежуточных - для успеха решения прикладной задачи не менее важен, чем вопрос о правильном написании последовательности операторов.
Важнейшие характеристики структурированной величины таковы: упорядоченность (да или нет), однородность (да или нет), способ доступа к элементам, фиксированность числа элементов (да или нет). Так, массив является упорядоченной однородной структурой с прямым доступом к элементам и фиксированным их количеством.
Всем программным объектам в языках даются индивидуальные имена. Имя программного объекта называют идентификатором (от слова «идентифицировать»). Чаще всего идентификатором является любая конечная последовательность букв к цифр, начинающаяся с буквы:
<идентификатор>::=<буква> | <идентификатор> | <буква> <идентификатор><цифра>
Как правило, в большинстве языков программирования в качестве идентификатора запрещается использовать служебные слова языка.
Многим слово «идентификатор» не нравится, и в настоящее время чаще употребляют слово «имя», поскольку
<имя>::=<идентификатор>.
Программисты выбирают имена по своему усмотрению. Принципы выбора и назначения имен программным объектам естественны. Следует избегать мало выразительных обозначений, не
215
гоняться за краткими именами. Имена должны быть понятны, наглядны, отражать суть обозначаемого объекта. Например,
Summa, Time, i, j, integral, init и т. п.
Некоторым идентификаторам заранее предписан определенный смысл и их называют стантартными, например, Sin - это имя известной математической функции.
Описания или объявления программных объектов связаны с правилами обработки данных. Данные бывают разные и необходимо для каждого из них определить его свойства. Например, если в качестве данных выступает массив, то необходимо задать его размерность, границы индексов, тип элементов массива. Описательная часть языка программирования является необходимой как для системных программистов - разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ, - так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ.
В некоторых языках стандартные описания простых числовых и символьных данных опускают (описания по умолчанию), или в них задаются правила описания по имени объекта. Например, в Фортране переменные, имена которых начинаются с букв I, J, К, L, M, N, могут принимать целые значения (при отсутствии явного описания типа, которое возможно), т.е. определены как числовые данные целого типа. В Бейсике-MSX данные строкового типа присваиваются переменным, имена которых заканчиваются специальным символом $: A$, S1$.
Особый интерес представляют в языках программирования описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т.п.
Приведем список наиболее употребительных обозначений типов данных, используемых в описаниях:
Целый |
- Integer |
Вещественный |
- Real |
Логический |
- Boolean |
Символьный |
- Char |
Строковый |
- String |
Массив |
- Array |
Множество |
-Set |
Файл |
- File |
Запись |
- Record |
Объект |
- Object |
Переменные играют важнейшую роль в системах программирования. Понятие «переменная» в языках программирования отличается от общепринятого в математике. Переменная - это программный объект, способный принимать некоторое значение с помощью оператора присваивания. В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением. Синтаксис переменной, точнее, ее идентификатора, как правило, имеет вид:
<имя переменной>::= ——><буква>———>
—><буква>———>
—><цифра>——>
—><спецсимвол>
Семантический смысл переменной заключается в хранении некоторого значения. соответствующего ее типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в нее и извлечения из нее этого значения.
216