Upload
christianne-nager
View
116
Download
0
Embed Size (px)
Citation preview
Anweisungen und Datentypen Folie 1Uwe Lämmel
Einführung in die ProgrammierungAnweisungen und Datentypen
Uwe Lämmel
Fakultät für Wirtschaftswissenschaften
www.wi.hs-wismar.de/~laemmel
Anweisungen und Datentypen Folie 2Uwe Lämmel
Anweisungen und Daten
Algorithmus = Handlungsanweisung
Unsere Weltsicht:Dinge + Handlungen
Begriffswelt der Informatik:Daten + Algorithmen
public void taktsignalGeben( ) {minuten.erhoehen( );
if (minuten.gibWert( ) == 0) { // Limit wurde erreicht!stunden.erhoehen( );
} //ifanzeigeAktualisieren();
} //taktsignalGeben
Methoden-Körper = Algorithmus
Anweisungen und Datentypen Folie 3Uwe Lämmel
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)
Unsere Weltsicht:Dinge + Handlungen
Begriffswelt der Informatik:Daten + Algorithmen
Anweisungen und Datentypen Folie 4Uwe Lämmel
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");}
Anweisungen und Datentypen Folie 5Uwe Lämmel
if-Anweisung: Interpretation
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 Bedingung false, wird (nur) Anweisung des else-Teils abgearbeitet.
if (Bedingung) { Anweisungen } else { Anweisungen }
Anweisungen und Datentypen Folie 6Uwe Lämmel
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
Anweisungen und Datentypen Folie 7Uwe Lämmel
Entscheidungsbaum
Rot?
Röhren? Röhren?
??
nicht möglich Warnung essbar essbar?
Anweisungen und Datentypen Folie 8Uwe Lämmel
Pilze
if (rot) {
if (roehren) { ergebnis= "nicht moeglich"; }
else { ergebnis= "giftig!"; }
}
else {
if (roehren) { ergebnis= "essbar";}
else { ergebnis= "vielleicht essbar";}
class Pilz {
private String name;private boolean rot; // Wahrheitswert: true / falseprivate boolean roehren;
public Pilz(String pname, boolean istRot, boolean hatRoehren){
name = pname; rot = istRot; roehren = hatRoehren;
} //Pilz
public String pilzIst() {String ergebnis;if (rot) {
if (roehren) { ergebnis= "nicht moeglich"; }else { ergebnis= "giftig!"; }
}else {
if (roehren) { ergebnis= "essbar";}else { ergebnis= "vielleicht essbar";}
} //ifreturn ergebnis;
} //pilzIst
Anweisungen und Datentypen Folie 9Uwe Lämmel
Entscheidungsbaum - Aufgabe
Artikel Nummer MWSt in %
Leitungswasser 1000 7
Brot 1010 7
Butter 1020 7
Bier 1100 19
Buch 2000 7
Fahrkarte-Nahverker 3100 7
Fahrkarte-Fernverkehr 3200 19
Miete 4100 0
Arzthonorar 4200 0
Bekleidung 5100 19
Geräte 5200 19
Nutzen Sie Vergleiche für die Entscheidungen!
Anweisungen und Datentypen Folie 10Uwe Lämmel
Daten – Interpretation
Maschinencode
natürliche Sprache
Compiler
Programmierung
Programm
Programmiersprache
Anweisungen und Datentypen Folie 11Uwe Lämmel
Daten
class Person {
//-- Datenfelder, Merkmale, Attribute private String name; private int geboren; //-- Geburtsjahr!
public Person(String nachname, int jahr) {
name = nachname;geboren = jahr;
} //Person
public int getAlter(int jahr ) {int alter = jahr – geboren;return alter;
} //getAlter
} // Person
…
Person p1 = new Person("Meier",1980);
Instanz-Variablen
formale Parameter
lokale Variable
Referenz und Objekt
aktuelle Parameter
Anweisungen und Datentypen Folie 12Uwe Lämmel
Variable: Name + Typ + Wert
Name = Handgriff Typ liefert Interpretation des Wertes
435 a
(EinPerson- Objekt)
p1A4CB890
EinPerson-Objekt new
int a;
Person p1;
Anweisungen und Datentypen Folie 13Uwe Lämmel
Variable = Speicherplatz
0101
0111
0100
1001
2 Byte
short char
ASCII 87ASCII 73
‘W‘ ‘I‘
= 5*163+7*16²+4*16+9
= 22.345
(26 A4 6B 30):
Interpreation als …
Angabe des Typs einer Variablen erforderlich
Anweisungen und Datentypen Folie 14Uwe Lämmel
Variable und einfache Datentypen
int a = 435;
int b = a;
a = 4711;
435 a
435 b
4711 a
435 b
Anweisungen und Datentypen Folie 15Uwe Lämmel
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
Anweisungen und Datentypen Folie 16Uwe Lämmel
Objekt-Datentypen
vordefiniert (siehe Java-API):String
selbst entwickelt:TicketAutomatNummernanzeigeUhrenanzeigeStudentUnternehmen…
Objekte stets mittels Konstruktor erzeugen: new
Anweisungen und Datentypen Folie 17Uwe Lämmel
Variable, die auf Objekte zeigen
Person p1;
p1 = new Person("Katz",1979);
Person p2;p2 =p1;p2.setName(„Hund“);
Was liefert p1.getName() ?
p1
PersonObjekt:"Katz"
p1
PersonObjekt:"Katz"
p1
p2// Was bewirkt:Person p3 = new Person();p3 = p1;
Vorsicht bei Objekt-Variablen!
Anweisungen und Datentypen Folie 18Uwe Lämmel
Variable, die auf Objekte zeigen?
String s = "Anton";
String s1 = new String("Anton");
Uhrenanzeige wecker = new Uhrenanzeige();
Datumsanzeige kalender;
Kalender = new Datumsanzeige();
Anweisungen und Datentypen Folie 19Uwe Lämmel
class Person {private String name;…public String getName() {
return name;}
…
Instanzen-Variablen – privat
Sicherheit Stabile Schnittstelle (Wartbarkeit)
– Geheimnisprinzip Schutz vor unerwünschter
Veränderung
namegeboren
Zugriffsmethoden
Programm-Entwicklung: Instanzen-Variablen: private Zugriff über public-Methoden
Anweisungen und Datentypen Folie 20Uwe Lämmel
Daten und Anweisungen
class TestPerson {public static void 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");…
}}
Anweisungen und Datentypen Folie 21Uwe Lämmel
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
Anweisungen und Datentypen Folie 22Uwe Lämmel
Ende
Anweisungen und Datentypen Folie 23Uwe Lämmel
Entscheidungsbaum Neuer Monat
Monat 30?Monat 30?
tag=31?tag=31? Februar?Februar?
neuerMonatneuerMonat
Schaltjahr?Schaltjahr? tag=0?tag=0?
tag=30?tag=30? tag=29?tag=29?neuerMonatneuerMonat
neuerMonatneuerMonat
neuerMonatneuerMonat