Programmierkurs Vorlesung 00 M.Sc. Laslo Hunhold 9. Oktober 2019 - Institut für Informatik

Die Seite wird erstellt Dastin Sauter
 
WEITER LESEN
Programmierkurs Vorlesung 00 M.Sc. Laslo Hunhold 9. Oktober 2019 - Institut für Informatik
Programmierkurs
                           Vorlesung 00

                      M.Sc. Laslo Hunhold

                         Institut für Informatik
                          Universität zu Köln

                        9. Oktober 2019

M.Sc. Laslo Hunhold     Programmierkurs – Vorlesung 00   1
Einführung

M.Sc. Laslo Hunhold   Programmierkurs – Vorlesung 00   2
Abbildung: Konrad Zuse (1910-1995) mit dem Z3 (1941) (Quelle: Stadtarchiv
        Hünfeld)

M.Sc. Laslo Hunhold                 Programmierkurs – Vorlesung 00                  3
Was ist Informatik?
             Informatik: „Informatik ist die Wissenschaft von der systematischen
                         Verarbeitung und Speicherung von Informationen,
                         besonders der automatischen Verarbeitung mit Hilfe von
                         Computern.“, Gesellschaft für Informatik e.V.

           I Theorie: Analyse von Algorithmen, Datenstrukturen, etc. (siehe
             Informatik I+II)
           I Anwendung: Abstraktion, Programmierung, etc. (Programmierkurs)

                       Daten (Input) → Computer → Daten (Output)

        Programmierung: „Einstellung“ des Computers auf die gewünschte
                    Verarbeitung von (Eingabe-)Daten.

M.Sc. Laslo Hunhold                  Programmierkurs – Vorlesung 00                4
Programmierablauf
           1. Problemerfassung (Eingabedaten/Gewünschte Ausgabedaten)
                                               Jan/e           ...   Dez/e
                              Internet          59.99          ...    26.85
                             Kraftstoff        181.74          ...   110.22
                                 Tabelle: Finanzübersicht 2018

                Gegeben: Tabelle „Finanzübersicht 2018“
                Gesucht: Gesamtausgaben für Kraftstoff 2018
           2. Entwurf eines Lösungsverfahrens („Algorithmus“)
                Summiere in Zeile „Kraftstoff“ von Spalte „Jan“ bis „Dez“
           3. Realisierung des Lösungsverfahrens („Implementierung“)
                summe = 0.0;
                for (i in ’Jan’..’Dez’) {
                   summe += tabelle[’Kraftstoff’][i];
                }
                output(summe);
           4. Testen
M.Sc. Laslo Hunhold                 Programmierkurs – Vorlesung 00            5
Übersetzung/Interpretierung
        Wir möchten unseren Quellcode „...for (i in ’Jan’..’Dez’)...“
        auf dem Computer ausführen (= in Anweisungen umwandeln).

        Verschiedene Vorgehensweisen (je nach Programmiersprache;
        unterstrichen ist das „Kompilat“):

        Direktübersetzung (z.B. C, C++, C#):
           I Quellcode Compiler
                        −→ Maschinencode = Anweisungen
           I Am schnellsten, aber spezifisch für Betriebssystem/Architektur

        Interpretierung (z.B. Python, JavaScript, PHP):
           I Quellcode Interpreter
                          −→ Anweisungen
           I Unspezifisch, aber Interpretierung langsam

        Bytecodeübersetzung (z.B. Java):
           I Quellcode Compiler
                         −→ Bytecode
                                         Virtuelle Maschine
                                                −→          Anweisungen
           I Unspezifisch und schneller als Interpretierung
M.Sc. Laslo Hunhold                  Programmierkurs – Vorlesung 00           6
Java-Programmierung
        OpenJDK 11 (Java Development Kit), enthält u.a.
         I Compiler (javac), wandelt .java-Dateien (Quellcode) in
            .class-Dateien (Bytecode) um
         I Java Runtime Environment (JRE) (java), führt Bytecode aus
            (Virtuelle Maschine), gibt es auch eigenständig
         I Java Archiver (jar), zum Zusammenpacken von .class-Dateien

        Eclipse Java IDE (Integrated Development Environment) (optional)
         I Entwicklungsumgebung für Java
           I Editor und graphische Benutzeroberfläche für das JDK

M.Sc. Laslo Hunhold                Programmierkurs – Vorlesung 00          7
„Hallo Welt“ in Java
    1 public class HalloWelt {
    2         p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
    3                       System . o u t . p r i n t l n ( " H a l l o Welt ! " ) ;
    4         }
    5 }
                                      "HalloWelt.java"

           I public: Zugriffsmodifikator (später)
           I class HalloWelt: Klassendeklaration „HalloWelt“
             (Dateiname=Klassenname.java, Klassenname wird groß geschrieben)
           I public, static: (später)
           I void: Kein Rückgabewert
           I main(String args[]): main-Methode (Einstiegspunkt), muß genau
             einmal im Programm vorkommen
           I System.out.println(); Anweisung gibt Argument in der Konsole aus
           I Anweisungen enden immer mit einem Semikolon

M.Sc. Laslo Hunhold                  Programmierkurs – Vorlesung 00                     8
Struktur eines Java-Programms

          Java-Programm

                      public class Klasse1 {   public class Klasse2 {                   public class KlasseN {
                           ...                      ...                                      ...
                      }                        }                                        }

                                                                                  ...

                         Klasse1.java             Klasse2.java                            KlasseN.java

            Abbildung: Jedes Java-Programm besteht aus einer oder mehreren Klassen.

M.Sc. Laslo Hunhold                              Programmierkurs – Vorlesung 00                                  9
Zusammenfassung
           I Begriff der Informatik
           I Programmierablauf
           I Programmübersetzung (Compiler, Interpreter, Quellcode,
             Maschinencode, Bytecode)
           I Java-„Hallo Welt“-Programm und -Programmstruktur

M.Sc. Laslo Hunhold                   Programmierkurs – Vorlesung 00   10
Literatur
        Für Anfänger
         I Hans-Peter Habelitz: Programmieren lernen mit Java: Der leichte
            Einstieg für Programmieranfänger. Rheinwerk Computing, 5.
            Auflage, 2017 (geringer Preis)
         I Kai Günster: Einführung in Java. Rheinwerk Computing, 2. Auflage,
            2017 (geringer Preis)
         I Christian Ullenboom: Java ist auch eine Insel. Rheinwerk
            Computing, 14. Auflage, 2018

        Für Fortgeschrittene
         I Michael Inden: Der Weg zum Java-Profi. dpunkt.verlag, 4. Auflage,
            2017 (großer Tiefgang)
         I Kathy Sierra , Bert Bates: Java von Kopf bis Fuß. O’Reilly Verlag, 1.
            Auflage, 2006 (Klassisch)

M.Sc. Laslo Hunhold                Programmierkurs – Vorlesung 00                  11
Organisatorisches

M.Sc. Laslo Hunhold      Programmierkurs – Vorlesung 00   12
Allgemeines
        Webseite
         I https://informatik.uni-koeln.de/hunhold/
         I Informationen, Vorlesungsfolien, Übungen
         I Regelmäßiger Aufruf wird erwartet

        Sprechstunde
         I Montags, 11:00-12:00 Uhr
         I Keine Anmeldung notwendig
         I In meinem Büro (siehe Webseite)

        Kontakt
         I hunhold@informatik.uni-koeln.de
         I Es werden keine fachlichen Fragen per E-Mail beantwortet

        Skript
         I Kein Skript, aber Folien
         I Empfehlung: Notizen mit Vorlesungs- & Foliennummern (z.B. 00/3)
M.Sc. Laslo Hunhold               Programmierkurs – Vorlesung 00             13
Credit Points
        6 CP
          I Wirtschaftsinformatik
           I Alle Vorlesungen und Übungen prüfungsrelevant

        3 CP
          I Wirtschaftsmathematik, Nebenfach Informatik, Studium Integrale,
            Schülerstudenten
          I Vorlesungen und Übungen prüfungsrelevant nur bis zum 18.
            Dezember 2019
          I Freiwillige Weiterteilnahme empfohlen

M.Sc. Laslo Hunhold                 Programmierkurs – Vorlesung 00            14
Klausur
        Form
         I Keine Zulassung nötig
         I Papierklausur (keine eKlausur, ohne Hilfsmittel)
         I 90 Minuten (3CP und 6CP)
        Termine
         I Klausur: Dienstag, 11. Februar 2020, 9:00-10:30 Uhr
         I Nachklausur: Donnerstag, 19. März 2020, 9:30-11:00 Uhr
         I Räume werden rechtzeitig bekanntgegeben
        Anmeldung
         I Ab ca. 4 Wochen vorher
         I Per KLIPS (Wirtschaftsinformatik, Wirtschaftsmathematik,
           Nebenfach Informatik)
         I Per Formular (Studium Integrale, Schülerstudenten)
           I Prüfungsamt kontaktieren bei Rückfragen zur Anmeldung
           I Abmeldung bis 1 Woche vorher

M.Sc. Laslo Hunhold                Programmierkurs – Vorlesung 00     15
Übungen
        Übungsblätter
         I Veröffentlichung: Freitags um 12:00 Uhr
         I 1 Woche Bearbeitungszeit
         I Erstes Blatt: 11. Oktober 2019

        Abgaben
         I Keine Abgaben; freiwillige Bearbeitung
         I Freiwillige Einsendung von (auch fehlerhaften) Lösungen an den
            Übungsleiter für Rückmeldungen
         I Einsendefrist: Freitags um 12:00 Uhr

        Übungsgruppen
         I Besprechung des abgegebenen Übungsblatts
         I Diskussion eingesendeter (auch fehlerhafter) Lösungen (freiwillig)
         I Eigenen Computer mitbringen!
         I Beginn: In der Woche ab dem 14. Oktober 2019 (Einrichtung
            OpenJDK/Eclipse)
         I Übungsleiter: Erik Faulhaber, Marvin Pogoda, Simon Wolf
M.Sc. Laslo Hunhold                Programmierkurs – Vorlesung 00               16
Übungsgruppenanmeldung
        Allgemeines
         I Öffnet heute (9. Oktober 2019) um 15:30 Uhr, schließt am Freitag
             (11. Oktober 2019) um 12:00 Uhr
         I Keine Matrikelnummer (Schüler, etc.)? Eine unbelegte Zahl 0******
             wählen
        Reservierte Termine (daraus 6 Übungsgruppen)
                             a   Montags                  16:00     Uhr
                             b   Dienstags                12:00     Uhr
                             c   Dienstags                14:00     Uhr
                             d   Mittwochs                12:00     Uhr
                             e   Mittwochs                16:00     Uhr
                             f   Donnerstags              12:00     Uhr
                             g   Freitags                 12:00     Uhr
        Angabe Präferenz (2 Angabemöglichkeiten)
         1. Präferenzliste: Liste von Buchstaben a-g (mindestens 3), absteigende
            Reihenfolge, kommagetrennt, keine Leerzeichen (Beispiel: e,d,c,b)
         2. „Anker“-Matrikelnummer (Beispiel: 7822552)
M.Sc. Laslo Hunhold                Programmierkurs – Vorlesung 00                  17
Übungsgruppenzuteilung
           I Zuteilung bis Freitag (11. Oktober 2019) um 20:00 Uhr
           I Bildung von 6 Übungsgruppen (beliebteste Termine; einer fällt weg)
           I Bekanntmachung im Loginbereich des Übungsservers
           I Gruppenwechsel nur mit Tauschpartner

M.Sc. Laslo Hunhold                 Programmierkurs – Vorlesung 00                18
Abbildung: Apollo Guidance Computer (1966) (Quelle: NASA Photo Archive)

M.Sc. Laslo Hunhold                 Programmierkurs – Vorlesung 00                  19
Sie können auch lesen