СИМУЛА - универсальный процессо-ориентированный язык моделирования, страница 21

Процедуры вывода

Процедура outimageДанная процедура выводит принудительно содержимое буфера во внешний файл. При этом буфер заполняется пробелами, указатель позиции устанавливается в единицу.

Процедура OUTCHAR. Параметром данной процедуры является символ. Данный символ выводится в буфер данных, при этом указатель позиции увеличивается на единицу.

Процедура OUTTEXT. Процедура служит для вывода текстового значения, на которое указывает фактический параметр. Если в качестве параметра указано текстовое значение, то выводится значение фактического параметра. Если длина выводимой строки больше, чем оставшаяся в подстроке буфера, то сначала выводится буфер, а затем значение фактического параметра процедуры.

Процедура OUTINT. Параметрами данной процедуры являются целое число, предназначенное для вывода, и число символов для представления данного числа.

Процедура OUTFIX. Процедура  OUTFIX (A, N, L) предназначена для вывода вещественного числа А. В зависимости от значения N формируется различная запись числа. Если N=0, то число А выводится как целое, если N>0, то N указывает число знаков после десятичной точки. Полученная запись округляется до N-го десятичного знака.

Процедура OUTREAL. Процедура  OUTREAL  (A, N, L) предназначена для ввода чисел, представленных в виде числа с плавающей точкой. Число (N - 1) задает число символов в мантиссе, L – общее число знаков числа.

Рассмотрим программу вывода графика функций. Будем предполагать, что исходные данные для функции хранятся во внешнем файле в следующем виде:

1 строка - <заголовок графика>

2 строка - <шаг вывода по оси Х> <символ обозначения графика> <начальное значение  Х> <число точек>

3 строка - <значение Y> < значение Y > …

……………………….

……………………….

N строка < значение Y >  

Размер блока файла – 80 байтов. Максимальное число точек – 100.

‘begin’

‘integer’ n, i;  ‘ref’ (infile) vvod; ‘integer’ ‘array’ iy [1; 100];

‘text’ zag;  ‘real’ ‘array’ y [1; 100];

‘real’ d.x0; ‘character’ c; ‘real’ ymin.ymax;

vvod:- ‘new’ infile (‘’graf’’);

vvod.open (blanks (80));

zag:- blanks (80);

zag:= vvod.intext(80);

d:= vvod.inreal;

c:= vvod.inchar;

x0:= vvod.inreal;

n:= vvod.inint;

‘for’ i:=1 ‘step’ 1 ‘until’ n

‘do’ y [i]:=vvod.inreal;

ymin:= y [1]; ymax:= y [1];

‘for’ i:=2 ‘step’ 1 ‘until’ n

‘do’

‘begin’

‘if’ y [i] > ymax ‘then’ ymax:= y[i];

‘if’ y [i] > ymin ‘then’ ymin:= y[i];

‘end’;

‘for’ i:=1 ‘step’ 1 ‘until’ n

‘do’

iy [i]:= y[i]/(ymax - ymin)*40;

‘comment’ вывод графика;

‘for’ i:=1 ‘step’ 1 ‘until’ n

‘do’

‘begin’

outfix (x0+d*(i -1),5,9);

outchar (“i”);

image.setpos (10+iy [i]);

outchar (c); outimage;

‘end’

‘end’

Исходные данные и результат работы программы приводится ниже:

ЗАГОЛОВОК

0.1*                  0        10

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

ЗАГОЛОВОК

0.00000I     *

0.10000I               *

0.20000I                         *

0.30000I                                   *

0.40000I                                             *

0.50000I                                                       *

0.60000I                                                                *

0.70000I                                                                          *

0.80000I                                                                                    *

0.90000I                                                                                         *

a.  Контрольные вопросы и задания

b.  Литература

Основная литература

1.  Дал У.И., Мюрхауг Б., Нюгард К. Симула-67.  Универсальный язык программирования. – М.: Мир, 1969 – 99 с.

2.  Андрианов А.И., Бычков С.П., Хорошилов А.И. Программирование на языке Симула-67. – М.: Наука. Глав. ред. физ.-мат. лит., 1985 – 288 с.

3.  Федоров Н.В. Языки моделирования. Симула-67. – М.: МГГУ, 1987 – 87 с.

Дополнительная литература