, , projekte:vorkurs-informatik:material:begriffe_ausdruecke

Grundbegriffe I: Ausdrücke

In diesem Abschnitt werden die Grundbegriffe eingeführt, die für einfache Berechnungen notwendig sind. Neben Anmerkungen und Beobachtungen zu diesen Begriffen, gibt es Beispiele für die Sprache R.

Werte und Typen

Werte sind Information-Stückchen, z.B. eine Zahl (5.3), eine Temperatur (451°F, 505,9K, 232,7°C), eine Geldmenge (EUR, USD uvm.) eine Positionsangabe (51°46'6.60"N, 14°19'39.92"E).

  • Es gibt verschiedene Arten von Werten. Wir nennen diese Typ. Jeder Wert hat einen Typ und ein Typ repräsentiert die Menge aller Werte die zu ihm gehören.
  • Typen können sich überschneiden, zum Beispiel sind Temperaturen auch Zahlen aber nicht jede Zahl ist eine Temperatur. Wir werden später eine Reihe von typischen Typen kennenlernen.
  • Einige Werte haben eine interne Struktur, z.B. Positionsangabe besteht aus Länge und Breite, diese wiederum aus Grad, Minute und Sekunde, dieses wiederum sind Zahlen. Deswegen unterscheidet man elementare Werte/Typen und zusammengesetzte Werte/Typen.
  • Einige Typen stehen in besonderer Beziehung und ihre Werte können ineinander umgerechnet werden, z.B. verschiedene Währungen, Temperaturskalen.
  • Man kann Werte im Programmtext hinschreiben (Das sind dann sogenannte Wert-Literale). Das klappt aber nur für Typen, die die Programmiersprache kennt.
  • Programmiersprachen unterstützen nicht beliebige Typen. Häufig wird einfach alles was wie eine Zahl aussieht (Temperatur, Geldbetrag, Winkel usw.) mit Zahl-Werten dargestellt und die restlichen Details des Typs ignoriert. Dass diese Zahl-Werte trotzdem unterschiedliche Dinge beschreiben muss man sich beim Programmieren merken, d.h. als zusätzlichen Kommentar aufschreiben. Programme merken nicht, wenn man aus versehen Entfernungen in Yards statt Metern angibt (siehe Mars Climate Orbiter 1999).

Skalare Werte und Typen in R

Skalare Werte und Typen in R

Skalare Werte und Typen in R

Typ Erläuterung Beispiel-Werte
integer ganze Zahlen -4, -3, -2, -1, 0, 1, 2, 3, 4
numeric Gleitkomma Zahlen 1, 1.2, 1.41421
complex Komplexe Zahlen mit Real- und Imaginär-Teil) 2i 4.1i 1+2i
character Zeichenketten "hallo", "10"
logical Wahrheitswerte TRUE und FALSE
NA Not Available: Fehlender Wert NA
NULL Kein Wert, zum Beispiel als Ergebnis von Funktionen die kein Ergebnis haben NULL  

NA ist ein sehr spezieller Wert, der benutzt wird, um z.B. fehlende Messwerte zu markieren. Dies ist in statistischen Berechnungen ein extrem wichtiger Schutz gegen falsche Ergebnisse. Wenn man z.B. einfach den Wert 0 nehmen würde, käme bei der Durchschnittsberechnung was offensichtlich falsches raus.

Mehr Informationen zu den in R vorhandenen Typen: http://cran.r-project.org/doc/manuals/R-lang.html#Objects

Funktionen

Funktionen bilden Argument-Werte auf Ergebnis-Werte ab, z.B. gibt es Funktionen zur Umrechnung zwischen Währungen, Umrechnung zwischen Temperaturskalen, mathematische Funktionen (Quadratwurzel sqrt, cos, sin, exp, log).

  • Für die Benutzung/Anwendung einer Funktion hat sich folgende Schreibweise durchgesetzt: Funktionsname(Argument1, Argument2, usw…)
  • Die Anzahl der Eingabe-Werte, die man zur Verwendung einer Funktion angeben muss, hängt von der Funktion ab, z.B. sin(3, 2, 3) ergibt keinen Sinn.
  • Die Typen der Argumente müssen zur Funktion passen, z.B. ergibt die Summe aus der Zahl 2 und der Zeichenkette "hallo" zunächst keinen Sinn.
  • Funktionen bekommen zwar 0,1,2-viele Argument-Werte, liefern haben idR nur einen Ergebnis-Wert. Wenn mehrere Werte das Ergebnis bilden, helfen die zusammengesetzten Typen um diese in einen Ergebnis-Wert zusammen zu setzen.
  • Das Ergebnis einer Funktionsbenutzung hängt von den Argument-Werten ab, z.B. ist Wurzel von 4 immer 2. Aber das Ergebnis kann auch von äußeren Zuständen abhängen, z.B. die Währungsumrechnung vom aktuellen Wechselkurs. Am deutlichsten ist dies bei der Erzeugung von Zufallszahlen, z.B. liefert rnorm(1) bei jeder Benutzung eine neue standard-normalverteilte Zufallszahl.
  • Die Typen der Eingabe-Werte hängen von der Funktion ab, z.B. 451°F in Euro umrechnen geht nicht.
  • Der Typ des Ergebnis-Wertes hängt von der Funktion ab. Manchmal auch von den Argument-Typen, z.B. ist die Summe von 20EUR und 3EUR ein EUR-Betrag, aber die Summe von USD beträgen hoffentlich etwas in US Dollar.

Funktionen in R

Funktionen in R

Funktionen in R

  • sum, prod: beliebig viele Zahlen als Argumente. Berechnet die Summe bzw. das Produkt
  • exp, log: die Exponentialfunktion und der natürliche Logarithmus
  • cos, sin, tan: Winkelfunktionen
  • rnorm(n, mean = 0, sd = 1): generiert n Zufallszahlen, die normalverteilt sind
  • runif(n, min=0, max=1): generiert n Zufallszahlen, die uniform verteilt sind (gleichverteilt)

Die Sprache R hat ein paar nützliche Eigenheiten. Zum einen können Funktionen optionale Argumente haben. Wenn man für diese bei der Benutzung der Funktion keine Argument-Werte angibt, so wird ein Standardwert genommen. Zum Beispiel ist die Generator-Funktion für normalverteilte Zufallszahlen als rnorm(n, mean = 0, sd = 1) definiert. Das heißt, dass der Mittelwert (mean) und die Standardabweichung (sd) den Wert 0 bzw 1 haben, wenn sie nicht angegeben werden. So liefert rnorm(100) uns 100 standard-normalverteilte Zufallszahlen und rnorm(100, 5) liefert 100 normalverteilte Zufallszahlen um den Mittelwert 5 und mit Standardabweichung 1.

Eine weiter nützlicher Aspekt ist, dass man optionale Argumente über ihren Namen ansprechen kann. So liefert rnorm(100, sd=20) uns 100 normalverteilte Zufallszahlen mit Mittelwert 0 aber Standardabweichung 20. Ohne die Benennung von Argumenten hätten wir rnorm(100, 0, 20) schreiben müssen.

Auch ist es über die Benennung von Argumenten möglich, sie in einer anderen Reihenfolge anzugeben, z.B. rnorm(sd=2,n=100). Das hilft dabei, dass man sich nicht die Reihenfolge von allen Argumenten merken muss und erleichtert auch ein wenig das Lesen von Programmtexten.

Hilfe zu Funktionen in R bekommen

Hilfe zu Funktionen in R bekommen

Hilfe zu Funktionen in R bekommen

  1. Auf der Kommandozeile von R den Funktionsnamen anfangen und dann mit der Tabulator-Taste vervollständigen lassen. Da gibt es auch eine Kurzerklärung zu jeder Funktion und ihrer Argumente
  2. Auf der Kommandozeile ?Funktionname als Befehl ausführen. Im Hilfe-Fenster (von RStudio) bekommt man dann die volle Dokumentation der Funktion angezeigt.
  3. Das Internet fragen :)

Informationen über Werte und Typen erhalten

Informationen über Werte und Typen erhalten

Informationen über Werte und Typen erhalten

Die Funktion typeof(Wert) liefert den Namen des Typs des Arguments. Beispiele:

typeof(5)
typeof("hallo")
typeof(TRUE)
typeof(NULL)
typeof(NA)

Ausdrücke und Operatoren

Ausdrücke (Englisch "expressions") sind der Basisbaustein für alle Berechnungen und Programme. Ein Ausdruck kann aus Werten und Funktionen zusammengesetzt werden und liefert einen Ergebnis-Wert wenn er ausgewertet wird.

  • Alle Wert-Angaben im Programmtext sind selbst auch Ausdrücke: Der Ausdruck 5 liefert den Ergebnis-Wert 5.
  • Die Argument-Werte bei der Benutzung von Funktionen werden durch Ausdrücke beschrieben: Der Ausdruck sum(5,3,2) liefert den Ergebnis-Wert 10. Der Ausdruck sum(2,prod(3,5)) setzt sich aus zwei Funktionsbenutzungen zusammen und liefert den Ergebnis-Wert 17.

Operatoren machen uns das leben leichter, weil wir dann nicht sum(2,prod(3,5)) schreiben müssen, sondern kürzer 2+3*5.

  • Operatoren sind auch nur Funktionen, die zwei Argument-Werte bekommen und einen Ergebnis-Wert liefern. Die Benutzung hat eine andere Schreibweise: Argument1 Operator Argument2.
  • Damit das Ergebnis eindeutig wird, muss es Vorrangregeln für die Operatoren geben. Jeder kennt sicherlich die Regel "Punkt-Vor-Strich-Rechnung". Da es in Programmiersprachen mehr Operatoren als + - * / gibt, gibt es noch mehr Vorrangregeln, die sind aber einfach zu merken.
  • Klammern können benutzt werden, um die Anwendung der Operatoren zu steuern. Z.B. 2+(3*5) ergibt etwas anderes als (2+3)*5 aber das gleiche wie 2+3*5.
  • Es gibt noch weitere Operatoren, wie z.B. Negation (- Wert) und Indizierung (Wert [ Index-Wert ], auch bekannt als Subskript wie v_i)

Operatoren in R

Operatoren in R

Operatoren in R

  • Rechenoperatoren: Addition +, Subtraktion -, Multiplikation *, Division /, Exponentation ^; Zahlen als Argumente, Zahlen als Ergebnis
  • Vergleichsoperatoren: ==, >, >=, <, , != (Ungleich); Ergebnis ist ein Wahrheitswert, also TRUE oder FALSE
  • Logische Operatoren: Und &&, Oder ||, Nicht !

Anmerkungen zu anderen Programmiersprachen

  • Die meisten Sprachen haben die selben elementaren Typen, z.B. Ganze Zahlen, Gleitkommazahlen, Zeichen, logische Werte. Auch bei den zusammengesetzten Typen gibt es Klassiker, z.B. Felder, Listen, Strukturen, Matrizen, Zeichenketten.
  • Die Vorrangregeln für Operatoren sind in fast allen Sprachen identisch. Das erleichtert das Lesen und Schreiben in neuen Sprachen.
  • Es gibt Sprachen ohne Operatoren, z.B. LISP und Scheme. Da wird dann alles über Funktionen geschrieben, was bei schlechtem Stil schnell ziemlich unübersichtlich werden kann. Übrigens gab es bei LISP eine andere Schreibweise für die Benutzung von Funktionen, nämlich (Funktionsname, Argument1, Argument2, usw…). Das war gleichzeitig auch die Schreibweise für Listen. Daher bestand kein Unterschied zwischen Listen und Progammtext: Jeder Programmtext war eine Liste, jede Liste konnte als Programmtext interpretiert (=benutzt) werden.
  • Einige wenige Sprachen (z.B. C++11) erlauben es, neue Wert-Literale für eigene, neue Typen zu definieren.
projekte/vorkurs-informatik/material/begriffe_ausdruecke.txt · Zuletzt geändert: 13.10.2012 18:33 von rrotta