терминатор начала и конца работы функции
терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
Program Markovsp1;
uses crt;
const
eps=0.001;
var
t,s:real;
i:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
writeln('Программа вычисляет частичную сумму ряда ');
writeln(' S=1+1/(2^2)+1/(3^2)+1/(4^2)+... ');
writeln('Вычисление прекратится, когда модуль очередного слагаемого станет меньше 0,001');
используется цикл repeat');
writeln();
s:=0;
i:=1;
repeat
t:=1/((i)*(i));
s:=s+t;
//writeln('i=',i,' T=',t:0:6,' S=',s:0:6);
i:=i+1;
until abs(t)<eps;
writeln('s=',s:0:6,' (pi^2)/6=',(pi*pi)/6:0:6);
writeln('Приближение к (pi^2)/6 равно ',s-(pi*pi)/6:0:6);
end.
Program Markovsp2;
uses crt;
const
eps=0.001;
var
t,s:real;
i:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
writeln('Программа вычисляет частичную сумму ряда ');
writeln(' S=1+1/(2^2)+1/(3^2)+1/(4^2)+... ');
writeln('Вычисление прекратится, когда модуль очередного слагаемого станет меньше 0,001');
используется цикл while');
writeln();
s:=0;
i:=1;
t:=1;
while t>eps do
begin
t:=1/(i*i);
s:=s+t;
//writeln('i=',i,' T=',t:0:6,' S=',s:0:6);
i:=i+1;
end;
writeln('s=',s:0:6,' (pi^2)/6=',(pi*pi)/6:0:6);
writeln('Приближение к (pi^2)/6 равно ',s-(pi*pi)/6:0:6);
end.