p align="left"> rez,x,fxpred,fxpos:real; BEGIN rez:=0; x:=0.1; writeln; for i:= 1 to 6 do Begin fxpred:=0; fxpos:=1; n:=2; znak:=1; fak:=1; while abs(fxpos-fxpred)>=0.001 do Begin znak:=znak*(-1); fak:=fak*(n-1)*n; fxpred:=fxpos; fxpos:=fxpos+znak*exp(n*ln(x))/fak; n:=n+2; end; writeln('x=',x*180/pi,'(ја ¤) cos(x)=',fxpos); x:=x+0.2; rez:=rez+fxpos; end; writeln('rez=',rez); readln; END. 5. Ввод - вывод5.1. Общие положения Ввод-вывод выполняется с помощью операторов read, readln - читать и write, writeln - писать. Читать и писать определяется по отношению к оперативной памяти (ОП). Так, read, readln - читать, т. е. вводить с внешнего устройства (файла) и заносить данные в ОП, write, writeln - писать, т.е. выводить данные из ОП на внешний файл (устройство). Файл состоит из компонент, структура которых определяется при его создании. Внешними устройствами (файлами) могут быть: экран монитора, клавиатура, память на гибких дисках, память на жестком или лазерном дисках, линии связи и т.п. В операторах ввода-вывода указывается имя файла, с которым будет производиться ввод-вывод, этот файл считается логическим. Кроме того, есть понятие физического файла. Физический файл - это устройство, Например, гибкий магнитный диск, жесткий диск и т. д. Логический файл имеет имя, которое можно указывать в операторах ввода-вывода.
5. 2. Ввод Ввод производится с помощью операторов read или readln. Формат операторов: read (FV, х1, х2, ..., хn); или readln (FV, х1, х2, ..., хn); где FV - имя файла, с которого считывается информация, а х1, х2 и т.д. - ячейки памяти, в которые заносится информация, считываемая с файла. Если FV отсутствует, то чтение производится с клавиатуры. Файл представляет собой как бы ленту с компонентами (рис 5.1): Компонента может быть данным любого типа (см. с.9). Оператор readln начинает считывание с начала новой компоненты, а read может начинать не с начала. Если прежнее чтение закончилось внутри компоненты, то следующий read будет читать с того места, на котором закончилось предыдущее чтение (рис. 5.2). В данном случае файл организован на каком-либо носителе (например на диске) и состоит из компонент, в каждой находится по три данных. Если для чтения из файлов применить операторы read (a, b); read (c, d); то в памяти будет а=3.2, b=8.6, c=0.2, d=7.01; если - операторы readln (a, b); readln (c, d), то в памяти а=3.2, b=8.6, c=7.01, d=8.3. Замечание. При чтении данных с клавиатуры необходимо всегда использовать операторы 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('_______________________________'); readln; END. 6. Массивы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; Доступ к элементам массива производится через переменные с индексами. Индексы должны не выходить за пределы границ в описаниях массива.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
|