
- •Для школьников, студентов и начинающих 1999 с,н.Лукин __________________________________________________________ Все права защищены ©
- •Оглавление
- •Часть I. Необходимые сведения о компьютере и программе 8
- •Часть II. Программирование на Паскале – первый уровень 29
- •Часть III. Программирование на Паскале – второй уровень 102
- •Часть IV. Работа в Паскале на компьютере 158
- •От автора
- •Предисловие
- •Кому нужна эта книга?
- •Почему Паскаль?
- •Какой из Паскалей?
- •Краткое содержание с рекомендациями
- •Часть III. Программирование на Паскале – второй уровень. Цели этой части:
- •Часть I. Необходимые сведения о компьютере и программе
- •Первое представление о компьютере и программе
- •Что умеет делать компьютер
- •Что такое компьютер. Первое представление о программе.
- •Как человек общается с компьютером
- •Программа и программирование
- •Список команд. Командный и программный режимы
- •Последовательность работы человека с роботом
- •Что важно знать о программе
- •Понятие о процедуре. Может ли робот поумнеть?
- •Программа для компьютера на машинном языке
- •Языки программирования
- •Пример настоящей программы для компьютера на языке Лого
- •А теперь напишем программу:
- •Последовательность работы программиста на компьютере
- •Основные приемы программирования
- •Устройство и работа компьютера
- •Как устроен и работает компьютер
- •Порядок обмена информацией между устройствами компьютера
- •Устройство и размеры оперативной памяти
- •Взаимодействие программ в памяти
- •Внешние устройства компьютера
- •Устройства ввода
- •Устройства вывода
- •Внешняя память
- •Кодирование информации в компьютере
- •Часть II. Программирование на Паскале – первый уровень
- •Простые (линейные) программы. Операторы ввода-вывода. Переменные величины
- •Процедура вывода Write
- •8 'Котят' 3*3 'щенят'
- •Первая программа на Паскале
- •Точкой с запятой необходимо отделять операторы друг от друга. Служебные слова begin и end от операторов точкой с запятой отделять не нужно.
- •Выполняем первую программу на компьютере
- •Процедура вывода WriteLn. Курсор
- •Переменные величины. Оператор присваивания
- •Описания переменных (var)
- •Что делает оператор присваивания с памятью
- •Оператор присваивания меняет значение переменной величины
- •Имена переменных
- •Математика. Запись арифметических выражений
- •Вещественные числа в Паскале
- •Три совета
- •Порядок составления простой программы Задача:
- •Порядок составления программы:
- •5. Теперь нужно задать компьютеру действия, которые нужно проделать с исходными данными, чтобы получить результат.
- •Операторы ввода данных ReadLn и Read.
- •Интерфейс пользователя
- •Строковые переменные
- •Диалог с компьютером
- •Константы
- •Разветвляющиеся программы
- •Условный оператор if или как компьютер делает выбор
- •Правила записи оператора if
- •Составной оператор
- •Ступенчатая запись программы
- •Вложенные операторы if. Сложное условие в операторе if. Логические операции
- •Символьный тип данных Char
- •Оператор варианта case
- •Циклические программы
- •Оператор перехода goto. Цикл. Метки
- •Выход из цикла с помощью if
- •Оператор цикла repeat
- •Оператор цикла while
- •Отличия операторов repeat и while
- •Оператор цикла for
- •Типичные маленькие программы
- •Вычислительная циклическая программа
- •Роль ошибок
- •Счетчики
- •Сумматоры
- •Вложение циклов в разветвления и наоборот
- •Вложенные циклы
- •Поиск максимального из чисел
- •Процедуры
- •Компьютер звучит
- •Простейшие процедуры
- •Программа 1
- •Программа 2
- •Программа 3
- •Процедуры и операторы
- •Стандартные процедуры Halt и Exit
- •Графика
- •Стандартные модули
- •Стандартный модуль Graph, текстовый и графический режимы
- •Текстовый и графический режимы
- •Переключение между текстовым и графическим режимами
- •Рисуем простейшие фигуры
- •Работа с цветом. Заливка. Стиль линий и заливки
- •Используем в рисовании переменные величины
- •Использование случайных величин при рисовании
- •Движение картинок по экрану
- •Создаем первую большую программу
- •Постановка задачи
- •Программирование по методу “сверху-вниз”
- •Сначала – работа над структурой программы
- •Зачем переменные вместо чисел
- •Записываем программу целиком
- •Порядок описания переменных, процедур и других конструкций Паскаля
- •Управление компьютером с клавиатуры. Функции ReadKey и KeyPressed
- •Буфер клавиатуры
- •Гетерархия. Задание на игру “Торпедная атака”
- •Часть III. Программирование на Паскале – второй уровень
- •Алфавит и ключевые слова Паскаля
- •Алфавит
- •Ключевые слова
- •Использование пробела
- •Работа с разными типами данных Паскаля
- •Список типов
- •Комментарии к списку типов
- •Числовые типы
- •Массивы
- •Переменные с индексами
- •Одномерные массивы
- •Двумерные массивы
- •Какие бывают массивы
- •Определения констант
- •Типизированные константы
- •Придумываем типы данных
- •Логический тип Boolean
- •Перечислимые типы
- •Ограниченный тип (диапазон)
- •Действия над порядковыми типами
- •Символьный тип Char. Работа с символами
- •Строковый тип String. Работа со строками
- •Множества
- •Расположение информации в оперативной памяти. Адреса
- •Процедуры и функции с параметрами
- •Процедуры с параметрами
- •Функции
- •Подпрограммы. Локальные и глобальные переменные
- •Массивы как параметры
- •Параметры-значения и параметры-переменные
- •Индукция. Рекурсия. Стек
- •Сортировка
- •Строгости Паскаля
- •Структура программы
- •Структура процедур и функций
- •Выражения
- •Совместимость типов
- •Форматы вывода данных
- •Переполнение ячеек памяти
- •Дерево типов
- •Синтаксисические диаграммы Паскаля
- •Другие возможности Паскаля
- •Работа с файлами данных
- •Вставка в программу фрагментов из других программных файлов
- •Модули программиста
- •Дополнительные процедуры и функции модуля Graph
- •Копирование и движение областей экрана
- •Вывод текста в графическом режиме
- •Управление цветом в текстовом режиме (модуль crt)
- •Работа с датами и временем (модуль dos)
- •Нерассмотренные возможности Паскаля
- •Миг между прошлым и будущим
- •Часть IV. Работа в Паскале на компьютере
- •Что нужно знать и уметь к моменту выполнения первой программы?
- •Порядок работы в Паскале
- •(1) Запуск Паскаля
- •(2) Начало работы. Ввод программы. Выход из Паскаля
- •(3) Сохранение программы на диске. Загрузка программы с диска
- •(4) Выполнение программы
- •(5) Исправление ошибок. Отладка программы.
- •Пошаговый режим
- •Работа с окнами пользователя и отладчика
- •Отладка больших программ
- •Работа с несколькими окнами.
- •Копирование и перемещение фрагментов текста
- •Обзор популярных команд меню
- •Создание исполнимых файлов (exe)
- •Приложения. Справочный материал п1. Как вводить программу в компьютер или работа с текстом в текстовом редакторе
- •Работа с одной строкой текста
- •Работа с несколькими строками
- •Собственно работа с несколькими строками.
- •П2. Файловая система магнитного диска
- •Имена файлов и каталогов
- •Пример структуры каталогов на диске
- •Логические диски. Путь (дорожка) к файлу
- •П3. Список некоторых операций, процедур и функций Паскаля
- •Математика
- •Модуль crt
- •Модуль Graph
- •П4. Произношение английских слов
- •П5. Решения заданий
- •П6. Список литературы
- •П7. Предметный указатель
-
Устройство и размеры оперативной памяти
Представьте себе тетрадный листок в клеточку. В каждую клетку вы имеете право записать карандашом какую-нибудь букву или цифру или знак + или вообще любой символ, который можно найти на клавиатуре. А можете и стереть ластиком и записать другой символ. Много ли букв можно записать на листе? Ровно столько, сколько на нем клеток.
Оперативная память компьютера устроена аналогично этому листу. Только размер ее гораздо меньше, чем у тетрадного листа, а клеточек гораздо больше, и каждая клеточка называется байтом. Для запоминания слова КОШКА понадобится 5 байтов. На странице вашего учебника около 1000 букв и других символов (включая запятые, точки и пробелы), значит, для запоминания страницы текста нужно 1000 байтов. Вы можете сами подсчитать, сколько текста может запомнить современный компьютер, если я скажу, что его память редко бывает меньше миллиона байтов. (Если запоминаются не текст, а числа, то место в памяти отводится немножко по другим правилам.)
Оперативная память компьютера электронная. Информация хранится в ней в виде электрических импульсов или потенциалов в миниатюрных электронных схемах и передается из одного места в другое со скоростью близкой к скорости света. Запись, стирание, считывание информации из нее осуществляются по приказам процессора в соответствии с программой меньше чем за десятимиллионную долю секунды.
-
Взаимодействие программ в памяти
Этот параграф знать полезно, но пока не обязательно.
Важно помнить, что компьютер работает по программе не только тогда, когда выполняет нашу программу умножения из 2.1, но и до и после этого. Так уж он устроен. Спрашивается, по какой же программе он работает, когда не выполняет нашу. Рассмотрим поподробнее, что происходит в кратко описанный мной в 2.1 период между моментом включения компьютера и моментом начала выполнения нашей программы.
Внутри компьютера в специальном постоянном запоминающем устройстве находится программа самопроверки компьютера. Как только вы включаете компьютер, он всегда начинает выполнять именно ее. Если в результате ее выполнения компьютер решит, что его здоровье в порядке, он продолжает работу и обязательно переписывает в память с винчестера (о котором подробнее - позже) основную часть так называемой операционной системы (ОС) - комплекса программ, предназначенного для того (скажем пока), чтобы обеспечить человеку и созданным им программам нормальную работу на компьютере. Переписав ОС, компьютер сразу же переходит к ее выполнению и в процессе выполнения останавливается на той ее команде, которая приказывает ему ждать указаний от человека, что ему делать дальше. Вы решаете, например, что вам нужно работать с Бэйсиком, вставляете в дисковод дискету с этим языком и нажатием нескольких клавиш указываете компьютеру запустить Бэйсик в работу. После этого процессор переходит к выполнению следующих команд ОС, которые “осознают” ваше указание и выполняют его, в результате чего переписывают (загружают) большую комплексную программу, которой является язык Бэйсик, с дискеты в память и запускают эту программу на выполнение.
Важно понимать, что запуск на выполнение целой программы - Бэйсика явился результатом выполнения очередной команды другой программы - ОС (говорят - ОС вызывает Бэйсик или управление передается Бэйсику). От того, что начал выполняться Бэйсик, ОС не ушла в небытие, она осталась в памяти, притаилась и ждет, когда Бэйсик, как и положено каждой порядочной программе, решив поставленные человеком задачи, закончит свою работу и уступит место. В этот момент ОС как ни в чем не бывало продолжит свою работу с команды, которая следует сразу же за той, что запускала Бэйсик (говорят - управление возвращается к ОС). Выполнив несколько следующих своих команд и поделав маленькие свои дела, ОС снова натыкается на свою команду, которая приказывает компьютеру ждать указаний от человека, что ему делать дальше. На этот раз человек может пожелать поиграть в какую-нибудь игру. ОС переписывает с дискеты или с винчестера в память и затем вызывает программу этой игры. После окончания игры управление снова возвращается ОС и т.д. Так и проходит с утра до вечера работа на компьютере: после выполнения очередного желания человека ОС получает управление, выполняет некоторую подготовительную работу (чистит память и т.п.) и снова ждет от человека новых пожеланий. Операционные системы бывают разные, самые популярные на персональных компьютерах - MS‑DOS и Windows.
А теперь рассмотрим подробнее период между запуском программы-Бэйсика и ее завершением. Получив управление, Бэйсик выполняет некоторые подготовительные действия и останавливается на той своей команде, которая ожидает ввода программы. Вы вводите с клавиатуры свою программу умножения, после чего Бэйсик продолжает работу и следующие его команды отправляют вашу программу с клавиатуры в память. Затем Бэйсик останавливается на другой своей команде, ждущей пожеланий человека. Здесь вы можете пожелать исправлять программу, запустить ее на выполнение, сохранить ее на диске и т.д. Предположим, вы приказываете выполнять программу. Тогда следующие команды Бэйсика, проанализировав ваш приказ, выполняют вашу программу, то есть происходит примерно то, что я подробно описал в 2.1.
Обратите внимание на то, сколько программ находится в этот момент в оперативной памяти. Во-первых, это ОС, которая ждет, когда вам надоест работать на Бэйсике. Во-вторых, это Бэйсик, который выполняет вашу программу, а выполнив, будет ждать от вас дальнейших приказов. И в-третьих, это сама ваша программа умножения. Это обычная практика работы всех компьютеров: в памяти может одновременно находиться от нескольких программ до нескольких десятков. Во многих из них есть команды, которые передают управление другим программам, а затем получают его обратно. Такая передача управления происходит очень часто и зачастую автоматически, без ведома человека. Начинающий программист может ничего этого и не знать. Ему достаточно знать те несколько клавиш, которые он должен нажать, и приказов, которые он должен отдать, чтобы добраться до своего языка программирования и производить там элементарные действия - ввод программы, ее исправление, запуск и т.п.