Gymnasium Uebung2

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
= Der Typ Boolean =
== Einfache Ausdrücke ==
Ein wichtiges Werkzeug von Programmiersprachen sind Wahrheitswerte.

<run id="4aa277e1e0fdb">
40>100
</run>

<run id="4aa277e1e17b8">
100>40
</run>

<run id="4aa277e1e1f7a">
int x = 30;
x==30;
</run>

<run id="4aa277e1e274d">
boolean test=(30==30);
test
</run>

'''Übung'''
Experimentiere ein bisschen mit diesen logischen Ausdrücken


'''Übung'''
Schreibe ein Programm was zwei Ganzzahlen auf Gleichheit prüft und '''true''' bei Gleichheit und '''false''' bei Ungleichheit zurückgibt.

Nenne dein Programm '''istgleich'''

<code id="4aa277e1d95d3"></code>
<run id="4aa639d8b54a9"/>
<check>return (istgleich(12,12) && !istgleich(15,16));</check>

== Komplexe Ausdrücke ==
Logisches UND
<run id="4aa277e1e2f1d">
30==40 && 20<30
</run>

Logisches NICHT
<run id="4aa277e1e36eb">
  !true
</run>

Logisches ODER
'''Übung'''
Schreibe einen Ausdruck mit der oder Verknüpfung ('''||''')
<run id="4aa277e1e3ecb"/>




'''Ü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 id="4aa277e1d9da3">boolean ergebniss1() { 
//return ...; 
}</code>
<check>return ergebniss1()==false;</check>


'''Übung'''
Was ist die Lösung von: <math>4 > 3 \vee 10==100</math>

<code id="4aa277e1da59b">boolean ergebniss2() { 
//return ...; 
}
</code>
<check>return ergebniss2()==true;</check>


'''Übung'''
Was ist die Lösung von: <math>\neg(2==3)</math>

<code id="4aa277e1dadca">boolean ergebniss3() { 
//return ...; 
}</code>
<check>return ergebniss3()==true;</check>


'''Übung'''
Implementiere die Funktion: x > 3<br/>
Nenne diese: '''ergebniss4'''
<code id="4aa277e1db59d"></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 id="4aa277e1dbd69"></code>
<run id="4aaa5b1db01ab"/>
<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 id="4aa277e1dc53f"></code>
<run id="4aaa5b1db2141"/>
<check>return (ergebniss6(4)==false && ergebniss6(2)==false && ergebniss6(3.5)==false);</check>


= Konditionale bzw. bedingte Anweisungen =
<code id="4aa277e1dd15f">
  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>
<run id="4aa277e1e4690">
  hallo(2);
</run>

'''Übung'''
Gehe kurz diesen Quelltext durch, versuch ihn zu verstehen und bei Fragen meld dich!

'''Übung'''
In der Vorlesung haben als Beispiel das schöne Wetter und Eltern nicht zu Hause erarbeitet. Schreib das mal als Prozedur :-)

<code id="4aa277e1ddd14"/>
<run id="4aa277e1e4e59"/>

'''Ü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 id="4aa277e1de4f0"/>
<run id="4aa277e1e562c"/>
<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 id="4aa277e1decca"/>
<run id="4aa277e1e5df9"/>
<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 id="4aa639d8b402a"/>
<run id="4aa639d8b6060"/>
<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 id="4aa639d8b47fd"/>
<run id="4aa639d8b6c1b"/>
<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 id="4aa277e1df86c"/>
<run id="4aa277e1e65de"/>
<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 id="4aa277e1e0423"/>
<run id="4aa639d8b77ce"/>


<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 id="4aa5591fa2cf5"/>
<run id="4aa5591fa3c3b"/>
<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 id="4aa5591fa3469"/>
<run id="4aa5591fa4410"/>
<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>