Erwin Grüner 09.02.2006



Ähnliche Dokumente
Java-Programmierung mit NetBeans

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Übersicht Programmablaufsteuerung

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Entwurf von Algorithmen - Kontrollstrukturen

Fallunterscheidung: if-statement

Diana Lange. Generative Gestaltung Operatoren

Programmierkurs Java

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Einführung in die Programmierung

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kontrollstrukturen, Strukturierte Programmierung

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Modellierung und Programmierung 1

5. Tutorium zu Programmieren

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

C/C++ Programmierung

Kontrollstrukturen und Funktionen in C

Excel Funktionen durch eigene Funktionen erweitern.

1 topologisches Sortieren

Whitebox-Tests: Allgemeines

Kontrollstrukturen - Universität Köln

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Einführung in die Programmierung

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Erfahrungen mit Hartz IV- Empfängern

affilinet_ Flash-Spezifikationen

1 Vom Problem zum Programm

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Wirtschaftsinformatik I

P r o g r a m m a b l a u f s t e u e r u n g

Übungen Programmieren 1 Felix Rohrer. Übungen

Übungsaufgaben Tilgungsrechnung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Graphic Coding. Klausur. 9. Februar Kurs A

Lua Grundlagen Einführung in die Lua Programmiersprache

Datenbanken Microsoft Access 2010

Druckerscriptsprache

7 Rechnen mit Polynomen

Die Programmiersprache C99: Zusammenfassung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Professionelle Seminare im Bereich MS-Office

R ist freie Software und kann von der Website.

Algorithmen und Datenstrukturen

Übungen für Woche 10

Objektorientierte Programmierung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Scala kann auch faul sein

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

Konzepte der Informatik

Dr. Monika Meiler. Inhalt

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Einführung in die Programmierung

Informatik Repetitorium SS Volker Jaedicke

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Sin-Funktion vgl. Cos-Funktion

Informatik Grundlagen, WS04, Seminar 13

Programmiersprachen und Übersetzer

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

SRH - Kurzinformation

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Zur drittletzten Zeile scrollen

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Festigkeit von FDM-3D-Druckteilen

Anleitung über den Umgang mit Schildern

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Hohe Kontraste zwischen Himmel und Landschaft abmildern

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

AutoCAD Dienstprogramm zur Lizenzübertragung

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Wie Sie mit Mastern arbeiten

Grundbegriffe der Informatik

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Der Jazz Veranstaltungskalender für Deutschland, Österreich und die Schweiz

Software- und Druckerzuweisung Selbstlernmaterialien

Einführung in die Algebra

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Viele Bilder auf der FA-Homepage

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Zwischenablage (Bilder, Texte,...)

Lineare Gleichungssysteme

Internationales Altkatholisches Laienforum

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Gleichungen und Ungleichungen

C++ Tutorial: Timer 1

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Grundlagen der Programmiersprache C++

Lineare Gleichungssysteme

Transkript:

FB Psychologie Uni Marburg 09.02.2006

Themenübersicht

Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife next: nächster Schleifendurchgang break: Schleifenabbruch Neben diesen iterativen ist es in R auch möglich, bei der Definition von Funktionen die Kontrollstruktur der Rekursion einzusetzen.

Anweisungsblock Syntax { anweisungen } Hinweise Anweisungen, die in geschweiften Klammern eingeschlossen sind, definieren einen Anweisungsblock. Ein Anweisungsblock kann überall dort stehen, wo eine einzelne Anweisung stehen kann.

if, else Syntax if (condition) expression1 [else expression2]

Hinweise Ist das Ergebnis von condition TRUE (oder ein von 0 verschiedener numerischer Wert) 1, so wird expression1 ausgeführt, ansonsten - falls else vorhanden ist - expression2. Liefert die Bedingung einen Vektor, so wird nur die erste Komponente verwendet und eine Warnung ausgegeben. Der else-zweig kann wiederum eine if-anweisung enthalten. Sind für expression1 bzw. expression2 mehrere Anweisungen auszuführen, so definiert man sie als Anweisungsblock, d.h. setzt sie in geschweifte Klammern. Für die Formulierung einer Bedingung stehen neben den Vergleichsoperatoren (==,!=, <, >, <=, >=) auch die logischen Operatoren (!, &&, ) zur Verfügung. 1 Das Ergebnis darf allerdings nicht NA sein.

switch Syntax switch (EXPR,...)

Hinweise Nach dem Parameter EXPR sind unter... die verschiedenen Alternativen aufzuführen. Ist der Wert von EXPR eine Zahl n, so wird das n-te Element von... ausgewertet und das Ergebnis zurückgegeben. Ist n allerdings keine Zahl zwischen 1 und der Anzahl der Argumente bei..., so wird NULL zurückgegeben. Ist der Wert von EXPR ein String, so wird der Wert jener Alternative zurückgegeben, deren Namen genau dem String entspricht; ist deren Wert jedoch leer, so wird der Wert des ersten nachfolgenden nicht-leeren Elements verwendet. Befindet sich unter den Alternativen keine mit dem gesuchten Namen, so wird das erste unbenannte Element zurückgegeben (falls es unbenannte Elemente gibt) bzw. NULL.

Beispiele switch(3,a=1,b=2,c=7,9) ergibt 7 switch(4,a=1,b=2,c=7,9) ergibt 9 switch(5,a=1,b=2,c=7,9) ergibt NULL switch(3.9,a=1,b=2,c=7,9) ergibt 7 switch("b",a=1,b=2,c=7,9) ergibt 2 switch("b",a=1,b=,c=7,9) ergibt 7 switch("b",a=1,c=7) ergibt NULL switch("b",a=1,c=7,9) ergibt 9

repeat Syntax repeat expression

Hinweise Diese Konstruktion stellt eigentlich eine Endlosschleife dar. Aus einer repeat-schleife kommt man mit Hilfe einer break-anweisung heraus, die ihrerseits Teil einer if-anweisung ist. Eine repeat-schleife wird im allgemeinen also so aussehen: repeat {... if... break... } Eine repeat-schleife wird also mindestens einmal durchlaufen (oder zumindest einmal begonnen).

while Syntax while (condition) expression

Hinweise expression wird solange ausgeführt, wie die angegebene Bedingung wahr ist. Liefert die Bedingung gleich zu Beginn FALSE, so wird die Schleife überhaupt nicht durchlaufen. Jede repeat-schleife lässt sich auch als while-schleife formulieren.

for Syntax for (variable in sequence) expression

Hinweise Bei der for-schleife durchläuft der angegebene Ausdruck (bzw. Anweisungsblock) mehrere Iterationen, wobei die angegebene Schleifenvariable der Reihe nach alle Werte von sequence annimmt 2. sequence kann eine Variable, ein Vektor, eine Matrix oder auch eine Liste sein. Soll eine Schleife für alle Elemente von x durchlaufen werden, so lässt sich anstatt for (i in 1:length(x)) auch for (y in seq(along=x)) verwenden. Das jeweilige Element von x ist dann einfach mit y (anstatt mit x[i]) anzusprechen. 2 Im Gegensatz zur while- und repeat-schleife ist hier die Anzahl der Durchläufe zu Beginn der Schleife bekannt.

next Syntax Hinweis next Die next-anweisung wird in einer repeat-schleife verwendet, um den aktuellen Schleifendurchlauf abzubrechen und wieder an den Schleifenanfang zu springen.

break Syntax Hinweis break Die break-anweisung wird in einer repeat-schleife verwendet, um die Schleife abzubrechen. Dies geschieht praktisch immer im Zusammenhang mit der Überprüfung eines Abbruchkriteriums mit Hilfe einer if-anweisung.

Iteration vs. Rekursion Die bisher betrachteten gehören zu Gruppe der iterativen. In R gibt es auch die Möglichkeit, rekursive Funktionen zu definieren. Eine rekursive Funktion ist eine Funktion, die sich direkt oder indirekt selbst aufruft. Rekursive Funktionen sind zwar eleganter als iterative, aber auch langsamer und speicherintensiver. Es gibt Probleme, die sich mit iterativen Funktionen nicht oder nur sehr umständlich lösen lassen (Beispiel: Turm von Hanoi).

Beispiel: Berechnung der Fakultät (iterative Lösung) fak <- function(n) { p <- 1 for ( i in 1:n ) p <- p * i return(p) }

Beispiel: Berechnung der Fakultät (rekursive Lösung) fak <- function(n) { if( n == 0 ) 1 else n * fak( n - 1 ) }