Skip to content
Snippets Groups Projects
Commit bfc50dc0 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispielprogramme 16.4.2018

parent 129f7e06
No related branches found
No related tags found
No related merge requests found
Showing
with 350 additions and 1 deletion
No preview for this file type
......@@ -26,6 +26,7 @@
\usepackage{pgslides}
\usepackage{tikz}
\usepackage{soul}
\newcommand{\underconstruction}{%
\begin{picture}(0,0)
......@@ -333,8 +334,9 @@
\pause
\item
Ab C++11: \lstinline{constexpr}-Funktionen\\%\pause\\
{\color{red}\dots\ anscheinend auch ohne "`constexpr"' \dots}\\
darf nur aus einem einzigen \lstinline{return}-Statement bestehen\\
\textarrow\ keine Schleife, aber Rekursion erlaubt
\textarrow\ keine Schleife {-- \color{red}\strikeout{oder vielleicht doch} außer ab C++14 --}, aber Rekursion erlaubt
\pause
\item
leere Parameterliste: \lstinline{void} optional\\
......
#include <stdio.h>
#define ANSWER 42
int main (void)
{
printf ("%d\n", ANSWER);
return 0;
}
#include <stdio.h>
constexpr long long unsigned fak (int n)
{
long long unsigned result = 1;
for (int i = 2; i < n; i++)
result *= i;
return result;
}
const long long unsigned fak10 = fak (10);
int large_array[fak10];
int main (void)
{
printf ("%llu\n", fak10);
printf ("%d\n", large_array[1117]);
return 0;
}
#include <stdio.h>
constexpr long long unsigned fak (int n)
{
if (n < 2)
return 1;
else
return n * fak (n - 1);
}
const long long unsigned fak10 = fak (10);
int large_array[fak10];
int main (void)
{
printf ("%llu\n", fak10);
printf ("%d\n", large_array[1117]);
return 0;
}
#include <stdio.h>
constexpr long long unsigned fak (int n)
{
return n < 2 ? 1 : n * fak (n - 1);
}
const long long unsigned fak10 = fak (10);
int large_array[fak10];
int main (void)
{
printf ("%llu\n", fak10);
printf ("%d\n", large_array[1117]);
return 0;
}
#include <stdio.h>
const int answer = 42;
int main (void)
{
printf ("%d\n", answer);
return 0;
}
#include <stdio.h>
#define n 5
int prime[n] = { 2, 3, 5, 7, 11 };
int main (void)
{
for (int i = 0; i < n; i++)
printf ("%d\n", prime[i]);
return 0;
}
#include <stdio.h>
const int n = 5;
int prime[n] = { 2, 3, 5, 7, 11 };
int main (void)
{
for (int i = 0; i < n; i++)
printf ("%d\n", prime[i]);
return 0;
}
#include <stdio.h>
const int n = 5;
int prime[5] = { 2, 3, 5, 7, 11 };
int main (void)
{
n = 42;
for (int i = 0; i < n; i++)
printf ("%d\n", prime[i]);
return 0;
}
#include <stdio.h>
const int n = 5;
int prime[n] = { 2, 3, 5, 7, 11 };
int main (void)
{
printf ("%016x\n", (long long unsigned) &n);
return 0;
}
#include <stdio.h>
int square (int x)
{
return x * x;
}
const int vier = square (2);
int main (void)
{
printf ("%d\n", vier);
return 0;
}
#include <stdio.h>
constexpr int square (int x)
{
return x * x;
}
const int vier = square (2);
int main (void)
{
printf ("%d\n", vier);
return 0;
}
#include <stdio.h>
constexpr long long unsigned fak (int n)
{
long long unsigned result = 1;
for (int i = 2; i < n; i++)
result *= i;
return result;
}
const long long unsigned fak10 = fak (10);
int main (void)
{
printf ("%llu\n", fak10);
return 0;
}
#include <stdio.h>
void print (char *s)
{
printf ("%s", s);
}
void print (int i)
{
printf ("%d", i);
}
void print ()
{
printf ("\n");
}
int main ()
{
print ("The answer is: ");
print (42);
print ();
return 0;
}
#include <stdio.h>
void print (const char *s)
{
printf ("%s", s);
}
void print (int i)
{
printf ("%d", i);
}
void print ()
{
printf ("\n");
}
int main ()
{
print ("The answer is: ");
print (42);
print ();
return 0;
}
.file "functions-2.cpp"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "%s"
.text
.globl _Z5printPKc
.type _Z5printPKc, @function
_Z5printPKc:
.LFB12:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movq %rdi, %rsi
leaq .LC0(%rip), %rdi
movl $0, %eax
call printf@PLT
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE12:
.size _Z5printPKc, .-_Z5printPKc
.section .rodata.str1.1
.LC1:
.string "%d"
.text
.globl _Z5printi
.type _Z5printi, @function
_Z5printi:
.LFB13:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movl %edi, %esi
leaq .LC1(%rip), %rdi
movl $0, %eax
call printf@PLT
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE13:
.size _Z5printi, .-_Z5printi
.globl _Z5printv
.type _Z5printv, @function
_Z5printv:
.LFB14:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
movl $10, %edi
call putchar@PLT
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE14:
.size _Z5printv, .-_Z5printv
.section .rodata.str1.1
.LC2:
.string "The answer is: "
.text
.globl main
.type main, @function
main:
.LFB15:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
leaq .LC2(%rip), %rdi
call _Z5printPKc
movl $42, %edi
call _Z5printi
call _Z5printv
movl $0, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE15:
.size main, .-main
.ident "GCC: (Debian 6.3.0-18) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
#include <stdio.h>
extern void print (const char *s);
void print (int i)
{
printf ("%d", i);
}
void print ()
{
printf ("\n");
}
int main ()
{
print ("The answer is: ");
print (42);
print ();
return 0;
}
#include <stdio.h>
void print (const char *s)
{
printf ("%s", s);
}
#include <stdio.h>
extern void print (const char *s);
void print (int i)
{
printf ("%d", i);
}
void print ()
{
printf ("\n");
}
int main ()
{
print ("The answer is: ");
print (42);
print ();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment