Letzte Änderungen:
23.01.2011 Mitfahrgelegenheit
26.05.2016 PGP Public key aktualisiert


Biete Mitfahrgelegenheit!

23.01.2011: Ich fahre in nächster Zeit regelmäßig sonntags am Abend oder montags sehr früh von Soltau nach Erlangen beziehungsweise Nürnberg, und normalerweise freitags wieder zurück.

Dabei kann ich bis zu zwei Leute mitnehmen und reichlich Gepäck (Mercedes Sprinter).

Bei der Route bin ich etwas flexibel, als entweder Soltau - Hannover - Göttingen - Kassel - Fulda - Würzburg - Erlangen/Nürnberg/Fürth, oder (lieber) Soltau - Hannover - Göttingen - Kassel - Fulda - Schweinfurt - Bamberg - Erlangen/Nürnberg/Fürth.

Auch machbar wäre Soltau - Hannover - Braunschweig - Magdeburg - Halle/Saale - Leipzig - Erlangen/Nürnberg/Fürth.

Bei Bedarf: Telefon siehe ganz unten.


Wie kann man seine Hausaufgaben lösen?

Eine Möglichkeit ist hier vorgeführt: Problem mit Operationsverstärker LM324.

Falsch ist es ja nicht...

...aber auch nicht ganz die gewünschte Antwort.

Bilder Abi-Feier 31. Mai 2008

Freie Software

Hier finden sich ein paar Softwareschnipsel von mir, von denen ich vermute, daß auch andere Leute sie nutzen können.

Wirklich dynamische Felder mit vararr.h

Normale Felder in C und C++ sind manchmal etwas starr, weil man einerseits die Länge nicht mehr ändern kann, und die untere Grenze immer bei 0 liegt. Frei allokierter Speicher mit realloc() ist auch nicht immer sehr komfortabel und geschickt (insbesondere wenn Objekte im Feld liegen), und std::vector in C++ kann viel, aber verlängert sich auch nicht bei Bedarf automatisch.

Das nervt manchmal. In vielen Fällen ist VarArr die Lösung.

Damit können Felder fast beliebigen Typs deklariert werden, deren obere und untere Grenzen je nach Verwendung automatisch erweitert werden.

Das ist in der Regel sehr laufzeiteffizient, einfach zu benutzen und leicht lesbar.

Beispiel:

  // Feld vereinbaren:
  VarArr < int >     feld;

  // Beliebige Elemente initialisieren und verwenden:
  feld[1] = 11;
  feld[0] = 10;
  feld[-5] = 15;

  std::cout << "feld[-5] = " << feld[-5] << std::endl;
  std::cout << "feld[0]  = " << feld[0] << std::endl;
  std::cout << "feld[1]  = " << feld[1] << std::endl;

Bei jedem Zugriff wird automatisch kontrolliert, ob der aktuelle Index innerhalb der bisherigen Grenzen liegt und bei Bedarf wird nachallokiert. Durch etwas interne Zeigerakrobatik sind negative Feldindices genauso möglich wie positive.

Die verwalteten Elemente können auch übliche C++-Objekte sein.

Doku im Quelltext von vararr.h, Beispiel test.cpp anbei.

Festkommazahlen mit fixpoint.h

Auf vielen Rechnern ist die Rechnung mit Gleitkommazahlen inzwischen hinreichend schnell (ab PC aufwärts).

Insbesondere im Controllerbereich hat man aber keine Unterstützung durch Gleitkommahardware. Eine Verwendung von Gleitkommazahlen ist dadurch sehr rechenintensiv.

Deshalb wird dann gerne auf Festkommaarithmetik ausgewichen (siehe auch Wikipedia - Festkommazahl), falls man weiß, in welchem Wertebereich man sich bewegt.

Das ist allerdings etwas fehleranfällig und führt zu schlecht lesbarem Code.

Eine Alternative ist fixpoint.h. Damit kann man Festkommazahlen fast wie int oder float verwenden und erhält schön lesbaren Quelltext mit effizienter Festkommarechnung unter der Haube.

(Um fixpoint.h zu verwenden, muß man seinem Controller C++ zumuten. Das ist aber erfahrungsgemäß kein Nachteil, solange man sich (wie in fixpoint.h) auf Techniken beschränkt, die keine Resourcenfresser sind. Nicht alles in C++ ist kritisch für Controller...)

Diskussion zu fixpoint.h bei Bedarf bitte auf Mikrocontroller.net.

Binärdateien nach C konvertieren

Ich brauche gelegentlich in C/C++ ein char-Feld, das Byte für Byte mit dem Inhalt einer Binärdatei initialisiert wird.

Dazu nehme ich ein schnell gestricktes Programm bin2c.cpp.


Vorlesungen, Skripte etc.

Im Rahmen von Vorlesungen (vorwiegend an der Fachhochschule Hannover, FB Informatik) und Kursen entstanden einige Skripte, die allerdings teilweise unvollständig sind (bei einem ersten Lehrauftrag zu einem Thema reicht die Zeit meist nicht, so daß ein Skript frühestens beim zweiten Halten derselben Vorlesung komplett wird).

ANSI-C

Für verschiedene Kurse und Vorlesungen entstand im Lauf der Jahre ein komplettes Buch 0 ist false, alles andere true über ANSI-C. Das Buch ist inzwischen leicht veraltet, und wird nicht mehr nennenswert gepflegt. Bei Bedarf wird es (mit aktualisiertem Inhalt) in einem Skript über C und C++ aufgehen, ein Zeitplan dafür existiert aktuell nicht.

C++

Die sinngemäße Fortsetzung des Buchs über ANSI-C ist das passende Machwerk über C++, das zu einer Vorlesung im Wintersemester 2001/2002 an der Fachhochschule Hannover sowie für kommerzielle Seminare entstand. Der eigentliche Sprachteil ist fertig; allerdings fehlt die Beschreibung der Bibliothek noch. Es wird irgendwann hoffentlich fertiggestellt (und um den C-Teil ergänzt), und existiert in einer Postscript- und einer HTML-Version mit dem selben Inhalt.

Systemprogrammierung

In der Vorlesung Systemprogrammierung (WPV FH Hannover im Sommersemester 2001) geht es hauptsächlich um die verschiedenen Möglichkeiten, zwischen Prozessen Informationen auszutauschen (IPC = interprocess communication), sowie um kleinere Randgebiete, die etwas systemnäher sind als der Stoff der meisten Vorlesungen. Hauptsächlich wird dies anhand von Unix und Linux behandelt; allerdings sind Abstecher zu Windows eingebaut, soweit eine Analogie besteht.

Ein komplettes Skript der gesamten Vorlesung existiert nicht; allerdings zu einem Teilgebiet, nämlich Dynamische Bibliotheken (Postscript und HTML).

Shellprogrammierung

Dieses Skript gibt es nicht mehr eigenständig, sein Inhalt ging in die Programmiertools über.

Programmiertools

In diesem Skript werden nach und nach (je nach Bedarf) einige Tools vorgestellt, die man neben der eigentlichen Programmiersprache kennen sollte, um sinnvoll zu programmieren. Dabei geht es vorrangig um die Programmierung außerhalb von integrierten Entwicklungsumgebungen; einige Teile sind aber selbst dann sinnvoll zu verwenden, wenn man mit einer IDE arbeitet. Das Skript ist weitgehend auf Unix/Linux zugeschnitten, aber Teile davon sind auch unter Windows sinnvoll nutzbar, je nach den dort installierten Werkzeugen.

Informatik I

Die Vorlesung Informatik I (oder Einführung in die Informatik) bietet für die Erstsemester einen groben Überblick über einige wichtige Ideen und Konzepte der Informatik, sowie die wichtigsten Grundbegriffe. Das Skript hierzu ist ziemlich unvollständig und eher als Merkhilfe gedacht; ob und wann ich es fertigstellen werde, kann ich im Moment nicht abschätzen, weil ich keinen aktuellen Bedarf dafür habe.

Informatik II

Die Vorlesung zu Informatik II (Hauptthema: Algorithmen und Datenstrukturen) hatte ich bislang zweimal zu halten, werde aber wahrscheinlich kein komplettes Skript dazu produzieren. Ich halte mich weitgehend an die Vorlesung von Prof. Dr. Josef v. Helden aus dem Jahr 2000, und sammle in einem eigenen Skript hauptsächlich alles, was von seinem Skript abweicht. Nur beide Skripte zusammen geben die aktuelle Vorlesung wider. Das Skript von v. Helden ist für die Informatikstudenten der FH Hannover über den Skripteserver erhältlich.
Alle genannten Skripte im Überblick:
Thema:Status:vom:OnlineversionPostscript (gzip)HTML (zip)
ANSI-Cvollständig04.10.2002onlineck.ps.gzck_html.zip
C++Sprache ja, Bibl. nein01.04.2002onlinecpp.ps.gzcpp_html.zip
Dynamische Bibliothekenvollständig (Linux+Windows)05.10.2002onlinedynamischeBibliotheken.ps.gzdynamischeBibliotheken_html.zip
Programmiertoolsunvollständig10.06.2003onlineskript_tools.ps.gzskript_tools_html.zip
Informatik Iunvollständig01.04.2002onlineskript_einfinf.ps.gzskript_einfinf_html.zip
Informatik IIunvollständig30.03.2006onlineinformatik_2.ps.gzinformatik_2_html.zip


Wegbeschreibung

Eine Wegbeschreibung zu mir existiert auch.


No keyboard found ... press [F1] to continue

Schöne Fehlermeldungen und andere Absonderungen natürlicher Intelligenz...

Letzte Änderung: 20.05.2001

Bilder aus Buchstaben

Nette Bilder aus Buchstaben für emails etc. ...

Letzte Änderung: 27.06.2002

Bitte angemessen würdigen:

Für Schleif- und Polieranlagen, Handhabungstechnik und Roboter holt man sich bitteschon Rat bei Hirschler! Sitz in Speyer und Niederlassung in Steinhude.


Mein öffentlicher PGP/GnuPG-Schlüssel ist:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=PQwQ
-----END PGP PUBLIC KEY BLOCK-----



Zuletzt aktualisiert: 26.05.2016

© Klaus Wachtler
Breidingstr. 17
D-29614 Soltau
Tel. +49-5191/70 271, +49-171/45 53 039
USt.Identnummer DE115580022
email: Klaus@Wachtler.de

QR-Code Klaus Wachtler

AnyWare(tm)-Logo