Einführung In Die Programmierung at LMU München | Flashcards & Summaries

Select your language

Suggested languages for you:
Log In Start studying!

Lernmaterialien für Einführung in die Programmierung an der LMU München

Greife auf kostenlose Karteikarten, Zusammenfassungen, Übungsaufgaben und Altklausuren für deinen Einführung in die Programmierung Kurs an der LMU München zu.

TESTE DEIN WISSEN

Parameterübergabe: Call-by-Value

Lösung anzeigen
TESTE DEIN WISSEN
  • Wenn eine Methode mit konkreten Ausdrücken für die Parameter aufgerufen wird, ist die Frage, was genau für die formalen Parameter übergeben wird.
  • In Java: Immer Berechnung des Werts ("Call-by-value")
    • Der berechnete Wert kann durchaus eine Referenz sein
    • Manchmal bei Parametern mit Referenzdatentyp spricht man von "Call-by-reference"; handelt sich um ein Call-by-Value für Referenzwerte
Lösung ausblenden
TESTE DEIN WISSEN

new-Operator in Java

Lösung anzeigen
TESTE DEIN WISSEN
  • Syntax: new <Klassenname> (<Ausdruck_1>,...,<Ausdruck_n>)
  • Klassenname ist zunächst der Name des Referenztyps
  • Bedeutung:
    • Die Argumente zusammen mit dem Klassennamen bestimmen, wie viel Speicherplatz benötigt wird
    • Der entsprechende Speicherplatz wird auf dem Heap reserviert
    • Die Referenz auf diesen Speicherbereich ist das Ergebnis
Lösung ausblenden
TESTE DEIN WISSEN

Werte von Referenzdatentypen

Lösung anzeigen
TESTE DEIN WISSEN
  • Referenzdatentypen haben (natürlich) Referenzen als Werte.
  • Eine Referenz ist eine Adresse im Heap
  • Heapspeicher muss explizit angewiesen werden:
    • Implizit durch Zuweisung eines Literals (z.B. String s = "Welcome!");
    • Allgemein mit dem new-Operator (z.B. String s = new String("Welcome!");
    • Das Literal (linke Seite) wird vom Compiler als statischer Speicher mit fester Adresse verwaltet
    • Das Ergebnis von new ist eine Referenz auf den Heapspeicher
Lösung ausblenden
TESTE DEIN WISSEN

Laufzeitspeicher: Stapel und Halde (Stack und Heap)

Lösung anzeigen
TESTE DEIN WISSEN
  • Zur Laufzeit eines Programms wird der dafür reservierte Speicher (im RAM) in zwei dynamisch genutzte Bereiche unterteilt:
    • Stapel (Stack) für Variablen und Parameter in Methoden
    • Halde (Heap) für Werte von Referenzdatentypen
  • Es gibt statischen Speicher (Schlüsselwert static)
    • Compiler-Optimierungen reduzieren Speicherbedarf dafür
Lösung ausblenden
TESTE DEIN WISSEN

Datentypen in Java

Lösung anzeigen
TESTE DEIN WISSEN
  • Primitive Datentypen:
    • "Eingebaut" in Compiler und Laufzeitsystem
    • Viele Infix- und Präfixoperationen
    • Datentypname beginnt mit einem kleinen Buchstabe
  • Referenzdatentypen:
    • Über Klassen definiert, selbst definierbar
    • Einige "eingebaut", d.h. in Standardinstallation enthalten
    • Datentypname beginnt mit einem großen Buchstabe
Lösung ausblenden
TESTE DEIN WISSEN

Grundlegende Vorteile von Unterprogrammen

Lösung anzeigen
TESTE DEIN WISSEN
  • Lokalität (locality, cohesion):
    • Programmcode ist in einer überschaubaren Größe
    • Entwickler hat klare Überblick darüber, welche Effekte erzielt werden
  • Änderbarkeit (modifiability):
    • Wenn Änderungen an einer grundlegenden Berechnung vorzunehmen sind, ist es ganz wesentlich, dass alle Stellen, an dene diese Berechnung vogenommen wird, das gleiche Unterprogramm benutzen. Eine Änderung wird dadurch überall!
  • Wiederverwendbarkeit (reusability):
    • Methoden und Funktionalitäten können in anderen Projekten verwendet werden.
Lösung ausblenden
TESTE DEIN WISSEN

Prozeduren vs. Funktionen

Lösung anzeigen
TESTE DEIN WISSEN
  • Funktionen sollen keine Seiteneffekte auf globale Variablen haben. Sie liefern ein Ergebnis (mit return).
  • Funktionsprozeduren sind Funktionen, die intern Variablen und Anweisungen benutzen. Auch sie sollen keine Seiteneffekte haben und liefern ein Ergebnis (mit return).
  • (Reine) Prozeduren sollen entweder kein Ergebnis abliefern (Typ void) oder eines, das nur organisatorischen Charakter hat. Sie wirken ausschließlich über Seiteneffekte.
Lösung ausblenden
TESTE DEIN WISSEN

Methoden, Prozeduren, Funktionen

Lösung anzeigen
TESTE DEIN WISSEN
  • Programmstücke, die separat für eine mehrfache Verwendung deklariert werden und die über spezifische Parameter an den Einsatzzweck angepasst werden können, heißen Methoden.
    • Manchmal spricht man ganz allgemein von Unterprogrammen (Subroutines)
  • Eine Prozedur ist dadurch charakterisiert, dass es such um einen imperativen Algorithmus handelt, also der Rumpf Anweisungen enthält.
  • Eine Funktion ist dadurch charakterisiert, dass sie einen Wert eines Datentyps als Ergebnis abliefert.
Lösung ausblenden
TESTE DEIN WISSEN

Bedeutung der gezählten Wiederholung

Lösung anzeigen
TESTE DEIN WISSEN
  • Eine for-Schleife der Form:

for(init; bedingung; forschalt) 

rumpf

  • ist fast gleichbedeutend mit:

init;

while (bedingung) {

rumpf;

fortschalt; }

Lösung ausblenden
TESTE DEIN WISSEN

Iteration

Lösung anzeigen
TESTE DEIN WISSEN
  • Wiederholungsanweisungen dienen zur mehrfachen Ausführung einer Anweisung bzw. eines Anweisungsblocks.
  • Bedingte Wiederholungsanweisung:
    • Oft auch while-Schleife genannt
  • Gezählte Wiederholungsanweisung:
    • Oft auch for-Schleife genannt
  • Java-Syntax: 

while(<Bedingung>)

<Anweisung>



Lösung ausblenden
TESTE DEIN WISSEN

Übertragung auf Prozeduren


Lösung anzeigen
TESTE DEIN WISSEN
  • Eine Prozedur ist eine Abkürzung für eine Folge von Anweisungen
    • Aufruf einer Prozedur (mit konkreten Werten) ist selbst eine Anweisung
  • Unter der Vermeidung von formalen Definitionen:
    • Vom Prozeduraufruf verursachte Zustandsänderung ist die Änderung durch den Rumpf der Prozedur, bei Substitution der formalen Parameter.
  • Globale Variablen:
    • Problemlos anwendbar
  • Lokale Variablen:
    • Jeder Block hat seinen eigenen lokalen Programmzustand
Lösung ausblenden
TESTE DEIN WISSEN

"Call-by-Name": Hintergrund

Lösung anzeigen
TESTE DEIN WISSEN
  • "Call-by-name" bedeutet, dass der beim Aufruf einer Prozedur für einen formalen Parameter nicht ein Wert, und nicht eine Referenz, sondern der angegebene Ausdruck übergeben wird.
    • Bei jedem Zugriff wird der Ausdruck neu ausgewertet.
  • Kommt in funktionalen Programmiersprachen häufig vor
  • "Call-by-Need" ist wie "Call-by-name", aber bereits ermittelte Werte werden wiederverwendet
Lösung ausblenden
  • 507204 Karteikarten
  • 10721 Studierende
  • 245 Lernmaterialien

Beispielhafte Karteikarten für deinen Einführung in die Programmierung Kurs an der LMU München - von Kommilitonen auf StudySmarter erstellt!

Q:

Parameterübergabe: Call-by-Value

A:
  • Wenn eine Methode mit konkreten Ausdrücken für die Parameter aufgerufen wird, ist die Frage, was genau für die formalen Parameter übergeben wird.
  • In Java: Immer Berechnung des Werts ("Call-by-value")
    • Der berechnete Wert kann durchaus eine Referenz sein
    • Manchmal bei Parametern mit Referenzdatentyp spricht man von "Call-by-reference"; handelt sich um ein Call-by-Value für Referenzwerte
Q:

new-Operator in Java

A:
  • Syntax: new <Klassenname> (<Ausdruck_1>,...,<Ausdruck_n>)
  • Klassenname ist zunächst der Name des Referenztyps
  • Bedeutung:
    • Die Argumente zusammen mit dem Klassennamen bestimmen, wie viel Speicherplatz benötigt wird
    • Der entsprechende Speicherplatz wird auf dem Heap reserviert
    • Die Referenz auf diesen Speicherbereich ist das Ergebnis
Q:

Werte von Referenzdatentypen

A:
  • Referenzdatentypen haben (natürlich) Referenzen als Werte.
  • Eine Referenz ist eine Adresse im Heap
  • Heapspeicher muss explizit angewiesen werden:
    • Implizit durch Zuweisung eines Literals (z.B. String s = "Welcome!");
    • Allgemein mit dem new-Operator (z.B. String s = new String("Welcome!");
    • Das Literal (linke Seite) wird vom Compiler als statischer Speicher mit fester Adresse verwaltet
    • Das Ergebnis von new ist eine Referenz auf den Heapspeicher
Q:

Laufzeitspeicher: Stapel und Halde (Stack und Heap)

A:
  • Zur Laufzeit eines Programms wird der dafür reservierte Speicher (im RAM) in zwei dynamisch genutzte Bereiche unterteilt:
    • Stapel (Stack) für Variablen und Parameter in Methoden
    • Halde (Heap) für Werte von Referenzdatentypen
  • Es gibt statischen Speicher (Schlüsselwert static)
    • Compiler-Optimierungen reduzieren Speicherbedarf dafür
Q:

Datentypen in Java

A:
  • Primitive Datentypen:
    • "Eingebaut" in Compiler und Laufzeitsystem
    • Viele Infix- und Präfixoperationen
    • Datentypname beginnt mit einem kleinen Buchstabe
  • Referenzdatentypen:
    • Über Klassen definiert, selbst definierbar
    • Einige "eingebaut", d.h. in Standardinstallation enthalten
    • Datentypname beginnt mit einem großen Buchstabe
Mehr Karteikarten anzeigen
Q:

Grundlegende Vorteile von Unterprogrammen

A:
  • Lokalität (locality, cohesion):
    • Programmcode ist in einer überschaubaren Größe
    • Entwickler hat klare Überblick darüber, welche Effekte erzielt werden
  • Änderbarkeit (modifiability):
    • Wenn Änderungen an einer grundlegenden Berechnung vorzunehmen sind, ist es ganz wesentlich, dass alle Stellen, an dene diese Berechnung vogenommen wird, das gleiche Unterprogramm benutzen. Eine Änderung wird dadurch überall!
  • Wiederverwendbarkeit (reusability):
    • Methoden und Funktionalitäten können in anderen Projekten verwendet werden.
Q:

Prozeduren vs. Funktionen

A:
  • Funktionen sollen keine Seiteneffekte auf globale Variablen haben. Sie liefern ein Ergebnis (mit return).
  • Funktionsprozeduren sind Funktionen, die intern Variablen und Anweisungen benutzen. Auch sie sollen keine Seiteneffekte haben und liefern ein Ergebnis (mit return).
  • (Reine) Prozeduren sollen entweder kein Ergebnis abliefern (Typ void) oder eines, das nur organisatorischen Charakter hat. Sie wirken ausschließlich über Seiteneffekte.
Q:

Methoden, Prozeduren, Funktionen

A:
  • Programmstücke, die separat für eine mehrfache Verwendung deklariert werden und die über spezifische Parameter an den Einsatzzweck angepasst werden können, heißen Methoden.
    • Manchmal spricht man ganz allgemein von Unterprogrammen (Subroutines)
  • Eine Prozedur ist dadurch charakterisiert, dass es such um einen imperativen Algorithmus handelt, also der Rumpf Anweisungen enthält.
  • Eine Funktion ist dadurch charakterisiert, dass sie einen Wert eines Datentyps als Ergebnis abliefert.
Q:

Bedeutung der gezählten Wiederholung

A:
  • Eine for-Schleife der Form:

for(init; bedingung; forschalt) 

rumpf

  • ist fast gleichbedeutend mit:

init;

while (bedingung) {

rumpf;

fortschalt; }

Q:

Iteration

A:
  • Wiederholungsanweisungen dienen zur mehrfachen Ausführung einer Anweisung bzw. eines Anweisungsblocks.
  • Bedingte Wiederholungsanweisung:
    • Oft auch while-Schleife genannt
  • Gezählte Wiederholungsanweisung:
    • Oft auch for-Schleife genannt
  • Java-Syntax: 

while(<Bedingung>)

<Anweisung>



Q:

Übertragung auf Prozeduren


A:
  • Eine Prozedur ist eine Abkürzung für eine Folge von Anweisungen
    • Aufruf einer Prozedur (mit konkreten Werten) ist selbst eine Anweisung
  • Unter der Vermeidung von formalen Definitionen:
    • Vom Prozeduraufruf verursachte Zustandsänderung ist die Änderung durch den Rumpf der Prozedur, bei Substitution der formalen Parameter.
  • Globale Variablen:
    • Problemlos anwendbar
  • Lokale Variablen:
    • Jeder Block hat seinen eigenen lokalen Programmzustand
Q:

"Call-by-Name": Hintergrund

A:
  • "Call-by-name" bedeutet, dass der beim Aufruf einer Prozedur für einen formalen Parameter nicht ein Wert, und nicht eine Referenz, sondern der angegebene Ausdruck übergeben wird.
    • Bei jedem Zugriff wird der Ausdruck neu ausgewertet.
  • Kommt in funktionalen Programmiersprachen häufig vor
  • "Call-by-Need" ist wie "Call-by-name", aber bereits ermittelte Werte werden wiederverwendet
Einführung in die Programmierung

Erstelle und finde Lernmaterialien auf StudySmarter.

Greife kostenlos auf tausende geteilte Karteikarten, Zusammenfassungen, Altklausuren und mehr zu.

Jetzt loslegen

Das sind die beliebtesten StudySmarter Kurse für deinen Studiengang Einführung in die Programmierung an der LMU München

Für deinen Studiengang Einführung in die Programmierung an der LMU München gibt es bereits viele Kurse, die von deinen Kommilitonen auf StudySmarter erstellt wurden. Karteikarten, Zusammenfassungen, Altklausuren, Übungsaufgaben und mehr warten auf dich!

Das sind die beliebtesten Einführung in die Programmierung Kurse im gesamten StudySmarter Universum

Einführung in die Programmierung - EPR

Universität Frankfurt am Main

Zum Kurs

Die all-in-one Lernapp für Studierende

Greife auf Millionen geteilter Lernmaterialien der StudySmarter Community zu
Kostenlos anmelden Einführung in die Programmierung
Erstelle Karteikarten und Zusammenfassungen mit den StudySmarter Tools
Kostenlos loslegen Einführung in die Programmierung