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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 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 af tegn til tekststrenge. Tegn organiseres i alfabeter, som er mængder af tegn. Dette er emnet for det første afsnit efter denne introduktion. I C er der en tæt sammenhæng mellem tegn og små heltal. Ofte er det bekvemt at notere sådanne tal enten oktalt eller hexadecimalt. I dette kapitel vil vi se hvorfor disse talsystemer er attraktive, og vi vil benytte lejligheden til at studerende opbygningen af talsystemer lidt nærmere. Vigtigst af alt gennemgår vi også i dette kapitel et antal programeksempler. Her skal fremhæves to, nemlig programmer som kan konvertere mellem forskellige talsystemer, og programmer som kan tælle tegn, ord og linier i en tekst Alfabet Lektion 4 - slide 2 I dette afsnit vil vi først fastslå betydningen af et alfabet, og dernæst vil vi på punktform diskutere forskellige egenskaber af alfabeter, og primært af det såkaldte ASCII alfabet. Et alfabet er en ordnet mængde af bogstaver og andre tegn ASCII alfabetet American Standard Code for Information Interchange Angiver tegnets placering i alfabetet ved at tildele tegnet en heltalsværdi Det oprindelige ASCII tegnsæt indeholder 128 tegn Det udvidede ASCII tegnsæt indeholder 256 tegn De danske tegn 'æ', 'ø', 'å', 'Æ', 'Ø' og 'Å' er placeret i det udvidede ASCII tegnsæt Appendix E side 609 i C by Dissection I afsnit 16.2 viser vi hvordan vi kan udskrive en tabel over tegnene i ASCII alfabetet. I det seneste årti er der defineret mere omfattende alfabeter, som indeholder tegn fra mange forskellige kulturer. Unicode er et sådant alfabet Datatypen char Lektion 4 - slide 3 75

2 Datatypen char er en type i C, ligesom f.eks. int, float, og double. Datatypen char repræsenterer mængden af mulige tegn i et standard alfabet Datatypen char Et tegn repræsenteres i én byte, som svarer til otte bits Otte bit tegn giver netop mulighed for at repræsentere tegnene det udvidede ASCII alfabet Typen char er en heltalstype i C En bit er den mindste informationsenhed i en computer. En bit kan skelne mellem to forskellige tilstande, som vi ofte benævner 0 og 1. Otte bit kaldes en byte, og da de alle individuelt og uafhængig af hinanden kan være enten 0 eller 1 kan der repræsenteres 2 8 = 256 mulige værdier i en byte. Det kan f.eks. være 256 mulige tegn. Videre endnu sammensættes andre informationsenheder af et helt antal byte. Eksempelvis er en int værdi i C typisk sammensat af fire bytes, således at vi kan arbejde med = 2 32 = forskellige int værdier i C. Herunder viser vi et C program, som udskriver en simpel version af de 128 ASCII tegn. I for-løkken gennemløbes et interval fra 0 til 127. Den røde del afgør om tegnet er printbart eller ej. Abstraktionen isgraph diskuteres i afsnit Den første if i forløkken sørger for linieskift for hvert tiende tegn. Det fremgår også af dette program, at i C skelner vi ikke skarpt mellem tal og tegn. #include <stdio.h> #include <ctype.h> int main(void) { int i; printf("\n"); printf("%3s", ""); /* print top line above table */ for (i = 0; i < 10; i++) printf("%6d",i); printf("\n"); for (i = 0; i < 128; i++){ /* print the table */ if (i % 10 == 0){ /* print leftmost column */ printf("\n"); printf("%3d", (i/10) * 10); if (isgraph(i)) printf("%6c", i); else printf("%6s", "NP"); printf("\n\n"); Program 16.1 Et C program som udskriver en ASCII tegntabel. 76

3 Outputtet fra program 16.1 vises i program 16.2 herunder. Som det fremgår af programmet ovenfor er en del tegn udskrevet som NP, hvilket betyder 'Non Printable'. NP tegn er netop de tegn, hvorpå isgraph(i) i program 16.1 returner false (altså 0) NP NP NP NP NP NP NP NP NP NP 10 NP NP NP NP NP NP NP NP NP NP 20 NP NP NP NP NP NP NP NP NP NP 30 NP NP NP! " # $ % & ' 40 ( ) * +, -. / : ; 60 < = A B C D E 70 F G H I J K L M N O 80 P Q R S T U V W X Y 90 Z [ \ ] ^ _ ` a b c 100 d e f g h i j k l m 110 n o p q r s t u v w 120 x y z { ~ NP Program 16.2 Udskriften fra programmet Tegnkonstanter (1) Lektion 4 - slide 4 Vi vil i dette afsnit se på forskellige notationer for konkrete tegn. Den mest basale notation er 'a', her for tegnet a. Printbare værdier i typen char noteres i enkelt quotes, eksempelvis 'a'. Det er vigtigt at kunne skelne mellem tegn, strenge og tal. Eksempelvis '7', "7" og 7. Andre mulige notationer for tegn: Escape notation af ikke printbare tegn Eksempler: '\n' '\t' '\'' '\\' Oktal escape notation Eksempler: '\12' '\141' '\156' Hexadecimal escape notation Eksempler: '\xa' '\x61' '\x6e' I første eksempel linie (ikke printbare tegn) viser vi escape notation for linieskift, tabulatortegnet, enkelt-anførselstegn, og bagvendt skråstreg. De tre tegn, som er noteret som oktal og hexadecimal notation er parvis ens. 77

4 Tegnene '\12' og '\xa' er begge tegn 10 i decimal notation, hvilket ifølge ASCII tabellen er newline tegnet, altså '\n'. Tegnene '\141' og '\x61' er begge tegn 97, som ifølge ASCII tegntabellen er 'a', altså et lille a. Tegnene '\156' og '\x6e' er begge tegn 110, som ifølge ASCII tegntabellen er 'n', altså et lille n. Vi vil senere i denne lektion udvikle et nyttigt program - program som kan omregne ovenstående oktale og hexadecimale tal til 'normale' decimale tal Tegnkonstanter (2) Lektion 4 - slide 5 Vi viser i dette afsnit et C program, som indeholder forskellige tegnkonstanter. I program 16.3 indeholder variablene c, d, e og f alle en værdi svarende til tegnet 'n'. Mere konkret indeholder disse variable heltalsværdien 110 (decimalt). Variablen x indeholder newline tegnet, svarende til heltalsværdien 10. Vi udskriver variablene c, d, e, f, og x som tegn (%c), som decimaltal (%d), som oktale tal (%o), og som hexadecimale tal (%x) i de fire printf kommandoer i program #include <stdio.h> int main(void) { char c = 'n', d = '\156', e = '\x6e'; int f = 110; char x = '\n'; printf("c = %c (%d, %o, %x) \n", c,c,c,c); printf("d = %c (%d, %o, %x) \12", d,d,d,d); printf("e = %c (%d, %o, %x) \xa", e,e,e,e); printf("f = %c (%d, %o, %x) \n", f,f,f,f); printf("x = %c (%d, %o, %x) \n", x,x,x,x); Program 16.3 Et C program med eksempler på forskellige tegn konstanter. Programmet fokuserer på tegnet 'n', som noteres i normal tegnnotation, oktalt, og hexadecimalt. Udskriften fra program 16.3 ses herunder. Læg mærke til, at når '\n' skrives ud som et tegn, bliver der skiftet linie. 78

5 c = n (110, 156, 6e) d = n (110, 156, 6e) e = n (110, 156, 6e) f = n (110, 156, 6e) x = (10, 12, a) Program 16.4 Output fra programmet Oktale og hexadecimal notation (1) Lektion 4 - slide 6 Vi har talt om binære, oktale og decimale tal i de forrige afsnit. Men det er ikke sikkert vi alle har en god forståelse af systematikken og ideen bag disse talsystemer. Ligeså vigtigt er det at forstå, hvorfor vi belemrer hinanden med disse fremmede notationer. Mange vil nok mene, at det ikke just er en hjælp til forståelsen. I dette og næste afsnit vil vi indse, at der rimelighed i galskaben... Herunder viser vi tallet 14 (decimalt) som binære tal. Vi grupperer de indgående bits i grupper af tre (anden linie) og i grupper af 4 (tredie linie). Nogle vil nok spørge, hvor og hvordan vi får øje på tallet 14. Forklaringen er at 14 = Vi ser på dette i detaljer i afsnit Figur 16.1 En illustration af binære, oktale og hexadecimale tal. Binære tal er relevante fordi digital hardware teknologi er i stand til at skelne mellem to tilstande: Høj og lav spænding, strøm/ikke strøm, etc. Abstrakt set kalder vi disse for 0 og 1. Al indsigt om binære tal - som et matematisk begreb - kan dermed direkte overføres til digital hardware. Oktale tal tillader ciffervis konvertering af det oktale til grupper af 3 bits. Dette er illustreret i figur Tilsvarende tillader hexadecimale tal ciffervis konvertering af de hexadecimale tal til grupper af 4 bits, hvilket også fremgår af figuren. Det er, med andre ord, meget enkelt for os mennesker at omforme et oktalt eller et hexadecimalt tal til binær notation. Dette er bestemt ikke tilfældet for decimale tal. Vi kan dog relativt let skrive et 79

6 program som udfører konverteringen. Vi viser hvordan i afsnit 16.10, nærmere betegnet i program Oktal og hexadecimal tal notation tillader en ciffervis konvertering til binær notation Oktale og hexedecimal notation (2) Lektion 4 - slide 7 I dette afsnit anskueliggør vi logikken bag de binære, oktale og hexedecimale talsystemer. Herunder ser vi hvordan decimaltallet 14 kan opløses efter basis 2, 8 og 16. Det er et matematisk faktum, at disse opløsninger er entydige. Vi vil starte med at konstatere, at decimaltallet 14 egentlig betyder Ganske tilsvarende forholder det sig når vi opløser tallet efter en anden basis end 10: Binære tal: Grundtal 2 Eksempel: 14 = Oktale tal: Grundtal 8 Eksempel: 14 = Hexadecimale tal: Grundtal 16 Eksempel: 14 = = e 16 0 Senere i denne lektion vil vi programmere funktioner der kan konvertere mellem talsystemerne Tegn aritmetik Lektion 4 - slide 8 Vi kan bruge tegn i både aritmetiske og logiske udtryk. Det er ikke så underligt, idet vi jo for længst har indset, at tegn i C blot repræsenteres som det tilsvarende tal fra ASCII tegntabellen. Det er muligt at udføre aritmetiske operationer på tegn - forstået som aritmetik på de underliggende ASCII værdier Herunder fortolker vi betydningen af en række forskellige udtryk, der har tegn som operander. 80

7 Addition af et tal til et tegn '0' + 7 == '7' Tegnet 7 positioner længere fremme i tegntabellen Subtraktion af et tal fra et tegn 'k' - 1 == 'j' Tegnet før k Subtraktion af to tegn 'a' - 'A' Afstanden mellem små og store bogstaver Sammenligning af to tegn 'a' < 'b' Tegnet a kommer før b. Vurdering af alfabetisk rækkefølge Klassificering af tegn Lektion 4 - slide 9 I dette afsnit vil vi diskutere en hierarkisk klassificering af tegn. Biblioteket ctype.h understøtter en række abstraktioner, som klassificerer tegn Tegn Kontrol tegn - iscntrl(c) Printbare tegn - isprint(c) Blanke tegn - isspace(c) Grafiske tegn - isgraph(c) Punkt tegn - ispunct(c) Alfanumeriske tegn - isalnum(c) Alfabetiske tegn - isalpha(c) Små bogstaver - islower(c) Store bogstaver - isupper(c) Numeriske tegn - isdigit(c) Vi kan tænke på ovenstående abstraktioner som funktioner fra biblioteket ctype. Typisk er disse dog implementeret som makroer, hvilke tekstuelt substitueres ind i stedet for kaldet. Dette er en helt anderledes mekanisme end kald af funktioner, som vi diskuterede generelt i afsnit 12.3 og eksemplificerede konkret i afsnit Brug af makroer giver effektive programmer, idet vi undgår et egentlig funktionskald. Der er dog også en række problemer forbundet med brug af makroer. Se appendix B i C by Dissection for nogle detaljer om dette. 81

8 16.9. Abstraktionerne getchar og putchar Lektion 4 - slide 10 Til historien om tegn hører også en lille beretning om hvordan enkelttegn kan udskrives og indlæses. Det sker med C funktionerne getchar og putchar. Abstraktionerne getchar og putchar giver mulighed for input og output af enkelttegn. getchar og putchar er lavniveau alternativer til scanf og printf. Som et eksempel på readchar ser vi på tegnvis indlæsning af heltal. Ved brug af scanf er det (nogenlunde) let og bekvemt at indlæse et heltal. Vi har efterhånden set flere gange, at det kan gøres med scanf("%d", &var). Dette kald af scanf overfører det indlæste heltal til variablen var. Vi vil nu antage, at vi ikke har scanf funktionen til rådighed, og at vi derfor selv skal programmere en funktion (eller rettere en procedure) som indlæser et heltal. I program 16.5 viser vi en basal udgave. I program 16.7 ser vi på en lidt mere udbygget version. int read_int(char *prompt){ int res = 0; char c; printf(prompt); while (isdigit(c = getchar())) res = res * 10 + (c - '0'); return res; Program 16.5 En funktion der læser et heltal som enkelttegn - basal udgave. I programmet vist ovenfor indlæser vi tegn i en for-løkke, med anvendelse af getchar. Læg mærke til, at vi faktisk læser tegnene i det logiske udtryk (den røde del) der kontrollerer while-løkken. Dette er en typisk udtryksform i C, også kaldet et mønster eller et idiom. I det blå assignment oparbejder vi det resulterende heltal. Oparbejdningen sker efter principperne i afsnit Under indlæsningen af cifre med getchar (den røde del) møder vi først de mest betydende cifre, og tilslut det mindst betydende ciffer. Hvis vi indtaster 123 vil res i første gentagelse i while-løkken få værdien 1. I andet gennemløb får res værdien 1*10 + 2, altså 12. I tredje og sidste gennemløb får res værdien 12*10 + 3, altså 123. Vi har altså hermed indset at indlæsning af tegnene 123 leder til beregningen af tallet 123. Voila! Nedenfor viser vi et helt C program, hvori funktionen readint fra program 16.5 indgår. Funktionen readint er vist med fed sort skrift i program

9 #include <stdio.h> int read_int(char*); int main(void) { int i, n = 0; for (i = 1; i <= 5; i++){ n = read_int("enter an integer: "); printf("decimal value: %d\n", n); int read_int(char *prompt){ int res = 0; char c; printf(prompt); while (isdigit(c = getchar())) res = res * 10 + (c - '0'); return res; Program 16.6 Funktionen read_int og en main funktion som kalder read_int 5 gange. Vi afslutter dette delafsnit med en lidt mere generel, og lidt mere robust implementation af funktionen readint. Udgaven herunder kan håndtere et + eller - fortegn af det indlæste tal. Funktionen er også lidt bedre til at læse 'resten af linien' efter der ikke er flere cifre. #include <stdio.h> int read_int(char*); int main(void) { int i, n = 0; for (i = 1; i <= 5; i++){ n = read_int("enter an integer: "); printf("decimal value: %d\n", n); int read_int(char *prompt){ int res = 0; char c; int sign = 1; printf(prompt); /* Handle initial sign, if any */ c = getchar(); if (c == '+') {sign = 1; c = getchar(); else if (c == '-') {sign = -1; c = getchar(); /* Read digits - first char is ready in c*/ 83

10 while (isdigit(c)){ res = res * 10 + (c - '0'); c = getchar(); /* read rest of line */ while (c!= '\n') c = getchar(); return sign * res; Program 16.7 En mere brugbar udgave med mulighed for fortegn og bedre linieafslutning Konvertering mellem talsystemer Lektion 4 - slide 11 I dette afsnit laver vi to nyttige programmer, som kan konvertere mellem talsystemer. Det første konverterer et tal fra et (næsten) vilkårligt talsystem til det sædvanlige 10-talsystem. Det næste omregner et tal fra 10-talsystemet til et andet talsystem. De første 10 cifre noteres med tegnene '0' - '9'. Vi har ikke flere naturlige cifre i ASCII tabellen, så derfor benytter vi de alfabetiske tegn 'a' - 'z' for de næste 26 cifre. Det betyder vi kan håndtere talsystemer op til basis 36. Den eneste årsag til at vi ikke kan gå højere op er at vi ikke har naturlig notation for mere end 36 forskellige cifre. Vi vil nu se på et program, der indlæser et tal i et n talsystem, og som konverterer det til et decimalt tal. Vi vil tilsvarende se på et program, der konverterer et decimalt tal til et tal i et andet talsystem. Programmerne illustrerer tillige getchar og putchar. Som det fremgår, tager programmet herunder et tal i et talsystem op til basis 36, og konverterer det til et decimaltal. Det betyder, at vi skal kunne håndtere input som både kan være normale cifre og bogstaver. Derfor læser vi cifrene enkeltvis med getchar (den blå del i program 16.8). Funktionen read_in_base indlæser således en række tegn, og det returnerer det decimaltal, som modsvarer de indlæste tegn i den base, der er overført som parameter til read_in_base. Det ville have været mere tilfredsstillende at overføre allerede indlæste cifre som en parameter til read_in_base. Generelt ønsker vi at begrænse de steder i vore programmer, som laver input og output. Det vil dog kræve programmering med arrays, som vi endnu ikke har set på. Med arrays ville vi kunne overføre en ordnet samling af cifre til funktionen, read_in_base, som så kunne returnere et tal. Dette ville være en renere abstraktion, end den vi faktisk har programmeret nedenfor. Arrays mødes første gang i kapitel 21 i dette materiale. 84

11 #include <stdio.h> #include <stdlib.h> int read_in_base(int); void skip_rest_of_input_line (void); int main(void) { int i, n, base; printf("this PROGRAM CONVERTS NUMBERS IN A" "GIVEN BASE TO A DECIMAL NUMBER.\n\n"); do { printf("enter number base (0 terminates the program, max 36): "); scanf("%d", &base); skip_rest_of_input_line(); if (base > 0){ printf("enter a non-negative number to be converted" "to decimal notation: "); n = read_in_base(base); if (n >= 0) printf("the decimal number is: %d\n", n); else { printf("you have typed an illegal ciffer - TRY AGAIN\n"); skip_rest_of_input_line(); while (base > 0); /* Read a number in base and return the corresponding decimal number. Return -1 if erroneous input is encountered. */ int read_in_base(int base){ int ciffer_number, res = 0, done = 0; char ciffer; do { ciffer = getchar(); if (ciffer >= '0' && ciffer <= '9') ciffer_number = ciffer - '0'; else if (ciffer >= 'a' && ciffer <= 'z') ciffer_number = ciffer - 'a' + 10; else if (ciffer == '\n') done = 1; else return -1; if (ciffer_number >= 0 && ciffer_number < base){ if (!done) res = res * base + ciffer_number; else return -1; while (!done); return res; void skip_rest_of_input_line (void){ char c; 85

12 c = getchar(); while (c!= '\n') c = getchar(); Program 16.8 resultatet. Et C program der omregner et tal fra et talsystem til titalsystemet og udskriver Lad os lige diskutere et par detaljer i program I funktionen read_in_char bruger vi en do løkker, idet vi altid skal læse mindst ét tegn. If-else kæden skelner mellem normale cifre og udvidede cifre, idet ciffer_number beregnes forskelligt i de to tilfælde. Der er også et tilfælde som fanger end of line tegnet, og som sætter den boolske done til true (1). Hvis vi falder hele vejen gennem if-else kæden til den afsluttende else returnerer vi umiddelbart -1, som tegn på en fejl. I dette tilfælde har vi mødt et ulovligt ciffertegn. Den sidste if i do-løkken tester om det indlæste ciffer er ikke-negativ og mindre end base. Hvis dette ikke er tilfældet returnerer vi igen umiddelbart -1. Da jeg programmerede read_in_base måtte jeg gøre mig umage for at styre tilfældene 1. Udelukkende lovlige cifre afsluttet med '\n', som resulterer i normal afslutning af do løkken styret ved hjælp af variablen done. 2. Forekomst af et ulovligt ciffertegn, f.eks. '?' 3. Forekomst af et ciffertegn der er større end base. Normalt bestræber vi os på kun at have ét returneringspunkt i en funktion. Jeg fandt det imidlertid mest naturligt at have flere return kommandoer i read_in_base, idet én returnering til sidst i funktionen gjorde styringen af kontrollen for kompliceret. I programmet herefter programmerer vi den omvendte konvertering. Her indlæser vi i main et normal heltal, som overføres til C funktionen print_in_base. Vi indlæser også et basistal for det talsystem, hvortil vi ønsker at konvertere. Funktionen print_in_base finder cifrene i tallet i det andet talsystem. Endvidere udskriver funktionen de beregnede cifre. 86

13 #include <stdio.h> void print_in_base(int, int); int main(void) { int i, n, base; for (i = 1; i <= 5; i++){ printf("enter positive decimal number " "and number base (at least two): "); scanf(" %d %d", &n, &base); print_in_base(n, base); printf("\n"); /* Convert the decimal number n to base and print the result */ void print_in_base(int n, int base){ int ciffer; if (n > 0){ ciffer = n % base; /* find least significant ciffer */ /* RECURSIVELY, find and print most significant ciffers */ print_in_base(n / base, base); /* print least significant ciffer */ if (ciffer >= 0 && ciffer <= 9) putchar('0' + ciffer); else if (ciffer >= 10 && ciffer <= 36) putchar('a' + ciffer - 10); else putchar('?'); Program 16.9 Et C program der omregner et tal fra titalsystemet til et andet talsystem og udskriver resultatet. Igen et par detaljer om konverteringen. I print_in_base finder vi først det mindst betydende ciffer. Ved at studere formlen for opløsningen af et tal ud fra et grundtal i et talsystem (se afsnit 16.6) ser man let at det mindst betydende ciffer fås ved at finde resten af tallet ved division med grundtallet base. Vi husker på det mindst betydende ciffer i variablen ciffer. Den resterende del af problemet kan løses rekursivt, ved at kalde print_in_base på n / base. Dette vil give de mest betydende cifre, som vi udskriver før vi udskriver det mindst betydende ciffer, som stadig findes i variablen ciffer. I stedet for at bruge rekursion kunne vi lave en løkke. Den rekursive løsning er dog 'fiks', idet den gør det let og naturligt at udskrive cifrene i den ønskede rækkefølge (mest betydende før mindre betydende). 87

14 Eksempel: Kopiering af fil Lektion 4 - slide 12 Vi finder det naturligt, ligesom i bogen, at vise hvordan vi laver et filkopierings program. Som vi ser i program er dette meget let i C. Med brug af file redirection, ala program kan vi tilmed nærme os en ganske bekvem aktivering af filkopieringen. #include <stdio.h> int main(void) { int c; Det er meget simpelt at skrive et program som kopierer en fil til en anden fil. while ((c = getchar())!= EOF) putchar(c); Program Et C program der kopierer input til output. normark$ gcc -o copy-file copy.c normark$ copy-file < copy.c > copy-of-copy.c Program Oversættelse og udførelse af copy.c Eksempel: Optælling af ord Lektion 4 - slide 13 Vi slutter af med at se på lærebogens eksempel på et program, der tæller antal af ord i en fil. Programmet er vist i program Jeg synes ikke at programmet er vellykket. Der er i alt tre løkker involveret. Ét i main, og to indlejrede løkker i found_next_word. Der skal konstant holdes udgik efter end of file, hvilket skæmmer alt for meget. Man kan forestille sig at programmet startede simpelt, ud fra en rimelig idé om abstraktionen found_next_word. Men resultatet virker som en lappeløsning, hvor programmøren er kommet i tanker om flere og flere nødvendige specialtilfælde i kroppen af found_next_word. 88

15 #include <ctype.h> #include <stdio.h> int found_next_word(void); int main() { int word_cnt = 0; while (found_next_word() == 1) ++word_cnt; printf("\nnumber of words = %d\n\n", word_cnt); int found_next_word(void) { int c; while (isspace(c = getchar())) ; /* skip white space */ if (c!= EOF) { /* found a word */ while ((c = getchar())!= EOF &&!isspace(c)) ; /* skip all except EOF and white space */ return 1; Program Bogens udgave af ordtællingsprogrammet - et uskønt program. Vi viser et tilsvarende eksempel fra kernighan og Ritcies oprindelige bog om C, The C Programming Language. Dette program har én løkke, som læser alle tegn indtil end of file. Programmet tæller både tegn, liner og ord. Ordtællingen er det mest komplicerede element, som jeg derfor forklarer. Variablen state bruges til formålet. state starter med at være OUT, hvilket betyder at vi er uden for et ord. OUT er en symbolsk konstant, defineret med define. Når vi i tilstanden OUT møder det første tegn i et ord tælles variablen nw op. Vi skifter også tilstand til IN. Vi tæller altså et ord ved indgangen til ordet. I tilstand IN bliver nw ikke talt yderligere op. Først når vi forlader ordet, og kommer i tilstand OUT, har vi mulighed for at møde det næste ord, som så bliver talt. 89

16 #include <stdio.h> #define IN 1 /* inside a word */ #define OUT 0 /* outside a word */ int main(void) { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar())!= EOF) { ++nc; if (c == '\n') ++nl; if (c == ' ' c == '\n' c == '\t') state = OUT; else if (state == OUT) { /* entering a word */ state = IN; ++nw; printf("%d %d %d\n", nl, nw, nc); Program Kernighan og Ritchies's tilsvarende, men mere generelle program. Dette afslutter vores behandling af tegn. 90

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

ITS MP 013. Talsystemer V009. Elevens navn. IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:+45 76 42 62 44

ITS MP 013. Talsystemer V009. Elevens navn. IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:+45 76 42 62 44 ITS MP 013 V009 Elevens navn IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:+45 76 42 62 44 ITS MP 013 Udarbejdet af Søren Haahr, juni 2010 Copyright Enhver mangfoldiggørelse af tekst eller illustrationer

Læs mere

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag Programmering i C Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet Sammendrag Dette er et undervisningsmateriale om introducerende programmering i et imperativt sprog. Mere konkret er det et

Læs mere

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal

Læs mere

Repræsentation af tal

Repræsentation af tal Repræsentation af tal DM526 Rolf Fagerberg, 2009 Bitmønstre 01101011 0001100101011011... Bitmønstre skal fortolkes for at have en betydning: Tal (heltal, kommatal) Bogstaver Computerinstruktion (program)

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

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

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

APPENDIX A INTRODUKTION TIL DERIVE

APPENDIX A INTRODUKTION TIL DERIVE APPENDIX A INTRODUKTION TIL DERIVE z x y z=exp( x^2 0.5y^2) CAS er en fællesbetegnelse for matematikprogrammer, som foruden numeriske beregninger også kan regne med symboler og formler. Det betyder: Computer

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

Talsystemer I V X L C D M 1 5 10 50 100 500 1000. Hvad betyder halvanden??. Kan man også sige Halvtredie???

Talsystemer I V X L C D M 1 5 10 50 100 500 1000. Hvad betyder halvanden??. Kan man også sige Halvtredie??? Romertal. Hvordan var de struktureret?? Systematisk?? I V X L C D M 1 5 10 50 100 500 1000 Regler: Hvis et lille tal skrives foran et stort tal trækkes tallet fra: IV = 5-1 = 4 Hvis et lille tal skrives

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

DDD Runde 2, 2015 Facitliste

DDD Runde 2, 2015 Facitliste DDD Runde 2, 2015 Facitliste Søren Dahlgaard og Mathias Bæk Tejs Knudsen Opgaver og løsninger til 2. runde af DDD 2015. 1 4. 19. februar, 2015 linetest DK v1.0 Line Test Sigurd er begyndt i gymnasiet og

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

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

Lidt om Bits & Bytes. Talsystemer

Lidt om Bits & Bytes. Talsystemer Lidt om Bits & Bytes En hurtig genopfriskning af: Bits, bytes, kilobytes Megahertz, bps, Bps... Tegnsæt, f.eks. Unicode Hvad er det og hvor bruges det? Moderne og gammelt IT udstyr snakker sammen via 0

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

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

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Afrunding af OZ3VB's program Fra "almindelig C" til "microcontroller C" Lighederne

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

En note om Programmering

En note om Programmering En note om Programmering Kurt Nørmark Institut for Datalogi Aalborg Universitet normark@cs.aau.dk Resumé Denne note er en introduktion til programmering. Formålet er at give dig et indblik i hvad programmering

Læs mere

Boolesk Algebra og det binære talsystem - temahæfte informatik. Oprindelse.

Boolesk Algebra og det binære talsystem - temahæfte informatik. Oprindelse. Boolesk Algebra og det binære talsystem - temahæfte informatik. I dette hæfte arbejdes der med to-tals systemet og logiske udtryk. Vi oplever at de almindelige regneregler også gælder her, og vi prøver

Læs mere

DM13-1. Obligatoriske Opgave - Kredsløbs design

DM13-1. Obligatoriske Opgave - Kredsløbs design DM13-1. Obligatoriske Opgave - Kredsløbs design Jacob Christiansen moffe42@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 1. Opgaven Opgaven består i at designe et kredsløb,

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

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

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje. Maple Dette kapitel giver en kort introduktion til hvordan Maple 12 kan benyttes til at løse mange af de opgaver, som man bliver mødt med i matematiktimerne på HHX. Skærmbilledet Vi starter med at se lidt

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

Introduktion Til Konkurrenceprogrammering

Introduktion Til Konkurrenceprogrammering Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............

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

Induktive og rekursive definitioner

Induktive og rekursive definitioner Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal

Læs mere

Komplekse tal og Kaos

Komplekse tal og Kaos Komplekse tal og Kaos Jon Sporring Datalogisk Institut ved Københavns Universitet Universitetsparken 1, 2100 København Ø August, 2006 1 Forord Denne opgave er tiltænkt gymnasiestuderende med matematik

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS August 2012 1. Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske

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

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1.

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1. Læringsprogram Talkonvertering Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen Klasse 2.4 1. marts 2011 Fag: Vejleder: Skole: Informationsteknologi B Karl G. Bjarnason Roskilde

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

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer Hvorfor & Hvordan lære Elever At programmere Arduinoer Jens Dalsgaard Nielsen JDN / No.1 Teknologi konkurrencen IPADs, mobilos, HTC'er Medicentre JDN / No.2 IPAD, Iphone, HTC,... 1000 Mhz 8000000 kbyte

Læs mere

Fortran 90/95. Dieter Britz. Kemisk Institut Aarhus Universitet

Fortran 90/95. Dieter Britz. Kemisk Institut Aarhus Universitet Fortran 90/95 Dieter Britz Kemisk Institut Aarhus Universitet 3. Udgave, Oktober 2009 2 Fortran 90/95 Indhold Forord 4 1 Basis 5 1.1 Et simpelt Fortranprogram............. 5 1.2 De fysiske rammer.................

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

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

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

Appendiks 6: Universet som en matematisk struktur

Appendiks 6: Universet som en matematisk struktur Appendiks 6: Universet som en matematisk struktur En matematisk struktur er et meget abstrakt dyr, der kan defineres på følgende måde: En mængde, S, af elementer {s 1, s 2,,s n }, mellem hvilke der findes

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

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

1 Bits og Bytes Computere er fortræffelige til at opbevare data og behandle data Af data vil vi i dette afsnit primært beskæftige os med billeder, tekst og lyd, og se på, hvordan sådanne data lagres i

Læs mere

Medicinsk billeddannelse

Medicinsk billeddannelse Medicinsk billeddannelse Introduktion Billedtyper - Opgaver Billedegenskaber Billedbehandling Lars Møller Albrecht Lars.moeller.albrecht@mt.regionsyddanmark.dk Billedtyper Analog f.eks. billeder, malerier,

Læs mere

brikkerne til regning & matematik tal og algebra preben bernitt

brikkerne til regning & matematik tal og algebra preben bernitt brikkerne til regning & matematik tal og algebra 2+ preben bernitt brikkerne. Tal og algebra 2+ 1. udgave som E-bog ISBN: 978-87-92488-35-0 2008 by bernitt-matematik.dk Kopiering af denne bog er kun tilladt

Læs mere

Introduktion til SPSS

Introduktion til SPSS Introduktion til SPSS Øvelserne på dette statistikkursus skal gennemføres ved hjælp af det såkaldte SPSS program. Det er erfaringsmæssigt sådan, at man i forbindelse af øvelserne på statistikkurser bruger

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

Programmering i maskinkode på AMIGA

Programmering i maskinkode på AMIGA Programmering i maskinkode på AMIGA A.Forness & N.A.Holten Copyright 1989 ARCUS Copyright 1989 DATASKOLEN Hæfte 1 Indhold Introduktion Det binære talsystem Det hexadecimale talsystem Assemblerens funktion

Læs mere

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj 2001. 1 60 min. 2 60 min. 3 60 min. 4 60 min.

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj 2001. 1 60 min. 2 60 min. 3 60 min. 4 60 min. Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Vejledende løsninger til Skriftlig eksamen mandag den 28. maj 2001 Opgaverne vægtes i forhold til tidsangivelsen, og hver opgaves besvarelse

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

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

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, algoritmik og matematik en nødvendig sammenblanding? Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.

Læs mere

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret Håndbog Til CPR services Bilag 8 GCTP-standard m.m. CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51 10. Hjemmeside: www.cpr.dk Side 2 af 14 Indholdsfortegnelse

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

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

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

Axapta 3.0 Konverteringsvejledning

Axapta 3.0 Konverteringsvejledning Axapta 3.0 Konverteringsvejledning ectrl Dokumentversion 3.0 Juli 2008 - Datakonvertering 2008 Side 1 af 14 Indholdsfortegnelse DATAKONVERTERINGSVÆRKTØJET:...3 KARTOTEK INFORMATIONSOVERSIGT - FANEBLAD...5

Læs mere

Det binære talsystem og lidt om, hvordan computeren virker

Det binære talsystem og lidt om, hvordan computeren virker Det binære talsystem og lidt om, hvordan computeren virker Det binære talsystem...2 Lidt om, hvorledes computeren anvender det binære talsystem...5 Lyst til at lege med de binære tal?...7 Addition:...7

Læs mere

Integration af DocuBizz og Helios

Integration af DocuBizz og Helios Integration af DocuBizz og Helios v. 0.2 Side 1 af 7 Integration af DocuBizz og Helios 1 Overordnet beskrivelse... 1 2 Format for de overførte data... 1 3 Overførsel af stamdata fra Helios til DocuBizz...

Læs mere

VisiRegn: En e-bro mellem regning og algebra

VisiRegn: En e-bro mellem regning og algebra Artikel i Matematik nr. 2 marts 2001 VisiRegn: En e-bro mellem regning og algebra Inge B. Larsen Siden midten af 80 erne har vi i INFA-projektet arbejdet med at udvikle regne(arks)programmer til skolens

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin 2014-2015 Institution Rybners Tekniske Gymnasium Uddannelse Fag og niveau Lærer(e) Hold Htx Programmering

Læs mere

Lektion 6 / Analog Arduino

Lektion 6 / Analog Arduino 1 Jeremiah Teipen: Electronic Sandwich BSPR11 Lektion 6 / Analog Arduino Mogens Jacobsen / moja@itu.dk Siden sidst 2 Har I fået nogle LEDs til at blinke? Har I brugt kontakter? Hvad har I eksperimenteret

Læs mere

Kursuskatalog 2013 TwinCAT Basic og Extended

Kursuskatalog 2013 TwinCAT Basic og Extended Kursuskatalog 2013 TwinCAT Basic og Extended Kursusoversigt 2013 - Basic Modul 1 Software Kursus K130101 K130102 K130103 K130104 K130105 Dato 29.- 30.01.13 05.-06.03.13 07.-08.05.13 27.-28.08.13 22.-23.10.13

Læs mere

Kapitel 9. Optimering i Microsoft Excel 97/2000

Kapitel 9. Optimering i Microsoft Excel 97/2000 Kapitel 9 Optimering i Microsoft Excel 97/2000 9.1 Indledning... 164 9.2 Numerisk løsning af ligninger... 164 9.3 Optimering under bibetingelser... 164 9.4 Modelformulering... 165 9.5 Gode råd ommodellering...

Læs mere

Indlæsning og anvendelse af kontoskema Res_14 til resultatopgørelse 2014. Vejledning

Indlæsning og anvendelse af kontoskema Res_14 til resultatopgørelse 2014. Vejledning Indlæsning og anvendelse af kontoskema Res_14 til resultatopgørelse 2014 Vejledning December 2014 1 Indholdsfortegnelse 1 Formål med denne vejledning... 3 2 Hent filer med kontoskema og kolonneformat...

Læs mere

Datatransport... 2. Import & Eksport af data... 2. Generelt... 2. Import/eksport... 4. Felter i Import og Eksport... 5

Datatransport... 2. Import & Eksport af data... 2. Generelt... 2. Import/eksport... 4. Felter i Import og Eksport... 5 Indhold Datatransport... 2 Import & Eksport af data... 2 Generelt... 2 Import/eksport.... 4 Felter i Import og Eksport... 5 Trykknapper til Import og Eksport... 7 1 Alle... 7 2 Slet... 7 3 Editor... 7

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Indledning. På de følgende sider vises, primært i tegneserieform, lidt om mulighederne i PC-AXIS for Windows.

Indledning. På de følgende sider vises, primært i tegneserieform, lidt om mulighederne i PC-AXIS for Windows. Indledning PC-AXIS for Windows er et talbehandlingsprogram, der kan håndtere store mængder statistisk materiale. PC-AXIS giver mulighed for at arbejde videre med det statistiske materiale i egne programmer

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

Når du køber hukommelse til printeren, skal du sikre dig, at SDRAM DIMMhukommelseskortet

Når du køber hukommelse til printeren, skal du sikre dig, at SDRAM DIMMhukommelseskortet Printerhukommelse 1 Printeren leveres med mindst 64 MB hukommelse. Du kan konstatere størrelsen på den hukommelse, der aktuelt er installeret i printeren, ved at vælge Udskriv menuer i Testmenu. Den samlede

Læs mere

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard Kompendium i faget Matematik Tømrerafdelingen 2. Hovedforløb. Y Y = ax 2 + bx + c (x,y) X Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard Indholdsfortegnelse for H2: Undervisningens indhold...

Læs mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

CITIZEN TM CX-85. Strimmelregner. Instruktionsmanual

CITIZEN TM CX-85. Strimmelregner. Instruktionsmanual ITIZEN TM X-85 Strimmelregner Instruktionsmanual BESKRIVELSE AF TASTATUR OG KNAPPER... Slettetast (clear entry / clear) Anvendes til at slette et forkert indtastet beløb. Øvrige indhold af hukommelsen

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

I dybden med L A T E X

I dybden med L A T E X I dybden med L A T E X Peter Mølgaard 13.08.2011, version 1.0 Indhold 1 I dybden med LATEX 2 Fra L A TEX til udskrift............................. 2 Matematik med L A TEX............................ 2

Læs mere

BOSK F2012, 1. del: Prædikatslogik

BOSK F2012, 1. del: Prædikatslogik ε > 0. δ > 0. x. x a < δ f (x) L < ε February 8, 2012 Prædikater Vi skal lære om prædikatslogik lad os starte med prædikater. Et prædikat er et orakel der svarer ja eller nej. Eller mere præcist: Prædikater

Læs mere

02101: Indledende programmering. IMM, Danmarks Tekniske Universitet. Læg en studieplan. Dato: 7/12-2007. Gruppenummer: 20

02101: Indledende programmering. IMM, Danmarks Tekniske Universitet. Læg en studieplan. Dato: 7/12-2007. Gruppenummer: 20 Kursus 02101: Indledende programmering. Michael Holm & Mikael Andersen side 1 af 136 Kursus: Institut: 02101: Indledende programmering IMM, Danmarks Tekniske Universitet. Titel: Læg en studieplan Dato:

Læs mere

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system SSI-9001 IP65 GSM fjern kontrol og alarm system Installations vejledning SSIHuset v/svane Electronic ApS Vejledning Kontakt Tænd/sluk 1 - Strømforsyning: Forbundet til egen 12V / 1.5A strømforsyning (*)

Læs mere

EPOS PORTAL PORTAL INTEGRATION MANAGER

EPOS PORTAL PORTAL INTEGRATION MANAGER EPOS PORTAL PORTAL INTEGRATION MANAGER KUNDEVEJLEDNING APRIL 2014 Indholdsfortegnelse 1 Portal Integration Manager... 2 1.1 PIM profiler... 2 1.1.1 PIM-profil: Afdelinger... 2 1.1.2 PIM-profil: Grupper...

Læs mere

Projekt Træningsmaskine

Projekt Træningsmaskine Computer- og El-teknik A. Holstebro Tekniske Gymnasium - HTX Projekt Træningsmaskine Afleveret: Fredag d. 10/10-2008. Udarbejdet af: Bent Arnoldsen, Holstebro HTX. Gruppemedlem: Hjalmar Krarup Andersen,

Læs mere

Radio Frequency Identification. Jonas Nobel, Nikolaj Sørensen og Tobias Petersen

Radio Frequency Identification. Jonas Nobel, Nikolaj Sørensen og Tobias Petersen Radio Frequency Identification Jonas Nobel, Nikolaj Sørensen og Tobias Petersen Hvad er RFID I starten af 70'erne blevet stregkoden opfundet til at gøre det lettere at handle. Stregkoden kunne huske et

Læs mere

$ %' ) * %' +,! - Myarray %' /0 /0 122 +3 /0 /0

$ %' ) * %' +,! - Myarray %' /0 /0 122 +3 /0 /0 !"#!"# "# %&') * #" % && %' Dim MyArray2) As Integer ) * %' +,! - Myarray MyArray0). %' /0 /0 122 + /0 /0 +4 / 0) Dim MyArray1 to 2) As Integer 5MyarrayMyArray1)" +6 Option Base 1 Option Explicit %' 76

Læs mere

Installationsvejledning Family Tree Maker

Installationsvejledning Family Tree Maker Side 1 af 10 Først og fremmest tillykke med din nye version, oversat til dansk af undertegnede. Håber du bliver lige så glad for alle dens muligheder, som så mange over hele verden er blevet det. Installation

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Kommentar til 1 Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Denne afhandling af den 24-årige Kurt Gödel er blevet en klassiker. Det er vist den eneste

Læs mere

1121 PD L. Brugervejledning

1121 PD L. Brugervejledning 1121 PD L Brugervejledning Oversigt Generelle instruktioner... 2 Udskiftning af farvebånd........ 3 Isætning af papirrullen... 3 Display symboler... 4 Tastatur fortegnelse.... 5 Skydeknap funktioner......

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

1. Løntræk for arbejdsgiver

1. Løntræk for arbejdsgiver 1. Løntræk for arbejdsgiver 1.1 Login på hjemmesiden Man kan logge sig på via Skattestyrelsens hjemmeside www.aka.gl (under Inddrivelsesmyndigheden) eller direkte på https://sulinal.gh.gl. Når man går

Læs mere

Eksamen dcomnet Q2/2010. Navn

Eksamen dcomnet Q2/2010. Navn 2582 Eksamen dcomnet Q2/2010 ID Navn Example I A32-prg1 Betragt følgende program skrevet i IA-32 symbolsk maskinsprog:.section.data x:.long 2 r:.long 27.section.text.globl _start _start: pushl x movl $0,%ebx

Læs mere

Mathcad Survival Guide

Mathcad Survival Guide Mathcad Survival Guide Mathcad er en blanding mellem et tekstbehandlingsprogram (Word), et regneark (Ecel) og en grafisk CAS-lommeregner. Programmet er velegnet til matematikopgaver, fysikrapporter og

Læs mere

Studieretningsprojekter i machine learning

Studieretningsprojekter i machine learning i machine learning 1 Introduktion Machine learning (ml) er et område indenfor kunstig intelligens, der beskæftiger sig med at konstruere programmer, der kan kan lære fra data. Tanken er at give en computer

Læs mere

At indsætte ord og billeder og brug af hjælpefunktionen.

At indsætte ord og billeder og brug af hjælpefunktionen. Udarbejdelse af kommunikationsbøger Noter og øvelser i forbindelse med at udarbejde kommunikationsbøger vha. programmet Phraseit (Genlyd). Følgende øvelser og instruktion er baseret på at Phrase-it 2.1

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen Programmering A IMADA Noter og opgaver Niels Kjeldsen & Jacob Aae Mikkelsen Med grundig korrektur og rettelser af Edmund Christiansen Noter til Programmering A INDHOLD Indhold 1 Indledning 3 2 Kom i gang

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