Skip to content
This repository was archived by the owner on Apr 21, 2018. It is now read-only.

Commit ca8c266

Browse files
author
YouniS Bensalah
committed
Recursion so far
1 parent 8f6033a commit ca8c266

3 files changed

Lines changed: 272 additions & 4 deletions

File tree

img/2016.png

56.8 KB
Loading

slides-05.tex

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -886,10 +886,6 @@ \subsection{Adjazenzmatrix}
886886
\begin{figure}
887887
\includegraphics[scale=.5]{img/dilbert2733310071001kc4.png}
888888
\end{figure}
889-
890-
\begin{flushright}
891-
\footnotesize{xkcd.com}
892-
\end{flushright}
893889
\end{frame}
894890

895891
\backupend

slides-09.tex

Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
%% LaTeX-Beamer template for KIT design
2+
%% by Erik Burger, Christian Hammer
3+
%% title picture by Klaus Krogmann
4+
%%
5+
%% version 2.1
6+
%%
7+
%% mostly compatible to KIT corporate design v2.0
8+
%% http://intranet.kit.edu/gestaltungsrichtlinien.php
9+
%%
10+
%% Problems, bugs and comments to
11+
12+
13+
\documentclass[18pt]{beamer}
14+
15+
%% SLIDE FORMAT
16+
17+
% use 'beamerthemekit' for standard 4:3 ratio
18+
% for widescreen slides (16:9), use 'beamerthemekitwide'
19+
20+
\usepackage{templates/beamerthemekit}
21+
% \usepackage{templates/beamerthemekitwide}
22+
23+
\usepackage[utf8]{inputenc}
24+
\usepackage{hyperref}
25+
\usepackage{listings}
26+
\usepackage{color}
27+
%\usepackage{xcolor}
28+
%\usepackage{colortbl}
29+
%\usepackage{array}
30+
%\usepackage{tikz}
31+
%\usetikzlibrary{calc,shapes.multipart,chains,arrows}
32+
\usepackage{amsmath}
33+
\usepackage{amssymb}
34+
\usepackage{mathrsfs}
35+
36+
%\definecolor{lime}{HTML}{8FFF53}
37+
38+
\newcommand{\quotes}[1]{``#1''}
39+
40+
%% TITLE PICTURE
41+
42+
% if a custom picture is to be used on the title page, copy it into the 'logos'
43+
% directory, in the line below, replace 'mypicture' with the
44+
% filename (without extension) and uncomment the following line
45+
% (picture proportions: 63 : 20 for standard, 169 : 40 for wide
46+
% *.eps format if you use latex+dvips+ps2pdf,
47+
% *.jpg/*.png/*.pdf if you use pdflatex)
48+
49+
\titleimage{greendrop}
50+
51+
%% TITLE LOGO
52+
53+
% for a custom logo on the front page, copy your file into the 'logos'
54+
% directory, insert the filename in the line below and uncomment it
55+
56+
%\titlelogo{mylogo}
57+
58+
% (*.eps format if you use latex+dvips+ps2pdf,
59+
% *.jpg/*.png/*.pdf if you use pdflatex)
60+
61+
%% TikZ INTEGRATION
62+
63+
% use these packages for PCM symbols and UML classes
64+
% \usepackage{templates/tikzkit}
65+
% \usepackage{templates/tikzuml}
66+
67+
% the presentation starts here
68+
69+
\title[Rekursion, Java API, Testen]{Programmieren:\\ Rekursion, Java API, Testen}
70+
\subtitle{Tutorium 30}
71+
\author{YouniS Bensalah}
72+
\date{January 15, 2016}
73+
74+
\institute{Chair for Software Design and Quality}
75+
76+
% Bibliography
77+
78+
\usepackage[citestyle=authoryear,bibstyle=numeric,hyperref,backend=biber]{biblatex}
79+
\addbibresource{templates/example.bib}
80+
\bibhang1em
81+
82+
\begin{document}
83+
84+
% change the following line to "ngerman" for German style date and logos
85+
\selectlanguage{english}
86+
87+
%title page
88+
\begin{frame}
89+
\titlepage
90+
\end{frame}
91+
92+
%table of contents
93+
\begin{frame}{Heute}
94+
\tableofcontents
95+
\end{frame}
96+
97+
\section{Organisatorisches}
98+
99+
\begin{frame}{Wichtige Termine}
100+
\begin{itemize}
101+
\item Programmieren \textbf{Übungsschein}\\
102+
Anmeldezeitraum: zwischen 01.10.2015 und \alert{10.02.2016}
103+
\item Programmieren \textbf{Abschlussaufgaben}\\
104+
Anmeldezeitraum: zwischen 01.10.2015 und \alert{24.02.2016}
105+
\vspace{.2in}
106+
\item Anmeldung über das \textbf{Campus Management Portal}:\\
107+
\begin{itemize}
108+
\item \url{https://campus.studium.kit.edu}
109+
\end{itemize}
110+
\end{itemize}
111+
\end{frame}
112+
113+
114+
\begin{frame}{Nächstes Semester}
115+
\begin{itemize}
116+
\item Programmieren-Vorlesung findet \textbf{nicht} statt.
117+
\item Tutorien \textbf{auch nicht}.
118+
\item \textbf{Übungsschein} kann erworben werden.
119+
\begin{itemize}
120+
\item 6 Übungsblätter
121+
\item mind. $50\%$ der Punkte
122+
\end{itemize}
123+
\end{itemize}
124+
\end{frame}
125+
126+
\section{Rekursion}
127+
128+
\subsubsection{Divide and Conquer}
129+
130+
\begin{frame}{Divide and Conquer}
131+
\begin{itemize}
132+
\item \quotes{Teile und herrsche}
133+
\item Wichtiger Ansatz in der Algorithmik
134+
\vspace{.2in}
135+
\begin{enumerate}
136+
\item Teile Problem so lange in kleinere Teilprobleme, bis diese einfach lösbar sind.
137+
\item Löse die einzelnen Teilprobleme.
138+
\item Füge Teillösungen zu Lösung des Gesamtproblems zusammen.
139+
\end{enumerate}
140+
\end{itemize}
141+
\end{frame}
142+
143+
\subsubsection{Rekursion}
144+
145+
\begin{frame}{Rekursion}
146+
Siehe \quotes{Rekursion}.
147+
\end{frame}
148+
149+
\begin{frame}{Rekursion}
150+
\begin{itemize}
151+
\item \textbf{Prinzip der Rekursion}
152+
\begin{itemize}
153+
\item Eine Funktion kann sich selbst in ihrer Definition aufrufen.
154+
\item Man führt das gleiche Berechnungsmuster immer wieder mit kleineren Eingabedaten aus,
155+
bis man zu einer trivialen Eingabe gelangt.
156+
\end{itemize}
157+
\pause
158+
\vspace{.2in}
159+
\item Rekursion ist eine Form von \textit{Divide and Conquer}.
160+
\end{itemize}
161+
\end{frame}
162+
163+
\begin{frame}{Rekursion}
164+
\begin{exampleblock}{Beispiel: Fakultät}
165+
\begin{itemize}
166+
\item Berechnung der Fakultät einer (nicht negativen, ganzen) Zahl:\\
167+
\vspace{.2in}
168+
$
169+
n! = \prod\limits_{i=1}^{n} =
170+
\begin{cases}
171+
n \cdot (n-1)! & \text{if\qquad} x > 0 \\
172+
0 & \text{if\qquad} x = 0
173+
\end{cases}
174+
$
175+
\end{itemize}
176+
\end{exampleblock}
177+
\end{frame}
178+
179+
\begin{frame}[fragile]{Rekursion}
180+
\begin{exampleblock}{}
181+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
182+
int factorial(int n) {
183+
if (n > 0) {
184+
return n * factorial(n - 1);
185+
} else {
186+
return 1;
187+
}
188+
}
189+
\end{lstlisting}
190+
191+
\end{exampleblock}
192+
193+
\end{frame}
194+
195+
\begin{frame}[fragile]{Ackermannfunktion}
196+
\begin{itemize}
197+
\item Schreibe ein Java-Programm, das die im folgenden definierte Funktion $\mathscr{A}$ (\textit{Ackermannfunktion}) berechnet:
198+
\end{itemize}
199+
\begin{exampleblock}{}
200+
$
201+
\mathscr{A}(m, n) =
202+
\begin{cases}
203+
n+1 & \text{if\qquad} m = 0\\
204+
\mathscr{A}(m-1, 1) & \text{if\qquad} m > 0 \text{\,and\,} n = 0\\
205+
\mathscr{A}(m-1, \mathscr{A}(m, n-1)) & \text{if\qquad} m > 0 \text{\,and\,} n > 0
206+
\end{cases}
207+
$
208+
\end{exampleblock}
209+
210+
\end{frame}
211+
212+
213+
\subsubsection{Iteration vs. Rekursion}
214+
215+
\begin{frame}[fragile]{Iteration vs. Rekursion}
216+
Alternativ\dots
217+
\begin{exampleblock}{}
218+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
219+
int factorial(int n) {
220+
int result = 1;
221+
for (int i = 2; i <= n; i++) {
222+
result *= i;
223+
}
224+
return result;
225+
}
226+
\end{lstlisting}
227+
228+
\end{exampleblock}
229+
\end{frame}
230+
231+
\begin{frame}{Rekursion}
232+
\textbf{Zusammenfassung}
233+
\begin{itemize}
234+
\item \textbf{Rekursion} kann speicheraufwendig werden, da jedes Mal eine neue Instanz der Methode aufgerufen wird.
235+
\begin{itemize}
236+
\item Stack kann überlaufen !
237+
\end{itemize}
238+
\item Nicht immer klar, ob die Berechnung terminiert.
239+
\item Rekursion ist bei manchen Problemen eine elegante Lösung
240+
\item Es gibt nicht immer eine \quotes{iterative Lösung} (siehe \textit{Ackermannfunktion})
241+
\end{itemize}
242+
\end{frame}
243+
244+
245+
\section{Java API}
246+
247+
248+
249+
\section{Testen}
250+
251+
\begin{frame}{Fragen ?}
252+
\begin{figure}
253+
\includegraphics[scale=.5]{img/question_to_idea.jpg}
254+
\end{figure}
255+
\end{frame}
256+
257+
\appendix
258+
\beginbackup
259+
260+
\begin{frame}{Bis nächste Woche !}
261+
\begin{figure}
262+
\includegraphics[scale=.5]{img/2016.png}
263+
\end{figure}
264+
265+
\begin{flushright}
266+
\footnotesize{xkcd.com}
267+
\end{flushright}
268+
\end{frame}
269+
270+
\backupend
271+
272+
\end{document}

0 commit comments

Comments
 (0)