Загрузка данных
<mxfile host="app.diagrams.net">
<diagram name="Array-Task2-Var10" id="arr-task2-v10">
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- ========================================== -->
<!-- ЛЕВАЯ ЧАСТЬ: ОСНОВНАЯ ПРОГРАММА (main) -->
<!-- ========================================== -->
<!-- НАЧАЛО main -->
<mxCell id="m_start" value="начало" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="180" y="40" width="140" height="40" as="geometry" />
</mxCell>
<!-- ЦИКЛ ВВОДА -->
<mxCell id="m_loop_in" value="i := 0..9, 1" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="170" y="110" width="160" height="45" as="geometry" />
</mxCell>
<mxCell id="m_in_elem" value="вв. A[i]" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="180" y="190" width="140" height="40" as="geometry" />
</mxCell>
<!-- ЦИКЛ ВЫВОДА A -->
<mxCell id="m_loop_out" value="i := 0..9, 1" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="170" y="280" width="160" height="45" as="geometry" />
</mxCell>
<mxCell id="m_out_elem" value="выв. A[i]" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="180" y="360" width="140" height="40" as="geometry" />
</mxCell>
<!-- ВЫЗОВ ФУНКЦИИ (Предопределенный процесс) -->
<mxCell id="m_call" value="P := multNegative(A, 10)" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="150" y="450" width="200" height="45" as="geometry" />
</mxCell>
<!-- ВЫВОД РЕЗУЛЬТАТА P -->
<mxCell id="m_out_p" value="выв. P" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="180" y="530" width="140" height="40" as="geometry" />
</mxCell>
<!-- КОНЕЦ main -->
<mxCell id="m_end" value="конец" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="180" y="605" width="140" height="40" as="geometry" />
</mxCell>
<!-- СВЯЗИ main -->
<mxCell id="me1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_start" target="m_loop_in">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="me2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_loop_in" target="m_in_elem">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="me3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.5;entryX=0;entryY=0.25;strokeWidth=1.2;" edge="1" parent="1" source="m_in_elem" target="m_loop_in">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="210" />
<mxPoint x="120" y="121" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="me4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_loop_in" target="m_loop_out">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="365" y="133" />
<mxPoint x="365" y="255" />
<mxPoint x="250" y="255" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="me5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_loop_out" target="m_out_elem">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="me6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.5;entryX=0;entryY=0.25;strokeWidth=1.2;" edge="1" parent="1" source="m_out_elem" target="m_loop_out">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="380" />
<mxPoint x="120" y="291" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="me7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_loop_out" target="m_call">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="365" y="303" />
<mxPoint x="365" y="425" />
<mxPoint x="250" y="425" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="me8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_call" target="m_out_p">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="me9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="m_out_p" target="m_end">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- ========================================== -->
<!-- ПРАВАЯ ЧАСТЬ: ПОДПРОГРАММА multNegative -->
<!-- ========================================== -->
<!-- НАЧАЛО ФУНКЦИИ -->
<mxCell id="f_start" value="multNegative(A, N)" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="640" y="40" width="170" height="40" as="geometry" />
</mxCell>
<!-- ИНИЦИАЛИЗАЦИЯ P := 1 -->
<mxCell id="f_init" value="P := 1" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="655" y="115" width="140" height="40" as="geometry" />
</mxCell>
<!-- ЦИКЛ ПО МАССИВУ -->
<mxCell id="f_loop" value="i := 0..N-1, 1" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="645" y="190" width="160" height="45" as="geometry" />
</mxCell>
<!-- УСЛОВИЕ A[i] < 0 -->
<mxCell id="f_cond" value="A[i] < 0" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="650" y="275" width="150" height="60" as="geometry" />
</mxCell>
<!-- ДЕЙСТВИЕ P := P * A[i] -->
<mxCell id="f_mult" value="P := P * A[i]" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="655" y="375" width="140" height="40" as="geometry" />
</mxCell>
<!-- ТОЧКА СЛИЯНИЯ ВЕТВЕЙ (внутри цикла) -->
<mxCell id="f_merge" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="722" y="455" width="6" height="6" as="geometry" />
</mxCell>
<!-- ВОЗВРАТ ИЗ ФУНКЦИИ -->
<mxCell id="f_ret" value="возврат P" style="rounded=1;whiteSpace=wrap;html=1;arcSize=50;strokeWidth=1.5;" vertex="1" parent="1">
<mxGeometry x="840" y="530" width="140" height="40" as="geometry" />
</mxCell>
<!-- СВЯЗИ multNegative -->
<mxCell id="fe1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_start" target="f_init">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fe2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_init" target="f_loop">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fe3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_loop" target="f_cond">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Условие ДА (вниз к умножению) -->
<mxCell id="fe4" value="да" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_cond" target="f_mult">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fe5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_mult" target="f_merge">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Условие НЕТ (вправо в обход умножения в точку слияния) -->
<mxCell id="fe6" value="нет" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=1;entryY=0.5;strokeWidth=1.2;" edge="1" parent="1" source="f_cond" target="f_merge">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="825" y="305" />
<mxPoint x="825" y="458" />
</Array>
</mxGeometry>
</mxCell>
<!-- Петля возврата цикла слева -->
<mxCell id="fe7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.5;entryX=0;entryY=0.25;strokeWidth=1.2;" edge="1" parent="1" source="f_merge" target="f_loop">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="590" y="458" />
<mxPoint x="590" y="201" />
</Array>
</mxGeometry>
</mxCell>
<!-- Выход из цикла f_loop направо вниз к блоку "возврат P" -->
<mxCell id="fe8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0.5;entryY=0;strokeWidth=1.2;" edge="1" parent="1" source="f_loop" target="f_ret">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="910" y="213" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>