Damit lockert Modula an dieser Stelle sein Typstrenge etwas. Nehmen wir die zwei Felder a und b:

Größe: px
Ab Seite anzeigen:

Download "Damit lockert Modula an dieser Stelle sein Typstrenge etwas. Nehmen wir die zwei Felder a und b:"

Transkript

1 Modula-Marzipan, Teil 2 In dieser Folge beschäftigen wir uns mit Parametern von Prozeduren und wie man es mit legalen Mitteln schafft, Variablen unterschiedlicher oder gar beliebiger Typen zu übergeben. Offene Felder Einen Parametertyp, der keine Angabe über seine Größe enthält kennen und benutzen Sie täglich. Es handelt sich um die "offenen Felder", die als Parametertyp zwar festlegen, welchen Typ die Feldelemente haben, aber nicht deren Anzahl. Damit lockert Modula an dieser Stelle sein Typstrenge etwas. Nehmen wir die zwei Felder a und b: TYPE ZehnInts = ARRAY [0..9] OF INTEGER; ElfInts = ARRAY [1..11] OF INTEGER; VAR a: ZehnInts; b: ElfInts; Nach den Regeln von Modula-2 haben a und b völlig unterschiedliche Typen. Bei dem Versuch einer Zuweisung a:=b vermerkt der Compiler Inkompatibilität, gerade so, als sollte einem CHAR ein LONGREAL zugewiesen werden. Eine Prozedur zu schreiben, die sowohl ein CHAR als auch ein LONGREAL als Parameter akzeptiert scheint aussichtslos zu sein, wie sollte man das in der Prozedur-Definition ausdrücken? Anders ist es im Fall der Felder; hier kennt Modula einen gesonderten Parameter-Typ. (Daß Prozeduren auch für wechselnde CHAR- und LONGREAL-Parameter möglich sind, werden Sie nach diesem Artikel übrigens wissen...) Die Deklaration eines offenen Feldes als Parameter entspricht der "normalen" Deklaration eines Felds, nur fällt die Angabe der Feldgröße weg. Nehmen wir zwei Köpfe von Prozeduren, die eine Summe des übergebenen INTEGER-Feldes errechnen sollen: PROCEDURE SumTen(p:ZehnInts):LONGINT;... PROCEDURE Sum(p:ARRAY OF INTEGER):LONGINT;... SumTen könnte nur a als Parameter akzeptieren. Sum hingegen macht keine Aussage über die Anzahl der geforderten Feldelemente. Sie kann damit alle Felder, die aus INTEGERs bestehen übernehmen, also sowohl a als auch b.

2 Es leuchtet ein, daß die Lösung mit den offenen Feldern variabler ist. Würden wir auf festen Feldgrößen bestehen, müßte eine Prozedur SumEleven hinzukommen, die speziell für die Feldgröße [1..11] geschrieben wäre. Gleichzeitig bedingen die offenen Felder einen Informationsverlust: Man weiß eben nicht mehr, wie groß das übergebene Feld ist. Der Compiler kann es nicht ermitteln, da die Prozeduraufrufe ja erst zur Laufzeit stattfinden. Also muß es eine Funktion geben, die man in Sum verwenden kann, um die Größe des übergebenen Felds zu ermitteln. Sie heißt HIGH, liefert ein ganzzahliges Resultat und kann nur auf offene Feldparameter angewandt werden. Es leuchtet ein, daß sie zur Laufzeit unterschiedliche Ergebnisse abliefert, nämlich die jeweilige Größe des aktuell übergebenen Felds. Sie sollten übrigens zu HIGH in Ihrem Compiler-Handbuch den Ergebnistyp nachschlagen. Eigentlich sollte die Funktion ein CARDINAL abliefert, was logisch ist, da ein Feld ja keine negative Größe haben kann. In SPC-Modula beispielsweise liefert HIGH allerdings ein INTEGER. Bevor wir nun aber die Prozedur ausformulieren können, taucht ein neues Problem auf: Wie laufen die Indizes? HIGH liefert <Anzahl der Feldelemente> -1, aber aufgrund des genannten Informationsverlusts weiß die Prozedur nicht, mit welchem Index das Feld beginnt. Um die Einführung einer weiteren Funktion zu vermeiden, gilt in Modula, daß offene Feldparameter immer mit dem Index 0 beginnen. Man erkennt hier auch, warum HIGH die <Anzahl der Feldelemente> - 1 liefert: Ein offenes Feld p hat die Indizes [0..HIGH(p)]. Nun kann Sum formuliert werden: PROCEDURE Sum(p:ARRAY OF INTEGER):LONGINT; VAR sum : LONGINT; index : INTEGER; sum:=0; FOR index:=0 TO HIGH(p) DO sum:=sum+p[i] RETURN sum END Sum; Die "Verschiebung" der Indizes sollte man beachten. Nehmen wir an, daß alle Elemente des Felds b mit 1 belegt sind. Nullify sei nun eine Prozedur, die ein Feldelement auf 0 setzt: PROCEDURE Nullify(VAR p:array OF INTEGER; i:integer);

3 p[i]:=0 END Nullify Rufen wir Nullify(a,5) auf, dann ist hinterher entsprechend unseren Erwartungen a[5]=0. Im Fall von Nullify(b,5) bleibt b[5]=1, b[4] hingegen wird aufgrund der Indexverschiebung auf 0 gesetzt. Der Grund ist klar: In Nullify hat b die Indizes [0..10], also trifft der Zugriff p[5] in das Element b[4]. Die oben angesprochene tägliche Benutzung von offenen Feldern findet sich übrigens bei den String-Routinen aus dem Standard-Modul Strings. Dort sind alle Parameter vom Typ ARRAY OF CHAR und können damit auf Zeichenfelder beliebiger Große angewandt werden. Eine Einschränkung muß allerdings genannt werden: Offene Felder gibt es nur für eine Dimension. Es gibt keine Möglichkeit, zwei- oder mehrdimensionale Felder in dieser Art zu verarbeiten. Zur Übung sollten Sie etwas mit offenen Feldern spielen und insbesondere die Auswirkung der Indexverschiebung erproben. Eine weitere nützliche Überlegung ist die Frage, warum die Zuweisung von Zeichenketten unterschiedlicher Feldgröße direkt nicht funktioniert, warum es mit Strings.Assign geht und wie diese Prozedur aussieht (Dabei müssen Sie berücksichtigen, daß der tatsächlich mit Zeichen belegt Teil des CHAR-Felds vom Null-Zeichen 0C abgeschlossen wird - außer wenn Ihr Compiler bei konstanten Zeichenketten dieses Null-Zeichen nicht automatisch erzeugt). BYTE, WORD und LONGWORD Eigentlich beim jedem Compiler vorhanden, aber dennoch systemabhängig, existieren im Pseudo-Modul SYSTEM die Typen BYTE, WORD und LONGWORD. WORD und BYTE gibt es auf jeden Fall, LONGWORD muß nicht unbedingt vorhanden sein. Die drei Typen haben die Eigenschaft, daß sie zu allen anderen Typen gleicher Speichergröße kompatibel sind. Gleichzeitig existieren für sie keinerlei Operatoren, man kann sie also beispielsweise nicht addieren. Ihre größte Wirkung entfalten sie als Parametertyp von Prozeduren. Schon in der letzten Folge sind Sie bei dem Modul BoolWordOps SYSTEM.WORD als Parameter- Typ begegnet. Die Prozeduren haben durch dessen Verwendung die angenehme Eigenschaft, daß sie als Parameter sowohl INTEGERs als auch CARDINALs akzeptieren, denn beide haben - normalerweise - genau die gleiche Speichergröße wie WORD. Ein WORD benötigt üblicherweise 16 Bit. BYTE belegt - wie der Name fast schon sagt - acht Bit. Verwendet man BYTE als

4 Parametertyp, kann man CHARs übergeben und auch BOOLEANs, wenn sie mit 8 Bit implementiert sind. LONGWORD schließlich hat eine Größe von 4 Bytes. Damit ist es kompatibel zu LONGCARD und LONGREAL. Sind REALs mit einfacher Genauigkeit implementiert, belegen auch sie vier Bytes. Übrigens gibt es für Variablen, die acht Bytes belegen - dies sind doppeltgenaue LONGREALs - keinen kompatiblen Typ aus SYSTEM (etwa VERYLONGWORD). Unter der Annahme, daß BITSETs mit WORD-Größe implementiert sind, könnte man nun beispielsweise eine Prozedur schreiben, die den übergebenen Parameter in Dual-Schreibweise ausgibt: IMPORT InOut; FROM SYSTEM IMPORT WORD, VAL;... PROCEDURE WriteHex(p:WORD); VAR bit:cardinal; FOR bit:=15 TO 0 BY -1 DO IF bit IN VAL(BITSET,p) THEN InOut.Write('1') ELSE InOut.Write('0') END END END WriteHex; Die kompatiblen Typen BYTE, WORD und LONGWORD führen in gewissem Sinne einen impliziten Typtransfer durch. Ein WriteHex ließe sich durchaus auch mit einem Prozedurkopf PROCEDURE WriteHex(p:CARDINAL); formulieren. Der Typtransfer in WriteHex mit VAL könnte dabei bestehen bleiben. Man müßte aber einen zusätzlichen Typtransfer beim Prozeduraufruf einfügen, so daß beispielsweise für die Hexausgabe einer INTEGER-Variablen i der Aufruf WriteHex(VAL(CARDINAL,i)) heißen würde. Bei der Verwendung von WORD kann dieses VAL wegfallen, da der Typtransfer implizit geschieht. Man sieht leicht, daß ein Aufruf WriteHex(i) eindeutig besser lesbar ist und der Programmierer auch nicht mehr sonderlich viel über den Parametertypen von WriteHex berücksichtigen muß. ARRAY OF BYTE Mit diesen Typen sind nun also die strengen Typregeln bei Parametern etwas gelockert, übrig bleibt allerdings noch die Festlegung der Speichergröße des

5 Parameters. Um diese Schranke zu brechen, kombiniert man einfach die beiden bisher behandelten Konzepte. Offene Felder heben die Größenfestlegung auf, die kompatiblen Typen die Typfestlegung. In der Kombination ist beides aufgehoben. Wir wollen einen Parameter beliebiger Größe zulassen; anders ausgedrückt, soll der Parameter einfach aus einer Reihe von Bytes bestehen. Und damit liegt fest, welcher Parameter-Typ dafür geeignet ist, ein offenes Feld aus Bytes - im Programm als ARRAY OF BYTE notiert. Und um diesen Effekt auszuprobieren, soll eine kleine Prozedur die Auswirkung des Mechanismus protokollieren: PROCEDURE Test(p:ARRAY OF BYTE); InOut.WriteCard(HIGH(p)+1,5); (* oder InOut.WriteInt!! *) InOut.WriteString(' Bytes übergeben'); InOut.WriteLn; FOR i:=0 TO HIGH(p) DO InOut.WriteHex(VAL(CARDINAL,p[i]),3) InOut.WriteLn END Test; Sie sollten nun ein Programm schreiben, und sich davon überzeugen, daß man tatsächlich jeden beliebigen Typ übergeben kann. Test demonstriert auch, wie man auf den Parameter zugreift. Eine Anwendung wäre nun eine Prozedur WriteCardVal, die einen beliebigen ganzzahligen Parameter akzeptiert und unter Berücksichtigung dessen Größe versucht, ihn korrekt auszugeben. Die Idee dabei ist, die Größe des Parameters geeignet mit den Größen der Standardtypen für Ganzzahlen zu vergleichen. Sind beispielsweise CARDINALs mit 2 Byte implementiert und werden 2 Byte als Parameter übergeben, dann soll die Ausgabe mit WriteInt und WriteCard geschehen; bei 4 Byte nehmen wir LONGCARD und LONGINT an und geben mit WriteLongint und WriteLongcard aus. Die Ausgabe von jeweils zwei Werten ergibt sich übrigens aus der Tatsache, daß es nicht möglich ist, aus den Bitmustern von CARDINALs und INTEGERs herauszufinden, ob ein Vorzeichen vorhanden ist oder nicht. PROCEDURE WriteCardVal(v:ARRAY OF BYTE);

6 VAR word : ARRAY [0..1] OF BYTE; (* TSIZE(CARDINAL)=2! *) long : ARRAY [0..3] OF BYTE; (* TSIZE(LONGCARD)=4! *) i : INTEGER; IF HIGH(v)+1=TSIZE(CARDINAL) THEN word[0]:=v[0]; word[1]:=v[1]; InOut.WriteInt(VAL(INTEGER,word),6); InOut.Write('/'); InOut.WriteCard(VAL(CARDINAL,word),5); ELSIF HIGH(v)+1=TSIZE(LONGCARD) THEN FOR i:=0 TO 3 DO long[i]:=v[i] InOut.WriteLongint(VAL(LONGINT,long),11); InOut.Write('/'); InOut.WriteLongcard(VAL(LONGCARD,long),10); END WriteCardVal; Die Standardfunktion TSIZE muß bei einigen Systemen aus SYSTEM importiert werden. Auch könnten die Ausgaberoutine für LONGCARD und LONGINT eine andere Groß- und Kleinschreibung aufweisen - Sie müssen WriteCardVal also noch anpassen. Das Umkopieren des Parameters in die Felder word und long ist nötig, damit VAL arbeiten kann. Einen Typtransfer auf ein offenes Feld lehnt der Compiler ab, dies ist logisch, da er die Größe des Feldes nicht kennen kann. Die Prozedur ist auch keineswegs vollständig und kann natürlich korrekte Ausgaben nicht immer garantieren, denken Sie nur an die Übergabe eines RECORDs mit der Speichergröße 4 Byte. Die Ausgabe ist dann natürlich falsch. WriteCardVal soll als kleine Anregung zu eigenen Experimenten dienen. Schreiben Sie doch eine Prozedur WriteRealVal, mit der sowohl REALs als auch LONGREALs ausgegeben werden können! Einer Einschränkung des Mechanismus werden sie sehr bald begegnen: Man kann keine Konstanten für ein ARRAY OF BYTE übergeben. Zumindest nicht auf den meisten Systemen, die für den ST erhältlich sind. Sowohl die ETH-Systeme, als auch Megamax weisen den Versuch mit einem Hinweis auf eine "Implementation Restriction" ab. Diese Einschränkung ist übrigens nur sehr schwer nachvollziehbar. Man könnte zunächst argumentieren, daß sich die Größe eines Parameters für ein offenes Feld erst zur Laufzeit ergibt und die verwendeten Mechanismen Schwierigkeiten haben, darin die konstante Größe eines konstant übergebenen Parameters unterzubringen.

7 Dies stimmt aber nicht, da alle Compiler für ARRAY OF CHAR Konstante akzeptieren. Man findet dieses Verhalten in fast allen Handbüchern besonders hervorgehoben. Logisch, daß eine Implementierung, in der man String-Konstante nur unter Schwierigkeiten verwenden kann, nicht sonderlich komfortabel wäre. Aber wenn dies schon für CHAR geht, warum dann nicht für BYTE? SYSTEM.BYTE ist - obwohl nicht Sprachbestandteil wie CHAR - fest im Compiler "verdrahtet", eine Sonderbehandlung sollte einfach möglich sein. Die Berechnung der Parametergröße ist bei Zeichenkonstanten, in denen jedes Zeichen genau ein Byte belegt natürlich besonders einfach, aber auch alle anderen Konstante müssen bei der Übersetzung in Bytefolgen dargestellt werden. Wir können also nur hoffen, daß diese Einschränkung - die zurecht nur als Implementierungs-Beschränkung bezeichnet wird - möglichst bald von den Herstellern aufgehoben wird. Dies würde bei geringem Aufwand die Möglichkeiten, den ARRAY OF BYTE-Trick sauber zu benutzen deutlich verbessern. Zum Abschluß auch dieses Mal wieder ein Modul - es kombiniert die Bitmanipulationen der letzten Folge mit beliebig großen Parametern beliebigen Typs und heißt daher BoolOps; Sie finden es in Listing 1. In der nächsten Folge beschäftigen wir uns etwas mit varianten Records und insbesondere mit den Auswirkungen des Weglassens des Tag-Felds.

8 Listing 1: Definitions- und Implementationsmodule BoolOps DEFINITION MODULE BoolOps; (* (C) Robert Tolksdorf fuer ST-Computer, 8/90 *) FROM SYSTEM IMPORT BYTE; PROCEDURE And(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); PROCEDURE Or(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); PROCEDURE Xor(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); PROCEDURE Not(VAR a: ARRAY OF BYTE); PROCEDURE Imp(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); PROCEDURE Nand(VAR a:array OF BYTE; b: ARRAY OF BYTE); PROCEDURE Nor(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); PROCEDURE Nimp(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); END BoolOps. IMPLEMENTATION MODULE BoolOps; (* (C) Robert Tolksdorf fuer ST-Computer, 8/90 *) FROM SYSTEM IMPORT BYTE, VAL; PROCEDURE And(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); WHILE (i<=high(a)) AND (i<=high(b)) DO a[i]:=val(char,val(bitset,a[i])*val(bitset,b[i])); i:=i+1 END And; PROCEDURE Or(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE);

9 a[i]:=val(char,val(bitset,a[i])+val(bitset,b[i])); END Or; PROCEDURE Xor(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); a[i]:=val(char,val(bitset,a[i])/val(bitset,b[i])); END Xor; PROCEDURE Not(VAR a: ARRAY OF BYTE); a[i]:=val(char,val(bitset,a[i])/{0..15}); END Not; PROCEDURE Imp(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); a[i]:=val(char,(val(bitset,a[i])-val(bitset,b[i]))/{0..15}); END Imp; PROCEDURE Nand(VAR a:array OF BYTE; b: ARRAY OF BYTE); a[i]:=val(char,(val(bitset,a[i])*val(bitset,b[i]))/{0..15}); END Nand; PROCEDURE Nor(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE);

10 a[i]:=val(char,(val(bitset,a[i])+val(bitset,b[i]))/{0..15}); END Nor; PROCEDURE Nimp(VAR a: ARRAY OF BYTE; b: ARRAY OF BYTE); a[i]:=val(char,val(bitset,a[i])-val(bitset,b[i])); END Nimp; END BoolOps.

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten)

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Name: «Vorname» «Name» Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Informatik 12 2 VP je 2 VP 6 VP 0 Notieren Sie alle Antworten in einer Word-Datei Klausur1_«Name».doc

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

VisualBasic - Variablen

VisualBasic - Variablen Typisch für alle Basic-Dialekte ist die Eigenschaft, dass Variablen eigentlich nicht deklariert werden müssen. Sobald Sie einen Bezeichner schreiben, der bisher nicht bekannt war, wird er automatisch angelegt

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. Eine Testmenge erstellen Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten

Mehr

KV Software Engineering Übungsaufgaben SS 2005

KV Software Engineering Übungsaufgaben SS 2005 KV Software Engineering Übungsaufgaben SS 2005 Martin Glinz, Silvio Meier, Nancy Merlo-Schett, Katja Gräfenhain Übung 1 Aufgabe 1 (10 Punkte) Lesen Sie das Originalpapier von Dijkstra Go To Statement Considered

Mehr

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays Dass Sie unter Access Daten in Tabellen speichern und gezielt darauf zugreifen können, wissen Sie als Access [basics]-leser schon längst. Aber was, wenn Sie nur ein paar gleichartige Daten zwischenspeichern

Mehr

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Unterprogramme, Pointer und die Übergabe von Arrays

Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

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

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 4 Informationsverarbeitung im Bauwesen Markus Uhlmann basierend auf Folien von A. Brugger 1 Zusammenfassung der 3. Vorlesung Einführung in Excel/VBA Einführung in die Tabellenkalkulation Erste Schritte

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende. PROGRAMMIEREN IN C - EIN KURZÜBERBLICK 1 Programmieren in C -- ALLE Programmiersprachen sind HÄSSLICH -- Die einfachste Programmstruktur: main () -- was zu tun ist --- Vorgeordnete Definitionen: # include

Mehr

Schleifenprogrammierung in C/C++, Fortran und Pascal

Schleifenprogrammierung in C/C++, Fortran und Pascal Schleifenprogrammierung in C/C++, Fortran und Pascal Stefan Ackermann Mathematisches Institut der Universität Leipzig 8. April 2009 1 Die kopfgesteuerte Schleife Bei der kopfgesteuerten Schleife steht

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER Inhaltsverzeichnis jetzt lerne ich Vorwort 15 1 Was ist Delphi? 17 1.1 Die Wurzeln von Delphi 17

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Die versteckten Fallen der "Jahr-2000"-Fähigkeit von Software am Beispiel von REXX

Die versteckten Fallen der Jahr-2000-Fähigkeit von Software am Beispiel von REXX Die versteckten Fallen der "Jahr-2000"-Fähigkeit von Software am Beispiel von REXX Zusammenfassung: Autorin/Autor: Um Software "Jahr-2000"-fähig zu machen, müssen Programmierer auch auf Fallen achten,

Mehr

L6. Operatoren und Ausdrücke

L6. Operatoren und Ausdrücke L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor Inhaltsverzeichnis Vorwort 1 Was ist Delphi? 1.1 Die Wurzeln von Delphi 1.2 Der Konkurrent - Visual Basic 1.3 Die komponentenbasierte Entwicklung 1.4 Object-Pascal 2 Programmieren mit Delphi 2.1 Das ))visuelle((

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Lua - Erste Schritte in der Programmierung

Lua - Erste Schritte in der Programmierung Lua - Erste Schritte in der Programmierung Knut Lickert 7. März 2007 Dieser Text zeigt einige einfache Lua-Anweisungen und welchen Effekt sie haben. Weitere Informationen oder eine aktuelle Version dieses

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache Institut für Informatik Christian-Albrechts-Universität zu Kiel Borland Delphi Einführung in die Programmiersprache Geschichte Objective Pascal objektorienterte Programmiersprache Rapid Development schweizer

Mehr

Kurs 1575, Musterlösung zur Winter Klausur 2003/04

Kurs 1575, Musterlösung zur Winter Klausur 2003/04 Kurs 1575, Musterlösung zur Klausur im Wintersemester 2003/04 1 Kurs 1575, Musterlösung zur Winter Klausur 2003/04 Aufgabe 1: Römische Zahlen Wer kennt das Problem nicht: Sie stehen vor einer Inschrift,

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Behandeln Sie»undefined«als»nicht vorhanden«thema 54

Behandeln Sie»undefined«als»nicht vorhanden«thema 54 Behandeln Sie»undefined«als»nicht vorhanden«151 heitliche Schreibweisen erlauben es den Benutzern, zu erraten, welche Eigenschaften und Methoden zur Verfügung stehen, ohne dass sie sie nachschlagen müssen,

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

C Überlebenstraining

C Überlebenstraining C Überlebenstraining Dies ist nur ein Schnellkurs in C, der genug Einstiegswissen vermitteln soll, daß weiterführende Literatur schnell benutzt werden kann. Dies ist kein vollständiger Programmier oder

Mehr

Kurs 1793 Software Engineering I Hauptklausur am 07.08.1999

Kurs 1793 Software Engineering I Hauptklausur am 07.08.1999 Kurs 793 Software Engineering I Seite: 5 Aufgabe (2 Punkte) Dienstverträge Problembeschreibung An einem Informatik-Lehrstuhl der FernUni werden studentische Hilfskräfte beschäftigt. Die Hilfskräfte können

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

E-PRIME TUTORIUM Die Programmiersprache BASIC

E-PRIME TUTORIUM Die Programmiersprache BASIC E-PRIME TUTORIUM Die Programmiersprache BASIC BASIC Beginner s All-purpose Symbolic Instruction Code symbolische Allzweck-Programmiersprache für Anfänger Design-Ziel klar: Eine einfache, für Anfänger geeignete

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/23 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 6

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

5. Programmieren mit Pascal

5. Programmieren mit Pascal 5. Programmieren mit Pascal 5.0. Einführung 5.0.1. Die Datenorganisation Das Betriebssystem auf unserer vernetzten Rechneranlage heißt Windows XP. Ein Betriebssystem versetzt als Basisprogramm den Rechner

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Buch-Add-Ons. Jürgen Bayer. Object Pascal-Tipps und Tricks. 1 Konvertieren und auf numerische Werte überprüfen 2

Buch-Add-Ons. Jürgen Bayer. Object Pascal-Tipps und Tricks. 1 Konvertieren und auf numerische Werte überprüfen 2 Buch-Add-Ons Jürgen Bayer Inhaltsverzeichnis Object Pascal-Tipps und Tricks 1 Konvertieren und auf numerische Werte überprüfen 2 1.1 Strings in Integerwerte konvertieren 2 1.2 Strings in Extended-Werte

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Kurzeinführung in C. Johannes J. Schneider 27.10.2004

Kurzeinführung in C. Johannes J. Schneider 27.10.2004 Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Ein erstes Java-Programm

Ein erstes Java-Programm Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println

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

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL? Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL? Von Padmalcom (20.03.2009) www.jofre.de Nach dem Tutorial 1 von Leonardo M. Ramé 1 Ja, es geht wirklich! Im Internet sind tausende Forenbeinträge

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff Programmieren in C Die C-Standardbibliothek Prof. Dr. Nikolaus Wulff Die C-Standard Bibliothek Mit dem C Compiler werden viel fertige Bibliotheksfunktionen ausgeliefert. Eine genaue Kenntnis dieser Funktionen

Mehr

Willkommen... Agenda für heute, 25. Februar, 2010. ... Studentinnen und Studenten der Studiengänge

Willkommen... Agenda für heute, 25. Februar, 2010. ... Studentinnen und Studenten der Studiengänge Willkommen...... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur Vorlesung Agenda für heute, 25. Februar, 2010 g P http://www.pup.ethz.ch/

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Grundlagen der Programmierung (Vorlesung 14)

Grundlagen der Programmierung (Vorlesung 14) Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Übersicht Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Integer Overflows Format-String-Angriffe (SQL) Injection Cross Site Scripting

Mehr

Datentypen: Enum, Array, Struct, Union

Datentypen: Enum, Array, Struct, Union Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr