- •Для школьников,
- •Студентов
- •И начинающих
- •Часть I. Необходимые сведения о компьютере и программе 8
- •Глава 0. Первое представление о компьютере и программе 9
- •Глава 1. Программа и программирование 12
- •Глава 2. Устройство и работа компьютера 21
- •Часть II. Программирование на Паскале – первый уровень 29
- •Глава 0. Простые (линейные) программы. Операторы ввода-вывода. Переменные величины 30
- •Часть III. Программирование на Паскале – второй уровень 101
- •Глава 0. Алфавит и ключевые слова Паскаля 102
- •Глава 1. Работа с разными типами данных Паскаля 104
- •Глава 2. Процедуры и функции с параметрами 123
- •Глава 3. Строгости Паскаля 133
- •Глава 4. Другие возможности Паскаля 145
- •Часть IV. Работа в Паскале на компьютере 157
- •От автора
- •Предисловие
- •0.1.Кому нужна эта книга?
- •0.2.Почему Паскаль?
- •0.3.Какой из Паскалей?
- •0.4.Краткое содержание с рекомендациями
- •Часть III. Программирование на Паскале – второй уровень. Цели этой части:
- •Часть I. Необходимые сведения о компьютере и программе
- •Глава 0.Первое представление о компьютере и программе
- •0.1.Что умеет делать компьютер
- •0.2.Что такое компьютер. Первое представление о программе.
- •0.3.Как человек общается с компьютером
- •Глава 1.Программа и программирование
- •1.1.Список команд. Командный и программный режимы
- •Последовательность работы человека с роботом
- •1.2.Что важно знать о программе
- •1.3.Понятие о процедуре. Может ли робот поумнеть?
- •1.4.Программа для компьютера на машинном языке
- •1.5.Языки программирования
- •1.6.Пример настоящей программы для компьютера на языке Лого
- •1.7.Последовательность работы программиста на компьютере
- •1.8.Основные приемы программирования
- •Глава 2.Устройство и работа компьютера
- •2.1.Как устроен и работает компьютер
- •2.1.1.Порядок обмена информацией между устройствами компьютера
- •2.2.Устройство и размеры оперативной памяти
- •2.3.Взаимодействие программ в памяти
- •2.4.Внешние устройства компьютера
- •2.4.1.Устройства ввода
- •Устройства вывода
- •Внешняя память
- •2.5.Кодирование информации в компьютере
- •Часть II. Программирование на Паскале – первый уровень
- •Глава 0.Простые (линейные) программы. Операторы ввода-вывода. Переменные величины
- •0.1.Процедура вывода Write
- •8 'Котят' 3*3 'щенят'
- •0.2.Первая программа на Паскале
- •Точкой с запятой необходимо отделять операторы друг от друга. Служебные слова begin и end от операторов точкой с запятой отделять не нужно.
- •0.3.Выполняем первую программу на компьютере
- •0.4.Процедура вывода WriteLn. Курсор
- •0.5.Переменные величины. Оператор присваивания
- •0.6.Описания переменных (var)
- •0.7.Что делает оператор присваивания с памятью
- •0.7.1.Оператор присваивания меняет значение переменной величины
- •0.8.Имена переменных
- •0.9.Математика. Запись арифметических выражений
- •0.10.Вещественные числа в Паскале
- •Три совета
- •0.11.Порядок составления простой программы Задача:
- •Порядок составления программы:
- •5. Теперь нужно задать компьютеру действия, которые нужно проделать с исходными данными, чтобы получить результат.
- •0.12.Операторы ввода данных ReadLn и Read.
- •0.13.Интерфейс пользователя
- •0.14.Строковые переменные
- •0.15.Диалог с компьютером
- •0.16.Константы
- •Глава 1.Разветвляющиеся программы
- •1.1.Условный оператор if или как компьютер делает выбор
- •1.2.Правила записи оператора if
- •1.3.Составной оператор
- •1.4.Ступенчатая запись программы
- •1.5.Вложенные операторы if. Сложное условие в операторе if. Логические операции
- •1.6.Символьный тип данных Char
- •1.7.Оператор варианта case
- •Глава 2.Циклические программы
- •2.1.Оператор перехода goto. Цикл. Метки
- •2.2.Выход из цикла с помощью if
- •2.3.Оператор цикла repeat
- •2.4.Оператор цикла while
- •2.5.Отличия операторов repeat и while
- •2.6.Оператор цикла for
- •Глава 3.Типичные маленькие программы
- •3.1.Вычислительная циклическая программа
- •3.2.Роль ошибок
- •3.3.Счетчики
- •3.4.Сумматоры
- •3.5.Вложение циклов в разветвления и наоборот
- •3.6.Вложенные циклы
- •3.7.Поиск максимального из чисел
- •Глава 4.Процедуры
- •4.1.Компьютер звучит
- •4.2.Простейшие процедуры
- •Программа 1
- •Программа 2
- •Программа 3
- •4.3.Процедуры и операторы
- •4.4.Стандартные процедуры Halt и Exit
- •Глава 5.Графика
- •5.1.Стандартные модули
- •5.2.Стандартный модуль Graph, текстовый и графический режимы
- •5.2.1.Текстовый и графический режимы
- •5.2.2.Переключение между текстовым и графическим режимами
- •5.3.Рисуем простейшие фигуры
- •5.4.Работа с цветом. Заливка. Стиль линий и заливки
- •5.5.Используем в рисовании переменные величины
- •5.6.Использование случайных величин при рисовании
- •5.7.Движение картинок по экрану
- •Глава 6.Создаем первую большую программу
- •6.1.Постановка задачи
- •6.2.Программирование по методу “сверху-вниз”
- •6.3.Сначала – работа над структурой программы
- •6.4.Зачем переменные вместо чисел
- •6.5.Записываем программу целиком
- •6.6.Порядок описания переменных, процедур и других конструкций Паскаля
- •6.7.Управление компьютером с клавиатуры. Функции ReadKey и KeyPressed
- •6.8.Буфер клавиатуры
- •6.9.Гетерархия. Задание на игру “Торпедная атака”
- •Часть III. Программирование на Паскале – второй уровень
- •Глава 0.Алфавит и ключевые слова Паскаля
- •0.1.Алфавит
- •0.2.Ключевые слова
- •0.3.Использование пробела
- •Глава 1.Работа с разными типами данных Паскаля
- •1.1.Список типов
- •Комментарии к списку типов
- •1.2.Числовые типы
- •1.3.Массивы
- •1.3.1.Переменные с индексами
- •1.3.2.Одномерные массивы
- •1.3.3.Двумерные массивы
- •1.3.4.Какие бывают массивы
- •1.4.Определения констант
- •1.5.Типизированные константы
- •1.6.Придумываем типы данных
- •1.7.Логический тип Boolean
- •1.8.Перечислимые типы
- •1.9.Ограниченный тип (диапазон)
- •1.10.Действия над порядковыми типами
- •1.11.Символьный тип Char. Работа с символами
- •1.12.Строковый тип String. Работа со строками
- •1.13.Записи
- •1.14.Множества
- •1.15.Расположение информации в оперативной памяти. Адреса
- •1.16.Ссылки
- •Глава 2.Процедуры и функции с параметрами
- •2.1.Процедуры с параметрами
- •2.2.Функции
- •2.3.Подпрограммы. Локальные и глобальные переменные
- •2.4.Массивы как параметры
- •2.5.Параметры-значения и параметры-переменные
- •2.6.Индукция. Рекурсия. Стек
- •2.7.Сортировка
- •Глава 3.Строгости Паскаля
- •3.1.Структура программы
- •3.2.Структура процедур и функций
- •3.3.Выражения
- •3.4.Совместимость типов
- •3.5.Форматы вывода данных
- •3.6.Переполнение ячеек памяти
- •3.7.Дерево типов
- •3.8.Синтаксисические диаграммы Паскаля
- •Глава 4.Другие возможности Паскаля
- •4.1.Работа с файлами данных
- •4.2.Вставка в программу фрагментов из других программных файлов
- •4.3.Модули программиста
- •4.4.Дополнительные процедуры и функции модуля Graph
- •4.5.Копирование и движение областей экрана
- •4.6.Вывод текста в графическом режиме
- •4.7.Управление цветом в текстовом режиме (модуль crt)
- •4.8.Работа с датами и временем (модуль dos)
- •4.9.Нерассмотренные возможности Паскаля
- •4.10.Миг между прошлым и будущим
- •Часть IV. Работа в Паскале на компьютере
- •Что нужно знать и уметь к моменту выполнения первой программы?
- •Порядок работы в Паскале
- •(1) Запуск Паскаля
- •(2) Начало работы. Ввод программы. Выход из Паскаля
- •(3) Сохранение программы на диске. Загрузка программы с диска
- •(4) Выполнение программы
- •(5) Исправление ошибок. Отладка программы.
- •Пошаговый режим
- •Работа с окнами пользователя и отладчика
- •Отладка больших программ
- •Работа с несколькими окнами.
- •Копирование и перемещение фрагментов текста
- •Обзор популярных команд меню
- •Создание исполнимых файлов (exe)
- •Приложения. Справочный материал п1. Как вводить программу в компьютер или работа с текстом в текстовом редакторе
- •Работа с одной строкой текста
- •Работа с несколькими строками
- •Собственно работа с несколькими строками.
- •П2. Файловая система магнитного диска
- •Имена файлов и каталогов
- •Пример структуры каталогов на диске
- •0.1.1.Логические диски. Путь (дорожка) к файлу
- •П3. Список некоторых операций, процедур и функций Паскаля
- •Математика
- •Модуль crt
- •Модуль Graph
- •П4. Произношение английских слов
- •П5. Решения заданий
- •П6. Список литературы
- •П7. Предметный указатель
2.5.Кодирование информации в компьютере
Поговорим о том, как физически представлена информация в компьютере. Вот на листе учебника буквы представлены типографской краской, в человеческом мозге информация представлена электрическими импульсами, которые передаются из одной нервной клетки мозга в другую. В компьютере принят тот же способ представления, что и в мозге - из одного устройства компьютера в другое и внутри устройств информация передается электрическими импульсами. Посмотрим поподробнее, как электрические импульсы несут информацию.
Прежде всего заметим, что информация в компьютере - это программы или данные, с которыми эти программы работают.
Из чего состоит программа? Программа на языке программирования состоит из команд, записанных при помощи букв, цифр, знаков математических действий, знаков препинания и других символов4. Будем понимать под символом любой знак (букву, цифру, знак математического действия, знак препинания и др.), который понимает компьютер. Большинство символов вы можете видеть на клавиатуре.
Из чего состоят данные? Если это числовые или текстовые данные, то они тоже состоят из символов5. О графических данных (изображениях) и звуке поговорим чуть ниже.
Таким образом, значительная часть информации в компьютере состоит из символов. Посмотрим, как в компьютере представлены символы. Для этого вспомним, как кодируются символы в азбуке Морзе, активно использовавшейся не так давно для передачи сообщений на расстояние. Каждый символ (буква, цифра) представлен в ней цепочкой точек и тире. Например, буква А представлена, как .-, буква Ч - как ---. . В компьютере каждый символ тоже кодируется, но по-другому – цепочкой из восьми единиц и ноликов. Например, буква А представлена, как 10000000, буква Ч - как 10010111, а цифра 7, как 00110111.
Кстати, вот полезная задачка для будущего программиста: Сколько всего символов можно закодировать цепочкой из восьми единиц и ноликов?
Пока мы с вами говорили о символах и их кодировании безотносительно к тому, какими физическими процессами они представлены в компьютере. Мы были на так называемом «логическом» уровне. Теперь перейдем на физический уровень. Пусть память передает на принтер букву Ч. В этом случае она посылает по шине в течение, скажем, восьми микросекунд, серию из восьми электрических импульсов или промежутков между импульсами:
Первая микросекунда - импульс
Вторая микросекунда - промежуток
Третья микросекунда - промежуток
Четвертая микросекунда - импульс
Пятая микросекунда - промежуток
Шестая микросекунда - импульс
Седьмая микросекунда - импульс
Восьмая микросекунда - импульс
Как видите, последовательность импульсов и промежутков в серии соответствует последовательности единиц и ноликов в коде буквы Ч. Величина импульса не играет никакой роли, все импульсы в микросхемах компьютера имеют обычно одну и ту же величину, скажем 3 вольта.
Таким же примерно образом обмениваются группами из 8 импульсов все устройства компьютера. В памяти эти группы живут в "замороженном" виде. В каждом байте оперативной памяти или памяти на диске умещается ровно одна такая группа, поэтому говорят, что устройства обмениваются байтами информации.
В оперативной памяти единичка представляется наличием электрического потенциала в определенной точке электронной микросхемы, а нолик - его отсутствием. В памяти на магнитных дисках единичка представляется наличием намагниченности в определенной точке диска, а нолик - его отсутствием или намагниченностью в другом направлении. В компакт-дисках единичка - это бороздка или бугорок в определенной точке диска, а нолик - его отсутствие, то есть участочек с зеркальной поверхностью.
Когда кодируется изображение, то кодируется информация о каждом пикселе изображения (в виде группы единиц и ноликов). Например,
Код 111 - пиксел горит белым цветом
Код 100 - пиксел горит синим цветом
Код 010 - пиксел горит красным цветом
Код 001 - пиксел горит зеленым цветом
. . . . . . . . . . . . . . . . . . . .
Код 000 - пиксел не горит (черный)
Если программа предназначена для распечатки изображения с экрана монитора на цветном принтере, то она просто посылает на принтер по очереди коды информации о каждом пикселе изображения.
При кодировании звука используются разные способы, но факт то, что результатом кодировки являются все те же группы единиц и ноликов.
В заключение отмечу две неточности в моем изложении материала этого пункта. Я говорил, что единички в разных устройствах компьютера представляются наличием потенциала или намагниченности или бороздок и т.д., а вот нолики - их отсутствием. На самом деле в отдельных устройствах может быть и наоборот - единички это отсутствие, а нолики - наличие. Это не принципиально.
Второе: коды чисел в компьютере часто не являются совокупностью кодов цифр, эти числа образующих. Так, число 88 часто не представляется цепочкой 00111000 00111000, а для кодирования чисел используется другой, более экономный способ.
Вывод – любая информация в компьютере закодирована в виде цепочек, состоящих из единиц и нулей, и в таком закодированном виде передается внутри устройств и между устройствами компьютера. Обычно длина цепочки равна 8 и тогда такая цепочка называется байтом, а каждый из восьми ноликов или единичек называется битом. Таким образом, 1 байт = 8 битов.
________ _ _________
Мне кажется, тех сведений, которые вы получили в этой части, достаточно для того, чтобы приступить к сознательному программированию на Паскале.