Compare commits
No commits in common. "master" and "v0.2" have entirely different histories.
@ -1,28 +1,9 @@
|
|||||||
image: luki42/latex-full:latest
|
image: luki42/latex-full:latest
|
||||||
|
|
||||||
stages:
|
|
||||||
- build
|
|
||||||
- release
|
|
||||||
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
stage: build
|
|
||||||
script:
|
script:
|
||||||
- cd src
|
- cd src
|
||||||
- latexmk -pdf -file-line-error -interaction=nonstopmode -halt-on-error -output-format=pdf main.tex
|
- latexmk -pdf -file-line-error -interaction=nonstopmode -halt-on-error -output-format=pdf main.tex
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- "src/*.pdf"
|
- "src/*.pdf"
|
||||||
|
|
||||||
release:
|
|
||||||
image: inetprocess/gitlab-release
|
|
||||||
stage: release
|
|
||||||
only:
|
|
||||||
- tags
|
|
||||||
except:
|
|
||||||
- schedules
|
|
||||||
dependencies:
|
|
||||||
- build
|
|
||||||
script:
|
|
||||||
- gitlab-release --message 'Automatic release' ./src/main.pdf
|
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
# Struktur -Pointer Referat
|
|
||||||
|
|
||||||
https://gitlab.heili.eu/school/structref/uploads/a252643f17c0a7c036bea20f900de44f/Struct-Pointer-Referat.pdf
|
|
300
src/main.tex
300
src/main.tex
@ -3,7 +3,7 @@
|
|||||||
% Struktur und Pointer Referat
|
% Struktur und Pointer Referat
|
||||||
% 20.04.2020
|
% 20.04.2020
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
\usetheme{focus}
|
\usetheme{focus} % Use the Focus theme supplied with the template
|
||||||
|
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
\usepackage{amsmath}
|
\usepackage{amsmath}
|
||||||
\usepackage{hyperref}
|
\usepackage{hyperref}
|
||||||
\usepackage{graphicx}
|
\usepackage{graphicx}
|
||||||
\usepackage{listings}
|
\usepackage{listings} % Required for better table rules
|
||||||
\usepackage{xcolor}
|
\usepackage{xcolor}
|
||||||
|
|
||||||
% Farbdefinitionen
|
% Farbdefinitionen
|
||||||
@ -51,12 +51,14 @@
|
|||||||
% TITLE SLIDE
|
% TITLE SLIDE
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
\title{Strukturen + Pointer}
|
\title{Strukturen + Pointer \\ Call by Reference/Value}
|
||||||
|
|
||||||
\subtitle{mit Anwendungsfälle / Programmierbeispiele}
|
\subtitle{mit Anwendungsfälle / Programmierbeispiele}
|
||||||
|
|
||||||
\author{Lukas Heiligenbrunner}
|
\author{Lukas Heiligenbrunner}
|
||||||
|
|
||||||
|
\institute{HTL Steyr \\ Schlüsselhofgasse 63}
|
||||||
|
|
||||||
\date{\today}
|
\date{\today}
|
||||||
|
|
||||||
%------------------------------------------------
|
%------------------------------------------------
|
||||||
@ -66,7 +68,102 @@
|
|||||||
%------------------------------------------------
|
%------------------------------------------------
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\maketitle
|
\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}
|
\end{frame}
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
@ -91,10 +188,7 @@
|
|||||||
\item definiert einen Pointer
|
\item definiert einen Pointer
|
||||||
\item Wert eines Pointers
|
\item Wert eines Pointers
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item Operator \&
|
\item \& Operator: Adresse einer Variable
|
||||||
\begin{itemize}
|
|
||||||
\item Adresse einer Variable
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
@ -105,16 +199,16 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Variable definieren
|
//Variable declaration
|
||||||
int num = 10;
|
int num = 10;
|
||||||
|
|
||||||
// Pointer definieren
|
//Pointer declaration
|
||||||
int *p;
|
int *p;
|
||||||
|
|
||||||
// Adresse von num --> p zuweisen
|
//Assigning address of num to the pointer p
|
||||||
p = #
|
p = *num;
|
||||||
|
|
||||||
printf("Num: %d", *p);
|
printf("Address of variable: %p", p);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
@ -123,183 +217,7 @@ int main()
|
|||||||
%------------------------------------------------
|
%------------------------------------------------
|
||||||
|
|
||||||
\begin{frame}{Pointer in Java}
|
\begin{frame}{Pointer in Java}
|
||||||
\begin{itemize}
|
todo
|
||||||
\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(<Struktur>)
|
|
||||||
\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}
|
\end{frame}
|
||||||
|
|
||||||
%------------------------------------------------
|
%------------------------------------------------
|
||||||
@ -314,7 +232,7 @@ void beispiel() {
|
|||||||
|
|
||||||
\appendix
|
\appendix
|
||||||
|
|
||||||
\begin{frame}{Quellen}
|
\begin{frame}{References}
|
||||||
\nocite{*} % Display all references regardless of if they were cited
|
\nocite{*} % Display all references regardless of if they were cited
|
||||||
\bibliography{quellen}
|
\bibliography{quellen}
|
||||||
\bibliographystyle{plain}
|
\bibliographystyle{plain}
|
||||||
|
13
src/structallg.tex
Normal file
13
src/structallg.tex
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
\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}
|
Loading…
x
Reference in New Issue
Block a user