1 / 53

Programmieren I Strukturierte Programmierung Grundlagen von C

HWu ProgI-1 16.02.99 Folie 2. Wirtschaftsinformatik Programmieren I. Strukturierte Programmierung mit einer h?heren Programmiersprache (Sprache der 3. Generation, 3GL)Entwurf, Implementierung, Dokumentation, Test8 SWS im GrundstudiumSU, ?KolluoKlZulassungsvoraussetzungen f?r Klausur: TN, Test

melva
Download Presentation

Programmieren I Strukturierte Programmierung Grundlagen von C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Stand: 01.01.1999 Programmieren I Strukturierte Programmierung Grundlagen von C Fachhochschule Hof Fachbereich Informatik und Technik Prof. Dr. Hartmut Wunderatsch

    2. HWu ProgI-1 16.02.99 Folie 2 Wirtschaftsinformatik Programmieren I Strukturierte Programmierung mit einer höheren Programmiersprache (Sprache der 3. Generation, 3GL) Entwurf, Implementierung, Dokumentation, Test 8 SWS im Grundstudium SU, Ü KolluoKl Zulassungsvoraussetzungen für Klausur: TN, Testate

    3. HWu ProgI-1 16.02.99 Folie 3 Programmieren I Programmieren I, 1. Sem. 2 SWS, C Strukturierte Programmierung Grundlagen prozeduraler Programmierung Programmieren I, 2. Sem. 2 SWS, C Fortgeschrittene prozedurale Programmiertechniken Programmieren I, 4. Sem. 4 SWS, C++ Objektorientierte Programmierung TN 80 %, je Semester 2 Testate in der Kleingruppe

    4. HWu ProgI-1 16.02.99 Folie 4 Programmieren I Die höhere Programmiersprache C Betriebssystem UNIX wurde damit programmiert (Kernighan & Ritchie) alle Plattformen: DOS, WINx.x, WIN9x, NT, UNIX, ... heute für die Programmierung aller DV-Verfahren einsetzbar systemnahe technische betriebswirtschaftliche

    5. HWu ProgI-1 16.02.99 Folie 5 Programmieren I Literatur Prog I-1 und Prog I-2 Kernighan, Ritchie: Programmieren in C, mit dem C-Reference-Manual in deutscher Sprache; Hanser, München; 1990; ISBN 3-446-15497-3 Louis, Kuppinger: Borland C++ 4.5, Das Kompendium, Einführung, Arbeitsbuch, Nachschlagewerk; Markt & Technik, Buch und Software-Verlag GmbH, München; 1995; ISBN 3-87791-753-4 Dumke: Modernes Software Engineering, Eine Einführung; vieweg, Lehrbuch Informatik, Braunschweig/Wiesbaden; 1993; ISBN 3-528-05355-0 Sommerville: Software engineering 5th edition;Addison-Wesley, Harlow, England; 1996; ISBN 0-201-42765-6

    6. HWu ProgI-1 16.02.99 Folie 6 Was ist ein Programm? John v. Neumann: Programm ist Folge von Anweisungen, die sequentiell ausgeführt werden, wobei bedingte und unbedingte Sprünge möglich sind.

    7. HWu ProgI-1 16.02.99 Folie 7 Übung 1 Erstellen Sie einen Programmablaufplan (PA) für die Eingabe zweier Zahlen, deren Addition und Ausgabe des Ergebnisses! Erstellen Sie einen PA für die Eingabe dreier Zahlen und der Ermittlung und Ausgabe des Maximums! Erstellen Sie einen PA für die Eingabe einer positiven Zahlenfolge und der Ermittlung und Ausgabe des Maximums dieser Zahlenfolge. Bei Eingabe einer negativen Zahl soll die Eingabe abgeschlossen sein und die Ausgabe des Maximums erfolgen. Erstellen Sie einen PA für die Berechnung und Ausgabe des arithmetischen Mittels einer eingegebenen Zahlenfolge! Diskutieren Sie Möglichkeiten, wie eine Zahlenfolge abgeschlossen werden kann! Welche Nachteile haben diese Möglichkeiten? Finden Sie einen optimalen Zahlenfolgenabschluß! Aufgabe 1: Erläutern des Begriffs Variable erläutern des Unterschieds zwischen einer mathematischen Gleichung und einer Zuweisung Aufgabe 2: Erläutern gut strukturierter und gut lesbarer PA am Beispiel unterschiedlicher Lösungen Aufgabe 1: Erläutern des Begriffs Variable erläutern des Unterschieds zwischen einer mathematischen Gleichung und einer Zuweisung Aufgabe 2: Erläutern gut strukturierter und gut lesbarer PA am Beispiel unterschiedlicher Lösungen

    8. HWu ProgI-1 16.02.99 Folie 8 Verflixtes GOTO Sprünge können zu "Spaghetti"-Programmen führen Programmfehler proportional zur Anzahl der verwendeten GOTOs schlechte Wartbarkeit solcher Programme

    9. HWu ProgI-1 16.02.99 Folie 9 Das Struktur-Theorem Dijkstra 1972: Eigenschaften strukturierter Programme hierarchische Programmorganisation Beschränkung der Datenverfügbarkeit zentrale Programmsteuerung Beschränkung der Ablaufsteuerung auf drei Grundelemente

    10. HWu ProgI-1 16.02.99 Folie 10 Spezialformen der Ablaufsteuerung

    11. HWu ProgI-1 16.02.99 Folie 11 D-Strukturierte Programme kommen mit den Ablaufstrukturen Sequenz, der if-then-else-Selektion und der while-Iteration aus. Erweiterte D-Strukturierte Programme benützen zusätzlich die allgemeine (mehrwertige) Selektion, die if-then-Selektion und die repeat-Iteration. Erweiterte D-Strukturierte Programme sind GOTO-frei.

    12. HWu ProgI-1 16.02.99 Folie 12 Praxis strukturierter Programmierung erlaubt sind alle Ablaufsteuerungen (a) - (j) unterschiedliche Realisierung in den Programmiersprachen Beschränkung auf diese bedeutet Verzicht auf GOTO bedeutet aber auch Zunahme des Quellcodes

    13. HWu ProgI-1 16.02.99 Folie 13 Beispiel eines nicht strukturierten Programms Anweisungsverlauf ja 1 -> 2 -> 3 -> 5 -> 7 nein nein 1 -> 2 -> 4 -> 6 -> 7 neue Anweisung 8 mit Verlauf nein ja 1 -> 2 -> 4 -> 5 -> 8 -> 7

    14. HWu ProgI-1 16.02.99 Folie 14 Rucksäcke in nicht strukturierten Programmen Strukturierung durch Strukturerweiterung oder Zustands-variablen-Methode

    15. HWu ProgI-1 16.02.99 Folie 15 Strukturerweiterung durch schrittweise Verfeinerung

    16. HWu ProgI-1 16.02.99 Folie 16 Zustandsvariablen

    17. HWu ProgI-1 16.02.99 Folie 17 Übung 2 Ergänzen Sie das um die Anweisung 8 erweiterte Programm nach der Methode der Strukturerweiterung und nach der Zustandsvariablen-Methode! Welche dieser beiden Methoden ist die bessere? Stellen Sie die PAs der Übung 1 strukturiert dar!

    18. HWu ProgI-1 16.02.99 Folie 18 Übung 3 Überführen Sie nebenstehenden PA in einen D-strukturierten! Entwickeln Sie einen D-strukturierten PA zur Bestimmung der Nullstellen einer quadratischen Gleichung!(incl. Eingabe der Koeffizienten und Ausgabe der Ergebnisse)

    19. HWu ProgI-1 16.02.99 Folie 19 D-Strukturierter Programmentwurf D-Strukturierte Programme können sprachunabhängig entworfen werden: in Form von Pseudocode oder in Form von Nassi/Shneiderman-Struktogrammen. PAs werden nicht für den Programmentwurf verwendet.

    20. HWu ProgI-1 16.02.99 Folie 20 D-Strukturierter Pseudocode Pseudocode der drei Grundstrukturen Sequenz if-then-else while A seq A if bed A iter while bed B B B C ... ... ... else A end A end C ... A end A ist ein Bezeichner, B, C, ... sind Handlungsvorschriften, bed ist eine Bedingung

    21. HWu ProgI-1 16.02.99 Folie 21 Beispiel für Pseudocode Problemstellung Auszugeben ist die Summe von N einzulesenden Zahlen, die zwischen den Werten L und R liegen N, L, R sind vorher einzugeben

    22. HWu ProgI-1 16.02.99 Folie 22 Erweiterter D-Strukturierter Pseudocode Erweiterter Pseudocode Allg. select if-then repeat A select bed1 A if bed A iter repeat B B B ... ... ... or bed2 A end A end until bed C ... or bed3 ... A end Beim allgemeinen select werden die Anweisungen der ersten erfüllten Bedingung ausgeführt.Beim allgemeinen select werden die Anweisungen der ersten erfüllten Bedingung ausgeführt.

    23. HWu ProgI-1 16.02.99 Folie 23 Übung 4 Schreiben Sie den Pseudocode zum D-strukturierten PA der Nullstellenaufgabe für quadratische Gleichungen! Entwerfen Sie Pseudocode für die erweiterten Ablaufsteuerungen für strukturierte Programme!

    24. HWu ProgI-1 16.02.99 Folie 24 Nassi/Shneiderman-Struktogramme grafische Möglichkeit des strukturierten Programmentwurfs Sequenz if-then-else while

    25. HWu ProgI-1 16.02.99 Folie 25 Nassi/Shneiderman-Struktogramme für erweiterte D-strukturierte Programme Allg. Selektion break repeat

    26. HWu ProgI-1 16.02.99 Folie 26 Beispiel für ein Struktogramm Problemstellung Auszugeben ist die Summe von N einzulesenden Zahlen, die zwischen den Werten L und R liegen N, L, R sind vorher einzugeben

    27. HWu ProgI-1 16.02.99 Folie 27 Übung 5 Entwerfen Sie das Struktogramm zum D-strukturierten PA der Nullstellenaufgabe für quadratische Gleichungen! Entwerfen Sie Struktogrammsymbole für die erweiterten Ablaufsteuerungen für strukturierte Programme!

    28. HWu ProgI-1 16.02.99 Folie 28 Testat 1 Entwerfen Sie ein strukturiertes Programm, das folgende Aufgabe löst: Eingegeben wird eine Zahlenfolge, die durch eine leere Eingabe abgeschlossen wird. Berechnet und ausgegeben werden soll das arithmetische Mittel der Zahlenfolge, wobei ein Fehlermeldung erscheint, wenn es nicht berechnet werden kann. Ebenfalls berechnet und ausgegeben werden soll das Minimum und das Maximum der Zahlenfolge, falls dies möglich ist. Der strukturierte Programmentwurf ist abzugeben und zum Testat mitzubringen in Form von Pseudocode und als Struktogramm auf DIN A4-Blättern mit Heftrand, Name und Matrikelnummer.

    29. HWu ProgI-1 16.02.99 Folie 29 Übung 6 Einstieg in Borland C++ Anlegen eines Verzeichnisses PROGI für alle Übungenen zur Vorlesung Programmieren I Anlegen eines Unterverzeichnisses PROGI-1 für alle Übungen zur Vorlesung Programmieren I im 1. Semester Aufruf des C-Compilers mittels Start, Programme, Programmierung, Borland-C, Borland C++ 4.52 Aufruf des Menüs Projekt Anlegen eines neuen Projekts im Unterverzeichnis PROGI-1 mit dem Projektnamen “uebungen” dem Zielnamen “ueb06" (später werden weitere Ziele mit den Namen “ueb07”, ... dazukommen) dem Zieltyp "EasyWin", Klassenbibliothek demarkieren, Laufzeitbibliothek markieren und den weiteren Optionen ".c-Knoten", wobei “.def” und “.rc” demarkiert werden müssen Im Projektfenster den “ueb07.c”-Knoten mit Doppelklick aufrufen Im “ueb07.c”-Fenster das Übungsprogramm der nächsten Folie eingeben Mit dem Icon “Aktuelles Programm erzeugen und ausführen” den Compilier- und Linkvorgang für die Erstellung eines C-Programms starten Falls keine Compilier- und Link-Fehler auftreten, erst den Vornamen, dann drei ganze Zahlen eingeben, wobei jede Eingabe mit der RET-Taste abgeschlossen wird Falls Fehler auftreten, erscheinen in einem Meldungsfenster die einzelnen Fehlermeldungen Über das Pull Down-Menü “Anzeige” kann das Projekt- und das Meldefenster alternativ geöffnet werden

    30. HWu ProgI-1 16.02.99 Folie 30 ueb06.c

    31. HWu ProgI-1 16.02.99 Folie 31 Aufgaben zur Übung 6 Programm fehlerfrei zur Ausführung bringen Was passiert, wenn Sie Ihren Vornamen und die drei Zahlen in einer Zeile jeweils durch ein Leerzeichen getrennt eingeben und mit einem RET abschließen? Was passiert, wenn Sie negative Zahlen eingeben und zwischen dem Vorzeichen und der Zahl ein Leerzeichen einfügen? Was passiert, wenn Sie Dezimalzahlen eingeben? Was passiert, wenn Sie statt einem Vornamen bei der ersten Eingabe auch noch den Familiennamen eingeben? Was passiert, wenn Sie eine leere Eingabe machen (nur RET drücken)? Besorgen Sie sich mit der Hilfe-Funktion die Beschreibungen des scanf- und des printf-Statements! Lesen Sie sich auch jeweils den Absatz über den Rückgabewert durch!

    32. HWu ProgI-1 16.02.99 Folie 32 Weitere Aufgaben zur Übung 6 scanf- und printf-Rückgabewerte Ändern Sie Ihr Programm wie nebenstehend ab! Überprüfen Sie die ausgegebenen Rückgabewerte! Welche Bedeutung hat das “\n” in den printf-Statements? (Lassen Sie es einmal weg, verdoppeln Sie es!) Ändern Sie das Programm so ab, daß statt drei jetzt vier Zahlen eingelesen werden und deren Summe ausgegeben wird! Vergessen Sie nie, den Programmkopf fortzuschreiben! Drucken Sie sich Ihre Programmquelle über den Menüpunkt “Datei, “Drucken” aus!

    33. HWu ProgI-1 16.02.99 Folie 33 Programmierstandards Programmkopf eingeschlossen in die Kommentarzeichen /* ...*/ Programm-Name Programm-Kurzbeschreibung Programm-Autor Anlagedatum Änderungsdatum (wird mit Namenszeichen fortgeschrieben) Programmiersprache Variablennamen mnemotechnisch günstig wählen, nicht zu lang Bsp. weite, laenge, mwst, proz,... statt a, b, c, x, y Ausnahme: Schleifenzähler oder Hilfsvariblen mit lokaler Bedeutung, dort ist i, j, ... oder x1, x2, ... erlaubt Einrückungen Blockstruktur soll sichtbar werden, leichtere Lesbarkeit und Fehlersuche zusammengehörige { und } in der gleichen Spalte, die Statements innerhalb eines Block sind gegenüber den Zeichen { und } eingerückt

    34. HWu ProgI-1 16.02.99 Folie 34 Programmierstandards Dokumentation innerhalb des Programms zur Verfolgung der Programmlogik kurz halten Anfang und Ende langer Blöcke kommentieren Leerzeilen und Hervorhebungen im Programm Leerzeilen zur Verdeutlichung der Programmstruktur Grenzzeilen für wichtige Programmkomponenten

    35. HWu ProgI-1 16.02.99 Folie 35 Compilieren und Linken Programmquelle (source) hat den Namen <x>.c und wird mit sog. include-Dateien (<y>.h, ...) compiliert Programmobjekt (object) hat den Namen <x>.obj und wird mit weiteren Objekten <y.obj> und Bibliotheken (libraries) <z.lib> zu einem ablauffähigen Programm gebunden (linking) ausführbares Programm (executable program) <x.exe> ist beliebig oft ausführbar (z. B. aus dem Dateimanager oder aus dem Explorer heraus durch Anklicken)

    36. HWu ProgI-1 16.02.99 Folie 36 Variablen Die Definition von Variablen geschieht in der Form <datentyp> <variablen-name> [, ...]; <datentyp>::= [<modifier>] <datentyp> <modifier>::= signed | unsigned | short | long <datentyp>::= int | char | float | double | void

    37. HWu ProgI-1 16.02.99 Folie 37 Namensregeln für Variablen Das erstes Zeichen muss ein Buchstabe oder "_" sein (Unterstrich, underscore). Nachfolgende Zeichen sind entweder Buchstaben, Ziffern oder "_“. Sonderzeichen sind nicht erlaubt. Die Maxmimallänge = 250 Zeichen (über Option einstellbar, Standard = 32 Zeichen). Eine Unterscheidung zwischen Groß- und Kleinbuchstaben findet statt. Reservierte Wörter (Schlüsselwörter) sind als Variablennamen verboten.

    38. HWu ProgI-1 16.02.99 Folie 38 %-Platzhalter in printf(), scanf() dienen der formatierten Aus- und Eingabe, allgemeiner Aufbau % [Flag] [Breite] [.Präzision] [Size] Typ

    39. HWu ProgI-1 16.02.99 Folie 39 Escape-Sequenzen in printf() für die Steuerung von Zeilenumbrüchen udgl. Beispiele

    40. HWu ProgI-1 16.02.99 Folie 40 Übung 7 Geben Sie nebenstehendes Programm ein und testen Sie es mit den Eingaben x1 = x2 = x3 = x4 = 1 den für die jeweiligen Datentypen maximal zulässigen Werte für x1, x2, x3, x4 den für die jeweiligen Datentypen minimal zulässigen Werte für x1, x2, x3, x4 Ändern Sie das Programm so ab, dass bei den printf()-Anweisungen auch von FLAG und von BREITE Gebrauch gemacht wird

    41. HWu ProgI-1 16.02.99 Folie 41 Übung 8 Geben Sie nebenstehendes Programm ein und testen Sie es mit der Eingabe x1 = "a" der Eingabe x1 = RET und x2 = "a" der Eingabe x1 = "ab" Wie arbeitet der Platzhalter %c in scanf()? Ändern Sie das Programm so ab, dass bei den printf()-Anweisungen auch von FLAG und von BREITE Gebrauch gemacht wird

    42. HWu ProgI-1 16.02.99 Folie 42 Übung 9 Schreiben Sie analog zu den beiden letzten Übungen ein Programm, das die Datentypen float, double und long double verwendet und testen Sie die Typzeichen f, e, E, g, G. Stellen Sie fest, mit welchen Platzhaltern in scanf() die drei Datentypen eingelesen werden müssen und mit welchen Platzhaltern sie in printf() ausgegeben werden können. Fertigen Sie hierüber eine tabellarische Aufstellen! Testen Sie die Auswirkungen der Platzhalter-Optionen FLAG, BREITE, PRÄZISION und SIZE anhand von positiven und negativen Eingaben!

    43. HWu ProgI-1 16.02.99 Folie 43 Lösungsansatz Übung 9

    44. HWu ProgI-1 16.02.99 Folie 44 Operatoren Arithmetische Operatoren Inkrement-Operatoren Zuweisungsoperatoren sizeof-Operator Bitmanipulationsoperatoren Logische Operatoren

    45. HWu ProgI-1 16.02.99 Folie 45 Operatoren

    46. HWu ProgI-1 16.02.99 Folie 46 Prioritäten der Operatoren

    47. HWu ProgI-1 16.02.99 Folie 47 Übung 10 Erstellen Sie eine Tabelle, in der Sie für die Datentypen char, int, long int, float und double die sinnvollen Platzhalter für das Einlesen und die Ausgabe eintragen. Zeigen Sie anhand eines Programms den Unterschied zwischen einer Ganzzahl- und einer Gleitkommadivision. Unterscheiden Sie die Fälle int = int / int int = float / int float = int /float int = float / float

    48. HWu ProgI-1 16.02.99 Folie 48 Übung 11 Zeigen Sie anhand eines Programms den Unterschied zwischen Post- und Präinkrement. Zeigen Sie anhand eines Programms die Äquivalenz der Anweisungen x = x * y x *= y Zeigen Sie anhand eines Programms die Anzahl der von den Datentypen char, int, long int, float und double benötigten Bytes. Zeigen Sie anhand eines Programms den Unterschied zwischen bitweisem OR und XOR.

    49. HWu ProgI-1 16.02.99 Folie 49 Konstanten Deklaration mit Hilfe der Präprozessor-Direktive #define <Konstantenbezeichner> <Konstante> Beispiele #define STUNDE 60 #define dutzend 12 #define Name "BorlandC 4.5" Vordefinition in einigen include-Dateien z. B. #define M_PI 3.14159265358979323846 in <math.h> #define FALSE 0 #define TRUE 1 in <windows.h> Deklaration unmittelbar hinter dem Programmkopf und vor den include-Anweisungen

    50. HWu ProgI-1 16.02.99 Folie 50 Die if[-else]-Anweisung Syntaktischer Aufbau if(<bedingung>) { <anweisung>; ... } [else { <anweisung>; ... }]

    51. HWu ProgI-1 16.02.99 Folie 51 Die while-Schleife Syntaktischer Aufbau while (<bedingung>) { <anweisung>; ... }

    52. HWu ProgI-1 16.02.99 Folie 52 Übung 12 Entwerfen Sie eine Tabelle, die als Zeilen die verschiedenen Operatorenklassen und als Spalten die Datentypen char, int und float hat. Tragen Sie in die Zellen ein, ob die Operatoren der Operatorklasse auf den jeweiligen Datentyp sinnvoll anwendbar sind. Begründen Sie Ihre Entscheidung je mit einem C-Programm. Schreiben Sie ein C-Programm zum Testat 1! Schreiben Sie ein C-Programm zum Lösen einer beliebigen quadratischen Gleichung in den reellen Zahlen! Schreiben Sie ein C-Programm, das einen ganzzahligen Kreisradius erfragt und den Kreisumfang und die Kreisfläche mit einer Genauigkeit von 5 Nachkommastellen ausgibt!

    53. HWu ProgI-1 16.02.99 Folie 53 Testat 2 Entwerfen, implementieren und testen Sie ein Programm, das die Ampeln einer Kreuzung steuert. Durch Drücken der RET-Taste soll jeweils die nächste Lichtphase ausgelöst werden. Bei Eingabe eines ‘X’ soll das Programm terminieren. Alle anderen Eingaben müssen ignoriert werden. Die Startphase muß vorgebbar sein. Das strukturierte Programm ist abzugeben und zum Testat in folgender Form mitzubringen : der Programmentwurf als Struktogramm, das implementierte und getestete Programm als Programmquelle, beides auf DIN A4-Blättern, geheftet mit Heftrand, Name und Matrikelnummer.

More Related