Gymnasium Uebung2 2010
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
= Der Typ Boolean =
== Einfache Ausdrücke ==
Ein wichtiges Werkzeug von Programmiersprachen sind Wahrheitswerte.
<eval>
40>100
</eval>
<eval>
100>40
</eval>
<eval>
int x = 30;
x==30;
</eval>
<eval>
boolean test=(30==30);
test
</eval>
'''Übung'''
Experimentiere ein bisschen mit diesen logischen Ausdrücken
== Komplexe Ausdrücke ==
Logisches UND
<eval>
30==40 && 20<30
</eval>
Logisches NICHT
<eval>
!true
</eval>
Logisches ODER
'''Übung'''
Schreibe einen Ausdruck mit der oder Verknüpfung ('''||''')
<eval/>
'''Übung'''
Was ist die Lösung von: <math>4>3 \wedge 10 <= 100</math>
'''Tipp:''' Gebe in den Funktionen nur '''true''' oder '''false''' ein.
<code>boolean ergebniss1() {
//return ...;
}</code>
<check>return ergebniss1()==false;</check>
'''Übung'''
Was ist die Lösung von: <math>4 > 3 \vee 10==100</math>
<code>boolean ergebniss2() {
//return ...;
}
</code>
<check>return ergebniss2()==true;</check>
'''Übung'''
Was ist die Lösung von: <math>\neg(2==3)</math>
<code>boolean ergebniss3() {
//return ...;
}</code>
<check>return ergebniss3()==true;</check>
'''Übung'''
Implementiere die Funktion: x > 3<br/>
Nenne diese: '''ergebniss4'''
<code></code>
<check>return (ergebniss4(4)==true && ergebniss4(2)==false && ergebniss4(3.5)==true);</check>
'''Übung'''
Implementiere die Funktion: 4>x and x > 3<br/>
Nenne diese: '''ergebniss5'''
<code></code>
<eval/>
<check>return (ergebniss5(4)==false && ergebniss5(2)==false && ergebniss5(3.5)==true);</check>
'''Übung'''
Implementiere die Funktion: x*x = x<br/>
Nenne diese: '''ergebniss6'''
<code></code>
<eval/>
<check>return (ergebniss6(4)==false && ergebniss6(2)==false && ergebniss6(3.5)==false);</check>
= Konditionale bzw. bedingte Anweisungen =
<code>
String hallo(int x) {
if(x==2) {
return "Cool, du hast eine 2 eingegeben!";
} else {
return "Ok, du hast keine 2 eingegeben, sondern: "+x;
}
}
hallo(2);
</code>
<eval>
hallo(2);
</eval>
'''Übung'''
Gehe kurz diesen Quelltext durch, versuch ihn zu verstehen und bei Fragen meld dich!
'''Übung'''
In der Vorlesung haben wir als Beispiel das schöne Wetter und Eltern nicht zu Hause erarbeitet. Schreib das mal als Prozedur :-)
<code/>
<eval/>
'''Übung'''
Baue eine Funktion '''signum'''. Sie soll folgendes machen:<br/>
* -1, wenn die eingegebene Zahl kleiner 0 ist.
* 0, wenn die eingegebene Zahl gleich 0 ist.
* 1, wenn die eingegebene Zahl größer 0 ist.
Nenne die Funktion '''signum'''
<code/>
<eval/>
<check> return (signum(-10)==-1 && signum(1234)==1 && signum(0)==0);</check>
'''Übung'''
Baue ein Funktion '''abs'''. Sie soll den absoluten Betrag einer Zahl ausgeben. z.B. abs(-50) == 50
Nenne die Funktion '''abs'''! Es wird der absolut Betrag als '''Ganzzahl''' zurückerwartet!
<code/>
<eval/>
<check> return (abs(-10)==10 && abs(1234)==1234 && abs(0)==0);</check>
'''Übung'''
Baue eine Funktion die '''true''' zurückgibt, wenn die eingebene Zahl gerade ist.<br/>
Nenne das Programm '''even'''.
<code/>
<eval/>
<check>return (even(2)==true && even(531)==false && even(10002)==true);</check>
'''Übung'''
Baue eine Funktion die '''true''' zurückgibt, wenn die eingebene Zahl ungerade ist.<br/>
Nenne das Programm '''odd'''.
<code/>
<eval/>
<check>return (odd(1)==true && odd(51)==true && odd(100)==false && odd(10002)==false);</check>
'''Übung'''
Schreibe ein kleines Rabatt Programm. Das Programm soll den Rabatt für eine gewisse Stückzahl berechnen.
Nenne das Programm '''rabatt'''
Es wird eine Zahl vom Typ '''int''' zurückerwartet!
Der Rabatt berechnet sich wie folgt:<br/>
* 0<Stückzahl<1000 --> kein Rabatt<br/>
* 1000<Stückzahl<2000 --> 2 (€) Rabatt<br/>
* 2000<Stückzahl<5000 --> 5 (€) Rabatt<br/>
* Stückzahl > 5000 --> 10 (€) Rabatt<br/>
Nenne das Programm: '''rabatt'''
<code/>
<eval/>
<check> return (rabatt(457)==0 && rabatt(1340)==2 && rabatt(3466)==5 && rabatt(10845)==10);</check>
'''Übung'''
Baue dir ein Programm, was berechnet ob jmd. Über-, Normal- oder Untergewicht hat [https://www.uni-hohenheim.de/wwwin140/info/interaktives/bmi.htm].<br/>
Nenne die Funktion '''bmi'''<br/>
Benutze als ersten Parameter das Gewicht, als zweiten die Größe<br/>
Gib "Übergewicht", "Normalgewicht" oder "Untergewicht" zurück. Deine Rückgabetyp ist also String.
<code/>
<eval/>
<check>return (bmi(70, 1.75)).equals("Normalgewicht") && (bmi(200, 1.75)).equals("Übergewicht") && (bmi(50, 1.75)).equals("Untergewicht");</check>
'''Übung'''
Eine IT-Firma konnte ihre Effizienz durch den Umstieg auf eine andere
Programmiersprache steigern. Der Chef möchte deshalb seine Mitarbeiter belohnen. Die
Gehälter aller Mitarbeiter sollen um 4 %, mindestens aber um 80 € im Monat erhöht werden.
Es soll ein Programm entwickelt werden, das nach Eingabe des alten Monatsgehaltes das
neue Gehalt berechnet und ausgibt (vgl. [http://www.google.de/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fwww.informatica-didactica.de%2FInformaticaDidactica%2FKohl2006%2FAnleitung2006.pdf&ei=HVWlSonyCceHsAaG06DTBA&rct=j&q=Puck+programmieren&usg=AFQjCNF_vjDGSS6dVHesQ-0shSHpvkzOHA]).
Nenne das Programm '''gehaltserhoehung'''! Als Rückgabe wird eine '''Ganzzahl''' erwartet!
<code/>
<eval/>
<check>return (gehaltserhoehung(1200)==1280 && gehaltserhoehung(5000)==5200 && gehaltserhoehung(0)==80);</check>
'''Übung'''
Ein Großbauer möchte sein Land erweitern. Dafür bietet er den Bauern im Dorf an, ihre
Felder zu pachten. Da er größere Felder mit seinen modernen Geräten besser bewirtschaften
kann, ist er bereit, dafür einen höheren Preis zu zahlen. Für Felder über 10 Hektar Größe
will der Großbauer 150 € Pacht pro Hektar im Jahr bezahlen. Bei allen anderen Feldern nur
130 € pro Hektar.<br/>
Entwickle für die Bauern des Dorfes ein Programm, welches zu der Eingabe einer
Fläche in Hektar und der geplanten Pachtdauer in Jahren den Erlös ausgibt.
Nenne das Programme '''land'''. Zurückerwartet wird der Preis als '''int'''.
<code/>
<eval/>
<check>return (land(20)==3000 && land(10)==1300 && land(5)==650 && land(11)==1650);</check>
== Zusammenfassung ==
=== Zuweisungsoperatoren ===
<center>
{| style="text-align:center;border:solid grey 1px" cellpadding=3 cellspacing=0
|- style="background:#FFE466;"
! Operator !! Bezecihnung !! Bedeutung
|-
| <span style="color:red">==</span> || Gleich || a==b ergibt true, wenn a gleich b ist.
|-
| <span style="color:red">!=</span> || Ungleich || a!=b ergibt true, wenn a ungleich b ist.
|-
| <span style="color:red"><</span> || Kleiner || a < b ergibt true, wenn a kleiner b ist.
|-
| <span style="color:red"><=</span> || Kleiner gleich || a<=b ergibt true, wenn a kleiner gleich b ist.
|-
| <span style="color:red">></span> || Größer || a>b ergibt true, wenn a größer b ist.
|-
| <span style="color:red">>=</span> || Größer gleich || a>=b ergibt true, wenn a größer gleich b ist.
|}
</center>
=== Logische Operatoren ===
<center>
{| style="text-align:center;border:solid grey 1px" cellpadding=3 cellspacing=0
|- style="background:#FFE466;"
! Operator !! Bezecihnung !! Bedeutung
|-
| <span style="color:red">!</span> || Logisches NICHT || !a ergibt false, wenn a wahr ist und true, wenn a falsch ist
|-
| <span style="color:red">&&</span> || UND (Short-Curcuit) || a && b ergibt wahr wenn a und b wahr sind, sonst falsch. Ist a bereits falsch wird falsch zurückgegeben und b nicht mehr ausgewertet.
|-
| <span style="color:red"><pre>||</pre></span> || ODER (Short-Curcuit) || ergibt falsch wenn a und b falsch sind, sonst wahr. Ist a bereits wahr wird b nicht emhr ausgewertet.
|-
| <span style="color:red">&</span> || UND || ergibt wahr wenn a und b wahr sind, sonst falsch. Überprüft beide Operanden.
|-
| <span style="color:red"><pre>|</pre></span> || ODER || ergibt falsch wenn a und b falsch sind, sonst wahr. Überprüft beide Operanden.
|-
| <span style="color:red">^</span> || Exklusiv-ODER || a ^ b ergibt wahr wenn a und b verschiedene Wahrheitswerte haben.
|}
</center>