Variable und einfache Datentypen:Javakurs: Unterschied zwischen den Versionen

Aus Info-Theke
Zur Navigation springen Zur Suche springen
Zeile 145: Zeile 145:
* Winkel wn: tan wn = a / (s - n/100) wn = arctan (a / (s - n/100))
* Winkel wn: tan wn = a / (s - n/100) wn = arctan (a / (s - n/100))
<pre>
<pre>
double a = 1;
public class Lesson1 {
double s = 2;
  public static void main(String[] args) {
double w0 = Math.atan(a / s);
double a = 1;
double lastW = w0;
double s = 2;
int n = 1;
double w0 = Math.atan(a / s);
double wN =  
double lastW = w0;
int n = 1;
double wN = Math.atan(a / (s - n / 100.0));
System.out.println(String.format("1: Winkel: %f Diff: %f", wN, wN - lastW));
lastW = wN;
n = 2;
wN = Math.atan(a / (s - n / 100.0));
System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
lastW = wN;
n = 3;
wN = Math.atan(a / (s - n / 100.0));
System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
lastW = wN;
n = 4;
wN = Math.atan(a / (s - n / 100.0));
System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
lastW = wN;
n = 5;
wN = Math.atan(a / (s - n / 100.0));
System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
  }
}
</pre>
</pre>



Version vom 14. Juli 2014, 23:36 Uhr


Übersicht

Theorie

Variable sind das Gedächtnis eines Programms. Da Java eine typisierte Sprache ist, hat jede Variable genau einen Typ und einen Wert. Jede Variable muss deklariert werden.

Konvention: Variablen werden klein geschrieben.

Es gibt folgende einfache Datentypen:

Datentyp Bedeutung Literal (Beispiele)
int Ganzzahl, 32 Bit, mit Vorzeichen 42 -22 0 0x7fff 0772
long Ganzzahl, 64 Bit, mit Vorzeichen 123456789012L 0xa12345668L -98765643210123L
bool Wahrheitswert, boolscher Wert true false
char 8-Bit Zeichen '?' '\n'
float Gleitkommazahl, 32 Bit, mit Vorzeichen 0.73 1.7E-22 0.0
double Gleitkommazahl, 64 Bit, mit Vorzeichen 0.73 1.7E-22 0.0
String Zeichenfolge, eigentlich kein einfacher Typ, aber eingebaut und oft benutzt... "Hallo liebe Leute"

Syntax

<data_type> <name> [ = <expr> ] ';'

Beispiele

int x;
int index = 0;
bool again = true;
double pi = 3.14159265;
String language = "german";

Formatierte Ausgabe

Eine häufig genutzte Ausgabe von einfache Datentypen ist die Methode format() aus der Klasse String. Der erste Parameter ist die Formatangabe: Das ist ein Text, angereichert mit Platzhaltern, die mit den folgenden Parametern ersetzt werden.

String.format("Die erste Primzahl: %d pi: %f", 2, 3.14);
Platzhalter Datentyp Bemerkung
%d int Dezimalzahl
%x int Hexadezimal
%f double Gleitpunktzahl ohne Exponent
%g double Gleitpunktzahl mit Exponent
%s String Zeichenfolge

Zwischen % und datentypspezifischem Konvertierungszeichen können Formatierungsinformationen auftauchen:

Beispiele:

Formatierung Ausgabe Bemerkung
String.format("count: %3d", 2) count: 2 Mindestbreite 3, mit Leerzeichen aufgefüllt
String.format("count: %04d", 2) count: 0002 Mindestbreite 4, mit '0' aufgefüllt
String.format("Volume: %10.3f", 777.3344); Volume: 777.334 Gesamtbreite 10, 3 Dezimalstellen
String.format("Area: %.3g", 0.7773344E-12) Area: 7.77E-12 . 3 gueltige Ziffern
String.format("Text: %8.10s...", "abcdefghijklmnopqrst") Text: abcdefghij... Mindestlänge 8, Maximallänge 10

Beispielprogramme

Volumen und Fläche der Kugel

double pi = 3.141592;
double radius = 1;

double area = radius*radius*pi*4;
double volume = radius*radius*radius*pi*4/3;

System.out.println(String.format("radius: %f area: %f volume: %f", radius, area, volume));

Antennenausrichtung

  • Ein Roboter fährt auf einer Geraden an einer Antenne im Abstand a vorbei.
  • Der Roboter hat selber eine Antenne, die auf dies externe Antenne ausgerichtet werden soll
  • Der Fahrweg hat eine Länge von s (von Anfang des Fahrweges bis Punkt P)
  • Die Antennen-Ausrichtung soll alle s/100 berechnet werden
  • Aufgabe: Berechne die Winkeländerungen der ersten 5 Schritte in einem Programm aus.

Antennenausgleich.png

Formeln:

  • Winkel w0: tan w0 = Gegenkathete / Ankathete = a / s
  • Winkel w1: tan w1 = a / (s - s/100)
  • Winkel wn: tan wn = a / (s - n/100) wn = arctan (a / (s - n/100))
public class Lesson1 {
   public static void main(String[] args) {
	double a = 1;
	double s = 2;
	double w0 = Math.atan(a / s);
	double lastW = w0;
	int n = 1;
	double wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("1: Winkel: %f Diff: %f", wN, wN - lastW));
	lastW = wN;
	n = 2;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 3;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 4;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 5;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
   }
}

Hausaufgabe

  • Ein Fensterputzerroboter besteht aus einem Teleskoparm, der mit 2 Motoren von links nach rechts und zurück bewegt wird.
  • Der erste Motor steuert die Länge des Teleskoparmes, der zweite den Winkel.
  • Der Weg des Putzarms wird in gleich große 100 Teilschritte zerlegt.
  • Stelle Formeln auf, die für jeden Schritt den Längenunterschied des Teleskopstabes und den Differenzwinkel berechnen.
  • Berechne die Werte für die ersten und die letzten 5 Schritte.

Putzroboter.png