- •Для школьников,
 - •Студентов
 - •И начинающих
 - •Часть 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.1 - определить без компьютера, что будет печатать следующая программа:
LABEL m1,met5; VAR n,k : Integer; BEGIN n:=10;
k:=0;
WriteLn('Считаем зайцев' );
met5: Write(n);
n:=n+k;
goto m1;
n:=n+1;
m1: Write(' зайцев ');
ReadLn;
k:=k+1;
goto met5;
WriteLn('Посчитали зайцев')
END.
Ответ: Эта программа должна печатать:
Считаем зайцев 10 зайцев
10 зайцев
11 зайцев
13 зайцев
16 зайцев
20 зайцев
………
С ответом у вас не сходится. Значит, вы чего-то не понимаете. Чего? Чтобы определить это, вы вводите программу в компьютер. Он печатает все, как в ответе. Почему? Вероятно, вы не понимаете, как изменяются в процессе выполнения программы значения переменных n и k. Хорошо бы можно было подсмотреть за их значениями в оперативной памяти. Хорошо бы также напечатанные результаты не пропадали с экрана, а были бы всегда перед глазами.
Проделайте следующее. (При дальнейшем объяснении я буду предполагать, что вы умеете обращаться с несколькими окнами на экране. Кто не умеет, читайте следующий параграф.)
Сузьте окно вашей программы так, чтобы оно освободило примерно половину ширины экрана. Далее - DebugOutput. Перед вами появляется черное окно пользователя, в котором вы привыкли наблюдать результаты, но в уменьшенном виде. Измените его размер и отбуксируйте на свободное место экрана.
Далее - DebugWatch. Перед вами появляется окно отладчика, в котором вы будете наблюдать значения переменных величин в оперативной памяти. Измените его размер и отбуксируйте на оставшуюся часть экрана.
Вот как будет выглядеть ваш экран после всех манипуляций (и уже после нескольких выполнений цикла в пошаговом режиме, о чем дальше):
	
  
	
Вы сами должны сказать Паскалю, за какими переменными хотите следить. Очевидно, в вашем случае это n и k. Ваши действия: DebugAdd watch… ,запишите имя n в открывшемся диалоговом окне и – щелчок по кнопке OK. В окне отладчика появится сообщение n:7 или n:0 или какое-нибудь другое число или сообщение. Не обращайте на это внимания. Повторите всю процедуру с k.
Теперь можно запускать программу на выполнение в пошаговом режиме. Для этого нажмите на F7. Паскаль откомпилирует вашу программу, возможно, изменит значения в окне отладчика и сделает паузу перед началом выполнения программы, подсветив горизонтальной полосой строку BEGIN.
F7. Паскаль, возможно, обнулит значения в окне отладчика. Полоса подсветки прыгает на следующую строку. В ней находится первый исполняемый оператор вашей программы – n:=10.
Итак, правило простое – при нажатии на F7 Паскаль выполняет одну строку программы и подсвечивает ту строку, которой предстоит быть выполненной.
F7. Паскаль выполняет n:=10, в результате чего в окне отладчика значение n меняется на 10, а серая полоса прыгает на строку k:=0.
F7. Паскаль выполняет k:=0, в результате чего в окне отладчика значение k становится равным 0, а полоса прыгает на строку WriteLn('Считаем зайцев' ).
F7. Паскаль выполняет WriteLn('Считаем зайцев' ), в результате чего в окне пользователя появляется напечатанный текст Считаем зайцев, а полоса прыгает на строку met5: Write(n).
F7. Паскаль выполняет Write(n). В окне пользователя в новой строке появляется число 10, так как в оперативной памяти n равно 10 (об этом нам говорит окно отладчика). а полоса прыгает на строку n:=n+k.
F7. Паскаль выполняет n:=n+k, в результате чего в окне отладчика значение n остается равным 10, так как в оперативной памяти k равно 0. Полоса прыгает на строку goto m1.
F7. Паскаль выполняет goto m1. Полоса перепрыгивает на строку m1: Write(' зайцев ').
F7. Паскаль выполняет Write(' зайцев ' ), в результате чего в окне пользователя справа от числа 10 появляется текст зайцев, а полоса прыгает на строку ReadLn.
F7. Паскаль выполняет ReadLn, в результате чего окно пользователя распахивается на весь экран и ReadLn ждет, когда вы нажмете на клавишу ввода. Вы нажимаете – и полоса прыгает на строку k:=k+1.
F7. Паскаль выполняет k:=k+1, в результате чего в окне отладчика значение k меняется на 11. Полоса прыгает на строку goto met5.
F7. Паскаль выполняет goto met5. Полоса перепрыгивает вверх, на строку met5: Write(n).
И так далее.
Если ваша программа рисует что-то в графическом режиме, то, к сожалению, при описанном способе работы картинки видны не будут.
Если в вашей программе есть подпрограммы, то серая полоса проникнет и внутрь подпрограмм и будет скакать там, как ни в чем не бывало. Таким образом, вы сможете анализировать и работу подпрограмм. Если же вы не хотите утомлять себя прыжками внутри подпрограмм, нажимайте не F7, а F8. Тогда Паскаль будет выполнять подпрограмму мгновенно в автоматическом режиме и серая полоса будет путешествовать только внутри основной программы. Вы можете свободно чередовать нажатия F7 и F8. Клавиша F7 будет направлять вас «вглубь» подпрограмм, а F8 - «наружу».
