Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierkurs für absolute Anfänger Wahrheitswerte, Operatoren und Schleifen Caren Brinckmann Sommersemester.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierkurs für absolute Anfänger Wahrheitswerte, Operatoren und Schleifen Caren Brinckmann Sommersemester."—  Präsentation transkript:

1 Programmierkurs für absolute Anfänger Wahrheitswerte, Operatoren und Schleifen Caren Brinckmann Sommersemester 2005

2 Programmierkurs für absolute Anfänger – Sitzung 3 1 Übungen 10 Leute haben das erste Übungsblatt allein bearbeitet bzw. separat abgegeben. Wichtig: Übungspartner finden! Außerdem: Lösungen nur einmal abgeben. Aufgaben gründlich durchlesen, bevor losprogrammiert wird! Erst das Programm mit Hilfe von Kommentaren strukturiert entwerfen, dann programmieren. Auf dem eigenen Notebook programmieren? Freitag, , 10:45h im CIP-Raum: Installation von Perl unter Windows auf Euren Notebooks

3 Programmierkurs für absolute Anfänger – Sitzung 3 2 Vorlesungsstoff Powerpoint-Folien ausdrucken und durcharbeiten Literatur: Ziegler, J. (2002): Programmieren lernen mit Perl. Springer. Schwartz, R. & Christiansen, T. (1997): Learning Perl. O'Reilly. Online-Doku: neue Sprechstunde: Do 14-15h, Zi Vorlesungsstoff rechtzeitig nachbereiten, so dass die Übungsaufgaben in der Übung gelöst werden können.

4 Programmierkurs für absolute Anfänger – Sitzung 3 3 UNIX / Linux-Kenntnisse Dies ist kein UNIX/Linux-Kurs... Literatur im Handapparat in der Bibliothek: Wolfinger, Christine (2002): Keine Angst vor UNIX. Springer. Linux-Kursmaterial: Liste elementarer Unix-Befehle: sgi/sgi/unixeinfuehrung1 sgi/sgi/unixeinfuehrung1 Buch und/oder freundlichen Helfer schnappen, und elementare Grundkenntnisse selbstständig aneignen! Angebot von Martin: Fr, , 14:30h im CIP-Raum: Einführung in elementare Unix-Befehle und Beantwortung aller sonstigen Fragen. Wer hat Interesse?

5 Programmierkurs für absolute Anfänger – Sitzung 3 4 Wiederholung (1) Namen von Perl-Programmen enden auf.pl Der Quellcode des Programms kann mit einem beliebigen Texteditor erstellt und gespeichert werden. Das Perl-Programm meinprogramm.pl wird ausgeführt mit folgendem Befehl: perl -w meinprogramm.pl Wenn der Perl-Interpreter keine Fehlermeldungen ausgibt und das Programm läuft, heißt das nur, dass es syntaktisch korrekt ist. Trotzdem kann es noch semantische Fehler enthalten. Jedes Programm muss daher ausgiebig getestet werden: Nicht nur den Standardfall testen, sondern alle Möglichkeiten, die auftreten können, abdecken!

6 Programmierkurs für absolute Anfänger – Sitzung 3 5 Wiederholung (2) Innerhalb eines Perl-Programms wird jede Anweisung mit einem Semikolon ; abgeschlossen. Kommentarzeilen beginnen mit # In Variablen werden Werte gespeichert. Namen von skalaren Variablen, d.h. Variablen, die genau einen Wert speichern, beginnen in Perl mit dem Dollar-Zeichen $ Lesen einer Zeile (mit Zeilentrennzeichen) von der Standardeingabe (Tastatur): $zeile = ; Funktionsaufruf: Funktionsname ( Argument ) $wortlaenge1 = length($wort); $wortlaenge2 = length("abakadabra"); Funktion chomp schneidet das letzte Zeichen einer Zeichenkette ab, wenn dieses das Zeilentrennzeichen \n ist. chomp $zeile; ## Variante: chomp($zeile);

7 Programmierkurs für absolute Anfänger – Sitzung 3 6 Wiederholung (3) Verwechslungsgefahr: arithmetischer Gleichheitsoperator == Zuweisungsoperator = Bedingte Anweisungen: if ( Bedingung_1 ) { Anweisungsblock_1 } elsif ( Bedingung _2 ) { Anweisungsblock_2... } else { Anweisungsblock_sonst }

8 Programmierkurs für absolute Anfänger – Sitzung 3 7 Nachtrag: \t und ** Häufig benötigtes Sonderzeichen: Tabulator-Zeichen \t print "$spalte1\t$spalte2\t$spalte3\n"; Weiterer arithmetischer Operator: Exponent ** $x = 2 ** 7; 2 7 = 128 $y = 9 ** 2; 9 2 = 81

9 Programmierkurs für absolute Anfänger – Sitzung 3 8 weitere Funktionen Wurzelfunktion: sqrt $zahl = 15; $wurzel = sqrt($zahl); ## -> Nachkommastellen abschneiden: int $ganzezahl = int($wurzel); ## -> 3 Zufallszahl: rand rand($zahl) liefert eine zufällige Kommazahl zwischen 0 (inklusive) und $zahl (exklusiv). $zufallskommazahl = rand($zahl); ## Zufallszahl zwischen 0 und mehrere Funktionen/Operatoren in einem Ausdruck: $ganzezufallszahl = int(rand($zahl) + 1); ## ganze Zufallszahl zwischen 1 und 15 (inkl.)

10 Programmierkurs für absolute Anfänger – Sitzung 3 9 Schachtelung von Blöcken Innerhalb eines if -Blocks kann es weitere if -Blöcke geben Schachtelung Schachtelung kann beliebig tief werden. wichtig: korrekte Klammerstruktur und korrekte Einrücktiefe! if ($zahl = = 1) {... if ($teiler == 0) {... }... } else {... if ($teiler > 0) {... }

11 Programmierkurs für absolute Anfänger – Sitzung 3 10 Zahlen und Zeichenketten Eine Zeichenkette, die nur aus Ziffern besteht, kann als Zahl interpretiert werden. $string = "43"; $zahl = 27; $resultat = $string + $zahl; $resultat erhält den Wert 70 Eine Zeichenkette, die keine Ziffern enthält, wird im arithmetischen Kontext als 0 interpretiert. $resultat = "Hallo" + 5; $resultat erhält den Wert 5

12 Programmierkurs für absolute Anfänger – Sitzung 3 11 Initialisierung von Variablen Eine Variable, die nicht initialisiert wurde, d.h. der noch nie ein Wert zugewiesen wurde, hat in Perl den speziellen Wert undef. Wenn eine nicht-intialisierte skalare Variable in einem Ausdruck verwendet wird, so erhält sie automatisch als initialen Wert den Null-String "". $resultat = $undefiniert + 2; $resultat erhält den Wert 2 Nach Möglichkeit sollten alle Variablen bei ihrem ersten Vorkommen im Programm initialisiert werden.

13 Programmierkurs für absolute Anfänger – Sitzung 3 12 Wahrheitswerte in Perl falsch: 0 (die Zahl 0) "0" (die Zeichenkette 0) "" (die leere Zeichenkette) undef (Wert einer Variablen, die noch nicht initialisiert wurde) wahr: alle anderen Werte!

14 Programmierkurs für absolute Anfänger – Sitzung 3 13 Beispiel: Wahrheitswerte $a=3; if($a) { print "A";} else { print "B";} if(0) { print "C";} else { print "D";} if("0"){ print "E";} else { print "F";} if("") { print "G";} else { print "H";} if($x) { print "I";} else { print "J";} if(3.1415) { print "K";} else { print "L";} if("abel") { print "M";} else { print "N";} if($x == $a) { print "O";} else { print "P";} if($x = $a) { print "Q";} else { print "R";}

15 Programmierkurs für absolute Anfänger – Sitzung 3 14 Flaggen und Boole'sche Variablen Flagge: Variable, die nur kleine ganzzahlige Werte annimmt und an bestimmten Stellen Auskunft darüber gibt, ob bestimmte Bedingungen erfüllt sind oder nicht. Boole'sche Variable: Flagge, die nur zwei Werte annimmt. $gefunden = 0; # Suche... if ($gefunden) { #... } else { #... }

16 Programmierkurs für absolute Anfänger – Sitzung 3 15 Zuweisungsoperatoren $zahl = $zahl + 2; äquivalent: $zahl += 2; ebenso: -=*=/=%=**=.= $zahl = 3; $zahl += 5; $zahl -= 6; $zahl *= 10; $zahl /= 4; $zahl %= 3; $zahl **= 3; $string = "rosa"; $string.= "rot";

17 Programmierkurs für absolute Anfänger – Sitzung 3 16 Inkrement- und Dekrementoperator $zahl = $zahl + 1; einfacher: $zahl += 1; noch einfacher: $zahl++; ebenso: $zahl = $zahl - 1; einfacher: $zahl -= 1; noch einfacher: $zahl--;

18 Programmierkurs für absolute Anfänger – Sitzung 3 17 Zeichenketten-Wiederholungsoperator $string = "so" x 3; sososo $string x= 2; sosososososo $laut = "t"; $wiederholungen = 5; $zeichenkette = $laut x $wiederholungen;

20 Programmierkurs für absolute Anfänger – Sitzung 3 19 Beispiel $x=3.000; $y=3.001; $z="3"; if($x == $y) {print "A";} if($x != $y) {print "B";} if($x < $y) {print "C";} if($x <= $y) {print "D";} if($x > $y) {print "E";} if($x >= $y) {print "F";} if($x == $z) {print "G";} if($y != $z) {print "H";}

21 Programmierkurs für absolute Anfänger – Sitzung 3 20 Rundungsfehler Durch die interne Darstellung von Kommazahlen kann es zu Rundungsfehlern kommen. $wert1 = 14.3; $wert2 = ; if ($wert1 == $wert2) { print "wert1 ist gleich wert2\n"; } else { print "wert1 und wert2 sind verschieden\n"; } Fazit: Vorsicht beim Vergleich von Kommazahlen!

22 Programmierkurs für absolute Anfänger – Sitzung 3 21 Lexikographische Vergleichsoperatoren Vergleich von Zeichenketten alphabetische Sortierung: die ASCII-Werte der Buchstaben werden verglichen eq gleich ne ungleich lt kleiner gt größer le kleiner gleich ge größer gleich

23 Programmierkurs für absolute Anfänger – Sitzung 3 22 Beispiel $s1="abba"; $s2="abbb"; if($s1 eq $s2) {print "A";} if($s1 ne $s2) {print "B";} if($s1 lt $s2) {print "C";} if($s1 le $s2) {print "D";} if($s1 gt $s2) {print "E";} if($s1 ge $s2) {print "F";} $x=24; $y=1111; if($x gt $y) {print "G";}

24 Programmierkurs für absolute Anfänger – Sitzung 3 23 Übung Folgendes Programm enthält einen beliebten Fehler. Das Programm druckt "Alter Schwede!". Warum? $name = "Otto"; # irgendein Code, der $name nicht verändert #... if ($name = = "Samar") { print "Alter Schwede!\n"; }

25 Programmierkurs für absolute Anfänger – Sitzung 3 24 Logische Operatoren – Motivation if ($kontostand <= 0) { if ($dispo == 0) { print "Sie dürfen kein Geld abheben.\n"; } if (($kontostand <= 0) && ($dispo == 0)) { print "Sie dürfen kein Geld abheben.\n"; } äquivalent:

26 Programmierkurs für absolute Anfänger – Sitzung 3 25 Logische Operatoren nicht: ! und not und: && und and oder: || und or Die Varianten unterscheiden sich nur in ihrer Präzedenz: ! hat eine höhere Präzedenz als not, && eine höhere Präzedenz als and, und || hat eine höhere Präzedenz als or.

27 Programmierkurs für absolute Anfänger – Sitzung 3 26 Präzedenz der Operatoren in absteigender Präzedenz: (Inkrement, Dekrement) ** (Exponent) ! + - (logisches nicht, unäres plus, unäres minus) * / % x (mal, durch, modulo, String-Wiederholung) + -. (binäres plus, binäres minus, String-Konkatenation) = lt gt le ge == != eq ne && (logisches und) || (logisches oder) = += -= *= etc. (Zuweisungsoperatoren) not (logisches nicht) and (logisches und) or (logisches oder)

28 Programmierkurs für absolute Anfänger – Sitzung 3 27 Beispiel $x=1; $y=2; if ($y<$x || $y==2) { print "A"; } if ($y<$x && $y==2) { print "B"; } if (! ($x<$y)) { print "C"; } if (! $x<$y ) { print "D"; } if (! $x) { print "E"; } if (!($y<$x) && $y==2 || $x==3) { print "F"; } if (!($y<$x && $y==2 || $x==3)) { print "G"; }

29 Programmierkurs für absolute Anfänger – Sitzung 3 28 Übung Schreibe ein Programm, das Folgendes leistet: Drei Zahlen x, y und z werden eingelesen. Wenn y zwischen x und z liegt, wird "DRINNEN" ausgegeben. Lösung: $x= ; chomp $x; $y= ; chomp $y; $z= ; chomp $z; if (($x<$y && $y<$z) || ($z<$y && $y<$x)) { print "DRINNEN\n"; }

30 Programmierkurs für absolute Anfänger – Sitzung 3 29 Abgekürzte Auswertung Ein komplexer Ausdruck wird immer von links nach rechts ausgewertet. Der Perl-Interpreter bricht die Auswertung ab, sobald das Ergebnis feststeht: Ausdruck1 && Ausdruck2 Wenn Ausdruck1 falsch ist, wird Ausdruck2 gar nicht mehr ausgewertet. Ausdruck1 || Ausdruck2 Wenn Ausdruck1 wahr ist, wird Ausdruck2 gar nicht mehr ausgewertet. Beispiel: Division durch 0 vermeiden $a = 0; $b = 3; $resultat = $a && ($b / $a);

31 Programmierkurs für absolute Anfänger – Sitzung 3 30 while-Schleife Beispiel: Alle Zahlen von 1 bis 1000 aufzählen. print "1\n"; print "2\n"; print "3\n";... $zahl = 1; while ($zahl<=1000) { print "$zahl\n"; $zahl++; } Syntax: while ( Bedingung ) { Anweisungsblock } Anweisungsblock wird ausgeführt, solange Bedingung wahr ist.

32 Programmierkurs für absolute Anfänger – Sitzung 3 31 Programme mit Daten füttern Normalfall: Standardeingabe STDIN wird von der Tastatur bezogen. Ein Programm kann seine Standardeingabe aber auch aus einer Datei beziehen: Aufruf auf der Kommandozeile mit dem " < "- Symbol Beispiel: $ perl programm.pl < datei.txt Durchforsten der Standardeingabe: Zeile für Zeile aus der Standardeingabe lesen, bis diese leer ist. while ($zeile = ) { ## mach was mit $zeile } Übung: Programm, das eine Datei mit Namen einliest, und nur die Namen ausgibt, die mehr als 5 Buchstaben haben.

33 Programmierkurs für absolute Anfänger – Sitzung 3 32 Funktion split Die Funktion split teilt eine Zeichenkette in mehrere Zeichenketten auf. Syntax: split(/ Trennzeichen /, Zeichenkette ) Beispiel: $zeile1 = "g-40"; ($laut1,$dauer1) = split(/-/,$zeile1); print "Laut: $laut1\nDauer: $dauer1\n"; $zeile2 = "g\t40";## Tabulatorzeichen \t ($laut2,$dauer2) = split(/\t/,$zeile2); print "Laut: $laut2\nDauer: $dauer2\n"; $zeile3 = "h\t50-70"; ($laut3,$dauer3) = split(/\t/,$zeile3); print "Laut: $laut3\nDauer: $dauer3\n";

34 Programmierkurs für absolute Anfänger – Sitzung 3 33 Beispiel: Lautdauern aufsummieren $gesamtdauer = 0; while ($zeile = ) { chomp $zeile; ($laut,$dauer) = split(/,/,$zeile); $gesamtdauer += $dauer; } print "Gesamtdauer: $gesamtdauer\n"; g,40 u:,156 n,80 t,72 a:,267 k,91 lautdauern.txtgesamtdauer.pl Aufruf: perl -w gesamtdauer.pl < lautdauern.txt

35 Programmierkurs für absolute Anfänger – Sitzung 3 34 Beispiel: Passwortabfrage Folgendes Programm fordert den Benutzer solange zur Eingabe eines Passworts auf, bis er das Passwort "coli" eingibt: $passwort = ""; while ($passwort ne "coli") { print "Passwort: "; $passwort = ; chomp $passwort; } print "Das Passwort ist richtig!\n";


Herunterladen ppt "Programmierkurs für absolute Anfänger Wahrheitswerte, Operatoren und Schleifen Caren Brinckmann Sommersemester."

Ähnliche Präsentationen


Google-Anzeigen