173 lines
3.9 KiB
Markdown
173 lines
3.9 KiB
Markdown
<!--
|
|
title: Kontrollstrukturen
|
|
description: Folien für Kontrollstrukturen in Programmieren 1
|
|
url: https://git.henriburau.de/tutorien/programmieren-1
|
|
header: Programmieren 1 **Tutorium**
|
|
footer: Henri Burau und Eva Meinen
|
|
-->
|
|
|
|
# Kontrollstrukturen
|
|
|
|
## **Sequenz**
|
|
Alle Statements in einem Quelltext werden der Reihe nach ausgeführt.
|
|
|
|
**Statements** Durch `;` getrennter Quelltext
|
|
|
|
|
|
```java
|
|
int x = 10; //1. Statement
|
|
int x = 123 + x; //2. Statement
|
|
```
|
|
|
|
---
|
|
|
|
## **Selektion**
|
|
Es wird selektiert welche Statements ausgeführt werden.
|
|
|
|
### if
|
|
```java
|
|
int i = 3;
|
|
if(i > 5) {
|
|
System.out.printf("i ist größer als 5");
|
|
}
|
|
|
|
```
|
|
|
|

|
|
|
|
---
|
|
|
|
### else
|
|
```java
|
|
int i = 3;
|
|
if(i > 5) {
|
|
System.out.printf("i ist größer 5");
|
|
} else {
|
|
System.out.printf("i ist kleiner oder gleich 5");
|
|
}
|
|
```
|
|

|
|
|
|
---
|
|
|
|
### else if
|
|
```java
|
|
int i = 3;
|
|
if(i > 5) {
|
|
System.out.printf("i ist größer 5");
|
|
} else if(i == 5) {
|
|
System.out.printf("i ist gleich 5");
|
|
} else {
|
|
System.out.printf("i ist kleiner 5");
|
|
}
|
|
```
|
|
|
|

|
|
|
|
---
|
|
|
|
### switch
|
|
|
|
```java
|
|
String wochentag = "Samstag";
|
|
|
|
switch(wochentag) {
|
|
case "Montag":
|
|
case "Dienstag":
|
|
case "Mittwoch":
|
|
case "Donnerstag":
|
|
case "Freitag":
|
|
System.out.printf("Es ist in der Woche");
|
|
break;
|
|
case "Samstag":
|
|
case "Sonntag":
|
|
System.out.printf("Es ist Wochenende 🎉");
|
|
break;
|
|
default:
|
|
System.out.printf("Diesen Tag gibt es nicht");
|
|
break;
|
|
}
|
|
|
|
```
|
|
|
|
---
|
|
|
|
## **Iteration**
|
|
Es können Statements wiederholt werden. Iterative Kontrollstrukturen werden
|
|
Schleifen genannt. Schleifen können folgende Eigenschaften haben:
|
|
|
|
* **Kopfgesteuert** Die Bedingung der Schleife wird im Kopf überprüft.
|
|
* **Fußgesteuert** Die Bedingung der Schleife wird im Fuß überprüft.
|
|
* **Abweisend** Die Schleife wird nicht durchlaufen.
|
|
* **Positiv bedingt** Die Schleife wird durchgeführt solange die Bedingung wahr ist.
|
|
* **Negativ bedingt** Die Schleife wird durchgeführt solange die Bedingung falsch ist.
|
|
|
|
|
|
|
|
---
|
|
|
|
### for
|
|
|
|
* **Kopfgesteuert**
|
|
* **Positiv bedingt**
|
|
|
|
```java
|
|
for(int i = 0; i < 10; i++) {
|
|
System.out.printf("%d%n", i);
|
|
}
|
|
|
|
// Oder in der kurzen Schreibweise:
|
|
for(int i = 0; i < 10; i++) System.out.printf("%d%n", i);
|
|
```
|
|

|
|
|
|
---
|
|
|
|
### while
|
|
|
|
* **Kopfgesteuert**
|
|
* **Positiv bedingt**
|
|
|
|
```java
|
|
int i = 0;
|
|
while(i < 10) {
|
|
System.out.printf("%d%n", i);
|
|
i++;
|
|
}
|
|
```
|
|
|
|

|
|
|
|
---
|
|
|
|
### do-while
|
|
|
|
* **Fußgesteuert**
|
|
* **Positiv bedingt**
|
|
|
|
```java
|
|
int i = 0;
|
|
do {
|
|
System.out.printf("%d%n", i);
|
|
i++;
|
|
} while(i < 10)
|
|
```
|
|
|
|

|
|
|
|
---
|
|
|
|
## **Aufgaben**
|
|
|
|
1) Schreibe eine Methode `public static void divide(double quotient, double dividend)` welche das Ergebnis der Division auf die Konsole ausgibt. Achte darauf, dass nicht durch 0 geteilt wird und gebe eine Warnung über die Nulldivision auf der Konsole aus.
|
|
|
|
2) Schreibe eine Methode `public static void calculator(char operator, int number1, int number2)` welche das Ergebnis der Operation auf der Konsole ausgibt. Die durchgeführte Operation hängt von dem Wert der Variable `operator` ab.
|
|
Bsp: `calculator('*', 3, 4)` schreibt auf die Konsole: `3 * 4 = 12`
|
|
|
|
---
|
|
|
|
3) Schreibe eine Methode `public static void gcd(int a, int b)` welche den größten gemeinsamen Teiler (engl. greatest common divisor oder gcd) von zwei Zahlen berechnet. Benutze dafür den Algorithmus von [Euklid](https://de.wikipedia.org/wiki/Euklidischer_Algorithmus#Iterative_Variante).
|
|
|
|
4) Schreibe eine Methode `public static void printAscii()` welche die Ascii-Werte der Zahlen von 0 bis 122 ausgibt.
|
|
|