2. Übungsaufgabe vom 31. 10. Logische Ausdrücke 1. true & false | true 2. (10>2) & (!true==false) 3. true==(4!=3) & !(3<=3) a) Notieren Sie die Ausdrücke 1.-3. in mathematischer Schreibweise; z.B.: ¬ true (32 true) b) Wie lauten die Wahrheitswerte der Ausdrücke 1.-3. ? Lösung zu a) 1. true false true 2. (10>2) (¬true=false) 3. true=(4 3) ¬(33) G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 1 2. Übungsaufgabe vom 31. 10. Logische Ausdrücke 1. true & false | true 2. (10>2) & (!true==false) 3. true==(4!=3) & !(3<=3) a) Notieren Sie die Ausdrücke 1.-3. in mathematischer Schreibweise; z.B.: ¬ true (32 true) b) Wie lauten die Wahrheitswerte der Ausdrücke 1.-3. ? Lösung zu a) zu b) 1. true false true true 2. (10>2) (¬true=false) true 3. true=(4 3) ¬(33) false G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 2 2. Übungsaufgabe vom 7. 11. Drehen Sie die Reihenfolge der Elemente eines Arrays mit Integerzahlen um und geben Sie das Ergebnis aus. Beispiel: gegeben: {4,12,67,90,-10,39,0,1} Ausgabe: {1,0,39,-10,90,67,12,4} a) unter Verwendung eines zweiten Arrays (Zielarray) b) innerhalb des selben Arrays Lösung: a) trivial G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 3 Lösung zu Aufgabe 2) a) public class Array1 extends Object { public static void main (String args[]) { int i; int[] anfangsarray = {4,12,67,90,-10,39,0,1}; int[] zielarray = new int[anfangsarray.length]; for (i=0; i<anfangsarray.length; i=i+1) zielarray [anfangsarray.length-1-i]=anfangsarray [i]; // Ausgabe des Zielarrays for (i=0; i<anfangsarray.length; i=i+1) { System.out.print(zielarray[i]); System.out.print(" "); } } } G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 4 2. Übungsaufgabe vom 7. 11. Drehen Sie die Reihenfolge der Elemente eines Arrays mit Integerzahlen um und geben Sie das Ergebnis aus. Beispiel: gegeben: {4,12,67,90,-10,39,0,1} Ausgabe: {1,0,39,-10,90,67,12,4} a) unter Verwendung eines zweiten Arrays (Zielarray) b) innerhalb des selben Arrays Lösung: a) trivial b) 1. Tauschen der Werte mittels Hilfsvariable 2. Vorsicht Falle: Schleife darf nur bis Arraygröße / 2 laufen, sonst wird der Array-Inhalt zweimal umgedreht!! G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 5 Lösung zu Aufgabe 2) b) public class Array2 extends Object { public static void main (String args[]) { int i, tausch; // tausch ist Hilfsvariable int[] array = {4,12,67,90,-10,39,0,1}; for (i=0; i < array.length/2; i=i+1) { tausch=array[i]; // "Dreieckstausch" array[i]=array[array.length-1-i]; array[array.length-1-i]=tausch; } // Ausgabe des Arrays for (i=0; i<array.length; i=i+1) { System.out.print(array[i]); System.out.print(" "); } } } G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 6 Entwicklung einfacher Programme 2. Programmentwurf 1. Problemanalyse Software-Entwicklung für einfache Probleme 4. Testen 3. Implementierung G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 7 Software-Entwicklung: Problemanalyse Was sind die Eingangsdaten? Was soll ausgegeben werden? Ein- und Ausgabe Wie werden aus den Eingabedaten die Ausgabedaten hergeleitet? Zerlegung in Teilprobleme Problemanalyse Formalisierung Randbedingungen Komplexität Software-Entwicklung für einfache Probleme G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 8 Software-Entwicklung: Programmentwurf Zerlegung in Einzelschritte Notation in Pseudo-Code als Ablaufdiagramm direkt in der Zielprogrammiersprache Datenstrukturen Programmentwurf Algorithmen Auswahl geeigneter Software-Entwicklung für einfache Probleme Roter Faden = Hauptprogramm für viele Teilprobleme gibt es bereits fertige Alg. + DS (siehe Vorlesung Diskrete Mathe) G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 9 Software-Entwicklung: Implementierung Software-Entwicklung für einfache Probleme Realisierung in einer konkreten Programmiersprache Auswahl geeigneter Datentypen Implementierung Berücksichtigung vorhandener Funktionsbibliotheken Schrittweise Umsetzung des Pseudo-Codes in der Ziel-Programmiersprache Dokumentation des Quelltextes nicht vergessen! G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 10 Software-Entwicklung: Testen Software-Entwicklung für einfache Probleme Korrektheit Terminierung Sicherung der Programmeigenschaften Falsche Ergebnisse Absturz (z.B. Durch Fehleingaben) typische Fehler Testen Endlossschleifen Testszenarien definieren Programm mit repräsentativen Eingabedaten starten und Ergebnisse überprüfen G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 11 Zerlegung in Einzelschritte in Pseudo-Code Was sind die Eingangsdaten? Was soll ausgegeben werden? Zerlegung in Teilprobleme Formalisierung Notation als Ablaufdiagramm direkt in der Zielprogrammiersprache Ein- und Ausgabe Datenstrukturen Programmentwurf Wie werden aus den Eingabedaten die Ausgabedaten hergeleitet? Problemanalyse Auswahl geeigneter Algorithmen für viele Teilprobleme gibt es bereits fertige Alg.+DS (siehe Vorlesung Diskrete Mathe) Roter Faden = Hauptprogramm Randbedingungen Komplexität Software-Entwicklung für einfache Probleme Korrektheit Terminierung falsche Ergebnisse Absturz (z.B. durch Fehleingaben) Endlossschleifen Sicherung der Programmeigenschaften typische Fehler Testen Testszenarien definieren Programm mit repräsentativen Eingabedaten starten und Ergebnisse überprüfen Implementierung Realisierung in einer konkreten Programmiersprache Auswahl geeigneter Datentypen Berücksichtigung vorhandener Funktionsbibliotheken Schrittweise Umsetzung des Pseudo-Codes in der Ziel-Programmiersprache erst ab hier erfolgt die Eingabe am Rechner Dokumentation des Quelltextes nicht vergessen G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 12 Übung im GIS-Labor • Schreiben Sie ein Programm, das die Summe der Zahlen von 1 bis n (n nist ein n ganzzahliger Wert) ( n 1) i berechnet. 2 i 1 • Hacker-Lösung: Schleife von 1 bis n und Aufsummieren der Zahlen • Einfache und elegantere Lösung: n Formalisierung: Wert i i 1 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 13