![](/user_photo/2706_HbeT2.jpg)
- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Процедуры ввода
Для ввода исходных данных пользователем вручную с клавиатуры в языке программирования Паскаль используются процедуры ввода Read и Readln.
Возможны следующие способы записи указанных процедур:
Read (A1, A2, …, AK);
Readln (A1, A2, …, AK);
Readln;
Первая запись реализует чтение К значений исходных данных и присваивание этих значений переменным А1, А2, …, АК. Вторая запись реализует чтение К значений исходных данных, пропуск остальных значений до начала следующей строки, присваивание считанных значений переменным А1, А2, …, АК. Третий оператор реализует пропуск строки исходных данных.
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать к целому, вещественному или к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо.
Процедуры ввода при чтении значений переменных целого и вещественного типа пропускают пробелы, предшествующие числу. В то же время эти операторы не пропускают пробелов, предшествующих значениям символьных переменных, так как пробелы являются равноправными символами строк.
Пример: Запрос у пользователя 2-ух вещественных и 2-ух целых значений, а также 2-ух символов.
var x, y: real;
a, b: integer;
c1, c2: char;
…
Read(x, a, c1);
Readln(c2, b, y);
При вводе данных пользователю требуется ввести значение именно того типа данных, который ожидается программой. В случае же, если требуется ввести, например, значение целого типа, а пользователь вводит символ «a», то произойдет исключительная ситуация (т.е. ошибка). В этом случае на экран будет выведено соответствующее сообщение и работа программы будет остановлена, что недопустимо, когда речь идет о «реальных» разработках для заказчика. Программист должен быть готов к таким ситуациям и предусмотреть действия программы на такой случай. Так, можно воспользоваться директивой компилятора I.
Перед вводом данных можно отключить контроль правильности ввода-вывода с помощью записи {$I-}. После осуществления ввода данных с помощью функции IOResult можно самостоятельно проверить корректность последней операции ввода/вывода: если функция возвращает 0, значит, все в порядке, иначе – была ошибка. Обратите внимание: после вызова функции ее результат сбрасывается, а это означает, что повторный вызов функции IOResult, без осуществления новых операций ввода/вывода, всегда будет возвращать значение 0. Если же код ошибки требуется использовать неоднократно, то его следует запомнить в некоторую переменную. Вновь включить контроль правильности ввода-вывода можно с помощью записи {$I-}.
Пример: Организовать ввод целого значения и проверить корректность вводимого значения.
var k, temp: integer;
begin
{$I-}
readln(k);
temp:=IOResult; {запоминаем код ошибки, т.к. IOResult сбросится в 0}
if temp>0 then writeln (‘Ошибка ввода!!!’); {проверяем код ошибки}
{оператор if будет рассмотрен позже}
{$I+}
…
При организации ввода данных не следует забывать, что при появлении на экране курсора пользователь не сможет сам чудесным образом догадаться, что от него требуется ввести и в каком формате. Поэтому всегда требуется выводить на экран для пользователя приглашение к вводу данных со всей необходимой поясняющей информацией.
Пример:
writeln (‘Введите длину забора (в метрах, целое значение)’);
write (‘l=’);
readln (l);