Programmiertechnik 1 FOR-SCHLEIFEN

Ähnliche Dokumente
Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Einführung in die Java- Programmierung

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

RO-Tutorien 3 / 6 / 12

Grundlagen der Programmierung

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Primitive Datentypen

3. Anweisungen und Kontrollstrukturen

Einführung in die Programmierung Wintersemester 2011/12

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Webbasierte Programmierung

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Übungen Programmieren 1 Felix Rohrer. Übungen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Informatik B von Adrian Neumann

Programmieren in C/C++ und MATLAB

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

2.5 Programmstrukturen Entscheidung / Alternative

Schleifenanweisungen

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

Schleifen in C/C++/Java

Objektorientierte Programmierung OOP Programmieren mit Java

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Übersicht Programmablaufsteuerung

Tabellenkalkulation mit Microsoft Excel -Teil 3-

Einführung in die C++ Programmierung für Ingenieure

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Einstieg in die Informatik mit Java

Kleine Anekdote. Schleifen in C

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

GI Vektoren

Einfache Rechenstrukturen und Kontrollfluss II

Programmieren I + II Regeln der Code-Formatierung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Die Programmiersprache C Eine Einführung

Erwin Grüner

Annehmende Schleife do while

Vorlesung Programmieren

Informatik I Übung, Woche 40

Grundlagen der Programmierung

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Tutorium Rechnerorganisation

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

INE1 Wiederholungen while, do...while, for

C- Kurs 04 Anweisungen

Theoretische Informatik SS 03 Übung 3

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Entwurf von Algorithmen - Kontrollstrukturen

Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

BKTM - Programmieren leicht gemacht.

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Einführung in die Programmierung

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Programmierkurs Java

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Arbeiten mit JavaKara

Variablen und Datentypen

Angewandte Mathematik und Programmierung

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Tutorium für Fortgeschrittene

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Übung zur Vorlesung Multimedia im Netz

5. Tutorium zu Programmieren

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Programmierkurs Java

Dr. Monika Meiler. Inhalt

Flussdiagramm / Programmablaufplan (PAP)

Objektorientierte Programmierung

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

JavaScript und PHP-Merkhilfe

LOGISCHE FUNKTIONEN...

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Kontrollstrukturen - Universität Köln

Steuerungsstrukturen. Ablaufsteuerung der PL/SQL Ausführung. IF Anweisungen. Einfaches IF

Kurze Einführung in die Programmiersprache C++ und in Root

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

4 Schleifen -= Entstanden unter Excel 2003 =-

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

1 Dreiecksfläche. Für das Dreieck A( 1, 0), B(0, 2), C(1, 0) berechnet das Programm zum Beispiel2 diefläche2.0:

Arbeitsblatt I. 5. Welche Arten von Fehlern könnten bei der Eingabe noch auftreten?

6. Iteration (Schleifenanweisungen)

Fallunterscheidung: if-statement

Kontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

5. Elementare Befehle und Struktogramme

Transkript:

Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen (IF, ELSE, SWITCH) aufgelistet: 1 FOR-Schleifen 1.1 FOR-Schleifen in Reihe Q: Wie oft wird insgesamt das * Zeichen für beide FOR-Schleifen zusammen ausgegeben? 1 i n t i ; 2 f o r ( i = 0 ; i < 5 ; i ++) {} 3 System. out. p r i n t ( ) ; 4 } 5 f o r ( i = 0 ; i < 7 ; i ++) {} 6 System. out. p r i n t ( ) ; 7 } 12 Listing 1: FOR-Schleifen in Reihe Q: Geben Sie eine allgemeingültige Formel zur Berechnung der totalen Anzahl von Durchläufen für aufeinanderfolgende Schleifen an. (Verwenden Sie dabei die variablen N und M zur Darstellung der oberen Grenzen beider Schleifen.) N + M Version 2.0 2. März 2011 1

Programmiertechnik 1 FOR-SCHLEIFEN 1.2 FOR-Schleifen verschachtelt Q: Wie oft wird hier das * Zeichen ausgegeben? 1 i n t i, j ; 2 f o r ( i = 0 ; i < 5 ; i ++) { 3 f o r ( j = 0 ; j < 3 ; j ++) {} 4 System. out. p r i n t ( ) ; 5 } 6 } 15 Listing 2: FOR-Schleifen verschachtelt (1) Q: Definieren Sie auch hier eine allgemeingültige Formel zur Berechnung der Anzahl von Durchläufen bei verschachtelten Schleifen. N * M 1 i n t i, j ; 2 f o r ( i = 0 ; i <= 5 ; i ++) { 3 f o r ( j = 0 ; j< 3 ; j ++) { 4 System. out. p r i n t ( ) ; 5 } 6 } Listing 3: FOR-Schleifen verschachtelt (2) Q: Wie verhält es sich bei diesem Beispiel mit der Anzahl der * Zeichen? 18 Version 2.0 2. März 2011 2

Programmiertechnik 1 FOR-SCHLEIFEN 1.3 FOR-Schleifen mit abhängigem Index Bei dem nächsten Beispiel handelt es sich um eine zweifach verschachtelte FOR- Schleife. Bei diesen Schleifen ist die Anzahl der inneren Schleifendurchläufe von dem jeweiligen Wert der äusseren Laufvariable i abhängig. Q: Wie oft wird hierbei das Zeichen * ausgegeben? 1 i n t i, j ; 2 f o r ( i = 0 ; i < 5 ; i ++) { 3 f o r ( j = 0 ; j < i ; j ++) { 4 System. out. p r i n t ( ) ; 5 } 6 } 7 System. out. p r i n t ( \ n ) ; 10 Listing 4: FOR-Schleifen mit abhängigem Index Q: Wie lautet bei diesem Beispiel die allgemeingültige Form? (N (N 1))/2 1.4 FOR-Schleifen reverse generieren Beispiel 1: Q: Gegeben ist die Ausgabe im Listing 5. Überlegen Sie sich wie ein entsprechendes Programm aussieht, das diese Tannenbaum Ausgabe produziert. 1 2 3 4 5 Listing 5: Reverse Beispiel 1 Version 2.0 2. März 2011 3

Programmiertechnik 1 FOR-SCHLEIFEN 1 i n t h e i g h t = 5 ; 2 f o r ( i n t h = 0 ; h < h e i g h t ; h++) { 3 f o r ( i n t i = h e i g h t ; i < h e i g h t ; i ++) { 4 i f ( i < h i > h ) { 5 System. out. p r i n t ( ) ; 6 } e l s e { 7 System. out. p r i n t ( ) ; 8 } 9 } 10 System. out. p r i n t l n ( ) ; 11 } Listing 6: Loesung Beispiel 1 Beispiel 2: Q: Gesucht ist wieder ein Programm zu der Ausgabe im Listing 7. (Tipp: Zählen sie zunächst die Anzahl der * Zeichen und suchen Sie einen Zusammenhang.) 1 2 3 4 5 6 7 Listing 7: Reverse Beispiel 2 1 f o r ( i n t i = 3; i <=3; i ++) { 2 i n t square = i i ; 3 f o r ( i n t j = 0 ; j < square ; j++) { 4 System. out. p r i n t ( ) ; 5 } 6 System. out. p r i n t l n ( ) ; 7 } Listing 8: Loesung Beispiel 2 Version 2.0 2. März 2011 4

Programmiertechnik 2 WHILE-SCHLEIFEN 2 WHILE-Schleifen 2.1 WHILE-Schleifen analysieren Q: Wie oft wird die Schleife in dem Beispiel durchlaufen? 1 i n t i = 1 ; 2 while ( i <= 4 ) {} 3 System. out. p r i n t l n ( i + t e r S c h l e i f e n d u r c h g a n g ) ; 4 i += 1 ; 5 } 4 Listing 9: Einfache WHILE-Schleife Q: Welchen Wert hat i bei der ersten bzw. der letzten Ausgabe? 1 / 4 2.2 Inkrement und Dekrement Operator Q: Der Inkrement (++) oder Dekrement (- -) Operator kann sowohl vor als auch nach einer Variablen stehen. Welche Auswirkungen hat dies bei einem Vergleich wie beispielsweise im Kopf einer WHILE-Schleife? Steht die Anweisung vor der Variablen, so handelt es sich um ein Praeinkrement bzw. Praedekrement. Die Anweisung wird dabei vor dem Vergleich durchgeführt. Steht der Operator nach der Variablen handelt es sich hingegen um ein Post In- bzw. Dekrement. Die Anweisung wird hierbei erst nach dem Vergleich ausgeführt. Q: Wie oft wird demnach die folgende Schleife durchlaufen? 1 i n t i = 0 ; 2 while ( i++ <= 4 ) { 3 System. out. p r i n t l n ( i + t e r S c h l e i f e n d u r c h g a n g ) ; 4 } 5 Listing 10: WHILE-Schleife mit Inkrement Operator Q: Welchen Wert hat i bei der ersten bzw. der letzten Ausgabe? Warum ist das so? Version 2.0 2. März 2011 5

Programmiertechnik 2 WHILE-SCHLEIFEN 1 / 5 (Da die Variable nach dem Vergleich erhöht wird überschreitet sie die obere Grenze.) Q: Ändern Sie den linken Teil der Bedingung so ab das nur die Werte 1-4 ausgegeben werden. 1 i n t i = 0 ; 2 while ( ++i <= 4 ) { 3 System. out. p r i n t l n ( i + t e r S c h l e i f e n d u r c h g a n g ) ; 4 } Listing 11: Loesung WHILE-Schleife mit Inkrement 2.3 Transformation von FOR-Schleifen Q: Ändern Sie das Beispiel in eine WHILE-Schleife mit der selben Funktionalität um. 1 f o r ( i =6; i >0; i =2){ 2 System. out. p r i n t l n ( i ) ; 3 } 1 i n t i = 6 ; 2 while ( i > 0 ) { 3 System. out. p r i n t l n ( i ) ; 4 i =2; 5 } Listing 12: WHILE-Schleifen Beispiel Listing 13: Loesung WHILE-Schleifen Beispiel Version 2.0 2. März 2011 6

Programmiertechnik 2 WHILE-SCHLEIFEN 2.4 WHILE-Schleifen Reverse generieren Q: Schreiben Sie ein Programm mit geschachtelten WHILE-Schleifen, welches die im Listing 14 dargestellte Ausgabe produziert. 1 1 1 1 1 2 2 4 16 256 3 3 9 81 6561 1 i n t i = 0 ; Listing 14: Reverse Beispiel (WHILE) 2 while ( ++i <= 3 ) { 3 i n t j = 0 ; 4 i n t square = i ; 5 while ( j++ < 4 ) { 6 System. out. p r i n t ( square + ) ; 7 square = square ; 8 } 9 System. out. p r i n t l n ( ) ; 10 } Listing 15: Loesung Reverse Beispiel (WHILE) Version 2.0 2. März 2011 7

Programmiertechnik 3 DO-SCHLEIFEN 3 DO-Schleifen Q: Vergleichen wir eine WHILE und eine DO Schleife. In beiden Schleifen wird genau das selbe gemacht. Beschreiben Sie kurz den grundsätzlichen Unterschied zwischen den beiden Schleifenarten. Bei einer DO-Schleife wird die Bedingung erst am Ende des Code-Kontextes überprüft. Der Code wird also in jedem Fall mindestens einmal ausgeführt. Bei einer WHILE-Schleife kann dies durch die Bedingung zu Beginn verhindert werden. 3.1 DO-Schleifen analysieren Q: Welche Ausgabe erzeugt das folgende Programm? Ist es eine Endlosschleife? 1 i n t i = 1 0 ; 2 do { 3 System. out. p r i n t l n ( i ) ; 4 i = 5 ; 5 } while ( i < 5 ) ; 10 / NEIN Listing 16: DO-Schleifen Beispiel 3.2 Transformation von WHILE-Schleifen Das Programm in Listing 17 überprüft, ob eine eingegebene Zahl durch 3 teilbar ist. Q: Optimieren Sie das Programm mit Hilfe einer DO-Schleife. 1 i n t r e s t, eingabe ; 2 S t r i n g f r a g e = Geben S i e e i n e durch 3 t e i l b a r e Zahl e i n : ; 3 eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 4 r e s t = eingabe % 3 ; 5 while ( r e s t!= 0 ) { 6 System. out. p r i n t l n ( S c h l e i f e n d u r c h l a u f ) ; 7 eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 8 r e s t = eingabe % 3 ; 9 } 10 System. out. p r i n t l n ( eingabe + i s t durch 3 t e i l b a r ) ; Listing 17: Schlechte WHILE-Schleife Version 2.0 2. März 2011 8

Programmiertechnik 3 DO-SCHLEIFEN 1 i n t r e s t, eingabe ; 2 S t r i n g f r a g e = Geben S i e e i n e durch 3 t e i l b a r e Zahl e i n : ; 3 4 do { 5 System. out. p r i n t l n ( S c h l e i f e n d u r c h l a u f ) ; 6 eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 7 r e s t = eingabe % 3 ; 8 } while ( r e s t!= 0 ) ; 9 System. out. p r i n t l n ( eingabe + i s t durch 3 t e i l b a r ) ; Listing 18: Loesung Schlechte WHILE-Schleife Version 2.0 2. März 2011 9

Programmiertechnik 4 IF-ANWEISUNGEN 4 IF-Anweisungen Aufgaben zu Bedingungen in IF-Anweisungen gibt es bereits im Aufgabenteil zu logischen Ausdrücken. Daher wollen wir uns im Folgenden näher mit den Verzweigungen von IF-Anweisungen mit Hilfe des ELSE Statements beschäftigen. In einem Programm sollen in Abhängigkeit einer Variablen personenanzahl unterschiedliche Ausgaben produziert werden. Q: Entwerfen Sie ein Programm, welches ab einer Gruppengröße von über 10 Personen eine Ausgabe macht, mit den Worten: Die maximale Gruppengröße von 10 Personen ist erreicht! Den Wert der Gruppengröße enthält die Variable personenanzahl. Fragen Sie den Benutzer über das bekannte Dialogfenster nach der Gruppengröße. 1 S t r i n g f r a g e = Geben S i e d i e Gruppengroesse an : ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 i f ( eingabe > 10 ) { 4 System. out. p r i n t l n ( Die maximale Gruppengroesse von 10 Personen i s t e r r e i c h t! ) ; 5 } Listing 19: Loesung IF-Anweisung 1 Q: Erweitern Sie das Programm nun so, dass es ansonsten die Nachricht: Gruppengröße OK ausgibt. 1 S t r i n g f r a g e = Geben S i e d i e Gruppengroesse an : ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 i f ( eingabe > 10 ) { 4 System. out. p r i n t l n ( Die maximale Gruppengroesse von 10 Personen i s t e r r e i c h t! ) ; 5 } e l s e { 6 System. out. p r i n t l n ( Gruppengroesse OK. ) ; 7 } Listing 20: Loesung IF-Anweisung 2 Version 2.0 2. März 2011 10

Programmiertechnik 4 IF-ANWEISUNGEN Q: Erweitern Sie das Programm abermals um eine Bedingung. Überprüfen Sie zunächst, ob die eingegebene Gruppengröße überhaupt gültig ist. Gültig ist sie nur dann, wenn sie im Zahlenraum N + liegt. Machen Sie im Fehlerfall eine entsprechende Ausgabe. 1 S t r i n g f r a g e = Geben S i e d i e Gruppengroesse an : ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 i f ( eingabe > 0 ) { 4 i f ( eingabe > 10 ) { 5 System. out. p r i n t l n ( Die maximale Gruppengroesse von 10 Personen i s t e r r e i c h t! ) ; 6 } e l s e { 7 System. out. p r i n t l n ( Gruppengroesse OK. ) ; 8 } 9 } e l s e { 10 System. out. p r i n t l n ( Ungueltige Gruppengroesse! ) ; 11 } Listing 21: Loesung IF-Anweisung 3 Version 2.0 2. März 2011 11

Programmiertechnik 5 SWITCH-ANWEISUNGEN 5 SWITCH-Anweisungen 5.1 SWITCH-Anweisung Beispiel Gegeben ist das Programm unten mit einer SWITCH-Anweisung. Der Benutzer wird nach einer Eingabe gefragt und je nach dem erfolgt eine andere Ausgabe. Q: In der Tabelle unten sind verschiedene Eingaben beispielhaft vorgegeben. Welche Ausgaben werden jeweils von dem Programm erzeugt? Schreiben Sie die Ausgabe in die Zelle unter der Beispieleingabe. Eingabe: 1 2 3 4 5 Ausgabe: Rest 2 3 4 Rest 1 S t r i n g f r a g e = Geben S i e e i n e Zahl zwischen 1 und 5 e i n ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 switch ( eingabe ) { 4 c a s e 2 : System. out. p r i n t ( 2 ) ; 5 break ; 6 c a s e 3 : System. out. p r i n t ( 3 ) ; 7 break ; 8 c a s e 4 : System. out. p r i n t ( 4 ) ; 9 break ; 10 d e f a u l t : System. out. p r i n t ( Rest ) ; 11 } 12 System. out. p r i n t ( \n ) ; Listing 22: SWITSCH Beispiel (1) Das Programm aus Listing 22 wird nun etwas abgeändert. Ein paar break Anweisungen wurden entfernt. Das geänderte Programm ist im Listing 23 zu sehen. Q: Wieder sind die Beispieleingaben vorgegeben und die Ausgaben dazu gefragt. Füllen Sie die Tabelle entsprechend aus. Eingabe: 1 2 3 4 5 Ausgabe: Rest 23 3 4Rest Rest Version 2.0 2. März 2011 12

Programmiertechnik 5 SWITCH-ANWEISUNGEN 1 S t r i n g f r a g e = Geben S i e e i n e Zahl zwischen 1 und 5 e i n ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 switch ( eingabe ) { 4 c a s e 2 : System. out. p r i n t ( 2 ) ; 5 c a s e 3 : System. out. p r i n t ( 3 ) ; 6 break ; 7 c a s e 4 : System. out. p r i n t ( 4 ) ; 8 d e f a u l t : System. out. p r i n t ( Rest ) ; 9 } 10 System. out. p r i n t ( \n ) ; Listing 23: SWITSCH Beispiel (2) 5.2 Römische Ziffern mit SWITCH-Anweisung Q: Erstellen Sie ein Programm, das eine römische Ziffern in arabische Zahlen transformiert. Dabei gilt die folgende Zuordnung: Römisch Arabisch I 1 V 5 X 10 L 50 C 100 Verwenden Sie dazu eine SWITCH-Anweisung und nutzen Sie den folgenden Programmcode zum Einlesen eines Zeichens. 1 import java. lang. S t r i n g ; 2... 3 S t r i n g f r a g e = Eine roemische Z i f f e r b i t t e : ; 4 S t r i n g eingabe = GraphicIO. r e a d S t r i n g ( f r a g e ) ; 5 char z i f f e r = eingabe. charat ( 0 ) ; 6... Listing 24: Code zum Einlesen eines Zeichens Version 2.0 2. März 2011 13

Programmiertechnik 5 SWITCH-ANWEISUNGEN 1 S t r i n g f r a g e = Eine roemische Z i f f e r b i t t e : ; 2 S t r i n g eingabe = GraphicIO. r e a d S t r i n g ( f r a g e ) ; 3 char z i f f e r = eingabe. charat ( 0 ) ; 4 i n t arab = 0 ; 5 switch ( z i f f e r ) { 6 c a s e I : arab = 1 ; break ; 7 c a s e V : arab = 5 ; break ; 8 c a s e X : arab = 1 0 ; break ; 9 c a s e L : arab = 5 0 ; break ; 10 c a s e C : arab = 1 0 0 ; break ; 11 } 12 System. out. p r i n t l n ( arab ) ; Listing 25: Loesung Roemische Ziffern 1 Q: Ändern Sie das Programm nun so ab, dass nicht nur Grossbuchstaben, sondern auch Kleinbuchstaben erkannt werden. Jedoch nicht indem Sie den eingegebenen Buchstaben in einen grossen umwandeln, sondern mit Anpassungen in der SWITCH-Anweisung. 1 S t r i n g f r a g e = Eine roemische Z i f f e r b i t t e : ; 2 S t r i n g eingabe = GraphicIO. r e a d S t r i n g ( f r a g e ) ; 3 char z i f f e r = eingabe. charat ( 0 ) ; 4 i n t arab = 0 ; 5 switch ( z i f f e r ) { 6 c a s e i : 7 c a s e I : arab = 1 ; break ; 8 c a s e v : 9 c a s e V : arab = 5 ; break ; 10 c a s e x : 11 c a s e X : arab = 1 0 ; break ; 12 c a s e l : 13 c a s e L : arab = 5 0 ; break ; 14 c a s e c : 15 c a s e C : arab = 1 0 0 ; break ; 16 } 17 System. out. p r i n t l n ( arab ) ; Listing 26: Loesung Roemische Ziffern 2 Version 2.0 2. März 2011 14

Programmiertechnik 5 SWITCH-ANWEISUNGEN 5.3 Rundung mit SWITCH-Anweisung Gesucht ist wieder ein Programm, welches mit Hilfe einer SWITCH-Anweisung die gegebene Aufgabenstellung löst. Q: Schreiben Sie ein Programm, welches eine eingegebene positive Zahl auf die Dezimalstelle rundet. Eingaben wie 11,12 oder 14 sollen die Zahl 10 liefern. Eingaben wie 25,27 oder 29 werden hingegen auf 30 aufgerundet. Bei Zahlen wie 10, 20 oder 500 ist keine Rundung nötig. Verwenden Sie lediglich eine SWITCH- Anweisung. Fassen Sie dabei mehrere Fälle geschickt zusammen. (HINWEIS: Es gibt eine optimale Lösungen mit nur einem break Statement) 1 S t r i n g f r a g e = Geben S i e e i n e p o s i t i v e Zahl e i n : ; 2 i n t eingabe = GraphicIO. r e a d I n t e g e r ( f r a g e ) ; 3 i n t gerundet = eingabe ; 4 i n t r e s t = eingabe %10; 5 switch ( r e s t ) { 6 c a s e 5 : 7 c a s e 6 : 8 c a s e 7 : 9 c a s e 8 : 10 c a s e 9 : gerundet += (10 r e s t ) ; break ; 11 d e f a u l t : gerundet = r e s t ; 12 } 13 System. out. p r i n t l n ( gerundet ) ; Listing 27: Loesung Rundung Version 2.0 2. März 2011 15