Programmiersprachen und ihre Übersetzer

Größe: px
Ab Seite anzeigen:

Download "Programmiersprachen und ihre Übersetzer"

Transkript

1 Folien zur Vorlesung Programmiersprachen und ihre Übersetzer Kapitel 5 Übersetzung imperativer Sprachen Faculty of Technology robert@techfak.uni-bielefeld.de June 18, 2013

2 Prozedurmechanismus Seit ALGOL und Pascal enthalten imperative (und dann auch alle objekt-orientierten) Sprachen die Konzepte Prozeduren / Funktionen / Methoden Prozedur-Parameter verschiedener Art, insbesondere wiederum Prozeduren globale und lokale Definitionen verschachtelte Sichtbarkeitsbereiche Rekursion Wie bildet man diese Konzepte auf eine Zielmaschine ab? Das ist Thema dieses Kapitels.

3 Statisch und dynamisch Zwei Grundbegriffe, die immer wieder auftauchen: Statische Größe: Zur Compilezeit bekannt und vom Compiler ermittelt Beispiel: Typ einer Variablen Dynamische Größe: Hängt ab vom Programmablauf Kann nicht vom Compiler bestimmt werden Compiler legt fest, WO diese Größe zur Laufzeit zu finden ist Compiler erzeugt Code, der zur Laufzeit diese Größe bestimmt Speicherbedarf für Felder (arrays)

4 Speicherabbildung Prozeduren sind statisch geschachtelt und ggf. dynamisch rekursiv Variablen werden im Hauptprogramm bzw. in den Prozeduren deklariert, ebenso formale Prozedurparameter. In inneren Prozeduren kann auf globale, d.h. in umfassenden Prozeduren deklarierte Variablen zugegriffen werden. (Das Hauptprogramm sehen wir als umfassende Prozedur, die vom Betriebssystem aufgerufen wird.)

5 Instanzen Wenn Prozeduren lokale Variable haben und rekursiv sind gibt es mehrere Instanzen dieser Variablen gleichzeitig, und sie können globale Variable für andere Prozeduren sein...

6 Instanzen Wenn Prozeduren lokale Variable haben und rekursiv sind gibt es mehrere Instanzen dieser Variablen gleichzeitig, und sie können globale Variable für andere Prozeduren sein... In diesem Kapitel geht es um die Speicherverteilung für Variablen unter den Gesichtspunkten: korrekte Implementierung der Gültigkeitsbereiche Speicherökonomie effiziente Adressierung der Variablen

7 Prozedur-Deklarationen, Objekte, Aufrufe Bei Pascal-Prozeduren müssen wir drei Aspekte unterscheiden : der Text P einer Prozedurdeklaration ein Prozedurobjekt O P, welches durch Auswertung einer Prozedurdeklaration entsteht, und schließlich der Aufruf A OP eines Prozedurobjektes O P. Wenn wir bei Aufrufen A OP nicht am spezifischen Exemplar O P von P interessiert sind, so sprechen wir auch einfach von einer Inkarnation I P von P.

8 Variablen- Deklarationen und Exemplare Entsprechend unterscheiden wir bei Variablen die Variablendeklaration von dem Exemplar der Variablen, das durch Auswertung der Deklaration zur Programmlaufzeit entsteht.

9 Semantische Festlegungen (1) Festlegung, was in Pascal (wie auch ähnlichen Sprachen) die Wirkung eines Prozeduraufrufs, einer Prozedur-Rueckkehr etc. ist Der Prozeduraufruf setzt die Existenz einer Prozedurobjektes voraus. (Initial ist dies nur das Hauptprogramm.) Beim Aufruf A OP eines Prozedurobjektes O P entsteht eine neue Inkarnation von P. Es werden neue Exemplare E x der lokalen Variablen x (einschließlich formale Parameter) und neue Prozedurobjekte O Q entsprechend dem Deklarationsteil der Prozedurdeklaration P erzeugt. A OP heißt dann der statische Vorgänger dieser O Q und aller ihrer Aufrufe A OQ.

10 Semantische Festlegungen (2) Benutzung einer Variablen setzt voraus, dass ihre Deklaration sichtbar ist. Die Bindung von Namen zu Deklarationen ist statisch und hierarchisch, d.h. ist x ein angewandtes Auftreten eines Namens im Text der Prozedur P, so gibt es eine kleinste textuell umfassende Prozedurdeklaration P (einschließlich P), die eine Deklaration D x für x enthält. Andernfalls ist das Programm statisch-semantisch inkorrekt. D x in P heißt die am Auftreten von x in P sichtbare Deklaration von x.

11 Semantische Festlegungen (2) Benutzung einer Variablen setzt voraus, dass ihre Deklaration sichtbar ist. Die Bindung von Namen zu Deklarationen ist statisch und hierarchisch, d.h. ist x ein angewandtes Auftreten eines Namens im Text der Prozedur P, so gibt es eine kleinste textuell umfassende Prozedurdeklaration P (einschließlich P), die eine Deklaration D x für x enthält. Andernfalls ist das Programm statisch-semantisch inkorrekt. D x in P heißt die am Auftreten von x in P sichtbare Deklaration von x. Deklaration ist auch die Einführung eines formalen Prozedurparameters im Kopf von P.

12 Semantische Festlegungen (3) Statische Verweiskette Gemäß (1) hat jede Inkarnation I P (abgesehen vom Hauptprogramm) einen statischen Vorgänger I Q. Letzterer ist in jedem Fall eine Inkarnation der P textuell unmittelbar umfassenden Prozedur Q. Der statische Vorgänger von I Q ist dann eine Inkarnation I R der Q direkt umfassenden Prozedur R, usw. Durch diese statische Vorgängerbeziehung wird damit, ausgehend von I P, eine statische Verweiskette SV (I P ) = I P, I Q, I R,..., I Hauptprogramm definiert, in der genau eine Inkarnation jeder umfassenden Prozedur vorkommt.

13 Semantische Festlegungen (4) Zugriff auf Variablen Arbeiten wir einen Aufruf von P ab, so liegt die statische Verweiskette vor A OP, A OQ, A OR,..., A OHauptprogramm Ist nun D x in P die an diesem Auftreten von x in P sichtbare Deklaration für x, so ist beim Zugriff auf x während der Ausführung eines Aufrufs A OP von P dasjenige Exemplar E x von x gemeint, dass in der auf der statischen Vorgängerkette von A OP liegenden Inkarnation von P erzeugt wurde.

14 Semantische Festlegungen (5) Zugriff auf Variable x Definiert man die Prozedurschachtelungstiefe pst(p) einer Prozedur P durch { 0 falls P = Hauptprogramm pst(p) = pst(q) + 1 falls P in Q deklariert, so findet man diese Inkarnation gerade als (pst(p) pst(p ))-tes Element (Zählung mit 0 beginnend) der statischen Verweiskette von A OP. Es folgt ein Beispiel, das zeigt, dass die Unterscheidung zwischen Prozeduren und Prozedurobjekten (bzw. -exemplaren) notwendig ist.

15 Quellcode-Beispiel Beispiel : procedure Q (procedure R; y : integer); var x : integer; procedure P; begin writeln(x); x := 5 end; begin x := 1; if y = 0 then begin R; P end else begin x := 2; Q(P,0) end end Wir werden den Aufruf Q(..., 1) betrachten

16 Aktionsfolge beim Aufruf von Q(..., 1) Bei Aufruf Q(..., 1) entsteht folgende Sequenz von Aktionen : Q 1 (..., 1) { erster Aufruf Q 1 von Q; neue Exemplare x 1 von x und P 1 von P, Q 1 wird SV von P 1 } x 1 := 1 x 1 := 2 Q 2 (P 1, 0) { zweiter Aufruf Q 2 von Q; entstehen x 2 und P 2, Q 2 wird SV von P 2 } x 2 := 1 P 1 1 { erster Aufruf P 1 1 von P 1, da R an P 1 geb. } writeln(x 1 ) 2 { da Q 1 SV von P 1 1 } x 1 := 5 { P ist in Q 2 an P 2 gebunden } writeln(x 2 ) 1 { da Q 2 statischer Vorgänger von P 2 1 } x 2 := 5 P 1 2

17 Beobachtungen zum Beispiel Das Beispiel zeigt, dass die Unterscheidung von verschiedenen Exemplaren einer Prozedur, wie P 1 und P 2, notwendig ist, weil es für den Zugriff auf die globale Variable x wichtig zu wissen ist, zu welchem rekursiven Aufruf von Q das x gehört. Wenn wir uns also vorstellen, dass jede Inkarnation I Q von Q ein eigenes Exemplar von P erzeugt, dessen in Q deklarierte globale Variablen gerade an die von I Q erzeugten Exemplare gebunden sind, so ist dieses Bindungsproblem eindeutig gelöst. Die verschiedenen Exemplare einer Prozedur unterscheiden sich also im allgemeinen in der Bindung der globalen Variablen.

18 Kellerprinzip für Inkarnationen Die Inkarnationen lassen sich kellerartig verwalten: Ausgangspunkt: der statische Vorgänger A OP eines Aufrufs A OQ lebt moch zum Zeitpunkt des Aufrufs A OQ. insbesondere der für seine lokalen Variablen allokierte Speicher ist noch verfügbar. Umgekehrt, wird A OP beendet, so kann es danach auch keine Aufrufe A OQ mehr geben, die A OP als statischen Vorgänger haben. Dies liegt daran, dass O Q nur so an Aufrufstellen außerhalb P transportiert werden kann, indem O Q als aktueller Parameter über eine in P beginnende Folge von Prozeduraufrufen zu dieser Aufrufstelle geleitet wird. Solange wie diese Aufrufsfolge nicht vollständig beendet ist, lebt A OP noch. Auf Exemplare der lokalen Variablen in A OP kann nach Beendigung von A OP nicht mehr zugegriffen werden

19 Speicherverteilung Die Grundidee für eine ökonomische Speicherverteilung ist daher, den Speicher kellerartig mit den Prozeduraufrufen pulsieren zu lassen. Zu Beginn eines Aufrufs A OP werden neue Speicherzellen oben auf dem Keller für die neuen Exemplare der lokalen Variablen (einschließlich Parameter) reserviert. Bei Beendigung von A OP wird der Kellerpegel auf den alten Stand vor A OP zurückgesetzt. Der Keller enthält damit jederzeit: alle dynamischen Vorgänger, und darin enthalten, alle statischen Vorgänger des aktuellen Aufrufs.

20 Festlegung Variablenzugriff Obige Betrachtungen ergeben folgendes Schema für Variablenzugriffe: Sei x ein angewandtes Auftreten einer Variablen in der Prozedur P. Sei Q die Prozedur, die die zugehörige Deklaration enthält. Dann gilt: 1 pst(q) pst(p) wegen der Sichtbarkeitsregeln 2 Ist I P eine Inkarnation von P, so ist, falls pst(q) < pst(p), das (pst(p) pst(q))-te Element 1 in SV (I P ) die Inkarnation von Q, die das Exemplar von x erzeugt hat, auf welches in I P zugegriffen wird. 3 Für pst(p) = pst(q) ist P = Q und x eine lokale Variable (oder ein formaler Parameter) von P. 1 Zählung bei 0 beginnend

21 Festlegung Variablenzugriff (2) 3 Für diese in 2. bestimmte Inkarnation I Q von Q gibt es einen eigenen Speicherbereich für die lokalen Variablen. Eine Basisadresse BA IQ zeige auf eine feste Stelle in diesem Speicherbereich. Die Adresse des an x gebundenen Objekts ist dann Adresse x = BA IQ + RelAdr (Q,x) Dabei ist BA IQ für jede Inkarnation I Q spezifisch und damit eine dynamische Größe. RelAdr (Q,x) ist eine Adresse von x relativ zur Basisadresse einer jeden Inkarnation von Q. Sie ist nur von Q, nicht von I Q abhängig, also statisch, d.h. vom Übersetzer auszurechnen.

22 Statisch und dynamisch Zwei Grundbegriffe, die immer wieder auftauchen: Statische Größe: Zur Compilezeit bekannt und vom Compiler ermittelt Beispiel: Typ einer Variablen Dynamische Größe: Hängt ab vom Programmablauf Kann nicht vom Compiler bestimmt werden Compiler legt fest, WO diese Größe zur Laufzeit zu finden ist Compiler erzeugt Code, der zur Laufzeit diese Größe bestimmt Speicherbedarf für Felder (arrays)

23 Aufbau des Prozedurspeicherbereichs (activation area) Prozedur P auf Schachtelungstiefe k. (I P, I Pk 1,..., I P0 ) SV-Kette für eine Inkarnation I P von P. Activation area für die Inkarnation I P :

24 Verwendung des Display Die aktuelle BAsisadresse in BR zeigt immer auf den Anfang des Display. Damit werden die aktuellen Parameter mit negativem offsets relativ zu BA adressiert. Display und lokale Variablen werden dagegen mit positiven offsets angesprochen. Rücksprungadresse und dynamischer Vorgänger werden erst beim Rücksprung wieder gebraucht. Die Basisadresse der laufenden Inkarnation und das Ende des belegten Speichers werden in geeigneten Registern BR (Basisregister) und TOP (Stack Top) gehalten. 2 2 Gängige Alternative zum Display: nur die Basisadresse des statischen Vorgängers abspeichern und die Adressierung über eine Folge von Dereferenzierungen vornehmen.

25 Adressierungsschema für Variablen und Parameter BR + reladr x A x = M[BR + i] + reladr x für lokale Variablen und Parameter für glob. Var. und Par., die auf pst i deklariert sind Konvention: In einem Ausdruck wie BR + i steht BR für den Inhalt des Registers BR. M[a] ist der Inhalt der Speicherzelle mit Adresse a. Für die Adressierung benötigen wir also die statischen Größen Relativadresse reladr x und Prozedurschachtelungstiefe i, sowie die dynamisch bestimmte aktuelle Basisadresse BA IP, die über das Register BR adressiert wird.

26 Codeerzeugung für Umgebungswechsel: Überblick(1) Um den Laufzeitkeller der activation areas zu organisieren, muss Code an vier Stellen erzeugt werden. In der Reihenfolge seiner Ausführung (P ruft Q): an Aufrufstelle in P, vor dem Aufruf von Q nach dem Eintritt in Q vor dem Austritt aus Q nach der Rückkehr an die Aufrufstelle in P Dabei kann Q für P global, lokal oder ein formaler Parameter sein.

27 Codeerzeugung für Umgebungswechsel: Überblick(2) Notwendige Schritte Auswerten der Parameter Bestimmung des Sprungziels Retten aktuelle BA und Rückkehraddresse Aufbau des Displays Allokation von Variablen für A OQ Freigabe des lokalen Speichers Rücksprung Wiederherstellung der vorherigen Umgebung

7 Laufzeit-Speicherverwaltung

7 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.

Mehr

3. Sprachkonzepte und ihre Übersetzungen

3. Sprachkonzepte und ihre Übersetzungen Übersetzung von dynamischen Feldern: var feld: array[u1..o1,,uk..ok] of integer; //ui, oi nicht alle konstant; z.b. Parameter Speicherbelegung: (Felddeskriptor) 0 fiktive Anfangsadresse 1 Feldgröße 2 Subtr.

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

Mehr

1 pulsierender Speicher

1 pulsierender Speicher 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

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software 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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 17 Vom Programm zur Maschine Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

DieÜbersetzung funktionaler Programmiersprachen

DieÜ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;

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 16 Vom Programm zur Maschine Dr.-Ing. Erik Burger Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren 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

Mehr

Imperative Programmierung in Java: Kontrollfluß II

Imperative 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

Mehr

EWS, WS 2016/17 Pfahler I-1

EWS, 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,

Mehr

6. Funktionen, Parameterübergabe

6. 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

Mehr

Informatik II SS Inhalt. Objektlebensdauer (2/3) Objektlebensdauer (1/3)

Informatik II SS Inhalt. Objektlebensdauer (2/3) Objektlebensdauer (1/3) Inhalt Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 5 Lebensdauer von Objekten Speichermanagement Weiterführende Spracheigenschaften und Bindungen Implementierung von statischen Gültigkeitsbereichen

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Übersetzung von Datenstrukturen

Übersetzung von Datenstrukturen Übersetzung von Datenstrukturen bisher: Übersetzung von Mini-Java-Exp: Datenkeller zur Auswertung arithm. Ausdrücke Mini-Java: Sprünge zur Simulation von Kontrollstrukturen Mini-Java-FunProc: rekursive

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Tücken der dynamischen Bindung

Tücken der dynamischen Bindung Kapitel 3 Tücken der dynamischen Bindung 3.1 this-pointer Im Methodenaufruf o.m(x) ist o Bezugsobjekt wird als zusätzlicher Parameter übergeben: m(o,x) kann im Rumpf von m als this (bzw self) angesprochen

Mehr

Stackmaschine; Speicheradressierung

Stackmaschine; Speicheradressierung Stackmaschine; Speicheradressierung Erweiterung um globalen Speicher (Heap, Halde) pro Speicherplatz eine Zahl. Notation ist als Array SP [0..]. Zugriff mittels Adresse (Index): eine Zahl i.a.: Zahlen

Mehr

Programmierung mit C Zeiger

Programmierung 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

Mehr

Kapitel 4. Kontrollstrukturen

Kapitel 4. Kontrollstrukturen Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen

Mehr

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7) J. Zhang zhang@informatik.uni-hamburg.de Universität Hamburg AB Technische Aspekte Multimodaler Systeme

Mehr

Einführung in die Programmierung I. 5. Prozeduren. Stefan Zimmer

Einführung in die Programmierung I. 5. Prozeduren. Stefan Zimmer Einführung in die Programmierung I 5. Prozeduren Stefan Zimmer 19.11.2007 Prozedurdeklaration mit proc Eine (mächtigere) Alternative zur Funktionsdeklaration mit -> besteht aus dem Wort proc einer Sequenz

Mehr

Static Links Displays

Static Links Displays 1 Speicherzuweisung auf dem Stack 2 Zugriff auf nichtlokale Daten auf dem Stack Static Links Displays Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 19 Beispiel: Quicksort int a[11]; void

Mehr

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Dim arrayname (dim1,dim2, ) As Typ Bei eindimensionalen Feldern

Mehr

Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss.

Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss. EZS-Test Fragen zur Programmiersprache C Fragen entnommen aus SPiC 1 1. Ein Hauptprogramm und eine Interruptbehandlung greifen nebenläufig auf die Variable uint16_t foo zu. Das Hauptprogramm verwendet

Mehr

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 (c) Peter Sturm, Universität Trier 1 Rechnerstrukturen 8. Assembler Für Hartgesottene Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1 Assembler Symbolische

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen 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");

Mehr

Kapitel 4. Kontrollstrukturen

Kapitel 4. Kontrollstrukturen Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen

Mehr

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. 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

Mehr

3. Methodik der Programmerstellung

3. Methodik der Programmerstellung 3. Methodik der Programmerstellung 3.1 Vorgehen 3.2 Programmerstellung 3.2.1 Konventionen 3.2.2 Schlüsselwörter und Bezeichner 3.2.3 Fehlertypen 3.2.4 Programmierstil 3.3 Formaler Aufbau eines Pascal-Programms

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. 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

Mehr

Rekursive Funktionen (1)

Rekursive 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

Mehr

Übersetzung imperativer Sprachen Teil 2

Übersetzung imperativer Sprachen Teil 2 Übersetzung imerativer Srachen Teil 2 Inhalt Grundbegriffe Sichtbarkeit von Namen und Bindung Seicherorganisation für Prozeduren Adressierung von Variablen n Globale Variablen n Prozeduraufruf Berechnung

Mehr

Implementieren von Klassen

Implementieren 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

Mehr

Rekursive Funktionen (1)

Rekursive 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

Mehr

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Betriebssysteme Teil 3: Laufzeitsystem für Programme Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

Mehr

INHALTSVERZEICHNIS. 1 Strukturierte Datentypen. 1.1 String. 1.2 Array (Feld) 1.3 Record. 1.4 Set. 2. Erweiterungen in Pascal

INHALTSVERZEICHNIS. 1 Strukturierte Datentypen. 1.1 String. 1.2 Array (Feld) 1.3 Record. 1.4 Set. 2. Erweiterungen in Pascal INHALTSVERZEICHNIS 1 Strukturierte Datentypen 1.1 String 1.2 Array (Feld) 1.3 Record 1.4 Set 2. Erweiterungen in Pascal 2.1 Prozeduren und Funktionen 2.1.1 Prozeduren 2.1.2. Funktionen 2.2. File 2.3. Pointer

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen 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

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. 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

Mehr

Computersysteme. Stacks Anwendung in der Assembler-Programmierung

Computersysteme. Stacks Anwendung in der Assembler-Programmierung Computersysteme Stacks Anwendung in der Assembler-Programmierung 1 Unterprogramme Betrachten wir zunächst folgendes Programm m_mod_n : /Berechne m modulo n für positive Integerwerte m und n. /Beim Programmstart

Mehr

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

Mehr

2. Programmierung in C

2. 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)

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Prozeduren und Funktionen

Prozeduren 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

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu 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

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries INFAS.1 Informatik I Einführung Algorithmus, Programmiersprache, Compiler und Linker Datentypen Attribute, Speicherklassen und Namensbereiche Kontrollstrukturen Präprozessoranweisungen Libraries Funktionen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Präzedenz von Operatoren

Prä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

Mehr

Speicherklassen (1) Lokale Variablen

Speicherklassen (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

Mehr

Assembler Unterprogramme

Assembler Unterprogramme Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme

Mehr

Übersetzungsschema MMS -> 3AC

Übersetzungsschema MMS -> 3AC Übersetzungsschema MMS -> 3AC Vorbereitungen - Tabellen TypeTab Index Type nof_items itemsize basetype fields name 1 integer 2 float 3 bool 4 array 30 4 1 a 5 pointer 4 aref...... Vorbereitungen - Tabellen

Mehr

6 Speicherorganisation

6 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

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung

Mehr

tdaten=record name : string; alter: integer; groesse:real; end;

tdaten=record name : string; alter: integer; groesse:real; end; tdaten=record - Zugriff auf Felder (name, alter, groesse) über externe Methoden, die für jede Unit und jede Variable dieses Records neu geschrieben werden müssen - Zugriff nicht kontrollierbar (immer Schreib-

Mehr

2. Programmierung in C

2. 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)

Mehr

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test Manche Funktionen, deren Ergebnistyp void ist, geben gar keine Werte zurück im Beispiel: write() und main(). Diese Funktionen heißen Prozeduren. Das Hauptprogramm hat immer als Parameter ein Feld args

Mehr

C++ - 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 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.

Mehr

Java Einführung Methoden. Kapitel 6

Java 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

Mehr

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java 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

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13 C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Ü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

Mehr

Kapitel 5 Deklaration und Sichtbarkeitsbereich

Kapitel 5 Deklaration und Sichtbarkeitsbereich Kapitel 5 Deklaration und Sichtbarkeitsbereich Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Deklarationen:

Mehr

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49) Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. 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

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Einführung in die Funktionale Programmierung

Einführung in die Funktionale Programmierung Einführung in die Funktionale Programmierung Am Beispiel von OCaml Michael Dienert 12. Oktober 2018 Inhaltsverzeichnis 1 Welche funktionale Sprache wählen wir? 2 1.1 Welche funktionale Sprache soll ich

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Mikrocomputertechnik. Unterprogramm

Mikrocomputertechnik. Unterprogramm Unterprogramm Ein Teilproblem wird entweder zur mehrmaligen Verwendung oder zur Programmstrukturierung als Unterprogramm codiert. Ein Unterprogramm wird von einem übergeordneten Programm (Hauptprogramm)

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap 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

Mehr

Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) Klausur am 9. April 2008

Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) Klausur am 9. April 2008 Grundlagen der Informatik 2 Modul Systemnahe Programmierung in C (SPiC) WS 2007/2008 Dr.-Ing. Jürgen Kleinöder Friedrich-Alexander-Universität Erlangen-Nürnberg Informatik 4 (Verteilte Systeme und Betriebssysteme)

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu 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

Einführung in die Programmiersprache C

Einfü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:

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap 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

Mehr

Einführung in die Programmiersprache C

Einfü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:

Mehr

Array-Zuweisungen. Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen.

Array-Zuweisungen. Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen. Array-Zuweisungen Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen. Ausschnitte (slices) werden über die Indizes gebildet. Mehrdimensionale Arrays Mehrdimensionale Arrays werden

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Ü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

Mehr

6. Unterprogramme 6-1

6. 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

Mehr