Wh.: for-schleife. Listen (1) Wh.: Schachtelung von for-schleifen. Listen (2) Bereichsoperator.. Programmierkurs für absolute Anfänger

Ähnliche Dokumente
Übersicht. Einführung in Perl Mustersuche III/ Datentypen II. Mehrzeiliges Matching (1) Mehrzeiliges Matching (2) chomp

Einführung in Perl. O'REILLY Beijing Cambridge Farnham Köln Sebastopol Taipei Tokyo. Randal L. Schwartz, Tom Phoenix & brian dfoy

Übersicht. Einführung in Perl Datenstrukturen I. Datentypen Übersicht (1) Kernbegriffe. Kernbegriffe. Einführung der Datentypen.

Variablen - %Hashes Was ist ein Hash? 'Assoziative Arrays'

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

EiP Übung

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Kommandozeileneingabe. Einführung in Perl Kommandozeileneingabe etc. Kommandozeileneingabe Optionen. Kommandozeileneingabe Bsp (1)

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Übersicht Shell-Scripten

Ausgabe:

GI Vektoren

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Schleifen: Immer wieder dasselbe tun

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Arithmetik in der tcsh

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

05 For-Schleifen. For-Schleifen 1/7 Was ist eine Schleife?

Algorithmen und ihre Programmierung -Teil 2-

Der Datentyp String. Stringvariable und -vergleiche

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Perl-Workshop, Teil II

6. Zeiger Allgemeines Definition eines Zeigers

Tag 4 Repetitorium Informatik (Java)

Funktionen in JavaScript

Vorkurs Informatik WiSe 16/17

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Unterschiede in Dateien mit diff

Einführung in die Programmierung für NF MI. Übung 04

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Deshalb ist hello + world = 0. Umgekehrt gilt das Gleiche, weshalb 8 plus 3 gleich 83 ist. Dies ist in Zeile 5 in Terminal 2 gezeigt. In der Regel sol

Referenz (1) Einführung in Perl Referenzen. Zwei Typen von Referenz. Referenz (2) Referenz = Verweis auf andere Daten

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Öffnen einer Datei. Programm mit einer Fehlermeldung beendet. open( IN, "datei.txt" ) or die( "open-fail: $!" );

17. Oktober Ubucon 2010, Universität Göttingen. Eine Einführung in Tcl. Dominik Wagenführ. Einleitung. Grundlagen. Strings.

Programmierkurs Java

EiP Übung

Excel VBA Arrays, Enumeration und benutzerdefinierte Typen

07 Funktionen (Teil I)

Felder (1) Allgemeines

Java I Vorlesung Imperatives Programmieren

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Shell-Scripting Linux-Kurs der Unix-AG

Linux Prinzipien und Programmierung

C++ - Einführung in die Programmiersprache Schleifen

Wirtschaftsinformatik I (Bachelor) SS 07 Prof. Gomber. Python

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Computeranwendung und Programmierung (CuP)

Einführung in die Programmiersprache Perl

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Algorithmen und ihre Programmierung

Einstieg in die Informatik mit Java

Programmierkurs Python I

1 Bizz Buzz Woof (ca =18 Punkte) def read file(file_in): fp = open(file_in, r ) l = fp.read() fp.close() return l

Tag 4 Repetitorium Informatik (Java)

Kapitel 6. Programmierkurs. 6.0 Felder (Arrays) Deklaration von Feldern. Felder (Arrays) Mehrdimensionale Arrays. Birgit Engels, Anna Schulze WS 07/08

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Unix-Shells. mehrere Befehle in einer Zeile. bash: Grundlagen. Ein- und Ausgaben umlenken. Befehle: Dateien und Verzeichnisse (1)

Reguläre Ausdrücke Suchmuster, Pattern Matching

Grundlagen der Programmierung

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Shell-Scripting Linux-Kurs der Unix-AG

RO-Tutorien 3 / 6 / 12

2 Eine einfache Programmiersprache

Funktionen in JavaScript

Informatik II, SS 2014

+ C - Formatierte Eingabe mit scanf()

Musterlösung

3. Anweisungen und Kontrollstrukturen

Die Programmiersprache C99: Zusammenfassung

Verkettete Datenstrukturen: Listen

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Einstieg in die Informatik mit Java

Tag 3 Repetitorium Informatik (Java)

Nachtrag: Funktionen ord und chr. Einführung in Perl für Linguisten Dateihandle, etc. Nachtrag: for und foreach (1) Nachtrag: for und foreach (2)

EiP Übung

Variablen und Listen Was ist ein Array?

Algorithmen implementieren. Implementieren von Algorithmen

Kapitel 3: Variablen

Eine Beschreibung des Programms und der dahinter stehenden Philosophie.

Transkript:

Programmierkurs für absolute Anfänger Listen und Arrays Caren Brinckmann Sommersemester 2005 http://www.coli.uni-saarland.de/~cabr/teaching.php 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 1 Wh.: Schachtelung von for-schleifen gewünschte Ausgabe: 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 Lösung: Schachtelung zweier for-schleifen $maximum = 5; for ($zeile=1; $zeile<=$maximum; $zeile++) { for ($spalte=1; $spalte<=$zeile; $spalte++) { print "$spalte "; print "\n"; 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 Nummern der Elemente (Indizes) 0 1 2 3 4 Werte 35 12.4 undef "Hallo" "Ciao!\n" Programmierkurs für absolute Anfänger Sitzung 8 2 Programmierkurs für absolute Anfänger Sitzung 8 3 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) ($b + $c, "Antwort: $a") # zwei Elemente: der gegen- # wärtige Wert von $a und 17 Programmierkurs für absolute Anfänger Sitzung 8 4 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) (1.7..5.7) # 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 5

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 6 Arrays Array: Variable, die eine Liste enthält In Perl beginnen skalare Variablen mit $ Arrayvariablen beginnen mit @ @meinarray = (1, 3, "a", 20.5); Der Wert einer Arrayvariablen, der noch nichts zugewiesen wurde ist (), die leere Liste. @meinarray = @uninitarray; Achtung: @meinarray und $meinarray sind zwei verschiedene Variablen! Programmierkurs für absolute Anfänger Sitzung 8 7 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 [] zugegriffen: @meinarray = (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 8 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 hat @steine? Welchen Wert hat $steine[50]? Programmierkurs für absolute Anfänger Sitzung 8 9 Spezielle Arrayindizes Index des letzten Elements des Arrays @steine ist $#steine @steine = ("schiefer", "lava", "basalt"); print $steine[$#steine]; Achtung: $#steine ist nicht identisch mit der Anzahl der Elemente in @steine (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 10 Listenzuweisung mit Arrays Ein Array in ein anderes kopieren: @steine = ("schiefer", "lava", "basalt"); @kopie = @steine; 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 ersetzt: @leer = (); $meinstein = "granit"; @steinbruch = (@steine, "kies", @leer, $meinstein); Programmierkurs für absolute Anfänger Sitzung 8 11

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 eingefügt. @steine = ("schiefer", "lava", "basalt"); print "Drei Steine: @steine.\n"; Achtung: Wenn print direkt mit einem Array als Argument aufgerufen wird, so werden die Arrayelemente ohne trennende Leerzeichen ausgegeben! print @steine; 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 nutzlos. @steine = ("Basalt", "Schiefer", "Lava"); reverse @steine; @steine = reverse @steine; @zahlen = reverse 6..10; print "@zahlen\n"; Programmierkurs für absolute Anfänger Sitzung 8 12 Programmierkurs für absolute Anfänger Sitzung 8 13 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 nutzlos. @sortiert = sort(@steine); print "sortiert: @sortiert\n"; @zurueck = reverse sort @steine; print "zurueck: @zurueck\n"; @zahlen = sort 97..102; print "zahlen: @zahlen\n"; 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 14 Programmierkurs für absolute Anfänger Sitzung 8 15 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 Elemente: @leute = ("Fred", "Wilma", "Betty"); @sortiert = sort @leute; $zahl = 5 + @leute; Auch eine Zuweisung (auf einen skalaren Wert oder eine Liste) kann einen unterschiedlichen Kontext bedeuten: @liste = @leute; $n = @leute; Programmierkurs für absolute Anfänger Sitzung 8 16 <STDIN> im Listenkontext Im skalaren Kontext gibt <STDIN> jeweils die nächste Zeile der Standardeingabe zurück. $zeile = <STDIN>; # eine Zeile einlesen Im Listenkontext gibt <STDIN> alle verbleibenden Zeilen bis zum Dateiende zurück. Jede Zeile wird hierbei als eigenes Listenelement behandelt. @zeilen = <STDIN>; # alle Zeilen einlesen chomp(@zeilen); # alle \n entfernen Vorsicht bei sehr großen Dateien: Grenzen des Arbeitsspeichers! Programmierkurs für absolute Anfänger Sitzung 8 17

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 kann. @silben = split(/[-_]/,"ap-fe_lic"); print $silben[2]; Außerdem: Gruppierungen (in runden Klammern gesetzte Muster) im regulären Ausdruck werden als Listenelement mit zurückgeliefert. @silben = split(/([-_])/,"ap-fe_lic"); print $silben[3]; Programmierkurs für absolute Anfänger Sitzung 8 18 Funktion split (2) Wenn zwei Trennmuster direkt aufeinander folgen, gibt split an der Stelle als Element den Leerstring zurück: @felder = split(/:/,"abc:de::fg:hi"); print $felder[2]; @felder = split(/:+/,"abc:de::fg:hi"); print $felder[2]; Leere Elemente zu Beginn der erzeugten Liste werden zurückgegeben, leere Elemente am Ende nicht. @felder = split(/:/,":::abc:de:fg:::"); print $felder[2]; print $#felder; Programmierkurs für absolute Anfänger Sitzung 8 19 Funktion join Syntax: join(kleber, Liste) join verbindet die Elemente der Liste durch die "Kleber"- Zeichenkette und gibt die resultierende Zeichenkette zurück. @zahlen = (1..10); $kette = join ("-", @zahlen); print $kette; print join(":", split(/ */, "hallo du")); print join("\t", reverse(split(/\s+/,"hallo du"))); Programmierkurs für absolute Anfänger Sitzung 8 20 Funktionen: pop und push pop entfernt das letzte Element aus einer Liste und gibt es zurück: @zahlen = (5..9); $zahl1 = pop(@zahlen); $zahl2 = pop @zahlen; pop @zahlen; 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: push(@zahlen, 0); push @zahlen, 8; push @zahlen, 1..5; @andere = (9, 0, 2); push @zahlen, @andere; print "Zahlen: @zahlen\n"; Programmierkurs für absolute Anfänger Sitzung 8 21 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 hinzu. @array = ("Dino", "Fred", "Barney"); $a = shift(@array); $b = shift @array; print "$a, $b, @array\n"; shift @array; $c = shift @array; unshift(@array, 4); @andere = 1..3; unshift @array, @andere; print "Array: @array\n"; Programmierkurs für absolute Anfänger Sitzung 8 22 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 entfernt. @geloescht = splice(@steine, 1); print "@geloescht\n"; Programmierkurs für absolute Anfänger Sitzung 8 23

Funktion splice (2) Wenn Länge angegeben ist, werden ab Offset nur Länge Elemente entfernt. @geloescht = splice(@steine, 1, 2); print "@geloescht\n"; Wenn Liste angegeben ist, werden ab Offset Länge Elemente entfernt und durch die Elemente der Liste ersetzt. @mehrsteine = ("Marmor", "Sandstein", "Kies"); $offset = 2; splice(@steine, $offset, 1, @mehrsteine); Übung: Das Element "Granit" aus @steine entfernen: Programmierkurs für absolute Anfänger Sitzung 8 24 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"; @steine = ("Basalt", "Schiefer", "Lava"); foreach $stein (@steine) { $stein = "\t$stein"; $stein.= "\n"; print "Die Steine sind:\n"; print @steine; Programmierkurs für absolute Anfänger Sitzung 8 25 for-schleife über Arrayindizes (1) Beispiel: Nach kleinster Zahl in einer Datei suchen, in der in jeder Zeile genau eine Zahl steht. @zahlen = <STDIN>; chomp(@zahlen); $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 26 for-schleife über Arrayindizes (2) Beispiel: Array durchlaufen und Differenz zur jeweiligen Nachbarzahl ausgeben. @zahlen = (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 27 for-schleife über Arrayindizes (3) Beispiel: Array durchsuchen, ob es eine negative Zahl enthält. @zahlen = (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 28 while-schleife über ein Array Beispiel: Alle Zahlen aus einem Array entfernen, die größer als 100 sind. @zahlen = (2, 999, 9, -45, 162, 5679, 0, -23); $i = 0; while ($i <= $#zahlen) { if ($zahlen[$i] > 100) { splice(@zahlen, $i, 1); else { $i++; print "@zahlen\n"; Programmierkurs für absolute Anfänger Sitzung 8 29

Beispiel "Kiel Corpus of Read Speech" kkos025.s1h Ich mu~ nach Mnchen. oend Q I C+ m U s+ n a: x+ m 'Y n C @ n. kend c: &0 Q- -q I C+ &0 m U s+ &0 n a: x+ &2^ m 'Y n C @- n. &2. &PGn hend 8416 #c: 0.5259375 8416 #&0 0.5259375 8416 ##Q- 0.5259375 8416 $-q 0.5259375 8416 $I 0.5259375 9587 $C+ 0.5991250 10691 #&0 0.6681250 10691 ##m 0.6681250 11797 $U 0.7372500... 23260 $n 1.4536875 25211 #. 1.5756250 25211 #&2. 1.5756250 25211 #&PGn 1.5756250 Programmierkurs für absolute Anfänger Sitzung 8 30