Java – Tutorium Programmierung mk12 – 1.1 Variablen



Java – Tutorium Programmierung mk12 – 1.1 Variablen

0 1


javatutorium

Some material for a java class I'm holding

On Github juwi / javatutorium

Java

Tutorium Programmierung mk12

Mittwoch 17:30 - 19:00 Raum 6.01.01

Erstellt von

Julian Wissmann / jwissman@Stefan Walesch / swalesch@

Inhalt

Grundprinzipien der Programmierung Variablen
  • Deklaration & Zuweisung
  • Ausgabe
  • Rechenoperationen
  • Arrays
Kontrollstrukturen
  • Bedingungen
  • if-else Verzweigung
  • switch-case Verzweigung
  • Schleifen
Funktionen
  • Deklaration & Definition

Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).

1.1 Variablen

Was ist eine Variable?

  • Ein Gedächtnis
  • Ein Speicherplatz    ⇒ benötigt Name und Typ
  • Muss vor dem benutzen bekannt sein    ⇒ muss deklariert werden
  • Variablen Werte zuordnen    ⇒ Definition oder Zuweisung

datentyp variablenName;
						
Variablendeklaration allgemein

int zahl;
float pi;
						

Variablendeklaration Beispiel

Variablendeklaratrion und Zuweisung

  • Möglichst aussagekräftie Bezeichnung
  • Zeichensatz a bis z, A bis Z, 0 bis 9 und _
  • Keine Sonderzeichen (z.B.: ? . , ; ä ö ü ß)
  • Kein Schlüsselwort (z.B.: if, else, for, while)
  • Unterscheidung zwischen Groß- und Kleinschreibung
  • Nicht mit Großbuchstaben beginnen
  • Nur Statische Variablen ALL CAPS schreiben
  • In Java left-hand-side-value

char frageZeichen = '?'; // character: ein Zeichen
int nummer = 42; // integer: Ganzzahl
float PI = 3.14159265; // floating point number: Gleitkommazahl
String dozentName = "Julian"; // String: Char-Array
boolean testErfolg = true; // Boolean: Wahrheitswert (true, false)
						
Beispiel

Ausgabe

// Ausgabe ohne Zeilenumbruch am Ende:
System.out.print(["String" + ]variable [+ "String"]);
// Ausgabe mit Zeilenumbruch am Ende:
System.out.println(["String" + ]variable [+ "String"]);
					
Ausgabe allgemein
System.out.println(“Hallo World“);
System.out.println(“Uhrzeit: “+time);
System.out.print(“Name: “ + name + “\nPLZ: “ + plz);
					
Ausgabe Beispiel

Mehr Informationen zu System.out in der Java Online Dokumentation

Rechenoperationen

+ Addition
- Subtraktion
* Multiplikation
/ Division (Wird bei Ganzzahlen abgerundet)
% Modulo (Rest der ganzzahligen Division)
						
Operatoren

  • Punkt- vor Strichrechnung
  • Klammerung normal möglich
  • Besonderheit bei Strings: + konkateniert diese
  • In System.out verwendbar    ⇒ Besonderheit: Ausdrücke klammern

int derSinnDesLebens= 8*5+2;
String vollerName = “Stefan“ + “Walesch“;

						
Beispiel

Aufgabe 1

Programmieren Sie zum Kennenlernen der Vorgestellten Konzepte ein Hello- World Programm.

Aufgabe 2

Erweitern Sie Ihr Hallo-World Programm zur Realisierung der Geschwindigkeitsberechnung. Definieren Sie dazu eine Strecke s=5, eine Zeit t=2 und eine Geschwindigkeit v=s/t. Verwenden Sie geeignete Datentypen. Lassen sie das Ergebnis Ausgeben.

Arrays

arrayName[index] = value;
/*index von 0 bis anzahl_der_elemente -1*/
						
Array Zugriff und Zuweisung
int personenImZugwagon[] = new int[3];
personenImZugwagon[0] = 12;
personenImZugwagon[1] = 15;
personenImZugwagon[3] = 3;
						
Beispiel
System.out.print(“Im 2. Wagon befinden sich: “
	+ personenImZugwagon[1] + “ Personen“);
						
Ausgabe

1.2 Kontrollstrukturen

Verzweigung

if(Bedingung){
	TrueBlock;
}else{ /* “else{...}“ ist optional */
	FalseBlock;
}
						
if-else Verzweigung allgemein
int zahl = Integer.parseInt(args[0]); //Parst von String zu Int
if ((zahl % 2) == 0){
	System.out.println(“Zahl ist gerade!“);
}else{
	System.out.println(“Zahl ist ungerade!“);
}
						
Beispiel

switch-case Verzweigung

switch (integer_variable){
	case nummer: //Sequenz
	break; //break optional
	default: //Default Sequenz
	break; //break optional
}
						
switch-case Verzweigung allgemein
int note = Integer.parseInt(args[0]);
switch ( note ) {
	case 1: System.out.println(“ sehr gut “); break ;
	case 2: System.out.println(“ gut ”); break ;
	case 3: System.out.println(“ befriedigend “); break ;
	case 4: System.out.println(“ ausreichend “); break ;
	default : System.out.println(“ nicht Bestanden“); break ;
}
						
Beispiel

Aufgabe 3

Werten Sie eine Zahl note unter Verwendung von if-else Verzweigungen aus. Dabei soll eins sehr gut, zwei gut, drei befriedigend, vier ausreichend sein bei und allen anderen Zahlen nicht Bestanden ausgegeben werden. Verschachteln Sie ihre Verzweigung derart, dass nach der Ausgabe nicht weiter Geprüft wird.

Schleifen

  • Zur Wiederholung von Anweisungen
  • Drei Schleifenarten
    • while: Kopfgesteuert
    • do-while: Fußgesteuert
    • for: Zählschleife
  • Schleifendurchlauf solange, bis Bedingung erfüllt ist oder ∞
  • Rekursion ist der Schleife sehr ähnliches, oft äquivalentes Konzept

Schleifen

int i = 1, summe=0;
while(i<11){
	summe=summe+i;
	i++;
}
System.out.println(“Summe von 1 bis 10 ist “ + summe);
						
while-Schleife
int i = 1, summe=0;
do{
	summe=summe+i;
	i++;
} while(i<11);
System.out.println(“Summe von 1 bis 10 ist “ + summe);
						
do-while Schleife
int summe=0;
for(int i =1;i<11;i++){
	summe=summe+i;
}
System.out.println(“Summe von 1 bis 10 ist “ + summe);
						
for Schleife

Aufgabe 4

Schreiben Sie eine Programm, welches über die Kommandozeile eine natürlich Zahl n einließt, die Summe von 1 bis n Berechnet und Ausgibt. Verwenden Sie dazu eine Schleife.

Übungskomplex 1

Übung 1

Schreiben Sie ein Programm, welches die Fakultät einer Ganzzahl (mit 0 beginnend) berechnet und Ausgibt. Beispielausgabe: 3! = 6

Übung 2

Schreiben Sie ein Programm, welches alle natürlichen Teiler einer natürlichen Zahl berechnet und Ausgibt. Beispielausgabe: 10 = {1,2,5,10}

Übung 3

Schreiben Sie ein Programm, welches über die Komandozeile eine Zahlenreihe erhält. Geben Sie die kleinste und größte Zahl dieser Reihe aus. Beispieleingabe: 1 4 19 -1 0 1 -15 7 2 12 Beispielausgabe: min = -15 max =19

Übung 4

Schreiben Sie ein Programm, welches über die Komandozeile eine Zahlenreihe erhält. Sortieren Sie die Reihe der größe nach, angefangen mit dem kleinsten Wert. Beispieleingabe: 1 4 19 -1 0 1 -15 7 2 12 Beispielausgabe -15 -1 0 1 1 2 4 12 19

Übung 5

Glücksspiel. Schreiben Sie ein Programm, welches über die Kommandozeile 2 Namen und 2 Zahlen zwischen 1 und 100 entgegen nimmt. Erzeugen Sie über den Ausdruck “Math.random()*10+1;“ eine Zahl zwischen 1 und 100. Vergleichen Sie die Zufallszahl mit den über die Kommandozeile gegebenen Werten. Der Spieler, welcher am nächsten an der Zufallszahl liegt hat gewonnen. Bei unentschieden wird erneut gespielt. Beispielausgabe: Müller 23 Hans 73 Zufallszahl 43 -> Müller gewinnt!

Funktionen

Was ist eine Funktion?

  • zur Einsparung von doppeltem Quelltext
  • beliebig viele (auch 0) Eingabewerte (Parameter)
  • kein oder ein Rückgabewert
  • ähnlich zu mathematischen Funktionen (z.B. f(x) = m * x + n)

Beachte: In Java ist oft die Rede von Methoden. Funktionen sind Methoden. Methoden jedoch nicht unbedingt Funktionen.

Funktionen: Aufbau

  • Funktion muss vor der Nutzung bekannt sein
  • neben Parametern ist die Nutzung lokaler oder globaler Variablen möglich
  • jeder Parameter hat einen Wert
  • Rückgabe hat einen bestimmten Wert oder keinen Wert (void)
  • bestimmte Schlüsselwörter (Modifier) geben Information über Zugreifbarkeit auf Variablen, Funktionen, Methoden, Objekte
  • Schlüsselwort static definiert in Java eine Funktion
    • Es besagt, dass eine Fktn. oder Variable unabhängig von einem Objekt existieren kann
    • Es gibt noch weitere Schlüsselwörter.
modifier static rückgabetyp funktionsname( typ_1 parameter_1, ..., typ_n parameter_n) {
	/* Funktionsrumpf */
}
						

Funktionen: Beispiel

public static void pointlessCalculation( float x ) {
	float m = 0.5;
	float n = 2.1;
	/* m und n sind lokale Variablen, x ist Parameter.
	 * Zu beachten ist die Verwendung von "." statt 
	 * "," bei der Deklaration
	 */
	return m*x+n;
}
						

Hello, again!

public static void helloWorld() {
	System.out.println(“Hello World!”);
}

public static String helloWorld(String helloWorld) { 
	return helloWorld;
}
						

Überladene Funktionen

  • Mehrere Funktionen mit gleichem Namen in einer Klasse
  • Problemlos möglich, wenn verschiedene Parameter übergeben werden
  • Bestimmung der konkreten Funktion durch Parameter

Funktionsaufrufe mit- und ohne Rückgabe

funktionsname ( parameter_1 ,... , parameter_n );
						

Funktionsaufruf ohne Rückgabe

variablenname = funktionsname ( parameter_1
			,... , parameter_n );
						

Funktionsaufruf mit Rückgabe

Rekursion

  • Selbstaufruf von Funktionen, Methoden, Klassen oder Objekten
  • Das heißt eine Definition durch sich selbst
public static int faculty( int x) {
	if (x==0) return 1;
	return x*faculty(x-1);
}
alternativ:
public static int faculty(int x) {
	return (x==0)?1:x*faculty(x-1);
}	
						

Aufgabe 1

Programmieren Sie eine Funktion minimum, welche ein Array von Gleitkommazahlen und dessen Größe als Parameter entgegennimmt und die kleinste Zahl in diesem Array zurückgibt.

Erweitern Sie das gegebene Hello World Programm zu einem lauffähigen Programm mit mehreren überladenen Funktionen. Als Eingabe soll das Programm bis zu 3 Strings verarbeiten können. Diese sollen unter Verwenung von substring() Buchstabenweise invertiert und dann ausgegeben werden.

Hilfsmittel aus der Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

Aufgabe 2

Die Fibonacci-Folge hat folgende Form:

1, 1, 2, 3, 5, 8, 13, 21,...

Ein Folgeglied berechnet sich also, indem man seine beiden Vorgänger addiert. Implementieren Sie die Fibonacci-Folge nun rekursiv mit Hilfe von Funktionen. Dabei soll es möglich sein, das zu berechnende Folgeglied als Startparameter beim Programmaufruf zu bestimmen. Als Ergebnis ist nur der Wert des berechneten Gliedes anzugeben.

Aufgabe 1

Setzen sie das Fibonacci-Problem iterativ um.

Aufgabe 2

Erweitern Sie das gegebene Hello World Programm zu einem lauffähigen Programm mit mehreren überladenen Funktionen. Als Eingabe soll das Programm bis zu 3 Strings verarbeiten können. Diese sollen unter Verwenung von substring() Buchstabenweise invertiert und dann ausgegeben werden.

Hilfsmittel aus der Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

Aufgabe 3

Schreiben sie einenen einfachen Taschenrechner mit Hilfe von Funktionen. Dieser soll ein formatiertes menü auf der Kommandozeile anzeigen und zur Eingabe von 2 Zahlen, sowie einer Operation auffordern. Als Operation sollen +,-,*,/ möglich sein. Schreiben sie für die Rechenoperationen seperate Funktionen.

Allgemeine Informationen

Die Quelltexte der Übungskomplexe sind jeweils um 20 Uhr des Vorabends der folgenden Veranstaltung per eMail abzugeben.

Links

THE END

ERSTELLT MIT REVEAL.JS