Compiler Handbuch. Pascal Multi-Tasking für Single Chips. Version für. Copyright by E-LAB Computers. Blaise Pascal Mathematiker

Größe: px
Ab Seite anzeigen:

Download "Compiler Handbuch. Pascal Multi-Tasking für Single Chips. Version für. Copyright 1996-2015 by E-LAB Computers. Blaise Pascal Mathematiker 1623-1662"

Transkript

1 Compiler Handbuch E-LAB AVRco Pascal Multi-Tasking für Single Chips Version für AVR Copyright by E-LAB Computers Blaise Pascal Mathematiker Jul-2015

2 Der Inhalt dieses Handbuch ist urheberrechtlich geschützt und ist CopyRight von E-LAB Computers. Autor Rolf Hofmann Editor Gunter Baab E-LAB Computers Mikroprozessor-Technik Industrie-Elektronik Hard + Software 8-Bit 16-Bit 32-Bit E-LAB Computers Grombacherstr. 27 D74906 Bad Rappenau Tel 07268/ Fax 07268/ Wichtige Information Weltweit wird versucht fehlerfreie Software herzustellen. Die Betonung liegt dabei auf versucht, denn es besteht eine einhellige Meinung, je komplexer eine Software ist, desto grösser die Wahrscheinlichkeit, dass Fehler eingebaut sind. Wir sind aber nicht der Meinung, dass das ein Grundgesetz ist, und dass man deshalb mit Fehlern und Problemen einfach leben muss (obwohl das bei manchen Software Giganten offensichtlich so ist J ). Sollten Sie Fehler feststellen, so wären wir dankbar für jede Information darüber. Wir werden uns bemühen, dieses Problem möglichst kurzfristig zu lösen. Es ist ebenfalls internationaler Konsens, dass für Folgekosten, die aus fehlerhafter Software entstehen, der Software Hersteller jedwede Haftung ausschliesst, es sei denn es wurde etwas anderes extra vereinbart. Mit der Benutzung jeglicher Software Produkte von E-LAB Computers schliessen wir als Hersteller sämtliche Haftung aus daraus entstehenden Kosten bei Fehlern der Software aus. Sie als Anwender bzw. Benutzer der Software erklären Sich damit einverstanden. Sollte das nicht der Fall sein, so dürfen Sie die Software auch nicht benutzen, bzw. einsetzen. Wie gesagt, dieser Haftungsausschluss ist international Standard und üblich. Dieses Handbuch und die zugehörige Software ist geistiges Eigentum von E-LAB Computers und damit urheberrechtlich geschützt. Diese Produkte werden dem Erwerber zur Nutzung überlassen. Der Erwerber darf diese Produkte nicht an dritte weitergeben noch weiterveräussern. Weitergabe von Kopien dieser Produkte an Dritte, ob gegen Endgeld oder nicht, ist ausdrücklich untersagt. Wir meinen dass Sie, als Benutzer der Software, damit Geld verdienen können und damit auch eine Pflege der Produkte erwarten. Ein Produkt, das fast ausschliesslich aus Raubkopien besteht, bringt dem Hersteller/Autor kein Geld ein. Und damit kann ein Produkt auch nicht gepflegt und weiterentwickelt werden. Es liegt also auch im Interesse des Anwenders, dass das Urheberrecht beachtet wird. Das wars der Autor

3 Inhaltsverzeichnis 1 Einleitung Jedem Toaster sein Prozessor! Übersicht AVRco Versionen Handbuch Versionen Gliederung der Dokumentation Bekannte Einschränkungen Prinzipielle AVRco Sprach Elemente Zeichensatz Reservierte Wörter Standard Bezeichner Trennzeichen Programmzeilen Sprachreferenz Typen Standard scalare Typen Typ Konvertierung Variable Overlay BOOLEAN BIT BITSET BYTE CHAR STRING Property ARRAY TABLE RECORD WITH Statement zum Zugriff auf Records PROCEDURE WORD INT8 oder ShortInt INTEGER POINTER Pointer AutoIncrement AutoDecrement LONGWORD WORD LONGINT INT FLOAT Fix ENUM SEMAPHORE PIPE Pipe für ordinale Typen Pipe of Bit Pipe für komplexe Typen SYSTIMER E-LAB Computers Inhaltsverzeichnis - I

4 SYSTIMER SYSTIMER PIDCONTROL Alias Synonyme Delphi AVRco Typen Vergleich Operatoren NOT DIV MOD AND OR XOR SHL SHLA SHR SHRA ROL ROR IN / * Unechte Operatoren ^ # $ % Benutzer definierte Sprach Elemente Identifier Zahlen Strings Steuerzeichen Kommentare Ausdrücke (Expressions) Operatoren Unary Minus Not Operator MultipIizierende Operatoren Addierende Operatoren Relationale Operatoren Funktions Designatoren (Namen) Schlüsselwörter PROGRAM DEVICE IMPORT FROM DEFINE Hardware Imports innerhalb von Units DEFINE_USR DEFINE_FUSES IMPLEMENTATION TYPE CONST vordefinierte Konstante Typ Angabe bei Konstanten Deklaration II Inhaltsverzeichnis E-LAB Computers

5 Konstanten aus Dateien Konstanten im Flash STRUCTCONST VAR LOCKED Align2 Align4 Align Lokale Variablen Prozeduren und Funktionen PROCEDURE PROCEDURE SYSTEM_INIT PROCEDURE SYSTEM_MCUCR_INIT FUNCTION PROCESS Optionen bei Definition TASK Optionen bei Definition FORWARD BEGIN RETURN END ASM: ASM; ENDASM INTERRUPTs, TRAPs, EXCEPTIONs Interrupt Push, Pop PushRegs, PopRegs PushAllRegs, PopAllRegs Externe Interrupts Interrupt Pins INT0..INTx PinChangeInterrupts PCINT0..PCINT Externe Interrupts XMega Interrupt Pins PortIntA.. PortIntR PinChangeInterrupts PCintA.. PCINTR TRAPS und Software Interrupts (SWI) Implementation der Traps EXCEPTIONS Implementation Funktionen Statements Einfache Statements Assignment (Zuweisungs) Statement Prozedur Statement Leeres Statement Strukturiertes Statement Verbund Statement NOP Statement Bedingte Statements IF Statement GOTO Statement CASE Statement FOR Statement WHILE Statement REPEAT Statement CONTINUE LOOP Statement System Library - Standard E-LAB Computers Inhaltsverzeichnis - III

6 TRUE FALSE PI NIL Typ Konvertierung BOOLEAN BYTE INT CHAR WORD INTEGER LONGWORD LONGINT FLOAT FLOATASLONG LONGASFLOAT POINTER Character und String Funktionen ORD UPCASE LOWCASE UPPERCASE LOWERCASE COPY STRREPLACE TRIM TRIMLEFT TRIMRIGHT PADLEFT PADRIGHT LENGTH SETLENGTH POS POSN APPEND INSERT DELETE STRCLEAN STRTOINT StrToFix HEXTOINT STRTOFLOAT STRTOARR ARRTOSTR StrCompareN StrCompareW EXTRACTFILEPATH EXTRACTFILENAME EXTRACTFILEEXT Zugriff auf Teilbereiche von Variablen / Konstanten SWAP SWAPLONG MIRROR MIRROR MIRROR LONIBBLE LO (Funktion) LO (Zuweisung) LOWORD (Funktion) IV Inhaltsverzeichnis E-LAB Computers

7 LOWORD (Zuweisung) HINIBBLE HI (Funktion) HI (Zuweisung) HIWORD (Funktion) HIWORD (Zuweisung) ABS Diff8, Diff16, Diff32, Diff Negate INC INCTOLIM INCTOLIMWRAP DEC DECTOLIM DECTOLIMWRAP VALUETRIMLIMIT VALUEINTOLERANCE VALUEINTOLERANCEP VALUEINRANGE MULDIVBYTE MULDIVINT MULDIVINT MulDivLong SQUAREDIVBYTE SQUAREDIVINT SQUAREDIVINT INTEGRATEB INTEGRATEI INTEGRATEI INTEGRATEW Even ODD PARITY ISPOWOFTWO SIGN SGN PRED SUCC MIN MAX SIZEOF BitCountOf ADDR System Library - Fix FIX64 Unit FIX64 und Delphi mathematische Funktionen Konvertierungsfunktionen Vergleichsfunktionen Logarithmen, etc Trigonometrie System Library - Bit Verarbeitung INCL EXCL TOGGLE SETBIT BIT System Library - Diverse System Funktionen E-LAB Computers Inhaltsverzeichnis - V

8 SYSTEM_RESET DELAY mdelay udelay udelay_ sdelay SYSTIMER SetSysTimer SetSysTimerM GetSysTimer ResetSysTimer IsSysTimerZero LOWER HIGHER WITHIN VAL Block Funktionen FILLBLOCK FILLRANDOM COPYBLOCK COPYBLOCKREVERSE COMPAREBLOCK Pointer Zugriff ausserhalb des linearen Adressbereichs FlashPtr EEPromPtr UsrDevPtr BankDevPtr FLUSHBUFFER CRC Checksumme CRC CHECK CRC STREAM FLASH CHECKSUM EEPROM CHECKSUM RANDOM RANDOMRANGE RANDOMSEED SQR SQRT POW POW EXP LogN Log Trigonometrische Funktionen TAN TAND ARCTAN SIN SININT SININT SIND COS COSINT COSINT COSD DEGTORAD RADTODEG ROTATE PNTi TRUNC VI Inhaltsverzeichnis E-LAB Computers

9 ROUND FRAC INT IntToFix GETTABLE SETTABLE Konvertierung zu Strings BYTETOSTR INTTOSTR LONGTOSTR FLOATTOSTR LONG64TOSTR Fix64toStr BOOLTOSTR BYTETOHEX INTTOHEX LONGTOHEX LONG64TOHEX Fix64TOHEX BYTETOBIN INTTOBIN BYTETOBCD WORDTOBCD BCDTOBYTE PCU SI-Conversion (*P*) Allgemeine Funktionen Temperatur Volumen Druck Längen Flächen Gewichte Energie Integer Funktionen Konstanten Interpolation InterPolX, InterPolY Gleitendes Mittelwert Filter (Moving Average Filter) PresetAVfilter SetAVfilter AddAVfilter GetAVfilter DeclAVfilter Filter Low und High Pass Netzwerk-Funktionen vordefinierte Typen Funktionen zur Konvertierung Funktionen zum Vergleichen Diverse Funktionen System Library - String Formatierung Dezimal Separator WRITE WRITELN READ READLN Fehlerbehandlung RUNERR RUNTIMEERR E-LAB Computers Inhaltsverzeichnis - VII

10 CLEARRUNERR Multi-Task Funktionen SLEEP SUSPEND SUSPENDALL RESUME RESUMEALL PRIORITY GetPriority MAIN_PROC IDLE PROCESS On Idle Process SCHEDULE SCHEDULER ON/OFF LOCK UNLOCK RESET PROCESS SEMAPHORE WAITSEMA ProcWaitFlag SETSEMA INCSEMA DECSEMA SEMASTAT PIPES WaitPipe PipeFlush PipeSend PipeRecv PipeStat PipeFull PROCESS ID ISCURPROCESS GETCURPROCESS GETPROCESSID PROZESS STATUS DEVICE LOCK SetDeviceLock ClearDeviceLock TestDeviceLock WaitDeviceFree Stack und Frame Verbrauch GETSTACKFREE GETTASKSTACKFREE GETFRAMEFREE GETTASKFRAMEFREE CHECKSTACKVALID CHECKFRAMEVALID SCHEDULER CALL BACK PID-Regler pfactor ifactor dfactor sfactor NOMINAL ACTUAL EXECUTE HardWare abhängige Funktionen VIII Inhaltsverzeichnis E-LAB Computers

11 PocClock XMega ProcClock STACKSIZE, RAMpage FRAMESIZE, RAMpage TASKSTACK, RAMpage TASKFRAME SCHEDULER SYSTICK XMega SYSTICK XMega SYSTICK ohne RTC Timer OnSysTick SysTickStop SysTickStart SysTickRestart SysTickDisable SysTickEnable SystemTime ENABLEINTS START_PROCESSES DISABLEINTS NOINTS, RESTOREINTS CPUSLEEP HardwareReset XMega only POWERSAVE WATCHDOG WATCHDOGSTART WATCHDOGSTOP WATCHDOGTRIG GETWATCHDOGFLAG {$NOWATCHDOGAUTO} ENABLE_JTAGPORT DISABLE_JTAGPORT Debugger Breakpoints XMega Support Funktionen XMega UserSignatureRow EEPROM Strukturierte Konstante Variable Speicher Block EEprom Zugriff HEAP (*P*) Implementation Funktionen Beispiel BOOT VECTORS (BootVectors) Implementation Funktionen Konstante Programm Beispiel BOOT TRAPS (BootTraps) Implementation der Boot Traps Vererbung (Inheritance) Multi-Task Programmierung Einleitung E-LAB Computers Inhaltsverzeichnis - IX

12 5.2 Funktionsweise Prozesse und Tasks Priority Default Priorities Optimales Multi-Tasking MultiTasking Diagramm Optimierung Bibliothek Variable Konstante Laufzeit Hochoptimierend? Der "Merlin Optimiser" Beste Ergebnisse mit dem Merlin Optimiser erzielen Einleitung Wie viel Optimierung kann man erwarten? Was wird optimiert? Beta Code Volatility Schleifen Optimierung Gemeinsamer Ausgang von Teilmengen eines Ausdrucks Selbst geschriebener Assembler Code Setters und Getters Zusammenfassung der Optimiser Schalter Compiler Schalter Speicher Verwaltung Überlegungen zur Speicherbelegung XData Externer Speicher Include Dateien Suchpfad für Include Dateien Runtime Checks Variable, Konstante und Prozeduren Check System Steuerung Optimiser Schalter Conditional Compile Programm Aufbau Programm Rahmen Reihenfolge Initialisierung Compiler Errors Fehler Datei Type Missmatch Units (*P*) Deklaration und Aufbau einer Unit Unit-Kopf Interface-Abschnitt Implementation-Abschnitt Initialization-Abschnitt X Inhaltsverzeichnis E-LAB Computers

13 Finalization-Abschnitt Uses-Klausel Suchpfad für Units Info Teil einer Unit Hardware Imports innerhalb von Units PreCompiled Units Assembler Allgemeines ASM; ENDASM; Assembler - Schlüsselwörter Register Assembler Anweisungen Operatoren für Konstanten Manipulation Zugriff auf Pascal Konstante und Variablen Einbindung von Assembler Routinen Lokale Variable und Assembler Zugriffe Prozedur Aufrufe und System Funktionen Funktions Ergebnisse und Assembler Funktions/Prozedur Abschluss Interrupt Prozeduren mit Assembler Konstante und Optimierung Assembler Schalter Assembler Errors E-LAB Computers Inhaltsverzeichnis - XI

14

15 1 Einleitung 1.1 Jedem Toaster sein Prozessor! So oder so ähnlich könnte man diverse Kommentare und Aussagen interpretieren. Und es ist nicht aus der Luft gegriffen. Mikroprozessoren finden immer mehr Verwendung in Anwendungen, wo man diese sich vor kurzem nicht vorstellen konnte, oder aber, sie machen bestimmte Lösungen überhaupt erst möglich. Teilweise ist das auf stark gefallene Preise der Chips zurückzuführen, oft aber auch auf die Miniaturisierung der Chips. Immer mehr werden daher mechanische, elektromechanische und auch elektronische Lösungen bestimmter Aufgaben durch Prozessoren übernommen. Für den Entwickler stellt sich aber immer öfter das Problem, elegante Lösungen mit möglichst geringem Aufwand bzw. Kosten zu realisieren. Der Kostenfaktor zwingt den Konstrukteur dazu, in jedem Einzelfall den richtigen Prozessor auszuwählen, um das beste Preis/Leistungsverhältnis zu erzielen. Es ist praktisch nicht mehr möglich, mit einem einzigen Typ (z.b. 80C535 oder 68332) alle Anwendungen zu erschlagen. Die Halbleiter Industrie bietet seit einiger Zeit Controller an, die von 16polig/8bit (DM3.-) bis >84polig mit 32bit (DM80.-..) reichen. Für den Entwickler stellt sich spätestens jetzt aber das Problem des richtigen Entwicklungswerkzeuges. Je genauer der jeweilige Prozessor spezifiziert wird, desto mehr Entwicklungswerkzeuge werden im Lauf der Zeit benötigt. So kommen, bei einem üblichen Preis zwischen und DM pro Tool, einige 10tausend DM zusammen. Das wiederum widerspricht aber genau dem Kostenproblem, dass alles, auch die Entwicklungen, immer billiger werden muss, ja manche Auftraggeber erwarten sogar, dass Entwicklungskosten gar nicht berechnet werden, oder als minimaler Anteil in die Serie eingerechnet werden. Ab der Prozessorgrösse 8051, 68HC11, Z80 etc. sind viele, im Preis und in der Leistung unterschiedliche Tools zu finden. Leider, bis auf ein paar Ausnahmen, alle für C. Andere Hochsprachen sind fast komplett vom Markt verschwunden. Ein Entwickler, der mehrere Hochsprachen kennt, weiss in der Regel die Lesbarkeit, Selbstdokumentation und problemlose Pflege (auch nach Jahren) von Pascal und ähnlichen Sprachen (Modula-2, Oberon) zu schätzen. Sicher, viele Argumente für oder gegen eine Sprache könnte man in den Bereich der Philosophie oder Religion verweisen. Tatsache ist jedoch, dass bei militärischen und Weltraumprojekten C verboten ist und nur der Pascal Abkömmling ADA verwendet werden darf. Sicherheits relevante Aufgaben, z.b. Zugsteuerung (Stellwerke) bei der DB, Flugzeugelektronik bei div. amerikanischen Herstellern werden in Pascal geschrieben und nicht in C. Und bestimmt nicht aus Nostalgie Gründen. Soviel zur unserer Entscheidung zugunsten von Pascal und gegen die kryptische Sprache C. Um einen Ausweg aus der o.a. Misere (Kosten, nicht vorhandene bzw. schwache Tools, kein C ) zu finden, hat E-LAB Computers einen Pascal Compiler für eine Reihe von Prozessor-Familien entwickelt. Ziel war es, ein Tool zu schaffen, das vom Leistungsumfang möglichst komplett ist, jedoch intern keine hohen Kosten verursacht. Deshalb und auch wegen mangelnder Resourcen in den anvisierten Prozessoren, wurde bewusst auf ein paar komplexe Funktionen und System Eigenschaften verzichtet. Z.B. gibt es in der Standard Version keinen Linker und damit kein modulares Programm/Units. Das Tool ist aber trotzdem oder gerade deshalb problemlos auf andere (kleine) Prozessoren zu portieren. Eine Non-Multi-Task Version gibt es für MicroChip s PIC. Eine Multi-Task Versionen ist für den AVR von Atmel erhältlich. Das Tool besteht immer aus der IDE (Editor usw.), dem Compiler und dem Assembler. Zumindest die IDE steht derjenigen der um ein vielfaches teueren Konkurrenz in keinster Weise nach. Einen eigenen Simulator besitzt nur die AVR-Version. Dieser ist ein Bonus/Zugabe zum System. E-LAB Computers Einleitung - 15

16 2 Übersicht 2.1 AVRco Versionen alle AVRco Versionen unterstützen alle AVR Controller die ein internes RAM (für den Stack) besitzen, also praktisch die gesamte Palette. AVRco Profi Version: die Profi Version enthält alle verfügbaren Treiber, darunter auch sehr komplexe wie z.b. ein FAT16 File System oder eine umfangreiche Library für graphische LCDs. Weiterhin wird die professionelle Programm Erstellung durch den vollen Support von Units unterstützt. AVRco Standard Version: in der Standard Version sind nur die besonders komplexen Treiber nicht enthalten. AVRco Demo Version: auch die Demo Version unterstützt alle Controller und besitzt alle Treiber der Standard Version. Die einzige Einschränkung ist die Limitierung des erzeugten Code auf eine Größe von 4 k. 2.2 Handbuch Versionen Abschnitte die mit dem Attribut (*P*) gekennzeichnet sind, sind nur in der AVRco Profi Version enthalten. 2.3 Gliederung der Dokumentation..\E-Lab\DOCs\DocuCompiler.pdf: enthält die Pascal Sprachbeschreibung und deren Erweiterungen gegenüber dem Standard Pascal..\E-Lab\DOCs\DocuStdDriver.pdf: enthält die Beschreibung der Treiber die sowohl in der Standard, also auch in der Profi Version vorhanden sind..e-lab\docs\docuprofidriver.pdf: enthält die Beschreibung der Treiber die ausschließlich in der Profi Version vorhanden sind..\e-lab\docs\docureference.pdf : enthält eine Kurzreferenz (die im wesentlichen mit der Online Hilfe identisch ist)..\e-lab\docs\docutools.pdf: enthält die Beschreibung der integrierten Entwicklungsumgebung, des Simulators, ein Tutorial usw...\ E-LAB\IDE\DataSheets\Release-News.txt: listet die Erweiterungen in chronologischer Reihenfolge auf. Die Dokumentation der Erweiterungen erfolgt in den oben erwähnten.pdf Files (DocuXXX.pdf)..\E-Lab\AVRco\Demos\ : enthält sehr viele Test und Demo Programme..\E-Lab\DOCs\ : enthält die Dokumentation sowie weitere Schaltpläne und Datenblätter 16 Übersicht E-LAB Computers

17 2.4 Bekannte Einschränkungen AVRco Compiler-Handbuch - Die Funktion IntegrateI hat noch einen Bug bei negativen Werten. - Das Überschreiben von vordefinierten Typen, Variablen, Konstanten, Funktionen und Prozeduren ist zur Zeit noch nicht möglich. - Die Wertigkeit der Operatoren (* AND SHR etc.) wird z.zt. noch nicht überall eingehalten. Deshalb ist das Klammern von Ausdrücken unbedingt notwendig. - Nicht implementiert sind "With" Konstrukte mit Records in Records - Strings Das folgende String Concat bringt ein unerwünschtes Resultat: str:= str1 + str; Dieses Konstrukt ist wegen des limitierten RAM nicht realisierbar. Was hingegen funktioniert ist: str:= str + str1; - Arrays Die Konstruktion von Array of Arrays wird nicht unterstützt: E-LAB Computers Übersicht - 17

18 3 Prinzipielle AVRco Sprach Elemente 3.1 Zeichensatz Das Vokabular vom AVRco Pascal besteht aus Zeichen, eingeteilt in Buchstaben, Zahlen, und spezielle Symbole: Buchstaben A bis Z, a bis z und _ (underscore). Um Konflikte mit internen Bezeichnern zu vermeiden, sollte das underscore nicht als erstes Zeichen eines Bezeichners (Symbol) verwendet werden.. Digits Special symbols */=<>()[]{)., Es wird nicht zwischen Gross- und Kleinschreibung unterschieden. Bestimmte Operatoren und Delimiter bilden zusammen ein spezielles Symbols: Assignment operator: : = Vergleichs Operator: <> <= >= Kommentare: (* und *) können statt { und } verwendet werden. Auch C-style Kommentare können verwendet werden.: // Zusätzlich verwendet AVRco Pascal verschiedene Konstrukte, die den Zugriff auf die CPU und ihrer Resourcen ermöglichen. Weiterhin gibt es eine ganze Anzahl von Spracherweiterungen um den Anforderungen eines embedded Systems und dessen Programmierung gerecht zu werden. 3.2 Reservierte Wörter Reservierte Wörter sind ein integraler Bestandteil vom AVRco Pascal. Sie können nicht redefiniert werden und dürfen deshalb nicht als user defined identifiers benutzt werden. Beispiele: ABS, AND, ARRAY, ASM, BEGIN, BREAK, CASE, CONST, CONTINUE, DIV, DO, DOWNTO, ELSE, ELSIF, END, ENDFOR, ENDCASE, ENDWHILE, ENDIF, EXIT, FOR, FORWARD, FUNCTION, GOTO, IF, IN, LABEL, MOD, NOT, OF, OR, PROCEDURE, PROGRAM, RECORD, REPEAT, ROR, ROL, SHL, SHR, STRING, THEN, TO, TYPE, UNTIL, VAR, WHILE, WITH, XOR 3.3 Standard Bezeichner AVRco Pascal definiert eine Anzahl von Standard Identifiers für predefined Types, Constants, Variables, Procedures und Functions. Diese dürfen ebenfalls nicht redefiniert (überschrieben) werden. Beispiele: FALSE, TRUE, NIL, CHAR, BOOLEAN, INTEGER, BYTE, INT8, LONGINT, WORD, LONGWORD, FLOAT, POINTER, SIZEOF, INC, DEC, MOVE, LENGTH, COPY, INTTOSTR, BYTETOSTR, INTTOHEX, STRTOINT, LO, HI, LOWORD, HIWORD, INSERT, DELETE, UPCASE, POS 3.4 Trennzeichen Sprachelemente müssen zumindest mit einem Delimiter (Trennzeichen) voneinander getrennt werden. Das sind: Leerzeichen, ein Zeilenende oder ein Kommentar. Kommentare sind an jeder Stelle im Quellcode zulässig. 3.5 Programmzeilen Die maximale Länge einer Programmzeile darf 250 Zeichen nicht überschreiten. 18 Prinzipielles E-LAB Computers

19 4 Sprachreferenz 4.1 Typen Standard scalare Typen Ein Daten Typ definiert einen Bereich von Werten den eine Variable annehmen kann. Jede Variable in einem Programm muss mit einem Daten Typ verbunden sein. Obwohl Daten Typen im AVRco sehr komplex sein können, sind sie doch alle aus einfachen Typen aufgebaut. Die grundsätzlichen Typen in Pascal sind sog. scalare Typen. Diese bestehen aus einem linearen und endlichen Werte Bereich. Ein einfacher Typ kann entweder vom Programmierer definiert werden (ein sog. declared scalar Typ, auch Aufzählungstyp oder Enumeration), oder er ist einer von den standard scalar Typen: integer, int8, word, longint, longword, float, boolean, char, byte, bit oder BitSet. Neben den Standard Scalar Typen, unterstützt Pascal auch user defined scalar Typen, auch declared scalar Typen (enumeration) genannt. Die Definition einer scalaren Type spezifiziert in aufsteigender Reihenfolge alle ihrer möglichen Werte. Die Werte des neuen Typs werden durch Namen (Identifiers) dargestellt, welche den Konstanten Wert des neuen Typs repräsentieren: type Operator = (Plus, Minus, Multi, Divide); Im obigen Beispiel ist der Typ Operator eigentlich ein Byte. Die in Klammern nachfolgende Werte sind Aufzählungen beginnend mit dem Wert 0. Der Wert Plus ist damit eine Konstante mit dem Wert 0, Minus ist 1, Multi hat den Wert 2 etc. Die Verwendung von defined scalar types bzw. Enumerationen bzw. Aufzählungstypen ist sehr empfehlenswert, da hiermit die Lesbarkeit eines Programms erheblich gesteigert wird. type TDay = (Mon,Tue,Wed,Thur,Fri,Sat,Sun); TMonth = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); TMArr = array[jan..dec] of TDay; var MonArr... = Tmarr; MonArr[Aug]:= Sun; If MonArr[Jan] = Fri then Typ Konvertierung Der Compiler kennt keine automatische Typ Konvertierung. Eine Zuweisung wie z.b. byte:= word führt zu einem Type Missmatch. Es ist jedoch möglich, praktisch jeden Typ in einen anderen umzusetzen, indem man das sog. Typecasting anwendet. In vielen Fällen wird dabei kein zusätzlicher Maschinen-Code erzeugt (char:= char(byte)). AVRco Pascal kennt, wie die meisten Pascal Compiler, das Type Casting. Dazu wird einfach ein Typ- Identifier als "Funktions-Name" benutzt. Der Parameter dieser "Funktion" ist eine Variable vom Typ A die der Compiler als Variable vom Typ B sehen soll (als den Typ, der als "Funktionsaufruf" benutzt wird). E-LAB Computers Typen - 19

20 var ch : char; b1 : byte; w1 : word; i1 : integer; p1 : pointer ch:= char(b1); b1:= byte(w1); i1:= integer(w1); p1:= pointer(w1); type TRecordA TRecordB = record a,b,c : word; end; = record X : longint; Y : word; end; var A : TRecordA; B : TRecordB; C : char; D : byte; begin A:= RecordA (B); RecordA (B):= A; D:= byte (C); C:= char (D); end. Tip: In der Pascal Welt ist es üblich, dass Typ Namen mit einem grossen T beginnen. Das ist kein muss, erhöht allerdings die Lesbarkeit des Programms und hilft Fehler zu vermeiden Variable Overlay Variable können direkt auf andere Variablen platziert werden (Overlay). Dabei gibt es das Problem, dass die zweite Variable grösser sein kann als die referenzierte Variable. Da aber nur die Referenz Variable Speicher allokiert, kann es zum Überschreiben von nach-platzierten Variablen zur Laufzeit kommen. var abc : byte; xyz : byte; : byte; : word; // it's ok // problem Im Beispiel würde ein Schreibzugriff auf die Variable "ovr2" nicht nur die Variable "abc" überschreiben, sondern auch (ungewünscht) die Variable "xyz". Der Compiler prüft bei Overlays, ob die zu platzierende Variable in den vorgesehenen Speicherplatz der referenzierten Variablen passt. 20 Typen E-LAB Computers

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

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

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

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

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

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

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

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

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

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

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

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

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

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

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

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

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

Einführung in die Programmiersprache C und in den C166-Compiler

Einführung in die Programmiersprache C und in den C166-Compiler Einführung in die Programmiersprache C und in den C166-Compiler Die vorliegenden Unterlagen sollen einen kurzen Überblick über die Software-Entwicklung in C geben. Diese Unterlagen erheben keinen Anspruch

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

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

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

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

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

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,

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

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R.

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

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

3 Variablen. 3.1 Allgemeines. 3.2 Definition und Verwendung von Variablen

3 Variablen. 3.1 Allgemeines. 3.2 Definition und Verwendung von Variablen 3 Variablen 3.1 Allgemeines Variablen werden in Prozeduren, Mustern und Parameter-Dokumenten definiert und verwendet und bei der Jobgenerierung durch die Werte, die ihnen zugewiesen werden, ersetzt. Variablen

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

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Java Kurs für Anfänger Einheit 2 Datentypen und Operationen Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 16. Mai 2009 Inhaltsverzeichnis

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

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

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

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

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG BIT LV-Nr. 439.026 SS2007 1 Datendefinitionen b) Unterteilung nach Typen: (Teil 2) void leer Pointer 2/4 Bytes Adresse von Objekten Arrays bei allen Datentypen

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

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

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

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

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

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

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

Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum Versuche mit Microcontroller-System

Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum Versuche mit Microcontroller-System Kurzanleitung: Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum BASIC-Programme für das C-Control Prozessormodul Jedes Programm besteht aus einem Vereinbarungsteil und

Mehr

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden? Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im

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

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

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

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

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

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

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z.

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z. Literatur [E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z.zip [E-2] M.K. Johnson, E.W. Troan: Anwendungen

Mehr

Programmierung des Lego NXT in C. Hochschule Mannheim Fakultät für Informatik

Programmierung des Lego NXT in C. Hochschule Mannheim Fakultät für Informatik Programmierung des Lego NXT in C Hochschule Mannheim Fakultät für Informatik Der NXT Stein Technische Daten 32-bit ARM7 Microcontroller 256 Kbytes FLASH, 64 Kbytes RAM 8-bit AVR microcontroller 4 Kbytes

Mehr

Fallunterscheidung: if-statement

Fallunterscheidung: if-statement Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0

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

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

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

Einführung in ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

Methodische Grundlagen des Software Engineering - Übung 9

Methodische Grundlagen des Software Engineering - Übung 9 Engineering - Übung 9 9 Prozess und Softwarequalität Abgabe der Hausaufgaben am Anfang der jeweiligen Präsenzübung am 14.06.2011 bzw. 15.06.2011. Hinweise und Kontakt: Veranstaltungsseite 1 9.1 Grundlagen

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

Moderne C-Programmierung

Moderne C-Programmierung Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

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

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

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN? XML 1 WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN? Mit den verschiedenen Versionen von Access wurde die Unterstützung von XML immer mehr verbessert. Vollständig ist sie aber

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

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

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

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

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

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

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

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

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

3.0 8051 Assembler und Hochsprachen

3.0 8051 Assembler und Hochsprachen 3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle

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

ubasic Port für STM32F4 von Uwe Becker

ubasic Port für STM32F4 von Uwe Becker ubasic Port für STM32F4 von Uwe Becker Das original ubasic von Adam Dunkels findet sich unter : http://dunkels.com/adam/ubasic/ Die Minimal -Version vom ubasic-port für den STM32F4 beinhaltet folgendes

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

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

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

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

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

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Arbeiten mit Turbo Pascal 5.0

Arbeiten mit Turbo Pascal 5.0 Arbeiten mit Turbo Pascal 5.0 Douglas Hergert SYBEX DUSSELDORF. PARIS, SAN FRANCISCO -LONDON ARNHEIM VI Arbeiten mit Turbo Pascal 5.0 Inhaltsverzeichnis Einführung SYBEX-Infos Installation von Turbo Pascal

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

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Interface Definitionen zu E-LAB ICP-V24 Portable

Interface Definitionen zu E-LAB ICP-V24 Portable Serielles Interface PC ICP-V24 18.03.2003 Seite 1/5 Interface Definitionen zu E-LAB ICP-V24 Portable Das Interface zwischen PC und ICP-V24 besteht aus dem Hardware Teil und dem Software Teil. Hardware

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

Computergrundlagen Programmieren in C

Computergrundlagen Programmieren in C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2013/14 Die Sprache C D. M. Ritchie, 1941 2011 Entwickelt 1971-1973 aktueller Standard:

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

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

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Workshop: ASURO-Programmieren in C

Workshop: ASURO-Programmieren in C Workshop: ASURO-Programmieren in C / Teil 1: Theorie Workshop: ASURO-Programmieren in C Teil 1: Theorie Markus Becker http://mbecker-tech.de Bürgernetz Ingolstadt e. V. / ByteWerk Stand: 1. Mai 2010 Copyright:

Mehr