Letzte Änderungen:
23.01.2011 Mitfahrgelegenheit
26.05.2016 PGP Public key aktualisiert
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.
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.
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.
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).
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.
Thema: | Status: | vom: | Onlineversion | Postscript (gzip) | HTML (zip) |
---|---|---|---|---|---|
ANSI-C | vollständig | 04.10.2002 | online | ck.ps.gz | ck_html.zip |
C++ | Sprache ja, Bibl. nein | 01.04.2002 | online | cpp.ps.gz | cpp_html.zip |
Dynamische Bibliotheken | vollständig (Linux+Windows) | 05.10.2002 | online | dynamischeBibliotheken.ps.gz | dynamischeBibliotheken_html.zip |
Programmiertools | unvollständig | 10.06.2003 | online | skript_tools.ps.gz | skript_tools_html.zip |
Informatik I | unvollständig | 01.04.2002 | online | skript_einfinf.ps.gz | skript_einfinf_html.zip |
Informatik II | unvollständig | 30.03.2006 | online | informatik_2.ps.gz | informatik_2_html.zip |
Letzte Änderung: 20.05.2001
Letzte Änderung: 27.06.2002
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 mQGNBFdGl/ABDADeU6GLWp552YgbB0N3U6nYw7ZIm3gyeDt4O8S6D4akkkfy9xB9 pfl6uCwfZAMXg9/gNLPaiqi0an2Wje5hPIdqOEzIcJUv9ADQq/9NOKSXLDT5zJDD F7stl4ZzcxLHfZVFq1RB80vL54OtnnHsB7IG6as5417HlJ56moQOtwOYi9/udakt 02yTdomhI/j3hQZCBW1C/imuz+FkZ4h2AN+POQxvB7CuFuB8NnTn8GhoQK+cuYmt oe7fDvTX7k1eJsY3AHwpdwCMVprn2ANmg2pDzTp2It6GblL5nS41m50Lal7RREKJ hx4nZAZaaU4z3ET447ThkeAKhOhe84+QIS7N5/2PFKkMQWDsSIBUw/KcXIInldNx Z/htDfUiFu59hajh0/u3jTRL1hHCSV80Xf+Czvl82bzeDP4jqwElJkkDH9n+XXCR vQOG5bHVnRwxbwT0+D7ymGyiAGy8QCZfRjyA3zpNqoFEbb+H61FREJc7M9KfmseQ GQijf7o2dKp6RsMAEQEAAbQdS2xhdXMtbW9iIDxrbGF1c0B3YWNodGxlci5kZT6J AbAEEwEKABoECwkIBwIVCgIWAQIZAQWCV0aX8AKeAQKbAQAKCRCaGWz3Og63X+tA DADWxhByalzw7iI8XJOZhYWJfHxG+WRduGR62M5RlWZNQL64hmdUbIeIA1Y57Cbc HbC3p+r5Z1H8rgI49Aw+it/pI1EC95GjJ/DuF5KbGdo6ktNL0WEUSDpA6h/H5tRt LXV++qO9Fs40sUGBhAIyw2KyZo2nyX2ANGNhDv/guUhwIyNcTQoAibmhPGYkNvUp nQkYPSxmgo5moUJcmA/72cYdZKQS46Tu96S5BhOx+7JOyGdThz6d1lAjusZadmmk r6zC0QcKXiU+dbtxyCfnOSZnwHfMOFbZtt3AhDEoTcgkkSiGmb0ukKv3ANFdKEzH NkU7g43zs58AV629xrAzKh2xYE2TycZwPaHIcsSvtFTa1qQexLX+mdmmtyI4c1Ol vkB/YXN9uZlPrqTF2L4Q6vadtPU9xZTL6x3ISA+ZS6qrWcnkBqoPXKi6ZR1Pv6vz Cy3QI7FveNnvYBasUDnHM12sV5P7hqzB5oOU+zvaH8ZLXYJA3k6nO0BcXpSmkSix vU25AY0EV0aX8AEMANNXodi5xT6IfltHMI7S8rQjmeg6TYF0hRZg4nJHevuAWpVJ BCcNKtdwPfPZkkV9U4gGh7lPBxm0nmLYabDbt6cBnZCWtLOJolnVgyXjLPWvwK5F m+6QDynNLH8lEZKkH0uspEgJ8i+7UPofGY0Ax0Y4/7uBXQ7OmlMzQieSPJr3D4Z2 Vn8RHzHWq7sypNs4fgj0g7FOrOzeESJjpwobXdfCfeGdrA6V/3O960+Igg77EeSx zKzUQc+wacc7ZvBR43IwiZ50x/xWsTIiR659Bm2oGOsqZZIKq2vbgr8SSjyguEmP CvdghKmp1HxJbfMZEDHEO3cI28ksLve4shG2MvKa+hRtdA8Vf916rNbrGta9okCm oOUrIA9kG9A+uuTtoqZJBsGm8wJE9a3qB7IsX9hwcJAFc43aQO/ERYOJZsxYR87h Yv3qfhyEYsHhlLgW6XdfXAk/4W+BIxcUsHxd2rKp6bUAUVsNs5NIej79MVLybGgG UPWxEl37BKf+QHAPEwARAQABiQM+BBgBCgAJBYJXRpfwApsCAakJEJoZbPc6Drdf wN2gBBkBCgAGBQJXRpfwAAoJEOHHZWdHn6j0KCQL/ic/RRetFOLeLPiFGmuGedJs 2Bshitj75n/lZvsXb5tZso9CEsFz5rb7+z1Z/ULxBLAVNNtk3y1pqQmXKapt6W9T JTIgrAvm7hyzbboA9SCbE/HUuRVoxOHz9wRghKhsww5AzfansQDp1T/nignOnSgO acLUJmd/XQI82Eseiu9nILOm9PJnJSw0NMWfcb2bMIHC2UKlBwoyhsBaENJjdYT1 Qlj9qpvBvtcYk95neB/tteizLUdf+oFuNjeXWg12u3mhMuzVZywdo+EH8OqHIoFf Cq/YuaCHa+5a4ybCy+3frFRdBBRx9+TvNJdmQYvU/VmJfFau+RODu6W5e4h30sgf 9yLeGyvgmGgCN4UaVm0YtP1a5AXFqyv2ZskW2UbV+4Y36je7V9PSxhNPmSLpvg1a YJ16gwMklKEdUd/il48OPiX/eruRWDzunXLknknj4nmIod0gxXYScgZyLGCWZo3a Y7wZR2jhNnc1+3ub9oX5O04LER7kQu7L3HBevWDc8VUZDACt1p9BHtZM108v27nG gjxeAlJRL8gQ6lONJtNjZ15/MAeJA1s+/htCyMF4Di6USRPa8y0ZGCf3SS/+UhhK xKPBxBNtMUEWj7ugQnIS+FNYo4XTSMkumR+IxB4ZoyZg6aPcqF7Iu6vOcBM8ohxa bqlKFhcl4NbTgovlV5wmusPJwdG3rlzmUAnhq3jyigdAV82OQ/DxEvGz1aW5v9rV h+RWLJ/kkhjGt1W6YkPSCl6L20KGkhTCiaWfyD+pZ0jDrLe/E/ynuF/pxekDEeM9 +52kpY1zSE+Of0bPGvEI0lkrS2ldYtzTdV9dCe/uBuD7HSaHlaNQQu3a8SEqGLZP jiyUCTZnZDEBsAdS4JlIVw03J+BLfNEmFeUjQYtNjMxasDDn8CKufCuknimANcAQ Z/d5rkK0Aegsqt8ydNj3QXIVBGK9rGSKQEND3enOV3TyaUkg6cW93jssPdKY8HCw gQoz1ig8feovWcmmWGAAoSPmFbemo+w1j4QIiws2LQKqVfa5AY0EV0aX8AEMAJlg ZOMLsBZ8HGfViX1Pf/AqxiUsvOXUKxfPptgXylSIFajTwlxNdrWChMvOvifkrwq7 mEMneGyoaKUFaHCGnDSUZ6/fJRatjX0Vl7eEzVaxjAnaf2c6NQvlRwkSjprVcfwb FakAlNJpbEmTPGjxO9+jIAwtE3HpW+7LDnhrieeCLPsEVGCo9OXeOXLjp5lTFddE MIZTJqGu+yH+qN5W3yqToxbjKnGGcVS2Fzr4/6MNPcUxuzO3DrFcDaY7wihts1N6 rkIXT/kGArfxT9Vs/egR/xqqOWHcmeubcVLoQzOZGdUmd2F3r+KFkvWPuTsj7Eyj 4Fgr5ZzQNO7w4JXYqtgztEK47Bwxl0k3M2bHewkBUkKMy1QBh4Ezvy3d67gvAODm pGxQgsyYidGgpl9hUbtDv2nsk2dTG+RPD4yUVk8IoLfrac6KW8chmUelVswoMw/Z jtBfvre0v/QwMS+0UNid6nf7z5NLTYD5xgC586J8LzcxojGCAdaO7aKk+zNuzQAR AQABiQGfBBgBCgAJBYJXRpfwApsMAAoJEJoZbPc6Drdf0DsMAMzSn2dSYBaeJIGB s3uL35eSyHSHpehlaZjEKfOmP87jIieD0rr4uQWmP2n7bVFHE2BPK3iyn5skKqMS 61toBXwbZPuAMus6fqXM6xJera2cmijHBnoo5O75KJJg7LKIJae+2e2Ux/umMHn0 OuDGhZTyyxMIV9IC0kiHUkTTgCxKU3rH31jfSuP17gRuw+YH/xxoGweKjpIFwBOJ MY4SXMvi7nOhNipEl2+RDyJuqkZcL9/5b/uETSNIM60LkoU3JyAkeZKufDdSSQ/p 1x5j7Dwp/TjlHytGUL2wGL+wV694iuOZk/GKcNl7KbKP6T/YhcAk9pkLNd8Cv22S sG/grcEt/Ocr2MSbiO3yuczku4bhweBxEh3BEvt3tq1CIgMz+dHTubSly5rZPRD/ ePhh10hPE8ztfpNqn40RxtFm3xIAnvQcWvh4jAgt9JDvhOJlV/N1m+dfJ3WE1cUM oEzwn2oV920113wZlv3mdGidicbe1jPfG/kOLb+74iNARQYmIA== =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