diff --git a/20211011/functions-1.c b/20211011/functions-1.c new file mode 100644 index 0000000000000000000000000000000000000000..181c578ab248af04737711941f21bbf3f0bcc4f2 --- /dev/null +++ b/20211011/functions-1.c @@ -0,0 +1,17 @@ +#include <stdio.h> + +int answer (void) +{ + return 42; +} + +void foo (void) +{ + printf ("%d\n", answer ()); +} + +int main (void) +{ + foo (); + return 0; +} diff --git a/20211011/functions-10.c b/20211011/functions-10.c new file mode 100644 index 0000000000000000000000000000000000000000..cf4ed0eef48dae1a89c5dbd7decbdd35d791190c --- /dev/null +++ b/20211011/functions-10.c @@ -0,0 +1,27 @@ +#include <stdio.h> + +int a = 0; +int b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + + return 0; + + printf ("main(): " "a = %d, b = %d\n", a, b); +} diff --git a/20211011/functions-11.c b/20211011/functions-11.c new file mode 100644 index 0000000000000000000000000000000000000000..ffffa799594c7fdb03c9ee957925245338bcee2f --- /dev/null +++ b/20211011/functions-11.c @@ -0,0 +1,25 @@ +#include <stdio.h> + +int a = 0; +int b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + return 0; +} diff --git a/20211011/functions-2.c b/20211011/functions-2.c new file mode 100644 index 0000000000000000000000000000000000000000..09d985fad681138e9a922a7f21e2379d474604b0 --- /dev/null +++ b/20211011/functions-2.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +void add_verbose (int a, int b) +{ + printf ("%d + %d = %d\n", a, b, a + b); +} + +int main (void) +{ + add_verbose (3, 7); + return 0; +} diff --git a/20211011/functions-3.c b/20211011/functions-3.c new file mode 100644 index 0000000000000000000000000000000000000000..5b4322f1db9ea2cdda1f6a5c7257c51c2e332879 --- /dev/null +++ b/20211011/functions-3.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int add_verbose (int a, int b) +{ + printf ("%d + %d = %d\n", a, b, a + b); + return 42; +} + +int main (void) +{ + add_verbose (3, 7); + return 0; +} diff --git a/20211011/functions-4.c b/20211011/functions-4.c new file mode 100644 index 0000000000000000000000000000000000000000..66eabf3d8674acd353b3ad377b13869d56fb2499 --- /dev/null +++ b/20211011/functions-4.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +int add_verbose (int a, int b) +{ + printf ("%d + %d = %d\n", a, b, a + b); + return 42; +} + +int main (void) +{ + int a = add_verbose (3, 7); + printf ("Rückgabewert: %d\n", a); + return 0; +} diff --git a/20211011/functions-5.c b/20211011/functions-5.c new file mode 100644 index 0000000000000000000000000000000000000000..b0a3a5f67e09371531026605e4bbcff672763ce4 --- /dev/null +++ b/20211011/functions-5.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +void add_verbose (int a, int b) +{ + printf ("%d + %d = %d\n", a, b, a + b); + return 42; +} + +int main (void) +{ + void a = add_verbose (3, 7); + printf ("Rückgabewert: %d\n", a); + return 0; +} diff --git a/20211011/functions-6.c b/20211011/functions-6.c new file mode 100644 index 0000000000000000000000000000000000000000..354dd538744b944f74aa9de4eacb332c1fdda1ef --- /dev/null +++ b/20211011/functions-6.c @@ -0,0 +1,26 @@ +#include <stdio.h> + +int a, b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + + return 0; + + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); +} diff --git a/20211011/functions-7.c b/20211011/functions-7.c new file mode 100644 index 0000000000000000000000000000000000000000..1d89a24d9b1f516eba8b5a6cc8a27efc4f75c4f5 --- /dev/null +++ b/20211011/functions-7.c @@ -0,0 +1,27 @@ +#include <stdio.h> + +int a = 0; +int b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + + return 0; + + printf ("main(): " "a = %d, b = %d\n", a, b); + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); +} diff --git a/20211011/functions-8.c b/20211011/functions-8.c new file mode 100644 index 0000000000000000000000000000000000000000..2e18b511c9adf0eab46456a94ff76cb8bea05e73 --- /dev/null +++ b/20211011/functions-8.c @@ -0,0 +1,27 @@ +#include <stdio.h> + +int a = 0; +int b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + + return 0; + + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); +} diff --git a/20211011/functions-9.c b/20211011/functions-9.c new file mode 100644 index 0000000000000000000000000000000000000000..73a3ab636343d59bf21827668c5124b28dff1d25 --- /dev/null +++ b/20211011/functions-9.c @@ -0,0 +1,27 @@ +#include <stdio.h> + +int a = 0; +int b = 3; + +void foo (void) +{ + b++; + static int a = 5; + int b = 7; + printf ("foo(): " "a = %d, b = %d\n", a, b); + a++; +} + +int main (void) +{ + printf ("main(): " "a = %d, b = %d\n", a, b); + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); + a = b = 12; + printf ("main(): " "a = %d, b = %d\n", a, b); + + return 0; + + foo (); + printf ("main(): " "a = %d, b = %d\n", a, b); +} diff --git a/20211011/hp-20211011.pdf b/20211011/hp-20211011.pdf index ef596911793de3d62b3aaddab01464fb7517cf30..29fce7a42e97d44fe6867372ec13a2cbae8f3449 100644 Binary files a/20211011/hp-20211011.pdf and b/20211011/hp-20211011.pdf differ diff --git a/20211011/hp-20211011.tex b/20211011/hp-20211011.tex index 76ff44ed015c930207de2f3694aea10627e337b5..535b15bf177efbec914b9cdb76e88f85feff4883 100644 --- a/20211011/hp-20211011.tex +++ b/20211011/hp-20211011.tex @@ -437,7 +437,8 @@ Apple Mac OS: \file{Xcode} \item Microsoft Windows: \file{Cygwin}\\ - oder \file{MinGW} mit \file{MSYS} + oder \file{MinGW} mit \file{MSYS}\\ + oder \file{WSL} mit \file{Xming} \medskip \item außerdem: Texteditor\\ diff --git a/20211011/pointers-1.c b/20211011/pointers-1.c new file mode 100644 index 0000000000000000000000000000000000000000..421153a64907b61eebbacec398ed4f1fcb487cc6 --- /dev/null +++ b/20211011/pointers-1.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +void calc_answer (int a) +{ + a = 42; +} + +int main (void) +{ + int answer; + calc_answer (answer); + printf ("The answer is %d.\n", answer); + return 0; +} diff --git a/20211011/pointers-2.c b/20211011/pointers-2.c new file mode 100644 index 0000000000000000000000000000000000000000..3bd2e86c08fbe05eb8eb9b42d886e30f8f0be286 --- /dev/null +++ b/20211011/pointers-2.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +void calc_answer (int *a) +{ + *a = 42; +} + +int main (void) +{ + int answer; + calc_answer (&answer); + printf ("The answer is %d.\n", answer); + return 0; +} diff --git a/20211011/pointers-3-O0.s b/20211011/pointers-3-O0.s new file mode 100644 index 0000000000000000000000000000000000000000..6a28ff560ab4123895be3a93b419836c7c23eef2 --- /dev/null +++ b/20211011/pointers-3-O0.s @@ -0,0 +1,55 @@ + .file "pointers-3.c" + .text + .globl calc_answer + .type calc_answer, @function +calc_answer: +.LFB0: + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movq %rdi, -8(%rbp) + movq -8(%rbp), %rax + movl $42, (%rax) + nop + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE0: + .size calc_answer, .-calc_answer + .section .rodata +.LC0: + .string "The answer is %d.\n" + .text + .globl main + .type main, @function +main: +.LFB1: + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + subq $16, %rsp + movl -4(%rbp), %eax + cltq + movq %rax, %rdi + call calc_answer + movl -4(%rbp), %eax + movl %eax, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + movl $0, %eax + leave + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20211011/pointers-3-O1.s b/20211011/pointers-3-O1.s new file mode 100644 index 0000000000000000000000000000000000000000..c03481f3891c2a8f2be7e898f96ff6669c322890 --- /dev/null +++ b/20211011/pointers-3-O1.s @@ -0,0 +1,36 @@ + .file "pointers-3.c" + .text + .globl calc_answer + .type calc_answer, @function +calc_answer: +.LFB11: + .cfi_startproc + movl $42, (%rdi) + ret + .cfi_endproc +.LFE11: + .size calc_answer, .-calc_answer + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "The answer is %d.\n" + .text + .globl main + .type main, @function +main: +.LFB12: + .cfi_startproc + subq $8, %rsp + .cfi_def_cfa_offset 16 + movl $0, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + movl $0, %eax + addq $8, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE12: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20211011/pointers-3.c b/20211011/pointers-3.c new file mode 100644 index 0000000000000000000000000000000000000000..7867933ea67073e239e5b307d2c219639442be77 --- /dev/null +++ b/20211011/pointers-3.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +void calc_answer (int *a) +{ + *a = 42; +} + +int main (void) +{ + int answer; + calc_answer (answer); + printf ("The answer is %d.\n", answer); + return 0; +} diff --git a/20211011/side-effects-1.c b/20211011/side-effects-1.c new file mode 100644 index 0000000000000000000000000000000000000000..61c4abb82e369b17b5acc83107b9baa598f371d2 --- /dev/null +++ b/20211011/side-effects-1.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + printf ("Hello, world!\n"); + "Hello, world!\n"; + return 0; +} diff --git a/20211011/side-effects-10.c b/20211011/side-effects-10.c new file mode 100644 index 0000000000000000000000000000000000000000..a8b7d83fa59ff7c170192dd330125b39297ba071 --- /dev/null +++ b/20211011/side-effects-10.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159; + printf ("pi = %lf\n", pi); + return 0; +} diff --git a/20211011/side-effects-11.c b/20211011/side-effects-11.c new file mode 100644 index 0000000000000000000000000000000000000000..ec7fb456f4f3e7e6fbde8402fe5f5608a9259c72 --- /dev/null +++ b/20211011/side-effects-11.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3, po = 14159; + printf ("pi = %lf, po = %lf\n", pi, po); + return 0; +} diff --git a/20211011/side-effects-12.c b/20211011/side-effects-12.c new file mode 100644 index 0000000000000000000000000000000000000000..9ebbaa2f296153bb8d960b6c82009418ccdb9e64 --- /dev/null +++ b/20211011/side-effects-12.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + double pi = (3,14159); + printf ("pi = %lf\n", pi); + return 0; +} diff --git a/20211011/side-effects-13.c b/20211011/side-effects-13.c new file mode 100644 index 0000000000000000000000000000000000000000..b6d4b13142282353973962d43f3c52cf2a6ee27d --- /dev/null +++ b/20211011/side-effects-13.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + double x = pi; + for (int i = 1; i <= 10; i++) + { + printf ("%2d: %lf\n", x); + x += pi; + } + return 0; +} diff --git a/20211011/side-effects-14.c b/20211011/side-effects-14.c new file mode 100644 index 0000000000000000000000000000000000000000..6b14797d23ba1737a85b93e06cd7d143922515fd --- /dev/null +++ b/20211011/side-effects-14.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + double x = pi; + for (int i = 1; i <= 10; i++) + { + printf ("%2d: %lf\n", i, x); + x += pi; + } + return 0; +} diff --git a/20211011/side-effects-15.c b/20211011/side-effects-15.c new file mode 100644 index 0000000000000000000000000000000000000000..ea4a227909eb28c1f4d2d207caa23c8cca1c8f92 --- /dev/null +++ b/20211011/side-effects-15.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + double x; + for (int i = 1, x = pi; i <= 10; i++, x += pi) + printf ("%2d: %lf\n", i, x); + return 0; +} diff --git a/20211011/side-effects-16.c b/20211011/side-effects-16.c new file mode 100644 index 0000000000000000000000000000000000000000..86570b8dc03ae1f5d0bf48b6171f5e8aed83da6c --- /dev/null +++ b/20211011/side-effects-16.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + int i; + double x; + for (i = 1, x = pi; i <= 10; i++, x += pi) + printf ("%2d: %lf\n", i, x); + return 0; +} diff --git a/20211011/side-effects-17.c b/20211011/side-effects-17.c new file mode 100644 index 0000000000000000000000000000000000000000..ab2fae4b23ba978e429df9ec7fe79c972f5a261c --- /dev/null +++ b/20211011/side-effects-17.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + int i = 1; + double x = pi; + for (; i <= 10; i++, x += pi) + printf ("%2d: %lf\n", i, x); + return 0; +} diff --git a/20211011/side-effects-18.c b/20211011/side-effects-18.c new file mode 100644 index 0000000000000000000000000000000000000000..62c8cd1599c54c689826fd8fb167c1ec54c83f1b --- /dev/null +++ b/20211011/side-effects-18.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + int i = 1; + double x = pi; + for (; i <= 10; x += pi) + printf ("%4d: %lf\n", i++, x); + return 0; +} diff --git a/20211011/side-effects-19.c b/20211011/side-effects-19.c new file mode 100644 index 0000000000000000000000000000000000000000..d2a8706fb288f913138cfbac4e99573835e04bdf --- /dev/null +++ b/20211011/side-effects-19.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + int i = 1; + double x = 0.0; + for (; i <= 10;) + printf ("%4d: %lf\n", i++, x += pi); + return 0; +} diff --git a/20211011/side-effects-2.c b/20211011/side-effects-2.c new file mode 100644 index 0000000000000000000000000000000000000000..275a28e55e4568ff0e7f135bfaae8de819d224f7 --- /dev/null +++ b/20211011/side-effects-2.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + printf ("Hello, world!\n"); + 42; + return 0; +} diff --git a/20211011/side-effects-20.c b/20211011/side-effects-20.c new file mode 100644 index 0000000000000000000000000000000000000000..7b1ff964f3d7461cba8b2e322d43f1227e2c1896 --- /dev/null +++ b/20211011/side-effects-20.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3.14159265358979323846; + printf ("pi = %lf\n", pi); + printf ("Vielfache von pi:\n"); + int i = 1; + double x = 0.0; + while (i <= 10) + printf ("%4d: %lf\n", i++, x += pi); + return 0; +} diff --git a/20211011/side-effects-3.c b/20211011/side-effects-3.c new file mode 100644 index 0000000000000000000000000000000000000000..38c183ed039e62071e61c0b6b62b46bd5341dfd8 --- /dev/null +++ b/20211011/side-effects-3.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + printf ("Hello, world!\n"); + int a = 42; + return 0; +} diff --git a/20211011/side-effects-4.c b/20211011/side-effects-4.c new file mode 100644 index 0000000000000000000000000000000000000000..e316c749c4c730c36613ebd558ccfb7687f0b9d3 --- /dev/null +++ b/20211011/side-effects-4.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + int a = printf ("Hello, world!\n"); + printf ("Die Antwort lautet: %d\n", a); + return 0; +} diff --git a/20211011/side-effects-5.c b/20211011/side-effects-5.c new file mode 100644 index 0000000000000000000000000000000000000000..aef0a3dea163f1ea7f5f4922c9d451403671ec25 --- /dev/null +++ b/20211011/side-effects-5.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + int a = 137; + int b = a = 42; + printf ("Die Antwort lautet: %d\n", a); + printf ("Die Bntwort lautet: %d\n", b); + return 0; +} diff --git a/20211011/side-effects-6.c b/20211011/side-effects-6.c new file mode 100644 index 0000000000000000000000000000000000000000..be6f48e98e7934cc487e35dd8b797535c6f6e0ab --- /dev/null +++ b/20211011/side-effects-6.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + int a = 137; + int b = a += 42; + printf ("Die Antwort lautet: %d\n", a); + printf ("Die Bntwort lautet: %d\n", b); + return 0; +} diff --git a/20211011/side-effects-7.c b/20211011/side-effects-7.c new file mode 100644 index 0000000000000000000000000000000000000000..bd9fe634ed2b0048f76f9a75b328664508df9a1a --- /dev/null +++ b/20211011/side-effects-7.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + int a = 137; + int b = a++; + printf ("Die Antwort lautet: %d\n", a); + printf ("Die Bntwort lautet: %d\n", b); + return 0; +} diff --git a/20211011/side-effects-8.c b/20211011/side-effects-8.c new file mode 100644 index 0000000000000000000000000000000000000000..b3643052e1c10d1478c4b5f4db2e431a64af9579 --- /dev/null +++ b/20211011/side-effects-8.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + int a = 137; + int b = ++a; + printf ("Die Antwort lautet: %d\n", a); + printf ("Die Bntwort lautet: %d\n", b); + return 0; +} diff --git a/20211011/side-effects-9.c b/20211011/side-effects-9.c new file mode 100644 index 0000000000000000000000000000000000000000..effe4f62347f00a84c7e08f61c9a1172d62cf558 --- /dev/null +++ b/20211011/side-effects-9.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + double pi = 3,14159; + printf ("pi = %lf\n", pi); + return 0; +}