Замечание. При чтении данных с клавиатуры необходимо всегда использовать операторы readln (х1, х2, ..., хn); (без указания имени файла).
5. 3. Вывод
Вывод производится с помощью операторов write или writeln.
Формат операторов: write (FV, x1, x2, ..., xn);
writeln (FV, x1, x2, ..., xn);
Работа оператора: в файл с именем FV выводится информация из ячеек оперативной памяти x1, x2, ..., xn. Если FV отсутствует, вывод производится на экран монитора. При этом оператор write начинает вывод в то место компоненты файла, где был закончен прежний вывод, а оператор writeln начнет вывод с начала новой компоненты. Проиллюстрируем работу этих операторов на примере вывода данных на экран монитора.
Имеется фрагмент программы (напомним, что текст в скобках { } является комментарием и машиной не воспринимается);
Var a, b, c, d : integer;
Begin a: = 25; b: = 38; c: = 126; d: = 256;
writeln (a, b, c, d); {результат 2538126256}
writeln (a, b); writeln (c, d); {результат 2538 }
{126256 }
writeln (' a= ', a, ' b= ', b); {результат a=25 b=38}
{символы в апострофах выводятся как строковая константа}
write (a, b, c, d); {результат 2538126256}
write (a, b); write (c, d); {результат 2538126256}
write (' a= ', a, ' b= ', b);
write (' c= ', c, ' d= ',d); {результат a=25 b=38 c=126 d=256 }
5. 4. Некоторые возможности ввода-вывода
Оператор Readln; (без скобок, имени файла и списка ячеек памяти) вызовет остановку машины. Продолжение выполнения программы произойдет после нажатия кнопки Enter. Это очень удобно при просмотре каких-либо промежуточных результатов, например:
writeln ('a= ', a); Readln;
Машина выведет а=. . . и остановится, после нажатия кнопки Enter выполнение программы продолжится.
Оператор writeln; вызовет переход к новой компоненте, в случае вывода на экран - к новой строке экрана. Рассмотрим фрагмент программы:
Var i, k; integer;
Begin i: = 126; k: = 1997;
writeln ('i= ', i, ' k= ', k); {результат i=126 k=1997}
writeln (i: 3, k: 6); {результат 126 1997}
{числа, указанные после : определяют поле вывода, при выводе }
{данное "прижимается" в поле к правому краю 1997}
writeln (i: 7, k: 8); {результат ....126 ....1997}
Пример:
Program Prim23;Var r,pl:real;BEGIN writeln('введите радиус шара'); readln(r); pl:=4*pi*sqr(r);writeln('____________________________________________________');writeln('! площадь шара рад.r=',r:14,' = ',pl:14,'!');writeln('____________________________________________________');
readln; END.
В результате на экран выведется информация:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
! площадь шара радиусом R=хххххххххххххх = ххххххххххххххх !
- - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - -
Здесь ххххххххххххх - изображения чисел.
С помощью такого приема строятся различные таблицы.
При выводе величины Real в операторах write и writeln отводится поле шириной 18 символов для вывода данных с "плавающей точкой" в следующем формате..х.ххххххххххЕ*хх; здесь х - цифры, * - знак, который может быть '+' или '-', '.' - десятичная точка, отделяющая целую часть от дробной. Перед целой частью, в случае отрицательного данного, может стоять знак минус.
Таким образом:
в памяти машины вид оператора результат
R = 715.432 writeln (R); 7.1543200000E+02
R = -1.919e+01 writeln (R); -1.9190000000E+01
R = -567.986 writeln (R); -5.6798600000E+02
Напоминаем: Е+02 означает 102, а 7.1543200000Е+02 равносильно математической записи 7.15432102.
Ширину поля вывода можно указывать для данных любого типа, например:
R = 511.04 writeln (R: 22); ......5.1104000000E+02
ch = 'x' writeln (ch: 3); ..x
ch = '!' writeln (ch: 2, ch: 4,ch: 3); .!...!..!
strin = 'Day N' writeln (strin: 8); ...Dau.N
S = 'RDD' writeln (S: 5, S: 5); ..RDD..RDD
Для данных типа Real можно еще указывать кроме ширины поля также количество цифр после десятичной точки.
Вывод данных с "фиксированной точкой".
R = 511.04 writeln (R: 8: 4); 511.0400
R = -46.78 writeln (R: 7: 2); .-46.78
R = -46.78 writeln (R: 9: 4); .-46.7800
R = -46.78 writeln (R: 12: 3); .....-46.780
Program Prim24;
Var r1,r2:real;
BEGIN r1:=-46.78; r2:=-46.78;
writeln('r1=',r1:12:3,' r2=',r2:9:4);
writeln('_______________________________');
6. 1. Описание массивов
В языке Паскаль можно обрабатывать не только отдельные переменные, но и их совокупности. Одной из таких совокупностей (структурированных) данных является массив. Массив - это упорядоченная совокупность данных, состоящих из фиксированного количества элементов одного и того же типа. Тип элементов, из которых состоит массив, может быть как скалярным, так и структурированным. Этот тип называется базовым, им может быть целый, байтовый, логический, символьный, перечисляемый, интервальный, вещественный, множественный типы и т. д.
Массивы могут быть одномерные:
вектор a1, a2, a3, a4, a5, ...an, т. е. линейка величин - - - - - - - - - - - -
двумерные массивы представляют собой матрицы:
a11 a12 . . . a1n , т. е. матрицу величин или прямоугольник величин
a21 a22 . . . a2n ---- ---- ----
- - - - - - - - - - ---- ---- ----
am1 am2 . . . amn ---- ---- ----
Трехмерный массив - трехмерная матрица или параллелепипед величин, состоящий из набора двухмерных матриц (рис.6.1).
Линейка трехмерных массивов составляет четырехмерный массив, матрица трехмерных массивов (параллелепипедов величин) - пятимерный массив и т. д. Количество размерностей не ограничено, однако следует помнить о том, что количество элементов в массиве растет в геометрической прогрессии от количества размерности.
Описание массивов может быть, как и других величин, прямое или через описание типов Тype.
Прямое описание Var - идентификатор, идентификатор, …, идентификатор:
array - [границы индекса, границы индекса, …, границы индекса] of - базовый тип.
Описание через TYPE:
TYPE - имя типа=array [границы индекса, границы индекса, . . ., границы индекса] of базовый тип;
Var - идентификатор, идентификатор, . . . , идентификатор: имя типа;
Пример: описать двумерные массивы с количеством элементов 4 строки по 5 элементов в каждой строке (5 столбцов),
базовый тип real, массивов три: а, b, c.
Прямое описание:
Var a, b, c: array [1. . . 4, 1 . . . 5] of real;
через TYPE:
TYPE mas=array [1. . . 4, 1. . . 5] of real;
Var a, b, c : mas;
Для указания границ массива можно применять предварительно описанные константы:
Const a1=4; a2=6;
Var mas y1: array [1. . . a1, 1. . . a2] of integer;
Доступ к элементам массива производится через переменные с индексами. Индексы должны не выходить за пределы границ в описаниях массива.
Например, описана ma: array [1. . . 12] of integer; выделено 12 ячеек памяти для хранения целых данных типа integer с именами
ma [1], ma [2], ma [3], и т. д. , ma [12].
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28