- •Программирование на языке Pascal
- •Модуль 1. Введение в язык Pascal
- •Что такое программирование?
- •Листинг 1
- •Листинг 2
- •Среда программирования Turbo Pascal 7
- •Переменные и типы данных
- •Что такое переменная?
- •Типы данных
- •Структура программы на Pascal
- •Листинг 3
- •Раздел деклараций
- •Листинг 4
- •Листинг 5
- •Требования к именам идентификаторов
- •Основная часть программы
- •Математические операции
- •Ввод и вывод значений переменных на экран
- •Ввод значений
- •Вывод значений
- •Практикум: Разработка программы «Конвертер единиц измерения»
- •Практикум: Разработка программы, вычисляющей корни квадратного уравнения
- •Модуль 2. Обработка информации и управление ходом выполнения программы
- •Условный оператор
- •Логические выражения
- •Логический тип данных
- •Вложенный условный оператор
- •Оператор множественного выбора (case)
- •Практикум: Разработка программы, проверяющей возможность существования треугольника с заданными сторонами
- •Практикум: Вывод названия года в старояпонском календаре по номеру года
- •Дополнительный материал к модулю 1 и к модулю 2
- •Подключение дополнительных модулей
- •Пример 1. Модуль CRT - очистка содержимого экрана
- •Пример 2. Модуль CRT – Работа с текстом
- •Позиционирование курсора
- •Изменение цвета текста
- •Пример 3. Модуль DOS - Получение текущей даты и времени
- •Форматированный вывод
- •Целые числа
- •Вещественные числа
- •Генерация псевдослучайных значений
- •Модуль 3. Операторы повторения (циклы)
- •Цикл с параметром
- •Практикум: Вычисление факториала числа
- •Контроль арифметического переполнения
- •Цикл с предусловием
- •Практикум: Программа-screensaver
- •Цикл с постусловием
- •Оператор досрочного прерывания цикла (break)
- •Практикум: управление символом на экране при помощи клавиш управления положения курсором
- •Оператор безусловного перехода к следующей итерации (continue)
- •Модуль 4. Одномерные массивы
- •О выходе значения индекса за допустимый диапазон
- •Типовые задачи, связанные с массивами
- •Ввод и вывод элементов массива
- •Подсчет суммы всех элементов массива
- •Нахождение минимального и максимального элемента в массиве
- •Сортировка элементов массива
- •Об особенностях объявления массивов
- •Пользовательские типы данных
- •Константы
- •Рекомендуемый способ объявления массивов
- •Практикум: Разработка приложения «Змейка»
- •Представление строк в Pascal
- •Операции над строками
- •Практикум: Проверка корректности ввода чисел. Преобразование строки в число
- •Практикум: Подсчет слов в предложении
- •Функции для работы со строками
- •Copy
- •Insert
- •Delete
- •Многомерные массивы
- •Ввод и вывод значений многомерного массива
- •Изменение порядка строк в таблице
- •Модуль 6. Записи и множества
- •Модуль 7. Функции и процедуры
- •Объявление подпрограмм
- •Объявление функций
- •Объявление процедур
- •Вызов подпрограмм
- •Формальные и фактические параметры
- •Локальные и глобальные переменные. Область видимости переменных
- •Рекурсия
- •Передача параметров по значению и по ссылке
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача массивов в подпрограммы, открытые массивы
- •Модуль 8. Работа с файлами
- •Связывание файловой переменной с файлом
- •Чтение из файла
- •Проверка существования файла
- •Чтение всего содержимого файла, функция EOF
- •Запись в файл
- •Закрытие файла
- •Текстовые файлы
- •Дозапись в текстовый файл
|
47 |
Программирование на языке Pascal |
If C=#0 Then C:=ReadKey; {Если ReadKey возвратил символ с}
{кодом 0, считываем еще раз}
If C=#75 Then WriteLn('Нажата клавиша ВЛЕВО');
End.
Проверка
If C=#0 Then C:=ReadKey;
необходима для тех случаев, когда ReadKey возвращает перед кодом нажатой клавиши нулевой символ.
Движение символа будем осуществлять вычитая либо прибавляя единицу к соответствующей координате. Поскольку вертикальная ось направлена вниз (ось Y), а горизонтальная – слева направо (Ось X), то для движения влево нам необходимо будет уменьшать горизонтальную координату, а для движения вверх – уменьшать координату Y. Чтобы не оставлять трек движения символа по экрану, будем на каждой итерации очищать экран при помощи процедуры ClrScr. (На самом деле, можно очистку экрана и убрать, тоже интересно будет – можно рисовать звездочкой различные рисунки на экране).
Исходный текст программы будет тогда выглядеть следующим образом:
Uses Crt;
Var c:char; x,y: Byte;
Begin
x:=40; {Координаты середины экрана} y:=12;
Repeat
ClrScr; GotoXY(x, y); Write('*'); c:=ReadKey;
If c=#0 Then c:=ReadKey;
Case c Of
#72: y:=y-1; {двигаемся вверх} #80: y:=y+1; {двигаемся вниз} #75: x:=x-1; {двигаемся влево} #77: x:=x+1; {двигаемся вправо}
End;
If (x=0) Or (x=80) Or (y=0) Or (y=25) Then
Begin
Writeln('Миссия завершена!'); Break;
End;
Until c=#27; {Выполняем цикл до тех пор пока пользователь}
{не нажмет клавишу Esc}
End.
Оператор безусловного перехода к следующей итерации (continue)
Вслучае, когда при некоторых условиях необходимо не прекращать выполнение цикла, а начать следующую итерацию, применяется оператор continue.
Вкачестве примера приведем программу, которая суммирует только нечетные числа из тех, что вводит пользователь. В случае, если пользователь введет четное число, благодаря оператору continue, цикл перейдет к следующей итерации, требуя от пользователя ввода
47
|
48 |
Программирование на языке Pascal |
следующего значения. Программа выполняется, пока общее количество вводимых чисел не превысит 10.
Четность или нечетность числа проверяется по остатку деления его на 2. Если остаток от деления равен нулю, значит число четное, в противном случае – нечетное. Для вычисления остатка от деления воспользуемся оператором Mod.
Var Number, i, Sum, cnt: Integer;
Begin
Sum:=0;
For i:=1 To 10 Do
Begin
ReadLn(Number);
If Number Mod 2=0 Then Continue; Sum:=Sum+Number;
cnt:=cnt+1;
End;
WriteLn('Сумма нечетных чисел= ', sum, ' Их количество=',cnt);
End.
48