Programmierkurs für absolute Anfänger Listen und Arrays Caren Brinckmann Sommersemester 2005.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

der Universität Oldenburg
Ausführen.
Einführung in JavaScript II
der Universität Oldenburg
Sequentielle Liste - Array
Unix-Shells Shell: Unix-Shell-Varianten:
Motivation stupide Arbeiten dem Computer überlassen
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
Übungen 10 Leute haben das erste Übungsblatt allein bearbeitet bzw. separat abgegeben. Wichtig: Übungspartner finden! Außerdem: Lösungen nur einmal abgeben.
Flussdiagramm: längster Laut und seine Dauer
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
Java- Syntax.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
JavaScript - Einführung
Schleifen mit der Turtle
Verzweigung.
Informatik Grundkurse mit Java
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Struktogramme IF-ELSE FOR – Schleife
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Wieder und wieder und wieder …. Nicht vor Pilz? ja Schritt vorwärts.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Dynamische Webseiten mit PHP [und Python]
Wiederholte Programmausführung
Informatik 1 Übung 4.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Grundkonzepte des Programmierens (mit ActionScript)
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Einführung in PHP.
Einführung in PHP 5.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Hochschule Fulda – FB ET Sommersemester 2014
Programmiervorkurs WS 2014/15 Schleifen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
1 VeranstaltungThemaTeilnehmerBetreuer AINF-Lehrgang PROGRAMMIEREN Martina GREILER Wolfgang KATOLNIG Peter RENDL Helfried TUISEL Peter ZYCH Heinz STEGBAUER.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Sammlungsklassen Array.
Diskrete Mathematik I Vorlesung 2 Arrays.
Informatik Beschreibung von Abläufen durch Algorithmen 3.3 Wiederholugnsanweisungen 3. Beschreibung von Abläufen durch Algorithmen 3.3 Wiederholungsanweisungen.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
MATLAB Control Statements.
Einführung in die Programmierung mit Java
Einführung in die Programmiersprache C 2
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Felder (Arrays).
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
File Objekt
Unterschiedliche Kontrollstrukturen
Unterschiedliche Arten von Kontrollstrukturen
Schleifen mit der Turtle
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

Programmierkurs für absolute Anfänger Listen und Arrays Caren Brinckmann Sommersemester 2005

Programmierkurs für absolute Anfänger – Sitzung 8 1 Wh.: for-Schleife Syntax: for ( Init ; Bedingung ; Aktualisierung ) { Anweisungsblock } Initialisierung: Zu Anfang wird die Zählvariable auf einen bestimmten Wert gesetzt. Bedingung: Wenn die Bedingung wahr ist, wird der Anweisungsblock ausgeführt. Aktualisierung: Nach jeder Ausführung des Anweisungsblocks wird der Aktualisierungsausdruck ausgewertet (meistens wird die Zählvariable verändert). Anweisungsblock wird ausgeführt, solange Bedingung wahr ist. for-Schleife als Flussdiagramm

Programmierkurs für absolute Anfänger – Sitzung 8 2 Wh.: Schachtelung von for-Schleifen gewünschte Ausgabe: Lösung: Schachtelung zweier for-Schleifen $maximum = 5; for ($zeile=1; $zeile<=$maximum; $zeile++) { for ($spalte=1; $spalte<=$zeile; $spalte++) { print "$spalte "; } print "\n"; }

Programmierkurs für absolute Anfänger – Sitzung 8 3 Listen (1) Liste: geordnete Ansammlung von skalaren Werten (d.h. Einzelwerten) Jedes Element einer Liste enthält einen von den anderen Elementen unabhängigen skalaren Wert, z.B. eine Zahl, eine Zeichenkette oder undef. Die Elemente sind indiziert (d.h. nummeriert) mit ganzzahligen Werten. ACHTUNG: Die Indizierung beginnt immer mit 0 und wird in Einerschritten hochgezählt. Beispiel: Liste mit 5 Elementen undef "Hallo" "Ciao!\n" Werte Nummern der Elemente (Indizes)

Programmierkurs für absolute Anfänger – Sitzung 8 4 Listen (2) Anzahl der Elemente: beliebig! kleinste Liste: leere Liste (gar keine Elemente) größte Liste: füllt den gesamten Hauptspeicher Listenliterale: Durch Kommata getrennte Werte, die von runden Klammern umschlossen werden. Diese Werte stellen die einzelnen Elemente der Liste dar. (1, 2, 3) ("Fred", 4.5) ("Fred", "Barney", "Betty", "Wilma", "Dino") ( )# leere Liste ($a, 17)# zwei Elemente: der gegen- # wärtige Wert von $a und 17 ($b + $c, "Antwort: $a")

Programmierkurs für absolute Anfänger – Sitzung 8 5 Bereichsoperator.. Der Bereichsoperator.. erzeugt eine Liste von Werten, indem er in Einerschritten vom linken bis zum rechten Skalar hochzählt. (1..5) # das gleiche wie (1, 2, 3, 4, 5) ( ) # das gleiche - beide Werte # werden abgerundet (5..1) # leere Liste -.. funktioniert # nur "bergauf" (0, 2..6, 10, 12) # das gleiche wie # (0, 2, 3, 4, 5, 6, 10, 12) ($a..$b) # Bereich, der durch die gegenwärtigen # Werte von $a und $b definiert wird.

Programmierkurs für absolute Anfänger – Sitzung 8 6 Listenzuweisung Listen können bestimmten Variablen zugewiesen werden: ($fred, $dino, $barney) = ("Feuerstein", undef, "Geroellheimer"); Die Werte zweier Variablen können in Perl daher einfach miteinander vertauscht werden: ($fred, $barney) = ($barney, $fred); Was passiert, wenn die Anzahl der Variablen (links vom Gleichheitszeichen) und die Anzahl der Werte (auf der rechten Seite) unterschiedlich groß sind? überzählige Werte werden ignoriert überzähligen Variablen wird undef zugewiesen ($fred, $barney) = ("Feuerstein", "Geroellheimer", "Schiefer"); ($wilma, $dino) = ("Feuerstein");

Programmierkurs für absolute Anfänger – Sitzung 8 7 Arrays Array: Variable, die eine Liste enthält In Perl beginnen skalare Variablen mit $ Arrayvariablen = (1, 3, "a", 20.5); Der Wert einer Arrayvariablen, der noch nichts zugewiesen wurde ist (), die leere und $meinarray sind zwei verschiedene Variablen!

Programmierkurs für absolute Anfänger – Sitzung 8 8 Zugriff auf einzelne Elemente Jedes Element eines Arrays enthält einen skalaren Wert. Auf ein einzelnes Element eines Arrays wird über seinen Index und den Subskript-Operator [] = (1, 3, "a", 20.5); print "$meinarray[1]\n"; $meinarray[0] = "hallo"; $meinarray[2].= "ber"; Index: Jeder beliebige Ausdruck, der einen numerischen Wert zum Ergebnis hat. Etwaige Nachkommastellen werden abgeschnitten. $zahl = 1.756; print $meinarray[$zahl + 2]; Weist der Index auf ein Element, das hinter dem Ende eines Arrays liegen würde, wird der entsprechende Wert automatisch als undef angesehen. $wert = $meinarray[6];

Programmierkurs für absolute Anfänger – Sitzung 8 9 Automatische Arrayerweiterung Wenn man versucht, etwas in einem Arrayelement zu speichern, das hinter dem Ende des Arrays liegt, so wird das Array je nach Bedarf automatisch erweitert. Dabei neu erzeugte Elemente werden mit undef belegt. Beispiel: $steine[0] = "feuerstein"; $steine[1] = "schiefer"; $steine[2] = "lava"; $steine[99] = "basalt"; Wieviele Elemente ? Welchen Wert hat $steine[50] ?

Programmierkurs für absolute Anfänger – Sitzung 8 10 Spezielle Arrayindizes Index des letzten Elements des ist = ("schiefer", "lava", "basalt"); print $steine[$#steine]; Achtung: $#steine ist nicht identisch mit der Anzahl der Elemente (da der erste Index 0 ist): $anzahl_steine = $#steine + 1; Negative Arrayindizes zählen rückwärts vom Ende des Arrays nach vorn, beginnend mit Index -1 für das letzte Arrayelement: print $steine[-1]; print $steine[-3];

Programmierkurs für absolute Anfänger – Sitzung 8 11 Listenzuweisung mit Arrays Ein Array in ein anderes = ("schiefer", "lava", Da Arrays nur skalare Werte enthalten können, kann ein Array selbst nicht als Listenelement benutzt werden. Ggf. wird es durch die in ihm enthaltenen Elemente = (); $meinstein = = $meinstein);

Programmierkurs für absolute Anfänger – Sitzung 8 12 Interpolation von Arrays in Zeichenketten Wie Skalare können auch Arrayvariablen in einer Zeichenkette in doppelten Anführungszeichen interpoliert werden. Die einzelnen Array-Elemente werden bei der Interpolation automatisch durch Leerzeichen voneinander getrennt. Vor und nach dem interpolierten Array werden keine zusätzlichen Leerzeichen = ("schiefer", "lava", "basalt"); print "Drei Achtung: Wenn print direkt mit einem Array als Argument aufgerufen wird, so werden die Arrayelemente ohne trennende Leerzeichen ausgegeben!

Programmierkurs für absolute Anfänger – Sitzung 8 13 Funktion reverse Die Funktion reverse nimmt eine Werteliste (die auch aus einem Array kommen kann) und gibt sie in umgekehrter Reihenfolge wieder zurück. Wird der Rückgabewert nirgendwo zugewiesen, ist diese Funktion = ("Basalt", "Schiefer", "Lava"); = = reverse 6..10; print

Programmierkurs für absolute Anfänger – Sitzung 8 14 Funktion sort Die Funktion sort nimmt eine Werteliste (die auch aus einem Array kommen kann) und gibt sie sortiert zurück. Die Sortierung erfolgt nach der intern definierten Zeichen- Reihenfolge (ASCII-Sortierung: Zahlen vor Großbuchstaben vor Kleinbuchstaben). Wird der Rückgabewert nirgendwo zugewiesen, ist diese Funktion = ("Basalt", "Schiefer", "Granit", = = reverse = sort ; print

Programmierkurs für absolute Anfänger – Sitzung 8 15 Skalarer Kontext vs. Listenkontext (1) Ein gegebener Ausdruck kann verschiedene Dinge bedeuten, je nachdem, in welchem Zusammenhang er auftaucht. Wenn Perl einen Ausdruck parst, erwartet es immer entweder einen skalaren Wert oder einen Listenwert. Dies nennt man den Kontext eines Ausdrucks: 5 + irgendetwas # irgendetwas muss ein skalarer Wert sein sort irgendetwas # irgendetwas muss ein Listenwert sein Selbst wenn es sich bei irgendetwas um die gleiche Folge von Zeichen handelt, wird sie in ersten Fall als Skalar interpretiert, im zweiten jedoch als Liste!

Programmierkurs für absolute Anfänger – Sitzung 8 16 Skalarer Kontext vs. Listenkontext (2) Ausdrücke geben in Perl immer den ihrem Kontext entsprechenden Wert zurück. Array: Im Listenkontext werden die einzelnen Elemente zurückgegeben, im skalaren Kontext jedoch die Anzahl der = ("Fred", "Wilma", = $zahl = 5 Auch eine Zuweisung (auf einen skalaren Wert oder eine Liste) kann einen unterschiedlichen Kontext $n

Programmierkurs für absolute Anfänger – Sitzung 8 17 im Listenkontext Im skalaren Kontext gibt jeweils die nächste Zeile der Standardeingabe zurück. $zeile = ;# eine Zeile einlesen Im Listenkontext gibt alle verbleibenden Zeilen bis zum Dateiende zurück. Jede Zeile wird hierbei als eigenes Listenelement = ;# alle Zeilen einlesen alle \n entfernen Vorsicht bei sehr großen Dateien: Grenzen des Arbeitsspeichers!

Programmierkurs für absolute Anfänger – Sitzung 8 18 Funktion split (1) Bisher: vereinfachte Syntax von split split(/ Trennzeichen /, Zeichenkette ) $zeile = "g-40"; ($laut1,$dauer1) = split(/-/,$zeile); Tatsächlich: split(/ regulärer Ausdruck /, Zeichenkette ) liefert als Rückgabewert eine Liste, die in einem Array gespeichert werden = split(/[-_]/,"ap-fE_lIC"); print $silben[2]; Außerdem: Gruppierungen (in runden Klammern gesetzte Muster) im regulären Ausdruck werden als Listenelement mit = split(/([-_])/,"ap-fE_lIC"); print $silben[3];

Programmierkurs für absolute Anfänger – Sitzung 8 19 Funktion split (2) Wenn zwei Trennmuster direkt aufeinander folgen, gibt split an der Stelle als Element den Leerstring = split(/:/,"abc:de::fg:hi"); print = split(/:+/,"abc:de::fg:hi"); print $felder[2]; Leere Elemente zu Beginn der erzeugten Liste werden zurückgegeben, leere Elemente am Ende = split(/:/,":::abc:de:fg:::"); print $felder[2]; print $#felder;

Programmierkurs für absolute Anfänger – Sitzung 8 20 Funktion join Syntax: join( Kleber, Liste ) join verbindet die Elemente der Liste durch die "Kleber"- Zeichenkette und gibt die resultierende Zeichenkette = (1..10); $kette = join print $kette; print join(":", split(/ */, "hallo du")); print join("\t", reverse(split(/\s+/,"hallo du")));

Programmierkurs für absolute Anfänger – Sitzung 8 21 Funktionen: pop und push pop entfernt das letzte Element aus einer Liste und gibt es = (5..9); $zahl1 = $zahl2 = print "$zahl1, $zahl2, $zahlen[$#zahlen]\n"; Ist das Array leer, gibt pop statt eines Elements undef zurück. push fügt ein Element (oder eine Liste von Elementen) am Ende eines Arrays hinzu: 0); 8; = (9, 0, print

Programmierkurs für absolute Anfänger – Sitzung 8 22 Funktionen: shift und unshift shift entfernt das erste Element aus einer Liste und gibt es zurück. Ist das Array leer, gibt shift statt eines Elements undef zurück. unshift fügt ein Element (oder eine Liste von Elementen) am Anfang eines Arrays = ("Dino", "Fred", "Barney"); $a = $b = print "$a, $c = = print

Programmierkurs für absolute Anfänger – Sitzung 8 23 Funktion splice (1) Syntax: splice( Array, Offset ); splice( Array, Offset, Länge ); splice( Array, Offset, Länge, Liste ); splice entfernt Elemente aus dem Array, beginnend mit dem Element mit Index Offset, und hat als Rückgabewert die Liste der entfernten Elemente. Wenn nur Array und Offset angegeben sind, werden alle Elemente ab Offset bis zum Ende des Arrays = ("Basalt", "Schiefer", "Granit", = 1); print print

Programmierkurs für absolute Anfänger – Sitzung 8 24 Funktion splice (2) Wenn Länge angegeben ist, werden ab Offset nur Länge Elemente = ("Basalt", "Schiefer", "Granit", = 1, 2); print print Wenn Liste angegeben ist, werden ab Offset Länge Elemente entfernt und durch die Elemente der Liste = ("Basalt", "Schiefer", "Granit", = ("Marmor", "Sandstein", "Kies"); $offset = 2; $offset, print Übung: Das Element "Granit" = ("Basalt", "Schiefer", "Granit", "Lava");

Programmierkurs für absolute Anfänger – Sitzung 8 25 foreach-Schleife Die foreach -Schleife geht eine Liste (ein Array) Element für Element durch. Bei jedem Schleifendurchlauf wird der angegebene Anweisungsblock für jedes Element jeweils einmal ausgeführt. foreach $stein ("Basalt", "Schiefer", "Lava") { print "$stein ist ein Stein.\n"; = ("Basalt", "Schiefer", "Lava"); foreach $stein { $stein = "\t$stein"; $stein.= "\n"; } print "Die Steine sind:\n";

Programmierkurs für absolute Anfänger – Sitzung 8 26 for-Schleife über Arrayindizes (1) Beispiel: Nach kleinster Zahl in einer Datei suchen, in der in jeder Zeile genau eine Zahl = ; $min = $zahlen[0]; for ($i=1; $i<=$#zahlen; $i++) { if ($zahlen[$i] < $min) { $min = $zahlen[$i]; } } print "Die kleinste Zahl ist: $min\n"; Übung: Dasselbe mit einer foreach-Schleife lösen!

Programmierkurs für absolute Anfänger – Sitzung 8 27 for-Schleife über Arrayindizes (2) Beispiel: Array durchlaufen und Differenz zur jeweiligen Nachbarzahl = (2, 999, 9, -45, 162, 5679, 0, -23); for ($i=0; $i<$#zahlen; $i++) { $diff = $zahlen[$i] - $zahlen[$i+1]; print "$diff "; } print "\n";

Programmierkurs für absolute Anfänger – Sitzung 8 28 for-Schleife über Arrayindizes (3) Beispiel: Array durchsuchen, ob es eine negative Zahl = (2, 999, 9, -45, 162, 5679, 0, -23); $gefunden = 0; for ($i=0; !$gefunden && $i<=$#zahlen; $i++) { if ($zahlen[$i] < 0) { $gefunden = 1; } if ($gefunden) { print "Array enthält eine negative Zahl.\n"; } else { print "Array enthält keine negative Zahl.\n"; }

Programmierkurs für absolute Anfänger – Sitzung 8 29 while-Schleife über ein Array Beispiel: Alle Zahlen aus einem Array entfernen, die größer als 100 = (2, 999, 9, -45, 162, 5679, 0, -23); $i = 0; while ($i <= $#zahlen) { if ($zahlen[$i] > 100) { $i, 1); } else { $i++; } print

Programmierkurs für absolute Anfänger – Sitzung 8 30 Beispiel "Kiel Corpus of Read Speech" kkos025.s1h Ich mu~ nach M}nchen. oend Q I C+ m U s+ n a: x+ m 'Y n n. kend c: &0 Q- -q I C+ &0 m U s+ &0 n a: x+ &2^ m 'Y n n. &2. &PGn hend 8416 #c: #& ##Q $-q $I $C #& ##m $U $n # #& #&PGn