summaryrefslogtreecommitdiff
path: root/book/module1/control_structures.tex
diff options
context:
space:
mode:
Diffstat (limited to 'book/module1/control_structures.tex')
-rw-r--r--book/module1/control_structures.tex206
1 files changed, 206 insertions, 0 deletions
diff --git a/book/module1/control_structures.tex b/book/module1/control_structures.tex
new file mode 100644
index 0000000..746b7a5
--- /dev/null
+++ b/book/module1/control_structures.tex
@@ -0,0 +1,206 @@
+\section{Control Structures}\label{control-structures}
+
+Control structures allow us to control the flow of execution in a Python
+program. The two main types are \textbf{conditional statements
+(\texttt{if} statements)} and \textbf{loops (\texttt{for} and
+\texttt{while} loops)}.
+
+\subsection{Conditional Statements}\label{conditional-statements}
+
+Conditional statements allow a program to execute different blocks of
+code depending on whether a given condition is \texttt{True} or
+\texttt{False}. These conditions are typically comparisons, such as
+checking if one number is greater than another.
+
+\subsubsection{\texorpdfstring{The \texttt{if}
+Statement}{The if Statement}}\label{the-if-statement}
+
+The simplest form of a conditional statement is the \texttt{if}
+statement. If the condition evaluates to \texttt{True}, the indented
+block of code runs. Otherwise, the program moves on without executing
+the statement.
+
+For example, consider a situation where we need to determine if a person
+is an adult based on their age. If the age is 18 or greater, we print a
+message saying they are an adult.
+
+\subsubsection{\texorpdfstring{The \texttt{if-else}
+Statement}{The if-else Statement}}\label{the-if-else-statement}
+
+Sometimes, we need to specify what should happen if the condition is
+\texttt{False}. The \texttt{else} clause allows us to handle this case.
+Instead of just skipping over the block, the program can execute an
+alternative action.
+
+For instance, if a person is younger than 18, they are considered a
+minor. If the condition of being an adult is not met, the program will
+print a message indicating that the person is a minor.
+
+\subsubsection{\texorpdfstring{The \texttt{if-elif-else}
+Statement}{The if-elif-else Statement}}\label{the-if-elif-else-statement}
+
+When dealing with multiple conditions, the \texttt{if-elif-else}
+structure is useful. The program evaluates conditions in order,
+executing the first one that is \texttt{True}. If none of the conditions
+are met, the \texttt{else} block runs.
+
+For example, in a grading system, different score ranges correspond to
+different letter grades. If a student's score is 90 or higher, they
+receive an ``A''. If it's between 80 and 89, they get a ``B'', and so
+on. If none of the conditions match, they receive an ``F''.
+
+\subsubsection{\texorpdfstring{Nested \texttt{if}
+Statements}{Nested if Statements}}\label{nested-if-statements}
+
+Sometimes, we need to check conditions within other conditions. This is
+known as \textbf{nesting}. For example, if we first determine that a
+person is an adult, we can then check if they are a student. Based on
+that information, we print different messages.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\CommentTok{\# Getting user input for the student\textquotesingle{}s score}
+\NormalTok{score }\OperatorTok{=} \BuiltInTok{int}\NormalTok{(}\BuiltInTok{input}\NormalTok{(}\StringTok{"Enter the student\textquotesingle{}s score (0{-}100): "}\NormalTok{))}
+
+\ControlFlowTok{if} \DecValTok{0} \OperatorTok{\textless{}=}\NormalTok{ score }\OperatorTok{\textless{}=} \DecValTok{100}\NormalTok{:}
+ \ControlFlowTok{if}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{90}\NormalTok{:}
+\NormalTok{ grade }\OperatorTok{=} \StringTok{"A"}
+ \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{80}\NormalTok{:}
+\NormalTok{ grade }\OperatorTok{=} \StringTok{"B"}
+ \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{70}\NormalTok{:}
+\NormalTok{ grade }\OperatorTok{=} \StringTok{"C"}
+ \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{60}\NormalTok{:}
+\NormalTok{ grade }\OperatorTok{=} \StringTok{"D"}
+ \ControlFlowTok{else}\NormalTok{:}
+\NormalTok{ grade }\OperatorTok{=} \StringTok{"F"} \CommentTok{\# Score below 60 is a failing grade}
+
+
+ \ControlFlowTok{if}\NormalTok{ grade }\OperatorTok{==} \StringTok{"F"}\NormalTok{:}
+ \BuiltInTok{print}\NormalTok{(}\StringTok{"The student has failed."}\NormalTok{)}
+\NormalTok{ retake\_eligible }\OperatorTok{=} \BuiltInTok{input}\NormalTok{(}\StringTok{"Is the student eligible for a retest? (yes/no): "}\NormalTok{).strip().lower()}
+
+ \ControlFlowTok{if}\NormalTok{ retake\_eligible }\OperatorTok{==} \StringTok{"yes"}\NormalTok{:}
+ \BuiltInTok{print}\NormalTok{(}\StringTok{"The student is eligible for a retest."}\NormalTok{)}
+ \ControlFlowTok{else}\NormalTok{:}
+ \BuiltInTok{print}\NormalTok{(}\StringTok{"The student has failed the course and must retake it next semester."}\NormalTok{)}
+
+
+\end{Highlighting}
+\end{Shaded}
+
+\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
+
+\subsection{Loops in Python}\label{loops-in-python}
+
+Loops allow a program to execute a block of code multiple times. This is
+especially useful for tasks such as processing lists of data, performing
+repetitive calculations, or automating tasks.
+
+\subsubsection{\texorpdfstring{The \texttt{for}
+Loop}{The for Loop}}\label{the-for-loop}
+
+A \texttt{for} loop iterates over a sequence, such as a list, tuple,
+string, or a range of numbers. Each iteration assigns the next value in
+the sequence to a loop variable, which can then be used inside the loop.
+
+For instance, if we have a list of fruits and want to print each fruit's
+name, a \texttt{for} loop can iterate over the list and display each
+item.
+
+Another useful feature of \texttt{for} loops is the \texttt{range()}
+function, which generates a sequence of numbers. This is commonly used
+when we need to repeat an action a specific number of times. For
+example, iterating from 0 to 4 allows us to print a message five times.
+
+Additionally, the \texttt{enumerate()} function can be used to loop
+through a list while keeping track of the index of each item. This is
+useful when both the position and the value in a sequence are needed.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{fruits }\OperatorTok{=}\NormalTok{ [}\StringTok{"apple"}\NormalTok{, }\StringTok{"banana"}\NormalTok{, }\StringTok{"cherry"}\NormalTok{] }
+\ControlFlowTok{for}\NormalTok{ x }\KeywordTok{in}\NormalTok{ fruits: }
+  \BuiltInTok{print}\NormalTok{(x)}
+\end{Highlighting}
+\end{Shaded}
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ControlFlowTok{for}\NormalTok{ x }\KeywordTok{in} \BuiltInTok{range}\NormalTok{(}\DecValTok{6}\NormalTok{): }
+  \BuiltInTok{print}\NormalTok{(x) }
+\ControlFlowTok{else}\NormalTok{: }
+  \BuiltInTok{print}\NormalTok{(}\StringTok{"Finally finished!"}\NormalTok{)}
+\end{Highlighting}
+\end{Shaded}
+
+\subsubsection{\texorpdfstring{The \texttt{while}
+Loop}{The while Loop}}\label{the-while-loop}
+
+Unlike \texttt{for} loops, which iterate over a sequence, \texttt{while}
+loops continue running as long as a specified condition remains
+\texttt{True}. This is useful when the number of iterations is not known
+in advance.
+
+For example, a countdown timer can be implemented using a \texttt{while}
+loop. The loop will continue decreasing the count until it reaches zero.
+
+It's important to be careful with \texttt{while} loops to avoid infinite
+loops, which occur when the condition never becomes \texttt{False}. To
+prevent this, ensure that the condition will eventually change during
+the execution of the loop.
+
+A \texttt{while} loop can also be used to wait for a certain event to
+occur. For example, in interactive programs, a \texttt{while\ True} loop
+can keep running until the user provides a valid input, at which point
+we break out of the loop.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{i }\OperatorTok{=} \DecValTok{1}
+\ControlFlowTok{while}\NormalTok{ i }\OperatorTok{\textless{}} \DecValTok{6}\NormalTok{: }
+\NormalTok{  print(i) }
+\NormalTok{  i }\OperatorTok{+=} \DecValTok{1}
+\end{Highlighting}
+\end{Shaded}
+
+\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
+
+\subsection{Loop Control Statements}\label{loop-control-statements}
+
+Python provides special statements to control the behavior of loops.
+These can be used to break out of a loop, skip certain iterations, or
+simply include a placeholder for future code.
+
+\subsubsection{\texorpdfstring{The \texttt{break}
+Statement}{The break Statement}}\label{the-break-statement}
+
+The \texttt{break} statement is used to exit a loop before it has
+iterated through all its elements. When the \texttt{break} statement is
+encountered, the loop stops immediately, and the program continues
+executing the next statement outside the loop.
+
+For instance, if we are searching for a specific value in a list, we can
+use a \texttt{break} statement to stop the loop as soon as we find the
+item, instead of continuing unnecessary iterations.
+
+\subsubsection{\texorpdfstring{The \texttt{continue}
+Statement}{The continue Statement}}\label{the-continue-statement}
+
+The \texttt{continue} statement is used to skip the current iteration
+and proceed to the next one. Instead of exiting the loop entirely, it
+simply moves on to the next cycle.
+
+For example, if we are iterating over numbers and want to skip
+processing number 2, we can use \texttt{continue}. The loop will ignore
+that iteration and proceed with the next number.
+
+\subsubsection{\texorpdfstring{The \texttt{pass}
+Statement}{The pass Statement}}\label{the-pass-statement}
+
+The \texttt{pass} statement is a placeholder that does nothing. It is
+useful when a block of code is syntactically required but no action
+needs to be performed yet.
+
+For example, in a loop where a condition has not yet been implemented,
+using \texttt{pass} ensures that the code remains valid while avoiding
+errors.