% Created 2010-11-10 Wed 18:55
\documentclass[presentation]{beamer}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{soul}
\usepackage{t1enc}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\usepackage[english]{babel} \usepackage{ae,aecompl}
\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
\usepackage{listings}
\lstset{language=Python, basicstyle=\ttfamily\bfseries,
commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
showstringspaces=false, keywordstyle=\color{blue}\bfseries}
\providecommand{\alert}[1]{\textbf{#1}}

\title{Getting started with functions}
\author{FOSSEE}
\date{}

\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
\begin{document}

\maketitle









    
    



\begin{frame}
\frametitle{Outline}
\label{sec-1}

\begin{itemize}
\item Define functions
\item Pass arguments to functions
\item Learn about docstrings
\item Return values from functions
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Function}
\label{sec-2}

\begin{itemize}
\item Eliminate code redundancy
\item Help in code reuse
\item Subroutine

\begin{itemize}
\item relatively independent of remaining code
\end{itemize}

\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{f(x)} a mathematical function}
\label{sec-3}


  $f(x) = x^{2}$

\begin{verbatim}
   f(1) -> 1
   f(2) -> 4
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Define \texttt{f(x)} in Python}
\label{sec-4}

\begin{verbatim}
def f(x):
    return x*x
\end{verbatim}

\begin{itemize}
\item \texttt{def} - keyword
\item \texttt{f} - function name
\item \texttt{x} - parameter / argument to function \texttt{f}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Exercise 1}
\label{sec-5}


  Write a python function named \texttt{cube} which computes the cube of a given
  number \texttt{n}.
  
\begin{itemize}
\item Pause here and try to solve the problem yourself.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution}
\label{sec-6}

\begin{verbatim}
def cube(n):
    return n**3
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{greet} function}
\label{sec-7}


 Function \texttt{greet} which will print \texttt{Hello World!}.
\begin{verbatim}
def greet():
    print "Hello World!"
\end{verbatim}
\begin{itemize}
\item Call the function \texttt{greet}
\begin{verbatim}
     In []: greet()
     Hello World!
\end{verbatim}

\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Exercise 2}
\label{sec-8}


  Write a python function named \texttt{avg} which computes the average of
  \texttt{a} and \texttt{b}.

\begin{itemize}
\item Pause here and try to solve the problem yourself.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 2}
\label{sec-9}

\begin{verbatim}
def avg(a,b):
    return (a + b)/2
\end{verbatim}

\begin{itemize}
\item \texttt{a} and \texttt{b} are parameters
\item \texttt{def f(p1, p2, p3, ... , pn)}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Docstring}
\label{sec-10}


\begin{itemize}
\item Documenting/commenting code is a good practice
\begin{verbatim}
def avg(a,b):
    """ avg takes two numbers as input 
    (a & b), and returns the average 
    of a and b"""
    return (a+b)/2
\end{verbatim}
\item Docstring

\begin{itemize}
\item written in the line after the \texttt{def} line.
\item Inside triple quote.
\end{itemize}

\item Documentation
\begin{verbatim}
     avg?
\end{verbatim}

\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Exercise 3}
\label{sec-11}

  Add docstring to the function f.
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 3}
\label{sec-12}


\begin{verbatim}
def f(x):
    """Accepts a number x as argument and,
    returns the square of the number x."""
    return x*x
\end{verbatim}
\end{frame}
\begin{frame}
\frametitle{Exercise 4}
\label{sec-13}

  Write a python function named \texttt{circle} which returns the area and
  perimeter of a circle given radius \texttt{r}.
\end{frame}
\begin{frame}[fragile]
\frametitle{Solution 4}
\label{sec-14}

\begin{verbatim}
def circle(r):
    """returns area and perimeter of a circle given 
    radius r"""
    pi = 3.14
    area = pi * r * r
    perimeter = 2 * pi * r
    return area, perimeter
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{what}}
\label{sec-15}

\begin{verbatim}

def what( n ):
    if n < 0: n = -n
    while n > 0:
        if n % 2 == 1:
            return False
        n /= 10
    return True
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{even\_digits}}
\label{sec-16}

\begin{verbatim}
def even_digits( n ):
   """returns True if all the digits of number 
   n is even returns False if all the digits 
   of number n is not even"""
    if n < 0: n = -n
    while n > 0:
        if n % 2 == 1:
            return False
        n /= 10
    return True
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{what}}
\label{sec-17}

\begin{verbatim}
def what( n ):
    i = 1
    while i * i < n:
        i += 1
    return i * i == n, i
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{\texttt{is\_perfect\_square}}
\label{sec-18}

\begin{verbatim}
def is_perfect_square( n ):
    """returns True and square root of n, 
    if n is a perfect square, otherwise 
    returns False and the square root 
    of the next perfect square"""
    i = 1
    while i * i < n:
        i += 1
    return i * i == n, i
\end{verbatim}
\end{frame}
\begin{frame}
\frametitle{Summary}
\label{sec-19}

\begin{itemize}
\item Functions in Python
\item Passing parameters to a function
\item Returning values from a function
\item We also did few code reading exercises.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Thank you!}
\label{sec-20}

  \begin{block}{}
  \begin{center}
  This spoken tutorial has been produced by the
  \textcolor{blue}{FOSSEE} team, which is funded by the 
  \end{center}
  \begin{center}
    \textcolor{blue}{National Mission on Education through \\
      Information \& Communication Technology \\ 
      MHRD, Govt. of India}.
  \end{center}  
  \end{block}
\end{frame}

\end{document}
