Skip to content
Snippets Groups Projects
Verified Commit 615b5e92 authored by jonahbeneb02's avatar jonahbeneb02
Browse files

Add first fraft of 10th tutorial sheet

parent b22294f6
No related branches found
No related tags found
No related merge requests found
File added
%Original Template von Nicolas Lehman, angepasst von Wolfgang Mulzer und Katharina Klost
% Dokumentenklasse
\documentclass[
% globale Schriftgröße
10pt,
% setzt Absatzabstand hoch
parskip=half-,
% Format
paper=a4,
% lädt Sprachpakete
english,ngerman,
]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% //////////////////// Pakete laden ////////////////////
\usepackage{amsmath}
% modifiziert amsmath
\usepackage{mathtools}
% mathematische Symbole, für \ceckmarks
\usepackage{amssymb}
% für proof
\usepackage{amsthm}
% für \mathscr
\usepackage{mathrsfs}
\usepackage{latexsym}
% für bessere Worttrennung
\usepackage{microtype}
% Spracheinstellung
\usepackage[ngerman]{babel}
% für Quellcode
\usepackage{verbatim}
\usepackage{listings}
% für Umlaute und Sonderzeichen in der Tex-Datei
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
% für Tabellen mit gleicher Spaltenbreite und automatischen Umbrüchen
\usepackage{tabularx}
\usepackage{fullpage}
% für multirow in tabulars
\usepackage{multirow}
\usepackage{rotate}
% um Farben zu benutzen, kann mehr als das Paket color
\usepackage[cmyk,table]{xcolor}
% Verlinkungen
\usepackage[
% farbige Schrift, statt farbiger Rahmen
colorlinks,
% verlinkt im Abb.Verzeichnis Seitenzahl statt Bildunterschrift
linktocpage,
% setzt Farbe der Links auf blau
linkcolor=blue
]{hyperref}
% nur für digitale Anwendungen, url = "http://www.example.com"
% für Webadressen wie e-mail usw.: "\url{http://www.example.com}"
\usepackage{url}
% für versch. Aufzählungezeichen wie z.B. a)
\usepackage{enumitem}
% folgt ein Leerzeichen nach einem \Befehl, wird es nicht verschluckt
\usepackage{xspace}
% für das Durchstreichen u.a. in Matheformeln mit \cancel
\usepackage{cancel}
% für \forloop und \whiledo
\usepackage{ifthen}
% //////////////////// Syntaxhervorhebung ////////////////////
\lstloadlanguages{Python, Haskell, [LaTeX]TeX, Java}
\lstset{%
% \scriptsize: die Fontgröße für den Quelltext
basicstyle=\footnotesize\ttfamily,
% legt Farbe der Box fest
backgroundcolor = \color{bgcolour},
% automatische Umbrüche nur nach Leerzeichen?
breakatwhitespace=false,
% automatische Zeilenumbrüche?
breaklines=true,
% die Überschrift steht oben, t = top
captionpos=t,
% Formatierung der Kommentare
commentstyle=\color{codeblue}\ttfamily,
% einfacher Rahmen um den Quelltext
frame=single,
% Behalte Leerzeichen im Quelltext. Nützlich, um
% Einrückungen zu erhalten (benötigt eventuell columns=flexible)
keepspaces=true,
% Formatierung der Schlüsselwörter
keywordstyle=\bfseries\ttfamily\color{codepurple},
% Wohin mit den Zeilennummern?
% mögliche Werte sind: none, left, right
numbers=left,
% Formatierung der Zeilennummern
numberstyle=\tiny\color{codegreen},
% Abstand zwischen Zeilennummern und Quelltext
numbersep=5pt,
% nummeriert nur jede i-te Zeile
stepnumber=1,
% Zeige alle Leerzeichen mit Hilfe von speziellen Unterstrichen;
% überschreibt 'showstringspaces'
showspaces=false,
% unterstreiche Leerzeichen nur in Zeichenketten
showstringspaces=false,
% Zeige Tabulatoren in Zeichenketten mit Hilfe von speziellen
% Unterstrichen
showtabs=false,
flexiblecolumns=false,
% Schrittweite zwischen Zeilennummern.
% Der Wert 1 bedeutet, dass jede Zeile nummeriert wird.
tabsize=1,
% Formatierung der Zeichenketten.
stringstyle=\color{orange}\ttfamily,
% leere Zeilen werden nicht nummeriert
numberblanklines=false,
% Abstand zum linken Seitenrand
xleftmargin=1.2em,
% Abstand zum rechten Seitenrand
xrightmargin=0.4em,
aboveskip=2ex,
}
\lstdefinestyle{py}{%
language=Python,
}
\lstdefinestyle{hs}{%
language=Haskell,
}
\lstdefinestyle{tex}{%
language=[LaTeX]TeX,
% Um LaTex im Quelltext einzufügen
escapeinside={\%*}{*)},
% Hervorhebung der TeX-Schlüsselwörter
texcsstyle=*\bfseries\color{blue},
morekeywords={*,$,\{,\},\[,\],lstinputlisting,includegraphics,
rowcolor,columncolor,listoffigures,lstlistoflistings,
subsection,subsubsection,textcolor,tableofcontents,colorbox,
fcolorbox,definecolor,cellcolor,url,linktocpage,subtitle,
subject,maketitle,usetikzlibrary,node,path,addbibresource,
printbibliography},
numbers=none,
numbersep=0pt,
xleftmargin=0.4em,
}
\lstdefinestyle{java}{%
language=Java,
extendedchars=true,
}
% füge einen x64-Assembler Dialekt hinzu
\lstdefinelanguage[x64]{Assembler}
% basiert auf dem "x86masm" Dialekt
[x86masm]{Assembler}
% zusätzliche Schlüsselwörter
{morekeywords={CDQE,CQO,CMPSQ,CMPXCHG16B,JRCXZ,LODSQ,MOVSXD, %
POPFQ,PUSHFQ,SCASQ,STOSQ,IRETQ,RDTSCP,SWAPGS, %
rax,rdx,rcx,rbx,rsi,rdi,rsp,rbp, %
r8,r8d,r8w,r8b,r9,r9d,r9w,r9b}
}
\lstdefinestyle{c}{
language=c,
extendedchars=true,
}
% //////////////////// eigene Anweisungen ////////////////////
% benötigt package xspace
\newcommand\FU{Freie Universität Berlin\xspace}
\newcommand\gdw{g.\,d.\,w.\xspace}
\newcommand\oBdA{o.\,B.\,d.\,A.\xspace}
\newcommand\N{\mathbb{N}\xspace}
\newcommand\Q{\mathbb{Q}\xspace}
\newcommand\R{\mathbb{R}\xspace}
\newcommand\Z{\mathbb{Z}\xspace}
\newcommand\ohneNull{\ensuremath{\backslash\lbrace 0\rbrace}}% \{0}
% Schreibt Befehl \dh in \dhALT um
\let\dhALT\dh
%renew überschreibt command \dh
\renewcommand\dh{d.\,h.\xspace}
\newcommand{\from}{\ensuremath{\colon}}
\newcommand{\floor}[1]{\lfloor{#1}\rfloor}
\newcommand{\ceil}[1]{\lceil{#1}\rceil}
\newcommand{\abbrev}[2]{\expandafter\newcommand\csname
#1\endcsname{#2\xspace}}
\newcommand{\cclasss}[2]{\abbrev{#1}{\textsf{#2}}}
\newcommand{\cclass}[1]{\cclasss{#1}{#1}}
\cclasss{ccP}{P}
\cclass{NP}
\cclass{LOGSPACE}
\cclass{NL}
% //////////////// mathematische Funktionen ////////////////////
\DeclareMathOperator{\True}{True}
\DeclareMathOperator{\False}{False}
% //////////////////// eigene Theoreme ////////////////////
\newtheorem{theorem}{Satz}
\newtheorem{corollary}[theorem]{Korollar}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{observation}[theorem]{Beobachtung}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{Literatur}[theorem]{Literatur}
% konfiguriert proof
\makeatletter
\newenvironment{Proof}[1][\proofname]{\par
\pushQED{\qed}%
\normalfont \topsep6\p@\@plus6\p@\relax
\trivlist
\item[\hskip\labelsep
\bfseries
#1\@addpunct{.}]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
\makeatother
% //////////////////// eigene Farben ////////////////////
\let\definecolor=\xdefinecolor
\definecolor{FUgreen}{RGB}{153,204,0}
\definecolor{FUblue}{RGB}{0,51,102}
\definecolor{middlegray}{rgb}{0.5,0.5,0.5}
\definecolor{lightgray}{rgb}{0.8,0.8,0.8}
\definecolor{orange}{rgb}{0.8,0.3,0.3}
\definecolor{azur}{rgb}{0,0.7,1}
\definecolor{yac}{rgb}{0.6,0.6,0.1}
\definecolor{Pink}{rgb}{1,0,0.6}
\definecolor{bgcolour}{rgb}{0.97,0.97,0.97}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.35,0.35,0.35}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{codeblue}{rgb}{0.4,0.5,1}
% //////////////////// eigene Einstellungen ////////////////////
% verhindert Einrückung der 1. Zeile eines Absatzes
\parindent 0pt
% <-- Nummer des Übungszettels
\newcommand{\ubungNo}{10}
% <-- Name der Lehrveranstaltung eintragen
\newcommand{\veranstaltung}{Funktionale Programmierung}
% <-- z.B. SoSo 17, WiSe 17/18
\newcommand{\semester}{WiSe 23/24}
% % <-- Hier Anzahl der Aufgaben eintragen
\newcommand{\aufgNo}{3}
% https://tex.stackexchange.com/a/117538
\renewcommand\lstlistingname{Beispiel}
\usepackage{tikz}
% /////////////////////// BEGIN DOKUMENT /////////////////////////
\begin{document}
\setkomafont{section}{\large}
% ////////////// Daten //////////////
\begin{center}
{\veranstaltung, \semester}\par
{\Large Tutoriumsaufgaben \ubungNo}\par
\end{center}
\vspace{-3ex} % Abstand
\rule{\linewidth}{0.8pt} % horizontale Linie
\vspace{-3ex} % Abstand
% /////////////////////// Aufgabe 1 /////////////////////////
%alter Zettel 8 Bäume zeichnen
%einfügen löschen, kleinstes Elem
\section*{Aufgabe 1: Algorithmen per Hand durchführen}
\begin{enumerate}
\item Schreiben Sie die folgenden Gleichungen in umgekehrte polnische Notation um und lösen Sie per Hand:
\begin{enumerate}[label=(\roman*)]
\item $(9-3) + \log (8)$
\item $(10/4) - \sqrt{ 4 }$
\end{enumerate}
\item Verwenden Sie den Algorithmus aus der Vorlesung um per Hand zu überprüfen, ob \texttt{[]([({}) []])} und \texttt{[][()){}]} gültige Klammerausdrücke sind.
\end{enumerate}
\section*{Aufgabe 2: Module}
\begin{enumerate}
\item Erstellen Sie ein Modul \lstinline{Queue}, das den algebraischen Datentyp \lstinline{Queue} und die Funktionen \lstinline{isEmpty}, \lstinline{dequeue} und \lstinline{enqueue} exportiert. \par
Die fraglichen Funktionen sind unten angefügt, ansonsten soll das Beispiel aus dem Live-Code der Vorlesung (\lstinline{FQueue}) verwendet werden.\par
Ergänzen Sie die Funktionen
\begin{enumerate}[label= (\roman*)]
\item \lstinline{hasElem :: Queuelike a => b -> a b -> Bool} (überprüft ob der übergebene Wert in der \lstinline{Queue} enthalten ist)
\item \lstinline{count :: Queuelike a => b -> a b -> Int} (zählt wie oft der übergebene Wert in der \lstinline{Queue} enthalten ist)
%\item \haskell{getPenultimate :: Queue a -> Maybe a} (gibt den vorletzten Wert aus der \haskell{Queue} zurück)
%\item \haskell{hasElem :: a -> Queue a -> Bool} (überprüft ob der übergebene Wert in der \haskell{Queue} enthalten ist)
%\item\haskell{getDistanceToFront :: a -> Queue a -> Maybe Int} (bekommt ein Element und eine \haskell{Queue} und gibt zurück wie viele Elemente vor dem Element stehen)
\end{enumerate}
hinzu und exportieren Sie diese.
\item Importieren Sie das Modul in eine neue Haskelldatei und schreiben Sie folgende Funktionen, die eine Kassenschlange eines Einkaufsladens simulieren.
In der Schlange stellen Sie Personen mit Einkaufswägen an. Jeder Einkaufswagen enthält verschiedene Produkte mit zugeordneten Preisen.
\begin{enumerate}[label= (\roman*)]
\item Schreiben Sie passende Typsynonyme oder algebraische Datentypen, die einen Einkaufswagen und die Schlange von Einkaufswägen darstellen.
\item Schreiben Sie eine Funktion \lstinline{anstellen}, bei der ein Einkaufswagen in die Kassenschlange eingereiht wird.
\item Schreiben Sie eine Funktion \lstinline{kassieren}, bei der für den Einkaufswagen, der als erstes eingereiht wurde der Gesamtpreis der Waren bestimmt wird.
Die Rückgabe von \lstinline{kassieren} soll ein Tupel aus dem Gesamtpreis und der neuen Kassenschlange sein.
\end{enumerate}
\end{enumerate}
% /////////////////////// END DOKUMENT /////////////////////////
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment