терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
Var a,b,c:array[1..20] of integer; ar:ty; n,m,k,i:integer;
procedure quicksort(var a:ty; Lo,Hi: integer);
procedure sort(l,r: integer); var i,j,x,y: integer; begin i:=l; j:=r; x:=a[random(r-l+1)+l]; repeat while a[i]<x do i:=i+1; while x<a[j] do j:=j-1; if i<=j then begin if a[i] > a[j] then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; end; i:=i+1; j:=j-1; end; until i>=j; if l<j then sort(l,j); if i<r then sort(i,r); end;
begin; randomize; sort(Lo,Hi); end;
begin readln(n); for i:=1 to n do begin readln(a[i]); ar[i]:=a[i]; end; readln(m); for i:=1 to m do begin readln(b[i]); ar[i+n]:=b[i]; end; readln(k); for i:=1 to k do begin readln(c[i]); ar[i+n+m]:=c[i]; end; quicksort(ar,1,n+m+k); writeln('Final array:'); for i:=1 to n+m+k do write(ar[i]:4); end.
Пример ввода: 3 1 2 3 3 1 2 3 3 1 2 3 Пример вывода: Final array: 1 1 1 2 2 2 3 3 3
терминатор начала и конца работы функции
терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
Type
ty=array[1..60] of integer;
Var
a,b,c:array[1..20] of integer;
ar:ty;
n,m,k,i:integer;
procedure quicksort(var a:ty; Lo,Hi: integer);
procedure sort(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l;
j:=r;
x:=a[random(r-l+1)+l];
repeat
while a[i]<x do
i:=i+1;
while x<a[j] do
j:=j-1;
if i<=j then
begin
if a[i] > a[j] then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
end;
i:=i+1;
j:=j-1;
end;
until i>=j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin;
randomize;
sort(Lo,Hi);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i]);
ar[i]:=a[i];
end;
readln(m);
for i:=1 to m do
begin
readln(b[i]);
ar[i+n]:=b[i];
end;
readln(k);
for i:=1 to k do
begin
readln(c[i]);
ar[i+n+m]:=c[i];
end;
quicksort(ar,1,n+m+k);
writeln('Final array:');
for i:=1 to n+m+k do
write(ar[i]:4);
end.
Пример ввода:
3
1
2
3
3
1
2
3
3
1
2
3
Пример вывода:
Final array:
1 1 1 2 2 2 3 3 3