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

Nachbereitung 7.1.2019

parent 78685db7
No related branches found
No related tags found
No related merge requests found
Showing with 220 additions and 14 deletions
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Zacharias", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
for (int i = 0; i < 3; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
for (int i = 0; i < 3; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
char **new_name = malloc (4 * sizeof (char*));
for (int i = 0; i < 3; i++)
new_name[i] = name[i];
name = new_name; /* Speicherleck: Array wurde nicht freigegeben! */
name[3] = "Dieter";
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
char **new_name = malloc (4 * sizeof (char*));
for (int i = 0; i < 3; i++)
new_name[i] = name[i];
free (name);
name = new_name; /* kein Speicherleck: Array wurde freigegeben. */
name[3] = "Dieter";
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
char **new_name = malloc (4 * sizeof (char*));
for (int i = 0; i < 3; i++)
new_name[i] = name[i];
free (name);
name = new_name;
name[3] = "Dieter";
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
free (new_name); /* Fehler: Array wurde bereits freigegeben! */
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
char **new_name = malloc (4 * sizeof (char*));
for (int i = 0; i < 3; i++)
new_name[i] = name[i];
free (name);
name = new_name;
new_name = NULL; /* Zeiger wird nicht mehr gebraucht. */
name[3] = "Dieter";
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
name = realloc (name, 4 * sizeof (char));
name[3] = "Dieter"; /* Fehler: ^ "*" vergessen; zu wenig Speicher */
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char **name = malloc (3 * sizeof (char *));
name[0] = "Anton";
name[1] = "Berthold";
name[2] = "Caesar";
name = realloc (name, 4 * sizeof (char *));
name[3] = "Dieter";
for (int i = 0; i < 4; i++)
printf ("%s\n", name[i]);
free (name);
return 0;
}
No preview for this file type
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
% Attribution-ShareAlike 3.0 Unported License along with this % Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>. % document. If not, see <http://creativecommons.org/licenses/>.
% README: Aufwandsabschätzungen, objektorientierte Programmierung in C % README: Aufwandsabschätzungen, dynamische Speicherverwaltung
\documentclass[10pt,t]{beamer} \documentclass[10pt,t]{beamer}
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
\item[5.1] Differentialgleichungen \item[5.1] Differentialgleichungen
\color{medgreen} \color{medgreen}
\item[5.2] Rekursion \item[5.2] Rekursion
\color{orange}
\item[5.3] Aufwandsabschätzungen \item[5.3] Aufwandsabschätzungen
\end{itemize} \end{itemize}
\item[\textbf{6}] \textbf{Objektorientierte Programmierung} \item[\textbf{6}] \textbf{Objektorientierte Programmierung}
...@@ -70,6 +71,7 @@ ...@@ -70,6 +71,7 @@
\color{red} \color{red}
\item[6.0] Dynamische Speicherverwaltung \item[6.0] Dynamische Speicherverwaltung
\item[6.1] Konzepte und Ziele \item[6.1] Konzepte und Ziele
\color{black}
\item[6.2] Beispiel: Zahlen und Buchstaben \item[6.2] Beispiel: Zahlen und Buchstaben
\item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI) \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
\vspace*{-\smallskipamount} \vspace*{-\smallskipamount}
...@@ -303,6 +305,7 @@ ...@@ -303,6 +305,7 @@
\color{red} \color{red}
\item[6.0] Dynamische Speicherverwaltung \item[6.0] Dynamische Speicherverwaltung
\item[6.1] Konzepte und Ziele \item[6.1] Konzepte und Ziele
\color{black}
\item[6.2] Beispiel: Zahlen und Buchstaben \item[6.2] Beispiel: Zahlen und Buchstaben
\item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI) \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
\vspace*{-\smallskipamount} \vspace*{-\smallskipamount}
...@@ -424,6 +427,8 @@ ...@@ -424,6 +427,8 @@
\end{frame} \end{frame}
\iffalse
\begin{frame} \begin{frame}
\showsection \showsection
...@@ -554,8 +559,6 @@ ...@@ -554,8 +559,6 @@
\end{frame} \end{frame}
\iffalse
\begin{frame}[fragile] \begin{frame}[fragile]
\begin{center} \begin{center}
\begin{minipage}{5cm} \begin{minipage}{5cm}
...@@ -602,8 +605,6 @@ ...@@ -602,8 +605,6 @@
\end{frame} \end{frame}
\fi
\subsection{Beispiel: Graphische Benutzeroberfläche (GUI)} \subsection{Beispiel: Graphische Benutzeroberfläche (GUI)}
\begin{frame}[fragile] \begin{frame}[fragile]
...@@ -646,8 +647,6 @@ ...@@ -646,8 +647,6 @@
\end{frame} \end{frame}
\iffalse
\subsection{Unions} \subsection{Unions}
\begin{frame}[fragile] \begin{frame}[fragile]
...@@ -809,10 +808,11 @@ ...@@ -809,10 +808,11 @@
\begin{itemize} \begin{itemize}
\color{medgreen} \color{medgreen}
\item[6.0] Dynamische Speicherverwaltung \item[6.0] Dynamische Speicherverwaltung
\color{orange}
\item[6.1] Konzepte und Ziele \item[6.1] Konzepte und Ziele
\color{red}
\item[6.2] Beispiel: Zahlen und Buchstaben \item[6.2] Beispiel: Zahlen und Buchstaben
\item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI) \item[6.3] Beispiel: Graphische Benutzeroberfläche (GUI)
\color{red}
\item[6.4] Unions \item[6.4] Unions
\item[6.5] Virtuelle Methoden \item[6.5] Virtuelle Methoden
\item[6.6] Einführung in C++ \item[6.6] Einführung in C++
......
No preview for this file type
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
% Attribution-ShareAlike 3.0 Unported License along with this % Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>. % document. If not, see <http://creativecommons.org/licenses/>.
% README: Speicherformate von Zahlen, Zeigerarithmetik, objektorientierte Tier-Datenbank % README: Speicherformate von Zahlen, Zeigerarithmetik
\documentclass[a4paper]{article} \documentclass[a4paper]{article}
...@@ -34,9 +34,9 @@ ...@@ -34,9 +34,9 @@
Übungsaufgaben -- 7.\ Januar 2019} Übungsaufgaben -- 7.\ Januar 2019}
Diese Übung enthält Punkteangaben wie in einer Klausur. Diese Übung enthält Punkteangaben wie in einer Klausur.
Um zu "`bestehen"', müssen Sie innerhalb von 100 Minuten Um zu "`bestehen"', müssen Sie innerhalb von 60 Minuten
unter Verwendung ausschließlich zugelassener Hilfsmittel unter Verwendung ausschließlich zugelassener Hilfsmittel
18 Punkte (von insgesamt \totalpoints) erreichen. 11 Punkte (von insgesamt \totalpoints) erreichen.
\exercise{Speicherformate von Zahlen} \exercise{Speicherformate von Zahlen}
...@@ -190,6 +190,8 @@ ...@@ -190,6 +190,8 @@
\points{4} \points{4}
\end{enumerate} \end{enumerate}
\iffalse
\clearpage \clearpage
\exercise{Objektorientierte Tier-Datenbank} \exercise{Objektorientierte Tier-Datenbank}
...@@ -295,6 +297,8 @@ ...@@ -295,6 +297,8 @@
\points{4} \points{4}
\end{itemize} \end{itemize}
\fi
\bigskip \bigskip
\begin{flushright} \begin{flushright}
\textit{Viel Erfolg!} \textit{Viel Erfolg!}
......
20190107/photo-20190107-173418.jpg

122 KiB

README: Quicksort
...@@ -28,7 +28,7 @@ Vortragsfolien: ...@@ -28,7 +28,7 @@ Vortragsfolien:
* [03.12.2018: Bit-Operationen, Programmierung von Mikrocontrollern, I/O-Ports, Interrupts](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-20181203.pdf) * [03.12.2018: Bit-Operationen, Programmierung von Mikrocontrollern, I/O-Ports, Interrupts](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-20181203.pdf)
* [10.12.2018: volatile-Variable, Byte-Reihenfolge - Endianness, Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-20181210.pdf) * [10.12.2018: volatile-Variable, Byte-Reihenfolge - Endianness, Binärdarstellung negativer Zahlen, Speicherausrichtung - Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-20181210.pdf)
* [17.12.2018: Rekursion, Aufwandsabschätzungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-20181217.pdf) * [17.12.2018: Rekursion, Aufwandsabschätzungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-20181217.pdf)
* [07.01.2019: Aufwandsabschätzungen, objektorientierte Programmierung in C](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-20190107.pdf) * [07.01.2019: Aufwandsabschätzungen, dynamische Speicherverwaltung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-20190107.pdf)
* [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2018ws.pdf) * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2018ws.pdf)
Übungsaufgaben: Übungsaufgaben:
...@@ -44,7 +44,7 @@ Vortragsfolien: ...@@ -44,7 +44,7 @@ Vortragsfolien:
* [03.12.2018: XBM-Grafik, LED-Blinkmuster](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-uebung-20181203.pdf) * [03.12.2018: XBM-Grafik, LED-Blinkmuster](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/hp-uebung-20181203.pdf)
* [10.12.2018: Trickprogrammierung, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-uebung-20181210.pdf) * [10.12.2018: Trickprogrammierung, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/hp-uebung-20181210.pdf)
* [17.12.2018: Fakultät, Lauflicht, Länge von Strings (Neuauflage)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-uebung-20181217.pdf) * [17.12.2018: Fakultät, Lauflicht, Länge von Strings (Neuauflage)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181217/hp-uebung-20181217.pdf)
* [07.01.2019: Speicherformate von Zahlen, Zeigerarithmetik, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-uebung-20190107.pdf) * [07.01.2019: Speicherformate von Zahlen, Zeigerarithmetik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/hp-uebung-20190107.pdf)
Musterlösungen: Musterlösungen:
--------------- ---------------
...@@ -61,6 +61,7 @@ Tafelbilder: ...@@ -61,6 +61,7 @@ Tafelbilder:
* [26.11.2018: Prakikumstermine, Bit-Operationen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181126/photo-20181126-174025.jpg) * [26.11.2018: Prakikumstermine, Bit-Operationen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181126/photo-20181126-174025.jpg)
* [03.12.2018: Pull-Down- und Pull-Up-Widerstand](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/photo-20181203-173451.jpg) * [03.12.2018: Pull-Down- und Pull-Up-Widerstand](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181203/photo-20181203-173451.jpg)
* [10.12.2018: Grafik abspeichern; Zweierkomplement auf 4-Bit-Rechner](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/photo-20181210-173116.jpg) * [10.12.2018: Grafik abspeichern; Zweierkomplement auf 4-Bit-Rechner](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20181210/photo-20181210-173116.jpg)
* [07.01.2019: Quicksort](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20190107/photo-20190107-173418.jpg)
Praktikumsunterlagen: Praktikumsunterlagen:
--------------------- ---------------------
......
No preview for this file type
...@@ -32,6 +32,6 @@ ...@@ -32,6 +32,6 @@
\includepdf[pages=-]{20181210/hp-20181210.pdf} \includepdf[pages=-]{20181210/hp-20181210.pdf}
\pdfbookmark[1]{17.12.2018: Rekursion, Aufwandsabschätzungen}{20181217} \pdfbookmark[1]{17.12.2018: Rekursion, Aufwandsabschätzungen}{20181217}
\includepdf[pages=-]{20181217/hp-20181217.pdf} \includepdf[pages=-]{20181217/hp-20181217.pdf}
\pdfbookmark[1]{07.01.2019: Aufwandsabschätzungen, objektorientierte Programmierung in C}{20190107} \pdfbookmark[1]{07.01.2019: Aufwandsabschätzungen, dynamische Speicherverwaltung}{20190107}
\includepdf[pages=-]{20190107/hp-20190107.pdf} \includepdf[pages=-]{20190107/hp-20190107.pdf}
\end{document} \end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment