Programmiertechnik I (2022/23)

Prof. Dr. Andreas Polze, Prof. Dr. Ralf Herbrich
Termine: dienstags, 13:30-15:00 Uhr, HS 1; mittwochs, 11:00-12:30 Uhr, HS 1
Zoom-Raum: 5198175573 (Raum von Andreas Polze) - pwd: 4711

Die Lehrveranstaltung bietet eine Einführung in die Informatik und vermittelt Theorie und Praxis der Programmierung von Software am Beispiel der Sprachen C, Java und Prolog. Die Vorlesung diskutiert Konzepte der strukturierten Programmierung auf Grundlage der Programmiersprache C sowie Konzepte der logischen Programmierung mit Prolog. Objekte und Ansätze der objektorientierten Programmierung werden kurz gestreift, stehen aber erst in der nachfolgenden Veranstaltung "Programmiertechnik II" im Mittelpunkt.

Themen der Vorlesung

  • Was ist Informatik?
  • Algorithmenbegriff
  • Technische Informatik
  • Theoretische Informatik
  • Praktische Informatik
  • Angewandte Informatik
  • Geschichte - 100 Jahre IBM
  • Studium am HPI - Einordnung der LV
  • Bits, Bytes, Worte, Dateien - Information vs. Daten
  • top down vs. bottom up
  • Aussagenlogik
  • Schaltnetze, Schaltwerke
  • Register
  • von Neumann Rechner
  • CPU, ALU, CU
  • Instruktionsverarbeitung
  • OpCode Formate, RTL
  • Instruktionsarten
  • Ein- und Ausgabe
  • Universalität binärer Daten
  • Abtasttheorem
  • ganze Zahlen
  • 1er Komplement
  • 2er Komplement
  • Gleitkommaformate
  • ASCII, EBCDIC
  • Unicode
  • Spezifikation, Algorithmen, Programme
  • Imperative Programmierung: Modula, C
  • Objektorientierte Programmierung: Smalltalk, C++, Objective-C, Java
  • Logische Programmierung: Prolog
  • Funktionale Programmierung: Lisp
  • Formale Beschreibung von Programmiersprachen: EBNF
  • Compiler
  • Technologieprogramme: make
  • Quellcodeverwaltung: git
  • Debugger: gdb
  • Test: Check, CUnit
  • Integrale Datentypen
  • Operatoren
  • Ausdrücke
  • Typkonvertierungen
  • Vorrangregeln
  • Anweisungen und Blöcke
  • if-else
  • else-if
  • switch
  • Schleifen: while and for, do-while
  • break and continue
  • goto and labels
  • Grundlagen, Prinzip Funktionsaufruf, Stack
  • call-by-value, call-by-ref, call-by-copy
  • Rückgabewerte
  • externe Variablen, Scope
  • header files und Übersetzungseinheiten
  • Initialisierung
  • Rekursion
  • C Präprozessor
  • Heap und Stack
  • Zeiger und Adressen
  • Zeiger und Funktionen (-argumente)
  • Zeiger und Arrays
  • Adressarithmetik
  • Beispiel: malloc und Algorithmen zur Speicherallokation
  • Mehrdimensionale Felder
  • Initialisierung von Feldern
  • Kommandzeilenbearbeitung
  • Funktionszeiger
  • Komplizierte Deklarationen
  • Grundlagen
  • Strukturen und Funktionen
  • Felder von Strukturen
  • Zeiger auf Strukturen
  • Selbstreferentielle Strukturen
  • Unions, typedefs, bit-fields
  • Objekte in C
  • Standard Ein- und Ausgabe - stdio
  • Formatierte Ausgabe - printf
  • Argumentlisten variabler Länge - varargs
  • Formatierte Eingabe - scanf
  • Dateizugriff
  • Fehlerbehandlung - stderr und exit
  • Zeilenweise Ein- und Ausgabe
  • file descriptors
  • low-level i/O - read and write
  • open, creat, close, unlink
  • lseek
  • Standard library

Leistungserfassungsprozess

Am Ende der Lehrveranstaltung wird eine Klausur geschrieben.