230 likes | 374 Views
Fakultät für Wirtschaftswissenschaften. Einführung in die Programmierung Anweisungen und Datentypen. Uwe Lämmel. www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de. Begriffswelt der Informatik: Daten + Algorithmen. Unsere Weltsicht: Dinge + Handlungen. Anweisungen und Daten.
E N D
Fakultät für Wirtschaftswissenschaften Einführung in die ProgrammierungAnweisungen und Datentypen Uwe Lämmel www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de
Begriffswelt der Informatik: Daten + Algorithmen Unsere Weltsicht: Dinge + Handlungen Anweisungen und Daten Algorithmus = Handlungsanweisung public voidtaktsignalGeben( ) { minuten.erhoehen( ); if (minuten.gibWert( ) == 0) {// Limit wurde erreicht! stunden.erhoehen( ); } //if anzeigeAktualisieren(); }//taktsignalGeben Methoden-Körper = Algorithmus
Begriffswelt der Informatik: Daten + Algorithmen Unsere Weltsicht: Dinge + Handlungen Anweisungen Anweisungen: • einfache Anweisungen: • Zuweisung: wert=0; name=neuName; ... • return-Anweisung: return umsatz/anzahl;return name; ... • Methodenaufruf: stunden.setzeWert(neu); ... • strukturierte Anweisungen • Sequenz (Klammerung): { name=neuName; wert=0; } • Alternative (IF-Anweisung)
Alternative: if-Anweisung if (Bedingung) { Anweisungen // Dann-Fall, wenn Bedingung true ist } else { Anweisungen // Sonst-Fall, Bedingung ist false } if ( z % 2 == 0) { System.out.println( "gerade Zahl") ; } else { System.out.println("ungerade Zahl"); }
if-Anweisung: Interpretation if (Bedingung) { Anweisungen } else { Anweisungen } • Bedingung muss vom Typ boolean sein. • Besteht Anweisungen nur aus einer Anweisung,können Klammern entfallen • else-Teil kann entfallen Interpretation: Wenn Bedingung den Wert true liefert, wird (nur) nachfolgende Anweisung abgearbeitet; liefert Bedingungfalse, wird (nur) Anweisung des else-Teils abgearbeitet.
Bedingung einer if-Anweisung • ist logischer Ausdruck: • gleich == a == 0 • ungleich != a != 0 • größer > a > 10 • größer gleich >= a >=0 • kleiner < • kleiner gleich <= • und && 0<a && a<100 • oder | | a>0 | | a==0 • nicht ! ! (a==0) • logische Variable/Konstante: • boolean b1; b1 !b1
Rot? Röhren? Röhren? ? ? Warnung essbar nicht möglich essbar? Entscheidungsbaum
class Pilz { private Stringname; private booleanrot; // Wahrheitswert: true / false private booleanroehren; public Pilz(Stringpname, booleanistRot,booleanhatRoehren){ name = pname; rot = istRot; roehren = hatRoehren; }//Pilz public StringpilzIst() { Stringergebnis; if (rot) { if (roehren) { ergebnis= "nicht moeglich"; } else { ergebnis= "giftig!"; } } else { if (roehren) { ergebnis= "essbar";} else { ergebnis= "vielleicht essbar";} } //if returnergebnis; } //pilzIst Pilze if (rot) { if (roehren) { ergebnis= "nicht moeglich"; } else { ergebnis= "giftig!"; } } else { if (roehren) { ergebnis= "essbar";} else { ergebnis= "vielleicht essbar";}
Entscheidungsbaum - Aufgabe Nutzen Sie Vergleiche für die Entscheidungen!
Daten – Interpretation natürliche Sprache Maschinencode Programmierung Compiler Programm Programmiersprache
Daten Instanz-Variablen class Person { //-- Datenfelder, Merkmale, Attribute privateString name; privateint geboren; //-- Geburtsjahr! public Person(String nachname, int jahr) { name = nachname; geboren = jahr; } //Person publicint getAlter(int jahr ) { int alter = jahr – geboren; return alter; } //getAlter } // Person … Person p1 =newPerson("Meier",1980); formale Parameter lokale Variable aktuelle Parameter Referenz und Objekt
435 a Ein Person- Objekt new (Ein Person- Objekt) A4CB890 p1 Variable: Name + Typ + Wert • Name = Handgriff • Typ liefert Interpretation des Wertes int a; Person p1;
0101 0111 0100 1001 Angabe des Typs einer Variablen erforderlich Variable = Speicherplatz 2 Byte (26 A4 6B 30): char short Interpreation als … ASCII 87ASCII 73 ‘W‘ ‘I‘ = 5*163+7*16²+4*16+9 = 22.345
435 435 435 a b b 4711 a Variable und einfache Datentypen • int a = 435; • int b = a; • a = 4711;
Einfache Datentypen boolean logischer Wert: true/false 1 Byte char Zeichen 2 Byte byte Ganzzahl –128 .. +127 1 Byte short Ganzzahl 2 Byte int Ganzzahl 4 Byte long Ganzzahl 8 Byte float Fließpunktzahl 4 Byte double Fließpunktzahl 8 Byte
Objekt-Datentypen vordefiniert (siehe Java-API): String selbst entwickelt: TicketAutomat Nummernanzeige Uhrenanzeige Student Unternehmen … Objekte stets mittels Konstruktor erzeugen: new
Vorsicht bei Objekt-Variablen! Variable, die auf Objekte zeigen p1 • Person p1; • p1 = new Person("Katz",1979); • Person p2;p2 =p1;p2.setName(„Hund“); • Was liefert p1.getName() ? PersonObjekt:"Katz" p1 p1 PersonObjekt:"Katz" p2 // Was bewirkt: Person p3 = new Person(); p3 = p1;
Variable, die auf Objekte zeigen? String s = "Anton"; String s1 = new String("Anton"); Uhrenanzeige wecker = new Uhrenanzeige(); Datumsanzeige kalender; Kalender = new Datumsanzeige();
Instanzen-Variablen – privat class Person { private String name; … public String getName() { return name; } … • Sicherheit • Stabile Schnittstelle (Wartbarkeit) • Geheimnisprinzip • Schutz vor unerwünschter Veränderung Zugriffsmethoden namegeboren Programm-Entwicklung: • Instanzen-Variablen: private • Zugriff über public-Methoden
Daten und Anweisungen class TestPerson { publicstaticvoid main(String[ ] args) { Person p1 = new Person("Berg", 1978); Person p2 = new Person("Tal", 1990); int limit = 18; int imJahr = 2007; if (p1.getAlter(imJahr)>=limit) { System.out.println("Kredit fuer "+p1.getName()+ ": JA"); } else System.out.println("Kredit fuer "+p1.getName()+ ": NEIN"); … } }
Zusammenfassung • Dinge + Handlungen => Daten und Algorithmen • Algorithmen = Folge von Anweisungen • einfache <> strukturierte Anweisungen • Zuweisung, return, Methoden-Aufruf • Sequenz, Alternative (if-Anweisung) • einfache Datentypen (int, double, boolean, …) • Referenz-Datentypen (Objekt-Typen) • Speicherverwendung und Datentypen