Programmiertechnik 1 FOR-SCHLEIFEN

Ähnliche Dokumente
Programmiertechnik 1 FOR-SCHLEIFEN

Kontrollstrukturen und Logik

Kontrollstrukturen und Logik

Intensivübung zu Algorithmen und Datenstrukturen

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Javakurs für Anfänger

Wiederholungen / Schleifen

Schleifen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 45

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Kontrollstrukturen -- Schleifen und Wiederholungen

Java Anweisungen und Ablaufsteuerung

Übungspaket 12 Der Datentyp char

Ausdrücke und Anweisungen Übungen

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

Programmierkurs Java

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Grundlegende Programmstrukturen sind Sequenzen, Schleifen und Entscheidungen.

Informatik Praktikum 5

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 2. Blatt Für die Woche vom 3.5. bis zum 7.5.

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

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

RO-Tutorien 3 / 6 / 12

Java Ablaufsteuerung (Beispiele)

Programmieren in C (Übungsblatt 1)

Kontrollstrukturen und Logik

Bei der Und-Verknüpfung müssen beide Ausdrücke wahr sein, dass der gesamte Ausdruck wahr wird. a=1; b=2; a=1; b=3; else. endif

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Javakurs für Anfänger

Programmieren in C (Übungsblatt 1)

Programmieren in C (Übungsblatt 1)

Primzahlen und Programmieren

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Eine kleine Befehlssammlung für Java Teil1

3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java)

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

3. Anweisungen und Kontrollstrukturen

Vorkurs Informatik WiSe 16/17

2 Teil 2: Nassi-Schneiderman

99 - Struktogramme - 2. Sequenz I

Einstieg in die Informatik mit Java

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

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

3. Grundanweisungen in Java

Aufgabenblatt 1. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Einstieg in die Informatik mit Java

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

hue12 January 24, 2017

Informatik B von Adrian Neumann

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

RO-Tutorien 15 und 16

Tag 2 Repetitorium Informatik (Java)

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

Einführung in die Programmierung Wintersemester 2011/12

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Kapitel 3: Anweisungen

Primitive Datentypen

06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen

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

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Funktionales C++ zum Ersten

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

Schleifen in C/C++/Java

Erste Java-Programme (Scopes und Rekursion)

Übungspaket 12 Der Datentyp char

Vorkurs Informatik WiSe 17/18

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

RO-Tutorien 17 und 18

Brückenkurs Programmieren

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Grundlagen der Programmierung

Brückenkurs Programmieren

Einstieg in die Informatik mit Java

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

Einfache Bedingte Ausführung

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Herzlich willkommen!

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

if ( Logischer Operator ) { } else { Anweisungen false

Grundlagen der Programmierung

Webbasierte Programmierung

Programmiertechnik Kontrollstrukturen

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

Übungszettel 2a - Python

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

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 } 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.) 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 } 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. 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? 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 ) ; Listing 4: FOR-Schleifen mit abhängigem Index Q: Wie lautet bei diesem Beispiel die allgemeingültige Form? 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 Beispiel 2: Q: Gesucht ist wieder ein Programm zu der Ausgabe im Listing 6. (Tipp: Zählen sie zunächst die Anzahl der * Zeichen und suchen Sie einen Zusammenhang.) 1 2 3 4 5 6 7 Listing 6: Reverse 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 } Listing 7: Einfache WHILE-Schleife Q: Welchen Wert hat i bei der ersten bzw. der letzten Ausgabe? 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? 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 } Listing 8: WHILE-Schleife mit Inkrement Operator Version 2.0 2. März 2011 5

Programmiertechnik 2 WHILE-SCHLEIFEN Q: Welchen Wert hat i bei der ersten bzw. der letzten Ausgabe? Warum ist das so? Q: Ändern Sie den linken Teil der Bedingung so ab das nur die Werte 1-4 ausgegeben werden. 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 } Listing 9: 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 10 dargestellte Ausgabe produziert. 1 1 1 1 1 2 2 4 16 256 3 3 9 81 6561 Listing 10: 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. 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 ) ; Listing 11: DO-Schleifen Beispiel 3.2 Transformation von WHILE-Schleifen Das Programm in Listing 12 ü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 12: Schlechte WHILE-Schleife Version 2.0 2. März 2011 8

Programmiertechnik 3 DO-SCHLEIFEN 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. Q: Erweitern Sie das Programm nun so, dass es ansonsten die Nachricht: Gruppengröße OK ausgibt. 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. 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: 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 13: SWITSCH Beispiel (1) Das Programm aus Listing 13 wird nun etwas abgeändert. Ein paar break Anweisungen wurden entfernt. Das geänderte Programm ist im Listing 14 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: 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 14: 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 15: Code zum Einlesen eines Zeichens Version 2.0 2. März 2011 13

Programmiertechnik 5 SWITCH-ANWEISUNGEN 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. 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) Version 2.0 2. März 2011 15