% Created 2010-11-10 Wed 18:59
\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}