From 8df55d5a2d8c41f27b4703d7ab15731d5d2144c9 Mon Sep 17 00:00:00 2001 From: lukas Date: Wed, 22 Apr 2020 15:51:07 +0200 Subject: [PATCH] pointer zuerst beispiel verkette listen --- src/main.tex | 244 +++++++++++++++++++++++++++------------------ src/structallg.tex | 13 --- 2 files changed, 148 insertions(+), 109 deletions(-) delete mode 100644 src/structallg.tex diff --git a/src/main.tex b/src/main.tex index 12b6a58..9083f40 100644 --- a/src/main.tex +++ b/src/main.tex @@ -71,101 +71,6 @@ \maketitle % Automatically created using the information in the commands above \end{frame} -%---------------------------------------------------------------------------------------- -% SECTION 1 -%---------------------------------------------------------------------------------------- - - - \section{Strukturen} % Section title slide, unnumbered - -%------------------------------------------------ - - \begin{frame}{Strukturen Allgemein} - \input{structallg.tex} - \end{frame} - -%------------------------------------------------ - - \begin{frame}[fragile, allowframebreaks]{C Syntax} - Definition: - \begin{lstlisting} -struct Adresse { - char name[50]; - char strasse[100]; - short hausnummer; - long plz; - char stadt[50]; -}; - \end{lstlisting} - Anwendung: - \begin{lstlisting} -// Variable der Struktur erstellen -struct Adresse adresseKurt; -// Zugriff auf die Elemente -strcpy(adresseKurt.name, "Kurt Kanns"); -adresseKurt.hausnummer = 23; -adresseKurt.plz = 45678; - \end{lstlisting} - - \framebreak - - Typdefinition mit typedef: - \begin{lstlisting} -typedef struct Adresse { - char name[50]; - short hausnummer; -} ADR; - -ADR a1,a2; - \end{lstlisting} - \end{frame} - - \begin{frame}{Sonstiges} - \begin{itemize} - \item Strukturtypdeklaration: struct Adresse {…}; - \item Gesamtlänge der Struktur: sizeof(Struktur) - \item Zugriff auf einzelne Komponenten durch\\ - Punktnotation: Adresse1.Vorname = “Peter“; - \item Weitere Strukturen hinzufügen: struct Adresse Adresse5; - \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 Objekte - \end{itemize} - \begin{lstlisting}[language=java] -public class Adresse -{ - String name; - String strasse; - short hausnummer; - long plz; - String stadt; -} - \end{lstlisting} - \end{frame} - %---------------------------------------------------------------------------------------- % SECTION 2 %---------------------------------------------------------------------------------------- @@ -208,7 +113,7 @@ int main() //Assigning address of num to the pointer p p = *num; - printf("Address of variable: %p", p); + printf("Num: %d", &p); return 0; } \end{lstlisting} @@ -217,6 +122,153 @@ int main() %------------------------------------------------ \begin{frame}{Pointer in Java} + \begin{itemize} + \item Alle Objekte automatisch Pointer + \item Primitives (int, float, double) sind Wert direkt + \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} + \pause + \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; +adresseKurt->nummer = 4; +adresseKurt.plz = 45678; + \end{lstlisting} + + \framebreak + + Typdefinition mit typedef: + \begin{lstlisting} +typedef struct Adresse { + char name[50]; + short hausnummer; +} ADR; + +ADR a1,a2; + \end{lstlisting} + \end{frame} + + \begin{frame}{Sonstiges} + \begin{itemize} + \item Strukturtypdeklaration: struct Adresse \{…\}; + \item Gesamtlänge der Struktur: sizeof(Struktur) + \item Zugriff auf einzelne Komponenten durch\\ + Punktnotation: Adresse1.Vorname = “Peter“; + \item Pfeilnotation (->) wenn Komponente ist Pointer + \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 Objekte + \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]{Verkettete Listen} + \begin{lstlisting} +struct node { + int data; + struct node* next; +}; +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}[fragile]{Struktur als Pointer} todo \end{frame} diff --git a/src/structallg.tex b/src/structallg.tex deleted file mode 100644 index 38ebf84..0000000 --- a/src/structallg.tex +++ /dev/null @@ -1,13 +0,0 @@ -\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} - \pause - \item verbessert Übersicht - \item Schritt richtung Objektorientierung - \item ideal für Listen und Baumstruktur -\end{itemize} \ No newline at end of file