
- •Оглавление
- •I. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации Литература
- •1.1. Основные понятия информатики
- •1.2. Информация. Информационные процессы
- •1.3. Свойства и виды информации
- •1.4. Измерение информации
- •Вероятностный подход
- •Объемный подход
- •1.5. Системы счисления
- •Правила перевода чисел из одной системы счисления в другую
- •1.6. Логические основы эвм
- •Контрольное задание
- •II. Технические средства реализации информационных процессов
- •2.1. История развития вычислительной техники
- •2.2. Архитектура эвм
- •Классическая архитектура эвм
- •Магистрально-модульная или шинная архитектура компьютера
- •2.3. Состав и назначение основных элементов персонального компьютера Базовая (типовая) конфигурация современного пк
- •Краткая характеристика устройств системного блока
- •2.3 Устройства ввода/вывода данных, их разновидности и основные характеристики Устройства ввода информации
- •Устройства вывода информации
- •Устройства вывода информации
- •Контрольное задание
- •III. Модели решения функциональных и вычислительных задач
- •1. Постановка задачи. Построение информационной модели
- •2. Формализация задачи
- •3. Построение алгоритма
- •4. Составление программы
- •5 Ввод программы в память компьютера. Пробный запуск
- •6. Отладка и тестирование программы
- •7. Получение и анализ результатов
- •IV. Алгоритмизация
- •4.1. Алгоритм и исполнитель
- •4.2. Свойства алгоритмов
- •4.4. Основные типы алгоритмов
- •Линейный тип алгоритмов
- •Разветвляющийся тип алгоритмов
- •Циклический тип алгоритмов
- •Подготовка цикла
- •V. Программирование
- •5.1. Общие понятия программирования
- •5.2. Трансляторы
- •5.3. Языки программирования
- •Поколения языков программирования
- •Обзор языков программирования высокого уровня
- •Классификация с точки зрения принципов программирования (Алексеев е.Г.)
- •5.4. Типы программирования Алгоритмическое (модульное) программирование
- •Структурное программирование
- •Событийно-ориентированное программирование
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •5.5. Программирование как вид деятельности
- •Методы маркетинга программного обеспечения
- •VI. Базы данных
- •6.1. Базы данных (бд), системы управления базами данных (субд)
- •6.2. Реляционные базы данных
- •Реляционные объекты данных
- •Проектирование реляционных баз данных
- •Связи в реляционных базах данных
- •Контрольное задание
- •VII. Программное обеспечение эвм
- •7.1. Основные понятия. Программный продукт
- •7.2. Общая классификация программного обеспечения эвм
- •7.3. Системное программное обеспечение
- •Базовое системное программное обеспечение
- •Операционная система
- •Сервисное системное программное обеспечение
- •7.4. Инструментарий технологии программирования
- •Средства для создания приложений
- •Case-технологии
- •7.5. Прикладное программное обеспечение
- •Ппп общего назначения
- •Ппп специального назначения
- •Вопросы для подготовки к контрольной работе № 4 (темы «Базы данных» и «по эвм»)
- •VIII. Компьютерные сети
- •8.1. Введение в компьютерные сети
- •8.2. Структура компьютерной сети
- •Сетевые средства и службы
- •Носители и устройства для передачи данных
- •Соединительное оборудование
- •Сетевые протоколы (tcp/ip)
- •8.3. Классификация компьютерных сетей
- •III. По физической топологии
- •8.4. Адресация в кс
- •IX. Основы защиты информации
- •9.1. Цели и направления защиты информации
- •9.2. Система безопасности информации
- •9.3. Основные методы защиты информации
- •Правовые методы защиты информации
- •Программные методы защиты информации
- •3) Программные или аппаратные барьеры (брендмауэры)
- •Контрольное задание
- •Вопросы к экзамену Теоретическая часть
- •Практическая часть
Подготовка цикла
V. Программирование
5.1. Общие понятия программирования
Программа — это логически упорядоченная последовательность команд, необходимых для управления компьютером (выполнения им конкретных операций), поэтому программирование сводится к созданию последовательности команд, необходимой для решения определенной задачи.
Управление компьютером осуществляется по определенному алгоритму. Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Сначала всегда разрабатывается алгоритм действий, а потом он записывается на одном из таких языков. В итоге получается текст программы — полное законченное и детальное описание алгоритма на языке программирования.
Команды, поступающие в процессор по его шинам, на самом деле являются электрическими сигналами, но и их тоже можно представить как совокупности нулей и единиц, то есть числами. Разным командам соответствуют разные числа. Поэтому реально программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом.
Поэтому текст программы переводится в машинный код и исполняется. Перевод осуществляется специальными программами, которые называются трансляторами.
Написать программу в машинном коде весьма сложно, причем эта сложность резко возрастает с увеличением размера программы и трудоемкости решения нужной задачи. Условно можно считать, что машинный код приемлем, если размер программы не превышает нескольких десятков байтов и нет потребности в операциях ручного ввода/вывода данных.
Поэтому сегодня практически все программы создаются с помощью языков программирования.
Теоретически программу можно написать и средствами обычного человеческого (естественного) языка — это называется программированием на метаязыке (подобный подход обычно используется на этапе составления алгоритма), но автоматически перевести такую программу в машинный код пока невозможно из-за высокой неоднозначности естественного языка.
Языки программирования — искусственные языки. От естественных они отличаются ограниченным числом «слов», значение которых понятно транслятору, и очень строгими правилами записи команд (операторов). Совокупность подобных требований образует синтаксис языка программирования, а смысл каждой команды и других конструкций языка — его семантику. Нарушение формы записи программы приводит к тому, что транслятор не может понять назначение оператора и выдает сообщение о синтаксической ошибке, а правильно написанное, но не отвечающее алгоритму использование команд языка приводит к семантическим ошибкам (называемым еще логическими ошибками или ошибками времени выполнения).
Напомню, что процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок — отладкой.
5.2. Трансляторы
Для перевода программы с языка программирования в машинные коды, понятные компьютеру, существуют специальные программы – трансляторы. Трансляторы бывают двух видов: интерпретаторы и компиляторы.
Интерпретаторы переводят в машинный код (или некое промежуточное представление) и сразу выполняют каждый оператор программы. Причем только после того, как текущий оператор успешно выполнен, интерпретатор перейдет к следующему. При этом если один и тот же оператор должен выполняться в программе многократно, интерпретатор всякий раз будет выполнять его так, как будто встретил впервые. Поэтому недостатком интерпретатора является то, что программы, в которых требуется осуществить большой объем повторяющихся вычислений, могут работать медленно. Можно сказать, что интерпретатор моделирует некую виртуальную вычислительную машину, для которой базовыми инструкциями служат не элементарные команды процессора, а операторы языка программирования. Для выполнения этой же программы на другом компьютере, там также должен быть установлен интерпретатор.
С помощью интерпретатора допустимо в любой момент остановить работу программы, исследовать содержимое памяти, организовать диалог с пользователем, выполнить сколь угодно сложные преобразования данных и при этом постоянно контролировать состояние окружающей программно-аппаратной среды, благодаря чему достигается высокая надежность работы. Интерпретатор при выполнении каждого оператора проверяет множество характеристик операционной системы и при необходимости максимально подробно информирует разработчика о возникающих проблемах. Кроме того, интерпретатор очень удобен для использования в качестве инструмента изучения программирования, так как позволяет понять принципы работы любого отдельного оператора языка.
Компиляторы переводят весь текст программы в машинный код, затем его можно использовать отдельно от исходного текста. Компиляторы полностью просматривают весь текст программы (исходный код) в поисках синтаксических ошибок, выполняют определенный смысловой анализ и затем автоматически переводят на машинный язык — генерируют машинный код. Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы (например, с помощью инструкций, ориентированных на конкретный процессор, путем исключения ненужных команд, промежуточных вычислений и т. д.). В результате законченная программа получается компактной и эффективной, работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код.
Основной недостаток компиляторов — трудоемкость трансляции языков программирования, ориентированных на обработку данных сложной структуры, часто заранее неизвестной или динамически меняющейся во время работы программы. Тогда в машинный код приходится вставлять множество дополнительных проверок, анализировать наличие ресурсов операционной системы, динамически их захватывать и освобождать, формировать и обрабатывать в памяти компьютера сложные объекты, что на уровне жестко заданных машинных инструкций осуществить довольно трудно, а для ряда задач практически невозможно.
В реальных системах программирования перемешаны технологии и компиляции и интерпретации. В процессе отладки программа может выполняться по шагам, а затем компилироваться в машинный код.