Post on 18-Sep-2018
transcript
Programmierkurs
markus.geveler@math.tu-dortmund.de
Markus GevelerInst. f. Applied Mathematics, TU Dortmund
SoSe 2013
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
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:
PÜ
→ Loggen Sie sich ein→ öffnen Sie einen Editor→ schreiben Sie das HelloWorld Programm→ compilieren Sie das Programm→ führen Sie es aus
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
ScratchMini-Spiel
PÜ
→ 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