\documentclass{beamer} %include lhs2TeX.fmt \author{Piyush P Kurur\\ Office no: 224\\ Dept. of Comp. Sci. and Engg.\\ IIT Kanpur} \newcommand{\Token}[2][]{\node(#2#1)[token]{#2};} \newcommand{\Symbol}[2][]{\node(#2#1)[symbol]{#2};} \newcommand{\Point}[1]{\node(#1)[point]{#1};} \usepackage{tikz} \usetikzlibrary{positioning,shapes,chains,fit} \usetikzlibrary{shapes.symbols} \usetikzlibrary{matrix} \usetikzlibrary{backgrounds} \usetikzlibrary{shapes.geometric} \usepackage{pgfkeys} \usepackage{multicol} \pgfkeys % {% /tikz/coin/.style={ rectangle, minimum height=2.5mm, minimum width=1cm, draw=black, fill=black!20, rounded corners }, /tikz/towercolor/.style={ fill=black!90 }, /tikz/towerbase/.style={ trapezium, trapezium angle=45, trapezium stretches=true, towercolor, minimum width=7.5mm, minimum height=2.5mm, }, /tikz/tower/.style={ rectangle, rounded corners, towercolor, minimum width=2.5mm, minimum height=17.5mm, } } \title{Fundamentals of Computing: Lecture 9} \date{August 17, 2009} \begin{document} \begin{frame} \maketitle \end{frame} \begin{frame} \frametitle{Summary of last class} \pause \begin{itemize} \item We looked at the tower of hanoi problem. \pause \item We gave a recursive solution to that problem. \pause \end{itemize} \end{frame} \begin{frame} \begin{block}{Another example} Given an integer $n$ print the sequence $n, n-1,\dots,1, 0, 1, \ldots, n - 1, n$ \end{block} \end{frame} \begin{frame} \begin{block}{Using iteration} \begin{code} # include void downUp(int n) { for(int i = n; i > 0; i--) { printf("%d, ", i); } printf("0"); for(int i = 1; i <= n; i ++) { printf(", %d", i); } } \end{code} \end{block} \end{frame} \begin{frame} Let $S_n$ denote the sequence $n,\ldots, 0 , \ldots, n$. \begin{block}{Recursive definition} \begin{eqnarray*} S_{0} & = & 0\\ S_{n} & = & n, S_{n-1}, n \end{eqnarray*} \end{block} \pause \begin{code} void downUpRec(int n) { if(n <= 0) { printf("0"); return; } printf("%d, ", n); downUpRec(n-1); printf(", %d", n); } \end{code} \end{frame} \begin{frame} \begin{block}{The |main| function} \begin{code} void downUpRec(int); void downUp(int ); int main() { int n; printf("enter the number: "); scanf("%d",&n); printf("Iterative:\t"); downUp(n); printf("\nRecursive:\t"); downUpRec(n); printf("\n"); } \end{code} \end{block} \end{frame} \begin{frame} \frametitle{Separate compilation} \begin{itemize} \item Create a file |downUp.c| that contains the definition of the function |void downUp(int)| \item Create a file |downUpRec.c| that contains the definition of the function |void downUpRec(int)| \item Create a file |main.c| \end{itemize} \begin{block}{Compiling} \begin{spec} $ gcc -std=c99 main.c downUp.c downUpRec.c $ gcc -std=c99 -c downUp.c $ gcc -std=c99 -c downUpRec.c $ gcc -std=c99 main.c downUp.o downUpRec.o \end{spec} \end{block} \end{frame} \end{document}