SoSe 2013 Markus Geveler Inst. f. Applied … · Tutorial: Scratch – erste Programme ... →...

39
Programmierkurs [email protected] Markus Geveler Inst. f. Applied Mathematics, TU Dortmund SoSe 2013

Transcript of SoSe 2013 Markus Geveler Inst. f. Applied … · Tutorial: Scratch – erste Programme ... →...

Programmierkurs

[email protected]

Markus GevelerInst. f. Applied Mathematics, TU Dortmund

SoSe 2013

HOME

http://www.mathematik.tu-dortmund.de/sites/pk-ss13

Lesson 1

Was machen wir heute hier?

Tutorial: Scratch – erste Programme selbst machen

Präsenzübungen zu Scratch

Tutorial: den Account benutzen

Einführung in die Inhalte des Kurses

Motivation

kleine Einführung in die Informatik

Motivation

Film: http://www.code.org

Motivation

Wofür muss man Programmieren können?

praktisch alle technischen Vorgänge heute involvierenComputerneue Probleme erfordern neue Lösungen (Programme)

Beispiel Wissenschaft: mathematische Problemstellungen:Numerische SimulationBeispiel Industrie: auch: Numerische Simulation

auch in Deutschland werden in Zukunft viel mehrProgrammierer gebraucht → Fachkäftemangel

→ programmieren zu können ist eine mächtige Fähigkeit

Motivation

Beispiel Strömungssimulation

Ziel: Berechnung des Verhaltens von 'Allem was fließen kann'

grafische Darstellung

Ziel: Berechnung des Verhaltens von 'Allem was fließen kann'

Berechnung von Kenngrößen (z.B.: ortsabhängige Dichte)

Ziel: Berechnung des Verhaltens von 'Allem was fließen kann'

Methode: z.B: finite Elemente

Motivation

Beispiel Strömungssimulation

numerische Simulationen stellen große Anforderungenan CPU-Zeit und Hauptspeicher→ Heim-PC f ur wirklichkeitsnahe Simulation zu schwach�→ externe Rechnungen auf HPC-Sites: Rangliste TOP500 via Linpack-Benchmark

Inhalte

Was machen wir in diesem Kurs?

lernen, was man wissen muss, um ComputerProgrammieren zu können→ Computerhardware→ essentielle Software→ etwas über Algorithmen→ etwas über Datenstrukturen→ etwas über Softwarekonstruktion→ ein wenig Sprachtheorie / Komplexitätstheorie

eine Programmiersprache !→ C++

Inhalte

Was machen wir in diesem Kurs?

→ C++ ist Kern des Kurses)→ Objektorientierte Herangehensweise (hauptsächlich)→ Algorithmische Grundlagen (ein wenig)→ Wie schriebt man bessere Programme mit C++?→ Und was heisst eigentlich besser? (hoffentlich viel)

Einstieg

Jetzt geht es los:

Was muss man wissen, um produktiv zu programmieren und guten Code zu schreiben?

→ Hardware + Softwarein den

→ Lebenszyklus eines Programmes

→ erste Programme selbst machen (erst mal mit einereinfachen, grafischen Programmiersprache)

Hardware und SoftwareHardware

materielle Teile des Computers

→ CPU + Arbeitsspeicher→ Persistenzspeicher (Festplatte)→ Grafikchip→ Mainboard, auf das alles aufgebracht ist

Hardware und SoftwareSoftware

erst einmal für uns: 'Programme'

→ befindet sich bei der Ausführung im Arbeitsspeicher→ hauptsächlich: Anweisungen zur Informationsverarbeitung→ ein Betriebssystem ist ein solches Programm

HardwareAufbau eines Computers 'in unserem Sinne'

Zentraleinheit: Hauptprozessor CPUArbeitsspeicher (random access memory RAM)→ zur kurzfristigen Speicherung von Informationen,→ Kennzeichen: klein, schnell,→ Informationen sind weg, wenn kein Strom mehr daPlattenspeicher (hard disk, storage)→ zur langfristigen Speicherung,→ Kennzeichen: gross, langsam, Informationen bleiben

langfristig erhaltenEingabegeräte: Tastatur, Maus, etc.Ausgabegeräte: Monitor, Drucker, etc.Verbindung über Netzwerk:�→ verschiedene Techniken je nach Anwendungszweck→ unterschiedliche Leistungsparameter

HardwareDie CPU: Von-Neumann Architektur

Steuerwerk (CU)→ steuert die Ausführung von Programmen→ hat dafür eigenen Speicher (wichtig!)

Rechenwerk (ALU)→ führt einfache arithmetische Operationen aus:

→ addieren, multiplizieren

Gemeinsamer Speicher→ für Programm und Daten

I/O→ zum Bildschirm→ von der Tastatur, etc.

HardwareJenseits der CPU...

Hardware ist nicht so 'einfach'→ Hardware ist parallel→ Hardware ist verteilt→ im Folgenden: immer nur eine, normale CPU

Software IBetriebssystem (OS)

Ein Betriebssystem ist die Software, die die Verwendung eines Computers ermöglicht. Es verwaltet Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die Ausführung von Programmen, insbesondere:

→ Benutzerverwaltung→ Laden und Ausführung von Programmen→ Verwaltung der Prozessorzeit→ Verwaltung des Speicherplatzes für Anwendungen→ Verwaltung der angeschlossenen Ger ate�→ Verbindung zur Aussenwelt (Netzwerk)

Software IBetriebssystemkernel

Betriebssysteme bestehen in der Regel aus einem Kern (kernel), der die Hardware des Computers verwaltet, sowie grundlegenden Systemprogrammen, die dem Start des Betriebssystems und dessen Konfiguration dienen.

Beispiele für Betriebssysteme:Windows, Mac OS, Linux, Android, iOS

Zugang zum OS:→ Kommandozeile (lernen wir gleich kennen)→ grafische Benutzeroberfläche

Software IICompiler

ein geschriebenes Programm nicht ohne weiteres für den Rechner verständlich→ vor der Ausführung durch den Rechner Umwandlung

Notwendig Programm muss übersetzt werden→ Übersetzung durch Compiler→ erst danach Ausführung durch Rechner möglich

→ auch Betriebssystem und Compiler sind Programme

ProgrammierungDefinition

Programmiersprache: formalisierte Sprache→ die Sätze bestehen aus Worten eines

festgelegten Zeichenvorrats (Alphabet)→ gültige Sätze müssen anhand einer endlichen

Regelmenge (Syntax) gebildet werden→ legt die Bedeutung (Semantik) eines Satzes fest

Programm: eine Reihe von Sätzen, die in einerProgrammiersprache formuliert sind

ProgrammiersprachenArten

maschinennahe Programmiersprachen:→ betrachten explizit Speicherzellen und Register→ hängen vom konkreten Prozessor und der

Rechnerarchitektur ab→ Maschinensprache, Assemblersprachehöhere Programmiersprachen:→ Abstraktion von der konkreten Hardware→ Cobol, Fortran, C, C++, Java→ Akademisches Interesse: Prolog, Lisp

ProgrammiersprachenArten höherer Programmiersprachen

imperative Sprachen:→ Pascal, C, C++, Java→ ablauforientierte Sicht→ persistenter Zustand wird schrittweise verändertfunktionale Sprachen: Lisp, Haskell→ Problemlösung durch mathematische Funktionen beschreibenlogische Sprachen: Prolog→ Problemlösung durch logische Formeln beschreiben

Merke: Objektorientierung ist nur eine Ausprägung vonimperativen Sprachen

ExkursBevor wir weitermachen:

Schauen wir uns das mal praktisch an:

Gleichzeitig: unsere erste Präsenzübung:

→ Loggen Sie sich ein→ öffnen Sie einen Editor→ schreiben Sie das HelloWorld Programm→ compilieren Sie das Programm→ führen Sie es aus

Einloggen PÜ

Terminal starten PÜ

Editor starten PÜ

Programm schreiben PÜ

Dann speichern als 'helloworld.cpp' !

Compilieren PÜ

Ausführen PÜ

Zusammenfassung PÜ

Hello World!

→ Programm in für Menschen verständlicher Sprache schreiben:→ nedit helloworld.cpp

→ Programm in für Rechner verständliche Form übersetzen:�→ g++ helloworld.cpp -o helloworld

→ Übersetztes Programm ausführen:→ helloworld

→ Programm solange verändern, bis es das macht, was es soll, → dazu obige Schritte wiederholen

Software IIILinker

Was ist in unserem HelloWorld – Programm passiert?→ eine einzelne Datei, die den Quelltext (Sourcecode) enthält,wurde zu einem Programm (einer Objektdatei) compiliert:

Software IIILinker

Objekte nicht unbedingt aus einer Datei: das können ganzeBibliotheken sein!→ auch externe Bibliotheken (Wiederverwendung)→ unterscheide statisches/dynamisches Linken→ wir haben den Linker gerade implizit mitaufgerufen

Software IIILinker

Unter einem Linker oder Binder (auch: Bindelader)versteht man ein Computerprogramm, das einzelne

Programmmodule zu einem ausführbaren Programm zusammenstellt (verbindet).

Programme selbst erstellenScratch

http://scratch.mit.edu/

→ bevor wir C++ lernen→ hier lernen wir vor allem etwas über

→ die Sprachelemente von Programmiersprachen→ den Ablauf von Computerprogrammen

Tutorial

ScratchSelbst probieren:

PÜ Führen Sie die ersten 8 Schritte der Scratch-Einführung aus!

Scratch PÜ

Programme selbst erstellenScratch mit mehreren sprites

Tutorial

Programme selbst erstellenScratch mit mehreren Sprites

Tutorial

Programme selbst erstellenScratch mit mehreren Sprites

Tutorial

ScratchMini-Spiel

→ erweitern Sie das Tutorial-Programm so,dass alle Richtungen abgedeckt sind(auch oben, unten)

→ erweitern Sie das Programm so, dass manden Ball mit der Figur in ein Ziel schieben kann

→ wenn der Ball im Ziel ankommt, soll dies demBenutzer kenntlich gemacht werden (z.B.: durchdie Ausgabe einer Nachricht)

→ verwenden Sie als Ziel eine weitere sprite