diff options
Diffstat (limited to 'sem01/main.tex')
| -rw-r--r-- | sem01/main.tex | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/sem01/main.tex b/sem01/main.tex new file mode 100644 index 0000000..936079b --- /dev/null +++ b/sem01/main.tex @@ -0,0 +1,257 @@ +\documentclass{beamer} + +\usepackage[utf8]{inputenc} +\usepackage[swedish]{babel} + +\usepackage{minted} % code with syntax highlighting + +\title{Seminarium 01} +\subtitle{Satser och uttryck} +\date{7 september 2021} + +\setlength{\parskip}{1em} +\renewcommand{\baselinestretch}{1.2} + +\AtBeginSection[] % Do nothing for \section* +{ +\begin{frame}<beamer> +\frametitle{Planering} +\tableofcontents[currentsection] +\end{frame} +} + +\begin{document} + \frame{\titlepage} + + \section*{Introduktion} + + \begin{frame} + \frametitle{Lite om mig} + + Gustav Sörnäs \\ + \texttt{gusso230@student.liu.se} + + Ett år på Y, numera D3. + + Handledare för halva U1.b. + + \end{frame} + + \begin{frame} + \frametitle{Lite om er} + + D1 och U1 (och kanske några äldre). + + Inga förväntade förkunskaper innan universitetet. + + Redo att testa er fram själva / i små grupper med egen dator. + + \end{frame} + + \begin{frame} + \frametitle{Lite om seminarieformen} + + Mer fokus på eget kodskrivande än ''Ett steg i taget'', men mer konkret än + ''Diskussion och analys''. + + Fritt fram att byta spår under terminen. + + Innan seminariet: läs förberedelsematerialet och försök er på uppgifterna. + + \end{frame} + + \begin{frame} + \frametitle{Dagens seminarium} + + \begin{itemize} + \item Satser och uttryck. + \item Analysera \texttt{fibonacci}. + \item Implementera en matematiskt definerad funktion. + \item Uppgift: skriv en egen funktion. + \item Variablers synlighet. + \end{itemize} + + Inte så mycket kodskrivning. Diskussioner först i mindre grupper och sedan i + helklass. + + \end{frame} + + \begin{frame} + \frametitle{Satser och uttryck} + + Sats (\textit{statement}): En typ av \emph{instruktion} som kan utföras av + Python. Enkla satser (tilldelning) och sammansatta satser (\texttt{for}, + \texttt{def}, \texttt{if}). + + Uttryck (\textit{expression}): Något som Python kan utvärdera till ett + värde. Enkla uttryck (identifierare och \textit{literaler} (eller + \textit{konstanter})) och sammansatta uttryck (additioner, subtraktioner, + \dots). + + \end{frame} + + \begin{frame}[fragile] + \frametitle{\texttt{fibonacci}} + + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{minted}[linenos]{python} +def fibonacci(n): + if n < 3: + return n - 1 + a = 0 + b = 1 + + for i in range(n - 2): + c = b + b = a + b + a = c + return b + \end{minted} + \end{column}% + \begin{column}{0.48\textwidth} + \begin{enumerate} + \item Hur många satser finns i koden? + \item Hur många sammansatta uttryck finns i koden? + \end{enumerate} + \end{column}% + \end{columns} + \end{frame} + + \begin{frame}[fragile] + \frametitle{\texttt{fibonacci}} + + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{minted}[linenos]{python} +def fibonacci(n): + if n < 3: + return n - 1 + a = 0 + b = 1 + + for i in range(n - 2): + c = b + b = a + b + a = c + return b + \end{minted} + \end{column}% + \begin{column}{0.48\textwidth} + \begin{enumerate} + \item Vad gör funktionen? + \item Vad returnerar funktionen? + \item Vilken indata hanterar funktionen? + \item Vad används variabeln \texttt{c} till? Vad skulle den kunna heta istället? + \item Är returvärdet ett heltal eller flyttal? + \item Vad kommer hända om ni matar in ett flyttal? + \end{enumerate} + \end{column}% + \end{columns} + \end{frame} + + \begin{frame}[fragile] + \frametitle{\texttt{gcd}} + + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{minted}{text} ++--- +| gcd(a, 0) = a +| gcd(a, b) = gcd(b, a mod b) ++--- + \end{minted} + \end{column}% + \begin{column}{0.48\textwidth} + \begin{enumerate} + \item Beskriv hur beräkningen går till. + \item Implementera \texttt{gcd} i Python. + \item Räkna antalet satser och sammansatta uttryck i er Python-kod. + \end{enumerate} + \end{column}% + \end{columns} + \end{frame} + + \begin{frame}[fragile] + \frametitle{\texttt{gcd}} + + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{minted}[linenos]{python} +def gcd(a, b): + if b == 0: + return a + return gcd(b, a % b) + \end{minted} + \end{column}% + \begin{column}{0.48\textwidth} + \begin{enumerate} + \item Beskriv hur beräkningen går till. + \item Implementera \texttt{gcd} i Python. + \item Räkna antalet satser och sammansatta uttryck i er Python-kod. + \end{enumerate} + \end{column}% + \end{columns} + \end{frame} + + \begin{frame} + \frametitle{Uppgift: \texttt{latest\_birthday\_before}} + + I grupper om minst fem personer, skriv en funktion som tar in två heltal + (månad och dag) och returnerar namnet på den i gruppen vars födelsedag är + närmast i tiden, räknat \emph{bakåt} från det inskickade datumet. + + \pause + + \begin{columns}[T] + \begin{column}{0.2\textwidth} + \begin{enumerate} + \item 20/8 + \item 15/8 + \item 18/7 + \end{enumerate} + \end{column}% + \begin{column}{0.78\textwidth} + \texttt{latest\_birthday\_before(18, 8) == (15, 8)}\\ + \texttt{latest\_birthday\_before(15, 8) == (15, 8)}\\ + \texttt{latest\_birthday\_before(14, 8) == (18, 7)}\\ + \texttt{latest\_birthday\_before(10, 7) == ?} + \end{column}% + \end{columns} + \end{frame} + + \begin{frame}[fragile] + \frametitle{Uppgift: } + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{minted}[fontsize=\scriptsize,linenos]{python} +g = 0 +def outer(in1): + a = "a" + def inner(in2): + print(a) # 1 + c = "c" + a = "a from inner" + print(in2) # 2 + print(c) # 3 + print(a) # 4 + inner("into inner") + print(c) # 5 + print(a) # 6 + if g == 0: + d = "g = 0" + else: + e = "g != 0" + print(d) # 7 + print(e) # 8 + \end{minted} + \end{column}% + \begin{column}{0.48\textwidth} + \begin{enumerate} + \item Vilka print-satser kommer fungera? Vilka kommer att krascha? + \item Vad skriver de som fungerar ut? + \end{enumerate} + \end{column}% + \end{columns} + \end{frame} +\end{document} |
