Scripting. Opslag til (Vol. D. Dahlerup. Bemærk. Anvendte bøger: "Sams. og proteiner.

Størrelse: px
Starte visningen fra side:

Download "Scripting. Opslag til (Vol. D. Dahlerup. Bemærk. Anvendte bøger: "Sams. og proteiner."

Transkript

1 Bioinformatisk C++ Scripting i Xubuntu Vol. 2 Opslag til Dybdegående Bioinformatisk Scripting i Xubuntu (Vol. 2) Henrik D. Dahlerup, Maj 2015 kontakt: henrik@ddahlerup.com Anvendte bøger: "Sams Publishing"-books. Bemærk - Nye programmeringssprog, så som C++, er i dag genkendt af flere som yderst anvendelig til størrere bioinformatiske opgaver. På trods af dette findes der ikke litteratur som helt konkret - ned i detaljer - viser eksempler på disse muligheder. Dette er muligvis fordi udviklingenn af dette sprog går så stærkt, at hvad var foreslået i går, er meget mindre effektivt i dag. Dette dokument vil, på trods af dette, bidrage med konkrete ned-i-detaljer-eksempler. Alt dette bliver her udført i Xubuntu C++ version Udover dette er der mange steder anvendt talesprog hvor der ikke tages hensyn til den bioinformatiske termologi. Dennee tilgang har til hensigt at gøre det nemmere at gennemskue den praktiske værdi af disse til tider abstrakte bioinformatiske værktøjer - brugt til at analysere DNA, RNA og proteiner. Copyright 2014 Henrik D. Dahlerup

2 Indhold Overblik og opsamling i en ny vinkel... 3 Typer og objekter brugt i C++ programmering... 3 Brugen af funktioner og klasser Konkret programmering i C Effektivt brug af funktioner Objekt-orienteret struktur Implementering af inheritance Avanceret brug af arrays Strukturen som skaber polymorfisme Overblik Debug dine C++ scripts Anvendelse - Her er brugt simple og meget praktiske forklaringer som gør det nemt at forklare det fremlagte videre til andre, uden at tale forbi dem - hvis du for eksempel er hjælpelærer på et bioinformatisk kursus eller lignende. 2

3 Overblik og opsamling i en ny vinkel Her er en hurtig og konkret beskrivelse af udvalgte redskaber anvendt under bioinformatisk scripting i C++. Nye meget anvendelige metoder og vinkler er til stede i dette kapitel, men du kan nemt skippe dette kapitel hvis du ønsker at undgå gentagelser. Siden scripts bruger amerikansk punktum- og komma-notation, er det samme anvendt i teksten af dette dokument. Typer og objekter brugt i C++ programmering Her introduceres de grundlæggende typer og objekter brugt i C++ programmer. Et program kan bruge flere forskellige redskaber (data'er) til at løse et givet problem, for eksempel, karakterer, integers eller floating-point numre. Siden en computer bruger forskellige metoder til at behandle og gemme data på, må selve data-typen være kendt. Selve typen definer: Den indre repræsentation af data (For eksempel sandt er 1 og falskt er 0). Mængden af hukommelse der skal allokeres. C++ compiler'en genkender de forskellige built-in typer som alle andre typer (vektorer, pointers, klasser,...) er baseret på. Type-bool Resultatet som du opnår, når du laver en sammenligning eller en logisk kobling ved at bruge AND eller OR er en boolean værdi, som kan være sand eller falsk. C++ bruger bool-typen til at repræsentere boolean-værdier. En ekspression af type-bool'en kan enten være sand eller falsk, hvor den indre værdi for sand vil blive repræsenteret som en numerisk værdi 1 og falsk via et nul. char og wchar_t typer Disse typer er brugt til at gemme karakter-koder. En karakter-kode er faktisk en integer koblet med hver karakter. Bogstavet A er repræsenteret af koden 65, som et eksempel. Karakter-sættet definer hvilken kode der repræsenter en specifik karakter. Når karakterer vises på skærmen, er den pågældende karakter-kode brugt og modtageren som er skærmen, har netop ansvaret for at tolke koden korrekt. C++ sproget bruger ASCII kode. Denne 7-bit-kode indeholder netop definitioner for 32 kontrolkarakterer (koderne 0 31) og 96 printbare karakterer (koderne ). char (character)-typen er brugt til at lagre karakter-koder i en byte (8 bits). Dette antal af bits som lagres er faktisk nok til udvidede karakter-sæts, som for eksempel, ANSI karakter-sættet der indeholder ASCII koden og yderligere karakterer så som tysk 'umlaut'. wchar_t (wide character type) typen giver, på samme måde, mindst 2 bytes (16 bits) og er derfor i stand til at lagrer moderne Unicode-karakterer. Unicode er en 16-bit kode også brugt i Windows og den indeholder kode for cirka 35,000 karakterer i 24 sprog. Et program som output'ter værdien for specifikke konstanter. #include <iostream> #include <climits> // Definition of INT_MIN,... using namespace std; int main() 3

4 Et eksempel på at declare funktioner: int toupper(int); double pow(double, double); Dette informer faktisk compileren om at funktionen toupper() er af typen int, som betyder at dens returnerings-værdi er af typen int og at compileren netop forventer et argument af typen int. Den anden funktion er pow() og er af typen double. Her skal to argumenter af typen double pass'es til funktionen når den er call'et. Typerne af argumenterne kan faktisk blive efterfulgt af navne. Dog, er navnene kun opfattet som kommentarer af compileren. Et eksempel på at declare funktioner: int toupper(int c); double pow(double base, double exponent); Fra compiler'ens synspunkt er disse prototyper faktisk ens med prototyperne i det forrige eksempel, netop fordi begge junctions (mellemled) er standard-junctions. Husk, at standard funktionsprototyper skal ikke declares for det er de allerede blevet i standard-header-filerne. Hvis headerfilen er inkluderet i programmernes source kode via et #include directiv, kan funktionen faktisk blive brugt med det samme. Et eksempel på at declare funktioner: #include <cmath> Følgende direktiv, som er de matematiske standard funktioner så som sin(), cos() og pow(), er tilgængelige her. Et program som viser funktions-calls. // Calculating powers with // the standard function pow() #include <iostream> // Declaration of cout #include <cmath> // Prototype of pow(), thus: // double pow( double, double); using namespace std; int main() { double x = 2.5, y; // By means of a prototype, the compiler generates // the correct call or an error message! // Computes x raised to the power 3: y = pow("x", 3.0); // Error! String is not a number y = pow(x + 3.0); // Error! Just one argument y = pow(x, 3.0); // ok! y = pow(x, 3); // ok! The compiler converts the // int value 3 to double. cout << "2.5 raised to 3 yields: " << y << endl; // Calculating with pow() is possible: cout << "2 + (5 raised to the power 2.5) yields: " 15

5 36: 37: Cat::~Cat() 38: { 39: delete itsage; 40: itsage = 0; 41: delete itsweight; 42: itsweight = 0; 43: } 44: 45: int main() 46: { 47: Cat Frisky; 48: cout << "Frisky's age: " << Frisky.GetAge() << endl; 49: cout << "Setting Frisky to 6...\n"; 50: Frisky.SetAge(6); 51: cout << "Creating Boots from Frisky\n"; 52: Cat Boots(Frisky); 53: cout << "Frisky's age: " << Frisky.GetAge() << endl; 54: cout << "Boots' age: " << Boots.GetAge() << endl; 55: cout << "setting Frisky to 7...\n"; 56: Frisky.SetAge(7); 57: cout << "Frisky's age: " << Frisky.GetAge() << endl; 58: cout << "boot's age: " << Boots.GetAge() << endl; 59: return 0; 60: } $ program2_4.cpp Frisky's age: 5 Setting Frisky to 6... Creating Boots from Frisky Frisky's age: 6 Boots' age: 6 setting Frisky to 7... Frisky's age: 7 Boots' age: 6 I linjerne 6 19 er Cat klassen declared. Bemærk at i linje 9 er en default constructor declared og i linje 10 er en copy-constructor declared. Du ved at det er en copy-constructor som er i linje 10, netop fordi constructor'en modtager en reference - en konstant-reference i denne situation - til et objekt af den samme type. I linjerne 17 og 18 er to member-variabler declared, begge to som en pointer til en integer. Typisk er der meget lidt grund til, at en klasse skal lagrer int membervariabler som pointers, men dette er gjort her for at vise hvordan du styrer member-variabler på det frie lager. Default constructor'en i linjerne allokere plads på det frie lager til to int variabler og herefter assign'er den værdierne til dem. Copy-constructor'en starter i linje 29. Bemærk at parameteren er en rhs. Det er normalt at referer parameter'en til en copy-constructor som rhs, som står for 'right-hand side'. Når du ser på assignment'erne i linjerne 33 og 34, vil du se at objektet som er pass'et ind som en parameter er på højre-hånds side af lighedstegnet. Her er hvordan det virker: 49

6 parametrer ud fra typen i stedet for ud fra et tal eller bidrager med forskellige implementeringer for forskellige parameter-type-kombinationer. o Når du skriver en klasse constructor, skal du gennemskue hvad du vil sætte i initialiseringen og hvad du vil sætte i body'en af constructor'en. En tommelfingerregel er at sætte så meget som muligt i initialiserings-fasen - Det betyder, at initialisere alle member-variablerne der. Nogle ting, så som udregninger (dem inkluderet som er brugt til selve initialiseringen) og printstatement'er skal være i body'en af constructor'en. o En overloaded funktion kan have en default-parameter. En eller flere af de overload'ede funktioner kan have sin egen default-værdi ved at følge de normale regler for default-variabler i enhver funktion. o Nogle af member-funktionerne er defineret indenfor klasse deklarationen og andre er ikke. Ved at definere implementeringen af en member-funktion indenfor deklarationen udfører den inline. Generalt set er dette kun gjort hvis funktionen er ekstremt simpel. Bemærk at du kan også gøre en member-funktion inline ved at bruge nøgleordet inline, selv hvis funktionen er declared udenfor selve klasse-deklarationen. Konkrete problemer 1. Når du overload'er member-funktioner, på hvilken måde skal de så være forskellige? Overloaded member-funktioner er funktioner i en klasse som deler et navn men er forskellige i antallet eller typer af deres parametrer. 2. Hvad er forskellen imellem en deklaration og en definition? En definition sætter hukommelse til side; En deklaration gør ikke. Næsten alle deklarationer er definitioner; Den store undtagelse er klasse-deklarationer, funktions-prototyper og typedef statement'er. 3. Hvornår er copy-constructor'en call'et? Når en midlertidig kopi af et objekt er dannet. Dette sker også hver gang et objekt er pass'et med en værdi. 4. Hvornår er destructor'en call'et? Destructor'en er call'et hver gang et objekt er ødelagt, enten fordi det går ud af scope eller fordi du call'er delete på en pointer der peger til den. 5. Hvordan er copy-constructor'en forskellig fra assignment-operator'en (=)? Assignmentoperator'en agere på et eksisterende objekt; Copy-constructor'en danner et nyt objekt. 6. Hvad er this pointer'en for noget? this-pointer'en er en gemt parameter i alle member-funktioner som peger til selve objektet. 7. Hvordan skelner du imellem overloading af præfiks- og postfiks-increment-operatorer? Præfiksoperatoren tager ikke parametrer. Postfiks-operatoren tager en enkelt int-parameter, som er brugt som et signal til compiler'en om at dette er selve postfiks-varianten. 8. Kan du overload'e en operator+ for short integers? Nej, du kan ikke overload'e nogen som helst operator for built-in typer. 70

7 class Calendar_Class { public: Calendar_Class(); ~Calendar_Class(); void Add( const Meeting& ); // add a meeting to the calendar void Delete( const Meeting& ); Meeting* Lookup( Time ); // see if there is a meeting at the // given time Block( Time, Duration, String reason = "" ); // allocate time to yourself... protected: OrderedListOfMeeting meetings; }; class Meeting { public: Meeting( ListOfPerson&, Room room, Time when, Duration duration, String purpose = "" ); ~Meeting(); protected: ListOfPerson people; Room room; Time when; Duration duration; String purpose; }; Du kan bruge private i stedet for protected hvis du ønsker det. Implementering af inheritance Tidligere er der blevet fortalt om et antal af objekt-orienteret forhold som inkluder specialisering/generalisering. C++ implementer dette forhold igennem inheritance. Nedenfor vil der blive fortalt om: Hvordan inheritance funger. Hvordan du bruger inheritance til at aflede en klasse fra en anden. Hvad beskyttet adgang er og hvordan du bruger det. Hvad virtuelle funktioner er. Dette ved du når du har læst "Implementering af inheritance" Der er her blevet fortalt om hvordan afledte klasser arver fra basis klasser. Klassen som blev forklaret her fortæller om public inheritance og virtuelle funktioner. Klasser arver alt det fra public og det beskyttede (protected) data samt funktioner fra deres basis klasser. Beskyttet adgang er public til afledte klasser og private til alle andre klasser. Selv afledte klasser kan ikke få adgang til private data eller funktioner i deres basis-klasser. 83

8 For at declare en array, skriv da typen på objektet lagret efterfulgt af navnet på array'en og et subscript med nummeret på objektet som findes i array'en. Eksempel 1 int MyIntegerArray[90]; Eksempel 2 long * ArrayOfPointersToLongs[100]; For at gå ind i members af array'en, brug da subscript operatoren. Brugen af array'er indeholdende objekter Ethvert objekt, uanset om det er en built-in eller en bruger-defineret, kan blive lagret i en array. Når du declare array'en til at indeholde objekter, siger du til compileren hvilken type af objekt den skal lagrer og antallet som den skal allokere for at lave plads. Compileren ved hvor meget plads der er brug for til hvert objekt baseret på klasse-deklarationen. Klassen skal have en default constructor som ikke tager argumenter så objekterne kan blive dannet når array'en er defineret. Det at gå ind i member-data i en array med objekter er en to-trins proces. Du identificer member'en af array'en ved at bruge indeks-operatoren ([ ]) og så indsætter du member-operatoren (.) for at kunne gå ind i den specifikke member-variabel. Opstillingen nedenfor viser hvordan du ville danne og gå ind i en array med fem Catte. Et program som danner en array af objekter. 0: // An array of objects 1: 2: #include <iostream> 3: using namespace std; 4: 5: class Cat 6: { 7: public: 8: Cat() { itsage = 1; itsweight=5; } 9: ~Cat() {} 10: int GetAge() const { return itsage; } 11: int GetWeight() const { return itsweight; } 12: void SetAge(int age) { itsage = age; } 13: 14: private: 15: int itsage; 16: int itsweight; 17: }; 18: 19: int main() 20: { 21: Cat Litter[5]; 22: int i; 23: for (i = 0; i < 5; i++) 24: Litter[i].SetAge(2*i +1); 25: 120

9 164: cout << "S1[999]:\t" << s1[999] << endl; 165: 166: String s2(" Another string"); 167: String s3; 168: s3 = s1+s2; 169: cout << "S3:\t" << s3.getstring() << endl; 170: 171: String s4; 172: s4 = "Why does this work?"; 173: cout << "S4:\t" << s4.getstring() << endl; 174: return 0; 175: } $ program5_14.cpp S1: initial test S1: Hello There temptwo: ; nice to be here! S1: Hello There; nice to be here! S1[4]: o S1: Hellx There; nice to be here! S1[999]:! S3: Hellx There; nice to be here! Another string S4: Why does this work? Din String klasses deklaration er i linjerne For at tilsætte fleksibilitet til klassen, er der 3 constructor'er i linjerne 11 13: Default constructor'er, copy-constructor'er og en constructor som tager en eksisterende null-termineret (C-style) string. For at tillade at brugerne nemt kan manipulere strings, overload'er denne String-klasse flere operatorer der inkluder offset operatoren ([ ]), operatoren plus (+), og operatoren plus-ligmed (+=). Offset operatoren er overloaded to gange: En gang som en konstant-funktion der returner en char og igen som en ikke-konstant-funktion der returner en reference til en char. Ikke-konstant-versionen er brugt i statement'erne så som: S1[4]='x'; som set i linje 161. Dette giver direkte adgang til hver af karakterne i string'en. En reference til karakteren er returneret sådan så den call'ende funktion kan manipulere den. Den konstante version er brugt når der er gået ind i et konstant String objekt, så som i implementeringen af copyconstructor'en der starter i linje 63. Bemærk at rhs[i] er der gået ind i, dog er rhs declared som en const String &. Det er ikke tilladt at gå ind i dette objekt ved at bruge en ikke-konstant member funktion. Derfor skal offset operatoren være overloaded med en konstant accessor. Hvis objektet som der bliver returneret er stort, skal du declare returnerings-værdien til at være en konstant reference. Dog, netop fordi en char kun er 1 byte, vil der ikke være nogen ide med at gøre dette. Default constructor'en er implementeret i linjerne Den danner en string vis længde er 0. Det er konventionen for denne String klasse at rapporter dens string uden at tælle de terminerende null'er. Denne default string indeholder kun et terminerende null. Copy-constructor'en er implementeret i linjerne Denne constructor sætter den nye string's længde til det samme som den eksisterende string - plus en til det terminerende null. Den kopierer hver karakter fra den eksisterende string til den nye string og den null-terminere den nye string. Husk at afvigende fra assignment-operatorer, har copy-constructor'er ikke brug for at teste om string'en, som bliver kopieret ind i dette nye objekt, er den selv - dette kan nemlig aldrig ske. 140

10 293: pl.insert(ppart); 294: } 295: } 296: pl.iterate(); 297: return 0; 298: } $ program7_1.cpp (0)Quit (1)Car (2)Plane: 1 New PartNumber?: 2837 Model Year? 90 (0)Quit (1)Car (2)Plane: 2 New PartNumber?: 378 Engine Number?: 4938 (0)Quit (1)Car (2)Plane: 1 New PartNumber?: 4499 Model Year? 94 (0)Quit (1)Car (2)Plane: 1 New PartNumber?: 3000 Model Year? 93 (0)Quit (1)Car (2)Plane: 0 Part Number: 378 Engine No.: 4938 Part Number: 2837 Model Year: 90 Part Number: 3000 Model Year: 93 Part Number: 4499 Model Year: 94 Opstillingen ovenfor viser implementeringen af en linket liste for Part objekter. En linket liste er en dynamisk data struktur; Det betyder at den er ligesom en array men den er tilpasset til at passe løbende som objekter er tilsat eller fjernet. Linket lister inkluder også pointers til objekter på samme tid for at få koblet objekterne sammen. Denne specifikke linket liste er designet til at indeholde objekter af klassen Part, hvor Part er en abstract-data-type der funger som en basis klasse til ethvert objekt indeholdende et del-nummer. I dette eksempel, Part er blevet under-klasse-indelt ind i CarPart og AirPlanePart. Klassen Part er declared i linjerne og indeholder et del-nummer og nogle accessors. Det forventes at denne klasse kan blive opdelt til at kunne indeholde andre vigtige informationer om delene, så som hvilke komponenter de er brugt i og hvor mange er der i beholdningen og så videre. Part er en abstract-data-type, styret af den rene virtuelle funktion Display(). Bemærk at Display() har en implementering i linjerne Det er designernes intention at afledte klasser vil blive styret til at danne deres egne Display() metoder, men de kan dog også chain up (indgå i kæden) til denne metode. To simple afledte klasser, CarPart og AirPlanePart, er bidraget i linjerne og Hver bidrager med en overskrevet Display() metode, som faktisk chain up til basis-klassen Display() metoden. Klassens PartNode i linjerne funger som interfacet imellem Part klassen og PartList klassen. Den indeholder en pointer til en del og en pointer til det næste mellemled i listen. Dens eneste metode er at modtage og sætte det næste mellemled på listen og at returner Part hvortil den peger. Informationerne fra listen er placeret korrekt i klassen PartsList, vis deklaration er i linjerne PartsList indeholder en pointer til det første element på listen (phead) og bruger den til 186

11 87. Old value = New value = x in factorial (n=-1) at main.cpp: while(n--) 91. (gdb) 92. Continuing. Nu bliver n til -1 og loop'et har ikke tilladelse til at køre igen fordi n-- returner 0 og funktionen returner resultatets aktuelle værdi 0. Lad os se hvad der sker når funktionen exit'ter Watchpoint 2 deleted because the program has left the block in 95. which its expression is valid Watchpoint 3 deleted because the program has left the block in 98. which its expression is valid. Her er hvad der sker med et watchpoint når variablen går ud af scope x in main () at main.cpp: long val=factorial(n); 101. (gdb) print val 102. $1 = print val viser en affalds-værdi fordi gdb peger til en linje før den er executed og ikke efter (gdb) next cout<<val; 105. (gdb) continue 106. Continuing [Inferior 1 (process 2499) exited normally] 108. (gdb) quit Her er hvordan løsning bør se ud: 1 while(n>0) //doesn't let n reach 0 2 { 3 4 result*=n; n--; //decrements only after the evaluation 5 } GDB indeholder mere hjælp Husk at GDB indeholder et hælpe-system. Du indtaster help i (gdb) prompten og du vil blive præsenteret for muligheder som du kunne få brug for. For at få detaljer om en specifik kommando, brug da følgende syntaks: help <command> Du kan også bruge genveje så som 'q' for 'quit'. 213

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

Online kursus: Programming with ANSI C

Online kursus: Programming with ANSI C Online kursus 365 dage DKK 1.999 Nr. 90198 P ekskl. moms Denne kursuspakke giver dig et bredt kendskab til sproget C, hvis standarder er specificeret af American National Standards Institute (ANSI). Kurserne

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3 Praksis eksempel Operatorer Løkker Metoder Klasser Arv Grundlæggende programmering Lektion 3 Praksis eksempel Et program der benytter Unity til at lave et 3D spil Praksis eksempel Spil der benytter Unity

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting.

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting. Denne guide er oprindeligt udgivet på Eksperten.dk C++ Historie og Programmering - Del 1 Denne guide er til dig der altid har undret dig over hvordan du får en computer til at udføre specifikke opgaver.

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

#AlleKanKode. Lektion 2 - Konstanter og Variabler

#AlleKanKode. Lektion 2 - Konstanter og Variabler #AlleKanKode Lektion 2 - Konstanter og Variabler Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

Læs mere

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a Kursusarbejde 1 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 3. oktober 2003 Kode //File Name: kaalhovede.cc //Author: Arne Jørgensen //Email Address: arne@arnested.dk, arnjor@niels.brock.dk

Læs mere

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00 Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed

Læs mere

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX IT -Eksamen Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX [Vælg en dato] Indhold Indledning... 2 Teori... 3 Hvorfor dette design... 4 Produktet... 4 Test og afprøvning... 9 Konklusion... 10 Indledning

Læs mere

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

Programmering i C Videre med C (2 af 4) 19. marts 2007

Programmering i C Videre med C (2 af 4) 19. marts 2007 Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

Læs mere

Programmering C RTG - 3.3 09-02-2015

Programmering C RTG - 3.3 09-02-2015 Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...

Læs mere

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion oktober 2008 Programmering i C Lektion 2 20 oktober 2008 Historie Processen At kompilere 2 / 23 Fra sidst 1 Historie 2 Processen 3 At kompilere Historie Processen At kompilere 3 / 23 ALGOL 60 1963 CPL 1966 BCPL 1969

Læs mere

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4 LØKKER METODER C S HISTORIE Grundlæggende programmering Lektion 4 1 LEKTIER UML struktur diagrammer om biler 2 OPERATORER Syntaks til at udføre forskellige beregninger og handlinger Booleans og hvorfor

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable: Programmering i C Lektion 5 11. december 2008 Pointers 1 Pointers 2 Referenceparametre 2 / 23 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads.

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Online kursus: C++ Programming

Online kursus: C++ Programming Online kursus 365 dage DKK 6.999 Nr. 90201 P ekskl. moms Kom hele vejen rundt om C++ og få en dyb forståelse for det multiparadigmatiske programmeringssprog, der er standardiseret af både International

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

SWC Elementer i klassedefinition

SWC Elementer i klassedefinition SWC Elementer i klassedefinition Indhold Eksempel... 2 Karakteristika for en klasse... 3 Karakteristika for et instance field... 4 Karakteristika for en constructor... 5 Karakteristika for en property...

Læs mere

#AlleKanKode. Lektion 4 - Kontrol flow

#AlleKanKode. Lektion 4 - Kontrol flow #AlleKanKode Lektion 4 - Kontrol flow Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger osv. Andre

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

#AlleKanKode. Lektion 3 - Operatorer

#AlleKanKode. Lektion 3 - Operatorer #AlleKanKode Lektion 3 - Operatorer Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger osv. Andre vil

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen

Læs mere

Dokumentation af programmering i Python 2.75

Dokumentation af programmering i Python 2.75 Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt

Læs mere

Undtagelseshåndtering i C#

Undtagelseshåndtering i C# Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide

Læs mere

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION

Læs mere

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

Læs mere

Hvilket sprog er hurtigst

Hvilket sprog er hurtigst Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet

Læs mere

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.

Læs mere

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er, at programmet skal registreres (programmet kan dog bruges i 30 dage, hvis det ikke

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

MS Visual Studio Basic 2010. En kort vejledning

MS Visual Studio Basic 2010. En kort vejledning Du kan hente programmet gratis her: MS Visual Studio Basic 2010 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express Tryk på Install Now og følg vejledningen. Indholdsfortegnelse

Læs mere

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse Udvidelse af MicroC compileren til at kunne håndtere struct- og union typer samt switch-, break- og continue statement. Yderligere er ovenstående konstruktioner anvendt til at indføre malloc og free kald

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Introduktion til funktioner, moduler og scopes i Python

Introduktion til funktioner, moduler og scopes i Python Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

Læs mere

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

Læs mere

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

! #!! $ % $! &  &'! & *+ !  $ $ !,-! $!.! $!  # 1!! &' ""# "" # $ % $ & " &'" & " "()" *+ " " $ $ *+" $ %"&'" "( "",- $. + /"&'"-0 $ " # 1 &' " +"% $ %'('" 2 ' ) )030 )030) * )033 " )033 // " " 1 1 41 ")035)036 5- " " " *+773,8 *+ % " " )035& " )036& " 1 %"

Læs mere

Sproget Rascal (v. 2)

Sproget Rascal (v. 2) Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er at programmet skal registreres, dette gøres ved at vælge menuen Help og derefter

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

Lær Python dag 1 - modul 1

Lær Python dag 1 - modul 1 Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& #

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& # !"$!!"$ % &$ '$ () %! %"!" & * function &+! & &, --.& / 0&. ) 123 45 / & & & 6 Sub CalcVecProduct() * &3.5 & 2 &6 / 7$ & & & "%&$&"! 2 " $ " 8 $ & $/ $ $" 9&6 Sub test() streng_y = "det her går " streng_y

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

Kursusarbejde 4 Grundlæggende Programmering

Kursusarbejde 4 Grundlæggende Programmering Kursusarbejde 4 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 19. december 2003 Indhold 1. Kode 2 1.1. Header-filer................................................. 2 1.1.1. Queue.h...............................................

Læs mere

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Ls venligst denne instruktions manual igennem inden brug af produktet Thank you for purchasing our product. This smart unit is not

Læs mere

Mircobit Kursus Lektion 1

Mircobit Kursus Lektion 1 Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator

Læs mere

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6

Læs mere

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11 ATTRIBUTES DYNAMIC PROGRAMMING MULTITHREADING Grundlæggende programmering Lektion 11 1 ATTRIBUTES Information om adfærd 2 ATTRIBUTES En attribut er en deklarativ tag, der bruges til at formidle information

Læs mere

30 Objekt-orienteret Programmering i Andre Sprog.

30 Objekt-orienteret Programmering i Andre Sprog. 30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.

Læs mere