Programmieren I

Summary

Term
Winter 2020
ECTS
5
Level
Bachelor
Instructors
Michael Rohs, Tim Dünte
Lecture Time
Fr. 9:00-10:30
Lecture Room
Online
Exercise Time
mehrere Kleingruppen in Präsenzform, Online-Tutorien
Exercise Room
tba

Course Description

Diese Vorlesung führt in das strukturierte Programmieren ein. Programmieren bedeutet, ein Problem so präzise zu beschreiben, dass ein Computer es lösen kann. Im ersten Teil werden wir eine Vorgehensweise kennen lernen, die aus den Schritten Problembeschreibung, Datendefinition, Zweckbeschreibung und Funktionskopf, Beispiele, Implementierung, Test und Überarbeitung besteht. Ausgehend von der Problembeschreibung überlegen wir, wie sich die für das Problem relevanten Informationen aus der realen Welt als Daten im Programm repräsentieren lassen. Die Zweckbeschreibung (z.B. "wandelt Grad Celsius in Grad Fahrenheit um") sagt aus, was das Programm leistet. Der Funktionskopf beschreibt die erforderlichen Eingabewerte und die Art des Ergebnisses. Vorbedingungen beschreiben mögliche Einschränkungen und Nachbedingungen definieren, was das Programm sicherstellt. Beispiele helfen, das Verhalten des Programms zu verstehen (z.B. "gegeben die Eingabe 10, wird die Ausgabe 50 erwartet"). Die Beispiele dienen auch als Testfälle, um die Implementierung zu überprüfen.

Neben dieser Vorgehensweise werden fundamentale Konzepte der Programmierung behandelt (z.B. Iteration, Rekursion, Abstraktion, einfache Datenstrukturen) sowie Methoden, um über die Korrektheit und Effizienz eines Programms systematisch nachzudenken (z.B. Vor- und Nachbedingung, Zusicherungen). Als einführende Programmiersprache werden wir PostFix und im Hauptteil C verwenden. Das Lösen von Programmierproblemen erfordert das Verständnis von Konzepten, aber auch Kreativität und Erfahrung. In den Übungen werden praktische Programmierfertigkeiten erarbeitet und algorithmisches Denken geschult. Dazu gehört z.B., wie man für eine gegebene Aufgabe einen Algorithmus formuliert und geeignete Datenstrukturen auswählt. Aufbauend auf dieser Vorlesung werden in der Anschlussvorlesung Programmieren 2 die Grundzüge der Objektorientierung behandelt.

Course Objectives

  • grundlegende Programmierkonzepte und Methoden kennen und verstanden haben
  • algorithmisches Denken einüben
  • Programmierkompetenz und Programmierfertigkeiten erlangen
  • Fähigkeit des systematischen Entwurfs von einfachen Programmen
  • Fähigkeit des Strukturierens von einfachen Programmierproblemen

Materials

Slides, assignments and other materials are available via Stud.IP