Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen.

Ähnliche Dokumente
2.5 Programmstrukturen Entscheidung / Alternative

C++ - Einführung in die Programmiersprache Schleifen

2 Teil 2: Nassi-Schneiderman

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Javakurs für Anfänger

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Java Anweisungen und Ablaufsteuerung

5. Elementare Befehle und Struktogramme

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs für Anfänger

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Kontrollstrukturen -- Schleifen und Wiederholungen

Grundlagen der Programmierung

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

3. Anweisungen und Kontrollstrukturen

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Arbeitsblätter für Algorithmierung und Strukturierung

Programmieren in C (Übungsblatt 1)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

C-Propädeutikum Anweisungen

Programmieren in C (Übungsblatt 1)

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Programmieren in C (Übungsblatt 1)

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

C- Kurs 04 Anweisungen

Arbeitsblätter für Algorithmierung und Strukturierung C #

Einfache Bedingte Ausführung

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Einführung in die Programmierung II. 3. Kontrollstrukturen

Schleifen: Immer wieder dasselbe tun

BKTM - Programmieren leicht gemacht.

Wiederholungen / Schleifen

Javakurs für Anfänger

Einführung in die Programmierung Wintersemester 2011/12

ModProg 15-16, Vorl. 5

Zeichenketten sind uns bisher nur als konstante Texte begegnet, welche in "" angegeben waren; z.b. als Formatstring in der printf()-funktion:

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Eine kleine Befehlssammlung für Java Teil1

4 Formelsammlung C/C++

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

Objektorientierte Programmierung

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

Kontrollstrukturen und Logik

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Einführung in die Programmierung

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Schleifen in C/C++/Java

Programmiertechnik 1 FOR-SCHLEIFEN

Einstieg in die Informatik mit Java

Programmieren in C/C++ und MATLAB

Programmiertechnik Kontrollstrukturen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Programmiertechnik 1 FOR-SCHLEIFEN

if ( Logischer Operator ) { } else { Anweisungen false

Intensivübung zu Algorithmen und Datenstrukturen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Dr. Monika Meiler. Inhalt

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

Schleifen in C/C++/Java

Informatik für Ingenieure (InfIng)

Schleifenanweisungen

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Herzlich willkommen!

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Kapitel 3: Anweisungen

Vorlesung Programmieren

Grundlagen der Programmierung

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

Grundlagen von C# - 2

Grundlagen der Programmierung

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

PROGRAMMIERUNG IN JAVA

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

GI Vektoren

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Transkript:

Grundlegende Programmstrukturen Seite 1 von 14 Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen. Sequenzen Eine Sequenz ist eine Folge von en (sblock) ohne Verzweigungen. Der Programmablauf ist linear von oben nach unten. Ein sblock befindet sich normalerweise in geschweiften Klammern. Hauptprogramm 1 2 3 Typische Beispiele sind Programme, welche nach dem EVA-Prinzip organisiert sind (Eingabe-Verarbeitung- Ausgabe). Beispiel: Kreisberechnung Kreisberechnung Deklarationen double radius, umfang, flaeche p i= 3.141593 Eingabe radius Berechnungen umfang = 2*radius*pi flaeche = radius*radius*pi Ausgabe umfang, flaeche Programmstrukturen.docx - 1 -

Grundlegende Programmstrukturen Seite 2 von 14 #include <stdio.h> #include <conio.h> main() //Beginn des sblocks double radius=0,umfang=0,flaeche=0; //Deklarationen const double pi=3.141593; printf("\nkreisberechnung\n"); printf("\nradius: "); //Eingabe scanf("%lf",&radius); umfang=2*radius*pi; //Berechnungen flaeche=radius*radius*pi; printf("\numfang : %8.3lf",umfang); //Ausgabe printf("\nflaeche: %8.3lf",flaeche); return(0); //Ende des sblocks Schleifen Schleifen bestehen aus einem sblock (Schleifenrumpf) und einer Ausführungsbedingung. Der Schleifenrumpf wird solange wiederholt, wie die Ausführungsbedingung erfüllt ist. Je nachdem, zu welcher Zeit die Bedingung abgeprüft wird, unterscheidet man zwischen kopf- und fußgesteuerten Schleifen. Kopfgesteuerte Schleife: Kopfgesteuerte Schleife bedingung while(bedingung) Wird nach der while-bedingung nur eine ausgeführt, kann der sblock mit entfallen: while(bedingung) Programmstrukturen.docx - 2 -

Grundlegende Programmstrukturen Seite 3 von 14 Fußgesteuerte Schleife: Fußgesteuerte Schleife bedingung do while(bedingung); Fußgesteuerte Schleifen finden Verwendung, wenn von der Aufgabenstellung her der Schleifenrumpf mindestens einmal ausgeführt werden muss. Auch hier kann der sblock mit entfallen, wenn der Schleifenrumpf nur eine enthält: do while(bedingung); Auf jeden Fall ist zu beachten, dass bei fußgesteuerten Schleifen die while-bedingung mit einem Semikolon (;) abschließen muss! Programmstrukturen.docx - 3 -

Grundlegende Programmstrukturen Seite 4 von 14 Abbruchgesteuerte Schleife: Gelegentlich ergibt sich die Abbruchbedingung während des Schleifenrumpfes (z.b. auf Grund einer Eingabe). Mit dem Schlüsselwort break kann ein Schleifenrumpf verlassen werden. Das Programm wird mit der nach dem Schleifenrumpf folgenden fortgesetzt. Abbruchgesteuerte Schleife wiederhole immer 1 ja bedingung nein break 2 3 while(1) anweisung1; if(bedingung) break; else anweisung2; anweisung3; Die while(1) bewirkt, dass die Schleifenbedingung immer erfüllt ist. Ein Abbruch erfolgt erst nach der if-bedingung (s.u.). Programmstrukturen.docx - 4 -

Grundlegende Programmstrukturen Seite 5 von 14 For-Schleifen: Bei vielen Schleifen wird die Anzahl der Durchläufe durch einer Zähler bestimmt (z.b. der Index bei einem Datenfeld). Der Zähler beginnt mit einem Anfangswert und wird bei jedem Schleifendurchlauf erhöht/erniedrigt bis ein bestimmter Endwert erreicht wird. for (initialisierung;bedingung;inkrementausdruck) Durch die Initialisierung wird der Anfangswert des Zählers festgelegt. Der Bedingungsausdruck legt die Ausführungsbedingung fest. Der Inkrementausdruck bestimmt, um welchen Wert sich der Zähler nach einem Durchlauf ändert. Der Inkrementausdruck kann auch negativ sein. Der Zählwert wird dann entsprechend verkleinert. Das folgende Beispiel schreibt die Zahlen 1 bis 10 und die zugehörigen Quadratzahlen auf den Bildschirm: #include <stdio.h> main() int i=0; for(i=1;i<=10;i++) printf("\nzahl: %2i\tQuadrat: %3i",i,i*i); return(0); Programmstrukturen.docx - 5 -

Grundlegende Programmstrukturen Seite 6 von 14 Entscheidungen Mit dem Schlüsselwort if wird eine bedingte Entscheidung eingeleitet. Der folgende sblock wird nur ausgeführt, wenn eine eindeutige Bedingung erfüllt ist. Andernfalls werden die en ausgeführt, welche sich in einem else-block befinden. Der else-block kann auch entfallen. if-entscheidung ja bedingung? nein if (bedingung) Wird nach if (oder else) nur eine einzelne ausgeführt können die -Klammern entfallen. if (bedingung) if-else-entscheidung ja bedingung? nein Programmstrukturen.docx - 6 -

Grundlegende Programmstrukturen Seite 7 von 14 if (bedingung) else if-else-en können beliebig verschachtelt werden: Mehrfachentscheidung ja bedingung1? nein 1 ja bedingung2? nein 2 3 if (bedingung1) anweisung1; else if (bedingung2) anweisung2; else anweisung3; Programmstrukturen.docx - 7 -

Grundlegende Programmstrukturen Seite 8 von 14 Bedingungsoperatoren Die Bedingungen bei Schleifen und Entscheidungen ergeben sich entweder aus der Auswertung eines einzelnen Ausdruckes oder aus dem Vergleich zweier Werte. Eine Bedingung ist solange erfüllt, wie der Ausdruck einen Wert ungleich 0 liefert. Beispiele: while(1) Die Bedingung ist immer erfüllt, weil der Bedingungsausdruck immer 1 ist. Der Abbruch der Schleife ist nur mit einer break- möglich. Im folgenden Beispiel wird 5 mal der Text Hallo ausgegeben, bis die Variable i den Wert 0 annimmt: #include <stdio.h> main() int i=5; while(i) printf("\nhallo"); i--; return(0); Für Bedingungen, die auf den Vergleich zweier Werte beruhen, gelten folgende Bedingungsoperatoren: == gleich!= ungleich > größer als < kleiner als >= größer oder gleich <= kleiner oder gleich Beispiele: while(i<10) //solange i < 10 if (zahl1==zahl2) //wenn zahl1 gleich zahl2, ein einfaches '=' wäre eine //Zuweisung! Programmstrukturen.docx - 8 -

Grundlegende Programmstrukturen Seite 9 von 14 Logische Operatoren erlauben mehrere Bedingungen gleichzeitig abzuprüfen: && logisches UND logisches ODER if((zahl1>0) && (zahl1<=10)) //zahl1 größer 0 und kleiner gleich 10 while((x==0x41) (x==0x61)) //solange x=41h oder 61H Programmstrukturen.docx - 9 -

Grundlegende Programmstrukturen Seite 10 von 14 Fallunterscheidung Verschachtelte if-en mit vielen Bedingungen sind häufig unübersichtlich. Vielfach bietet sich die Technik der Fallunterscheidung mit der switch-case- an. Dabei wird in Abhängigkeit von einem Zahlenwert zwischen mehreren Fällen unterschieden. Jeder Fall besitzt einen eigenen sblock. Struktogramm: Fallunterscheidung wert? 1 2 3 Sonstige anweisung1; anweisung2; anweisung3; anweisung4; switch(wert) //wert ist eine Variable vom Typ Integer oder char case 1: anweisung1; break; //Entscheidungsblock beenden case 2: anweisung2; break; case 3: anweisung3; break; default: anweisung4; Wirkungsweise: Die Variable wert ist eine ganze Zahl (int oder char). Bei Ausführung des Blockes werden die einzelnen Fälle (case-blöcke) von oben beginnend überprüft. Bei erfüllter Bedingung werden alle en ausgeführt bis die break- erreicht wird. Trifft keine Bedingung zu, werden die en im default-block durchgeführt (z.b.: eine Fehlermeldung). Der default-block kann entfallen. Die break-en sind erforderlich, um den sblock zu verlassen. Andernfalls werden auch die folgenden sblöcke ausgeführt. Das kann benutzt werden, um mehrere Bedingungen abzuprüfen. Programmstrukturen.docx - 10 -

Grundlegende Programmstrukturen Seite 11 von 14 Beispiel: Die folgende case- überprüft, ob die Variable wert 'j oder 'J ist 1 : switch(wert) case 'j': case 'J': anweisungenbreak; Häufig werden Fallunterscheidungen angewendet, um eine Menüauswahl zu treffen. Das folgende Beispiel gestattet aus einem Menü heraus zu wählen, ob das Volumen eines Prismas (Menüpunkt = 1) oder eines Zylinders (Menüpunkt = 2) berechnet werden soll. Bei Eingabe des Menüpunktes = 0 wird das Programm beendet. Werden andere Werte eingegeben wird eine Fehlermeldung erzeugt. Struktogramm: Körperberechnung Deklarationen double laenge,breite,hoehe,durchm,volumen double pi = 3.1415927 int wahl Zeige Menü: 1 = Prisma 2 = Zylinder 0 = Ende Eingabe wahl wahl? '1' '2' '0' Sonstige Eingabe laenge,breite,hoehe volumen=laenge*breite*hoehe Zeige volumen wiederhole, wenn wahl!= '0' Eingabe durchm,hoehe volumen=durchm*durchm*hoehe*pi/4 Zeige volumen Zeige "Fehler " Taste betätigen 1 'J' bzw. 'j' repräsentieren den ASCII-Code des jeweiligen Zeichens Programmstrukturen.docx - 11 -

Grundlegende Programmstrukturen Seite 12 von 14 //Programm zur Koerperberechnung #include<stdio.h> #include<conio.h> main() double laenge,breite,hoehe,durchm,volumen; const double pi=3.1415927; int wahl=0; do printf("\nkoerperberechnung\n"); printf("\n1 = Prisma"); printf("\n2 = Zylinder"); printf("\n\n0 = Ende"); printf("\n\nbitte waehlen "); wahl=getch(); switch(wahl) case '1': printf("\nprismaberechnung\n"); printf("\nlaenge: ");scanf("%lf",&laenge); printf("\nbreite: ");scanf("%lf",&breite); printf("\nhoehe : ");scanf("%lf",&hoehe); volumen=laenge*breite*hoehe; printf("\nvolumen = %8.3lf\n",volumen); break; case '2': printf("\nzylinderberechnung\n"); printf("\ndurchmesser: ");scanf("%lf",&durchm); printf("\nhoehe : ");scanf("%lf",&hoehe); volumen=durchm*durchm*hoehe*pi/4; printf("\nvolumen = %8.3lf\n",volumen); break; case '0': break; default: printf("\n\nfalsche Eingabe ");getch(); while(wahl!= '0'); return(0); Übung: Körperberechnung Ergänzen Sie das obige Programm gemäß folgender Vorgaben: - Das Menü soll um einen Punkt zur Berechnung einer Kugel erweitert werden (Menüpunkt = 3). - Außerdem soll zu allen Körpern zusätzlich die Oberfläche berechnet werden. Programmstrukturen.docx - 12 -

Grundlegende Programmstrukturen Seite 13 von 14 Übung : Zinseszinsrechnung Entwickeln Sie ein Programm, welches die Kapitalentwicklung bei Zinseszinsen berechnet. Eingabedaten: Anfangskapital k0 Zinsfuß p in % Laufzeit j in Jahren Die formatierte Ausgabe soll für jedes einzelne abgelaufene Jahr die Zinsen und das Endkapital anzeigen. Bei Betätigung der j-taste soll eine neue Berechnung möglich sein. Beispiel für Konsolenanzeige: Anfangskapital: 100 Zinsfuss in %: 10 Laufzeit in Jahren: 4 1.Jahr Zinsen: 10.00 Endkapital: 110.00 2.Jahr Zinsen: 11.00 Endkapital: 121.00 3.Jahr Zinsen: 12.10 Endkapital: 133.10 4.Jahr Zinsen: 13.31 Endkapital: 146.41 Nochmal? j/n Entwickeln Sie ein Struktogramm und ein C-Programm! Programmstrukturen.docx - 13 -

Grundlegende Programmstrukturen Seite 14 von 14 Übung : Zahlenraten Entwickeln Sie ein Programm, welches eine Zufallszahl von 1 bis 999 erzeugt. Die Zahl soll von dem Benutzer erraten werden. Dazu gibt der Benutzer eine Zahl ein. Wenn die eingegebene Zahl größer als die Zufallszahl ist, meldet der Rechner 'Die Zahl ist zu groß!'. Wenn die eingegebene Zahl kleiner als die Zufallszahl ist, meldet der Rechner 'Die Zahl ist zu klein!'. Die Eingabe wird solange wiederholt, bis der Rechner 'Zahl gefunden!' ausgibt. Die Anzahl der Versuche soll gezählt werden und danach ausgegeben werden. Zusatz: In Abhängigkeit von der Anzahl der Versuche soll folgende Bewertung ausgegeben werden: Anzahl < 10 --> 'sehr gut' 11 < Anzahl < 13 --> 'gut' 14 < Anzahl < 15 --> 'na ja' Anzahl > 15 --> 'das üben wir nochmal' Programmstrukturen.docx - 14 -