Fachseminar. Semantische Analyse

Größe: px
Ab Seite anzeigen:

Download "Fachseminar. Semantische Analyse"

Transkript

1 Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber

2 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 2

3 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 3

4 1.1 Phasen eines Compilers Wir stellen uns vor das ein Compiler in verschiedene Phasen arbeitet Quellprogramm Lexikalische Analyse Syntaxanalyse Jede Phase überführt das Ergebnis der vorhergingen Phase in eine andere Darstellung In der Praxis werde einige der Phasen zusammengefasst Semantische Analyse Zwischencode Erzeugung Code-Optimierung Code-Erzeugung 4 Zielprogramm

5 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 5

6 1.2 Symboltabelle (1/2) Was ist die Symboltabelle? Eine Datenstruktur, die zur Verwaltung von Informationen über die verschiedenen Konstrukte (Variablen, Funktionen etc. ) der Quellsprache benutzt wird. Die Informationen werden von den Analysephasen des Compilers gewonnen und von der Synthesephasen zur Erzeugung des Zielcodes verwendet. Lexikalische Analyse Syntaxanalyse Semantische Analyse Zwischencode Erzeugung Code- Optimierung Code- Erzeugung Symboltabelle 6

7 1.2 Symboltabelle (2/2) Objekt: Variable Attribute Ident: ObjektArt: Typ: Adresse: Wert: Bezeichner variable Datentyp T (Strukturbeschreibung) Speicherplatz, symbolische Adresse Element aus T So könnte eine Symboltabelle aussehen, in diesem Fall wurde eine DB-Modellierung gewählt. Ident ObjektArt Typ Adresse Wert x variable integer 0FF3A20 2 y variable double 0FF max constant integer 0FF ausgabe function real -> real 1AF6392 7

8 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 8

9 2.1 Was ist die semantische Analyse Aufbau einer künstlichen Sprache erfolgt nach festen Regeln (Syntax, Grammatik) Wörter und Sätze besitzen wohldefinierte Bedeutungen (Semantik) Die Wirkung eines Satzes ergibt sich aus seiner Bedeutung Semantische Analyse überprüft, ob die Teile eines Programms von der Bedeutung her zusammenpassen und sammelt Typ - Informationen Eine wesentliche Aufgabe ist die Typüberprüfung, z.b überprüft der Compiler ob die Operanden eines Operators von der Spezifikation zugelassen sind 9

10 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 10

11 2.2 dynamische-/statische-überprüfung Wir unterscheiden zwischen statische Überprüfung (während der Kompilierung) dynamischen Überprüfung (zur Laufzeit) statische Überprüfung Typüberprüfungen Überprüfungen der Kontrollflusses Überprüfung auf Eindeutigkeit Auf Namen bezogene Überprüfung dynamische Überprüfung dynamische Typüberprüfung ist erforderlich, wenn der Typ von Variablen und Objekten nur zur Laufzeit bestimmt werden kann oder Grenzüberprüfung von Feldern 11

12 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 12

13 2.3 statische-überprüfung Typüberprüfungen Ein Compiler sollte einen Fehler melden wenn einem integer ein string zugewiessen werden soll. Überprüfungen der Kontrollflusses Es gibt Anweisungen wie z.b das break die den Kontrollfluss eines Konstruktes wie der while- for-schleife oder switch-anweisung verlassen, ein Compiler sollte einen Fehler melden wenn eine solche umschließende Anweisung nicht existiert. Überprüfung auf Eindeutigkeit Sollte der Name einer Variable innerhalb des gleichen Anweisungsblockes definieren, so muss der Compiler eine Fehler melden. Auf Namen bezogene Überprüfung Es gibt gewisse Definitionen die auf bestimmte Namenskonventionen basieren der Compiler muss das Überprüfen. 13

14 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische-analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 14

15 2.4 semantische Fehler im Code (1/2) Anweisungen (in C) Anweisung int bsp; bsp[0] = 2; int bsp; bsp = a ; char bsp = b ; bsp = bsp + a ; char bsp; bsp = r int bsp; bsp = 3 + 2; Ergebnis der semantischen Analyse FEHLER! FEHLER! OK! OK! OK! Grund Arrayzugriff auf ein nicht Array Einem integer wird ein character zugewiesen 15

16 2.4 semantische Fehler im Code (2/2) Verwendung und Definition von Symbolen (in C++) Anweisung char bsp; int bsp; int max(int a) {.} int max (int a) {.} int m = max(); int max (int a, int b){..} int bsp; { int bsp; } Ergebnis der semantischen Analyse FEHLER! FEHLER! FEHLER! OK! OK! Grund Variablenname bsp doppelt definiert Funktion max wurde mehrfach definiert Die Funktion max wurde ohne Parameter aufgerufen 16

17 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 17

18 3.1 Typsysteme (1/2) Was ist ein Typsystem? Ein Typsystem für eine Programmiersprache ist eine Menge von Regeln, die die korrekte Verwendung von Typen im Kontext bestimmen. Für bestimmte Konstrukte muss der Type gegeben sein (Definition) und für andere kann der Typ aus der Struktur bestimmt werden. Ein Typsystem heißt stark, wenn alle möglichen statischen Typkonflikte zur Übersetzungszeit erkannt werden können. Ein Typsystem besteht aus gewissen Basistypen (Typnamen) und (Typ-) Konstruktoren, mit denen neue Typen aus vorhandenen konstruiert werden können. Mit den Konstruktoren werden Typausdrücke gebildet. Selektoren sind Operatoren, mit denen auf Komponenten von strukturierten Typen zugegriffen werden kann. 18

19 3.1 Typsysteme (2/2) Beispiel Pascal: Basistypen: integer, real, char, boolean Konstruktoren: array, record, pointer etc. Selektoren: x[e] Arraykomponente, x.a Recordfeld, x^ Pointer Deref. 19

20 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 20

21 3.2 Typüberprüfung von Ausdrücken (1/2) Definition einiger Basistypen Produktion E literal E num Semantikregel E.type := char E.type := integer Der Ausdruck, der durch die Anwendung der mod-operation auf zwei Teilausdrücke vom Typ integer gebildet wird, hat den Typ integer. Bei einem Fehler kommt es zum Typ type_error. Produktion E E1 mod E2 Semantikregel E.type := if E1.type = integer and E2.type = integer then integer else type_error 21

22 3.2 Typüberprüfung von Ausdrücken (2/2) In einer Array-Referenz E1[E2] muss der Indexausdruck E2 den Typ integer haben. In dem Fall ist das Ergebnis der Elementtyp t, den man aus dem Typ array(s,t) des Ausdrucks E1 erhält. Produktion E E1[E2] Semantikregel E.type := if E2.type = integer and E1.type = array(s,t) then t else type_error 22

23 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 23

24 3.3 Typüberprüfung von Anweisungen Da Sprachkonstrukte wie Anweisungen typischerweise keine Werte haben, kann diesen der spezielle einfache Typ void zugewiesen werden. Sollte innerhalb eine Anweisung ein Fehler auftreten, so wird der Anweisung das Typ type_error zugewiesen. Produktion S id := E S if E then S1 S while E do S1 S S1 Semantikregeln S.type := if id.type = E.type then void else type_error S.type := if E.type = boolean then S1.type else type_error S.type := if E.type = boolean then S1.type else type_error S.type := if S1.type = void then void else type_error 24

25 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 25

26 3.4 Typumwandlung (1/4) Szenario: Nehmen wir an wir haben einen Ausdruck wie x + i, wobei x vom Typ double ist und i vom Typ integer. Problem: Die Darstellung von integer- und double-werten unterschieden sich innerhalb eines Computers und es werden verschiedene Maschienenbefehle für integer- und double-werte benutzt. MIPS-Architektur double a = 0; li.d $f4, 0.0 a = a + 3.5; add.d $f4, $f4, 3.5 int b = 0; li $t1, 0 b = b +1 add $t1, $t1, 1 26

27 3.4 Typumwandlung (2/4) Lösung: Compiler muss einen der Operanden umwandeln, um so sicherzustellen dass beide Operanden vom Selben Typ sind, wenn eine Operation stattfindet. Die Sprachdefinition spezifiziert, welche Umwandlungen notwendig sind. Die Entscheidung in was für einen Typ umgewandelt wird, wird entschieden abhängig davon was der Typ auf der linken Seite ist. #include <stdio.h> int main(){ double a = ; int b = ; printf("variable a: %f\n",a); printf("variable b: %d",b); return 0; } // 6.5 // 6 27

28 3.4 Typumwandlung (3/4) Bemerkung: Es gibt zwei Wege eine Typumwandlung durchzuführen, das eine wäre die implizite -Typumwandlung, hier tut der Compiler automatisch die Typumwandlung übernehmen. Die andere Möglichkeit ist das der Programmierer eine Umwandlung selber im Kode vorsieht. Produktion E num E num.num Semmantikregel E.type := integer E.type := real E id E.type := lookup( id.entry ) E E1 op E2 E.type := if E1.type = integer and E2.type = integer then integer else if E1.type = integer and E2.type =real then real else if E1.type = real and E2.type = integer then real else if E1.type = real and E2.type = real then real else type_error 28

29 3.4 Typumwandlung (4/4) Explizite-Typumwandlungen Sprache Syntax C var = (int) 5.60; int * addr; addr = (int*) 0x1234; ptr = (char *)malloc (sizeof(char) * 10); C++ d = static_cast<double>(4); Java double a = (double) 4; String bsp = String.valueOf(2) int bsp = Integer.valueOf( 23 ); 29

30 Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist die semantische-analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 30

31 4.1 PL0 - Program (1/2) PL0-Program VAR x, squ; PROCEDURE square; BEGIN squ := x * x END; BEGIN x := 1; WHILE x <= 10 DO BEGIN CALL square;! squ; x := x + 1; END END. 31

32 4.1 call - Statement (2/2) Call Statement (aufruf einer Prozedur ) void callstmnt(){ int i; getsym(); if (sym == ident) { i = position(id, txcurr); if (i == 0) error(11); if (objkind(i)!= procobj) error(15); emit(cal, levcurr-objlevel(i), objaddr(i)); getsym(); } else error(14); } 32

33 Agenda 1. Einleitung 1.2 Phasen eines Compilers 1.3 Symboltabelle 2. Semantische Analyse 2.1 Was ist die Semantische-Analyse 2.2 dynamische-/statische-überprüfung 2.3 statische-überprüfung 2.4 semantische Fehler im Code 3. Typüberprüfer 3.1 Typsysteme 3.2 Typüberprüfung von Ausdrücken 3.3 Typüberprüfung von Anweisungen 3.4 Typüberprüfung von Funktionen 3.5 Typumwandlung 4. PL0 Compiler 4.1 call - Statement 4.2 read - Statement 33

34 4.2 read - Statement read Statement ( Einlesen von STDIN in eine Variable) void readstmnt() { int i, k; getsym(); if (sym == lparen) { do { getsym(); if (sym == ident) { i = position(id, txcurr); if (i == 0) error(11); k = objkind(i); if (k == constobj k == procobj) error(12); else if (k == varobj) { emit(inp, 0, 0); emit(sto, levcurr-objlevel(i), objaddr(i)); getsym(); } } else error(33); } while (sym == comma); match(rparen, 22); } else error(43); } 34

35 Fragen Danke für die Aufmerksamkeit!!! 35

ÜBERPRÜFUNG VON TYPEN

ÜBERPRÜFUNG VON TYPEN 5. Kapitel ÜBERPRÜFUNG VON TYPEN Compilerbau Prof. Dr. Wolfgang Schramm Typüberprüfung 1 Was ist wird überprüft? Ob Operatoren und Operanden verträglich (kompatibel) sind. Welche Programmelemente haben

Mehr

Definition Compiler. Bekannte Compiler

Definition Compiler. Bekannte Compiler Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung

Mehr

Zwischencode-Erzeugung. 2. Juni 2009

Zwischencode-Erzeugung. 2. Juni 2009 Zwischencode-Erzeugung im Rahmen des Seminars "Übersetzung von künstlichen Sprachen" Sebastian Hanneken 2. Juni 2009 1 / 32 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung

Mehr

Compilerbau für die Common Language Run-Time

Compilerbau für die Common Language Run-Time Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language) 4. Zur Struktur der PS PASCAL 4.1. Einleitende Bemerkungen 1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language) Anfang 60er (USA) COBOL (Commercial Business

Mehr

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

Ein kleiner Blick auf die generische Programmierung

Ein kleiner Blick auf die generische Programmierung TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

4.2 Programmiersprache C

4.2 Programmiersprache C 4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

Syntax der Sprache PASCAL

Syntax der Sprache PASCAL Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +

Mehr

Informatik I Übung, Woche 40

Informatik I Übung, Woche 40 Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo

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

JAVA 06: Gemischte einfache Fragen zu Java

JAVA 06: Gemischte einfache Fragen zu Java Lernkartenkurs JAVA 06: Gemischte einfache Fragen zu Java panitz Zusammenfassung In diesem Kurs geht es um Terminologie und Grundzüge der Programmiersprache Java. Dieses betrifft sowohl Aspekte der Programmierung

Mehr

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1 Kapitel 15: Von dynamischen zu statischen Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2016/2017 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen

Mehr

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

Android-Apps Gegenüberstellung Delphi java

Android-Apps Gegenüberstellung Delphi java Android-Apps Gegenüberstellung 2/9 Grundsätzliches etc. Groß-/Kleinschreibung egal sensitiv! Zuweisung := = Kommentare // // { } /* */ Zeichenkettenbegrenzer: 'text' "text" Inkrementieren / Dekrementieren

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

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

Herzlich willkommen!

Herzlich willkommen! Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in

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

Grundelemente objektorientierter Sprachen (1)

Grundelemente 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

Mehr

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus. 1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente 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

Mehr

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung

Mehr

Grundlagen der Objektorientierten Programmierung - Methoden -

Grundlagen 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

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

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

Praxis der Programmierung

Praxis der Programmierung Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation

Mehr

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1 Kapitel 15: Von dynamischen zu statischen Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2018/2018 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen

Mehr

Programmieren in Java

Programmieren in Java Einführung in die (imperative) Programmierung 2 Wiederholung: Allgemein Hohe Programmiersprache Compiler Interpreter Maschinensprache Zielsystem 3 Wiederholung: Java Java Compiler Bytecode JRE Just-In-Time

Mehr

Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3.

Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3. Typisierung Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg

Mehr

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.

Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. 4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 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

Mehr

Informatik 1. Prüfung im Wintersemester 1997/98

Informatik 1. Prüfung im Wintersemester 1997/98 Informatik 1 Prüfung im Wintersemester 1997/98 Fachhochschule für Technik und Wirtschaft Reutlingen, Fachbereich Elektronik Prüfungsfach/Studiengang/Semester: Informatik 1 in Elektronik 1 Prüfer: Prof.

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) 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 Zeigern

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

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

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an

Mehr

Scala. Funktionale (Zustandslose) Objekte

Scala. Funktionale (Zustandslose) Objekte Scala Funktionale (Zustandslose) Objekte Agenda Was sind Funktionale Objekte? veränderliche Objekte vs. unveränderliche Objekte Klassen Parameter Konstruktoren Private Member Methoden und Operatoren Overriding

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

Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung

Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung Lehrstuhl für Programmierparadigmen Universität Karlsruhe (TH) 13. Mai 2009 (IPD Snelting) Sitzung 4 Semantik 13. Mai 2009 1 / 13 1 Letzte Woche

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Struktur des MicroJava-Compilers

Struktur des MicroJava-Compilers Struktur des MicroJava-Compilers Compiler Parser.mj Scanner Code- Generator.obj Symboltabelle UE zu Übersetzerbau Lexikalische Analyse 1 Grammatik ohne Scanner Expr = Term { "+" Term }. Term = Factor {

Mehr

ALGOL 68 im Aspekt einer modernen Programmiersprache???

ALGOL 68 im Aspekt einer modernen Programmiersprache??? ALGOL 68 im Aspekt einer modernen Programmiersprache??? General-purpose-Programmiersprache: Ein sehr wichtiges Kriterium ist die Möglichkeit, alle Algorithmen (=Lösungsverfahren) in einer Programmiersprache

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner

Mehr

5. Übung - Kanalkodierung/Programmierung

5. Übung - Kanalkodierung/Programmierung 5. Übung - Kanalkodierung/Programmierung Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Kanalkodierung a Folgende Kodes stehen Ihnen zur Verfügung: Kode 1: 0000000 Kode

Mehr

Ausdrücke der Programmiersprache Java

Ausdrücke der Programmiersprache Java Ausdrücke der Programmiersprache Java Hamburg 1 Ablauf des Vortrags 01. Eigenschaften von Ausdrücken 02. Arithmetische Operatoren 03. Relationale Operatoren 04. Logische Operatoren 05. Bitweise Operatoren

Mehr

3.2 Datentypen und Methoden

3.2 Datentypen und Methoden Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Zeiger (engl. Pointer)

Zeiger (engl. Pointer) Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Grundlagen der Programmierung 2 (Comp-A)

Grundlagen der Programmierung 2 (Comp-A) Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 23. Mai 2007 Compiler; Übersetzungprogramme Ein Übersetzer (Compiler) ist ein Programm,

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente 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

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 -

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 2: Prof. Dr. Unser erstes C-Programm int main (int argc, char *argv[]) int i; int sum = 0; for (i = 0; i

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

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

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default

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

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein Programm, das ein Wort

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker Andreas Keese Institut f. Wissenschaftliches Rechnen TU Braunschweig 8. September 2014 Der Text, die Abbildungen und Programme

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Kapitel 5: Semantische Analyse

Kapitel 5: Semantische Analyse Kapitel 5: Semantische Analyse Prinzip Operationen der Übersetzung werden an die Grammatik gebunden -> Compiler-Generatoren Themen Attributierte Grammatik Mehrpass - Compiler - Generatoren Symboltabelle

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

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

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

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

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine

Mehr