Animated Introduction

This commit is contained in:
Carlos Galindo 2019-12-15 15:32:54 +01:00
parent 6e2ab8afd1
commit e888551e89
20 changed files with 935 additions and 112 deletions

42
figs/example-sdg-1.dot Normal file
View file

@ -0,0 +1,42 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
node [style=invis];
edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
edge [style = invis];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

42
figs/example-sdg-2.dot Normal file
View file

@ -0,0 +1,42 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
node [style=invis];
edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
edge [style = invis];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

42
figs/example-sdg-3.dot Normal file
View file

@ -0,0 +1,42 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
edge [style = invis];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

41
figs/example-sdg-4.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue, style = invis]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen, style = invis]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

41
figs/example-sdg-5.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen, style = invis]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

41
figs/example-sdg-6.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

41
figs/example-sdg.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

41
figs/example-slice-1.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

45
figs/example-slice-2.dot Normal file
View file

@ -0,0 +1,45 @@
digraph g {
l1 [label = "Enter f()"];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0"];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod"];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l3 l4 l9};
l1 -> l10 [color = black, style = bold];
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l6} [color = grey]; // prod
{l3 l6} -> {l10} [color = darkgreen, style = bold]; // prod
{x l7} -> {l4 l7} [color = grey]; // x
}
}

45
figs/example-slice-3.dot Normal file
View file

@ -0,0 +1,45 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l3 l4 l9};
l1 -> l10 [color = black, style = bold];
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l6} [color = grey]; // prod
{l3 l6} -> {l10} [color = darkgreen, style = bold]; // prod
{x l7} -> {l4 l7} [color = grey]; // x
}
}

46
figs/example-slice-4.dot Normal file
View file

@ -0,0 +1,46 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)"];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l4 l9 l10};
l1 -> l3 [color = black];
l4 -> {l5 l7};
l4 -> l6 [style = bold, color = black];
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l10} [color = grey]; // prod
{l3 l6} -> l6 [color = darkgreen];
{x l7} -> {l4 l7} [color = grey]; // x
}
}

46
figs/example-slice-5.dot Normal file
View file

@ -0,0 +1,46 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)", style = filled];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l4 l9 l10};
l1 -> l3 [color = black];
l4 -> {l5 l7};
l4 -> l6 [style = bold, color = black];
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l10} [color = grey]; // prod
{l3 l6} -> l6 [color = darkgreen];
{x l7} -> {l4 l7} [color = grey]; // x
}
}

45
figs/example-slice-6.dot Normal file
View file

@ -0,0 +1,45 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)", style = filled];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--"];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l3 l9 l10};
l1 -> l4 [color = black];
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in"];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l6 l10} [color = grey]; // prod
{x l7} -> {l4} [color = red, style = bold]; // x
{x l7} -> {l7} [color = grey]; // x
}
}

45
figs/example-slice-7.dot Normal file
View file

@ -0,0 +1,45 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)", style = filled];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--", style = filled];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l3 l9 l10};
l1 -> l4 [color = black];
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in", style = filled];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l6 l10} [color = grey]; // prod
{x l7} -> {l4} [color = red, style = bold]; // x
{x l7} -> {l7} [color = grey]; // x
}
}

45
figs/example-slice-8.dot Normal file
View file

@ -0,0 +1,45 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)", style = filled];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--", style = filled];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = "bold,filled"];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
edge [color = grey];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6};
l4 -> l7 [color = black];
}
{ // data input
node [style=dashed];
edge [color = grey];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in", style = filled];
l1 -> x [color = black];
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = grey]; // sum
{l3 l6} -> {l6 l10} [color = grey]; // prod
{x l7} -> {l7} [color = red]; // x
{x l7} -> {l4} [color = grey]; // x
}
}

41
figs/example-slice.dot Normal file
View file

@ -0,0 +1,41 @@
digraph g {
l1 [label = "Enter f()", style = filled];
l2 [label = "2: int sum = 0"];
l3 [label = "3: int prod = 0", style = filled];
l4 [label = "4: while (x > 0)", style = filled];
l5 [label = "5: sum += sum"];
l6 [label = "6: prod *= prod", style = filled];
l7 [label = "7: x--", style = filled];
l9 [label = "9: log(\"sum: \" + sum)"];
l10 [label = "10: log(\"prod: \" + prod)", style = filled];
// graph order
{rank=min; l1};
{rank=same; l2 l3 l4 l9 l10};
{rank=max; l5 l6 l7};
{ edge [style=invis];
l2 -> l3 -> l4 -> l9 -> l10;
l5 -> l6 -> l7;
}
{ // control edges
// edge [style=invis];
l1 -> {l2 l3 l4 l9 l10};
l4 -> {l5 l6 l7};
}
{ // data input
node [style=dashed];
// node [style=invis];
// edge [style=invis];
x [label = "x = x_in", style = filled];
l1 -> x;
x -> {l2} [style=invis];
}
{ // data edges
edge [color=red,constraint=true];
{l2 l5} -> {l5 l9} [color = blue]; // sum
{l3 l6} -> {l6 l10} [color = darkgreen]; // prod
{x l7} -> {l4 l7} [color = red]; // x
}
}

View file

@ -0,0 +1,14 @@
digraph g {
node [shape = rect];
Exception;
Error [style="dashed"];
RuntimeException [style="dashed"];
Throwable -> {Exception Error};
Exception -> RuntimeException;
{ node [label="...",style=dashed];
a [style=""];
Exception -> a;
Error -> b;
RuntimeException -> c;
}
}