Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 2024ws
  • 2023ws
  • 2022ws
  • 2021ws
  • 2020ws
  • 2018ws
  • 2019ws
  • 2017ws
  • 2016ws
9 results

Target

Select target project
No results found
Select Git revision
  • master
  • 2018ws
  • 2017ws
  • 2016ws
4 results
Show changes

Commits on Source 411

311 additional commits have been omitted to prevent performance issues.
1000 files
+ 25213
16861
Compare changes
  • Side-by-side
  • Inline

Files

20171009/hello-gtk.c

deleted100644 → 0
+0 −23
Original line number Diff line number Diff line
#include <gtk/gtk.h>

int main (int argc, char **argv)
{
  gtk_init (&argc, &argv);
  GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Hello");
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
  GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
  gtk_container_add (GTK_CONTAINER (window), vbox);
  gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
  GtkWidget *label = gtk_label_new ("Hello, world!");
  gtk_container_add (GTK_CONTAINER (vbox), label);
  GtkWidget *button = gtk_button_new_with_label ("Quit");
  g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
  gtk_container_add (GTK_CONTAINER (vbox), button);
  gtk_widget_show (button);
  gtk_widget_show (label);
  gtk_widget_show (vbox);
  gtk_widget_show (window);
  gtk_main ();
  return 0;
}

20171009/hello-opengl.c

deleted100644 → 0
+0 −32
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glColor3f (1.0, 1.0, 0.0);
  glRasterPos2f (-0.65, -0.1);
  char *hello = "Hello, world!";
  while (*hello)
    glutBitmapCharacter (GLUT_BITMAP_HELVETICA_18, *hello++);
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int data)
{
  exit (0);
}

int main (int argc, char **argv)
{
  glutInit (&argc, argv);
  glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  glutInitWindowSize (320, 200);
  glutCreateWindow ("Hello");
  glutDisplayFunc (draw);
  glutTimerFunc (5000, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171011/vi-20171011.txt

deleted100644 → 0
+0 −35
Original line number Diff line number Diff line
Umgang mit dem Text-Editor vi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Aufruf: vi <Dateiname>     # einschliesslich Endung!

Notausgang: ESC : q !  (Escape, Doppelpunkt, kleines Q, Ausrufezeichen, ENTER)
= vi verlassen, ohne zu speichern

Text eingeben:
 - in den INSERT-Modus wechseln
 - am einfachsten: i eingeben. Unten links erscheint "INSERT" (oder "EINFUEGEN).
 - danach: mit Pfeiltasten bewegen, Text einfach eingeben
 - INSERT-Modus wieder verlassen: ESC

Ausserhalb des INSERT-Modus:

 - Statt Pfeiltasten: j = runter, k = rauf, h = links, l = rechts

 - i = in den INSERT-Modus gehen
 - A = am Ende der Zeile anfü in den INSERT-Modus gehen

 - :w ENTER = Speichern
 - :q  ENTER = verlassen
 - :wq  ENTER = Speichern und verlassen
 - :q!  ENTER = verlassen, ohne zu speichern

 - x = Buchstaben loeschen
 - dd = Zeile loeschen

 - Textbloecke verschieben:
   V (grosses V) druecken
   Text markieren (mit j und k)
   d (kleines d) druecken. Der markierte Text wird geloescht ("Cut").
   dorthin gehen, wo der Text eingefuegt werden soll
   p (kleines p) druecken. Der geloeschte Text wird eingefuegt ("Paste").

20171016/chars-7.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int a = 'K';
  a += 'a' - 'A';
  printf ("%c\n", a);
  return 0;
}

20171016/comma-operator-3.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 0, j = 0; i < 3 && j < 3; i++, i < 3 ? 42 : j++)
    printf ("%d, %d\n", i, j);
  return 0;
}

20171016/comma-operator-4.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 0, j = 0; i < 3 && j < 3; i++, i < 3 ? 42 : i = 0, j++)
    printf ("%d, %d\n", i, j);
  return 0;
}

20171016/comma-operator-5.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int i = 0, j = 0; i < 3 && j < 3; i++, i < 3 ? 42 : (i = 0, j++))
    printf ("%d, %d\n", i, j);
  return 0;
}

20171016/comma-operator-6.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  for (int j = 0; j < 3; j++)
    for (int i = 0; i < 3; i++)
      printf ("%d, %d\n", i, j);
  return 0;
}

20171016/inc-dec-2.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int i = 3;
  printf ("%d\n", i++);
  printf ("%d\n", i++);
  return 0;
}

20171016/inc-dec-3.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int i = 3;
  printf ("%d\n", ++i);
  printf ("%d\n", ++i);
  return 0;
}

20171016/printf-1.c

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("Eine Zahl: %d. Ein Text: %s.\n", 137, "Hello, world!");
  return 0;
}

20171016/printf-2.c

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("Eine Zahl: %d. Ein Text: %s.\n", 137, "Hello, %d world!", 42);
  return 0;
}

20171016/return-screenshot.txt

deleted100644 → 0
+0 −24
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("Hello, world!\n");
  return 12;
}
cassini/home/peter/bo/2017ws/hp/20171016> gcc -Wall -O return-2.c -o return-2
cassini/home/peter/bo/2017ws/hp/20171016> ./return-2
Hello, world!
cassini/home/peter/bo/2017ws/hp/20171016> if ./return-1; then echo "Hurra!"; else echo "Schade!"; fi
Hello, world!
Hurra!
cassini/home/peter/bo/2017ws/hp/20171016> if ./return-2; then echo "Hurra!"; else echo "Schade!"; fi
Hello, world!
Schade!
cassini/home/peter/bo/2017ws/hp/20171016> ./return-1
Hello, world!
cassini/home/peter/bo/2017ws/hp/20171016> echo $?
0
cassini/home/peter/bo/2017ws/hp/20171016> ./return-2
Hello, world!
cassini/home/peter/bo/2017ws/hp/20171016> echo $?
12

20171016/side-effects-2.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("%d\n", 42);
  2 + 2;
  return 0;
}

20171016/side-effects-4.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int a = printf ("Hallo!\n");
  printf ("a = %d\n", a);
  return 0;
}

20171016/side-effects-5.c

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int a = printf ("%d\n", 137);
  printf ("a = %d\n", a);
  return 0;
}

20171016/test-4.c

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("Hello, world!\n" + 4);
  return 0;
}

20171016/test-5.c

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  printf ("Die Antwort lautet: %x.\n", 'B');
  return 0;
}

20171023/praktikum.txt

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
PRAKTIKUMSTERMINE
=================



Mi 08.11.2017
Mi 15.11.2017

(Versuch 2)

20171023/strings-11.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  const char *p = "Hello!\n";
  p[1] = 'a';
  printf ("%s", p);
  return 0;
}

20171023/strings-3.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  char hello_world[] = { 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33, 10, 0 };
  int i = 0;
  while (hello_world[i])
    printf ("%c", hello_world[i++]);
  return 0;
}

20171023/strings-4.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  char hello_world[] = { 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33, 10 };
  int i = 0;
  while (hello_world[i])
    printf ("%c", hello_world[i++]);
  return 0;
}

20171023/strings-5.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  int hello_world[] = "Hello, world!\n";
  int i = 0;
  while (hello_world[i])
    printf ("%c", hello_world[i++]);
  return 0;
}

20171023/strings-9.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (void)
{
  char *p = "Hello!\n";
  p[1] = 'a';
  printf ("%s", p);
  return 0;
}

20171023/typedef-1.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

char *string;

int main (void)
{
  string = "Hello, world!\n";
  printf ("%s\n", string);
  return 0;
}

20171023/typedef-2.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

char *string;

int main (void)
{
  string = "Hello, world!";
  printf ("%s\n", string);
  return 0;
}

20171023/typedef-3.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

typedef char *string;

int main (void)
{
  string hello = "Hello, world!";
  printf ("%s\n", hello);
  return 0;
}

20171023/typedef-4.c

deleted100644 → 0
+0 −13
Original line number Diff line number Diff line
#include <stdio.h>

typedef char boolean;
#define true 1
#define false 0

int main (void)
{
  boolean answer = true;
  if (answer)
    printf ("%d\n", false);
  return 0;
}

20171023/typedef-5.c

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#include <stdio.h>

typedef char string;

int main (void)
{
  string *hello = "Hello, world!";
  printf ("%s\n", hello);
  return 0;
}
+0 −1
Original line number Diff line number Diff line
README: E-Mail-Verschlüsselung: Zertifizierungsmodelle: Hierarchische Struktur (S/MIME) vs. Web Of Trust (OpenPGP)
+0 −374
Original line number Diff line number Diff line
% verschluesselung-20171030.pdf - Lecture Slides on Email Encryption
% Copyright (C) 2012, 2013, 2015, 2016, 2017  Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document.  If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document.  If not, see <http://creativecommons.org/licenses/>.

% README: Sonderveranstaltung: E-Mail Verschlüsselung

\documentclass[10pt,t]{beamer}

\usepackage{pgslides}
\usepackage{pdftricks}
\usepackage{tikz}

\begin{psinputs}
  \usepackage[utf8]{inputenc}
  \usepackage[german]{babel}
  \usepackage[T1]{fontenc}
  \usepackage{helvet}
  \renewcommand*\familydefault{\sfdefault}
  \usepackage{pstricks,pst-grad}
\end{psinputs}

\title{E-Mail-Verschlüsselung}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{30.\ Oktober 2017}

\begin{document}

\maketitleframe

\nosectionnonumber{\inserttitle}

\begin{frame}

  \shownosectionnonumber

  \begin{itemize}
    \item[\textbf{1}] \textbf{Einführung}
      \hfill\makebox(0,0)[br]{\raisebox{2.25ex}{\url{https://gitlab.cvh-server.de/pgerwinski/hp.git}}}
      \begin{itemize}
        \item[1.1]
          Warum verschlüsseln?
        \item[1.2]
          Einfache Verschlüsselungsalgorithmen
      \end{itemize}
    \item[\textbf{2}] \textbf{Ihr Verschlüsselungs-"`Führerschein"'}
      \begin{itemize}
        \item[2.1]
          Geheime und öffentliche Schlüssel
        \item[2.2]
          Digitale Signaturen
        \item[2.3]
          Zertifikate -- Web of Trust
      \end{itemize}
    \item[\textbf{3}] \textbf{Verschlüsselung in der Praxis}
    \item[\textbf{4}] \textbf{Fazit}
  \end{itemize}

\end{frame}

\section{Einführung}
\subsection{Warum verschlüsseln?}

\begin{frame}
  \showsection
  \showsubsection

  \begin{quote}
    "`Ich habe nichts zu verbergen."'
  \end{quote}

  \begin{itemize}
    \item
      Vor wem? Wirklich vor jedem?\\
      Wirklich alles über Sie?
    \item
      Auch nicht vor dem organisierten Verbrechen?
    \item
      Illegaler Zugriff auf staatlich gesammelte Daten ist möglich!
    \bigskip
    \arrowitem
      Der einzige wirklich sichere Weg,\\
      Datensammlungen gegen Mißbrauch zu schützen,\\
      ist, die Daten gar nicht erst zu sammeln.
  \end{itemize}
\end{frame}

\subsection{Einfache Verschlüsselungsalgorithmen}

\begin{frame}
  \showsection
  \showsubsection

  \begin{itemize}
    \item
      Cäsar-Chiffre: Alphabet rotieren\\
      Beispiel: ROT13 (mit Schlüssel 13)\\
      25 verschiedene Schlüssel
      \textarrow\ Schlüssellänge $\approx 4.64$\,Bit
      ($2^{4.64} \approx 25$)\\
      leicht zu knacken
      \pause
    \item
      Zufälliges Rotieren des gesamten Zeichensatzes:\\
      Für jedes Zeichen wird neu "`gewürfelt"'.\\
      \pause
      \textarrow\ Schlüssellänge = Länge der Nachricht\\
      unknackbar
      (mathematisch beweisbar)\\
      \pause
      praktische Probleme:
      \begin{itemize}
        \item Schlüssel genauso lang wie Nachricht
              \textarrow\ schwer zu übertragen
        \item Schlüssel (echter Zufall!) schwer zu generieren
      \end{itemize}
      \pause
    \item
      Dasselbe mit Pseudozufallsgenerator\\
      Schlüssel = Startwert\\
      \pause
      \textarrow\ Schlüssellänge = Bits des Startwerts\\
      meistens knackbar,
      nur für spezielle Pseudozufallsgeneratoren sicher\\
      \textarrow\ Verschlüsselungsverfahren
  \end{itemize}
  \vspace*{-1cm}
\end{frame}

\begin{frame}
  \showsection
  \showsubsection

  \renewcommand{\arraystretch}{1.2}
  \begin{center}
    \begin{tabular}{l|c|c}
      \textbf{Verfahren} & \textbf{Schlüssellänge} & \textbf{sicher} \\\hline
      Cäsar-Chiffre & 4.64 Bit & nein \\
      One-Time Pad (OTP) & Länge der Nachricht & ja \\
      Standard-Pseudozufallszahlen & typischerweise 64 Bit & nein \\\hline
      DSA & 56 Bit & nein \\
      IDEA & 128 Bit & ja \\
      Blowfish & 128 Bit & ja \\
      Twofish & 128 Bit & ja \\
      CAST & 128 Bit & ja \\
      AES / Rijndael & 128 Bit & ja
    \end{tabular}
  \end{center}
\end{frame}

\section{Ihr Verschlüsselungs-"`Führerschein"'}
\subsection{Geheime und öffentliche Schlüssel}

\begin{frame}
  \showsection
  \showsubsection

  Verschlüsselte Kommunikation:
  \begin{itemize}
    \item
      Versenden der Nachricht über öffentlichen Kanal (z.\,B.\ E-Mail)
    \item
      Versenden des Schlüssels über geheimen Kanal (z.\,B.\ persönlich)
  \end{itemize}

  \medskip

  Probleme:
  \begin{itemize}
    \item
      Kommunikation mit Unbekannten
    \item
      Kommunikation in Gruppen
  \end{itemize}

  \medskip

  Lösung:
  \begin{itemize}
    \item
      Asymmetrische Verschlüsselungsverfahren
    \item
      Geheime und öffentliche Schlüssel
  \end{itemize}
\end{frame}

\begin{frame}
  \showsection
  \showsubsection

  Asymmetrische Verschlüsselungsverfahren:
  \begin{itemize}
    \item
      Unterschiedliche Schlüssel zum Ver- und Entschlüsseln
    \item
      Verschlüsseln: \newterm{öffentlicher Schlüssel}
    \item
      Entschlüsseln: \newterm{geheimer Schlüssel}
  \end{itemize}

  \medskip

  Schlüsselaustausch:
  \begin{itemize}
    \item
      Abhören: kein Problem mehr
    \item
      Identifikation: persönlicher Kontakt weiterhin erforderlich
  \end{itemize}

  \medskip

  Lösung:
  \begin{itemize}
    \item
      Digitale Signaturen
    \item
      Zertifikate -- Web of Trust
  \end{itemize}

  \vspace{0cm plus 1filll minus 1filll}

  \renewcommand{\arraystretch}{1.2}
  \begin{flushright}
    \begin{tabular}{l|c|c}
      \textbf{Verfahren} & \textbf{Schlüssellänge} & \textbf{sicher} \\\hline
      RSA & ab 2048 Bit & ja \\
      ElGamal & ab 2048 Bit & ja \\
      ECDSA & 160 Bit & ja
    \end{tabular}
  \end{flushright}
\end{frame}

\subsection{Digitale Signaturen}

\begin{frame}
  \showsection
  \showsubsection

  Asymmetrische Verschlüsselungsverfahren:
  \begin{itemize}
    \item
      Unterschiedliche Schlüssel zum Ver- und Entschlüsseln
    \item
      Verschlüsseln: geheimer Schlüssel
    \item
      Entschlüsseln: öffentlicher Schlüssel
    \item
      Prüfwert der Nachricht verschlüsseln
    \arrowitem
      Wer das verschlüsselt hat,\\
      muß im Besitz des geheimen Schlüssels sein.\\
      \textarrow\ \newterm{digitale Signatur}
  \end{itemize}

  \vspace{0cm plus 1filll minus 1filll}

  \renewcommand{\arraystretch}{1.2}
  \begin{flushright}
    \begin{tabular}{l|c|c}
      \textbf{Verfahren} & \textbf{Schlüssellänge} & \textbf{sicher} \\\hline
      RSA & ab 2048 Bit & ja \\
      ElGamal & ab 2048 Bit & ja \\
      ECDSA & 160 Bit & ja
    \end{tabular}
  \end{flushright}
\end{frame}

\subsection{Zertifikate -- Web of Trust}

\begin{frame}
  \showsection
  \showsubsection

  \begin{itemize}
    \item
      Alice will Bob eine verschlüsselte Nachricht schicken.
    \item
      Alice lädt den öffentlichen Schlüssel von Bob herunter.
    \arrowitem
      Ist der Schlüssel wirklich der von Bob?
    \pause
    \medskip
    \item
      Trent hat den öffentlichen Schlüssel von Bob unterschrieben:\\
      "`Ich bezeuge, daß dieser Schlüssel wirklich Bob gehört."'
    \arrowitem
      Trent agiert als \newterm{Zertifizierungsstelle}.
    \medskip
    \item
      Alice hat bereits den öffentlichen Schlüssel von Trent\\
      und kann daher die Signatur prüfen.
    \item
      Alice vertraut Trent. \textarrow\ \newterm{Vertrauen in Person}
    \arrowitem
      Der öffentliche Schlüssel von Bob ist echt. \textarrow\ \newterm{Vertrauen in Schlüssel}
  \end{itemize}
\end{frame}

\section{Verschlüsselung in der Praxis}

\begin{frame}
  \showsection

  \begin{itemize}
    \item
      Software: GNU Privacy Guard (GnuPG)\\
      herunterladen und installieren
      \begin{itemize}
        \item
          Plug-In für Mozilla Thunderbird: Enigmail
        \item
          GnuPG Basics Pack
        \item
          GPG4Win
        \item
          \dots
      \end{itemize}
    \item
      Schlüsselerzeugung
    \item
      Öffentliche Schlüssel austauschen und prüfen
    \pause
    \medskip
    \item
      Schlüssel-Server
    \medskip
    \item
      Ende-zu-Ende-Verschlüsselung
    \item
      Auf verschlüsselte Nachrichten immer verschlüsselt antworten!
    \item
      Betreff-Zeilen werden nicht mit verschlüsselt.
    \item
      Die Verbindungsdaten werden nicht mit verschlüsselt.
  \end{itemize}
\end{frame}

\section{Fazit}

\begin{frame}
  \showsection

  \begin{itemize}
    \item
      E-Mail-Verschlüsselung ist sinnvoll \dots
    \item
      \dots\ und machbar.
    \item
      Der richtige Umgang ist entscheidend.
    \medskip
    \arrowitem
      Sicherheitsbewußtsein ist entscheidend.
  \end{itemize}
\end{frame}

\end{document}

20171106/cube-1.c

deleted100644 → 0
+0 −21
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glutSolidCube (0.75);
  glFlush ();
  glutSwapBuffers ();
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutMainLoop ();
  return 0;
}

20171106/cube-2.c

deleted100644 → 0
+0 −22
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glRotatef (-30.0, 0.5, 1.0, 0.0);
  glutSolidCube (0.75);
  glFlush ();
  glutSwapBuffers ();
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutMainLoop ();
  return 0;
}

20171106/cube-3.c

deleted100644 → 0
+0 −32
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glRotatef (t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/cube-4.c

deleted100644 → 0
+0 −34
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glPushMatrix ();
  glRotatef (t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/cube-5.c

deleted100644 → 0
+0 −34
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glPushMatrix ();
  glRotatef (20.0 * t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/hp-uebung-20171106.tex

deleted100644 → 0
+0 −128
Original line number Diff line number Diff line
% hp-uebung-20171106.pdf - Exercises on Low-Level Programming / Applied Computer Sciences
% Copyright (C) 2013, 2015, 2016  Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document.  If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document.  If not, see <http://creativecommons.org/licenses/>.

% README: Strings, Text-Grafik-Bibliothek

\documentclass[a4paper]{article}

\usepackage{pgscript}

\newcounter{points}
\newcommand{\onepoint}{(1 Punkt)\addtocounter{points}{1}}
\newcommand{\points}[1]{(#1 Punkte)\addtocounter{points}{#1}}

\begin{document}

  \thispagestyle{empty}

  \section*{Hardwarenahe Programmierung / Angewandte Informatik\\
            Übungsaufgaben -- 6.\ November 2017}

  \exercise{Strings}

  Strings werden in der Programmiersprache C
  durch Zeiger auf \lstinline{char}-Variable realisiert.

  Wir betrachten die folgende Funktion (Datei: \gitfile{hp}{20171106}{aufgabe-1.c}):
  \begin{center}
    \begin{minipage}{8cm}
      \begin{lstlisting}[gobble=8]
        int fun_1 (char *s1, char *s2)
        {
          int result = 1;
          for (int i = 0; s1[i] && s2[i]; i++)
            if (s1[i] != s2[i])
              result = 0;
          return result;
        }
      \end{lstlisting}
    \end{minipage}%
  \end{center}
  \begin{itemize}
    \item[(a)]
      Was bewirkt die Funktion? % \points{3}
    \item[(b)]
      Welchen Sinn hat die Bedingung "`\lstinline{s1[i] && s2[i]}"'
      in der \lstinline{for}-Schleife? % \points{2}
    \item[(c)]
      Was würde sich ändern, wenn die Bedingung "`\lstinline{s1[i] && s2[i]}"'
      in der \lstinline{for}-Schleife\\
      zu "`\lstinline{s1[i]}"' verkürzt würde? % \points{3}
%    \item[(d)]
%      Von welcher Ordnung (Landau-Symbol) ist die Funktion \lstinline{fun_1()}
%      hinsichtlich der Anzahl ihrer Zugriffe auf die Zeichen in den Strings
%      -- und warum? % \points{2}
    \item[(d)]
      Schreiben Sie eine eigene Funktion,
      die dieselbe Aufgabe erledigt wie \lstinline{fun_1()}, nur effizienter.
%      und geben Sie die Ordnung (Landau-Symbol) der von Ihnen geschriebenen Funktion an. % \points{5}
  \end{itemize}

  \exercise{Text-Grafik-Bibliothek}

  Schreiben Sie eine Bibliothek für "`Text-Grafik"' mit folgenden Funktionen:\vspace*{-\medskipamount}
  \begin{itemize}
    \item
      \lstinline|void clear (char c)|\\
      Bildschirm auf Zeichen \lstinline|c| löschen,\\
      also komplett mit diesem Zeichen (z.\,B.: Leerzeichen) füllen
    \item
      \lstinline|void put_point (int x, int y, char c)|\\
      Punkt setzen (z.\,B.\ einen Stern (\lstinline{*}) an die Stelle $(x,y)$ "`malen"')
    \item
      \lstinline|char get_point (int x, int y)|\\
      Punkt lesen
%    \item
%      \lstinline|void fill (int x, int y, char c, char o)|\\
%      Fläche in der "`Farbe"' \lstinline|o|,
%      die den Punkt \lstinline|(x, y)| enthält,
%      mit der "`Farbe"' \lstinline|c| ausmalen
    \item
      \lstinline|void display (void)|\\
      das Gezeichnete auf dem Bildschirm ausgeben
  \end{itemize}

  Hinweise:\vspace*{-\medskipamount}
  \begin{itemize}
    \item
      Eine C-Bibliothek besteht aus (mindestens)
      einer \file{.h}-Datei und einer \file{.c}-Datei.
    \item
      Verwenden Sie ein Array als "`Bildschirm"'.

      Vor dem Aufruf der Funktion \lstinline|display()| ist nichts zu sehen;\\
      alle Grafikoperationen erfolgen auf dem Array.
    \item
      Verwenden Sie Präprozessor-Konstante,
      z.\,B.\ \lstinline{WIDTH} und \lstinline{HEIGHT},\\
      um Höhe und Breite des "`Bildschirms"' festzulegen.
    \item
     Schreiben Sie zusätzlich ein Test-Programm,
     das alle Funktionen der Bibliothek benutzt,\\
     um ein hübsches Bild (z.\,B.\ ein stilisiertes Gesicht -- "`Smiley"')
     auszugeben.
  \end{itemize}

%  \points{10}
%  \points{8}  % ohne "fill()"

\end{document}

20171106/opengl-magic.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#if defined(__APPLE__) || defined(MACOSX)
  #include <OpenGL/gl.h>
  #include <OpenGL/glu.h>
  #include <GLUT/glut.h>
#else
  #include <GL/gl.h>
  #include <GL/glu.h>
  #include <GL/glut.h>
#endif

#include "opengl-magic.h"

void init_opengl (int *argcp, char **argv, char *window_name)
{
  glutInit (argcp, argv);
  glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  glutInitWindowSize (1024, 768);
  glutCreateWindow (window_name);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  gluPerspective (20.0, -1.33333, 3.0, 7.0);
  glMatrixMode (GL_MODELVIEW);
  glLoadIdentity ();
  glTranslatef (0.0, 0.0, -5.0);
  glClearColor (0.0, 0.0, 0.0, 0.0);
  glEnable (GL_DEPTH_TEST);
  glEnable (GL_LIGHTING);
  glEnable (GL_LIGHT0);
  static GLfloat light0_position[] = { 1.0, 0.0, 1.0, 0.0 };
  glLightfv (GL_LIGHT0, GL_POSITION, light0_position);
}

void set_material_color (float r, float g, float b)
{
  GLfloat color[] = { r, g, b };
  glMaterialfv (GL_FRONT, GL_AMBIENT, color);
  glMaterialfv (GL_FRONT, GL_DIFFUSE, color);
}

#if defined(__APPLE__) || defined(MACOSX)

void glutSolidCylinder (double radius, double height, int slices, int stacks)
{
  GLUquadricObj *q = gluNewQuadric ();
  gluCylinder (q, radius, radius, height, slices, stacks);
  gluDeleteQuadric (q);
}

#endif

20171106/opengl-magic.h

deleted100644 → 0
+0 −11
Original line number Diff line number Diff line
#ifndef OPENGL_MAGIC_H
#define OPENGL_MAGIC_H

extern void init_opengl (int *argcp, char **argv, char *window_name);
extern void set_material_color (float r, float g, float b);

#ifdef __MACOSX__
  extern void glutSolidCylinder (double radius, double height, int slices, int stacks);
#endif

#endif /* OPENGL_MAGIC_H */

20171106/pendulum-1.c

deleted100644 → 0
+0 −47
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/pendulum-2.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  phi += dt * omega;
  omega += dt * (-g / l) * sin (phi);
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/pendulum-3.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 1.0, 0.8);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  phi += dt * omega;
  omega += dt * (-g / l) * phi;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171106/pendulum-4.c

deleted100644 → 0
+0 −68
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 0.5    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi_with_sin = phi0;
double omega_with_sin= omega0;
double phi_without_sin = phi0;
double omega_without_sin= omega0;

void draw_pendulum (double phi)
{
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, 1.0, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glutSwapBuffers ();
}

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  draw_pendulum (phi_with_sin);
  set_material_color (1.0, 0.8, 0.8);
  draw_pendulum (phi_without_sin);
  set_material_color (0.8, 1.0, 0.8);
  double A = phi0;
  double B = 0.5 * M_PI;  /* 90° */
  double phi_analytic = A * sin (sqrt (g / l) * t + B);
  draw_pendulum (phi_analytic);
  glFlush ();
}

void timer_handler (int value)
{
  t += dt;
  phi_with_sin += dt * omega_with_sin;                   /* geg. Differentialgleichung */
  omega_with_sin += - dt * g / l * sin (phi_with_sin);   /* geg. Differentialgleichung */
                                                         /* _ohne_ Kleinwinkelnäherung */
  phi_without_sin += dt * omega_without_sin;             /* geg. Differentialgleichung */
  omega_without_sin += - dt * g / l * phi_without_sin;   /* geg. Differentialgleichung */
                                                         /* _mit_ Kleinwinkelnäherung  */
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutPostRedisplay ();
  glutMainLoop ();
  return 0;
}
+0 −1
Original line number Diff line number Diff line
README: Fadenpendel: Aufstellung der Differentialgleichung

20171106/textured-spheres.c

deleted100644 → 0
+0 −168
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <png.h>
#include "textured-spheres.h"

#ifndef __USE_POSIX
  extern int fileno (FILE *stream);
#endif

static png_byte *load_png_file (char *filename, unsigned *w, unsigned *h)
{
  FILE *f = fopen (filename, "rb");
  if (!f)
    return NULL;

  /* is it a PNG file? */
  png_byte buf[8];
  if (fread (buf, 1, 8, f) != 8)
    {
      fclose (f);
      return NULL;
    }
  if (!png_check_sig (buf, 8))
    {
      fclose (f);
      return NULL;
    }

  png_struct *png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
                                                NULL, NULL, NULL);
  if (!png_ptr)
    {
      fclose (f);
      return NULL;
    }

  png_info *info_ptr = png_create_info_struct (png_ptr);
  if (!info_ptr)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, NULL, NULL);
      return NULL;
    }

  if (setjmp (png_jmpbuf (png_ptr)))
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_init_io (png_ptr, f);
  png_set_sig_bytes (png_ptr, 8);
  png_read_info (png_ptr, info_ptr);

  png_uint_32 width;
  png_uint_32 height;
  int bit_depth;
  int color_type;
  png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth,
                &color_type, NULL, NULL, NULL);

  /* tell libpng to strip 16 bit/color files down to 8 bits/color */
  if (bit_depth == 16)
    png_set_strip_16 (png_ptr);
  /* expand paletted colors into true RGB triplets */
  if (color_type == PNG_COLOR_TYPE_PALETTE)
    png_set_expand (png_ptr);
  /* expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
  if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
    png_set_expand (png_ptr);
  /* expand paletted or RGB images with transparency to full alpha channels
     so the data will be available as RGBA quartets. */
  if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
    png_set_expand (png_ptr);
  /* transform grayscale images into rgb */
  if (color_type == PNG_COLOR_TYPE_GRAY
      || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
    png_set_gray_to_rgb (png_ptr);

  if (color_type & PNG_COLOR_MASK_ALPHA)
    png_set_strip_alpha (png_ptr);

  png_read_update_info (png_ptr, info_ptr);
  png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth,
		&color_type, NULL, NULL, NULL);
  if (color_type != PNG_COLOR_TYPE_RGB
      && color_type != PNG_COLOR_TYPE_RGB_ALPHA)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_uint_32 row_bytes = png_get_rowbytes (png_ptr, info_ptr);
  if (row_bytes & 0x01)
    row_bytes++;

  png_byte *png_pixels = malloc (row_bytes * height * sizeof (png_byte));
  if (png_pixels == NULL)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_byte **row_pointers = malloc (height * sizeof (png_bytep));
  if (row_pointers == NULL)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      free (png_pixels);
      png_pixels = NULL;
      return NULL;
    }

  int i;
  for (i = 0; i < height; i++)
    row_pointers[i] = png_pixels + i * row_bytes;

  png_read_image (png_ptr, row_pointers);

  png_read_end (png_ptr, info_ptr);
  png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
  fclose (f);

  if (w)
    *w = width;
  if (h)
    *h = height;
  free (row_pointers);

  return png_pixels;
}

void init_texture (char *image_filename, GLuint *texture)
{
  unsigned image_width, image_height;
  png_byte *image = load_png_file (image_filename, &image_width, &image_height);
  if (!image)
    {
      fprintf (stderr, "textured-spheres.c: cannot open texture file \"%s\"",
               image_filename);
      exit (1);
    }
  glGenTextures (1, texture);
  glBindTexture (GL_TEXTURE_2D, *texture);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  gluBuild2DMipmaps (GL_TEXTURE_2D, 3, image_width, image_height, GL_RGB, GL_UNSIGNED_BYTE, image);
}

void draw_textured_sphere (GLuint texture, GLdouble radius, GLint slices, GLint stacks)
{
  static GLfloat white_color[] = { 1.0, 1.0, 1.0 };
  glMaterialfv (GL_FRONT, GL_AMBIENT, white_color);
  glMaterialfv (GL_FRONT, GL_DIFFUSE, white_color);
  glBindTexture (GL_TEXTURE_2D, texture);
  glEnable (GL_TEXTURE_2D);
  GLUquadric *sphere = gluNewQuadric ();
  gluQuadricTexture (sphere, GL_TRUE);
  gluSphere (sphere, radius, slices, stacks);
  glDisable (GL_TEXTURE_2D);
}

20171106/textured-spheres.h

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#ifndef TEXTURED_SPHERES_H
#define TEXTURED_SPHERES_H

#include <GL/gl.h>
#include <GL/glu.h>

extern void init_texture (char *image_filename, GLuint *texture);
extern void draw_textured_sphere (GLuint texture, GLdouble radius, GLint slices, GLint stacks);

#endif /* TEXTURED_SPHERES_H */

20171108/egal.txt

deleted100644 → 0
+0 −37
Original line number Diff line number Diff line
GNU/Linux
~~~~~~~~~
Compilieren:  gcc -Wall -O cube-3c.c opengl-magic.c \
              -lGL -lGLU -lglut -o cube-3c
Aufrufen:     ./cube-3c

MacOS
~~~~~
Compilieren:  gcc -Wall -O cube-3c.c opengl-magic.c \
              -framework OpenGL -framework GLUT -o cube-3c
Aufrufen:     ./cube-3c

Cygwin mit X11
~~~~~~~~~~~~~~
Compilieren:  gcc -Wall -O cube-3c.c opengl-magic.c \
              -lGL -lGLU -lglut -o cube-3c
Aufrufen:     DISPLAY=:0.0 ./cube-3c
oder:
  einmalig:   export DISPLAY=:0.0
  danach:     ./cube-3c

Vorher einmalig: X-Server starten
              XWin -multiwindow &

Cygwin ohne X11
~~~~~~~~~~~~~~~
Compilieren:  i686-pc-mingw32-gcc -I freeglut/include -L freeglut/lib \
              -Wall -O cube-3c.c opengl-magic.c \
              -lOpenGL32 -lGLU32 -lfreeglut -o cube-3c
Aufrufen:     ./cube-3c

MinGW ohne X11
~~~~~~~~~~~~~~
Compilieren:  gcc -I freeglut/include -L freeglut/lib \
              -Wall -O cube-3c.c opengl-magic.c \
              -lOpenGL32 -lGLU32 -lfreeglut -o cube-3c
Aufrufen:     ./cube-3c

20171108/hp-2017ws-p2.tex

deleted100644 → 0
+0 −147
Original line number Diff line number Diff line
% hp-2017ws-p2.pdf - Labor Notes on Low-Level Programming
% Copyright (C) 2014, 2015, 2016, 2017  Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document.  If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document.  If not, see <http://creativecommons.org/licenses/>.

% README: Versuch 2, 8. und 15.11.2017: Basketball-Simulation

\documentclass[a4paper]{article}

\usepackage{pgscript}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{sfmath}

\sloppy
\pagestyle{empty}
\newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)}

\begin{document}

  \makebox(0,0)[tl]{\includegraphics[scale=0.57]{logo-hochschule-bochum-cvh-text.pdf}}\hfill
  \makebox(0,0)[tr]{\includegraphics[scale=0.5]{logo-hochschule-bochum.pdf}}
  \par\bigskip\bigskip
  \begin{center}
    \Large\textbf{Praktikumsversuch 2: Basketball-Simulation}
    \par\medskip
    \normalsize Hardwarenahe Programmierung / Angewandte Informatik\\
    Wintersemester 2017/18\sep
    Prof.~Dr.~Peter Gerwinski
  \end{center}

  Aufgabe: Schreiben Sie ein C-Programm, das
  den schrägen Wurf einer Kugel ("`Basketball"')
  durch einen horizontalen Ring ("`Korb"') simuliert und visualisiert
  -- sowohl ohne als auch mit Berücksichtigung der Luftreibung.

  \bigskip

  Hinweise:
  \vspace*{-\medskipamount}

  \begin{multicols}{2}

    \begin{itemize}
      \item
        Die Beispielprogramme \file{pendulum-}\lstinline{*}\file{.c} zeigen,
        wie eine Simulation mit Visualisierung
        mit Hilfe der 3d-Grafikbibliothek OpenGL
        programmiert werden kann.

      \item
        Als Basketball eignet sich eine Kugel;
        alternativ ist auch eine Teekanne zulässig.
        Als Basketballkorb eignet sich ein Ring (Torus).

      \item
        Zum Verschieben der gezeichneten Gegenstände
        im dreidimensionalen Zeichenraum
        eignet sich die Funktion \lstinline{glTranslatef()}.
        Genau wie \lstinline{glRotatef()} wirkt sich auch \lstinline{glTranslatef()}
        auf \emph{alle nachfolgenden\/} Zeichenoperationen aus,
        und der Wirkungsbereich läßt sich mit
        \lstinline{glPushMatrix()} und \lstinline{glPopMatrix()} begrenzen.

      \item
        \textbf{Bonus:}
        Zusätzliche Elemente wie z.\,B.\ das Abprallen des Balls am Brett,
        an der Wand oder auf dem Boden sind optional.

        Falls Sie über eine Textur für den Basketball verfügen,
        zeigt Ihnen das Beispielprogramm \file{orbit-1.c},
        wie Sie den Ball damit ausstatten können.

      \vfill\columnbreak

      \item
        In der Differentialgleichung (Bewegungsgleichung) für einen schrägen Wurf
        sind die $x$- und $y$-Komponente entkoppelt.

      \item
        In beiden Komponenten gibt es jeweils einen Anfangsort
        und eine Anfangsgeschwindigkeit.

      \item
        Bei Vernachlässigung der Luftreibung
        wirkt in $x$-Richtung keinerlei Kraft;
        in $y$-Richtung wirkt die Schwerkraft $F = m\cdot g$
        mit $g = 9.81\frac{\text{m}}{\text{s}^2}$.

      \item
        Die Luftreibung wirkt grundsätzlich der Bewegung entgegengerichtet.
        Wir nehmen an, daß die Stärke der Reibungskraft
        proportional zur Geschwindigkeit ist (laminarer Strömungswiderstand).

      \item
        Auch bei der Reibungskraft
        können Sie die $x$- und $y$-Komponente entkoppelt rechnen.

    \end{itemize}

    \bigskip

    \strut\hfill\emph{Viel Erfolg!}
    \vfill\strut

  \end{multicols}

  \vfill

  \begingroup

    \small

    \setlength{\leftskip}{3cm}

    Stand: 6.\ November 2017

%    Soweit nicht anders angegeben:\\
    Copyright \copyright\ 2014, 2015, 2016, 2017\quad Peter Gerwinski\\
    Lizenz: \mylicense

    Sie können diese Praktikumsunterlagen einschließlich Quelltext
%    und Beispielprogramme\\
    herunterladen unter:\\
    \url{https://gitlab.cvh-server.de/pgerwinski/hp}

  \endgroup

\end{document}

20171108/opengl-magic.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#if defined(__APPLE__) || defined(MACOSX)
  #include <OpenGL/gl.h>
  #include <OpenGL/glu.h>
  #include <GLUT/glut.h>
#else
  #include <GL/gl.h>
  #include <GL/glu.h>
  #include <GL/glut.h>
#endif

#include "opengl-magic.h"

void init_opengl (int *argcp, char **argv, char *window_name)
{
  glutInit (argcp, argv);
  glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  glutInitWindowSize (1024, 768);
  glutCreateWindow (window_name);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  gluPerspective (20.0, -1.33333, 3.0, 7.0);
  glMatrixMode (GL_MODELVIEW);
  glLoadIdentity ();
  glTranslatef (0.0, 0.0, -5.0);
  glClearColor (0.0, 0.0, 0.0, 0.0);
  glEnable (GL_DEPTH_TEST);
  glEnable (GL_LIGHTING);
  glEnable (GL_LIGHT0);
  static GLfloat light0_position[] = { 1.0, 0.0, 1.0, 0.0 };
  glLightfv (GL_LIGHT0, GL_POSITION, light0_position);
}

void set_material_color (float r, float g, float b)
{
  GLfloat color[] = { r, g, b };
  glMaterialfv (GL_FRONT, GL_AMBIENT, color);
  glMaterialfv (GL_FRONT, GL_DIFFUSE, color);
}

#if defined(__APPLE__) || defined(MACOSX)

void glutSolidCylinder (double radius, double height, int slices, int stacks)
{
  GLUquadricObj *q = gluNewQuadric ();
  gluCylinder (q, radius, radius, height, slices, stacks);
  gluDeleteQuadric (q);
}

#endif

20171108/opengl-magic.h

deleted100644 → 0
+0 −11
Original line number Diff line number Diff line
#ifndef OPENGL_MAGIC_H
#define OPENGL_MAGIC_H

extern void init_opengl (int *argcp, char **argv, char *window_name);
extern void set_material_color (float r, float g, float b);

#ifdef __MACOSX__
  extern void glutSolidCylinder (double radius, double height, int slices, int stacks);
#endif

#endif /* OPENGL_MAGIC_H */

20171108/orbit-1.c

deleted100644 → 0
+0 −59
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"
#include "textured-spheres.h"

float t = 0.0;
GLuint earth_texture, moon_texture;

void draw_earth (void)
{
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glRotatef (100.0 * t, 0.0, 0.0, 1.0);
  draw_textured_sphere (earth_texture, 0.25512, 63, 20);
  glPopMatrix ();
}

void draw_moon (void)
{
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glRotatef (-90, 0.0, 0.0, 1.0);
  draw_textured_sphere (moon_texture, 0.06952, 31, 10);
  glPopMatrix ();
}

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glPushMatrix ();
  glRotatef (23.44, 1.0, 0.0, -1.0);
  draw_earth ();
  glRotatef (5.145, 0.0, 1.0, 1.0);
  glRotatef (30.0 * t, 0.0, -1.0, 0.0);
  glTranslatef (0.9, 0.0, 0.0);
  draw_moon ();
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Orbit");
  init_texture ("earth-texture.png", &earth_texture);
  init_texture ("moon-texture.png", &moon_texture);
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171108/pendulum-1.c

deleted100644 → 0
+0 −47
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171108/pendulum-2.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  phi += dt * omega;
  omega += dt * (-g / l) * sin (phi);
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171108/pendulum-3.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 1.0    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi = phi0;
double omega = omega0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 1.0, 0.8);
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, l, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += dt;
  phi += dt * omega;
  omega += dt * (-g / l) * phi;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171108/pendulum-4.c

deleted100644 → 0
+0 −68
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <math.h>
#include "opengl-magic.h"

#define phi0 0.5    /* geg. Anfangswert */
#define omega0 0.0  /* geg. Anfangswert */
#define dt 0.05
#define g 9.81
#define l 1.0

double t = 0.0;
double phi_with_sin = phi0;
double omega_with_sin= omega0;
double phi_without_sin = phi0;
double omega_without_sin= omega0;

void draw_pendulum (double phi)
{
  glPushMatrix ();
  glRotatef (90, 1.0, 0.0, 0.0);
  glTranslatef (0.0, 0.0, -0.75);
  glRotatef (180.0 + phi / M_PI * 180.0, 0.0, 1.0, 0.0);
  glTranslatef (0.0, 0.0, -1.0);
  glutSolidCylinder (0.01, 1.0, 13, 1);
  glutSolidSphere (0.1, 31, 10);
  glPopMatrix ();
  glutSwapBuffers ();
}

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (0.8, 0.8, 1.0);
  draw_pendulum (phi_with_sin);
  set_material_color (1.0, 0.8, 0.8);
  draw_pendulum (phi_without_sin);
  set_material_color (0.8, 1.0, 0.8);
  double A = phi0;
  double B = 0.5 * M_PI;  /* 90° */
  double phi_analytic = A * sin (sqrt (g / l) * t + B);
  draw_pendulum (phi_analytic);
  glFlush ();
}

void timer_handler (int value)
{
  t += dt;
  phi_with_sin += dt * omega_with_sin;                   /* geg. Differentialgleichung */
  omega_with_sin += - dt * g / l * sin (phi_with_sin);   /* geg. Differentialgleichung */
                                                         /* _ohne_ Kleinwinkelnäherung */
  phi_without_sin += dt * omega_without_sin;             /* geg. Differentialgleichung */
  omega_without_sin += - dt * g / l * phi_without_sin;   /* geg. Differentialgleichung */
                                                         /* _mit_ Kleinwinkelnäherung  */
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Pendulum");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutPostRedisplay ();
  glutMainLoop ();
  return 0;
}

20171108/textured-spheres.c

deleted100644 → 0
+0 −168
Original line number Diff line number Diff line
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <png.h>
#include "textured-spheres.h"

#ifndef __USE_POSIX
  extern int fileno (FILE *stream);
#endif

static png_byte *load_png_file (char *filename, unsigned *w, unsigned *h)
{
  FILE *f = fopen (filename, "rb");
  if (!f)
    return NULL;

  /* is it a PNG file? */
  png_byte buf[8];
  if (fread (buf, 1, 8, f) != 8)
    {
      fclose (f);
      return NULL;
    }
  if (!png_check_sig (buf, 8))
    {
      fclose (f);
      return NULL;
    }

  png_struct *png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
                                                NULL, NULL, NULL);
  if (!png_ptr)
    {
      fclose (f);
      return NULL;
    }

  png_info *info_ptr = png_create_info_struct (png_ptr);
  if (!info_ptr)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, NULL, NULL);
      return NULL;
    }

  if (setjmp (png_jmpbuf (png_ptr)))
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_init_io (png_ptr, f);
  png_set_sig_bytes (png_ptr, 8);
  png_read_info (png_ptr, info_ptr);

  png_uint_32 width;
  png_uint_32 height;
  int bit_depth;
  int color_type;
  png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth,
                &color_type, NULL, NULL, NULL);

  /* tell libpng to strip 16 bit/color files down to 8 bits/color */
  if (bit_depth == 16)
    png_set_strip_16 (png_ptr);
  /* expand paletted colors into true RGB triplets */
  if (color_type == PNG_COLOR_TYPE_PALETTE)
    png_set_expand (png_ptr);
  /* expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
  if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
    png_set_expand (png_ptr);
  /* expand paletted or RGB images with transparency to full alpha channels
     so the data will be available as RGBA quartets. */
  if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
    png_set_expand (png_ptr);
  /* transform grayscale images into rgb */
  if (color_type == PNG_COLOR_TYPE_GRAY
      || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
    png_set_gray_to_rgb (png_ptr);

  if (color_type & PNG_COLOR_MASK_ALPHA)
    png_set_strip_alpha (png_ptr);

  png_read_update_info (png_ptr, info_ptr);
  png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth,
		&color_type, NULL, NULL, NULL);
  if (color_type != PNG_COLOR_TYPE_RGB
      && color_type != PNG_COLOR_TYPE_RGB_ALPHA)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_uint_32 row_bytes = png_get_rowbytes (png_ptr, info_ptr);
  if (row_bytes & 0x01)
    row_bytes++;

  png_byte *png_pixels = malloc (row_bytes * height * sizeof (png_byte));
  if (png_pixels == NULL)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      return NULL;
    }

  png_byte **row_pointers = malloc (height * sizeof (png_bytep));
  if (row_pointers == NULL)
    {
      fclose (f);
      png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
      free (png_pixels);
      png_pixels = NULL;
      return NULL;
    }

  int i;
  for (i = 0; i < height; i++)
    row_pointers[i] = png_pixels + i * row_bytes;

  png_read_image (png_ptr, row_pointers);

  png_read_end (png_ptr, info_ptr);
  png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
  fclose (f);

  if (w)
    *w = width;
  if (h)
    *h = height;
  free (row_pointers);

  return png_pixels;
}

void init_texture (char *image_filename, GLuint *texture)
{
  unsigned image_width, image_height;
  png_byte *image = load_png_file (image_filename, &image_width, &image_height);
  if (!image)
    {
      fprintf (stderr, "textured-spheres.c: cannot open texture file \"%s\"",
               image_filename);
      exit (1);
    }
  glGenTextures (1, texture);
  glBindTexture (GL_TEXTURE_2D, *texture);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  gluBuild2DMipmaps (GL_TEXTURE_2D, 3, image_width, image_height, GL_RGB, GL_UNSIGNED_BYTE, image);
}

void draw_textured_sphere (GLuint texture, GLdouble radius, GLint slices, GLint stacks)
{
  static GLfloat white_color[] = { 1.0, 1.0, 1.0 };
  glMaterialfv (GL_FRONT, GL_AMBIENT, white_color);
  glMaterialfv (GL_FRONT, GL_DIFFUSE, white_color);
  glBindTexture (GL_TEXTURE_2D, texture);
  glEnable (GL_TEXTURE_2D);
  GLUquadric *sphere = gluNewQuadric ();
  gluQuadricTexture (sphere, GL_TRUE);
  gluSphere (sphere, radius, slices, stacks);
  glDisable (GL_TEXTURE_2D);
}

20171108/textured-spheres.h

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
#ifndef TEXTURED_SPHERES_H
#define TEXTURED_SPHERES_H

#include <GL/gl.h>
#include <GL/glu.h>

extern void init_texture (char *image_filename, GLuint *texture);
extern void draw_textured_sphere (GLuint texture, GLdouble radius, GLint slices, GLint stacks);

#endif /* TEXTURED_SPHERES_H */

20171113/aufgabe-3.c

deleted100644 → 0
+0 −31
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glRotatef (t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutMainLoop ();
  glutTimerFunc (50, timer_handler, 0);
  return 0;
}

20171113/cube-1.c

deleted100644 → 0
+0 −21
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glutSolidCube (0.75);
  glFlush ();
  glutSwapBuffers ();
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutMainLoop ();
  return 0;
}

20171113/cube-2.c

deleted100644 → 0
+0 −22
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glRotatef (-30.0, 0.5, 1.0, 0.0);
  glutSolidCube (0.75);
  glFlush ();
  glutSwapBuffers ();
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutMainLoop ();
  return 0;
}

20171113/cube-3.c

deleted100644 → 0
+0 −32
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glRotatef (t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171113/cube-4.c

deleted100644 → 0
+0 −34
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glPushMatrix ();
  glRotatef (t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171113/cube-5.c

deleted100644 → 0
+0 −34
Original line number Diff line number Diff line
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include "opengl-magic.h"

float t = 0.0;

void draw (void)
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  set_material_color (1.0, 0.7, 0.0);
  glPushMatrix ();
  glRotatef (20.0 * t, 0.5, 1.0, 0.0);
  glutSolidCube (0.5);
  glPopMatrix ();
  glFlush ();
  glutSwapBuffers ();
}

void timer_handler (int value)
{
  t += 0.05;
  glutPostRedisplay ();
  glutTimerFunc (50, timer_handler, 0);
}

int main (int argc, char **argv)
{
  init_opengl (&argc, argv, "Cube");
  glutDisplayFunc (draw);
  glutTimerFunc (50, timer_handler, 0);
  glutMainLoop ();
  return 0;
}

20171113/hp-20171113.tex

deleted100644 → 0
+0 −1009

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/hp-uebung-20171113.tex

deleted100644 → 0
+0 −154
Original line number Diff line number Diff line
% hp-uebung-20171113.pdf - Exercises on Low-Level Programming / Applied Computer Sciences
% Copyright (C) 2013, 2015, 2016, 2017  Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document.  If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document.  If not, see <http://creativecommons.org/licenses/>.

% README: Datum-Bibliothek, Primzahlen, rotierender Würfel

\documentclass[a4paper]{article}

\usepackage{pgscript}

\begin{document}

%  \thispagestyle{empty}

  \section*{Hardwarenahe Programmierung / Angewandte Informatik\\
            Übungsaufgaben -- 13.\ November 2017}

  \exercise{Datum-Bibliothek}

  Schreiben Sie eine Bibliothek \file{dates.c} (mit Header-Datei \file{dates.h})
  zur Behandlung von Datumsangaben.

  Diese soll enthalten:
  \begin{itemize}
    \item
      einen \lstinline{struct}-Datentyp \lstinline{date},
      der eine Datumsangabe speichert,
    \item
      eine Funktion \lstinline{void date_print (date *d)}, die ein Datum ausgibt,
    \item
      eine Funktion \lstinline{int date_set (date *d, int day, int month, int year)},
      die ein Datum auf einen gegebenen Tag setzt
      und zurückgibt, ob es sich um ein gültiges Datum handelt (0 = nein, 1 = ja),
    \item
      eine Funktion \lstinline{void date_next (date *d)},
      die ein Datum auf den nächsten Tag vorrückt.
  \end{itemize}

  \exercise{Fehlerhaftes Programm: Primzahlen}

  \begin{minipage}[t]{5.5cm}
    Das nebenstehende Primzahlsuchprogramm (Datei: \gitfile{hp}{20171113}{aufgabe-2.c})
    soll Zahlen ausgeben, die genau zwei Teiler haben, ist aber fehlerhaft.

    \smallskip

    Korrigieren Sie das Programm derart, daß ein Programm entsteht,
    welches alle Primzahlen kleiner 100 ausgibt.% \points 5
  \end{minipage}\hfill
  \begin{minipage}[t]{9cm}
     \vspace*{-0.5cm}
    \begin{lstlisting}[gobble=6]
      #include <stdio.h>

      int main (void)
      {
        int n, i, divisors;
        for (n = 0; n < 100; n++)
          divisors = 0;
          for (i = 0; i < n; i++)
            if (n % i == 0)
              divisors++;
          if (divisors = 2)
            printf ("%d ist eine Primzahl.\n", n);
        return 0;
      }
    \end{lstlisting}
  \end{minipage}

  \exercise{Fehlerhaftes Programm: Rotierender Würfel}

  Das auf der nächsten Seite abgedruckte OpenGL-Programm
  (Datei: \gitfile{hp}{20171113}{aufgabe-3.c}) soll einen sich
  gleichmäßig drehenden Würfel darstellen, ist jedoch fehlerhaft.

  (Die Datei \gitfile{hp}{20171113}{opengl-magic.h} sowie die zugehörige C-Datei
  \gitfile{hp}{20171113}{opengl-magic.c} sind die aus der Vorlesung bekannten Beispiel-Dateien,
  die Sie zusammen mit diesen Übungsaufgaben herunterladen können.)

  \begin{itemize}
    \item[(a)]
      Warum sieht man lediglich ein leeres Fenster?
      Welchen Befehl muß man ergänzen, um diesen Fehler zu beheben?
%      \points{4}
  \end{itemize}

  Nach der Fehlerbehebung in Aufgabenteil (a)
  zeigt das Programm einen sich drehenden Würfel.

%  (Sie können sich diesen während der Klausur jederzeit vorführen lassen.)

  \begin{itemize}
    \item[(b)]
      Erklären Sie das Drehverhalten des Würfels. % \points{4}
    \item[(c)]
      Welche Befehle muß man ergänzen,
      um eine gleichförmige Drehung zu erhalten? % \points{4}
  \end{itemize}

  \filbreak

  \begin{lstlisting}
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>
    #include "opengl-magic.h"

    float t = 0.0;

    void draw (void)
    {
      glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      set_material_color (1.0, 0.7, 0.0);
      glRotatef (t, 0.5, 1.0, 0.0);
      glutSolidCube (0.5);
      glFlush ();
      glutSwapBuffers ();
    }

    void timer_handler (int value)
    {
      t += 0.05;
      glutPostRedisplay ();
      glutTimerFunc (50, timer_handler, 0);
    }

    int main (int argc, char **argv)
    {
      init_opengl (&argc, argv, "Cube");
      glutMainLoop ();
      glutTimerFunc (50, timer_handler, 0);
      return 0;
    }
  \end{lstlisting}

\end{document}

20171113/macros-1.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

#define VIER 4

int main (void)
{
  printf ("%d\n", VIER);
  return 0;
}

20171113/macros-2.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

#define VIER 4;

int main (void)
{
  printf ("%d\n", VIER);
  return 0;
}

20171113/macros-3.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

#define VIER 2 + 2

int main (void)
{
  printf ("%d\n", VIER);
  return 0;
}

20171113/macros-4.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

#define VIER 2 + 2

int main (void)
{
  printf ("3 * 4 = %d\n", 3 * VIER);
  return 0;
}

20171113/macros-5.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

#define VIER (2 + 2)

int main (void)
{
  printf ("3 * 4 = %d\n", 3 * VIER);
  return 0;
}

20171113/main-5.c

deleted100644 → 0
+0 −9
Original line number Diff line number Diff line
#include <stdio.h>

int main (int argc, char **argv)
{
  printf ("argc = %d\n", argc);
  for (int i = 0; i < 4; i++)
    printf ("argv[%d] = %s\n", i, argv[i]);
  return 0;
}

20171113/opengl-magic.c

deleted100644 → 0
+0 −49
Original line number Diff line number Diff line
#if defined(__APPLE__) || defined(MACOSX)
  #include <OpenGL/gl.h>
  #include <OpenGL/glu.h>
  #include <GLUT/glut.h>
#else
  #include <GL/gl.h>
  #include <GL/glu.h>
  #include <GL/glut.h>
#endif

#include "opengl-magic.h"

void init_opengl (int *argcp, char **argv, char *window_name)
{
  glutInit (argcp, argv);
  glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  glutInitWindowSize (1024, 768);
  glutCreateWindow (window_name);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  gluPerspective (20.0, -1.33333, 3.0, 7.0);
  glMatrixMode (GL_MODELVIEW);
  glLoadIdentity ();
  glTranslatef (0.0, 0.0, -5.0);
  glClearColor (0.0, 0.0, 0.0, 0.0);
  glEnable (GL_DEPTH_TEST);
  glEnable (GL_LIGHTING);
  glEnable (GL_LIGHT0);
  static GLfloat light0_position[] = { 1.0, 0.0, 1.0, 0.0 };
  glLightfv (GL_LIGHT0, GL_POSITION, light0_position);
}

void set_material_color (float r, float g, float b)
{
  GLfloat color[] = { r, g, b };
  glMaterialfv (GL_FRONT, GL_AMBIENT, color);
  glMaterialfv (GL_FRONT, GL_DIFFUSE, color);
}

#if defined(__APPLE__) || defined(MACOSX)

void glutSolidCylinder (double radius, double height, int slices, int stacks)
{
  GLUquadricObj *q = gluNewQuadric ();
  gluCylinder (q, radius, radius, height, slices, stacks);
  gluDeleteQuadric (q);
}

#endif

20171113/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/pendulum-1.c

deleted100644 → 0
+0 −47

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/pendulum-2.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/pendulum-3.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/stdio.h

deleted100644 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171113/textured-spheres.c

deleted100644 → 0
+0 −168

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/blink-0a.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/blink-2.c

deleted100644 → 0
+0 −16

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/hp-20171120.tex

deleted100644 → 0
+0 −926

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/opengl-magic.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/pendulum-1.c

deleted100644 → 0
+0 −47

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/pendulum-2.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/pendulum-3.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/pendulum.pdf

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/textured-spheres.c

deleted100644 → 0
+0 −168

File deleted.

Preview size limit exceeded, changes collapsed.

20171120/upload.sh

deleted100755 → 0
+0 −2

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/aufgabe-2.c

deleted100644 → 0
+0 −20

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/blink-0a.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/blink-10.c

deleted100644 → 0
+0 −0

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/blink-11.c

deleted100644 → 0
+0 −32

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/blink-5a.c

deleted100644 → 0
+0 −15

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/blink-5b.c

deleted100644 → 0
+0 −15

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/hp-20171127.tex

deleted100644 → 0
+0 −523

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/leds.jpg

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/opengl-magic.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/pendulum-1.c

deleted100644 → 0
+0 −47

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/pendulum-2.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/pendulum-3.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/pendulum.pdf

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171127/upload.sh

deleted100755 → 0
+0 −2

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-10.c

deleted100644 → 0
+0 −31

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-10.s

deleted100644 → 0
+0 −75

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-3.c

deleted100644 → 0
+0 −17

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-4b.c

deleted100644 → 0
+0 −13

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-4c.c

deleted100644 → 0
+0 −16

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-5a.c

deleted100644 → 0
+0 −15

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-5b.c

deleted100644 → 0
+0 −15

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-6a.c

deleted100644 → 0
+0 −23

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-8.c

deleted100644 → 0
+0 −20

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/blink-9.s

deleted100644 → 0
+0 −78

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/opengl-magic.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/pendulum-1.c

deleted100644 → 0
+0 −47

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/pendulum-2.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/pendulum-3.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171204/pendulum.pdf

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171206/pool-rechner.txt

deleted100644 → 0
+0 −7

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/opengl-magic.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/pendulum-1.c

deleted100644 → 0
+0 −47

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/pendulum-2.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/pendulum-3.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171211/pendulum.pdf

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171213/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/Makefile

deleted100644 → 0
+0 −8

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/blink-3.c

deleted100644 → 0
+0 −17

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/blink-3a.c

deleted100644 → 0
+0 −17

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/bsort-3a.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/bsort-3b.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/bsort-4a.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/bsort-4b.c

deleted100644 → 0
+0 −57

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/hanoi-0.c

deleted100644 → 0
+0 −26

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/hanoi-9.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/opengl-magic.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/pendulum.pdf

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/qsort-3a.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/qsort-3b.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20171218/qsort-3c.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/bsort-3a.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/bsort-3b.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/bsort-3c.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/bsort-4a.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/bsort-4b.c

deleted100644 → 0
+0 −57

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/hanoi-0.c

deleted100644 → 0
+0 −26

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/hanoi-9.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/hanoi-9a.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/hello-gtk.c

deleted100644 → 0
+0 −23

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/qsort-3a.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/qsort-3b.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180108/qsort-3c.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180110/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/aufgabe-1c.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/aufgabe-1d.c

deleted100644 → 0
+0 −49

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-2.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-3.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-3a.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-3b.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-3c.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-4.c

deleted100644 → 0
+0 −57

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-4a.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/bsort-4b.c

deleted100644 → 0
+0 −57

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/dynmem-3.c

deleted100644 → 0
+0 −24

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/gtk-1.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/gtk-2.c

deleted100644 → 0
+0 −12

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/gtk-3.c

deleted100644 → 0
+0 −16

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/gtk-4.c

deleted100644 → 0
+0 −25

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/hello-gtk.c

deleted100644 → 0
+0 −23

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/hello-gtk.png

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-1.c

deleted100644 → 0
+0 −28

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-2.c

deleted100644 → 0
+0 −28

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-3.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-4.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-5.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/objects-6.c

deleted100644 → 0
+0 −39

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-1.c

deleted100644 → 0
+0 −70

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-2.c

deleted100644 → 0
+0 −72

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-3.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-3a.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-3b.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/qsort-3c.c

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/sort-5.c

deleted100644 → 0
+0 −60

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/sort-6.c

deleted100644 → 0
+0 −60

File deleted.

Preview size limit exceeded, changes collapsed.

20180115/sort-7.c

deleted100644 → 0
+0 −53

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/dynmem-4.c

deleted100644 → 0
+0 −24

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/gtk-1.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/gtk-2.c

deleted100644 → 0
+0 −12

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/gtk-3.c

deleted100644 → 0
+0 −16

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/gtk-4.c

deleted100644 → 0
+0 −25

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/gtk-5.c

deleted100644 → 0
+0 −26

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/hello-gtk.c

deleted100644 → 0
+0 −23

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/hello-gtk.png

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/lists-1.c

deleted100644 → 0
+0 −13

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/lists-10.c

deleted100644 → 0
+0 −37

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/lists-11.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/lists-6.c

deleted100644 → 0
+0 −26

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/lists-9.c

deleted100644 → 0
+0 −42

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-1.c

deleted100644 → 0
+0 −28

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-2.c

deleted100644 → 0
+0 −28

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-3.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-4.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-5.c

deleted100644 → 0
+0 −34

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/objects-6.c

deleted100644 → 0
+0 −39

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/pgslides.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/stack-3.c

deleted100644 → 0
+0 −43

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/stack-4.c

deleted100644 → 0
+0 −43

File deleted.

Preview size limit exceeded, changes collapsed.

20180122/stack-8.c

deleted100644 → 0
+0 −61

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/hp-20180129.tex

deleted100644 → 0
+0 −509

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/pgslides.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-10.c

deleted100644 → 0
+0 −63

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-11.c

deleted100644 → 0
+0 −61

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-12.c

deleted100644 → 0
+0 −59

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-13.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-14.c

deleted100644 → 0
+0 −55

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-16.c

deleted100644 → 0
+0 −48

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-3.c

deleted100644 → 0
+0 −31

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-4.c

deleted100644 → 0
+0 −37

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-5.c

deleted100644 → 0
+0 −44

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-6.c

deleted100644 → 0
+0 −50

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-7.c

deleted100644 → 0
+0 −71

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-8.c

deleted100644 → 0
+0 −73

File deleted.

Preview size limit exceeded, changes collapsed.

20180129/tree-9.c

deleted100644 → 0
+0 −73

File deleted.

Preview size limit exceeded, changes collapsed.

20180201/opengl-magic.c

deleted100644 → 0
+0 −58

File deleted.

Preview size limit exceeded, changes collapsed.

20180201/opengl-magic.h

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180201/pendulum-4.c

deleted100644 → 0
+0 −68

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/pgscript.sty

deleted120000 → 0
+0 −1

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-13.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-14.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-15.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-16.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-17.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-19.c

deleted100644 → 0
+0 −10

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-2.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-20.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-21.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-22.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-3.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-4.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-5.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-6.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/scanf-7.c

deleted100644 → 0
+0 −9

File deleted.

Preview size limit exceeded, changes collapsed.

20180205/textgraph.c

deleted100644 → 0
+0 −154

File deleted.

Preview size limit exceeded, changes collapsed.

20241010/gitlab.png

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/hello-01.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/hello-gtk.c

0 → 100644
+31 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-01.c

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-02.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-05.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-06.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-07.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-07a.pas

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-07b.pas

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-07c.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-07c.pas

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-08.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-09.c

0 → 100644
+4 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/if-10.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-01.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-02.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-03.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-05.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-07.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-07.s

0 → 100644
+45 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-08.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-09.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-10.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-10.s

0 → 100644
+45 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-11.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-12.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-12.s

0 → 100644
+45 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-13.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241010/while-14.c

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/gitlab.png

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-03.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-04.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-05.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-06.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-07.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-08.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-09.c

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-10.c

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/hello-10.txt

0 → 100644
+29 −0

File added.

Preview size limit exceeded, changes collapsed.

+1594 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-1.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-2.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-3.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-4.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-5.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-3-6.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241017/loesung-4.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-04.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-05.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-06.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-07.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-08.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-09.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-12.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/arrays-13.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+12 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0

File added.

Preview size limit exceeded, changes collapsed.

+14 −0

File added.

Preview size limit exceeded, changes collapsed.

+27 −0

File added.

Preview size limit exceeded, changes collapsed.

+27 −0

File added.

Preview size limit exceeded, changes collapsed.

+29 −0

File added.

Preview size limit exceeded, changes collapsed.

+29 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-2-4.c

0 → 100644
+41 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-2-5.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-2-6.c

0 → 100644
+39 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-2-7.c

0 → 100644
+41 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-2-8.c

0 → 100644
+42 −0

File added.

Preview size limit exceeded, changes collapsed.

+43 −0

File added.

Preview size limit exceeded, changes collapsed.

+42 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-3.c

0 → 100644
+67 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-4.c

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/loesung-4x.c

0 → 100644
+2 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-00.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-02.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-03.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-04.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-05.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/pointers-06.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/strings-01.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/strings-02.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/strings-03.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241031/strings-04.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-01.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-02.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-03.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-04.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-05.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-06.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-07.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-08.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-09.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-10.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-11.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-12.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-13.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-14.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-15.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/arrays-16.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/aufgabe-2.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-01.txt

0 → 100644
+21 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-03.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-04.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-05.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-06.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-07.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/files-08.c

0 → 100644
+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/loesung-2.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/loesung-3-1.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/loesung-3-2.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/loesung-3-3.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/loesung-3-4.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/pointers-01.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/pointers-02.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/pointers-03.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+21 −0

File added.

Preview size limit exceeded, changes collapsed.

+21 −0

File added.

Preview size limit exceeded, changes collapsed.

+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-01.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-02.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-03.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-04.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-07.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-08.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-09.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-11.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-12.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-13.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-14.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/strings-16.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241107/structs-05.c

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/Makefile-1

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/Makefile-2

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/Makefile-3

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-01.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-02.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-03.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-04.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-04.s

0 → 100644
+56 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-05.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-05.s

0 → 100644
+51 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/arrays-07.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/ascii-01.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/fhello.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-01.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-01.txt

0 → 100644
+21 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-02.c

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-03.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-05.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-06.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-07.c

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-08.c

0 → 100644
+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/files-09.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-2.c

0 → 100644
+62 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-2.h

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-1.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-2.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-3.c

0 → 100644
+29 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-4.c

0 → 100644
+31 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-5.c

0 → 100644
+29 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/loesung-3-6.c

0 → 100644
+23 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/maerchen.txt

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

+26 −0

File added.

Preview size limit exceeded, changes collapsed.

+19 −0

File added.

Preview size limit exceeded, changes collapsed.

+19 −0

File added.

Preview size limit exceeded, changes collapsed.

+18 −0

File added.

Preview size limit exceeded, changes collapsed.

+18 −0

File added.

Preview size limit exceeded, changes collapsed.

+77 −0

File added.

Preview size limit exceeded, changes collapsed.

+19 −0

File added.

Preview size limit exceeded, changes collapsed.

+77 −0

File added.

Preview size limit exceeded, changes collapsed.

+14 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-01.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-02.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-03.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-04.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-05.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-06.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-07.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-08.c

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/strings-09.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241114/textgraph.c

0 → 100644
+46 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/Makefile-1

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/Makefile-2

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/Makefile-3

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/bits-01.txt

0 → 100644
+56 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-0.hex

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-00.txt

0 → 100644
+38 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-01.txt

0 → 100644
+6 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-02.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-03.txt

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-04.txt

0 → 100644
+45 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/blink-1.hex

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-01.txt

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-02.txt

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-03.txt

0 → 100644
+52 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-04.txt

0 → 100644
+40 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-05.txt

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-06.txt

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-07.txt

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-08.txt

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-09.txt

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-10.txt

0 → 100644
+42 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-11.txt

0 → 100644
+106 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/extern-12.txt

0 → 100644
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-01.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-01a.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-01b.c

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-01c.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-02.c

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-03.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-04.c

0 → 100644
+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/gtk-05.c

0 → 100644
+35 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/hello-03.c

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/hello-05.c

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/hello-06.c

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/muh.h

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20241121/prompfl-01.h

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/Makefile-1

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/Makefile-2

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/Makefile-3

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/answer.c

0 → 100644
+6 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/answer.h

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/aufgabe-2.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/bits-01.txt

0 → 100644
+68 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/blink-0.hex

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/blink-1.hex

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/blink-3.hex

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/extern-01.txt

0 → 100644
+43 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/extern-02.txt

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-01.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-01a.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-01b.c

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-01c.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-02.c

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-02.txt

0 → 100644
+34 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-03.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-04.c

0 → 100644
+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/gtk-05.c

0 → 100644
+35 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/loesung-1.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+34 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/loesung-2.c

0 → 100644
+30 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/make-01.txt

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/make-02.txt

0 → 100644
+30 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/make-03.txt

0 → 100644
+28 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/make-04.txt

0 → 100644
+21 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/stdint-02.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241128/stdint-03.c

0 → 100644
+9 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/blink-8.s

0 → 100644
+84 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/download.sh

0 → 100755
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/loesung-1.c

0 → 100644
+28 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-01.c

0 → 100644
+43 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-02.c

0 → 100644
+57 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-03.c

0 → 100644
+56 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-04.c

0 → 100644
+59 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-05.c

0 → 100644
+59 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-06.c

0 → 100644
+62 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-07.c

0 → 100644
+62 −0

File added.

Preview size limit exceeded, changes collapsed.

20241205/wurf-08.c

0 → 100644
+62 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-1-1.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-1-2.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-2.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-3a.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-3b.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/loesung-3c.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

+1324 −0

File added.

Preview size limit exceeded, changes collapsed.

+521 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/pendulum-0.c

0 → 100644
+69 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/pendulum-1.c

0 → 100644
+69 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/pendulum-2.c

0 → 100644
+69 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/pendulum-3.c

0 → 100644
+87 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/pendulum-4.c

0 → 100644
+86 −0

File added.

Preview size limit exceeded, changes collapsed.

20241212/smiley.xbm

0 → 100644
+6 −0

File added.

Preview size limit exceeded, changes collapsed.

20241219/aufgabe-1.c

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20241219/aufgabe-3.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+973 −0

File added.

Preview size limit exceeded, changes collapsed.