Einführung in die Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Programmierung: Einführung
Forschungszentrum caesar
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Variablen und Datentypen
Zusammenfassung der Vorwoche
Programmieren in Logik
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Robotik mit LEGO Mindstorms
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Batch-Programmierung Grundlagen
Einführung in die Programmierung Anweisungen und Datentypen
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
20:00.
Einführung in die Programmiersprache C 1
Informatik 1 Übung 2.
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Polynome und schnelle Fourier-Transformation
FORTRAN 77.
Analyse von Ablaufdiagrammen
Das IT - Informationssystem
Dynamische Webseiten-Generierung
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
programmieren des casio FX-7400GII
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
Algorithmen und Datenstrukturen 1 SS 2002
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Das IT - Informationssystem
Anführungszeichen?! echo 'Apfel$atf'; // ergibt: Apfel$aft
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
(Syntax, Strings/Zahlen, Variablen, Arrays)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Datentypen: integer, char, string, boolean
 Präsentation transkript:

Einführung in die Programmierung Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig Institute für Genetik, Mikrobiologie und Software

Gliederung Rechneraufbau Algorithmen Programmiersprachen Programmiersprache Perl Operatoren Variablen/Funktionen

Vorwort Ziel: Literatur: 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

Rechneraufbau

Quelle: Oliver Haase – Uni Konstanz

Quelle: Oliver Haase – Uni Konstanz

Quelle: Oliver Haase – Uni Konstanz

Quelle: Oliver Haase – Uni Konstanz

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

Algorithmen

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

Beispiel Algorithmus Kochrezept Plätzchen (Eingabe/Ausgabe) Eingabedaten 200g Mehl 100g Butter 100g Zucker 1 Priese Salz 1 Ei Ausgabe Plätzchen

Beispiel Algorithmus Kochrezept Plätzchen (Ausführungsvorschrift) Mehl auf Arbeitsplatte sieben Magarine in Flöckchen auf dem Rand verteilen Zucker und Salz darauf steuen Verrühertes Ei in Vertiefung giessen Verkneten 30 min kalt stellen Ausrollen, Ausstechen 20 min Backen

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)

Programmiersprachen

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.

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

Virtuelle Maschinen Mischformen: Beispiele: Java, Perl, ... Erst übersetzt ein Compiler den Quellcode in einen kompakteren, Plattform unabhängigen Maschinencode Ausführung durch plattformspezischen Interpreter Beispiele: Java, Perl, ...

Programmiersprache Perl

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)

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

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

Operatoren

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

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"; 21 174 String-Operator ix: hintereinander hängen von Strings: print "Bioinformatik", " Hurra" x 2, "\n"; Bioinformatik Hurra Hurra

Variablen/Funktionen

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

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.

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"; 26 Teilstringextraktion: $alphabet = "abcdefghijklmnopqrstuvwxyz"; print substr ($alphabet, 0, 3)."\n"; abc Veränderung eines Teile einer Zeichenkette $text = "Hamoglobin"; substr($text, 1, 1) = "ae"; Ergebnis: $text zu Haemoglobin ändern.

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);

Einführung in die Programmierung - Teil II Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig Institute für Genetik, Mikrobiologie und Software

Gliederung Programmfluss Konditionalanweisung Schleifen Praxis

Programmfluss

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; print „“\n2. Division:“, $x; . . . print „“\n8. Division:“, $x; Problem: Keine dynamische Anzahl von Wiederholung gleicher Anweisungen

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

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

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

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

Vergleichsoperationen Numerische Vergleiche: == ist gleich < kleiner als > größer als <= kleiner oder gleich >= größer oder gleich != ungleich

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

IF-ELSE Anweisung else-Anweisung: Beispiel: if-else ist wahr 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"; print "x ist nicht gleich 0\n";

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

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

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

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

while-Schleife Anweisung while: Beispiel: while-Schleife Ausgabe : 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

for-Schleife Komplexe Anweisung for: Beispiel: for-Schleife Ausgabe : 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

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