Einführung in die
Programmierung
Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig
Institute für Genetik, Mikrobiologie und Software
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-1
Gliederung

Rechneraufbau

Algorithmen

Programmiersprachen

Programmiersprache Perl

Operatoren

Variablen/Funktionen
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-2
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-3
Rechneraufbau
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-4
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-5
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-6
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-7
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-8
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-9
Algorithmen
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-10
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-11
Beispiel Algorithmus



Kochrezept Plätzchen (Eingabe/Ausgabe)
Eingabedaten
- 200g Mehl
- 100g Butter
- 100g Zucker
- 1 Priese Salz
- 1 Ei
Ausgabe
- Plätzchen
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-12
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-13
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)
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-14
Programmiersprachen
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-15
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.
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-16
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-17
Virtuelle Maschinen

Mischformen:
- Erst übersetzt ein Compiler
- den Quellcode in einen kompakteren, Plattform
unabhängigen Maschinencode
- Ausführung durch plattformspezischen Interpreter

Beispiele: Java, Perl, ...
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-18
Programmiersprache Perl
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-19
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 PerlCode (z. B. BioPerl)
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-20
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-21
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-22
Literale 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";
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-23
Operatoren
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-24
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:
-
5
1
6
1.5
9
2
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-25
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:
- 21
- 174

String-Operator ix: hintereinander hängen von Strings:
- print "Bioinformatik", " Hurra" x 2, "\n";

Ausgabe:
- Bioinformatik Hurra Hurra
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-26
Variablen/Funktionen
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-27
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-28
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 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.
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-29
Zeichenkettenfunktionen

Gross- und Kleinbuchstaben

Ausgabe:

Länge einer Zeichenkette ermitteln, z. B.:

Ausgabe:

Teilstringextraktion:

Ausgabe:

Veränderung eines Teile einer Zeichenkette

Ergebnis:
- print uc ("Dies ist gross geschrieben.\n");
- DIES IST GROSS GESCHRIEBEN.
- print length("abcdefghijklmnopqrstuvwxyz"), "\n";
- 26
- $alphabet = "abcdefghijklmnopqrstuvwxyz";
- print substr ($alphabet, 0, 3)."\n";
- abc
- $text = "Hamoglobin";
- substr($text, 1, 1) = "ae";
- $text zu Haemoglobin ändern.
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-30
Benutzereingaben



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);
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-31
Einführung in die
Programmierung
Teil II
Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig
Institute für Genetik, Mikrobiologie und Software
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-32
Gliederung

Programmfluss

Konditionalanweisung

Schleifen

Praxis
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-33
Programmfluss
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-34
Flusskontrolle

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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-35
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-36
Konditionalanweisung

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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-37
Bedingungsprüfung mit IF-Anweisung

Wichtigste Eigenschaft von
Konditionalanweisungen:
-

Überprüfung der Bedingung ergibt:
-

entweder Wahr (true) oder
Falsch (false) Wert
Bedingung erfüllt (Wahr):
-

Testen einer Bedingung
nachfolgende Anweisungen werden ausgeführt
Beispiel: Getestete Bedingung ist wahr
-
$x=1;
if($x==1) {
print "x ist gleich 1\n";
}
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-38
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-39
Vergleichsoperationen

Numerische Vergleiche:
-
==
<
>
<=
>=
!=
ist gleich
kleiner als
größer als
kleiner oder gleich
größer oder gleich
ungleich
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-40
Vergleichsoperationen

Vergleiche von Zeichenketten
-
($string1 eq $string2)
($string1 ne $string2)
($string1 gt $string2)
($string1 ge $string2)
- ($string1 lt $string2)
- ($string1 le $string2)
Gleichheit (equal)
Ungleichheit (not equal)
grösser (greater than)
grösser oder gleich (greater
or equal)
kleiner als (less than)
kleiner oder gleich (less or
equal)
- lexikalische Ordnung:
• "drei“ gt "zwölf" ist erfüllt
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-41
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";
}
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-42
unless 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";
}
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-43
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 elseAnweisung gehört zu welchem if-Anweisung
- Lösung: gute Perl Programmierumgebung
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-44
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 23 :
-
$basis=2;
$potenz = basis;
$potenz = $potenz*$basis;
$potenz = $potenz*$basis;
Vorlesung Einführung in die Bioinformatik -
2
4
8
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-45
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-46
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
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-47
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 :
- 0
- …
- 99

Weitere Anweisungen zur Kontrolle einer Schleife
- last: Abbruch der Schleife
- next: Abbruch des aktuellen Schleifendurchlaufs
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-48
PRAXIS
-
Installation, Ausführung, Beispiele (Übung!)
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-49
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-50
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-51
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-52
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-53
Vorlesung Einführung in die Bioinformatik -
Perl-Programmierung
U. Scholz & M. Lange
Folie #9-54

009