- •Для школьников, студентов и начинающих 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. Предметный указатель
-
Нерассмотренные возможности Паскаля
Вы узнали о Паскале самое основное и распространенное. Однако это составляет, дай бог, одну третью часть всех богатств Паскаля. Оставшиеся 2/3 не изложены мной, так как они или менее часто употребляются, или слишком сложны для вводного курса. Еще одна причина - многие из них имеют дело с низкоуровневыми и чувствительными ресурсами компьютера, а современные компьютеры и операционные системы имеют тенденцию запрещать программисту прямое обращение к этим ресурсам. Поэтому я ограничусь кратким обзором этих возможностей. Интересующихся же я отсылаю к книге Полякова, указанной в списке литературы.
Модуль Graph. Подобно курсору в текстовом режиме, в графическом режиме есть свой графический курсор (невидимый). Существует несколько процедур, удобно рисующих с помощью этого курсора отрезки и ломаные. Имеется возможность использовать больше, чем 16 цветов. Можно использовать для заливки ваши собственные узоры. Можно использовать так называемые видеостраницы, которые ускоряют вывод на экран графической информации. Можно организовать на экране несколько графических окон, в каждом из которых в независимой системе координат отображать свою графическую информацию. Можно более тонко управлять выводом на экран векторных шрифтов, устанавливать собственные шрифты. Можно устанавливать разные видеорежимы и использовать свои видеодрайверы.
Модуль CRT. Подобно модулю Graph, организующему графические окна, модуль CRT может организовывать текстовые окна, может менять количество букв в строке с 80 на 40, раздвигать и сдвигать текстовые строки, менять яркость текста или делать его мигающим.
Модуль Overlay. Если в результате компиляции вашей длинной паскалевской программы программа на машинном языке получается очень большая, она может и не уместиться в оперативной памяти компьютера, а значит и не сможет выполниться. Модуль Overlay позволяет откомпилировать вашу программу по частям, каждую часть записав в отдельный исполнимый файл. Теперь при выполнении откомпилированной программы, если память забита, в нее не загружаются те части программы, которые в данный момент не нужны, а когда в них возникает необходимость, из памяти выгружаются, чтобы освободить им место, отработавшие части.
Файлы. Кроме текстовых файлов Паскаль различает еще два типа файлов: типизированные и бестиповые. Типизированный файл Паскаль рассматривает, как цепочку данных определенного типа (например, чисел типа Integer или записей заданной структуры). Бестиповой файл Паскаль рассматривает, как длинную цепочку битов, предназначенную для ввода в определенное место оперативной памяти, или наоборот – полученную в результате записи определенной области оперативной памяти на диск.
При работе с файлами и каталогами Паскаль позволяет:
-
создавать, переименовывать и уничтожать файлы
-
создавать и уничтожать каталоги
-
определять текущий каталог
-
устанавливать текущий каталог
Модуль DOS согласно своему названию позволяет программисту использовать в паскалевской программе многие возможности и команды операционной системы MS-DOS, а именно:
-
определять размер дисков и свободного места на диске
-
искать файлы
-
определять их атрибуты
-
анализировать полное имя файла (дорожку)
-
работать с прерываниями DOS
-
организовывать субпроцессы и резидентные программы
Ключи компиляции. В 4.2 мы уже рассматривали ключ компиляции {$I…….}, который позволял включать в программу в качестве фрагмента программный текст из другого файла. Для других целей существуют другие ключи компиляции, которые называются так потому, что используются Паскалем во время компиляции для настройки работы компьютера с программой и для настройки режима компиляции. Эти ключи можно узнать по конструкции {$…….}, где вместо стоит латинская буква.
Процедуры и функции. Паскаль позволяет использовать процедуры и функции, написанные на языке Ассемблера и предварительно откомпилированные.
Паскаль позволяет хранить процедуры и функции в памяти не только, как составные части программы, но и как данные. Для этого используется специальный тип данных – процедурный. Имена процедур и функций могут служить параметрами в списках параметров других процедур и функций. Это позволяет организовать удобную математическую обработку данных.
Математические возможности Паскаля включают действия над двоичным представлением данных.
Объекты. Введение процедур в программирование резко повысило надежность создаваемых больших программ и их обозримость, сделало сам процесс программирования более удобным. Следующим шагом на пути совершенствования программирования стало введение объектов. Объект – это синтез данных и процедур, которые эти данные обрабатывают. Структура объекта такая же, как и у записи (record), только вдобавок к полям для данных имеются поля для процедур и функций. Вот пример записи типа объекта:
TYPE X1 = OBJECT
A :Integer;
B :String;
Procedure C(f:Char);
Function D:Word
END
Объекты в программировании напоминают объекты реального мира. Например, чтобы описать стенные часы, мы должны описать совокупность их составных частей (шестеренки, маятник и прочее – в общем, «данные») плюс совокупность процессов взаимодействия этих частей (как качается маятник, как шестеренка цепляет шестеренку и так далее – в общем «процедуры и функции»).
Типичный пример объекта в программировании – окно в программе Windows. Чтобы заставить окно на экране функционировать, как надо, программисту пришлось описать его размер, цвет, толщину рамки и прочее (данные) плюс процессы перетаскивания его по экрану, изменения размера и прочее (процедуры и функции).
Низкоуровневое программирование. Наиболее эффективные программы пишутся на языке низкого уровня Assembler, но на этом языке неудобно создавать большие программы. Профессиональный программист знает, какой участок его паскалевской программы наименее эффективен (например, выполняется медленно). Он может записать этот участок на Ассемблере и вставить в паскалевскую программу. Более того, он может вставить в паскалевскую программу участок на машинном языке.
Вы можете работать не с переменными величинами, а непосредственно с участками оперативной памяти и видеопамяти компьютера, задавая их адреса в шестнадцатеричной системе счисления. Все это увеличивает эффективность работы программы, но лишает вас защитных механизмов Паскаля – в случае малейшей ошибки ваша программа зависнет, и никто не скажет вам почему.