1 pulsierender Speicher
|
|
- Margarethe Meissner
- vor 5 Jahren
- Abrufe
Transkript
1 1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die Eingabe [...] als pulsierenden Speicher dar, wobei die aktuelle Situation bei jedem Passieren der Marken [...] gezeigt werden soll. Führen Sie des Weiteren auch ein Rücksprungmarkenprotokoll. 1.2 Überblick Gültigkeitsbereich Objekte = Funktionen (inklusive der main-funktion) und alle Variablen (lokale, globale Variablen sowie formale Parameter) Funktionen ab der Zeile ihrer Deklaration (dies entspricht dem ersten Auftreten des Funktionskopfes, die eigentlich Implementierung kann auch weiter unten erfolgen) bis zur letzten Zeile des Programmes Variablen global ab der Zeile ihrer Deklaration bis zum Ende des Programmes (sie werden jedoch eventuell innerhalb von Funktionen durch lokale Variablen gleichen Namens überdeckt) lokal und formale Parameter nur in der jeweiligen Funktion gültig (von der Zeile der Deklaration bis zur schließenden geschweiften Klammer der Funktion) pulsierender Speicher Der pulsierende Speicher besteht aus 3 Spalten: dem Haltepunkt, dem Rücksprungmarkenkeller und der Umgebung. Haltepunkt Zum Aufstellen des pulsierenden Speichers wird die Abarbeitung des Programms Schritt für Schritt verfolgt. Immer wenn die Ausführung des Programmes ein Label erreicht, wird eine neue Zeile im pulsierenden Speicher angelegt. Der Haltepunkt entspricht dem Namen des Labels. Rücksprungmarkenkeller gibt immer den derzeitigen Aufrufstack der Funktionen an. Jeder Aufruf legt eine Rücksprungmarke auf den Keller. Umgebung bildet den Speicher ab, d.h. an welchen Adressen welche Werte vorhanden sind. Namen werden immer nur für aktuell sichtbare Variablen geschrieben, die Werte müssen dagegen für alle belegten Speicherplätze angegeben werden. Die Umgebung wächst mit jedem Funktionsaufruf und schrumpft nach Verlassen einer Funktion, da sich die Anzahl benötigter Speicherplätze verändert (daher der Name pulsierender Speicher). Wird ein neuer Speicherplatz benötigt, wird immer die erste freie Adresse zugewiesen. 1
2 1.3 Grundlagen Deklaration einer Variablen Es gibt drei Arten von Variablen: lokale, globale und formale Parameter. Der Speicher der globalen Variablen wird noch vor dem Aufruf der Mainfunktion reserviert und erst beim Beenden des Programmes wieder freigegeben. Daher sind diese Speicherplätze über die gesamte Programmlaufzeit belegt und werden in der Umgebung durch einen senkrechten Strich abgetrennt von lokalen Variablen getrennt. Speicher für lokale Variablen wird bei der ersten Deklaration reserviert und beim Verlassen des zugehörigen Blockes wieder freigegeben. Eine lokale Variable in einer Funktion wird also durch ihre jeweilige Deklaration angelegt und beim Verlassen der Funktion wieder entfernt. Die formalen Parameter werden beim Aufruf einer Funktion angelegt und beim Verlassen wieder gelöscht - dies ist auch in den zwei nachfolgenden Abschnitten näher beschrieben Aufruf einer Funktion Wird eine Funktion per func(param1,param2,...); aufgerufen, laufen folgende Schritte ab: 1. Sichern der aktuellen Rücksprungmarke, welche direkt hinter dem Funktionsaufruf steht 2. Anlegen der formalen Parameter auf dem Stack 3. Übergabe der Werte der aktuellen Parameter an die formalen Parameter, d.h. Zuweisung der Werte des Funktionsaufrufs zu den entsprechenden Paramtervariablen 4. Sprung zur Funktion Im pulsierenden Speicher werden der Stack für die Rücksprungmarken (1.) und der Stack für die Variablen (2.) getrennt geführt. Ersterer wird im Rücksprungmarkenprotokoll festgehalten (ähnlich wie beim Rücksprungalgorithmus) und letzterer in der Umgebung Beenden einer Funktion Eine Funktion wird bei einer return-anweisung oder an der letzten Zeile einer void-funktion beendet und es muss zum Aufrufer der Funktion zurückgesprungen werden. Im wesentlichen wird beim Rücksprung aus einer Funktion der Ausgangszustand wiederhergestellt: 1. Freigeben des Stacks der Funktionsvariablen (Parameter, lokale Variablen) 2. Freigeben der Rücksprungmarke 3. Rücksprung Dies hat für den pulsierenden Speicher zur Folge, dass beim Rücksprung aus einer Funktion die Umgebung meist kleiner wird und sich der Rücksprungmarkenkeller verkleinert. 1.4 Erklärung am Beispiel Aufgabe Gegeben sei das folgende C Programm: 2
3 1 #include <s t d i o. h> 2 int a, b ; 3 4 void g ( int x, int y ) { 5 / l a b e l 1 / 6 i f ( y > 1) { 7 g ( x, y 1 ) ; / $1 / 8 x = x x ; / l a b e l 2 / 9 } 10 else x = x + 1 ; 11 } void f ( int x, int y, int z ) { 14 / l a b e l 3 / 15 i f ( x > 0) { 16 f ( x 2, y, z ) ; / $2 / / l a b e l 4 / 17 g ( z, x ) ; / $3 / / l a b e l 5 / 18 } 19 else z = y ; 20 } int main ( ) { 23 int c ; 24 p r i n t f ( "\n Zahl a : " ) ; 25 s c a n f ( "%d", &a ) ; 26 p r i n t f ( "\n Zahl b : " ) ; 27 s c a n f ( "%d", &b ) ; / l a b e l 6 / 28 f ( a, &b, &c ) ; / $4 / / l a b e l 7 / 29 p r i n t f ( "\n Das Ergebnis l a u t e t : %d\n\n", c ) ; 30 return 0 ; 31 } (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die Eingabe a = 2 und b = 2 als pulsierenden Speicher dar, wobei die aktuelle Situation bei jedem Passieren der Marken label1 bis label7 gezeigt werden soll. Führen Sie des Weiteren auch ein Rücksprungmarkenprotokoll. Beachten Sie: $1 bis $4 sind die bereits festgelegten Rücksprungmarken Gültigkeit der Objekte Mit Objekte sind die Funktionen und alle Variablen in dem gegebenen Quelltext gemeint. Eine Funktion oder Variable ist in einer Zeile gültig, wenn sie ohne Compilerfehler aufgerufen werden kann. Damit ergibt sich: Funktionen g: Zeile 4 31 (g könnte ab Zeile 4 hinter der geschweiften Klammer bis Zeile 31 aufgerufen werden) f: Zeile
4 main: Zeile Variablen global: a,b: Zeile 2 31 in g: x,y: 4 11 in f: x,y,z: in main: c: Hinweis: Nicht immer müssen globale Variablen überall sichtbar sein! In C überschreiben lokale Variablen die Sichtbarkeit der globalen. Hätte also die Funktion f als Parameter noch a, wäre das globale a nur von 2 3 und sichtbar. (Und das lokale a entsprechend Zeile 4 11) pulsierender Speicher Die Protokollierung beginnt mit folgender Tabelle: Das Programm wird nun (im Kopf) bis zum ersten Haltepunkt ausgeführt. Haltepunkte werden durch einen Kommentar der Form /* label<nr> */ gekennzeichnet. Der Code wird stets bis direkt vor dem Haltepunkt ausgeführt. Befindet sich also der Haltepunkt in einer Zeile hinter einem Funktionsaufruf, wird zuerst diese Funktion abgearbeitet. Das Programm startet in der Funktion main, also in Zeile 22. Die Zeile 23 legt eine lokale Variable an, danach folgt die Ein- und Ausgabe, bis wir in Zeile 27 auf label6 stoßen. Es befinden sich jetzt also die 2 globalen Variablen a und b sowie die lokale Variable c in der Umgebung. Der Markenkeller ist leer, da wir uns noch in der Hauptfunktion befinden. Für a und b wurden laut Aufgabenstellungen Werte festgelegt (durch die Nutzereingabe). Damit ergibt sich (in der Umgebung stehen oben die Variablennamen sofern sichtbar und unten die entsprechenden Werte): In der nächsten Zeile (28) findet ein Funktionsaufruf statt. Dies bedeutet: 1. die Rücksprungmarke muss gesichert werden, d.h. die festgelegte Marke 4 wird auf den Keller gelegt 2. die neuen Parameter müssen angelegt und initialisiert werden. Die Funktion f hat den Wertparameter x und die zwei Referenzparameter y und z. Bei ersterem wird der Wert einfach kopiert, d.h. der Wert von a wird in den Speicher für das lokale x kopiert. Damit hat x den Wert 2. Der erste Referenzparameter y bekommt die Adresse von b zugewiesen; dies wird im pulsierenden Speicher mit dem #-Symbol verdeutlicht. Da b in der Umgebung an Speicherplatz 2 abgelegt ist, hat y damit den Wert #2. Der Speicherplatz 2 ist nun also durch b und *y ansprechbar. Ähnliches gilt für z: Der Speicher mit der Umgebungsnummer 3 ist über *z erreichbar. c ist eine lokale Variable der Mainfunktion, hier also nicht mehr sichtbar. Damit ergibt sich folgendes: 4
5 2 #2 #3 Da x in Zeile 15 tatsächlich größer 0 ist, wird als nächstes die Funktion f noch einmal rekursiv aufgerufen. Im Speicherbelegungsprotokoll erhalten nur die Variablen einen Namen, die auch momentan sichtbar sind. Deshalb ergibt sich: 2 #2 #3 label3 2:4 a b,*y *z x y z 2 #2 #3 0 #2 #3 Da x nun nicht mehr größer als 0 ist, wird der else-zweig in Zeile 19 ausgeführt, sodass von Speicherplatz 2 der Inhalt nach Speicherplatz 3 kopiert wird - Speicher 3 erhält somit als Wert die 2. Da die nun folgende Zeile 20 die letzte in der Funktion ist, erfolgt der Rücksprung. Die lokalen Variablen der aktuellen Instanz von f werden also gelöscht und die oberste Rücksprungmarke (2) wird dem Markenkeller entnommen um an die Aufrufstelle zurückzukehren. Ein Blick in den Quelltext ergibt, dass diese Stelle vor label4 war. Es empfiehlt sich im Markenkeller von unten nach oben nach dem alten Kontext zu suchen, so dass man die Variablenbezeichnung von dort abschreiben kann. Die Werte sollte man allerdings von der letzten Zeile übernehmen, da diese sich vermutlich geändert haben. Hier werden wir in Zeile 2 der Tabelle fündig und es ergibt sich: 2 #2 #3 label3 2:4 a b,*y *z x y z 2 #2 #3 0 #2 #3 label4 4 a b,*y *z x y z #2 #3 Die nächsten Aufrufe verlaufen analog, sodass sich insgesamt folgendes Ablaufprotokoll ergibt: 5
6 2 #2 #3 label3 2:4 a b,*y *z x y z 2 #2 #3 0 #2 #3 label4 4 a b,*y *z x y z #2 #3 label1 3:4 a b *x x y #2 #3 #3 2 label1 1:3:4 a b *x x y #2 #3 #3 2 #3 1 label2 3:4 a b *x x y #2 #3 #3 2 label5 4 a b,*y *z x y z #2 #3 label7 - a b c Anmerkungen Zeiger Die Bezeichnung der Speicherstelle auf die gezeigt wird (z.b. mit *y) ist in der Prüfung nicht gefordert. Je nach Geschmack kann dies also auch weggelassen werden. Dies spart zwar Schreibarbeit, aber bei einer entsprechenden Rechenoperation muss dann im Kopf dereferenziert werden Sichtbarkeit In C gilt der so genannte static scope. Dabei wird immer die Variable genutzt, deren Deklaration am nächsten steht. Eine lokale Variable oder ein Parameter überschreibt also eine globale Variable, d.h. die globale Variable wird in diesem Fall überdeckt und ist nicht mehr sichtbar. 1 int x, y ; void f ( int x ) { 4 int y = x ; 5 } 6... Die globale Variable x ist in diesem Fall also von Zeile 1-2 sowie ab Zeile 6 sichtbar. In der Funktion f wird das globale x von dem lokalen x überdeckt, d.h. der formale Parameter x von f ist von Zeile 3 bis 5 sichtbar. Analoges gilt für y: Das globale y ist von Zeile 1 bis 3 sowie ab Zeile 6 sichtbar. Das lokale y wird dagegen von Zeile 4 bis 5 genutzt. Der Vorteil dieses Verfahrens ist, dass die Sichtbarkeit schon zur Compilierzeit klar ist, wie folgendes Beispiel klar macht: 1 int x = 0 ; 6
7 2 int f ( ) { return x ; } 3 int g ( ) { int x = 1 ; return f ( ) ; } Wird nun die Funktion g aufgerufen, liefert sie den Wert 0 zurück (da f immer das globale x verwendet). Das Gegenteil von static scope ist dynamic scope. Dabei wird immer der Wert der Variablen benutzt, der zuletzt beim Aufruf der aktuellen Funktion gültig war. Für das Beispiel oben würde damit die Funktion g den Wert 1 zurückliefern. Dieses Verfahren ist besser für der Interpretierung von Sprachen geeignet und wird da meist in Skriptsprachen (wie z.b. Perl) eingesetzt. 7
Globale Variablen Diverses. Globale Variablen. Globale Variablen
lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb
MehrEWS, WS 2016/17 Pfahler I-1
Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler Funktionen EWS, WS 2016/17 Pfahler I-1 Funktionen Funktion: Rechenvorschrift mit einem Namen und ggf. formalen Parametern,
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
MehrFunktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen
Funktionen Funktionen erlauben, dem Programmcode hierarchisch zu strukturieren ein Hauptprogramm steuert dabei die Abfolge von Schritten, die einzelnen Schritte können durch Funktionen realisiert werden
MehrC# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services
C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften
MehrInhalt. 4.9 Typen, Variable und Konstante
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
MehrKapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?
Kapitel 3 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Anweisungen, Variablen Arten von Anweisungen Variablen Konstanten Höchste Zeit für ein Programm Gültigkeitsbereich von Variablen
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
Mehr2. Unterprogramme und Methoden
2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrTyp : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrPraxis der Programmierung
Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF
MehrImperative Programmierung in Java: Kontrollfluß II
2 Imperative Programmierung in va: Kontrollfluß II Martin Wirsing Ziele Lernen imperative Programme in va mit Zuweisung, Block, Fallunterscheidung, Iteration zu schreiben Lernen Kontrollflußdiagramme zur
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
Mehr(Ausnahmebehandlung)
16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrC++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
Mehr6 Speicherorganisation
6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
Mehr6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung
MehrJava Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017
Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben
Mehr6. Unterprogramme 6-1
6. Unterprogramme 6.1 Prozeduren und Funktionen 6.2 Deklaration und Aufruf 6.3 Call-by-Value / Call-by-Reference 6.4 Standardfunktionen in C 6.5 Gültigkeitsbereich von Namen 6.6 Rekursion 6. Unterprogramme
MehrEinführung in die Programmierung II. 4. Funktionen
Einführung in die Programmierung II 4. Funktionen Stefan Zimmer 17. 5. 2006-1- Warum Funktionen? Idee: Programmcode, der an mehreren Stellen des Programms verwendet wird, an einer Stelle aufschreiben (Funktionsdefinition);
MehrRekursive Funktionen (1)
Rekursive Funktionen (1) Rekursive Algorithmen Wenn Gesamtlösung durch Lösen gleichartiger Teilprobleme erzielbar: Rekursion möglich Beispiel: Fakultät einer ganzen Zahl n: n i n! = i=1 für n > 0 1 für
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrRekursive Funktionen (1)
Rekursive Funktionen (1) Rekursive Algorithmen Wenn Gesamtlösung durch Lösen gleichartiger Teilprobleme erzielbar: Rekursion möglich Beispiel: Fakultät einer ganzen Zahl n: nn ii nn! = ii=1 für nn > 0
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
MehrÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
MehrProzeduren und Funktionen
OSZ Handel I - Gymnasiale Oberstufe (Abt. V) In Anlehnung an: Duden Informatik (3.Auflage, Dudenverlag, 2001, S. 477). Prozeduren und Funktionen Fach: Informatik Parameter sind Platzhalter in einer Prozedur
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrEin paar Kleinigkeiten zum Einstieg
Ein paar Kleinigkeiten zum Einstieg Includes und Namensräume Ausgabe in in C++ Ausgabeformatierung mit mit Manipulatoren Eingabe in in C++ Defaultargumente in in C++ Überladene Funktionen Typisierte Konstanten
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrOffenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...
0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement
MehrSoftware Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge
MehrProgrammieren I. Kapitel 12. Referenzen
Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung
MehrGrundlagen der Objektorientierten Programmierung - Methoden -
Methoden In ihrem formalen Aufbau entsprechen Java-Methoden den Funktionen in C und C++. Eine Methode dient dazu, eine häufig benötigte Folge von Anweisungen unter einem Namen zusammenzufassen und zum
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrAlgorithmen implementieren. Implementieren von Algorithmen
Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente
MehrEinstieg in die Informatik mit Java
Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrKlausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011
Kompaktkurs Einführung in die Programmierung Klausur Seite 1/10 Name, Vorname, Unterschrift: Matrikelnummer: Wichtig: Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
MehrPraxis der Programmierung
Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrC++ - Funktionen und mehr -
C++ - Funktionen und mehr - Friedrich-Schiller-Universität Jena Kerstin Gößner und Ralf Wondratschek Prof. Dr. habil. Wolfram Amme Dipl.-Inf. Thomas Heinze Inhaltsverzeichnis 1 Einleitung 3 2 Deklaration,
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrKapitel 4: Anweisungen und Kontrollstrukturen
inführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 4: Anweisungen und Kontrollstrukturen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
MehrProgrammierung mit C Funktionen
Programmierung mit C Funktionen Funktionen... sind Unterprogramme (Subroutinen), mit denen Sie Teilprobleme einer größeren Aufgabe lösen können.... fassen Anweisungen zu einem Block zusammen, der eine
MehrC++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
MehrVariablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele
Variablen in Java Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 11/04 2 Ziele Unterschiedliche Arten von Variablen in Java verstehen Bestimmen von Gültigkeitsbereich
MehrMussten wir eine ganze Reihe solcher Zahlen speichern, haben wir das eindimensionale Array verwendet.
C Zweidimensionale Arrays Fachspezifische Softwaretechnik 1 Scriptum 2017 HTL St.Pölten Elektronik und Technische Informatik EL Autor: Kuran Zweidimensionale Arrays: Bisher konnten wir in Variablen einfache
MehrEinleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn
C: Funktionen Philip Gawehn Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Do., 22.05.2014 1 / 23 Gliederung
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrDieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
MehrKontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht
Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Mehr41.8 LUA-Grundlagen - Tabelle, if und Albernheit
41.8 LUA-Grundlagen - Tabelle, if und Albernheit Autor: Goetz Quelle: Mein EEP-Forum In diesem Kapitel möchte ich eine erste, einfache Anwung von Lua auf einer Anlage zeigen. Ich werde mich dabei auf den
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrProgrammiersprachen und ihre Übersetzer
Folien zur Vorlesung Programmiersprachen und ihre Übersetzer Kapitel 5 Übersetzung imperativer Sprachen Faculty of Technology robert@techfak.uni-bielefeld.de June 18, 2013 Prozedurmechanismus Seit ALGOL
MehrVerwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C
Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
MehrEinstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Mehr