Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-1 Perl-Programmierung Einführung in die Programmierung Basiert auf dem Bioinformatik-Vorlesung.

Ähnliche Präsentationen


Präsentation zum Thema: "Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-1 Perl-Programmierung Einführung in die Programmierung Basiert auf dem Bioinformatik-Vorlesung."—  Präsentation transkript:

1 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-1 Perl-Programmierung Einführung in die Programmierung Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig Institute für Genetik, Mikrobiologie und Software

2 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-2 Perl-Programmierung Gliederung Rechneraufbau Algorithmen Programmiersprachen Programmiersprache Perl Operatoren Variablen/Funktionen

3 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-3 Perl-Programmierung Vorwort Ziel: - Verständnis des Funktionsprinzips von Software - Ausführen von Perl-Programmen - Lesen, Verstehen von Perl-Programmen - Umsetzung einfacher Perl-Programme Literatur: - James D. Tisdall: Einführung in Perl für Bioinformatik - Tom Christiansen, Nathan Torkington: Perl Kochbuch

4 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-4 Perl-Programmierung Rechneraufbau

5 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-5 Perl-Programmierung Quelle: Oliver Haase – Uni Konstanz

6 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-6 Perl-Programmierung Quelle: Oliver Haase – Uni Konstanz

7 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-7 Perl-Programmierung Quelle: Oliver Haase – Uni Konstanz

8 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-8 Perl-Programmierung Quelle: Oliver Haase – Uni Konstanz

9 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-9 Perl-Programmierung Steuerung eines Rechners Software: nichtphysische Funktionsbestandteile - Systemsoftware: Ablaufsteuerung der Hardware z. B. Betriebssysteme, Treiber, Interpreter - Anwendungssoftware: Lösung von Problemen, die nicht ursächlich mit Rechnern zu tun haben z. B. Textverarbeitungsprogramme, Datenbanken, Web-Browser, Bioinformatiksoftware - Softwarewerkzeuge: Erstellung von System- und Anwendungsprogrammen - Daten - z. B. Textdatei, Bild, AA-Sequenz

10 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-10 Perl-Programmierung Algorithmen

11 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-11 Perl-Programmierung Algorithmen Ein Algorithmus ist eine Berechnungsvorschrift Die Berechnungen sind aus elementaren Operationen aufgebaut und besitzen Aus- und evtl. Eingabewerte Algorithmen sollen in der Regel terminieren - Ausnahmen: z. B. Betriebssysteme oder sogenannte reaktive Systeme. Determiniert: bei gleichen Eingabedaten stets gleichen Ausgabedaten

12 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-12 Perl-Programmierung Beispiel Algorithmus Kochrezept Plätzchen (Eingabe/Ausgabe) Eingabedaten - 200g Mehl - 100g Butter - 100g Zucker - 1 Priese Salz - 1 Ei Ausgabe - Plätzchen

13 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-13 Perl-Programmierung Beispiel Algorithmus Kochrezept Plätzchen (Ausführungsvorschrift) 1.Mehl auf Arbeitsplatte sieben 2.Magarine in Flöckchen auf dem Rand verteilen 3.Zucker und Salz darauf steuen 4.Verrühertes Ei in Vertiefung giessen 5.Verkneten 6.30 min kalt stellen 7.Ausrollen, Ausstechen 8.20 min Backen

14 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-14 Perl-Programmierung Programm Formulierung eines Algorithmus und seiner Datenbereiche in einer Programmiersprache Eine Programmiersprache erlaubt es, Algorithmen präzise zu beschreiben Festlegung elementarer Operationen Die grundlegenden Aspekte der Algorithmenentwicklung sind: - Lösbarkeit: Gibt es zu meinem Problem einen Algorithmus? - Korrektheit: Löst mein Algorithmus mein Problem? - Komplexität: Welcher Aufwand (z. B. Rechenzeit, Speicherplatz)

15 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-15 Perl-Programmierung Programmiersprachen

16 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-16 Perl-Programmierung Programmiersprachen Einteilung u.a. nach Abstraktion von der Hardware Maschinensprache: - Satz von Zahlencodes (Operation Codes, kurz OpCodes), für CPU-Typen Assemblersprachen: - Darstellung der Zahlencodes der Maschinensprache durch Buchstabenfolgen. - Besser lesbar, aber für die CPU nicht mehr verständlich. - Der Quellcode eines in einer Assemblersprache geschriebenen Programms muss von einem Assembler in die jeweilige Maschinensprache übersetzt werden.

17 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-17 Perl-Programmierung Höhere Programmiersprachen Starke Abstraktion von Hardware/Hardwareunabhängigkeit Übersetzung vor Ausführung in Maschinencode: - Das Übersetzer-Programm heißt hier Compiler - Ausführbare/Übersetzte Programme (binaries) nicht plattformunabhängig - Beispiele: C, JAVA Übersetzung während Ausführung: - Spezielles Programm (Interpreter) übersetzt während der Programmausführung (zur Laufzeit) Schritt für Schritt - etwas langsamere Ausführung - Programme sind plattformunabhängig, - Beispiele: Basic, Perl, UNIX/Windows-Shell-Scripte

18 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-18 Perl-Programmierung Virtuelle Maschinen Mischformen: - Erst übersetzt ein Compiler - den Quellcode in einen kompakteren, Plattform unabhängigen Maschinencode - Ausführung durch plattformspezischen Interpreter Beispiele: Java, Perl,...

19 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-19 Perl-Programmierung Programmiersprache Perl

20 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-20 Perl-Programmierung Der Programminterpreter Perl Perl (Practical Extraction and Report Language) 1987 von Larry Wall Weite Verbreitung in der Bioinformatik: - Frei verfügbar und läuft auf allen Betriebssystemen - Mächtige Textanalyse- und Manipulationsfähigkeiten direkt eingebaut; - gut geeignet zum Extrahieren und Aufbereiten von Informationen aus strukturierten Textdateien (siehe Vorlesungsteil Datenbanken in der Bioinformatik) - praktisch alle Bioinformatikdaten (Sequenzen, Strukturen, Expressionsprofile, biomolekulare Netzwerke...) in Form von Textdateien - Zahlreiche Bibliotheken mit vorprogrammiertem Perl- Code (z. B. BioPerl)

21 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-21 Perl-Programmierung

22 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-22 Perl-Programmierung Perl-Einführungsbeispiel Einführungsbeispiel print "Hello World!\n"; print "How are you\n"; print "I am fine!\n" Ausführung: perl hello.pl Ausgabe: Hello World! How are you

23 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-23 Perl-Programmierung Literale Datentyp Literale: Basisdatentypen Stehen für verschiedene Arten von Daten stehen können: "A " - "ACGGGAGGACGGGAAAATTACTACGGCAATTAGC - "2.7" Numerische Daten (Zahlenwerte): Angabe von Ziffern Einzelne Zeichen und Zeichenketten (Strings): in Anführungszeichen gesetzt Ausgabe am Bildschirm über die print-Anweisung am Bildschirm ausgegeben werden: - print 2.7; print: auch mehrere durch Kommata getrennte Elemente auszugeben: print Kreiskonstante PI: ", 3.141, "\n";

24 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-24 Perl-Programmierung Operatoren

25 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-25 Perl-Programmierung Operatoren Auf den Literalen definierte Funktionen Numerische Operatoren: - print 3 + 2, "\n"; # Addition - print 3 - 2, "\n"; # Subtraktion - print 3 * 2, "\n"; # Multiplikation - print 3 / 2, "\n"; # Division - print 3 ** 2, "\n"; # Potenzierung - print 16 % 7, "\n" # Ganzzahliger Rest Ausgabe:

26 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-26 Perl-Programmierung Zeichenketten Operatoren Verkettung von Strings mittels Punkt-Operator: - print "Hell". "o world!". "\n"; Ausgabe: - Hello world! Kombination von Operatoren: - Addition und Konkatenation - print "17" + "4", "\n"; - print "17". "4", "\n"; Ausgabe: String-Operator ix: hintereinander hängen von Strings: - print "Bioinformatik", " Hurra" x 2, "\n"; Ausgabe: - Bioinformatik Hurra Hurra

27 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-27 Perl-Programmierung Variablen/Funktionen

28 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-28 Perl-Programmierung Variablen Wiederverwendung und Speicherung von Daten Veränderlicher Platzhalter für Literale Beispiel DNA speichern und ausgeben: - $DNA = "ACGGGAGGACGGGAAAATTACTACGGCATT"; print $DNA; Reserviert Platz im Arbeitsspeicher um: - mit Daten zu füllen - später wieder auszulesen Variablen werden durch $ gefolgt von eindeutige Namen identifiziert Literalzuweisungs-Operators = - $Variablenname = 3.141; Kombination mit Operatoren: - $x = $x + 1

29 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-29 Perl-Programmierung Funktionen Rechenvorschrift, die einem oder mehreren Literalen ein Ergebnisliteral zuordnenunter Numerische Funktionen am Beispiel: - print "Die Wurzel aus 64 ist ", sqrt (8**2), ".\n"; - print "Der Kosinus von 0 Grad ist ", cos(0), ".\n"; - print "Der ganzzahlige Wert von ist ", int( 3.141), - ".\n"; Ausgabe: - Die Wurzel aus 64 ist 8. - Der Kosinus von 0 Grad ist 1. - Der ganzzahlige Wert von ist 3.

30 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-30 Perl-Programmierung Zeichenkettenfunktionen Gross- und Kleinbuchstaben - print uc ("Dies ist gross geschrieben.\n"); Ausgabe: - DIES IST GROSS GESCHRIEBEN. Länge einer Zeichenkette ermitteln, z. B.: - print length("abcdefghijklmnopqrstuvwxyz"), "\n"; Ausgabe: - 26 Teilstringextraktion: - $alphabet = "abcdefghijklmnopqrstuvwxyz"; - print substr ($alphabet, 0, 3)."\n"; Ausgabe: - abc Veränderung eines Teile einer Zeichenkette - $text = "Hamoglobin"; - substr($text, 1, 1) = "ae"; Ergebnis: - $text zu Haemoglobin ändern.

31 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-31 Perl-Programmierung Benutzereingaben Interaktion mit dem Programm Operator <> zur Eingabe externer Daten Tastatur: - print "Bitte eine Zeichenkette eingeben: "; - $string1 = ; - print $string1; Datei: - open (SEQUENZ, "data/ecoli.seq"); - $zeile= ; - print $zeile; - close(SEQUENZ);

32 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-32 Perl-Programmierung Einführung in die Programmierung - Teil II Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig Institute für Genetik, Mikrobiologie und Software

33 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-33 Perl-Programmierung Gliederung Programmfluss Konditionalanweisung Schleifen Praxis

34 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-34 Perl-Programmierung Programmfluss

35 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-35 Perl-Programmierung Flusskontrolle Programm: feste Abarbeitungsreihenfolge von Anweisungen Beispiel: Auswertung einer Nutzereingabe - $x = 1; - print $x, ist gerade\n - $x = ; - print $x, ist gerade\n; - print $x, ist ungerade\n; Problem: keine dynamische Auswahl der auszuführenden Anweisung möglich Beispiel: Berechnung des Logarithmus von 256 zur Basis 2 - $x = 256; - $x = $x/2; - print 1. Division:, $x; - $x = $x/2; - print \n2. Division:, $x; $x = $x/2; - print \n8. Division:, $x; Problem: Keine dynamische Anzahl von Wiederholung gleicher Anweisungen

36 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-36 Perl-Programmierung Flusskontrolle Möglichkeiten zur Steuerung - Konditionalanweisung (Bedingungsanweisung, Conditions Statements) - Schleifen (loops) Konditionalanweisung: Bedingte Ausführung von Anweisungen Schleife: Wiederholung einer Gruppe von Anweisungen bis Bedingung fehlschlägt

37 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-37 Perl-Programmierung Konditionalanweisung Beispiel benötigte Konditionalanweisung: - print Bitte 1. Zahl eingeben; - $x = ; - print Bitte 2. Zahl eingeben; - $z = ; - Print x dividiert durch z ergibt;, x/y; Falls Divisor 0 Warnmeldung Je nach Benutzereingabe verschiedene Programmanweisungen nötig Bedingte Ausführung verschiedene Programmabschnitte: - bedingten Verzweigungen im Kontrollfluss

38 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-38 Perl-Programmierung Bedingungsprüfung mit IF-Anweisung Wichtigste Eigenschaft von Konditionalanweisungen: - Testen einer Bedingung Überprüfung der Bedingung ergibt: - entweder Wahr (true) oder - Falsch (false) Wert Bedingung erfüllt (Wahr): - nachfolgende Anweisungen werden ausgeführt Beispiel: Getestete Bedingung ist wahr - $x=1; - if($x==1) { - print "x ist gleich 1\n"; - }

39 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-39 Perl-Programmierung Bedingungsprüfung mit IF-Anweisung Beispiel: Getestete Bedingung ist falsch - $x=1; - if($x==0) { - print "x ist gleich 0\n"; - } Der Test lautet 1 == 0 oder Ist 1 gleich 0? Nicht wahr: Anweisungen werden nicht ausgeführt

40 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-40 Perl-Programmierung Vergleichsoperationen Numerische Vergleiche: - ==ist gleich - < kleiner als - > größer als - <= kleiner oder gleich - >= größer oder gleich - != ungleich

41 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-41 Perl-Programmierung Vergleichsoperationen Vergleiche von Zeichenketten - ($string1 eq $string2)Gleichheit (equal) - ($string1 ne $string2)Ungleichheit (not equal) - ($string1 gt $string2)grösser (greater than) - ($string1 ge $string2)grösser oder gleich (greater or equal) - ($string1 lt $string2)kleiner als (less than) - ($string1 le $string2)kleiner oder gleich (less or equal) - lexikalische Ordnung: "drei gt "zwölf" ist erfüllt

42 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-42 Perl-Programmierung IF-ELSE Anweisung else-Anweisung: - Ausführung bei nicht erfolgreicher Bedingungsprüfung Beispiel: if-else ist wahr - $x=1; - if ($x==1) { - print "x ist gleich 1\n"; - }else { - print "x ist nicht gleich 1\n"; - } Beispiel: if-else ist falsch - $x=7; - if ($x==0) { - print "x ist gleich 0\n"; - }else { - print "x ist nicht gleich 0\n"; - }

43 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-43 Perl-Programmierung unless Anweisung unless-Anweisung (nur wenn nicht) verneinte if-Anweisung: - if (not ) - unless ( ) Beispiel: unless - $x=1; - unless ($x==0) { - print "x ist nicht gleich 0\n"; - }

44 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-44 Perl-Programmierung Verschachtelte IF-Aneisung verschachtelte if-Anweisung - $x=3; - if ($x>1) { - print "x ist größer als 1\n"; - if ($x<10) print "x ist kleiner als 10\n"; - }else { - print "x ist kleiner als 1\n"; - } Schwierige Lesbarkeit: - Welcher Anweisungsblock bzw. Welche else- Anweisung gehört zu welchem if-Anweisung - Lösung: gute Perl Programmierumgebung

45 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-45 Perl-Programmierung Schleifen Lösung zahlreiche Problemstellungen durch einen iterativen Algorithmus: - Annährung an die Lösung durch schrittweise Wiederholung - Jeder neue Berechnung nutzt Ergebnis der vorherigen Berechnung Beispiele: - Zählen von Zeichen in einer Zeichenkette: $anzahl = $anzahl +1 - Aufsummieren: $summe=$summe+$wert - Potenzieren: $potenz=$potenz*$basis Beispiel 2 3 : - $basis=2; - $potenz = basis;2 - $potenz = $potenz*$basis;4 - $potenz = $potenz*$basis;8

46 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-46 Perl-Programmierung Schleifen Schleife: wiederholte Ausführung eines Anweisungsblocks Begrenzt durch geschweiften Klammern: - { - Anweisung1; - Anweisung2; - } Programmiererer muss nicht wissen, wie oft der Anweissungsblock durchgeführt werden muss Perl kennt verschiedene Arten von Schleifen: - while, - until-, - for-, - foreach - und noch mehr

47 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-47 Perl-Programmierung while-Schleife Anweisung while: - Wiederhole solange Bedingung erfüllt Beispiel: while-Schleife - $sequence = "GGGCGGCTTCGAGTGTCGTCGAAGTGA"; - $position=0; - while( substr($sequence,$position,1) ne "A") { - $position=$position+1; - } - print "Erstes A an Position ",$position+1,"\n"; Ausgabe : - Erstes A an Position 12

48 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-48 Perl-Programmierung for-Schleife Komplexe Anweisung for: - Zählvariable, Abbruchbedingung, Zählanweisung Beispiel: for-Schleife - for ($i=0; $i<100; $i = $i +1){ - print "\n $i"; - } Ausgabe : … - 99 Weitere Anweisungen zur Kontrolle einer Schleife - last: Abbruch der Schleife - next: Abbruch des aktuellen Schleifendurchlaufs

49 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-49 Perl-Programmierung PRAXIS - Installation, Ausführung, Beispiele (Übung!)

50 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-50 Perl-Programmierung

51 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-51 Perl-Programmierung

52 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-52 Perl-Programmierung

53 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-53 Perl-Programmierung

54 Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-54 Perl-Programmierung


Herunterladen ppt "Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-1 Perl-Programmierung Einführung in die Programmierung Basiert auf dem Bioinformatik-Vorlesung."

Ähnliche Präsentationen


Google-Anzeigen