\documentclass[usenames,dvipsnames]{beamer} %---------------------------------------------------------------------------------------- % Struktur und Pointer Referat % 20.04.2020 %---------------------------------------------------------------------------------------- \usetheme{focus} \usepackage[utf8]{inputenc} \usepackage{booktabs} \usepackage{amsmath} \usepackage{hyperref} \usepackage{graphicx} \usepackage{listings} \usepackage{xcolor} % Farbdefinitionen \definecolor{backgroundcoloreq}{RGB}{180,140,0} \definecolor{codegreen}{rgb}{0,0.6,0} \definecolor{codegray}{rgb}{0.5,0.5,0.5} \definecolor{codepurple}{rgb}{0.58,0,0.82} \definecolor{codeorange}{RGB}{190,100,0} \lstset{ language=C, basicstyle=\ttfamily, numbers=left, numberstyle=\tiny, tabsize=4, columns=fixed, showstringspaces=false, showtabs=false, breaklines=true, keepspaces, morekeywords={std}, keywordstyle=\color{blue}\ttfamily, stringstyle=\color{red}\ttfamily, commentstyle=\color{OliveGreen!85}\ttfamily, numberstyle=\tiny\color{codegray}, basicstyle=\footnotesize\selectfont\ttfamily, % keyword highlighting classoffset=1, % starting new class otherkeywords={>,<,.,;,-,+,!,=,~,:,[,],NULL,&}, morekeywords={>,<,.,;,-,+,!,=,~,:,[,],NULL,&}, keywordstyle=\color{codeorange}, classoffset=0 } %---------------------------------------------------------------------------------------- % TITLE SLIDE %---------------------------------------------------------------------------------------- \title{Cross-Model Pseudo-Labeling} \subtitle{for Semi-Supervised Action Recognition} \author{Lukas Heiligenbrunner} \date{\today} %------------------------------------------------ \begin{document} %------------------------------------------------ \begin{frame} \maketitle \end{frame} %---------------------------------------------------------------------------------------- % SECTION 2 %---------------------------------------------------------------------------------------- \section{The Problem} % Section title slide, unnumbered %------------------------------------------------ \begin{frame}{Missing Labels} \begin{itemize} \item Labeling Samples very expensive \item Pointer zeigt wo das Objekt zu finden ist. \item nicht alle Pointer enthalten Adresse \begin{itemize} \item NULL-Pointer \end{itemize} \item Operator * \begin{itemize} \item definiert einen Pointer \item Wert eines Pointers \end{itemize} \item Operator \& \begin{itemize} \item Adresse einer Variable \end{itemize} \end{itemize} \end{frame} %------------------------------------------------ \begin{frame}[fragile]{Pointer Syntax} \begin{lstlisting} #include int main() { // Variable definieren int num = 10; // Pointer definieren int *p; // Adresse von num --> p zuweisen p = # printf("Num: %d", *p); return 0; } \end{lstlisting} \end{frame} %------------------------------------------------ \begin{frame}{Pointer in Java} \begin{itemize} \item Alle Objekte automatisch Pointer \item Primitives (int, float, double) keine Pointer \end{itemize} \end{frame} %---------------------------------------------------------------------------------------- % SECTION 2 %---------------------------------------------------------------------------------------- \section{Strukturen} % Section title slide, unnumbered %------------------------------------------------ \begin{frame}{Strukturen Allgemein} \begin{itemize} \item kategorisieren von Variablen \begin{itemize} \item Variablen \textit{(int, char, double, float)} \item Pointer \item Arrays \end{itemize} \item Keyword \textit{struct} \item verbessert Übersicht \item Schritt Richtung Objektorientierung \item ideal für Listen und Baumstruktur \end{itemize} \end{frame} %------------------------------------------------ \begin{frame}[fragile, allowframebreaks]{C Syntax} Definition: \begin{lstlisting} struct Adresse { char name[50]; int *nummer; short hausnummer; long plz; };\end{lstlisting} Anwendung: \begin{lstlisting} // Variable der Struktur erstellen struct Adresse adresseKurt; // Zugriff auf die Elemente strcpy(adresseKurt.name, "Kurt Kanns"); adresseKurt.hausnummer = 23; int nr = 4; adresseKurt.nummer = &nr; adresseKurt.plz = 45678;\end{lstlisting} \framebreak Typdefinition mit typedef: \begin{lstlisting} struct Adresse { char name[50]; short hausnummer; }; typedef struct Adresse Adr; Adr a1,a2; // Datentyp Adr \end{lstlisting} Kombination: \begin{lstlisting} typedef struct Adresse { char name[50]; short hausnummer; } Adr; Adr a1,a2; // Datentyp Adr \end{lstlisting} \end{frame} \begin{frame}{Sonstiges} \begin{itemize} \item Strukturtypdeklaration: struct Adresse \{…\}; \item Zugriff auf einzelne Komponenten durch\\ Punktnotation: (Adresse1.Vorname = “Peter“); \item Pfeilnotation (->) wenn struct Pointer \item Gesamtlänge der Struktur: sizeof() \item Weiteres hinzufügen von Komponenten während der Laufzeit nicht möglich. \end{itemize} \end{frame} %------------------------------------------------ \begin{frame}[fragile]{Strukturen als Funktionsargument} Ohne Typedef: \begin{lstlisting} void testfunc(struct Adresse a){ long plz = a.plz; } \end{lstlisting} Mit Typedef: \begin{lstlisting} void testfunc(Adr a){ long plz = a.plz; } \end{lstlisting} \end{frame} %------------------------------------------------ \begin{frame}[fragile]{Strukturen in Java} \begin{itemize} \item existieren nicht \item stattdessen Klassen \end{itemize} \begin{lstlisting}[language=java] public class Adresse { String name; String strasse; short hausnummer; long plz; String stadt; } \end{lstlisting} \end{frame} %---------------------------------------------------------------------------------------- % SECTION 3 %---------------------------------------------------------------------------------------- \section{Anwendung} % Section title slide, unnumbered %------------------------------------------------ \begin{frame}[fragile]{Struktur als Pointer} \begin{lstlisting} struct mystruct { int data; }; typedef struct MyStruct MyStruct; void beispiel(MyStruct * str) { int d = str->data; int dd = (*str).data; // equivalent } int main(){ MyStruct struc; struc.data = 5; beispiel(&struc); return 0; } \end{lstlisting} \end{frame} %------------------------------------------------ \begin{frame}[fragile]{Verkettete Listen} \begin{lstlisting} struct node { int data; struct node* next; /* Typ Node hier nicht moeglich da erst spaeter definiert */ }; typedef struct node Node; void beispiel() { // Erstellen von root Node *root = malloc(sizeof(Node)); root->data = 17; // Anhaengen eines Knotens Node *secondNode = malloc(sizeof(Node)); root->next = secondNode; secondNode->data = 19; } \end{lstlisting} \end{frame} %------------------------------------------------ \begin{frame}[focus] Danke für eure Aufmerksamkeit! \end{frame} %---------------------------------------------------------------------------------------- % CLOSING/SUPPLEMENTARY SLIDES %---------------------------------------------------------------------------------------- \appendix \begin{frame}{Quellen} \nocite{*} % Display all references regardless of if they were cited \bibliography{sources} \bibliographystyle{plain} \end{frame} \end{document}