- •Основы программирования на языке Паскаль
- •Часть 1. Основы языка Паскаль 2
- •Часть 2. Элементы профессионального программирования на Паскале 44
- •От автора
- •Часть 1. Основы языка Паскаль
- •1. Алгоритм и программа
- •1.1. Алгоритм
- •1.2. Свойства алгоритма
- •1.3. Формы записи алгоритма
- •1.4. Программа и программное обеспечение
- •1.5. Этапы разработки программы
- •2. Данные в языке Паскаль
- •2.1 Константы
- •2.2 Переменные и типы переменных
- •3. Арифметические выражения
- •4. Линейный вычислительный процесс
- •4.1 Оператор присваивания
- •4.2 Оператор ввода
- •4.3 Оператор вывода
- •4.4 Управление выводом данных
- •4.5 Вывод на печать
- •5. Структура простой программы на Паскале
- •6. Компилятор и оболочка Turbo Pascal
- •7. Разветвляющийся вычислительный процесс и условный оператор
- •7.4. Короткий условный оператор
- •If логическое_выражение then оператор1;
- •7.5. Полный условный оператор
- •If логическое_выражение then оператор1
- •7.7. Вложенные условные операторы
- •7.9. Примеры программ с условным оператором
- •8. Директивы компилятора и обработка ошибок ввода
- •9. Оператор цикла. Циклы с предусловием и постусловием
- •10. Цикл со счетчиком и досрочное завершение циклов
- •11. Типовые алгоритмы табулирования функций, вычисления количества, суммы и произведения
- •11.1 Алгоритм табулирования
- •11.2 Алгоритм организации счетчика
- •11.3 Алгоритмы накопления суммы и произведения
- •12. Типовые алгоритмы поиска максимума и минимума
- •13. Решение учебных задач на циклы
- •14. Одномерные массивы. Описание, ввод, вывод и обработка массивов на Паскале
- •15. Решение типовых задач на массивы
- •Часть 2. Элементы профессионального программирования на Паскале
- •16. Кратные циклы
- •16.1 Двойной цикл и типовые задачи на двойной цикл
- •16.2 Оператор безусловного перехода
- •17. Матрицы и типовые алгоритмы обработки матриц
- •18. Подпрограммы
- •18.1 Процедуры
- •18.2 Функции
- •18.3 Массивы в качестве параметров подпрограммы
- •18.4 Открытые массивы
- •19. Множества и перечислимые типы
- •20. Обработка символьных и строковых данных
- •20.1. Работа с символами
- •20.2 Работа со строками
- •21. Текстовые файлы
- •21.1 Общие операции
- •21.2 Примеры работы с файлами
- •21.3 Работа с параметрами командной строки
- •22. Записи. Бинарные файлы
- •23. Модули. Создание модулей
- •23.1. Назначение и структура модулей
- •23.2. Стандартные модули Паскаля
- •24. Модуль crt и создание простых интерфейсов
- •25. Модуль Graph и создание графики на Паскале
- •Приложение 1. Таблицы ascii-кодов символов для операционных систем dos и Windows
- •Приложение 2. Основные директивы компилятора Паскаля
- •Приложение 3. Основные сообщения об ошибках Паскаля
- •Приложение 4. Дополнительные листинги программ
- •Приложение 5. Расширенные коды клавиатуры
- •Ascii‑коды
- •Расширенные коды
- •Приложение 6. Правила хорошего кода
- •Приложение 7. Рекомендуемая литература
4.3 Оператор вывода
Общий вид записи операторов
write(список выражений и/или переменных);
writeln(список выражений и/или переменных);
Элементы списка перечисляются через запятую. В список могут входить также строки в апострофах ' '
Работа операторов
Элементы списка выводятся в пользовательское окно программы. Вещественные значения выводятся в экспоненциальной форме (с буквой E). Строки выводятся "как есть". После вывода работа программы продолжается со следующего оператора.
Оператор writeln отличается от write лишь тем, что после вывода значения последнего элемента списка выполняется перевод курсора на следующую строку экрана.
Примеры:
1) Нужно дать пользователю возможность ввести с клавиатуры число, затем программа возведет это число в квадрат и выведет результат на экран.
var a,a2:integer;
. . . .
writeln ('Введите целое число:'); {это приглашение к вводу!}
read (a);
a2:=sqr(a);
writeln ('Квадрат числа=',a2);
Если ввести a=2, на экране будет напечатано
Квадрат числа=4
| ---курсор на следующей строке
После вывода результата выполнение программы продолжится, а если оператор writeln был в ней последним, то и завершится. Чтобы пользователь успел прочитать результат, следует в конце программы добавить оператор
readln;
который будет ждать нажатия клавиши Enter.
2) Нужно вывести результаты решения квадратного уравнения x1=1.5 и x2=2.5
write ('x1=',x1,'_x2=',x2);
-пробел здесь нужен, чтоб значение x1 не слилось со строкой 'x2='
на экране будет напечатано:
x1= 1.5000000000E+00 x2= 2.5000000000E+00|
-курсор остался в конце строки, т.к. использован write!
Вещественные числа читать в подобной форме неудобно, для их вывода используйте решение из следующего раздела.
4.4 Управление выводом данных
В операторе write или writeln вещественное значение (а также целое или строковое) зачастую удобнее записывать в виде:
переменная:ширина:точность
ширина – целое положительное число, определяет, сколько экранных позиций отводится для вывода всего числа. Определена для любых чисел и строк.
точность – целое положительное число, определяет, сколько цифр из ширины отводится на вывод дробной части числа. Определена только для вещественных чисел. Не учитывает позицию десятичной точки. Разумные значения точности – от 0 до ширина-2 включительно. Недопустимые значения ширины и точности не будут учтены при выводе.
Пример: печатаем значения переменных
var x1,p:real;
i:integer;
. . . .
x1:=2.5; p:=-3.175; i:=2;
writeln ('x1=',x1:8:2,'_p=',p:9:4);
write ('I=','_':5,i:2);
На экране будет напечатано:
x1=____2.50_p=__-3.1750
I=______2
_ везде обозначает пробел
4.5 Вывод на печать
Иногда требуется, чтобы программа вывела результаты своей работы на принтер. Для этого достаточно выполнения двух условий. Первым оператором раздела описаний программы следует указать оператор
uses printer;
подключающий стандартную библиотеку для работы с принтером, а первым параметром оператора write или writeln указать символическое имя принтера lst, описанное в библиотеке printer:
write ('Hello'); строка 'Hello' выведена на экран,
write (lst,'Hello'); а здесь – уже на принтер
Отличие между write и writeln сохраняется при выводе на принтер – то есть, при использовании writeln позиция печати на принтере будет переведена на следующую строку.
Здесь не приводится код, позволяющий проверить, готов ли принтер к печати и удалась ли операция вывода данных на него. Подобные проверки мы научимся делать, изучив стандартную функцию IoResult.