To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

Commit e89538b7 authored by Luzian Bieri's avatar Luzian Bieri

added ex 13, set up ex 12

parent ca3183d1
Pipeline #65645 failed with stages
in 23 minutes
out_dir = './out'
current_ex = 11
current_ex = 12
add_list = [
{'text': 'add_01.pdf', 'link': './out/add_01.pdf'},
......
......@@ -85,7 +85,8 @@
\section{Organisatorisches}
\begin{frame}{Organisatorisches}
\begin{itemize}
\item heute Zeit Fragen zu klären.
\item heute: kurz Zeit Fragen zu klären.
\item Nächaste Woche: viel Zeit Fragen zu klären.
\end{itemize}
\end{frame}
......@@ -210,6 +211,11 @@ int main(){
\end{block}
\end{frame}
\section{Übung Memory Management}
\begin{frame}{\secname}
Externe Slides
\end{frame}
\section{Übung auf heute}
\begin{frame}{\secname}
\begin{enumerate}
......@@ -238,21 +244,21 @@ int main(){
\end{itemize}
\end{frame}
\begin{frame}{}
\textbf{Vielen Dank!}
\end{frame}
\subsection{Weiterer Verlauf der Lektion}
\begin{frame}{\subsecname}
\begin{enumerate}
\item Übung auf Expert zu Memory Management
\item Repetition EBNF, Rekursion, DDS
\item Früher fertig $\rightarrow$ Bier im CAB
\item Alte Prüfung
\end{enumerate}
\end{frame}
\end{document}
%\begin{frame}{}
% \textbf{Vielen Dank!}
%\end{frame}
%\subsection{Weiterer Verlauf der Lektion}
%\begin{frame}{\subsecname}
% \begin{enumerate}
% \item Übung auf Expert zu Memory Management
% \item Repetition EBNF, Rekursion, DDS
% \item Früher fertig $\rightarrow$ Bier im CAB
% \item Alte Prüfung
% \end{enumerate}
%\end{frame}
%\end{document}
%%% Local Variables:
......
[utf8, a4paper, handout]{beamer}
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
\input{src/slides.tex}
\ No newline at end of file
\documentclass[utf8, aspectratio=1610]{beamer}
\input{src/slides.tex}
\ No newline at end of file
@Article{lorem,
author = {John Doe},
title = {Lorem Ipsum},
journal = {SEDUT perspiciatis},
year = {2010}
}
@Proceedings{ipsum,
title = {Dolor sit amet},
organization = {At vero EOS},
year = {2011}
}
\usepackage[ngerman] {babel}
\usepackage[T1] {fontenc}
\usepackage{amsmath, amsfonts, graphicx}
\usepackage{pdfpages}
\usepackage{bibunits, tikz}
\usepackage{listings}
\usepackage{color}
\usepackage{hyperref}
\usetheme{progressbar}
\setbeamersize{text margin left=1em, text margin right=1em}
\definecolor{codecomment}{RGB}{125, 125, 125}
\definecolor{codenumbers}{RGB}{125, 125, 125}
\definecolor{codestring}{RGB}{7, 177, 95}
\definecolor{codeemphtypes}{RGB}{44, 162, 211}
\definecolor{codeemphoperators}{RGB}{214, 123, 236}
\definecolor{codekeywords}{RGB}{9, 20, 214}
\lstdefinestyle{mystyle}{
language=[ANSI]{C++},
backgroundcolor=\color{progressbar@bggray},
commentstyle=\color{codecomment},
keywordstyle=\color{codekeywords},
numberstyle=\color{codenumbers},
stringstyle=\color{codestring},
emph={int,char,double,float,unsigned, bool},
emphstyle={\color{codeemphtypes}},
emph={[2]'+', +, \+, \plus},
emphstyle={[2]\color{codeemphoperators}},
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
aboveskip=0pt,
belowskip=-0pt,
xleftmargin=15pt,
tabsize=2
}
\lstset{style=mystyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\cpp{{C\nolinebreak[4]\hspace{-.05em}\raisebox{.2ex}{\bf \textbf{++ }}}}
%#1 alias, #2 linktext
\def\luzilink[#1]#2{[ \underline{\texttt{\href{#2}{#1}}} ]}
%#1 title, #2 path-to-code-file !Maximal 15 code Lines with Title 17 without
\def\luziinputcode[#1]#2{\begin{block}{#1}\lstinputlisting[aboveskip=0pt]{#2}\end{block}}
%
\def\luziemphcode#1{\textbf{\texttt{\textcolor{codeemphtypes}{#1}}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\theauthor{Luzian Bieri}
\def\mail{luzibier@student.ethz.ch}
\def\telegram{LuzianBieri}
\def\website{https://bit.ly/luzibier}
\def\exercise{Übung 12 }
\author[\theauthor]{\theauthor}
\date[\today]{\today}
\institute{ETH Zürich, D-MAVT}
\title[\exercise - \theauthor]{Informatik D-MAVT, \exercise}
\begin{document}
\maketitle
\begin{frame}{Übersicht}
\tableofcontents
\end{frame}
\section{Organisatorisches}
\begin{frame}{Organisatorisches}
\begin{itemize}
\item heute Zeit Fragen zu klären.
\end{itemize}
\end{frame}
\section{Besprechung der letzten Übung}
\begin{frame}[fragile]{Bemerkungen: }
Abstand zwischen Pointern.
\begin{itemize}
\item Bsp:
\begin{lstlisting}
int a [] = {1, 2, 3, 4, 5, 6};
int* b = a;
int* c = a[4];
std::cout << (b-c)\end{lstlisting}
\item Möchte jemand eine spezifische Aufgabe besprechen?
\end{itemize}
\end{frame}
\section{Self-Assessment 4}
\begin{frame}{\secname}
[Self Assessment]
\end{frame}
\section{Repetition letzte Vorlesung}
\subsection{delete - Operator}
\begin{frame}[fragile]{\subsecname}
Mit dem \luziemphcode{delete} - Operator wird dynamisch allozierter Speicher (mit \luziemphcode{new} generiert)wiedergegeben.
\begin{exampleblock}{Frage}
Warum könnte das wichtig sein?
\end{exampleblock}
\begin{block}{Besipiel}
\begin{lstlisting}
a* = new int[30];
//do stuff
delete a; \end{lstlisting}
\end{block}
\end{frame}
\subsection{Destructor}
\begin{frame}[fragile]{\subsecname}
Enthält ein Objekt dynamisch allozierter Speicher muss dieser beim Löschen dieses Objektes manuell (!!!) wieder freigegeben werden. Dabei wird automatisch oder manuell der Destructor aufgerufen.
\begin{exampleblock}{Frage}
Warum könnte das wichtig sein?
\end{exampleblock}
\begin{block}{Besipiel an einem Queue}
\begin{lstlisting}
~Queue(){
// loesche alle Nodes
}\end{lstlisting}
\end{block}
\end{frame}
\subsection{Copy-Constructor}
\begin{frame}[fragile]{\subsecname}
Der Copy-Constructor wird immer dann aufgerufen, wenn ein Objekt kopiert werden soll. Wird dieser nicht definiert, werden einfach alle Membervariablen kopiert.
\begin{exampleblock}{Frage: Wo könnten da Probleme entstehen?}
\begin{lstlisting}
class Queue{ //Implementierung separat
Node* first, last;
public:
Queue();
enqueue(int val);
int dequeue();
};
int main(){
Queue q1 = new Queue();
// Do stuff mit q1
Queue q2 = q1;
// Do stuff mit q1 und q2
}
\end{lstlisting}
\end{exampleblock}
\end{frame}
\begin{frame}[fragile]{\subsecname}
Wollen wir eine Instanz eines Objektes mit dynamisch alloziertem Speicher kopieren müssen wir manuell alle zugehörigen Speicherwerte kopieren. Ansonsten zeigen das Original und das kopierte Objekt auf dieselben Nodes.
\begin{block}{Beispiel}
\begin{lstlisting}
class Queue{ // zur Uebersicht freigelassen
Node* first, last;
public:
Queue(const Queue& other){
this->first = new Node{other.first.value, nullptr};
//Kopiere Rest von der Queue
}
};
int main(){
Queue q1 = new Queue();
// Do stuff mit q1
Queue q2 = q1;
}
\end{lstlisting}
\end{block}
\end{frame}
\subsection{Assignment-Operator}
\begin{frame}[fragile]{\subsecname}
Wird mit \luziemphcode{=} einem Objekt ein anderes zugewiesen, wird der sogenannte Assignment-Operator aufgerufen. Diese muss unter Umständen auch manuell überladen werden.
\begin{block}{Beispiel}
\begin{lstlisting}
class Queue{ //nicht vollstanedig
Node* first, last;
public:
Queue();
Queue& operator= (const Queue& other){
first = other.first;
last = other.last;
return *this;
}};
int main(){
Queue q1 = new Queue();
Queue q2 = new Queue();
q2 = q1;
}
\end{lstlisting}
\end{block}
\end{frame}
\section{Übung auf heute}
\begin{frame}{\secname}
\begin{enumerate}
\item Understanding struct \& classes: Recht simpel, Welcher Datentyp?
\item Averager: .h-File fast komplett in der Aufgabe gegeben. Noch drei Funktionen programmieren. Welche privaten Variablen brauchen wr noch? (Könnt euch Aufgaben 1b zu Hilfe nehmen ;-) )
\item Understanding Pointers : Nicht sonderlich aufwändig, gut fürs Verständnis.
\item Quick Sort: Eher kompliziert, Algorithmus gut beschrieben, muss vor allem noch in Code umgebaut werden.
\end{enumerate}
\end{frame}
\section{Tipps für die nächste Übung}
\begin{frame}{Tipps für die nächste Übung}
\begin{enumerate}
\item operator delete: Sehr empfohlen! Nehmt euch die Slides zu Hilfe.
\item Array-based Vector: Gute Anwendung von delete und deconstructor.
\item Smart Pointers: eher schwierig.
\end{enumerate}
\end{frame}
\section{Abschluss}
\begin{frame}{Fragen?}
\begin{itemize}
\item Mail: \luzilink[\mail]{mailto:luzibier@student.ethz.ch\mail?subject=Frage Informatik\&body=Feel free to ask anything... }
\item Telegram: \luzilink[Link zum Chat]{https://t.me/\telegram}
\item Diese Slides zusammen mit einem Handout: \luzilink[bit.ly/luzibier]{\website}
\end{itemize}
\end{frame}
\begin{frame}{}
\textbf{Vielen Dank!}
\end{frame}
\subsection{Weiterer Verlauf der Lektion}
\begin{frame}{\subsecname}
\begin{enumerate}
\item Übung auf Expert zu Memory Management
\item Repetition EBNF, Rekursion, DDS
\item Früher fertig $\rightarrow$ Bier im CAB
\item Alte Prüfung
\end{enumerate}
\end{frame}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "demo-slides.tex"
%%% End:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment