Skip to content
Snippets Groups Projects
Commit f33e712d authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispiele und Tafelbild 9.1.2017

parent 6be23850
Branches
No related tags found
No related merge requests found
No preview for this file type
...@@ -803,10 +803,9 @@ ...@@ -803,10 +803,9 @@
\bigskip \bigskip
\begin{itemize} \begin{itemize}
\item \item
hinten anfügen oder\\ vorne oder hinten\\
vorne entfernen: $\mathcal{O}(1)$ anfügen oder entfernen: $\mathcal{O}(1)$
\item \item
vorne anfügen, hinten entfernen,\\
in der Mitte anfügen/entfernen: $\mathcal{O}(n)$ in der Mitte anfügen/entfernen: $\mathcal{O}(n)$
\end{itemize} \end{itemize}
\end{minipage} \end{minipage}
......
#include <stdio.h>
#include <stdlib.h>
union t_object;
struct t_vmt;
typedef struct
{
struct t_vmt *vmt;
} t_base;
typedef struct
{
struct t_vmt *vmt;
int content;
} t_integer;
typedef struct
{
struct t_vmt *vmt;
char *content;
} t_string;
typedef union t_object
{
t_base base;
t_integer integer;
t_string string;
} t_object;
typedef struct t_vmt
{
void (* print) (union t_object *this);
} t_vmt;
void print_integer (t_object *this)
{
printf ("Integer: %d\n", this->integer.content);
}
void print_string (t_object *this)
{
printf ("String: \"%s\"\n", this->string.content);
}
t_vmt vmt_integer = { print_integer };
t_vmt vmt_string = { print_string };
t_object *new_integer (int i)
{
t_object *p = malloc (sizeof (t_integer));
p->integer.vmt = &vmt_integer;
p->integer.content = i;
return p;
}
t_object *new_string (char *s)
{
t_object *p = malloc (sizeof (t_string));
p->integer.vmt = &vmt_string;
p->string.content = s;
return p;
}
int main (void)
{
t_object *object[] = { new_integer (42),
new_string ("Hello, world!"),
NULL };
for (int i = 0; object[i]; i++)
object[i]->base.vmt->print (object[i]);
return 0;
}
#include <stdio.h>
struct TBase
{
virtual void print () = 0;
};
struct TInteger: TBase
{
int content;
virtual void print ();
TInteger (int i);
};
struct TString: TBase
{
char *content;
virtual void print ();
TString (char *s);
};
void TInteger::print ()
{
printf ("Integer: %d\n", content);
}
void TString::print ()
{
printf ("String: \"%s\"\n", content);
}
TInteger::TInteger (int i)
{
content = i;
}
TString::TString (char *s)
{
content = s;
}
int main (void)
{
TBase *object[] = { new TInteger (42),
new TString ("Hello, world!"),
NULL };
for (int i = 0; object[i]; i++)
object[i]->print ();
return 0;
}
20170109/photo-20170109-124857.jpg

142 KiB

#include <stdio.h>
#define STACK_SIZE 10
int stack[STACK_SIZE];
int stack_pointer = 0;
void push (int x)
{
stack[stack_pointer++] = x;
}
int pop (void)
{
return stack[--stack_pointer];
}
int main (void)
{
push (3);
push (7);
push (137);
printf ("%d\n", pop ());
printf ("%d\n", pop ());
printf ("%d\n", pop ());
return 0;
}
...@@ -29,6 +29,7 @@ Vortragsfolien: ...@@ -29,6 +29,7 @@ Vortragsfolien:
* [12.12.2016: Hardwarenahe Programmierung (Speicherausrichtung – Alignment), Objektorientierte Programmierung (dynamische Speicherverwaltung, Konzepte und Ziele)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-20161212.pdf) * [12.12.2016: Hardwarenahe Programmierung (Speicherausrichtung – Alignment), Objektorientierte Programmierung (dynamische Speicherverwaltung, Konzepte und Ziele)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-20161212.pdf)
* [19.12.2016: Hardwarenahe Programmierung (Binärdarstellung von Zahlen), Objektorientierte Programmierung (Unions, GUI)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/hp-20161219.pdf) * [19.12.2016: Hardwarenahe Programmierung (Binärdarstellung von Zahlen), Objektorientierte Programmierung (Unions, GUI)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/hp-20161219.pdf)
* [02.01.2017: Special: Software und Urheberrecht, Exploits](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170102/hp-20170102.pdf) * [02.01.2017: Special: Software und Urheberrecht, Exploits](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170102/hp-20170102.pdf)
* [09.01.2017: Objektorientierte Programmierung (virtuelle Methoden, C++), Datenstrukturen (Stack und FIFO)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170109/hp-20170109.pdf)
* [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2016ws.pdf) * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2016ws.pdf)
Tafelbilder: Tafelbilder:
...@@ -43,6 +44,7 @@ Tafelbilder: ...@@ -43,6 +44,7 @@ Tafelbilder:
* [14.12.2016: Binärdarstellung negativer Zahlen, Endianness und Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161214/photo-20161214-115434.jpg) * [14.12.2016: Binärdarstellung negativer Zahlen, Endianness und Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161214/photo-20161214-115434.jpg)
* [19.12.2016: Praktikum, Binärdarstellung negativer Zahlen, Array mit Zeigern auf Objekte](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/photo-20161219-124242.jpg) * [19.12.2016: Praktikum, Binärdarstellung negativer Zahlen, Array mit Zeigern auf Objekte](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/photo-20161219-124242.jpg)
* [02.01.2017: SQL Injection](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170102/photo-20170102-130102.jpg) * [02.01.2017: SQL Injection](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170102/photo-20170102-130102.jpg)
* [09.01.2017: Virtuelle Methodentabellen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170102/photo-20170109-124857.jpg)
Übungsaufgaben: Übungsaufgaben:
--------------- ---------------
...@@ -58,6 +60,7 @@ Tafelbilder: ...@@ -58,6 +60,7 @@ Tafelbilder:
* [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161205/hp-uebung-20161205.pdf) * [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161205/hp-uebung-20161205.pdf)
* [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-uebung-20161212.pdf) * [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-uebung-20161212.pdf)
* [19.12.2016: Bürgerentscheid, Lokale Variable im Speicher, Blinkende LEDs, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/hp-uebung-20161219.pdf) * [19.12.2016: Bürgerentscheid, Lokale Variable im Speicher, Blinkende LEDs, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/hp-uebung-20161219.pdf)
* [09.01.2017: Objektorientierte Programmierung mit dem C-Datentyp _union_, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20170109/hp-uebung-20170109.pdf)
Musterlösungen zu den Übungsaufgaben: Musterlösungen zu den Übungsaufgaben:
------------------------------------- -------------------------------------
...@@ -71,6 +74,7 @@ Musterlösungen zu den Übungsaufgaben: ...@@ -71,6 +74,7 @@ Musterlösungen zu den Übungsaufgaben:
* [28.11.2016: Länge von Strings, fehlerhaftes Programm, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161128/hp-musterloesung-20161128.pdf) * [28.11.2016: Länge von Strings, fehlerhaftes Programm, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161128/hp-musterloesung-20161128.pdf)
* [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161205/hp-musterloesung-20161205.pdf) * [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161205/hp-musterloesung-20161205.pdf)
* [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-musterloesung-20161212.pdf) * [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161212/hp-musterloesung-20161212.pdf)
* [19.12.2016: Bürgerentscheid, Lokale Variable im Speicher, Blinkende LEDs, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20161219/hp-musterloesung-20161219.pdf)
Praktikumsunterlagen: Praktikumsunterlagen:
--------------------- ---------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment