Modellierung und Programmierung 1

Ähnliche Dokumente
Programmiersprachen und Programmierkonzepte

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Funktionale Programmierung (in Clojure)

Primzahlen und RSA-Verschlüsselung

Lehrpläne NRW Sek.stufe 2. Lernen im Kontext

Grundlagen der Theoretischen Informatik, SoSe 2008

2 Grundlagen der Programmierung

Programmieren was ist das genau?

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Dr. Monika Meiler. Inhalt

Programmieren in Haskell Einführung

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Konzepte der Informatik

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

1 Informationelle Systeme begriffliche Abgrenzung

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Schulcurriculum Informationstechnische Grundkenntnisse und Informatik Stand:

Java Kurs für Anfänger Einheit 5 Methoden

HISTORISCHES INFORMATIK-MUSEUM DER UNIVERSIDAD POLITECNICA DE MADRID

Mikrocontroller Grundlagen. Markus Koch April 2011

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Programmiersprachen und Übersetzer

Objektorientierte Programmierung

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Im Original veränderbare Word-Dateien

Wenn keine Verbindung zwischen den Computern besteht, dann bist du offline.

Facharbeit Informatik. Thema:

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Grundbegriffe der Informatik

Statuten in leichter Sprache

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Kontrollstrukturen - Universität Köln

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Computergruppe Heimerdingen Basiskurs. Karlheinz Wanja & Richard Zeitler

Einführung in die Java- Programmierung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Grundlagen der Künstlichen Intelligenz

Programmierkurs Java

Staatlich geprüfter EDV-Führerschein

Informationsblatt Induktionsbeweis

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Was ist Logische Programmierung?

Softwareentwicklung Allgemeines und prozedurale Konstrukte

I.1 Die Parrot Assemblersprache

Informatik 1 Tutorial

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Mächtigkeit von WHILE-Programmen

Grundlagen der Informatik

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

1 Mathematische Grundlagen

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik Was ist Informatik? Teilgebiete der Informatik 8

IT-Basics 2. DI Gerhard Fließ

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Zeichen bei Zahlen entschlüsseln

Arbeiten mit UMLed und Delphi

Kapitel 1: Einführung

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

Informatik I. Übung 01. Olga Diamanti

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Einführung in PHP. (mit Aufgaben)

Woche 1: Was ist NLP? Die Geschichte des NLP.

Lehreinheit H1 Hardware Grundlagen

Unified Modeling Language (UML)

Einführung in die Informatik

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Informatik für Ingenieure

Modellierung und Programmierung 1

Installationsanleitung für das KKL bzw. AGV4000 Interface

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Tutorium zur Mikroökonomie II WS 02/03 Universität Mannheim Tri Vi Dang. Aufgabenblatt 3 (KW 44) ( )

Gussnummern-Lesesystem

Installation OMNIKEY 3121 USB

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Eigene Dokumente, Fotos, Bilder etc. sichern

Die Größe von Flächen vergleichen

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Node Locked Lizenzierung für Solid Edge V19 bis ST3

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

IBM SPSS Statistics Version 23. Einführung in Installation und Lizenzierung

Programmierkurs Python I

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Übungen zu C++ Kapitel 1

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Anwendungshinweise zur Anwendung der Soziometrie

VHDL Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010

Simplex-Umformung für Dummies

Aber zuerst: Was versteht man unter Stromverbrauch im Standby-Modus (Leerlaufverlust)?

Transkript:

Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015

Automat versus Computer Ein Automat ist eine Maschine, die ein eingeschränktes, vorbestimmtest Set von Operationen, üblicherweise Aktionen, selbsttätig ( automatisch ) ausführen kann. Beispiele: Kaugummiautomat, Geldautomat. Ein Computer, auch Rechner genannt, ist ein Gerät, das programmiert werden kann, um eine Folge arithmetische oder logische Operationen selbsttätig auszuführen. Er kann verschiedene Aufgaben/Probelm lösen. Ein Computer ermöglicht Elektronische DatenVerarbeitung (EDV).

Hardware- und Softwarekomponenten Hardware ist der Überbegriff für die materiellen Bestandteile eines Computers, die mechanische und elektronische Ausrüstung. zum Beispiele: Motherboard, RAM, Festplatte, Tastatur, Maus, Monitor, Grafikkarte, Soundkarte... Software ist der Überbegriff für die immateriellen Bestandteile eines Computers. Sie umfasst maschinenlesbare Anweisungen (Programme) und Daten, die zusammen mit der Hardware, den Computer für ein definiertes Aufgabenspektrum nutzbar macht. Beispiele: Betriebssystem, Texteditor, Bowser, Tetris Software kann auch die Softwaredokumentation und zogehörige Daten (z.b. Schriftarten, Grafiken, Vorlagen) enthalten.

Hauptkomponenten eines Computer Von-Neumann-Architektur ( Princton Architecture ) (1945) Die CPU (central processing unit) besteht aus arithmetical and logical unit (ALU), z.d. Rechenwerk elektrische Schaltungen realisieren die Basisoperationen des Rechners control unit (CU), z.d. Steuerwerk versorgt die ALU mit Anweisungen, und Daten aus dem Speicher Ein Computer mit Von-Neumann-Architektur speichert Programm und Daten im selben Speicher.

Wie wird ein Problem in ein Program umgesetzt? Kommunikation Sprache Uebersetzung

Hierarchie von Programmen Algorithmen und Datenstrukturen Modellierung und Programmierung Theoretische Informatik Technische Informatik Problem Analyse Algorithmus algorithm Programmierung coding Hoehere Programmiersprachen source code Compiler oder Interpreter Assemblersprache assembler code Assembler Maschinensprache mashine code CPU probelmorientierte Programmierung maschinenorientierte Programmierung Ein Algorithmus ist eine präzise, das heißt in einer festgelegten Sprache abgefasste, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer Verarbeitungsschritte zur Lösung einer Aufgabe. Ein Programm legt in einer bestimmten Programmiersprache fest, welche Anweisungen in welcher Reihenfolge zur Lösung der Aufgabe, unter Verwendung der vorhandenen (Basis-)Operationen, durchgeführt werden müssen.

Nehmen wir an, wir ha tten das folgende Problem... Aufgabe: Bestimme den gro ßten gemeinsamen Teiler (ggt) r zweier natu rlicher Zahlen m und n (wobei m gro ßer n). Der gro ßten gemeinsamen Teiler. Hmm, was war denn das, wie ging denn das?

Beispiel: Euklidscher Algorithmus Aufgabe: Bestimme den größten gemeinsamen Teiler (ggt) r zweier natürlicher Zahlen m und n (wobei m größer n). Algorithmus in natürlicher Sprache (deutsch): Im ersten Schritt dividiere m durch n und bestimme Quotient und Rest. In jedem weiteren Schritt wird mit dem Divisor und dem Rest des vorhergehenden Schritts eine erneute Division mit Rest durchgeführt. Und zwar so lange, bis der Rest Null ist. Der Divisor der letzten Division ist der größten gemeinsamen Teiler von m und n. Dividend Divisor Quotient 2244 14 144 / 21 = 106 18 Rest 2244 = 106 21 + + 18

Beispiel: Euklidscher Algorithmus Aufgabe: Bestimme den größten gemeinsamen Teiler (ggt) r zweier natürlicher Zahlen m und n (wobei m größer n). Algorithmus in formaler Sprache: m; r 0 = n; m = q 1 r 0 + r 1 r 0 = q 2 r 1 + r 2 r 1 = q 3 r 2 + r 3. r n 1 = q n+1 r n + 0 ggt (m, n) = r n

Beispiel: Programm Achtung! Bevor wir mit dem Programmieren loslegen, müssen wir wissen, mit welchen Basisoperationen und Arbeitsanweisungen wir arbeiten können. d.h. welche Basisoperationen kann der Computer durchführen und welche Arbeitsanweisungen versteht er? Als Beispiel sei folgender Modellrechner gegeben...

Beschreibung des Modellrechners

Beschreibung des Modellrechners

ggt-program Version 1 Aufgabe: Bestimme den größten gemeinsamen Teiler r zweier natürlicher Zahlen m und n (wobei m größer n).

ggt-program Version 1 Aufgabe: Bestimme den größten gemeinsamen Teiler r zweier natürlicher Zahlen m und n (wobei m größer n).

Beispiel: Programm ggt Version 2 Rekursion (ein Programm bzw. Teilprogramm ruft sich selber auf) Zu einem Algorithmus kann man verschiedene Programme formulieren, zum einen in Abhängigkeit von den vorhandenen Basisoperationen, zum anderen aber auch in Abhängigkeit von den verwendeten Arbeitsanweisungen.

Programmsyntax Die Syntax eines Programms definiert die Struktur eines Programs, die Möglichkeiten der Zusammensetzung von Basisoperationen und Anweisungen. Übliche Formen der Darstellung sind die Backus-Naur-Form (BNF) und die Syntaxdiagramme ( railroad presentation of syntax ) Tritt eine Abfolge von Opertationen und Anweisungen auf, die von der Syntax nicht vorgesehen ist, so kommt es zu einem Syntaxfehler (Syntax error.)

Modellrechner Backus-Naur-Form

Modellrechner Syntaxdiagramme

Programmierparadigmen Imperative Programmierung Funktionale Programmierung Logische Programmierung Objektorientierte Programmierung hybride Programmiersprachen

Imperative Programmierung Imperative von lat. imperare, anordnen, befehlen Ein Programm besteht aus einer Folge von Anweisungen, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll. Variablen, Werzuweisungen und Schleifen stellen die wichtigsten Konzepte dar. Prozedurale Programmierung ist eine Erweiterung der ipmerative Programmierung. Sie erlaubt die Zerlegung eines Algorithmus in Teile, die Prozeduren, Unterprogramme, Routinen oder Funktionen genannt werden. Beispiele: ALGOL, Fortran, Pascal, Perl, C

Funktionale Programmierung Das Programm ist eine mathematischen Funktion. Eine funktionale Programmiersprache ist eine Programmiersprache, die Elemente zur Kombination und Transformation von Funktionen anbietet. Sie verwendet Funktionen und Rekursionen, kommt aber ohne Schleifen und Zuweisungen aus. Beispiele: Lisp bzw. Scheme, Haskell, Ocaml

Logische Programmierung Das Programm ist eine Frage. Logische auch prädikative Programmierung genannt, basiert auf der mathematischen Logik. Ein Programm besteht aus einer Menge von Axiomen. Die Lösungsaussage wird alleine aus den Axiomen berechnet und beantwortet eine Anfrage bei Korrektheit mit ja und bei Fehlschlag mit nein. Beispiele: Prolog

Objektorientierte Programmierung Ein Programm ist ein Objekt, welches selbst aus Objekten aufgebaut ist. Der Datenaustausch zwischen den Objekten erfolgt über Nachrichten. Es enthält Informationen über die auftretenden Objekte und deren Typen. Wichtige Konzepte, insbesondere Klassen und Vererbung, werden verwendet. Beispiele: Smalltalk (rein objektorientiert)

hybride Programmiersprachen Hybridsprachen unterstützen sowohl das Programmierparadigma der prozeduralen als auch der objektorientierten Programmierung. Üblicherweise sind dies Sprachen, die zunächst das imperative Paradigma verfolgten, und nachträglich eine objektorientierte Erweiterung erhielten. Beispiele: Objekt Pascal, C++, Perl, Java