C++ Programmering V. 0.99

Størrelse: px
Starte visningen fra side:

Download "C++ Programmering V. 0.99"

Transkript

1 Indholdsfortegnelse 1. Indledning Forudsætninger: Udeståender Start med C Det første C++ program Formatering af output Kommentarer Funktions prototyper Konstanter Inline funktioner Rækkevidde operatoren enumerations Link specifikation Overload Referencer for løkken i C Opgaver Klasser og objekter Objektets liv Overførsel af data til et objekt Konstant erklæringer Medlemmer defineret som static Friends Pointere This pointeren Afrunding Opgaver Nedarvning Den førstefødte Opgaver Multibel nedarvning Polymorfi Pointere og nedarvning Virtuelle funktioner Abstrakte klasser Hvorfor abstrakte klasser? Absktrakte destructorer Opgaver Introduktion til objektorienteret design Indkapsling Klassehirakiet Opgaver Sidst men ikke mindst Exceptions Operator overstyring Et eksempel...81 Sponsor: Ingeniørfirmaet Synkro Side 1 af 104

2 9.4 Opgaver...90 Appendix A Operatorer...91 A.1 Aretmetiske operatorer...91 A.2 Relations- og betingelsesoperatorer...91 A.3 Bitvise operatorer...91 A.4 Præcendens...92 Appendix C Standardbiblioteker for C Sponsor: Ingeniørfirmaet Synkro Side 2 af 104

3 1. Indledning Denne bog er en videreudvikling/tilpasning af den jeg udgav i 2001 med titlen C/C++, men her er kun C++ delen. Bogen udgives on-line som pdf fil, og kan frit benyttes og kopieres af alle som de ønsker det, delvis eller i uddrag. Ved kopiering skal der dog mindst kopieres en fuld side med header og footer, og der må ikke fjernes noget fra siderne. 1.2 Forudsætninger: Kendskab og færdigheder der svarer til on-line bogen (pdf-filen) C-programmering, der kan findes på Kapitel 1 er Kapitel 2 Kapitel 3 Kapitel 4 Kapitel 5 Sidst i bogen er et appendix, hvor der findes praktiske informationer i form af tabeller. C standardbiblioteker. Sponsor: Ingeniørfirmaet Synkro Side 3 af 104

4 1.3 Udeståender Der udestår først og fremmest en omredigering af kapitel og afsnitsnumre, lige nu har jeg bare taget dem fra det originale manuskript, derfor starter denne bog med kapitel 6. Så skal jeg have ændret outputtet så det passer med UNIX verdenen, altså, Linux, Apple og Android's måde at se verden på. Er du i MS verdenen er du velkommen til at bruge alting, men jeg gider ikke bruge mere tid på den verden, har været der, har prøvet det, nu har jeg så valgt UNIX. Har du valgt noget andet er du i din bedste ret til det, men kræv ikke at jeg også er der. Der udestår der en gennemgang af layout, så det hele bliver meget nemmere at læse. Som altid er kritik velkommen, men det er ikke ensbetydende med jeg altid er enig i den :) Henrik Kressner Sponsor: Ingeniørfirmaet Synkro Side 4 af 104

5 6 Start med C++ Efter vi har hygget os med C vil vi nu gå over til C++, der er en viderudvikling af C. Hvis vi kigger lidt på navnet på programmeringssproget, og tænker lidt på det vi har lavet hidtil, så kan vi opfatte C som en variabel, og ++ som en operator. Derved fremkommer, at C++ er C og så lidt mere, hvad der faktisk er sandt. Alt hvad der kan laves i C, kan også laves i C++, men ikke omvendt. C++ er C udviddet med objektorienteret programmering og nogle andre små godter. Dette kapitel vil gennemgå de små godter der kan siges at være en udvidelse af C, de resterende kapitler vil udelukkende beskæftige sig med den objektorienterede del af C Det første C++ program Det første program i ethvert programmeringssprog går ud på at skrive noget på skærmen. I C++ kan det se således ud. /* Filnavn = prg1.cpp */ #include <iostream.h> int main() cout << "Jeg tænker, ergo er jeg\n"; return 0; Figur C:\cpp prg1.cpp C:\prg1 Jeg tænker, ergo er jeg C:\ For at dette program skal kunne kompileres forlanger de fleste kompilere, at kildeteksten gemmes i en fil med ekstendet CPP, i dette tilfælde har vi valgt at kalde filen PRG1.CPP. Kompileringsprocessen er den samme som for C, find ud navnet på din c++ kompiler, og eksekver den med kildeteksten som argument. I forhold til C er der nogle ændringer. For det første inkluderes headerfilen iostream.h. i stedet for stdio.h Derudover virker den nye syntaks cout << "Jeg tænker, ergo er jeg\n" noget anderledes. cout er hvad der i C++ kaldes, en standard output stream, de 2 "mindre end" tegn betyder i denne sammenhæng, at data flyttes, fra strengen, til standard output, og det er skærmen. Vores første program skriver altså "Jeg tænker, ergo er jeg" på skærmen, og slutter af med et linieskifte. Vi kan også udskrive tal i C++, det gøres på følgende måde: Sponsor: Ingeniørfirmaet Synkro Side 5 af 104

6 /* Filnavn = prg2.cpp */ #include <iostream.h> C:\prg2 123C:\ int main() int vaerdi = 123; cout << vaerdi; return 0; Figur Programmet udskriver 123, uden linieskift. Bemærk, at C's formateringsparametre behøves blive benyttet. Vi kan udvide programmet til både at udskrive tekst og tal, det kan gøres således: /* Filnavn = prg3.cpp */ #include <iostream.h> int main() int vaerdi = 123; C:\prg3 Indholdet af vaerdi er 123 C:\ cout << "Indholdet af vaerde er " << vaerdi << '\n'; return 0; Figur Programmet sender 3 datatyper til standard output. Først en streng (Indholdet af vaerdi er ), derefter sendes et heltal (123), og til sidst en tegnkonstant nemlig '\n' Bemærk at der er trykket på enter lige efter det sidste gåseøje i linien: cout << "Indholdet af vaerdi er " Vi kan dele en linie blot vi gør det lige før, eller lige efter << operatoren. Programmet kan udviddes med en input funktion: Sponsor: Ingeniørfirmaet Synkro Side 6 af 104

7 /* Filnavn = prg4.cpp */ #include <iostream.h> void main() int vaerdi; C:\prg4 Indtast en værdi 246 Den indtastede værdi er : 246 C:\ cout << "Indtast en vaerdi : "; cin >> vaerdi; cout << "Den indtastede værdi er : " << vaerdi << '\n'; return 0; Figur Dette program beder først om at få indtastet en værdi, derefter udføres et linieskift, og til sidst udskrives resultatet, det er unægtelig nemmere end i C. >> operatoren betyder, at data hentes fra cin, der er standard input, og placerer det i variablen vaerdi. Det er muligt at bede om flere input i den samme linie, men det er ikke smart når vi arbejder emd standard input, da det ikke er muligt at prompte brugeren. Opgave Skriv et program der udskriver dit fornavn og dit efternavn på en linie. Opgave Skriv et program der udskriver dit fornavn på en linie, og dit efternavn på efterfølgende linie. Sponsor: Ingeniørfirmaet Synkro Side 7 af 104

8 6.2 Formatering af output. I C skulle vi bruge lidt kryptiske metoder for at formatere vores output, det er en del mere forståeligt i C++. I C++ er der 3 manipulatorer, der kan benyttes til at ændre udskriftformattet. De 3 manipulatorer er dec, oct og hex. De kan benyttes på følgende måde: /* Filnavn = prg5.cpp */ #include <iostream.h> int main() int vaerdi = 15; cout << dec << vaerdi << '\t' << oct << vaerdi << '\t' << hex << vaerdi; cout << '\n'; return 0; Figur C:\prg f C:\ Dette program udskriver først decimalværdigen af variablen vaerdi, derefter udskrives den octale værdig, og til sidst udskrives den hexadecimale værdig på skærnen. Vi benytter tabulring mellem udskrifterne for at skille dem lidt ad, og gøre output mere læselig. Opgave Skriv et program der beder om et tal fra brugeren. Derefter skal tallet udskrives som hex, decimal og octaltal på hver sin linie. Sponsor: Ingeniørfirmaet Synkro Side 8 af 104

9 6.3 Kommentarer Kommentarer i C++ kan udføres med /* for start og */ for slut kommentar, ganske som i C. Dette kan være en ganske upraktisk teknik, hvilket enhver der har ledt efter en fejl der skyldes et manglende */ kan skrive under på. Derfor er der udviklet en ny måde at kommentere på i C++. En Kommentar starter med // og afsluttes automatisk ved linieskift. Brug af kommentarer kan se således ud: /* Filnavn = prg6.cpp Demoprogram kan ikke kompileres */ // Program til demo af kommentarer #include <iostream.h> /* Dette er også en lovlig kommentar i C++ */ int main() char biltype[10]; // Erklær en streng cout << "Indtast biltypen : "; // Bed om input cin >> biltype; // Indlæs biltypen... // O.S.V return 0; Figur Som det fremgår af eksemplet, kan variabler i C++ erklæres på samme måde som i C 6.4 Funktions prototyper I C kan man undlade at erklære en funktion, før den benyttes. Der sker blot det, at selve funktionen også fungerer som erklæring. Dette er ikke tilladt i C++. Følgende vil give en kompilerfejl i C++. /* Filnavn = prg7.cpp */ // ****** FEJL testfunction HAR INGEN PROTOTYPE ****** #include <iostream.h> int main() testfunction; return 0; void testfunction()... Figur Sponsor: Ingeniørfirmaet Synkro Side 9 af 104

10 Vi kan få programmet kompileret ved at inføre prototyperne: /* Filnavn = prg8.cpp */ // ****** RIGTIGT testfunction har en prototype****** #include <iostream.h> void testfunktion() int main() testfunction; return 0; void testfunction()... Figur En anden løsning kan være at placere testfunction() før den kaldes, så er det nemlig ikke nødvendigt at have en prototype. Hvis en function er defineret i en anden fil, skal den have en prototype, i den fil hvorfra den kaldes. Prototypen skal stå i kildeteksten, før functionen kaldes. I C++ kan en funktions prototype initialisere de argumenter der er i functionen. Dette betyder, at når man kalder funktionen, kan man undlade at overføre parametre, herved vil funktionen benytte sine initialiseringsparametre. /* Filnavn = prg9.cpp */ #include <iostream.h> void display(int a = 1, char b = 'a'); int main() display(); display(3); display(5,'c'); return 0; C:\prg5 1 : a 3 : a 5 : c C:\ void display(int a, char b) cout << a << " : " << b << '\n'; Figur Ikke alle argumenter behøves udfyldes, men initering af argumenter skal altid foregå fra venstre mod højre, følgende er ikke lovligt. Da det andet argument ikke er initieret må det 3. argument ikke forsøges initieret. Sponsor: Ingeniørfirmaet Synkro Side 10 af 104

11 void display(int a = 1, char b, int c = 4); Men det er fuldt tilladt kun at initiere det første argument således. void display(int a = 1, char b = 'a', int); 6.5 Konstanter Variabler kan defineres som konstanter ved at benytte det reserverede ord const. Når en konstant erklæres skal den tilskrives, da en konstant i sagens natur kun kan tilskrives én gang. // KAN IKKE KOMPILERES #include <iostream.h> int main() const int testvar = 100; // Dette er i orden testvar = 25; Return 0; // Kompiler melder fejl, forsøg på at ændre konstant. En pointer kan også defineres som en konstant. Dette medfører, at det pointeren peger på kan ændres, men selve pointeren kan ikke ændres. Pointeren vil hele tiden pege på samme plads i hukommelsen. // Filnavn = konst1.cpp #include <iostream.h> int main() int tal = 10; int *const pegepind = &tal; C:\konst1 *pegepind = 12 C:\ *pegepind = 12; cout << "*pegepind = " << *pegepind << '\n'; return 0; Figur Dette program har defineret en konstant pointer, der peger på et hukommelseselement. I dette element står heltallet 10. Linien *pegepind = 12; tilskriver det pegepind peger på, med tallet 12. Dette er legalt, da pegepind ikke er forsøgt at pege på noget andet. Det vil derimod fremkalde en kompilerfejl, hvis pointeren forsøges at pege et andet sted hen end defineret. Sponsor: Ingeniørfirmaet Synkro Side 11 af 104

12 // Filnavn = konst2.cpp // KAN IKKE KOMPILERES #include <iostream.h> int main() int a = 10; int b = 12; int *const pegepind = &a; pegepind = &b; // FEJL! cout << "Indholdet af pegepind er : " << *pegepind; return 0; Figur Hvis en pointer erklæres til at pege på en konstant, vil det ikke være muligt at ændre indholdet af konstanten, ved at pege på den med pegepinden. Der er altså lukket for snedig tilskrivning. Et eksempel kan illustrere dette. // Filnavn = konst3.cpp #include <iostream.h> int main() char minstreng[] = "A"; char dinstreng[] = "B"; const char *pegepind = minstreng; C:\konst1 pegepind peger på : B C:\ pegepind = dinstreng; cout << "pegepind peger på : " << *pegepind << '\n'; return 0; Figur Dette program vil udskrive: En pointer der peger på en konstant, må ikke ændre indholdet af den konstant den peger på, følgende er ikke tilladt: Sponsor: Ingeniørfirmaet Synkro Side 12 af 104

13 // Filnavn = konst4.cpp // Programmet kan ikke kompileres #include <iostream.h> int main() char minstreng[] = "a"; char dinstreng[] = "b"; const char *pegepind = minstreng; *pegepind = 'c'; cout << "pegepind peger på : " << *pegepind; return 0; Figur Man kan altså sige, at en pointer der peger på en konstant er en skrivebeskyttet pointer, fordi det ikke er muligt at ændre det pointeren peger på. Sponsor: Ingeniørfirmaet Synkro Side 13 af 104

14 6.6 Inline funktioner C++ supporterer en udviddelse af C makroer. Disse makroer, kaldet inline, er lidt mere sofistikerede end C makroer, i det makroer blot er en simpel genkendelse af tekst, mens inline blive tjekket ved kompilering, således at en klassisk fejl undgåes. // Filnavn = inline.cpp #include <iostream.h> #define MAX(A,B) ((A) > (B)? (A) : (B)) C:\inline1 1. x = y = x = y = 21 C:\ inline int max(int a,int b) return (a > b)? a : b; int main() int i,x,y; x = 10; y = 20; i = MAX(x++,y++); cout << "1. x = " << x << "1. y = " << y << '\n'; x = 10; y = 20; cout << "2. x = " << x << "2. y = " << y << '\n'; return 0; Figur Den højeste værdi inkrementeres 2 gange i en makro, men udføres som forventet af en inline. Bortset fra dette fungerer inline funktioner som makroer. Sponsor: Ingeniørfirmaet Synkro Side 14 af 104

15 6.7 Rækkevidde operatoren I C kan man få fat i en global variabel ved at erklære den med det reserverede ord extern. C++ tilbyder en mulighed mere, nemlig rækkevidde operatoren ::. Med denne kan man definere at man vil benytte den globale variabel. // Filnavn = scope2.cpp #include <iostream.h> int alder = 18; int main() int alder = 67; variabel // Global variabel // Lokal C:\inline1 alder er = 67 men ::alder er = 18 C:\ cout << "alder er = " << alder << '\n'; cout << "men ::alder er = " << ::alder << '\n'; return 0; Figur Rækkevidde operatoren :: henviser altid til den globale variabel. Hvis variablen alder var defineret flere steder, evt. nestet, så ville ::alder stadig henvise til den globale variabel alder. Sponsor: Ingeniørfirmaet Synkro Side 15 af 104

16 6.8 enumerations Enumerations fungerer helt som i C, med den udviddelse, at man ikke behøves at bruge det reserverede ord enum, når først enumerationen er erklæret. // Filnavn = enum2.cpp #include <iostream.h> enum farve hjerter, kloer, ruder, spar ; C:\inline1 hjerter = 0 spar = 3 C: int main() farve kortfarve; kortfarve = hjerter; cout << "hjerter = " << kortfarve << '\n'; kortfarve = spar; cout << "spar = " << kortfarve << '\n'; return 0; Figur Sponsor: Ingeniørfirmaet Synkro Side 16 af 104

17 6.9 Link specifikation Selv om C++ skal kunne kompile en C kildetekst, er det ikke sikkert, at alle header filer kan kompiles. For at sikre dette, kan et include kald defineres som extern "C". Dette medfører at den inkluderede fil, vil blive kompilet af en C kompiler. // Filnavn = externc.cpp // KAN IKKE KOMPILES #include <iostream.h> extern "C" #include <stdio.h> extern "C" #include <mitlib.h> #include <ditlib.h> void main() printf("hallo verden \n"); Figur Flere C headerfiler kan inkluderes ved at sætte dem ind i en blok, som vist med mitlib.h og ditlib.h. Hvis du får mærkelige problemer når du kompilerer et C program med en C++ kompiler, så skal du bruge extern C i forbindelse med alle dine C inkludelinier. Sponsor: Ingeniørfirmaet Synkro Side 17 af 104

18 6.10 Overload Ved at "overloade" en function, kan man opnå flere funktioner, med samme navn. Rigtigt brugt kan dette gøre det nemmere at programmere, og nemmere at læse et program. Forkert brugt, kan overloadning gøre et program ganske ulæseligt. Lad os se på et eksempel hvor overloadning virker naturlig. Vi ønsker at skrive en funktion max(a,b). Functionen skal returnere det højeste af de 2 tal a og b. Problemmet er, vi ved ikke om a og b er int eller float, derfor: // Filnavn = overload1.cpp #include <iostream.h> int max(int a, int b); float max(float a, float b); C:\inline1 Integer sammenligning 2 Float sammenligning 3.23 C:\ int main() int t1,t2; float t3,t4; t1 = 1; t2 = 2; t3 = 1.23; t4 = 3.23; cout << "Integer sammenligning! " << max(t1, t2) << '\n'; cout << "Float sammenligning " << max(t3, t4) << '\n'; return 0; int max(int a, int b) return (a > b)? a : b; float max(float a, float b) return (a > b)? a : b; Figur C++ kan se forskel, blot parameterlisten for funktionen er forskellige, enten i antallet, eller i typen. 2 Funktioner må ikke have samme navn, hvis deres eneste forskel er den type der returneres. C++ ser kun på parameterlisten, ikke på returværdier. Sponsor: Ingeniørfirmaet Synkro Side 18 af 104

19 6.11 Referencer Referencer benyttes til at overføre parametre til funktioner, samt til at returnere data fra funktioner. En reference kan betragtes som et alias for en variabel. Sådan at forstå, at alt hvad der sker med et alias, sker med den variabel aliaset refererer til. Et lille eksempel kan belyse sagen. // Filnavn = reference1.cpp #include <iostream.h> int main() int mittal = 1; int &aliastal = mittal; cout << "mittal = " << mittal << '\n'; cout << "aliastal = " << aliastal << '\n'; mittal++; cout << "mittal = " << mittal << '\n'; cout << "aliastal = " << aliastal << '\n'; aliastal++; cout << "mittal = " << mittal << '\n'; cout << "aliasttal = " << aliastal << '\n'; return 0; Figur C:\reference1 mittal = 1 aliastal = 1 mittal == 2 aliastal = 2 mittal = 3 aliastal = 3 C:\ Vi kan se, at alt hvad der sker med mittal, sker samtidig og identisk på aliastal, dette skyldes at aliastal er defineret som en reference. Denne defenition sker i linien: int &aliastal = mittal; En reference erklæring kan altså erkendes, når et & starter navnet på en variabel, og der umiddelbart inden er erklæret en type. Navnet på variablen skal efterfølges med navnet på den variabel der refereres til. Det er nærligende at mene, at en reference kan forveksles med en addresse. Dette er dog ikke muligt hvis man holder sig følgende for øje. int *pind; // Erlærer en pointer til int int &alias = i; // Erklærer alias som refernce til i. pind = &i; // pointeren pind peger nu på i's addresse. I det ovenstående eksempel er det nødvendigt at initialisere referencen når den erklæres. Dette gøres ved at tilskrive referencen aliastal med indholdet af variablen mittal. Sponsor: Ingeniørfirmaet Synkro Side 19 af 104

20 En reference skal initieres, med mindre: - Den er medlem af en klasse. I så fald må man formode, at klassens constructer sørger for initiering. - Den er erklæret som parameter i en functions erklæring. I det referencen så vil blive initieret nå functionen kaldes. - Den er en erklæret som en return type for en function. I så fald sørger functionen selv for at initiere reference. - Den er erklæret med extern, i så fald vil referencen være initieret et andet sted. Når en reference benyttes som parameter i en function, fungerer det på nogenlunde samme måde, som når et PASCAL program benytter VAR erklæringer i en Procedure's parameterliste. Funktionen (Proceduren) arbejder på selve variablen. Dette betyder at en funktion kan returnere et resultat, i en ændret parameter. Dette kan være uhensigtsmæssigt, da det kan gøre koden sværere at læse. Det må dog være op til den enkelte programmør at vurdere, hvorledes man ønsker at benytte referencer. Her er et eksempel. I programmet reference2.cpp vises hvordan structurer og funktioner kan bruge referencer. Programmet starter med at erklære struct'en record. I samme arbejdsgang oprettes et tilfælde ved navn datablok, og data initialiseres. I starten af main udskrives indholdet af datablok, og test1 kaldes. Funktionen udskriver data uden at ændre dem, og fungerer helt forudsigeligt. Derefter kaldes test2 der lægger en til tal og udskriver indholdet på skærmen. Her er der heller ikke de store overaskelser. Nå programmet returnerer til main, udskriver main indholdet af datablok, og vi kan nu se, at test2's manipulation også har virkning her, som om vi havde overført en pointer til funktionen. Slutteligt kaldes test3, der lægger en til tal efter at have skrevet værdien ud på skærmen, og returnerer struct'en til main. Som det ses af den sidste linie i main får vi også på denne måde fat i de manipulerede data. Sponsor: Ingeniørfirmaet Synkro Side 20 af 104

21 // Filnavn = reference2.cpp #include <iostream.h> struct record int tal; char navn[12]; datablok = 10, " Petersen" ; C:\reference2 10 Petersen 10 Petersen Petersen Petersen 12 C:\ void test1(struct record &minrec) cout << minrec.tal << minrec.navn << '\n'; void test2(struct record &minrec) minrec.tal++; cout << minrec.tal << minrec.navn << '\n'; struct record &test3(struct record &minrec) cout << minrec.tal << minrec.navn << '\n'; minrec.tal++; return minrec; int main() cout << datablok.tal << datablok.navn << '\n'; test1(datablok); cout << datablok.tal << '\n'; test2(datablok); cout << datablok.tal << '\n'; datablok = test3(datablok); cout << datablok.tal << '\n'; return 0; Figur Sponsor: Ingeniørfirmaet Synkro Side 21 af 104

22 Opgave Skriv en funktion findop(char *s). Når den kaldes skal den søge den streng *s peger på gennem, indtil den finder en operator for en af de 4 regnearter. Når operatoren er fundet, skal den returnes til den kaldende function, via en reference til en char. Opgave Skriv en function filter(char *s). Når den kaldes, skal den søge den streng gennem som *s peger på. Funktionen skal filtrere det første heltal i strengen ud, og returnere det via en reference af typen int. Opgave Udvid opgave og opgave , således at du har et program, der beder om et input. Dette input skal være et regnestykke, baseret på de 4 regnearter. Når der trykker på enter, skal programmet filtrere operator, samt de 2 argumenter fra, og udføre den aktuelle beregning. Sponsor: Ingeniørfirmaet Synkro Side 22 af 104

23 6.12 for løkken i C++ I C++ er det gjort muligt at erklære variabler inde i en for løkke således. for (int i = 0; i < MAX; i++)... Argumentet for at tillade denne teknik er, at det kan være en fordel at erklære variablen der hvor den skal bruges, så kan man se variabelerklæringen mens man arbejder med den. Det kan dog også være en svaghed, da man risikerer at bruge samme variabelnavn flere gange, og dermed tabe overblikket. I ovenstående tilfælde er rækkevidden af variablen i selve løkken, og intet andet. Det må være op til personligt behag om man vil bruge denne teknik eller ej. I denne bog bruges teknikken når det er praktisk, og ellers ikke, men det er en af de fornøjelige småting der åbner mulighed for lidt personlighed i kildeteksterne. Sponsor: Ingeniørfirmaet Synkro Side 23 af 104

24 6.13 Opgaver Opgave Skriv en et program, der henter indtastede data fra standard input, indlæser det i en variabel, og derefter udskriver variablen til standard output. Opgave Skriv en function, der har 2 konstanter a og b. Functionen skal udskrive forskellen på de 2 konstanter i hexadecimalt format. Opgave Skriv et program der skal have 3 strengkonstanter. Programmet skal ved hjælp af en pointer udskrive de 3 strengkonstanter, én linie ad gangen. Opgave Skriv en function alder(a,b). Funktionen skal aflevere aldersforkellen (b - a). Hvis a ikke bliver overført skal a = 18. Hvis b ikke overføres, skal b = 67. Opgave Skriv et program speed. Programmet skal have en global konstant mspeed = 110. Programmet skal have en function ved navn nufart(int mspeed). Functionen skal trække den lokale mspeed fra den globale. Hvis resultattet er over nul, skal functionen aflevere en pointer til sætningen: "Advarsel, du kører for stærkt.", ellers skal functionen aflevere en pointer til ordet OK. Hovedprogrammet skal kalde mspeed, og udskrive den tekst pointeren peger til. Opgave Skriv de funktioner der skal til for at udføre de fire regnearter (+-*/). Functionens navn er regn(int a,int b, char operator). a og b skal kunne være int eller float. Functionen skal aflevere resultattet af beregningen til den kaldende function. Opgave Skriv en funktion beregn(char a[]). Funktionen modtager strengen a, (faktisk en pointer til strengen) i denne skal et regnestykke modtages defineret på følgende form. <tal1>operator<tal2> Funktionen skal udskille tal1 til et int, operatoren til en char, og tal2 til et integer. Derefter skal functionen lade regn(a,b,operator) udføre beregningen, og udskrive resultatet. Opgave Udvid programmet fra opgave således at det også kan håndtere kommatal. Sponsor: Ingeniørfirmaet Synkro Side 24 af 104

25 7 Klasser og objekter Lad os starte med defenitionen: En klasse er en definerbar type Et objekt er et tilfælde af en klasse. Klasser er en datatype, der ikke findes i C. Klasser kan og vil normalt indeholde både data og kode. En klasse er skabelonen for et objekt, på samme måde som en struct erklæring kan bruges til at skabe mange arkivkort. En klasse bruges til at samle alt beslægtet under et sæt vinger. Herfra kan man så føde andre klasser, der har til opgave, at løse definerede delopgaver inden for hovedopgaven. Man kan sammenligne en klasse med et negativ. Ud fra et negativ (klasse) kan vi skabe mange ens positive billeder (objekter). 7.1 En simpel klasse For at hugge hul på isen, så lad os skabe en klasse der kan omregne temperaturen fra Fahrenheit til Celcius, i intervalet Vi starter med at lave en headerfil der skal indeholde erklæringer. // Filnavn = f_til_c1.h Headerfil class celsius public: celsius(int fahr); void showtemp(); ~celsius(); private: int resultat; ; // Constructor // Destructor Figur Det ser dette jo temmelig anderledes ud hvis man sammenligner med C. Til at starte med har vi en klasseerklæring, klassens navn er celsius, hvilket jo straks burde give accosiationer. Det handler altså om temperatur. celsius er enype som vi netop har defineret. Den efterfølgende blok indeholder et par nye begreber såsom Constructer, Destructor, public og private. Lad os starte med public og private. public er et reserveret ord der betyder, at det efterfølgende kan ses af hele verden. hvis intet defineres er private default (underforstået). private kan altså udelades, men det hjælper på læseligheden, hvis det skrives. private er et reserveret ord der betyder, at det efterfølgende er privat. Det betyder at private Sponsor: Ingeniørfirmaet Synkro Side 25 af 104

26 variabler eller funktioner kun kan ses af klassen og dens medlemmer. Man kan bruge public og private så ofte man ønsker inde i en klasse erklæring, men det er god orden, og hjælper på læseligheden af programmet, hvis man kun benytter hvert ord en gang per klasse. Constructor: Dette er det sted hvor klassens elementer initialiseres. Alle klasser har en construktor, hvis programmøren undlader den vil compilereren lave sin egen constructor. Constructoren kaldes hver gang klassen erklæres og ellers aldrig. Ved rigtig brug af constructoren for en klasse kan man sikre sig, at alle elementer er korrekt initialiseret. Constructoren skal have samme navn som klassen. Der kan defineres flere constructorer, blot de har forskellige parametre. Constructore kan med andre ord overloades. En constructor kan ikke returnere værdier, den skaber et object. Destructor: Denne har den modsatte opgave af Constructoren. Hvor constructoren bygger op, river destructoren ned. Det kan lyde destruktivt, men er faktisk bare en måde at sikre sig mod forurening, i det destructoren ryder op efter klassen, frigiver hukommelse m.m. Der kan kun være en destructor per class. En destructor kan ikke modtage og aflevere data. Destructoren kan ikke overloades. En klasse definition afsluttes med et semikolon. Man kan sammenligne klassen med en samling af prototyper. I C++ er det ikke noget man må gøre, men noget man skal gøre. Hele klassens indhold skal erklæres i klasseerklæringen, senere skal klassen implementeres, det vil ske i filen f_til_c1.cpp. Det første vi lægger mærke til i den fil er gode gamle main. Her er intet ændret, main skal være der. (I nogle kompilermiljøer er main erstatet af en funktion med beslægtet navn, den kan eksempelvis hedde winmain(), det er ikke lige efter C++ standarden, men funktionaliteten er den samme.) Sponsor: Ingeniørfirmaet Synkro Side 26 af 104

27 // Filnavn = f_til_c1.cpp #include <iostream.h> #include "f_til_c1.h" C:\f_til_c1 celcius = 93 C:\ celsius::celsius(int fahr) // Constructor fahr = (fahr > 0)? fahr : 0; fahr = (fahr < 300)? fahr : 300; resultat = 5*(fahr -32)/9; void celsius::showtemp() cout << "celcius = " << resultat << '\n'; celsius::~celsius() // Intet // Destructor int main() celsius mintemp(200); mintemp.showtemp(); return 0; Figur Når klassen er defineret, skal de enkelte medlemmers funktion beskrives. Vi starter med constructoren. En klasses constructor implementeres ved klassens navn, efterfulgt af to koloner, efterfulgt af klassens navn igen. Herefter følger en evt. parameterliste I dette eksempel vil konstruktoren sikre, at ingen værdier af variablen fahr er større end 300, og ingen er mindre end 0. Derefter udfører construktoren beregningen 5*(fahr-32)/9 og tilskriver resultatet af beregningen til den private variabel resultat. Det er ikke den normale måde at bruge en construktor på, men det belyser en klasses funktion. Sponsor: Ingeniørfirmaet Synkro Side 27 af 104

C++ Gratis PDF-udgave Forlaget Libris 1996-2004

C++ Gratis PDF-udgave Forlaget Libris 1996-2004 C++ Gratis PDF-udgave Forlaget Libris 1996-2004 Gratis PDF-udgave af C++ I 1996 udgav vi for første gang C++ af Kris Jamsa. Første udgave var på bogform, som dengang kostede kr. 228,-. I 1999 udgav vi

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

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

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

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

Med TI-89 / TI-92 Plus kan du også sammenligne eller manipulere binære tal bit for bit.

Med TI-89 / TI-92 Plus kan du også sammenligne eller manipulere binære tal bit for bit. Kapitel 20: Talsystemer 20 Resumé af talsystemer... 344 Indtastning og omregning af talsystemer... 345 Udførelse af matematiske beregninger med hexadecimale og binære tal... 346 Sammenligning eller manipulation

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

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

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

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

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

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser 3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

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

Karakterer og fritagelse 02-04-2008/version 1.0/Steen Eske Christensen

Karakterer og fritagelse 02-04-2008/version 1.0/Steen Eske Christensen Karakterer og fritagelse 02-04-2008/version 1.0/Steen Eske Christensen Indhold Ændringer Centrale begreber Generelt Arbejdsgange Vejledningen består af 3 dele, som kan læses hver for sig. Du kan derfor

Læs mere

Brugervejledning til Kørebog for Pocket PC

Brugervejledning til Kørebog for Pocket PC Brugervejledning til Kørebog for Pocket PC Denne vejledning beskriver kort anvendelsen af Kørebog for Pocket PC version 3.0 Programmet giver mulighed for registrering af den daglige kørsel. Registreringen

Læs mere

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13 1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker

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

Optimering af fraværsregistrering

Optimering af fraværsregistrering Journal Optimering af fraværsregistrering Eksamensprojekt i Programmering C, klasse 3.4, 2011 AFLEVERET 09-05-2014 Indhold Abstract... Fejl! Bogmærke er ikke defineret. Problemformulering... 2 Produktet...

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

poedit og oversættelse af sprogfiler

poedit og oversættelse af sprogfiler poedit og oversættelse af sprogfiler af Georg S. Adamsen WordPress.Blogos.dk 2009 http://kortlink.dk/wordpressblogosdk/6g38 1 af 11 14-04-2009 14:55 Jeg får af og til spørgsmål om, hvordan man bruger poedit,

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN 5. OPSÆTNING DOKUMENTSKABELONER Under fanen Dok. skabeloner kan du arbejde med de skabeloner som du har i systemet, eller du kan oprette nye. I denne vejledning kigger vi på hvordan du kan tilrette selve

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering Kom godt igang med Inventar registrering (InventoryDB) (Med stregkodesupport) programmet fra PetriSoft Introduktion... 1 Inventar registrering... 2 Værktøjsudleje... 3 Service database til reperationer

Læs mere

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin August 2009 - juni 2010 Institution HTX Sukkertoppen/Københavns Tekniske Skole Uddannelse Fag og niveau Lærer(e)

Læs mere

Beredskab TNG. Beredskab TNG er en opgradering af det "gamle" beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0.

Beredskab TNG. Beredskab TNG er en opgradering af det gamle beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0. Beredskab TNG Beredskab TNG er en opgradering af det "gamle" beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0. Beredskab TNG... 1 Kom godt i gang... 2 Redigér beredskabsdokumentet...

Læs mere

Viditronic NDVR Quick Guide. Ver. 2.0

Viditronic NDVR Quick Guide. Ver. 2.0 Viditronic NDVR Quick Guide Ver. 2.0 1 Indholdsfortegnelse 1. HOVEDMENU 3 1.1 START 5 1.2 AKTIVITETSINDIKATOR: 7 1.3 INFORMATIONS VINDUE: 7 1.4 PTZ KAMERA KONTROL: 7 1.5 SKÆRMMENU 8 1.5.1 AKTIVER BEVÆGELSE:

Læs mere

JTA-DynamicsPDF. til. Microsoft Dynamics C5 vers. 3 SP3 eller højere. JTA-Data Jylland Vinkelvej 108a 8800 Viborg Tlf. 86672024 www.jta-jylland.

JTA-DynamicsPDF. til. Microsoft Dynamics C5 vers. 3 SP3 eller højere. JTA-Data Jylland Vinkelvej 108a 8800 Viborg Tlf. 86672024 www.jta-jylland. JTA-DynamicsPDF til Microsoft Dynamics C5 vers. 3 SP3 eller højere. www.jta-jylland.dk 1. Introduktion til JTA-DynamicsPDF. JTA-DynamicsPDF til Microsoft Dynamics C5 er et ekstra modul, som er udviklet

Læs mere

VEJLEDNING. Hastigheden for afspilning kan ændres og det er muligt at lave hurtig spring frem og tilbage

VEJLEDNING. Hastigheden for afspilning kan ændres og det er muligt at lave hurtig spring frem og tilbage VEJLEDNING DANDAS-TV Viewer er lavet til håndtering af TV-inspektion. (Skærm billeder og funktionalitet kan afvige fra den seneste version af programmet. DB adgang er ikke inkluderet) Programmet kan Indlæse

Læs mere

2 Abstrakte datatyper.

2 Abstrakte datatyper. 2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener,

Læs mere

EVALUERING I SURVEYXACT TRIN FOR TRIN

EVALUERING I SURVEYXACT TRIN FOR TRIN EVALUERING I SURVEYXACT TRIN FOR TRIN LÆR AT TACKLE 2015 KOMITEEN FOR SUNDHEDSOPLYSNING 1 INDLEDNING Komiteen for Sundhedsoplysning stiller SurveyXact et internetbaseret redskab til kvalitetssikring til

Læs mere

Brugersiderne for renteberegninger. Indhold. 1. Indledning. Anvendelse af. (Version 28. september 2014)

Brugersiderne for renteberegninger. Indhold. 1. Indledning. Anvendelse af. (Version 28. september 2014) Anvendelse af Brugersiderne for renteberegninger. (Version 28. september 2014) Indhold Brugersiderne for renteberegninger.... 1 1. Indledning... 1 2. Forudsætninger... 4 3. Indtastning af udbetaling/skyldigt

Læs mere

Vejledning til Turneringsregneark for Kidsvolley Level 3-4, TeenVolley & Let s Volley

Vejledning til Turneringsregneark for Kidsvolley Level 3-4, TeenVolley & Let s Volley Vejledning til Turneringsregneark for Kidsvolley Level 3-4, TeenVolley & Let s Volley Undertegnede har for DVBF udviklet det regnearksbaserede turneringssystem, som vi benytter til afvikling af kidsvolley

Læs mere

Kort introduktion til Google.

Kort introduktion til Google. Google Side 1 af 10 Kort introduktion til Google.... 2 Tilpas din søgning... 2 Generelle Tips... 2 Udelukkelse af ord... 2 Brug af *... 3 Sætningssøgninger... 3 Jeg Føler Mig Heldig... 3 Avanceret søgning...

Læs mere

Vejledning til. eindkomst. i FagLøn

Vejledning til. eindkomst. i FagLøn Vejledning til i FagLøn 3. december 2008 I FagLøn INDHOLD 1... 1 Rekvirere eskattekort... 1 Gen-rekvisition af... eskattekort 3 Manuel rekvisition af eskattekort... 4 Hente/indlæse eskattekort... 5 Indberette...

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

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

Vejledning til udskrivning af etiketter/labels og konvolutter i Blåt Medlem

Vejledning til udskrivning af etiketter/labels og konvolutter i Blåt Medlem Vejledning til udskrivning af etiketter/labels og konvolutter i Blåt Medlem Blåt Medlem giver mulighed for at udskrive etiketter/labels og kuverter til medlemmerne af den enhed man er medlemsansvarlig

Læs mere

Projekt i Programmering C Menu til hjemmeside.

Projekt i Programmering C Menu til hjemmeside. Projekt i Programmering C Menu til hjemmeside. 10-12-2004 Holstebro HTX Bent Arnoldsen Synopsis. Projektet her er en menu til hjemmesider, som er lavet så den er let at tilrette, når man tilføjer eller

Læs mere

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Indholdsfortegnelse Introduktion... 2 Definitioner... 2 Generelt... 3 Oprettelse af en skabelon... 4 Sidetypeskabeloner... 5 Globale displaymoduler...

Læs mere

ninasoft Micro Temp. Vandtæt miniature temperatur datalogger.

ninasoft Micro Temp. Vandtæt miniature temperatur datalogger. ninasoft Micro Temp. Vandtæt miniature temperatur datalogger. Betjeningsvejledning Micro Temp. Datalogger. Side 1. Micro Temp. er en 1 kanals temperatur datalogger, der leveres i et vandtæt rustfrit kabinet,

Læs mere

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4 Maskine Udlejning 15. oktober 2010 Jacob Weng, Jeppe Boese og Mads Anthony Roskilde Tekniske Gymnasium Udlejningsvirksomhed 3.4 Indholdsfortegnelse Problemformulering:... 2 Planlægning:... 2 Analyse af

Læs mere

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. 10) til heltal (10). if (udtryk) else Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer,

Læs mere

Matador. Hvert hus koster: 2000 Et hotel koster: 2000 + 4 huse Pantsætningsværdien er 2000 kr.

Matador. Hvert hus koster: 2000 Et hotel koster: 2000 + 4 huse Pantsætningsværdien er 2000 kr. Matador Problembeskrivelse Matador består af en spilleplade med 40 felter, biler (som udgør spillebrikker), to terninger, huse, hoteller, lykkekort, pengesedler og skødekort. Hvert felt har et nummer og

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

Læs mere

Vejledning til Kilometer Registrering

Vejledning til Kilometer Registrering Vejledning til Kilometer Registrering iphone Appen som holder styr på dit firma og privat kørsel. Udviklet af Trisect Development 2011. www.trisect.dk For iphone version 4.2 og nyere. Med Kilometer Registrering

Læs mere

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.

Læs mere

Bilagskladder kaldes ved at vælge menupunktet Regnskab -> Kladde eller klikke på favoritikonet Bilagskladder på Winfinans skrivebordet.

Bilagskladder kaldes ved at vælge menupunktet Regnskab -> Kladde eller klikke på favoritikonet Bilagskladder på Winfinans skrivebordet. Bilagskladde Bilagskladder kaldes ved at vælge menupunktet Regnskab -> Kladde eller klikke på favoritikonet Bilagskladder på Winfinans skrivebordet. Navigering i kladder flytter fra felt til felt.

Læs mere

SMS menuen 10.1. Generelt Rambøll SMS eller Beredskabsalarm er et modul som er udviklet til at sende SMS beskeder til forbrugeren via Blue Idea.

SMS menuen 10.1. Generelt Rambøll SMS eller Beredskabsalarm er et modul som er udviklet til at sende SMS beskeder til forbrugeren via Blue Idea. SMS menuen 10.1 10. SMS MENUEN Generelt Rambøll SMS eller Beredskabsalarm er et modul som er udviklet til at sende SMS beskeder til forbrugeren via Blue Idea. Systemet er enkelt at benytte. Rambøll FAS

Læs mere

Huskeliste Telefon/Internetaflæsning

Huskeliste Telefon/Internetaflæsning Da aflæsning af vandmåleren med Telefon/Internet normalt kun foretages en gang om året, kan det være svært at huske alle detaljer i arbejdsgangen med systemet. Med tiden er Rambøll FAS og Telefon/Internet

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Kapitel 2 Tal og variable

Kapitel 2 Tal og variable Tal og variable Uden tal ingen matematik - matematik handler om tal og anvendelse af tal. Matematik beskæftiger sig ikke udelukkende med konkrete problemer fra andre fag, og de konkrete tal fra andre fagområder

Læs mere

Kursuskatalog 2012 TwinCAT Basic og Extended

Kursuskatalog 2012 TwinCAT Basic og Extended Kursuskatalog 2012 TwinCAT Basic og Extended Basic Modul 1 Software Kursus K120101 K120102 K120103 K120104 K120105 K120106 Dato 31.1-1.2.12 6.-7.3.12 8.-9.5.12 21.-22.8.12 2.-3.10.12 20.-21.11.12 Modul

Læs mere

Skifte til Excel 2010

Skifte til Excel 2010 I denne vejledning Microsoft Excel 2010 ser meget anderledes ud end Excel 2003, og vi har derfor oprettet denne vejledning, så du hurtigere kan komme i gang med at bruge programmet. Læs videre for at få

Læs mere

Tilpas: Hurtig adgang

Tilpas: Hurtig adgang Tilpas: Hurtig adgang Genveje, Se skærmtips Se tips Hold alt tasten nede. Og brug bogstaver Word Fanen Filer PDF dokument Brug skabelon Visninger Husk Luk ved fuldskærmsvisning Brug zoom skyder Marker,

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

GUIDE TIL PR VIA SMS Denne guide indeholder information om:

GUIDE TIL PR VIA SMS Denne guide indeholder information om: GUIDE TIL PR VIA SMS Denne guide indeholder information om: Hvordan du samler klubbens/foreningens medlemmer i et Excel ark Hvordan du kan bruge dette Excel ark til at sende sms ud til alle på listen via

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

Kontraktbaseret Design. Anker Mørk Thomsen Kontraktbaseret Design Anker Mørk Thomsen 5. marts 2014 -2 Kontraktbaseret Design Anker Mørk Thomsen 1. udgave ISBN: 9788740491500 Forord Bogen er blevet til gennem undervisning i faget Kontraktbaseret

Læs mere

Bogfunktionen eller Slægtsbogen i FTM

Bogfunktionen eller Slægtsbogen i FTM Bogfunktionen eller Slægtsbogen i FTM En blandt mange af Family Tree Maker s styrker er evnen til at præsentere data på mange forskellige måder, og i dette skrift vil bogfunktionen blive gennemgået. Funktionen

Læs mere

Efficient Position Updating

Efficient Position Updating Efficient Position Updating Pervasive Positioning, Q3 2010 Lasse H. Rasmussen, 20097778 Christian Jensen, 20097781 12-03-2010 1 Introduktion Denne rapport har til formål at beskrive implementeringen og

Læs mere

1. Opbygning af et regneark

1. Opbygning af et regneark 1. Opbygning af et regneark Et regneark er et skema. Vandrette rækker og lodrette kolonner danner celler, hvori man kan indtaste tal, tekst, datoer og formler. De indtastede tal og data kan bearbejdes

Læs mere

Kort om CoinDB (Mønt- og seddelsamling):

Kort om CoinDB (Mønt- og seddelsamling): Kom godt i gang med CoinDB programmet fra PetriSoft (Holder styr på din Mønt- seddel- eller frimærkesamling) Kort om CoinDB (Mønt- og seddelsamling): CoinDB er et Windows program, der anvendes af mønt-

Læs mere

vejledning sådan ARBejdeR du i ebg s RAppoRTvæRKTøj

vejledning sådan ARBejdeR du i ebg s RAppoRTvæRKTøj vejledning sådan arbejder du i ebg s rapportværktøj Vejledning for 2013/2014 Sådan arbejder du i EBG's rapportværktøj www.business-games.dk Indholdsfortegnelse: Forord... 2 Login... 2 Rapportværktøjet...

Læs mere

Du skal have en Google konto for at kunne anvende Webalbum! Har du ikke det, så får du her en kort orientering om, hvorledes du kan få en konto.

Du skal have en Google konto for at kunne anvende Webalbum! Har du ikke det, så får du her en kort orientering om, hvorledes du kan få en konto. Indhold Webalbum...2 Google-konto...2 Brug af webalbum...5 Overføre billeder til album...5 Se og bruge sine billeder i webalbummet...6 E-mail...9 Udskriv...12 Bestil udskrifter...13 Blog This...13 Collage...14

Læs mere

Kom godt i gang med Dyreregistrering

Kom godt i gang med Dyreregistrering Kom godt i gang med Dyreregistrering Denne vejledning er tænkt som en hjælp til, at landmandsbrugere hurtigt kan komme i gang med Dyreregistrering. Derfor er kun de mest nødvendige funktioner beskrevet.

Læs mere

Crash Course i Programmering. HumTek, RUC

Crash Course i Programmering. HumTek, RUC Crash Course i Programmering HumTek, RUC Kursus mål At give en basal introduktion til programmering i sproget Processing At give et overblik over sprogets potentiale At have det sjovt :-) Kursus form Meget

Læs mere

Vejledning for opdatering af hjemmesiden opbygget med. KlubCMS

Vejledning for opdatering af hjemmesiden opbygget med. KlubCMS Vejledning for opdatering af hjemmesiden opbygget med KlubCMS Indholdsfortegnelse Indhold Indholdsfortegnelse... 2 Indledning... 3 Lidt generelt om KlubCMS... 3 Sideopbygning:... 4 Brugere/Brugergrupper...

Læs mere

MANUAL. Siteloom CMS

MANUAL. Siteloom CMS MANUAL Siteloom CMS www.hjerteforeningen.dk/cms Brugernavn: Password: 3. oktober, 2013 BASIS FUNKTIONER 1. Kalender... 4 1.a. Opret... 5 1.b. Rediger eller slet... 9 2. Sider...12 2.a. Opret side...13

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

Hvilke maskiner kan komme med på nettet. Før en maskine kommer med på Maskinbladet, skal modeloplysninger være udfyldt.

Hvilke maskiner kan komme med på nettet. Før en maskine kommer med på Maskinbladet, skal modeloplysninger være udfyldt. Maskiner på Maskinbladet online Det er muligt at få både nye og brugte maskiner med på Maskinbladet online. Der dannes en xml fil der overføres til Maskinbladet, som så opdaterer deres internet side over

Læs mere

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Introduktion Indtastning Funktioner Scripts Optimering. Matlab - robert@math.aau.dk http://www.math.aau.dk/ robert/teaching/2010/matlab 9. august 2010 1/39 Disposition 1. Lidt om. 2. Basiskursus. 3. Opgaver. 4. Mere til basiskursus. 5. Opgaver. 2/39 MATLAB = MATrix

Læs mere

Vejledning i brug af Interbook (Frederiksberg) til brugere med adgangskode

Vejledning i brug af Interbook (Frederiksberg) til brugere med adgangskode Vejledning i brug af Interbook (Frederiksberg) til brugere med adgangskode Udarbejdet af Kultur & Fritid, februar 2010. - 1 - Hvad er Interbook?...- 3 - Brugernavn og kodeord...- 3 - Startsiden...- 3 -

Læs mere

WinDCCD Brugervejledning. Indhold. Adgangskontrol...2

WinDCCD Brugervejledning. Indhold. Adgangskontrol...2 Indhold Adgangskontrol...2 WinDCCD Hovedmenu...3 Information på tværs...3 Opret generel information...3 Slet generel information...3 Patienter...4 Patienter...4 Sådan filtrerer du data...4 Sådan redigerer

Læs mere

Først skal du oprette dig i systemet, d. v. s. du skal have en såkaldt Googlekonto bestående af en mailadresse og et kodeord.

Først skal du oprette dig i systemet, d. v. s. du skal have en såkaldt Googlekonto bestående af en mailadresse og et kodeord. Gmail Indhold Indhold...1 Introduktion...2 Opret dig i systemet...2 At skrive mails...5 Sende en mail til flere personer...8 Vedhæfte en fil...9 Kladde...10 Signatur...11 Modtagne mails...12 Stjernemarkering...14

Læs mere

Word-kursus. Denne opgave går ud på at lære nogle af de funktioner, der skal til for at få værktøjet i orden til at lave en god teknisk rapport.

Word-kursus. Denne opgave går ud på at lære nogle af de funktioner, der skal til for at få værktøjet i orden til at lave en god teknisk rapport. Word-øvelse: Denne opgave går ud på at lære nogle af de funktioner, der skal til for at få værktøjet i orden til at lave en god teknisk rapport. Nogle af de gennemgåede Word-funktioner er nok kendt af

Læs mere

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

MANUAL. Siteloom CMS

MANUAL. Siteloom CMS MANUAL Siteloom CMS www.hjerteforeningen.dk/cms Brugernavn: Password: 13. marts, 2014 BASIS FUNKTIONER 1. Kalender... 4 1.a. Opret... 5 1.b. Rediger eller slet... 9 2. Sider...12 2.a. Opret side...13 2.b.

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

INDHOLDSFORTEGNELSE. Indledning... Lars Ljungqvist. KAPITEL ET... Velkommen til OneNote 2013. KAPITEL TO... 21 Din første notesbog: Madopskrifter

INDHOLDSFORTEGNELSE. Indledning... Lars Ljungqvist. KAPITEL ET... Velkommen til OneNote 2013. KAPITEL TO... 21 Din første notesbog: Madopskrifter INDHOLDSFORTEGNELSE Indledning... Lars Ljungqvist KAPITEL ET... Velkommen til OneNote 2013 Hvad skal vi bruge OneNote til?... 10 Nyheder i OneNote 2013... 11 Download OneNote 2013 gratis hos Microsoft...

Læs mere

Installationsguide. Integration af erhvervsdata fra NN Markedsdata til Microsoft Dynamics NAV 2015

Installationsguide. Integration af erhvervsdata fra NN Markedsdata til Microsoft Dynamics NAV 2015 Installationsguide Integration af erhvervsdata fra NN Markedsdata til Microsoft Dynamics NAV 2015 Indledning Dette dokument indeholder vejledning til installation af modulet NN Markedsdata i Dynamics NAV

Læs mere

How to do in rows and columns 8

How to do in rows and columns 8 INTRODUKTION TIL REGNEARK Denne artikel handler generelt om, hvad regneark egentlig er, og hvordan det bruges på et principielt plan. Indholdet bør derfor kunne anvendes uden hensyn til, hvilken version

Læs mere

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne Finanstilsynets indberetningssystem Vejledning til Regnearksskabelonerne Finanstilsynet - 2. udgave oktober 2009 Indholdsfortegnelse 1 INDLEDNING... 2 2 FORUDSÆTNINGER... 3 3 TRIN FOR TRIN... 4 3.1 Hent

Læs mere

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo er et Windows 98/NT/2000/Me/Xp/Vista/Win7/Win8 program, der kan holde rede på hjemmets, firmaets, foreningens eller skolens inventar

Læs mere

Du får her en kort beskrivelse af, hvordan du kommer i gang med at oprette en opkrævning som elektronisk faktura e Faktura i Business Online.

Du får her en kort beskrivelse af, hvordan du kommer i gang med at oprette en opkrævning som elektronisk faktura e Faktura i Business Online. Afsendelse af e Faktura Du får her en kort beskrivelse af, hvordan du kommer i gang med at oprette en opkrævning som elektronisk faktura e Faktura i Business Online. 1. Opret stamoplysninger (Fakturerings-

Læs mere

MANUAL TIL. OptitecRS CIPHERLAB 8000 - SCANNER

MANUAL TIL. OptitecRS CIPHERLAB 8000 - SCANNER MANUAL TIL OptitecRS CIPHERLAB 8000 - SCANNER INDHOLDSFORTEGNELSE 1 SAMLING OG TILKOBLING AF SCANNER... 1 1.1 STRØM TIL SCANNER... 2 1.2 TILKOBLING TIL COMPUTER... 2 1.2.1 Tilkobling med Seriel Stik...

Læs mere

Regnskab... 3. Før regnskab opdateres eller tages i brug (Opsætning)... 3. Regnskabsparametre... 3. Regnskab standard... 4

Regnskab... 3. Før regnskab opdateres eller tages i brug (Opsætning)... 3. Regnskabsparametre... 3. Regnskab standard... 4 Regnskab... 3 Før regnskab opdateres eller tages i brug (Opsætning)... 3 Regnskabsparametre... 3 Regnskab standard... 4 Hent model (1.75/1.80 -> 1.85) (afsnit 4.1.3 er kun relevant for kunder med modeller

Læs mere

Programmering af Babysimulator

Programmering af Babysimulator Programmering af Babysimulator Indhold Introduktion... 3 Programmering via computeren... 3 Class... 5 Student... 5 Baby... 6 Start/stop... 6 Schedule order... 6 Quiet Times... 7 Daycare vuggestue... 7

Læs mere

Programmeringseksempel til CX/IPC

Programmeringseksempel til CX/IPC APP-NOTE 610004 Beckhoff Application Note Date: 7/17/2009 Document Status: 1.1 Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel til

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se

Læs mere

Et alfabet er en ordnet mængde af bogstaver og andre tegn

Et alfabet er en ordnet mængde af bogstaver og andre tegn 16. Tegn og alfabet I dette kapitel studerer vi tegn. Tegn udgør grundbestanddelen i enhver form for tekstbehandling. I senere kapitler, nærmere betegnet kapitel 27 - kapitel 31, ser vi på sammensætningen

Læs mere

Business Online. Business Online - User manual. User Manual Booking. Indholdsfortegnelse

Business Online. Business Online - User manual. User Manual Booking. Indholdsfortegnelse Business Online User Manual Booking Indholdsfortegnelse Login Side 2-3 Hovedside - 4 Bestil rejse (start) - 5 Bestil flyrejse via prisstyret søgning - 6-7 Bestil flyrejse via tidsstyret søgning - 8-12

Læs mere

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller

Læs mere

Smart-ebizz Manual til Bookinsystem Indholdsfortegnelse Kom hurtigt i gang med dit booking system:... 3 Overblikket over dit bookingsystem... 4 Hovedside... 4 Kunder... 4 Opret ny Kunde... 4 Vagtplaner...

Læs mere

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Computere er uvurderlige redskaber for personer der ønsker at arbejde med matematiske modeller

Læs mere