Mein erstes Programm

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

== Mein erstes Programm ==

Heute lernen Sie nicht nur die ProgrammingWiki-Erweiterung kennen, sondern schreiben auch gleich ihr vielleicht erstes Java-Programm. Das Programm soll die Phasen einer Verkehrsampel steuern. Zu diesem Zweck wurden zwei Funktionen vorgegeben:

 ampel(rot,gelb,grün)
 warte(Millisekunden)

Die Funktion <tt>ampel</tt> verwendet drei Parameter für die einzelnen Lichter. Ein solcher Parameter kann hier jeweils den Wert <tt>true</tt> für an, oder <tt>false</tt> für aus annehmen. Die Funktion <tt>warte</tt> hingegen nimmt eine natürliche Zahl als Parameter. 

'''Aufgabe:''' Testen Sie zunächst die Vorgabe im nachfolgenden Eingabebereich durch einen Klick auf ''ausführen''. Verändern Sie anschließend das Programm so, dass eine vollständige Ampelphase mit der noch fehlenden Gelbfärbung entsteht. 
<code id="4b94cb11b2cd9" hidden>
void warte(int ms) {
 try{
   Thread.sleep(ms);
 } catch(Exception e) {}
}
void ampel(Boolean r, Boolean o, Boolean g){
     String img = "";
     if( r &&  o &&  g) img = "http://www.michael-hielscher.de/wiki/images/9/99/Ampel_111.png";
     if(!r &&  o &&  g) img = "http://www.michael-hielscher.de/wiki/images/a/ab/Ampel_011.png";
     if( r && !o &&  g) img = "http://www.michael-hielscher.de/wiki/images/6/6d/Ampel_101.png";
     if( r &&  o && !g) img = "http://www.michael-hielscher.de/wiki/images/c/ca/Ampel_110.png";
     if( r && !o && !g) img = "http://www.michael-hielscher.de/wiki/images/2/20/Ampel_100.png";
     if(!r &&  o && !g) img = "http://www.michael-hielscher.de/wiki/images/0/01/Ampel_010.png";
     if(!r && !o &&  g) img = "http://www.michael-hielscher.de/wiki/images/8/88/Ampel_001.png";
     if(!r && !o && !g) img = "http://www.michael-hielscher.de/wiki/images/d/dc/Ampel_000.png";
     canvas.drawImage(0,0,100,150,img);
}
</code>

{| width="95%"
|-
| valign="top" width="120" | <canvas w=100 h=150></canvas> ||
<eval id="4b94cb11b3c75">
ampel(true,false,false); 
warte(3000);
ampel(false,false,true); 
warte(3000); 
ampel(true,false,false); 
</eval>
|}

'''Zusatzaufgabe:''' Bei einer echten Ampel gibt es die Kombination Rot-Gelb die jedoch etwas kürzer angezeigt wird. Versuchen Sie durch eine geeignete Wahl der Wartezeit eine möglichst realistische Ampelphase zu entwickeln.