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

Skript und Übersichtsdatei (README.md)

parent c88d1473
No related branches found
No related tags found
No related merge requests found
Showing with 531 additions and 0 deletions
Hardwarenahe Programmierung
===========================
Lehrveranstaltung im Wintersemester 2020/21
Hochschule Bochum, Campus Velbert/Heiligenhaus
Prof. Dr. rer. nat. Peter Gerwinski
Copyright © 2012–2020 Peter Gerwinski
**Diese Lehrmaterialien sind freie Software.**
Sie dürfen diese gemäß den jeweils angegebenen Lizenzen
([CC-BY-SA 3.0](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/CC-BY-SA-3.0),
[GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/GNU-GPL-3),
[modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/BSD-MODIFIED))
studieren, kopieren, modifizieren und/oder weitergeben.
Für Details siehe [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/README).
Vortragsfolien und Beispiele:
-----------------------------
* [05.11.2020: Einführung, Einführung in C (bis Schleifen)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20201105/hp-20201105.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/20201105/)
* [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2020ws.pdf)
Übungsaufgaben:
---------------
* [05.11.2020: Hello-World-Programme, Schaltjahr ermitteln, Maximum berechnen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/20201105/hp-uebung-20201105.pdf)
Musterlösungen:
---------------
(keine)
Tafelbilder:
------------
(keine)
Praktikumsunterlagen:
---------------------
(keine)
Alte Klausuren:
---------------
Skript:
-------
* [Hardwarenahe Programmierung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/script/hp-2020ws.pdf)
Original-Materialien einschließlich Beispiel-Programme und LaTeX-Quelltexte:
----------------------------------------------------------------------------
* [common – gemeinsame Dateien für Skript und Vortragsfolien](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/common)
* [script – Skript zur Lehrveranstaltung](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/script)
* [201????? – Vortragsfolien und Beispiele](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master)
* [branch 2018ws – vollständige Lehrmaterialien vom Wintersemester 2018/19](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2018ws)
Low-Level Programming
=====================
Course in winter semester 2020-21
Bochum University of Applied Sciences, Campus Velbert/Heiligenhaus
Prof. Dr. rer. nat. Peter Gerwinski
Copyright © 2012–2020 Peter Gerwinski
**These teaching materials are Free Software.**
You may study, copy, modify, and/or distribute them
according to their respective licences
([CC-BY-SA 3.0](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/CC-BY-SA-3.0),
[GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/GNU-GPL-3),
[modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/BSD-MODIFIED)).
See the file [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/common/README) for details.
* [common – common files for lecture notes and slides](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/common)
* [script – lecture notes](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master/script)
* [201????? – slides and examples](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master)
* [hp-slides-2020ws.pdf – all slides in 1 file](https://gitlab.cvh-server.de/pgerwinski/hp/raw/master/hp-slides-2020ws.pdf)
* [branch 2018ws – complete teaching materials from winter semester 2018–19](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2018ws)
File added
\documentclass{article}
\usepackage[final]{pdfpages}
\usepackage[paperwidth=363pt,paperheight=272pt]{geometry}
\usepackage{hyperref}
\pagestyle{empty}
\begin{document}
\includepdf[pages=1]{script/hp-slides-title-2020ws.pdf}
\pdfbookmark[1]{Wichtiger Hinweis}{Hinweis}
\includepdf[pages=2-]{script/hp-slides-title-2020ws.pdf}
\pdfbookmark[1]{05.11.2020: Einführung, Einführung in C (bis Schleifen)}{20201105}
\includepdf[pages=-]{20201105/hp-20201105.pdf}
\end{document}
../common/Tower_of_Hanoi.jpeg
\ No newline at end of file
File added
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 847.15857 743.62268"
height="743.62268"
width="847.15857"
xml:space="preserve"
version="1.1"
id="svg5488"><metadata
id="metadata5494"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs5492" /><g
transform="matrix(1.25,0,0,-1.25,0,743.62267)"
id="g5496"><g
id="g5498"><path
id="path5500"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 338.867,594.5 c -7.512,0 -15.027,-2.867 -20.758,-8.598 -1.879,-1.879 -3.445,-3.953 -4.707,-6.152 l -15.246,-26.157 -0.07,0 L 4.984,45.554 C 4.93,45.457 4.887,45.359 4.832,45.261 3.344,42.867 2.176,40.218 1.406,37.351 -2.789,21.695 6.504,5.597 22.164,1.402 c 2.586,-0.695 5.184,-1.012 7.738,-1 l 618.067,0 c 16.215,0 29.355,13.141 29.355,29.356 0,5.304 -1.414,10.281 -3.879,14.578 -0.019,0.031 -0.035,0.062 -0.05,0.097 l -304.368,528.41 c -3.863,6.665 -5.652,9.305 -9.406,13.059 -5.73,5.731 -13.242,8.598 -20.754,8.598 z" /><path
id="path5502"
style="fill:#c1121c;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 338.867,587.144 c -7.125,0.051 -14.949,-3.59 -18.781,-10.406 L 10.793,40.847 C 9.008,37.199 8.258,34.027 8.234,30.398 c 0,-6.496 2.875,-12.66 7.848,-16.84 4.383,-3.394 8.535,-5.16 14.121,-5.16 l 617.906,0 c 3.77,-0.035 7.547,0.871 10.977,3.133 6.453,3.898 10.402,10.883 10.41,18.426 -0.184,3.894 -1.144,8 -2.879,10.89 L 357.504,576.828 c -0.027,0.047 -0.059,0.094 -0.09,0.14 -0.031,0.047 -0.062,0.094 -0.094,0.145 -1.097,1.754 -2.472,3.305 -4.039,4.633 -3.59,3.109 -8.086,4.976 -12.824,5.316 -0.531,0.047 -1.062,0.078 -1.59,0.082 z M 30.203,8.398 l -1.523,0 1.554,0 -0.031,0 z M 338.547,480.933 574.25,72.398 l -471.738,0 236.035,408.535 z" /><path
id="path5504"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 338.867,594.898 c -7.617,0 -15.23,-2.906 -21.039,-8.715 -1.906,-1.902 -3.492,-4.008 -4.773,-6.234 l -15.129,-25.957 -0.071,0 L 4.641,45.754 C 4.574,45.636 4.527,45.535 4.48,45.453 2.977,43.031 1.797,40.351 1.02,37.457 -3.23,21.586 6.191,5.269 22.059,1.015 24.68,0.312 27.316,-0.008 29.902,0 l 618.067,0 c 16.429,0 29.758,13.328 29.758,29.758 0,5.375 -1.438,10.417 -3.934,14.773 -0.012,0.019 -0.027,0.051 -0.051,0.098 L 369.379,573.043 c -3.871,6.668 -5.695,9.363 -9.469,13.14 -5.808,5.809 -13.426,8.715 -21.039,8.715 l -0.004,0 z m 0,-0.398 c 7.512,0 15.024,-2.867 20.754,-8.598 3.754,-3.754 5.543,-6.394 9.406,-13.059 L 673.391,44.433 c 0.019,-0.035 0.035,-0.066 0.054,-0.097 2.465,-4.297 3.879,-9.274 3.879,-14.578 0,-16.215 -13.14,-29.356 -29.355,-29.356 l -618.067,0 C 27.348,0.39 24.75,0.707 22.164,1.402 6.504,5.597 -2.789,21.695 1.406,37.351 c 0.766,2.867 1.938,5.516 3.426,7.91 0.055,0.098 0.098,0.196 0.152,0.293 l 293.102,508.039 0.07,0 15.246,26.157 c 1.262,2.199 2.828,4.273 4.707,6.152 5.731,5.731 13.243,8.598 20.758,8.598 z" /><path
id="path5506"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 338.867,408.414 c -17.676,0 -32.004,-14.328 -32.004,-32 l 16,-188.016 c 0,-8.836 6.371,-16.015 16.004,-16 9.629,0.016 15.996,7.82 15.996,16.012 l 16,188.004 c 0,17.672 -14.324,32 -31.996,32 z" /><path
id="path5508"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 370.863,124.398 c 0,-17.683 -14.316,-31.996 -31.996,-31.996 -17.676,0 -32.004,14.309 -32.004,31.996 0,17.672 14.328,32.004 32.004,32.004 17.68,0 31.996,-14.332 31.996,-32.004" /></g></g></svg>
\ No newline at end of file
../common/Zeichen_123.pdf
\ No newline at end of file
#include "answer.h"
int answer (void)
{
return 23;
}
extern int answer (void);
#include <stdio.h>
int main (void)
{
int prime[5] = { 2, 3, 5, 7, 11 };
int *p = prime;
int i;
for (i = 0; i < 5; i++)
printf ("%d\n", *(p + i));
return 0;
}
#include <stdio.h>
int main (void)
{
int prime[5] = { 2, 3, 5, 7, 11 };
int *p = prime;
int i;
for (i = 0; i < 5; i++)
printf ("%d\n", p[i]);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Zacharias", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_sorted;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#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;
}
#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;
}
#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;
}
#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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment