Grundlagen der Programmierung



Ähnliche Dokumente
Einführung in Software Engineering

Medienzentrum Abteilung MIT Dipl.-Inf. Ingo Keller Sommerkurs Python

Zeichen bei Zahlen entschlüsseln

IT-Basics 2. DI Gerhard Fließ

SEP 114. Design by Contract

Computerarithmetik ( )

Java Kurs für Anfänger Einheit 5 Methoden

Übungen zu C++ Kapitel 1

Einführung in PHP. (mit Aufgaben)

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Programmierkurs Java

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in. Logische Schaltungen

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Netzwerkeinstellungen unter Mac OS X

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java Einführung Operatoren Kapitel 2 und 3

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Programmierung für Mathematik (HS13)

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Primzahlen und RSA-Verschlüsselung

Formale Sprachen und Grammatiken

Einführung in die Java- Programmierung

2 Darstellung von Zahlen und Zeichen

Voraussetzung : Dieses Bewertungsraster kann nur bei Personen, welche elementare Computerkompetenzen haben benutzt werden.

teischl.com Software Design & Services e.u. office@teischl.com

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Was meinen die Leute eigentlich mit: Grexit?

Übungen zu Informatik 1

Outlook Erstellen einer aus einer HTML - Vorlage INHALT

Objektorientierte Programmierung OOP

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

SMART Newsletter Education Solutions April 2015

Technical Note 0302 ewon

Gesucht und Gefunden: Die Funktionsweise einer Suchmaschine

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

3 Berechnungen und Variablen

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Leichte-Sprache-Bilder

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Computeranwendung und Programmierung (CuP)

Java Enterprise Architekturen Willkommen in der Realität

Digitaler*Ausstellungsbegleiter*für*Mobilgeräte ** * * * Alter: Studiengang: Geschlecht: $ $ $ $ Datum: Falls%Ja,%welches? Falls%ja, %welches?

Was ich als Bürgermeister für Lübbecke tun möchte

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Kurzeinführung Excel2App. Version 1.0.0

Grundlagen von Python

Zahlensysteme: Oktal- und Hexadezimalsystem

macs Support Ticket System

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Teil 1: IT- und Medientechnik

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Welchen Weg nimmt Ihr Vermögen. Unsere Leistung zu Ihrer Privaten Vermögensplanung. Wir machen aus Zahlen Werte

Version 0.3. Installation von MinGW und Eclipse CDT

Erster Bug: eine Motte

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

15 Optimales Kodieren

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

IntelliRestore Seedload und Notfallwiederherstellung

Für die Verwendung des Wikis wird dringend der Microsoft Internet Explorer Version 7.0 empfohlen!

eclips Handheld Remote Control Software Updater

Technical Note 0301 ewon

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

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

SWE1 / Übung 2 ( )

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Klausur zur Einführung in die objektorientierte Programmierung mit Java

DOWNLOAD. Arbeiten in der Baufirma. Mathe-Aufgaben aus dem. Karin Schwacha. Downloadauszug aus dem Originaltitel: Mathe-Aufgaben aus dem Berufsalltag:

Grundbegriffe der Informatik

Zählen von Objekten einer bestimmten Klasse

Einführung in die C++ Programmierung für Ingenieure

Die Post hat eine Umfrage gemacht

Informatik I. Übung 01. Olga Diamanti

.. für Ihre Business-Lösung

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Übungen Programmieren 1 Felix Rohrer. Übungen

DOWNLOAD. Wortfeld Computer. Fachausdrücke des Alltags verstehen und anwenden. Jens Eggert. Downloadauszug aus dem Originaltitel:

SSI WHITE PAPER Design einer mobilen App in wenigen Stunden

Excel Funktionen durch eigene Funktionen erweitern.

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

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

6.2 Scan-Konvertierung (Scan Conversion)

SDD System Design Document

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Grundlagen. Kapitel 1

Transkript:

Grundlagen der Programmierung

Dr. Cătălin Rusu Workload (in Stunden): Vorlesung: 2 Seminar/Übung: 2 + 2 URL: http://www.cs.ubbcluj.ro/~rusu Email: rusu@cs.ubbcluj.ro

Kursinhalt 1. Überblick, grundlegende Sprachelemente 2. Phasen eines Softwareprojekts 3. Algorithmus 4. Wie funktioniert Python

Kursinhalt 1. Software Entwicklung 2. Prozedurale Programmierung 3. Modulare Programmierung 4. Objektorientierte Programmierung 5. Softwarearchitektur 6. Vereinheitlichte Modellierungssprache (UML) 7. Software testing 8. Rekursive Programmierung 9. Komplexitätstheorie 10. Suchalgorithmen 11. Sortieralgorithmen 12. Divide-et-Impera 13. Backtracking

Prüfungsform: Klausur (40%) Lab (30%) Praktische Prüfung (30%) Minimale Leistungsstandards: K,P,L >= 5

Lecture 1 Was ist Programmierung Python. Grundlegende Sprachelemente Feature Driven Development

Was ist Programmierung Hardware & Software Hardware: computers/multi-platform? Software Programmiersprache Python Python Shell Python standard library: Datentypen, Funktionen

Der Computer Memory: RAM Festplatte CPU: ALU Control Unit I/O Unit: Tastatur, Bildschirm Andere Systeme

Daten Digitale Repräsentation von Information Strukturierte Semistrukturierte Unstrukturierte Datenverarbeitung?

Python eine neue Programmiersprache, die Einsteigerfreundlich und leicht zu lernen ist, Viele Möglichkeiten bietet ohne unübersichtlich zu werden, Mehr als ein Programmierparadigma unterstützt, Mit wenigen Keywords auskommt.

Python ist leicht zu lernen ist meist wohl strukturiert intuitiv gut lesbar

Python ist eine Interpretersprache mit interaktiver Shell erzeugt Python-Bytecode nutzt Stackbasierte VM gut dokumentiert! http://xkcd.com/303/

Python ist eine moderne Sprache Objektorientiert Skalierbar OS unabhängig Reich an Libraries Erweiterbar http://xkcd.com/138/

Python Ein Mantra Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Flat is better than nested Sparse is better than dense Readability counts

Werkzeuge Python(x,y): Softwaresuite mit allen Werkzeugen IDLE: Python Interpreter Shell Eclipse + PyDev: Integrierte Entwicklungsumgebung

Python Grundlagen >>> print ("Hallo Welt!") Hallo Welt! >>> >>> a = input ("a: ") a: 4 >>> b = input ("b: ") b: 6 >>> c = int (a) + int (b) >>> print (c) 10 >>>

Python Grundlagen Eigene Syntaxelemente Kommentare: beginnen mit einem Doppelkreuz-Zeichen # Name: erlaubt sind die Buchstaben A - Z und a - z, die Zahlen 0-9, sowie der Unterstrich "_". Literale: direkte Darstellung der Werte von Basistypen >>> STRING = "# Dies ist kein Kommentar." >>>

Datenmodell Data abstraction: alle Daten sind Objekte Ein Objekt: Zustand Verhalten Identität unveränderlichen gegen veränderlichen Objekte Grund-Datentypen (Zahlen, Strings, Tupel) Liste,ADTs (Abstrakter Datentyp)

Integer >>> type(1) <type 'int'> Grund-Datentypen (sehr) lange Integer >>> type(1l) <type 'long'> Gleitkommazahlen >>> type(1.0) <type 'float'> Komplexe Zahlen >>> type(1 + 2j) <type 'complex'> Standardoperationen Addition + Subtraction - Division / Integerdivision // Multiplikation * Expotentieren ** Modulo % Built-in Funktionen round, pow, etc.

Numersche Operationen Operation Abkürzung x = x + y x += y x = x - y x -= y x = x * y x *= y x = x / y x /= y x = x % y x %= y x = x**y x **= y x = x//y x //= y Vergleichsoperation x == y x!= y x < y x <= y x > y x >= y

Strings String str1 = "abc" str2 = 'abc' str3 = """ abc """ str4 = ("abc" "def") Escape-Sequenz Erklärung \a erzeugt Signalton \b Backspace \f Seitenvorschub \n Linefeed \r Carriage Return \t horizonal Tab \v vertikal Tab \" \' \\ Escaping " ' \

Formatierung mit Strings Syntax "...%n...%m..." % (Wert1, Wert2) Beispiele >>> a = 'H' >>> b = 'ello World' >>> "%c%s" % (a,b) 'Hello World' Format Erklärung d, i Integer mit Vorzeichen f Float (Dezimaldarstellung) g, G Float (wiss. mit Exponent) u Integer ohne Vorzeichen x Hexzahl ohne Vorzeichen o Oktalzahl ohne Vorzeichen e, E Float (Exponentendarst.) c Zeichen (Länge 1) s, r String % Prozentzeichen

Ausdrücke und Variabilen Variabile: abstrakter Behälter für eine Größe, welche im Verlauf eines Rechenprozesses auftritt Name Adresse Ausdrück: eine Kombination von Operanden (Werten, Variablen) und Operatoren. >>> 2*3-4 2 >>> 2*(3-4) -2

Anweisungen Programm: eine Abfolge von Anweisungen. Ein Programm ist dabei aus Anweisungsblöcken aufgebaut Zuweisung die Verbindung zwischen einem Namen und dem Wert >>> x = 1 >>> >>> x = x + 2 >>>

Die Katze auf der Terrasse Mit Python-Objekten ist es wie mir der Katze, die du irgendwann schlafend auf deiner Terrasse vorfindest. Ganz wie ein Python- Objekt kann dir die Katze nicht sagen, wie sie heißt es ist ihr auch ganz egal. Um ihren Namen herauszufinden, wirst du wohl deine Nachbarn fragen müssen, und du solltest nicht überrascht sein, wenn du herausbekommst, dass die Katze viele Namen hat.

Rollen in der Software Engineerings Der Entwickler/Tester/Architekt Der Stakeholder Der Nutzer

Stakeholder Einzelpersonen und Organisationen die aktiv an einem Projekt beteiligt sind. deren Interessen als Folge der Projektdurchführung oder des Projektabschlusses positiv oder negativ beeinflusst werden können. die das Projekt und seine Ergebnisse beeinflussen

Die Phasen eines Softwareprojekts Softwaretechnik: systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen Feature-driven development

Die Phasen eines Softwareprojekts Problemstellung. Idee Ein Lehrer braucht ein programm für alle Studenten, die Rationale Zahlen lernen möchten. Anforderungs (was?) Genaue Festlegung des Leistungsumfanges des geplanten Systems Umsetzung der Anforderungen in ein Modell, welches die künftige Funktionalität des zu entwickelnden Produktes vollständig beschreibt

Die Phasen eines Softwareprojekts Problemstellung. Idee Ein Lehrer braucht ein programm für alle Studenten, die Rationale Zahlen lernen möchten. Anforderungs (was?) Genaue Festlegung des Leistungsumfanges des geplanten Systems Umsetzung der Anforderungen in ein Modell, welches die künftige Funktionalität des zu entwickelnden Produktes vollständig beschreibt

Probleme Kunden wissen nicht was sie wirklich wollen. Kunden benutzen ihre eigene Fachsprache. Verschiedene Stakeholder können widersprüchliche Anforderungen haben. Politische und organisatorische Faktoren können Anforderungenbeeinflussen. Anforderungen ändern sich während der Analyse und Entwicklung. Neue Stakeholder mischen sich ein

Anforderungs Vollständig Alle Anforderungen des Kunden müssen explizit beschrieben sein, es darf keine impliziten Annahmen des Kunden über das zu entwickelnde System geben. Atomar Es darf nur eine Anforderung pro Abschnitt oder Satz beschrieben sein.

Anforderungs Identifizierbar Jede Anforderung muss eindeutig identifizierbar sein Nachprüfbar Die Anforderungen sollten mit Abnahmekriterien verknüpft werden, damit bei der Abnahme geprüft werden kann, ob die Anforderungen erfüllt wurden. Konsistent Die definierten Anforderungen sind untereinander widerspruchsfrei.

Features Die Features werden nach dem einfachen Schema <Aktion> <Ergebnis> <Objekt> aufgeschrieben (z.b. Berechne Gesamtsumme der Verkäufe ). Ein Feature darf maximal wenige Stunden zu seiner Realisierung benötigen.

Features Rechner (Feature-Liste) F1. Eine Zahl einfügen F2. Rechner löschen F3. Die letzte Änderung rückgängig machen

Feature Driven Development Erstelle eine Feature-Liste Plane jede Iteration Für jeden Iteration: Entwurf je Feature Konstruiere je Feature

Ein Beispiel - Rechner (die erste Iteration) Interaktionsszenario (running scenario) Nutzer Programm Erklärung a 0 Gesamt b 1/2 Zahl einfügen c 1/2 Gesamt d 2/3 Zahl einfügen e 5/6 Gesamt f 1/6 Zahl einfügen g 1 Gesamt h -6/6 Zahl einfügen i 0 Gesamt

Tasks Eine Aufgabe für jede Operation (T1,T2) Eine Aufgabe für die Benutzerinteraktion (T4) Eine Aufgabe für jede Schnittstellenfunktion (T3) Aufgabenabhängigkeit : T4->T3->T2->T1 T1. Berechne den Größten gemeinsamen Teiler T2. Addition zweier rationaler Zahlen (c,e,g,i) T3. Implementiere den Rechner: init, add, total T4. Implementiere eine Benutzerschnittstelle

T1 - ggt berechnen Testfall Ein Testfall ist gegeben durch eine Folge von Eingabewerten, die für ein bestimmtes Testobjekt unter definierten Randbedingungen eine zugehörige Folge von Sollreaktionen erzeugt. Input: a, b 2 3 1 2 4 2 6 4 2 0 2 2 2 0 2 24 9 3 c=ggt(a,b) -2 0 Fehler 0-2 Fehler

If - anweisung

While - Schleife

References 1. The Python language reference. http://docs.python.org/py3k/reference/index. html 2. The Python standard library. http://docs.python.org/py3k/library/index.html 3. The Python tutorial. http://docs.python.org/tutorial/index.html