- •Наука информатика Глава 1. Информатика — предмет и задачи
- •1.1. Появление и развитие информатики
- •1.2. Структура информатики
- •1.3. Влияние информатики на развитие общества: информационные революции
- •1.4. Информационные технологии: этапы развития
- •Глава 2. Технические средства информатики
- •2.1. Классификация эвм
- •2.2. Архитектура эвм
- •2.3. Основные характеристики вычислительной техники
- •2.4. Архитектура персонального компьютера
- •2.4.1. Системный блок
- •2.4.2. Материнская плата
- •2.4.3. Внутренняя память
- •2.4.4. Внешняя память
- •2.4.5. Устройства ввода
- •2.4.6. Устройства вывода
- •Глава 3. Программные средства информатики.
- •3.1. Классификация программных продуктов
- •3.2. Системное программное обеспечение
- •3.3. Пользовательское программное обеспечение
- •3.4. Инструментарий технологии программирования
- •II. Информация и информационные процессы. Глава 1. Информация.
- •1.1. Информация и данные.
- •1.2. Количественные характеристики информации.
- •Синтаксическая мера информации.
- •Семантическая мера информации
- •1.3. Качественные характеристики информации.
- •Глава 2. Технологии работы с информацией.
- •2.1. Технология кодирования информации
- •Кодирование чисел
- •Двоичная система счисления
- •Кодирование музыки
- •Кодирование текста
- •Кодирование изображений
- •Кодирование фильмов
- •2.2. Технология упаковки информации
- •1. Для любой последовательности данных существует теоретический предел сжатия, который не может быть превышен без потери части информации.
- •2. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой он обеспечит лучшую степень сжатия, чем другие методы.
- •3. Для любого алгоритма сжатия можно указать такую последовательность данных, для которой данный алгоритм вообще не позволит получить сжатия.
- •Сжатие с потерей информации
- •Обратимое сжатие информации
- •2.3. Технология шифрования информации
- •Алгоритмы симметричного шифрования
- •Алгоритмы ассиметричного шифрования
- •Сравнение алгоритмов шифрования
- •Глава 3. Информационные процессы и информационные системы.
- •3.1. Информационная деятельность и информационные процессы
- •Получение информации
- •Передача и хранение информации
- •Обработка и преобразование информации
- •3.2. История развития вычислительных устройств
- •3.3. Информационные системы
- •Задачи, решаемые информационными системами
- •Алгоритмизация и программирование. Глава 1. Технология решения задач
- •1.1. Этапы решения задачи на эвм
- •1.2. Категории специалистов, занятых разработкой и сопровождением программного обеспечения
- •Глава 2. Алгоритмизация
- •2.1. Понятие, определение и свойства алгоритма
- •2.2. Способы записи алгоритмов
- •2.3. Виды алгоритмов
- •Глава 3. Программирование
- •Виды языков программирования
- •3.2. Основные понятия программирования
- •3.3. Основные конструкции языка программирования на примере basic
- •3.4. Жизненный цикл программного продукта
- •Основы информационной культуры Глава 1. Информационное общество
- •1.1. Представление об информационном обществе и информационной культуре
- •1.2. Информационные ресурсы и рынок информационных услуг
- •Глава 2. Всемирная компьютерная сеть
- •2.1. Разновидности компьютерных сетей
- •Модель взаимодействия «клиент – сервер».
- •4. Смешанные топологии
- •2.2. История Интернет
- •2.3. Структура Интернет
- •2.4. Сервисы Интернет Электронная почта
- •Поисковые системы
- •Телеконференции
- •Чаты (irc)
- •Содержание
Глава 3. Программирование
Виды языков программирования
Язык программирования — это фиксированная система обозначений и правил, предназначенная для описания алгоритмов и структур данных.
Все языки программирования делятся на два вида — языки низкого и высокого уровня.
Языки низкого уровня (law-level languages) — это средство записи инструкций для компьютера на аппаратном языке, т.е. в машинных кодах (в виде последовательности нулей и единиц). Языки низкого уровня жестко ориентированы на определенный тип аппаратуры (систему команд процессора, у каждого типа процессоров — свой машинный код).
Языки высокого уровня (high-level languages) – это языки программирования, позволяющие записывать программу в удобном для человека виде. Данные языки ориентированы не на систему команд того или иного процессора, а на систему операторов (команд), характерных для записи определенного класса алгоритмов.
Языки высокого уровня проще в обращении, поскольку их задача состоит в обслуживании потребностей программиста, а не в выявлении возможностей компьютера. Написанные на этих языках программы следует перекодировать — перевести на машинный язык (machine code), так, чтобы до запуска программ компьютер мог их понять. Поэтому в системы программирования на ЯВУ входит либо интерпретатор(interpreter) языка, либокомпилятор (compiler).
Работу интерпретатораможно сравнить с синхронным переводом — компьютерная программа выполняет программу, написанную на языке программирования без её предварительного перевода в машинный код. Программа действует значительно медленнее. Интерпретатор обычно позволяет оператору прерывать программу и проверять или изменять величины или переменные.
Компилятор работает как литературный переводчик. Это компьютерная программа, переводящая программу, написанную на языке высокого уровня, в подробные команды, которые компьютер может выполнить. Программа должна быть транслирована (переведена) в набор команд до того, как она начнет выполняться; однако, будучи один раз транслирована, она может запускаться неограниченное количество раз.
Низкоуровневые языки, близкие к машинному, позволяют создать программы, которые запускаются быстрее и позволяют эффективнее использовать ресурсы компьютера.
Проведём небольшой исторический экскурс (от машинных кодов до языков программирования высокого уровня).
Программа для машин первого поколения вводилась с перфоленты, а данные — с перфокарт. Нетрудно догадаться, что программированием занимались профессора математики. Необходимо было знать всю систему команд компьютера в непривычных человеку двоичной, восьмеричной и шестнадцатеричной системах счисления, при этом свободно совершая над этими числами сложные математические преобразования. Людей, занимающихся этим, называли не иначе как «шаманами в белых халатах».
Первым шагом вперед был отказ от числового обозначения команд. Каждая команда стала обзначаться мнемоническим буквенным кодом: так появился язык ассемблера. Программы, переводящие язык ассемблера на машинный код называются ассемблерами, а сам процесс — ассемблированием.
mov ah, 9
mov al, 33
mov bl, 1
mov bh,0
int 10h
Пример 1: Отрывок кода на языке ассемблера
Данный пример демонстрирует язык ассемблера. Этот отрывок кода помещает синий символ восклицательного знака в текущую позицию курсора на экран. В регистры процессора заносится номер функции, код символа, цвет и номер видеостраницы, а затем вызывается прерывание BIOS (Basic Input-Output System — Базовая Система Ввода Вывода) отвечающее за вывод изображения на экран. Это, несомненно, гораздо понятнее и проще машинных кодов, но чтобы доказать многословность и сложность, которая все ещё присуща языку ассемблера, достаточно привести пример, выполняющий то же действие, но записанный на языке высокого уровня, например Паскале:
TextColor(1);
Write('!');
Также все еще необходимо было владеть шестнадцатеричной и двоичной арифметикой, знать регистры процессора и функции прерываний.
Языки высокого уровня были следующей ступенью развития средств программирования. Существует огромное количество языков программирования: от 2000 до 4000. Языки высокого уровня подразделяются на группы по типу парадигмы, которую поддерживают. Существуют императивные языки, функциональные языки, логические языки, объектно-ориентированные языки, а также многие другие. Итак, с появлением языков высокого уровня программы стали выглядеть более понятно.
Императивные языки предоставляют собой мощное средство программирования, с помощью которого можно решить большинство задач. Но прогресс не стоит на месте, и на смену императивной пришла новая, объектно-ориентированная концепция программирования. Данная концепция заслуженно пользуется самой большой популярностью на IBM-совместимых микрокомпьютерах. Подобный подход позволяет абстрагироваться от машины и мыслить в терминах задачи, что является наиглавнейшим преимуществом объектно-ориентированного подхода.
В операционной системе Windows фирмы Microsoft на практике реализована концепция объектно-ориентированного программирования. Windows является графической системой. В ней реализован стандартный пользовательский интерфейс, доступный каждой прикладной программе через вызов функций Windows-API, представляющие собой набор классов описывающих объекты системы, например, кнопку, или поле ввода. Данный подход имеет ряд преимуществ. При использовании обычной текстовой операционной системы, например, MS-DOS разработчику приходилось каждый раз программировать пользовательский интерфейс с нуля. Задача значительно усложнялась, если приходилось проектировать графический интерфейс с пользователем. Так как программа MS-DOS работает непосредственно с аппаратурой компьютера (в частности, с видеоконтроллером), она должна учитывать наличие у потребителей большого количества самой разнообразной и несовместимой аппаратуры. Windows дисциплинирует разработчика приложений, предлагая стандарт на диалоговый интерфейс с пользователем. Если приложение будет соответствовать стандарту, на его изучение и освоение со стороны пользователя будет затрачено минимальное время.
Структура программы для Windows существенно отличается от классической программы. Костяк программы представляет собой цикл обработки сообщений. Сообщения — это способ, при помощи которого в Windows организован обмен информацией между отдельными подсистемами, приложениями или между отдельными модулями одного и того же приложения. Windows содержит в себе системную очередь сообщений, куда последние могут поступать от драйверов устройств ввода/вывода, а также или от приложений, а также несколько очередей сообщений для каждого приложения. Окно приложения Windows содержит множество органов управления. Действие, выполненное над любым из них, приводит к генерации соответствующего сообщения. Приложение Windows должно постоянно анализировать содержимое очереди и обрабатывать полученные сообщения. Такой механизм значительно упрощает программирование, так как приложение не занимается отслеживанием устройств ввода, а уже получает сообщение о том, что, например, нажата кнопка на панели или выбран пункт меню.
Несмотря на очевидную простоту и удобство программирование для Windows считается довольно сложным. Одновременно с увеличением возможностей увеличилась сложность и громоздкость кода программы. Значительную часть времени стало занимать проектирование и описание в программе ее интерфейса, внешнего вида. В связи с этим были созданы Системы Быстрого Проектирования Приложений — RAD. Рассмотрим такую систему на примере, пожалуй, самого популярного пакета MS Visual C++.
Visual C++ представляет собой сложный инструмент для создания приложений Windows. Несмотря на то, что сложность программ увеличилась, интегрированная среда MS Developer Studio пакета Visual C++ позволяет в считанные секунды создать вполне работоспособное приложение Windows. Включенная в состав VC++ библиотека классов Microsoft Foudation Classes (MFC) уже стала фактическим стандартом для разработчиков компиляторов на языке С++. Визуальные средства разработки интерфейса превращают это сложное занятие в увлекательную игру. VC++ не просто компилятор программного кода — это генератор программного кода. С его помощью можно в считанные минуты создать приложение Windows из готовых фрагментов программного кода. Генератор приложений формирует прототип вполне работоспособной программы.
Несмотря на то, что концепция объектно-ориентированного программирования появилась довольно давно, системы построенные на ее основе пользуются сейчас наибольшей популярностью. Интеграция этой концепции в операционную систему позволило создать удобный и эффективный программный интерфейс, а сочетание его с RAD системами открыло дорогу потоку мощных, удобных, дружественных пользователю приложений.
Другие виды языков программирования используются для решения более узких задач (например, язык запросов(query language);генератор программ печати отчетов(report program generator)).