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

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

Embed Size (px)

Citation preview

Page 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

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

Einführung in die Einführung in die ProgrammierungProgrammierung

Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig

Institute für Genetik, Mikrobiologie und Software

Page 2: 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

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

GliederungGliederung

Rechneraufbau

Algorithmen

Programmiersprachen

Programmiersprache Perl

Operatoren

Variablen/Funktionen

Page 3: 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

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

VorwortVorwort

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

Page 4: 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

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

RechneraufbauRechneraufbau

Page 5: 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

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

Quelle: Oliver Haase – Uni Konstanz

Page 6: 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

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

Quelle: Oliver Haase – Uni Konstanz

Page 7: 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

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

Quelle: Oliver Haase – Uni Konstanz

Page 8: 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

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

Quelle: Oliver Haase – Uni Konstanz

Page 9: 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

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

Steuerung eines RechnersSteuerung 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

Page 10: 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

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

AlgorithmenAlgorithmen

Page 11: 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

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

AlgorithmenAlgorithmen

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

Page 12: 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

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

Beispiel AlgorithmusBeispiel Algorithmus

Kochrezept Plätzchen (Eingabe/Ausgabe)

Eingabedaten- 200g Mehl- 100g Butter- 100g Zucker- 1 Priese Salz- 1 Ei

Ausgabe- Plätzchen

Page 13: 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

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

Beispiel AlgorithmusBeispiel Algorithmus

Kochrezept Plätzchen (Ausführungsvorschrift)

1. Mehl auf Arbeitsplatte sieben2. Magarine in Flöckchen auf dem Rand

verteilen3. Zucker und Salz darauf steuen 4. Verrühertes Ei in Vertiefung giessen5. Verkneten6. 30 min kalt stellen7. Ausrollen, Ausstechen8. 20 min Backen

Page 14: 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

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

ProgrammProgramm

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)

Page 15: 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

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

ProgrammiersprachenProgrammiersprachen

Page 16: 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

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

ProgrammiersprachenProgrammiersprachen

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.

Page 17: 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

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

Höhere ProgrammiersprachenHö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

Page 18: 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

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

Virtuelle MaschinenVirtuelle Maschinen

Mischformen:- Erst übersetzt ein Compiler- den Quellcode in einen kompakteren, Plattform

unabhängigen Maschinencode- Ausführung durch plattformspezischen Interpreter

Beispiele: Java, Perl, ...

Page 19: 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

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

Programmiersprache PerlProgrammiersprache Perl

Page 20: 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

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

Der Programminterpreter PerlDer 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)

Page 21: 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

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

Page 22: 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

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

Perl-EinführungsbeispielPerl-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

Page 23: 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

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

Literale DatentypLiterale Datentyp

Literale: Basisdatentypen Stehen für verschiedene Arten von Daten stehen können:

- 2- 2.7- -10- "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";

Page 24: 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

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

OperatorenOperatoren

Page 25: 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

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

OperatorenOperatoren

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:- 5- 1- 6- 1.5- 9- 2

Page 26: 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

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

Zeichenketten OperatorenZeichenketten 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:- 21- 174

String-Operator ix: hintereinander hängen von Strings:- print "Bioinformatik", " Hurra" x 2, "\n";

Ausgabe:- Bioinformatik Hurra Hurra

Page 27: 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

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

Variablen/FunktionenVariablen/Funktionen

Page 28: 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

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

VariablenVariablen

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

Page 29: 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

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

FunktionenFunktionen

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 3.141 ist ", int( 3.141),- ".\n";

Ausgabe:- Die Wurzel aus 64 ist 8.- Der Kosinus von 0 Grad ist 1.- Der ganzzahlige Wert von 3.1415926 ist 3.

Page 30: 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

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

ZeichenkettenfunktionenZeichenkettenfunktionen

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.

Page 31: 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

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

BenutzereingabenBenutzereingaben

Interaktion mit dem Programm Operator <> zur Eingabe externer Daten Tastatur: <STDIN>

- print "Bitte eine Zeichenkette eingeben: ";- $string1 = <STDIN>;- print $string1;

Datei:- open (SEQUENZ, "data/ecoli.seq");- $zeile=<SEQUENZ>;- print $zeile;- close(SEQUENZ);

Page 32: 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

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

Einführung in die Einführung in die ProgrammierungProgrammierung

--Teil IITeil II

Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig

Institute für Genetik, Mikrobiologie und Software

Page 33: 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

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

GliederungGliederung

Programmfluss

Konditionalanweisung

Schleifen

Praxis

Page 34: 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

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

ProgrammflussProgrammfluss

Page 35: 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

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

FlusskontrolleFlusskontrolle

Programm: feste Abarbeitungsreihenfolge von Anweisungen

Beispiel: Auswertung einer Nutzereingabe- $x = 1;- print $x,“ ist gerade\n“- $x = <STDIN>;- 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

Page 36: 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

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

FlusskontrolleFlusskontrolle

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

Page 37: 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

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

KonditionalanweisungKonditionalanweisung

Beispiel benötigte Konditionalanweisung:

- print ”Bitte 1. Zahl eingeben”;- $x = <STDIN>;- print ”Bitte 2. Zahl eingeben”;- $z = <STDIN>;- 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

Page 38: 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

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

Bedingungsprüfung mit IF-Bedingungsprüfung mit IF-AnweisungAnweisung

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";- }

Page 39: 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

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

Bedingungsprüfung mit IF-Bedingungsprüfung mit IF-AnweisungAnweisung

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

Page 40: 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

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

VergleichsoperationenVergleichsoperationen

Numerische Vergleiche:

- == ist gleich- < kleiner als- > größer als- <= kleiner oder gleich- >= größer oder gleich- != ungleich

Page 41: 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

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

VergleichsoperationenVergleichsoperationen

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

Page 42: 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

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

IF-ELSE AnweisungIF-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";- }

Page 43: 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

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

unless Anweisungunless Anweisung

unless-Anweisung („nur wenn nicht“) verneinte if-Anweisung:

- if (not <Bedingung>)- unless (<Bedingung>)

Beispiel: unless- $x=1;- unless ($x==0) {- print "x ist nicht gleich 0\n";- }

Page 44: 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

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

Verschachtelte IF-AneisungVerschachtelte 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

Page 45: 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

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

SchleifenSchleifen

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 23 :- $basis=2;- $potenz = basis; 2- $potenz = $potenz*$basis; 4- $potenz = $potenz*$basis; 8

Page 46: 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

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

SchleifenSchleifen

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

Page 47: 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

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

while-Schleifewhile-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

Page 48: 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

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

for-Schleifefor-Schleife

Komplexe Anweisung for:- Zählvariable, Abbruchbedingung, Zählanweisung

Beispiel: for-Schleife

- for ($i=0; $i<100; $i = $i +1){- print "\n $i";- }

Ausgabe :- 0- …- 99

Weitere Anweisungen zur Kontrolle einer Schleife- last: Abbruch der Schleife- next: Abbruch des aktuellen Schleifendurchlaufs

Page 49: 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

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

PRAXISPRAXIS--

Installation, Ausführung, Beispiele (Übung!)Installation, Ausführung, Beispiele (Übung!)

Page 50: 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

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

Page 51: 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

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

Page 52: 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

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

Page 53: 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

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

Page 54: 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

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