- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Часть 1. Сведения о компьютере и программе 6
- •Глава 1. Первое представление о компьютере и программе 7
- •Глава 2. Программа и программирование 11
- •Глава 3. Устройство и работа компьютера 22
- •Часть 2. Программирование на Паскале первый уровень 34
- •Глава 4. Простые программы. Операторы ввода-вывода. Переменные величины 35
- •Часть 3. Программирование на Паскале - второй уровень 120
- •Глава 11. Алфавит и ключевые слова Паскаля 121
- •Глава 12. Работа с разными типами данных Паскаля 123
- •Глава 13. Процедуры и функции с параметрами 146
- •Глава 14. Строгости Паскаля 158
- •Глава 15. Другие возможности Паскаля 175
- •Часть 4. Работа в Паскале на компьютере 188
- •Часть 1. Сведения о компьютере и программе
- •Глава 1. Первое представление о компьютере и программе
- •1.1. Что умеет делать компьютер
- •1.2. Что такое компьютер. Первое представление о программе
- •1.3. Как человек общается с компьютером
- •Глава 2. Программа и программирование
- •2.1. Список команд. Командный и программный режимы
- •2.2. Что важно знать о программе
- •2.3. Понятие о процедуре. Может ли робот быть более интеллектуальным?
- •2.4. Программа для компьютера на машинном языке
- •2.5. Языки программирования
- •2 .6. Пример настоящей программы для компьютера на языке Лого
- •2.7. Последовательность работы программиста на компьютере
- •2.8. Основные приемы программирования
- •Глава 3. Устройство и работа компьютера
- •3.1. Как устроен и работает компьютер
- •3.2. Устройство и размеры оперативной памяти
- •3.3. Взаимодействие программ в памяти
- •3.4. Внешние устройства компьютера
- •3.5. Кодирование информации в компьютере
- •Часть 2. Программирование на Паскале первый уровень
- •Глава 4. Простые программы. Операторы ввода-вывода. Переменные величины
- •4.1. Процедура вывода Write
- •8 'Котят' 3*3 'щенят'
- •4.2. Первая программа на Паскале
- •4.3. Выполняем первую программу на компьютере
- •4.4. Процедура вывода WriteLn. Курсор
- •4.5. Переменные величины. Оператор присваивания
- •4.6. Описание переменных (var)
- •4.7. Что делает оператор присваивания с памятью
- •4.8. Имена переменных
- •4.9. Запись арифметических выражений
- •4.10. Вещественные числа в Паскале
- •4.11. Порядок составления простой программы
- •4.12. Операторы ввода данных ReadLn и Read
- •4.13. Интерфейс пользователя
- •4.14. Строковые переменные
- •4.15. Диалог с компьютером
- •4.16. Константы
- •Глава 5. Разветвляющиеся программы
- •5.1. Условный оператор if
- •5.2. Правила записи оператора if
- •5.3. Составной оператор
- •5.4. Ступенчатая запись программы
- •5.5. Вложенные операторы if. Сложное условие в операторе. Логические операции
- •5.6. Символьный тип данных Char
- •5.7. Оператор варианта case
- •1,2 WriteLn('Кошмар!');
- •3 WriteLn('Неважно');
- •5 WriteLn('Молодец!');
- •Глава 6. Циклические программы
- •6.1. Оператор перехода goto. Цикл. Метки
- •6.2. Выход из цикла с помощью if
- •6.3. Оператор цикла repeat
- •6.4. Оператор цикла while
- •6.5. Отличия операторов repeat и while
- •6.6. Оператор цикла for
- •10 Футбол 11 футбол 12 футбол ..... 150 футбол
- •100 Футбол 99 футбол 98 футбол ... 40 футбол
- •Глава 7. Короткие программы
- •7.1. Циклическая программа
- •7.2. Роль ошибок
- •7.3. Счетчики
- •3Адание 46
- •7.4. Сумматоры
- •7.5. Вложение циклов в разветвления и наоборот
- •7.6. Вложенные циклы
- •7.7. Поиск максимального из чисел
- •Глава 8. Процедуры
- •8.1. Компьютер звучит
- •8.2. Простейшие процедуры
- •8.3. Процедуры и операторы
- •8.4. Стандартные процедуры Halt и Exit
- •Глава 9. Графика
- •9.1. Стандартные модули
- •9.2. Стандартный модуль Graph, текстовый и графический режимы
- •9.3. Рисуем простейшие фигуры
- •9.4. Работа с цветом. Заливка. Стиль линий и заливки
- •9.5. Используем в рисовании переменные величины
- •9.6. Использование случайных величин при рисовании
- •9.7. Движение картинок по экрану
- •Глава 10. Создадим первую большую программу
- •10.1. Постановка задачи
- •10.2. Программирование по методу "сверху вниз"
- •10.3. Сначала - работа над структурой программы
- •10.4. Переменные вместо чисел
- •10.5. Записываем программу целиком
- •10.6. Порядок описания переменных, процедур и других конструкций Паскаля
- •10.7. Управление компьютером с клавиатуры. Функции ReadKey и KeyPressed
- •If KeyPressed then WriteLn('Хозяин нажал клавишу!')
- •10.8. Буфер клавиатуры
- •10.9. Гетерархия. Задание на игру "Торпедная атака"
- •Часть 3. Программирование на Паскале - второй уровень
- •Глава 11. Алфавит и ключевые слова Паскаля
- •11.1. Алфавит
- •11.2. Ключевые слова
- •11.3. Использование пробела
- •Глава 12. Работа с разными типами данных Паскаля
- •12.1. Список типов
- •12.2. Числовые типы
- •12.3. Массивы
- •12.4. Определения констант
- •12.5. Типизированные константы
- •12.6. Собственные типы данных
- •12.7. Логический тип Boolean
- •12.8. Перечислимые типы
- •12.9. Ограниченный тип (диапазон)
- •12.10. Действия над порядковыми типами
- •12.11. Символьный тип Char. Работа с символами
- •12.12. Строковый тип String. Работа со строками
- •12.13. Записи
- •Vr.Prot :podlodka; {Записи для двух вражеских лодок}
- •12.14. Множества
- •12.15. Расположение информации в оперативной памяти. Адреса
- •Глава 13. Процедуры и функции с параметрами
- •13.1. Процедуры с параметрами
- •13.2. Функции
- •13.3. Подпрограммы. Локальные и глобальные переменные
- •13.4. Массивы как параметры
- •13.5. Параметры-значения и параметры-переменные
- •13.6. Индукция. Рекурсия. Стек
- •13.7. Сортировка
- •Глава 14. Строгости Паскаля
- •14.1. Структура программы
- •14.2. Структура процедур и функций
- •14.3. Выражения
- •14.4. Совместимость типов
- •14.5. Форматы вывода данных
- •14.6. Переполнение ячеек памяти
- •14.7. Дерево типов
- •14.8. Синтаксические диаграммы Паскаля
- •Глава 15. Другие возможности Паскаля
- •15.1. Работа с файлами данных
- •15.2. Вставка в программу фрагментов из других программных файлов
- •15.3. Модули программиста
- •15.4. Дополнительные процедуры и функции модуля Graph
- •15.5 Копирование и движение областей экрана
- •15.6. Вывод текста в графическом режиме
- •15.7. Управление цветом в текстовом режиме (модуль crt)
- •15.8. Работа с датами и временем (модуль dos)
- •15.9. Нерассмотренные возможности Паскаля
- •Часть 4. Работа в Паскале на компьютере
- •Что нужно знать и уметь к моменту выполнения первой программы?
- •Запуск Паскаля
- •Начало работы. Ввод программы. Выход из Паскаля
- •Сохранение программы на диске. Загрузка программы с диска
- •Выполнение программы
- •Исправление ошибок. Отладка программы Сообщения об ошибках
- •Пошаговый режим
- •Работа с окнами пользователя и отладчика
- •Отладка больших программ
- •Работа с несколькими окнами
- •Копирование и перемещение фрагментов текста
- •Обзор популярных команд меню
- •Создание исполняемых файлов (ехе)
- •Логические диски. Путь к файлу
- •Список некоторых операций, процедур и функций Паскаля
- •Решения заданий
- •3Аданиe 51
- •3Адание 5 2
- •3Адание 72
- •3Адание 80
Глава 14. Строгости Паскаля
Основой этой главы является раздел 14.8 - "Синтаксические диаграммы Паскаля", так как там материал о грамматике Паскаля представлен в строгом и упорядоченном виде. После прочтения многих разделов этой главы стоит еще раз заглянуть в "Синтаксические диаграммы Паскаля", чтобы окончательно навести порядок в знаниях.
14.1. Структура программы
Минимальная программа на Паскале имеет такой вид: BEGIN END.
Она ничего не делает. Если мы хотим заставить программу что-то делать, то все операторы, приказывающие выполнять нужные нам действия, мы должны записать между BEGIN и END. Например:
BEGIN WriteLn(1993); WriteLn(1994) END.
Обычно программа содержит переменные, константы, обращения к подпрограммам и прочие элементы. Все они должны быть описаны выше BEGIN. Например:
CONST k =10;
VAR a :Real;
BEGIN
a:=5;
WriteLn(a+k)
END.
Таким образом, программа на Паскале состоит из двух и только из двух разделов:
• выше BEGIN расположен раздел описаний,
• ниже BEGIN расположен раздел выполняемых операторов.
Выше этих двух разделов могут находиться две короткие строки, но о них чуть позже.
Приведем полный список служебных слов, после которых задаются описания:
• переменные - описываются после служебного слова VAR
• метки - описываются после служебного слова LABEL
• константы - описываются после служебного слова CONST
• процедуры - описываются после служебного слова PROCEDURE
• функции - описываются после служебного слова FUNCTION
• новые типы, определяемые программистом, описываются после служебного слова TYPE.
Если программа на Паскале использует модули, то они должны быть перечислены выше раздела описаний после служебного слова USES.
И наконец, программа может иметь заголовок, который состоит из служебного слова PROGRAM (имени программы).
Пример программы:
PROGRAM Divan;
USES Crt, Graph;
LABEL met1, met2;
CONST k =100;
S ='Хорошо!';
TYPE Kniga =array [1..k] of String;
Tablitsa =array [0..20,1..10] of Integer;
Minuta =0,60;
VAR x,y :Real;
Uspevaemost :Tablitsa;
PROCEDURE Torpeda...
FUNCTION Invers...
BEGIN
...
end.
14.2. Структура процедур и функций
Подпрограмма может не только обращаться к другим подпрограммам, но и иметь внутри себя, свои внутренние, вложенные подпрограммы. Все эти подпрограммы описываются внутри данной подпрограммы, являются локальными в ней, и не видны снаружи. Необходимость этого вытекает из желания развязки отдельных частей больших проектов. Так руководитель проекта может разделить проект на 5 больших подпрограмм и поручить каждую отдельному руководителю. Те в свою очередь делят свои куски между подчиненными программистами, каждому поручая подпрограмму помельче, которая тоже в свою очередь нуждается в разбивке. В результате, если не использовать вложения, проект оказывается разбит на несколько сотен маленьких равноправных подпрограмм .Нет никакой гарантии, что среди них не встретятся одноименные, и, если бы вложенных подпрограмм не было, Паскаль обнаружил бы среди них одноименные и выдал ошибку. При использовании же вложения это не страшно, так как подпрограммы с одинаковыми именами, упрятанные внутрь более крупных подпрограмм и друг друга не видят.
Каждая из пяти подпрограмм большого проекта можeт иметь большой объем, и руководитель этой подпрограммы должен обладать всем набором средств Паскаля. Поэтому каждая подпрограмма может иметь и свои внутренние типы, метки, переменные, константы, процедуры и функции. Все эти объекты описываются внутри данной подпрограммы, являются локальными в ней и невидны, снаружи.
По сути структура подпрограммы копирует структуру программы за исключением того, что в подпрограммах запрещено писать USES.
Приведем пример записи программы с вложенными подпрограммами:
PROGRAM Hard;
USES ...
LABEL ...
CONST ...
TYPE ...
VAR ...
PROCEDURE a1;
CONST...
VAR...
PROCEDURE a11;
LABEL...
TYPE...
VAR...
BEGIN
...
END;
FUNCTION f11
VAR...
BEGIN
...
END;
BEGIN
...
END;
FUNCTION f2;
PROCEDURE a21;
BEGIN
...
END;
BEGIN
...
END;
BEGIN
...
END.
Здесь в программу Hard входят процедура а1 и функция f2. B процедуру а1 вложены процедура а11 и функция f11. B функцию f2 вложена процедура а21.
Из f2 видна а1, но не видны а11 и f11. Точно так же из а21 видны а1 и f2, но не видны а11 и f11. Это значит, что в теле процедуры а21 может содержаться вызов а1 и f2, но не может содержаться вызов а11 и f11.