Compare commits

..

No commits in common. "master" and "vj0.1" have entirely different histories.

4 changed files with 122 additions and 213 deletions

View File

@ -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

View File

@ -1,3 +0,0 @@
# Struktur -Pointer Referat
https://gitlab.heili.eu/school/structref/uploads/a252643f17c0a7c036bea20f900de44f/Struct-Pointer-Referat.pdf

View File

@ -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 = &num; 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
View 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}