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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

N. Schmiedel, J. Brass, M. Schubert VHDL Formelsammlung FH Regensburg, 01.12.2008. VHDL Formelsammlung

N. Schmiedel, J. Brass, M. Schubert VHDL Formelsammlung FH Regensburg, 01.12.2008. VHDL Formelsammlung VHDL Formelsammlung INHALTSVERZEICHNIS: 1 DATENOBJEKTE 2 1.1 SIGNAL: 2 1.2 VARIABLE: 2 1.3 CONSTANT 2 2 DATENTYPEN 2 2.1 selbstdefinierte Aufzähltypen (Deklaration) 3 2.2 Physikalische Datentypen 3 2.3

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

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

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

11: Echtzeitbetriebssystem ucos-ii

11: Echtzeitbetriebssystem ucos-ii 11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren

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

1. Der Einstieg in Java

1. Der Einstieg in Java 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

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

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY O Reillys Taschenbibliothek 3. Auflage Windows PowerShell 3.0 kurz & gut O REILLY Lee Holmes Deutsche Adaption von Rolf Masuch Inhalt Einleitung................................................ 2 Installation.....................................................

Mehr

Embedded OS für ARM Cortex Microcontroller

Embedded OS für ARM Cortex Microcontroller Embedded OS für ARM Cortex Microcontroller RTOS Design, Timinganalyse und Test mit Core Simulation und Hardware Debugger Entscheidende Fragen für oder gegen RTOS Lohnt sich der Einsatz eines RTOS auch

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

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

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

5.2 Variablenkonzept und elementare Datentypen

5.2 Variablenkonzept und elementare Datentypen bertram.hafner@t-online.de Informatik 11 Seite 10 5.2 Variablenkonzept und elementare Datentypen Der aktuelle Zustand des Karol-Systems ist festgelegt durch: - Länge, Breite, Höhe der Welt - Position,

Mehr

Besser PHP programmieren

Besser PHP programmieren Carsten Möhrke Besser PHP programmieren Handbuch professioneller PHP-Techniken Galileo Press Vorwort zur dritten Auflage ц JjlJlli!fJÜIj SI!IS* 1.1 Lernen Sie Ihr Arbeitsgerät kennen 13 1.2 Der Editor,

Mehr

Installation MySQL Replikationsserver 5.6.12

Installation MySQL Replikationsserver 5.6.12 Ergänzen Konfigurationsdatei my.ini auf Master-Server:!!! softgate gmbh!!! Master und Slave binary logging format - mixed recommended binlog_format = ROW Enabling this option causes the master to write

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

L4. Erster Schritt zum Programmieren

L4. Erster Schritt zum Programmieren L4. Erster Schritt zum Programmieren 1 Programmierung in Hoch Beispielprogramme in FORTRAN, PASCAL und C Die Programmiersprache C Erstellung und Übersetzung eines C-Programms Das Programm Hello World Eingabe

Mehr

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany C++ Programmierung Uwe Naumann LuFG Informatik 12, RWTH Aachen University, Germany Leave me alone world... Hauptprogramm int main(); return 0; Ausgabe auf Bildschrim #include std :: cout

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes Erste Schritte Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Das Arduino-Board Ihr Fundino-Board Anschluss über USB Anschluss über USB Programmierumgebung Download

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Kurs 1575, Musterlösung zur Winter Klausur 2002/03

Kurs 1575, Musterlösung zur Winter Klausur 2002/03 1 0 Kurs 1575, Musterlösung zur Klausur im Wintersemester 2002/03 1 Kurs 1575, Musterlösung zur Winter Klausur 2002/03 Aufgabe 1: Warteschlange Wer kennt das Problem nicht? Sie wollen noch schnell im Supermarkt

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

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

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

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5.

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. www.heimetli.ch. Heimetli Software AG HSWModule........ Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. August 2005 Inhaltsverzeichnis Was ist HSWModule?... 1 Installation...

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

TAFS_SEPA = class(tcomponent)

TAFS_SEPA = class(tcomponent) TAFS_SEPA = class(tcomponent) Funktionsumfang: - SEPA Überweisungen - SEPA Lastschriften (B2C) - SEPA Firmenlastschriften (B2B) erzeugen - IBAN Berechnungen aus Blz und Kontonummern (Länderübergreifend)

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

1.1 Was für Funktionen gibt es in der Unit Math?

1.1 Was für Funktionen gibt es in der Unit Math? mitp Seitenanzahl 13 Die Unit Math 1 Die Unit Math Die Unit Math stellt an die 100 Funktionen für mathematische Berechnungen zur Verfügung. Das schöne daran ist, das der Source verfügbar ist und zwar ist

Mehr

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold Codegeneratoren mit Xtend2 11.04.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was ist Xtend2? 2. Xtend2 Konzepte 3. Hands On! 3 4 8 20 2 Was ist Xtend2? Funktionale, objektorientierte Sprache

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Meeting C++ C++11 R-Value Referenzen

Meeting C++ C++11 R-Value Referenzen Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

LabVIEW Power Programming. Amadeo Vergés www.zuehlke.com

LabVIEW Power Programming. Amadeo Vergés www.zuehlke.com LabVIEW Power Programming Aus der Praxis für die Praxis Amadeo Vergés www.zuehlke.com LabVIEW Power Programming Aus der Praxis für die Praxis the same procedure as every year? Running gags in der LabVIEW

Mehr

VHDL Verhaltensmodellierung

VHDL Verhaltensmodellierung VHDL Verhaltensmodellierung Dr.-Ing. Volkmar Sieh Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2013 VHDL Verhaltensmodellierung 1/18 2013-01-11 Inhalt

Mehr

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten

Mehr

Manuelles Laden von ADO Dateien. Lösung von Problemen beim Testen von possenet Dynamics CVS Ständen

Manuelles Laden von ADO Dateien. Lösung von Problemen beim Testen von possenet Dynamics CVS Ständen Lösung von Problemen beim Testen von possenet Dynamics CVS Mike Fechner, mike fechner it consulting 26.08.2003 Vorbemerkung Die in diesem Text angebotenen Informationen werden Ihnen zur eigenen Verwendung

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Was ist ein Microcontroller Wikipedia: A microcontroller (sometimes abbreviated µc, uc or MCU) is a small computer on a single integrated

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

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

FB Informatik Prof. Dr. R.Nitsch. C++ - Dokumentation. Reiner Nitsch r.nitsch@fbi.h-da.de

FB Informatik Prof. Dr. R.Nitsch. C++ - Dokumentation. Reiner Nitsch r.nitsch@fbi.h-da.de C++ - Dokumentation Reiner Nitsch r.nitsch@fbi.h-da.de Software-Dokumentation? Schnelltest: Haben Sie Mut zum Risiko? Um einen knappen Termin zu erreichen, fahren Sie schneller als gewohnt? Nach ein paar

Mehr

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Programmiertechnik Skalare Typen,Variablen, Zuweisungen

Programmiertechnik Skalare Typen,Variablen, Zuweisungen Programmiertechnik Skalare Typen,Variablen, Zuweisungen Prof. Dr. Oliver Haase int i; long j; boolean isempty; double average; char naechsteszeichen; j = 42L; i = (int) j; isempty = true; average = 37.266;

Mehr

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1 SQL-Loader Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1 Beschreibung Definition transferiert Daten aus einer oder mehreren externen Dateien in eine oder mehrere Tabellen einer Oracle-Datenbank.

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

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

Mehr

Erster Bug: eine Motte

Erster Bug: eine Motte SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

D A T E N... 1 Daten Micheuz Peter

D A T E N... 1 Daten Micheuz Peter D A T E N.....! Symbole, Alphabete, Codierung! Universalität binärcodierter Daten! Elementare Datentypen! Speicherung binärcodierter Daten! Befehle und Programme! Form und Bedeutung 1 Daten Micheuz Peter

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

Von Pascal zu Delphi. Aufbau eines Delphi-Projektes. Grundlagen von ObjectPascal. Prozeduren und Funktionen. Übungen. Ende

Von Pascal zu Delphi. Aufbau eines Delphi-Projektes. Grundlagen von ObjectPascal. Prozeduren und Funktionen. Übungen. Ende Von Pascal zu Delphi Aufbau eines Delphi-Projektes Aufbau einer Unit Aufbau einer Prozedur Grundlagen von ObjectPascal Schleifen Verzweigungen Array Prozeduren und Funktionen Übungen Ende Entwicklung der

Mehr

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas)

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas) Programmieren mit der Windows PowerShell von Nils Gutsche (aka Vellas) Einleitung Im November 2006 erschien die finale Fassung der Windows PowerShell. Sie gilt als der Nachfolger der Eingabeaufforderung

Mehr

VHDL Verhaltensmodellierung

VHDL Verhaltensmodellierung VHDL Verhaltensmodellierung Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2008/2009 VHDL Verhaltensmodellierung 1/26 2008-10-20

Mehr

Modellierung und Implementierung einer Schnittstelle zwischen PC und RFID-Tags. Kevin Schlieper Sönmez Ulutürk Dominik Zeiger

Modellierung und Implementierung einer Schnittstelle zwischen PC und RFID-Tags. Kevin Schlieper Sönmez Ulutürk Dominik Zeiger Modellierung und Implementierung einer Schnittstelle zwischen PC und RFID-Tags Kevin Schlieper Sönmez Ulutürk Dominik Zeiger Gliederung 2 FEIG Reader Technische Daten Speicherstrukturen Kommunikationsprotokoll

Mehr

Universal Mobile Gateway V4

Universal Mobile Gateway V4 PV-Electronic, Lyss Universal Mobile Gateway V4 Autor: P.Groner Inhaltsverzeichnis Allgemeine Informationen... 3 Copyrightvermerk... 3 Support Informationen... 3 Produkte Support... 3 Allgemein... 4 Übersicht...

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr