Hallo auf meiner C(e)P(lus)P(lus)-Seite
Eine kleine Übersicht zu den verschiedenen Themengebieten soll dir die Orientierung erleichtern. Klicke einfach den gewünschten Bereich an und schon wirst zu den entsprechenden Stellen weitergeleitet.
Alle Übungen und Arbeitsblätter können heruntergeladen werden.



Werkzeuge zur Programmierung
Der Programmierer wird bei den einzelnen Schritten von verschiedenen Tools unterstützt. Im Rahmen seiner Entwicklungsumgebung sind dafür die folgenden Elemente notwendig:
EDITOR PREPROZESSOR COMPILER LINKER DEBUGGER


Werkzeuge Erläuterungen
Editor Das zu erzeugende Programm wird wie ein normales Schriftdokument zuerst in einer Textdatei erstellt und gespeichert. Der Quelltext oder Programmcode wird mit einem sogenannten Editor (engl.: to edit = herausgeben) erstellt. Dabei orientieren sich Editor-Programme an den Möglichkeiten moderner Textverarbeitungssoftware. Mit dem Editor erstellt man in Zusammenhang mit der C- und Cpp-Programmierung * Header- und * Quellcode-Dateien.
Im Windows-System kann man die unter "Zubehör" bereitgestellten Editoren EDITOR bzw. NOTEPAD verwenden.
WORD oder WORDPAD sollte man nicht als Editoren gebrauchen, da sie Textformatierungen hinterlassen und der Quellcode daher nicht korrekt compiliert werden kann.
Pre(ä)prozessor Der Pre(ä)prozesor ist ein eigenständiges Programm, das gezielt Textersetzungen vornimmt, die mit dem #-Zeichen (Einleitung einer include oder define-Anweisung; vgl. Headerfiles) am Beginn des Programmcodes stehen. Es handelt sich genau genommen um eine Art Vorübersetzung, wodurch sogenannte Preprozessor-Direktiven veranlassen, bestimmte Systemdateien in das Programm einzubinden, so dass die Direktive # include <...> (z.B # include <iostream.h> => Ein- & Ausgabefunktionen) für den Compiler durch den Inhalt der angesprochenen Systemdatei ersetzt wird. Weiterhin werden symbolische Konstanten mit # define ... als Platzhalter (z.B. # define PI 3.14 oder # define MAX 10) festgelegt.
Danach kann der Compiler seine Aufgabe wahrnehmen.
Compiler Ein Programm in einer höheren Programmiersprache ist auf einem Rechner nicht automatisch lauffähig, sondern der mit dem Editor erstellte Sourcefile/Quellcode muss in den sogenannten Objektcode übertragen werden, d.h. er wird mit Hilfe eines Compilers (engl.: to compile = zusammenstellen) in die Maschinensprache des Trägersystems übersetzt.
Dabei werden verschiedene Prüfungen bezüglich der Korrektheit des übergebenen Quellcodes durchgeführt und eventuelle Verstöße durch festgelegte Fehlermeldungen und Zeilenangabe angezeigt. Einige Compiler mahnen zudem durch Warnungen auch formal korrekte Programmcodes an, wenn problematische Anweisungen existieren (z.B "the variable schnick is not used in the programme").
Insgesamt können * 3 Fehlertypen auftreten, wobei der Compiler allerdings nur zwei erkennt.
Bei der Fehlerkorrektur ist es sinnvoll strikt nach der Reihenfolge vorzugehen, die der Compiler gemeldet hat, da Folgefehler aufgrund vorheriger Fehler mitangezeigt werden.
War die Analyse erfolgreich wird nun die Objektdatei angelegt.
Linker Umfangreiche Projekte bestehen meistens aus verschiedenen bereits compilierten Objektdateien. Die Montage zu einem fertigen Gesamtprogramm übernimmt nun der Linker (engl.: to link = verbinden). Er bindet sogenannte Bibliotheksdateien in den Gesamtcode ein. Zudem prüft er, ob der Quelltext auf eine Funktion oder Datei verweist, die es eventuell gar nicht gibt.
War die Analyse erfolgreich wird nun endgültig die fertige und funktionsfähige exe-Datei (Programm) angelegt.
Debugger Der Debugger dient zum (schrittweisen) Testen und Ausführen des Programms, wodurch nicht nur semantische Fehler erkannt werden können. So kann man auch Einflussgrößen manuell ändern und die daraus resultierenden Auswirkungen bzw. Veränderungen beobachten und analysieren. Diese Möglichkeit der Interaktion ist auch aus didaktischer Sicht zum Erlernen der Funktionsweise einer Programmiersprache sehr hilfreich.



Grundlagen zur Programmierung
Die Liste ist noch relativ klein, aber sie wird sich mit der Zeit füllen - das verspreche ich. Die einzelnen Themen sind als pdf-Version verfügbar:
Hier kannst du dir die jeweiligen Strukturblätter anschauen und ausdrucken:
  1. Vom Quellcode zum Programm
  2. Escapesequenzen
  3. Formate Teil 1
  4. Formate Teil 2
  5. Kontrollstrukturen - Teil 1
  6. Kontrollstrukturen - Teil 2
  7. Struktogramm - Kontrollstrukturen - Teil 1
  8. Struktogramm - Kontrollstrukturen - Teil 2
  9. Verknüpfungen bei Kontrollstrukturen und Wahrheitstabellen
  10. Schleifen - Teil 1
  11. Schleifen - Teil 2


Informationen zu Datentypen: Wertebereiche und Speicherplatz

Mit dem Header limits.h können die jeweiligen Wertebreiche der Datentypen (char und int) abgerufen werden.

Download:    PDF-Datei des Quellcodes und ZIP-Datei des Quellcodes und des Programms.






Uebungen zur Programmierung
Hier sind die jeweiligen Übungen und die Lösungen dargestellt:
SEQUENZEN KONTROLLSTRUKTUREN I
KONTROLLSTRUKTUREN II MERHSEITIGE AUSWAHL
SCHLEIFEN FUNKTIONEN
ARRAY (eindimensional) ARRAYS und STRINGS
ARRAY (mehrdimensional) SORTIERALGORITHMEN und PRIMZAHLEN
KLASSEN (OOP) ZUFALLSZAHLENGENERATOR


Thema Aufgaben und Problemstellungen Download
(Sourcecode & Programm & Arbeitsblatt mit Lösungen)
Sequenzen 1.) Flächengeometrie
Von einem Rechteck seien die Länge und die Breite gegeben. Erstellen Sie ein Programm, das die Fläche, den Umfang und die Länge der Diagonalen berechnet.

Lösung

Sequenzen (Zip)

Sequenzen (Pdf)
2.) Lohnberechnung
Mit Hilfe des Stundenlohns, der Anzahl der Arbeitsstunden und der Überstunden soll für einen Arbeitnehmer der Wochenlohn berechnet werden. Dabei werden die Überstunden mit einem Zuschlag von 25 % bezahlt. Für Steuern und Sozialversicherungen werden 40 % des Betrages abgezogen, der sich ergibt, wenn man den Bruttolohn um einen persönlichen Freibetrag vermindert.
Das Computerprogramm soll den Bruttolohn, die Abzüge und den Nettolohn berechnen.

Lösung

3.) Stereometrie
Von einem Quader seien die Kantenlängen a, b und c gegeben.
Erstellen Sie ein Programm, das die Oberfläche, die Länge des Kantenmodells, das Volumen und die Länge der Raumdiagonalen berechnet.

Lösung

4.) Vertauschen von Variablenwerten
Schreiben Sie ein Programm, das folgende Aufgabe löst: Als Variablen x und y sind Zahlenwerte einzugeben. Danach sollen die Inhalte von x und y vertauscht und in dieser Form ausgegeben werden.

Lösung

5.) Satz des Pythagoras
Bei einem rechtwinkligen Dreieck sind die Katheten gegeben. Gesucht ist die Hypotenuse.
Erstellen Sie dazu ein hilfreiches Programm.

Lösung

6.) Ganzzahldivision mit Rest
Dem Computer sollen zwei natürliche Zahlen eingegeben werden. Ausgegeben werden soll, wie oft die zweite Zahl in der ersten enthalten ist und welcher Rest bleibt.

Lösung

Kontrollstrukturen (Teil 1) 1.) Bestellwert
Eine Firma liefert bei einem Bestellwert ab 200 Euro porto- und verpackungsfrei. Für Aufträge unter 200 Euro beträgt die Versandpauschale 5,50 Euro.
Erstellen Sie ein Programm, das den Rechnungsbetrag in Abhängigkeit vom Bestellwert ausgibt.

Lösung

Kontrollstrukturen 1
2.) Durchschnittsverbrauch
Ein Programm soll nach Eingabe der gefahrenen Kilometer und der Menge des ver-brauchten Benzins den Durchschnittsverbrauch auf 100 km berechnen.
Die Berechnung darf allerdings nur erfolgen, wenn überhaupt Kilometer zurückgelegt wurden; ansonsten soll eine sinnvolle Fehlermeldung ausgegeben werden.

Lösung

3.) Dreieckkonstruktion
Ein Dreieck lässt sich aus den Seiten a, b und c konstruieren, wenn die Dreiecksungleichungen a + b > c, a + c > b und b + c > a erfüllt sind.
Schreiben Sie ein Programm, das bei den einzugebenden Seiten überprüft, ob sich das Dreieck konstruieren lässt.

Lösung

4.) Firma Kleinvieh (macht auch Mist)
Die Firma Kleinvieh (macht auch Mist) erhebt bei einem Bestellwert unter 100 Euro einen Porto- und Verpackungsanteil von 5,50 Euro, von 100 bis 200 Euro einen Betrag von 3 Euro. Bei einem Betrag über 200 Euro werden keine Spesen berechnet.
Ein Programm soll bei bekannter Auftragssumme den Rechnungsbetrag ausgeben.

Lösung

5.) Familie Knödel & das Kindergeld
Die Familie Knödel erhält Kindergeld nach folgender einkommensabhängiger Tabelle.

Einkommen < 45.000 € ab 45.000 €
Für das 1. Kind 70 € 70 €
Für das 2. Kind 130 € 70 €
Für das 3. Kind 220 € 140 €
Ab dem 4. Kind 240 € 140 €

Es ist ein Programm gesucht, das nach Eingabe der Kinderzahl und des Einkommens das zu zahlende Kindergeld berechnet

Lösung

Kontrollstrukturen (Teil 2) 1.) Beitragsrückerstattung
Eine Versicherung erstattet ihren Mitgliedern einen Teil des Jahresbeitrags zurück, und zwar bei mehr als 5-jähriger Mitgliedschaft 9 %, ansonsten nur 4 %. Die Rückerstattungsbeträge sollen berechnet und vom Beitrag des laufenden Jahres abgezogen werden.

Lösung

Kontrollstrukturen 2
2.) Der automatische Türsteher
Vor dem Eintritt in ein Bistro verlangt der automatische Türsteher die Antwort "Ja" oder "Nein" auf die drei folgenden Fragen: 1.) Haben Sie Hunger?
2.) Haben Sie Durst?
3.) Haben Sie Geld?
Nur Gästen, die Geld haben und außerdem Hunger oder Durst mitbringen, wird mit "Herzlich willkommen" geöffnet, den anderen wird mit "Kein Zutritt!" der Zugang verwehrt.

Lösung

3.) Das Sontagsproblem
Der Computer soll helfen, ein häufig auftretendes Problem zu lösen: Was mache ich am Sonntag Nachmittag? Die Entscheidung soll vom Wetter abhängig gemacht werden und davon, ob die Freundin bzw. der Freund Zeit hat. Das Programm soll folgende Baumstruktur abbilden:



Lösung

4.) Die Teilerprobe
Dem Computer werden zwei natürliche Zahlen a und b eingegeben. Der Rechner soll prüfen, ob b ein Teiler von a ist und einen entsprechenden Text ausgeben.

Lösung

5.) Rechtwinkliges Dreieck
Nach Eingabe der drei Seitenlängen a, b und c eines Dreiecks soll ein Programm feststellen, ob es sich um ein rechtwinkliges Dreieck handelt oder nicht.

Lösung

6.) Versicherung mit Selbstbeteiligung
Bei einer Schadensversicherung hat der Versicherte bei Schäden über 100 Euro 20 % der Schadenssumme, mindestens jedoch 100 Euro selbst zu tragen.
Erstellen Sie ein Programm, das nach Eingabe der Schadenshöhe den Anteil des Versicherten und die Zahlung der Versicherung ausgibt.

Lösung

7.) Verdienst und Prämie
Eine Firma bezahlt ihre Verkäufer im Außendienst nach folgender Vereinbarung: Der monatliche Verdienst beträgt 20 % des monatlichen Verkaufsumsatzes. Übersteigt dieser Umsatz 5000 Euro, so erhält der Verkäufer zusätzlich noch 11,5 % des Mehrbetrages als Erfolgsprämie.
Schreiben Sie ein Programm, das den Verdienst und gegebenenfalls die Prämie nach Eingabe des Monatsumsatzes ausgibt.

Lösung

8.) Statistik
Gesucht ist ein Programm, das nach Eingabe von drei beliebigen reellen Zahlen, die kleinste und die größte eingegebene Zahl sowie den Mittelwert der drei Zahlen ausgibt.

Lösung

9.) Energietarife
Ein Elektrizitätswerk bietet drei Tarife an:
Tarif A: monatl. Grundgebühr für die ersten beiden Wohnräume zusammen 7,30 Euro, für jeden weiteren Wohnraum 1,85 Euro. Kosten pro kWh: 0,21 Euro.
Tarif B: monatl. Grundgebühr für die ersten beiden Wohnräume zusammen 12,80 Euro, für jeden weiteren Wohnraum 2,55 Euro. Kosten pro kWh: 0,17 Euro.
Tarif C: keine Grundgebühr; Kosten pro kWh: 0,83 Euro.
Nach Eingabe der Anzahl der Wohnräume und dem monatlichen Verbrauch sollen der günstigste Tarif ermittelt werden und die entstehenden Kosten ausgegeben werden.

Lösung

10.) Abschreibungen
Abschreibungen mit Excel- und Cpp-Quellcodes im Vergleich

Lösung

Mehrseitige Kontrollstrukturen 1.) Beitragsrückerstattung
Eine Firma erstattet ihre Mitgliedern einen Teil des Jahresbeitrages entsprechend folgender Tabelle zurück:

Vers.Dauer 0 bis 5 6 bis 8 9 bis 11 12 bis 14 >= 15
Erstattung 0 % 10 % 13 % 18 % 25 %

Die Rückerstattungsbeträge sollen berechnet und vom Beitrag des laufenden Jahres abgezogen werden.

Lösung

Mehrseitige Auswahl
2.) Mengenrabatt
Ein Großhändler räumt beim Kauf von Taschenrechnern (Stückpreis: 9,95 Euro) Mengenrabatte nach folgender Tabelle ein:

Anzahl 0 bis 9 10 bis 19 20 bis 49 50 bis 99 >= 100
Rabatt 0 % 10 % 15 % 20 % 25 %

Das Programm soll nach Eingabe der Stückzahl und des Einzelpreises eine Rechnung mit den beiden Angaben, dem Gesamtpreis, dem Mengenrabatt, der Mehrwertsteuer und dem Endpreis ausgeben.

Lösung

3.) Portoberechnung
Gesucht ist ein Programm zur Portoberechnung bei Briefen. Nach Eingabe der notwendigen Daten soll die Höhe des Portos ausgegeben werden.

Gewicht Inland Ausland
bis 20 g 1,00 1,40
bis 50 g 1,70 2,10
bis 100 g 2,40 2,80
bis 250 g 3,20 5,00
bis 500 g 4,00 9,40
bis 1.000 g 4,80 16,50


Lösung

4.) Taschenrechner
Programmieren Sie einen Taschenrechner mit folgenden Funktionen:
Addition, Subtraktion, Multiplikation, Division, Potenzen, Modulo und Umrechnungsfunktion einer Dezimalzahl in das Hexadezimalsystem.

Lösung

Schleifen Fragestellungen:
  1. Zinseszins I (Jahreszins)
  2. Zinseszins II (Monatszins)
  3. Teiler einer Zahl
  4. Mensch ärgere dich nicht
  5. Bierschaum
  6. Lineare und Geom.-degr. AfA
  7. Summen
  8. Zahlenfolgen
  9. Harmonische Reihe
  10. Fakultät & Binomialkoefizient
  11. Integration nach Monte Carlo
  12. Altersstatistik
  13. Römische Zahlen
  14. Sternchenmuster
  15. Pythagoräische Tripel
  16. Einmaleins
  17. Finbonacci
Arbeitsauftrag als pdf
Schleifen (Zip-Version)
Funktionen Themen:
  1. Kreisberechnung
  2. Heronverfahren
  3. Fakultaet (iterativ)
  4. Fakultaet (rekursiv)
  5. Potenz einer Zahl
  6. Minimum aus vier Zahlen (2 Versionen)
Download der Arbeitsaufträge und der Quelltexte
Array-Strukturen
(Teil 1: eindimensional)
Fragestellungen:
  1. Multiplikation eines Vektors mit einem Skalar
  2. Skalarprodukt
  3. Länge eines Vektors
  4. Addieren und subtrahieren von Vektoren
  5. Spiegeln von Listenelementen
  6. Verschieben von Listenelementen
  7. Summieren von Listenelementen und Mittelwert
  8. Wertezuordnung bei geraden und ungeraden Listenelementen
  9. Häufigkeit von Listenelementen
  10. Max, Min und Mittelwert von Listenelementen
  11. Das Horner-Schema
Download der Arbeitsaufträge und der Quelltexte
Array-Strukturen
(Teil 2: mehrdimensional)
Fragestellungen:
  1. Multiplikation einer Matrix mit einem Skalar
  2. Produkt zweier Matrizen
  3. Addieren und subtrahieren von Matrizen
  4. Umsatzstatistik
Download der Arbeitsaufträge und der Quelltexte
Array-Strukturen
(Teil 3: Strings)
Fragestellungen:
  1. Einlesen von Strings
  2. String-Variablen
  3. Verknüpfung von String-Variablen in der Ausgabe
  4. Erstzen eines Teilstrings
  5. Einfüge eines Teilstrings
  6. Entfernen von n Zeichen eines Strings
  7. Suchen eines Teilstrings
  8. Erzeugen einer Kopie eines Teilstrings
Download der Arbeitsaufträge und der Quelltexte
Sonderfälle Fragestellungen:
  1. Primzahlen
  2. Sortieren: Bubblesort
  3. Sortieren: Selectionsort
  4. Sortieren: Insertionsort
  5. Sortieren: Quicksort
  6. Sortieren: Shellsort
  7. Sortieren: Heapsort
Download der Arbeitsaufträge und der Quelltexte
Klassenprogrammierung (OOP) Themen:
  1. Dackel
  2. Elefant
  3. Mehrwertsteuer
  4. Dreieck
  5. Quader
Download der Arbeitsaufträge und der Quelltexte
Zufallszahlengenerator Themen:
  1. Die Familie Lehmer
  2. Linearer Kongruenzgenerator
  3. Zahlenraten V1
  4. Zahlenraten V2
  5. Erzeugung von Zufallszahlen in cpp
  6. Quelltexte zu den Programmen
Download der Arbeitsaufträge und der Quelltexte




Begriffserläuterungen und Erklärungen
Header-Datei
engl.: Headerfile; Dateien, die Informationen zu Datentypen und -strukturen, Schnittstellen von Funktionen usw. enthalten. Es handelt sich dabei um allgemeine Vereinbarungen, die an verschiedenen Stellen einheitlich benötigt und eingesetzt werden.
Sie werden mit # include <...> oder mit # include "..." zu Beginn des Programms in den Quelltext eingefügt.
Die Dateinamenserweiterung dieser Dateien lautet ".h" oder ".hpp".
zurück

Quellcode-Datei
engl.: Sourcefile; enthalten den eigentlichen zur Ausführung bestimmten Programmtext. Die Dateinamenserweiterung dieser Dateien lautet ".c" oder ".cpp".
zurück

Fehlerarten
  1. lexigraphischer Fehler

  2. * Überprüfung der Schreibweise der Schlüsselwörter (z.B. main)
  3. syntaktischer Fehler

  4. * vergessene Strichpunkte am Ende von Anweisungen;
    * vergessene Funktionen (z.B. wenn Ausgabe sofort nach Programmende verschwindet, dann wurde die Funktion "getchar()" mit dem Header <stdio.h> vergessen
    * nicht adäquate Zahlenformate
  5. semantischer Fehler

  6. * Fehler in der Programmlogik; dadurch werden andere als die gewünschten Anweisungen ausgeführt (z.B. anstelle von Vergleich "==" wird mit der Zuweisung "=" gearbeitet

zurück