JAVASCRIPT INTRODUKTION TIL INTRODUKTION TIL JAVASCRIPT KENNETH GEISSHIRT

Størrelse: px
Starte visningen fra side:

Download "JAVASCRIPT INTRODUKTION TIL INTRODUKTION TIL JAVASCRIPT KENNETH GEISSHIRT"

Transkript

1 INTRODUKTION TIL JAVASCRIPT KENNETH GEISSHIRT INTRODUKTION TIL JAVASCRIPT Lær at programmere i Javascript Sprogets opbygning og syntaks Blokke, forgreninger og løkker

2

3

4 Introduktion til Javascript 1. udgave, 1. oplag 2010 Copyright 2010 Forlaget Libris Forfatter: Kenneth Geisshirt Forlagsredaktion: Peter Svendsen Omslag: Per-Ole Lind DTP: Jan Nyborg Tarbensen Korrektur: Jens Lyng Tryk: Norhaven A/S ISBN: Om Libris Libris er sat i verden for at gøre vanskeligt stof tilgængeligt og anvendeligt for både professionelle og almindelige brugere. Siden 1994 har vi gjort det inden for Computer og it Digitalfoto Job, karriere og erhverv Sundhed og sygdom Alene i Danmark er hæfterne solgt i over otte millioner eksemplarer, og vores titler udgives i 14 europæiske lande. Besøg Libris.dk Besøg os på libris.dk, hvor du finder alle vores udgivelser. Her kan du også give os kommentarer og tilmelde dig vores gratis nyhedsservice. På kan du hente eventuelle øvelsesfiler, smagsprøver og opdateringer. Fås overalt Vores udgivelser kan købes i alle boghandler. It-hæfterne fås tillige i større computerforretninger, og flere større kiosker fører et udvalg af vores hæfter. Er der et hæfte, du ikke kan finde, så kan boghandleren normalt skaffe det hjem på et par dage. Hæfterne kan også købes på Libris.dk, men vær klar over, at der tillægges et ekspeditionsgebyr.

5 Indhold Indledning...4 Implementeringer...5 Historien...5 Opbygning af hæftet...6 Download...6 Taksigelser Sproget...7 Hvad er en linje?...7 Konstanter...7 Navne...8 Udtryk...8 Arrays...9 Blokke...11 Forgreninger...11 Løkker...12 Undtagelser...13 Funktioner...13 Closures...14 Objekter Objektorienteret programmering Attributter...17 Metoder...17 Constructor...19 Prototype...19 Differentiel nedarvning...20 Refleksion...20 Kloning...20 Beskyt attributter DOM...23 HTML som objekter...23 Andet end HTML...24 Alle skal have et ID...24 Find elementer...25 Hændelser...26 Leg med stil...27 Indsæt nye elementer AJAX...31 HTTP request...31 Browser-specifik...32 Frontend...33 Backend...34 JSON Prototype...37 Installation...37 Metoder og attributter...37 De magiske $-funktioner...37 Arrays...39 AJAX...40 Hændelser...41 En slags klasse...43 Flotte effekter jquery...46 Installation...46 Find elementer...46 Skift mellem jquery og $...47 Arrays og anden hjælp...48 Hændelser...48 AJAX...49 Effekter...50 Plugins Dojo...53 Installation og konfiguration...53 Find elementer...53 Hændelser...54 Closures...55 AJAX...56 Effekter...58 Træk/slip YUI...60 Installation...60 Det globale objekt...60 Find og brug elementer...61 Arrays...61 Hændelser...62 AJAX...63 Effekter...64 Træk/slip Afslutning...66 Firebug...66 Javascript i fremtiden...67 Bøger...67 Stikordsregister FORLAGET LIBRIS

6 Indledning Dette er et hæfte om Javascript et programmeringssprog som har stor medvind i disse år. Mange mennesker har aldrig hørt om det, men bruger applikationer skrevet i Javascript hver dag. Web-applikationer som Gmail og Facebook indeholder mange funktioner, som er skrevet i Javascript. Hos dem, som har hørt om sproget, forbindes det med web-applikationer. Du sidder måske med dette hæfte, fordi du er software-udvikler og skal til at skrive applikationer til internettet og web-browsere. Eller måske er du en webdesigner, som gerne selv vil give dit flotte design liv i form af programkode, som vekselvirker med dine brugere. Hæftet er til dig, så du hurtigt kan komme i gang. Det er rigtigt, at Javascript er et programmeringssprog, som har sin store base i webapplikationer. Alle web-browsere i dag har Javascript indbygget. Men du finder også Javascript mange andre steder. Dashboard til Mac OS X, Microsoft Gadgets (Windows Vista og 7) og Google Gadgets bruger alle Javascript til udvikling af komponenter. Adobe ActionScript er et programmeringssprog, som er baseret på Javascript. Endvidere kan du udvikle applikationer til de to open source desktop-miljøer GNOME og KDE i Javascript. Du kan sige, at sproget er sprunget ud af web-browseren og har fundet vej til mange andre dele af din computer. Du vil opdage, at jo mere du arbejder med Javascript, jo gladere bliver du for sproget. Det er et utroligt elegant sprog, og du kan meget ofte skrive meget kompakt kode i det. Personligt har jeg for ikke lang tid siden implementeret et lille graf-bibliotek i Javascript. Formålet var at foretage afhængighedsanalyser, og kildeteksten for topologisk sortering (Du kan læse mere om grafer og topologisk sortering på Wikipedia: endte med at være meget kort og læselig. Som programmeringssprog har Javascript en række vigtige egenskaber, du bør kende: Det er et fortolket sprog. Det er objektorienteret (dog uden brug af klasser). Det har et dynamisk og svagt typesystem. Funktioner er første-klasse medlemmer og er objekter. Når der ikke er klasser, men objekter, skal nedarvning og lignende begreber fra objektorienteret programmering (OOP) naturligvis gøres på anden vis. I Javascript løses det ved at anvende en skole inden for OOP, nemlig den prototype-baserede. Hvad det helt præcis betyder, vil du læse om i kapitel 2. Det dynamiske typesystem betyder egentlig bare, at Javascript-fortolkeren selv finder ud af hvilken type en variabel har på et givent tidspunkt. Samtidig vil der ske en konvertering af typen, hvis Javascript-fortolkeren finder det nødvendigt. Du kan sige at typen ikke følger variablen men den værdi, som variablen har. I visse datalogiske kredse omtales sådan et typesystem som duck typing (hvis det rapper som en and og vralter som en and, så er det en and 42 er et heltal fordi du kan gange det med andre tal, det indeholder ikke bogstaver, etc.). Det, der gør funktioner i Javascript specielle, er, at de ikke er specielle. En funktion er et objekt på samme måde, som tallet 42 er et objekt. Det giver dig mulighed for at bruge funktioner på en helt anden måde end i mange andre programmeringssprog. I dette hæfte vil du finde mange nyttige eksempler, hvor funktioner er objekter. FORLAGET LIBRIS 4

7 Indledning Implementeringer Nogle programmeringssprog har det med at blive implementeret få gange. PHP og Perl er eksempler på sprog, hvor der kun er én implementering. Andre sprog har mange implementeringer C, C++ og Javascript hører til denne kategori. Alle nutidige web-browsere understøtter Javascript og har hver sin implementering af sproget. I det store hele er implementeringerne ens, men der findes dog små forskelle. I tabellen nedenfor finder du en række implementeringer, som er i brug. Åben i kolonnen Licens henviser til open source software. Godt nok er Javascript-fortolkerne stabile og hurtige, men udviklingen af Javascriptimplementeringer stopper ikke. Der arbejdes p.t. på at tilføje Jit (Just-in-Time) oversættelse af Javascript-programmer, så de kan afvikles endnu hurtigere. Google har allerede taget hul på denne udvikling med V8, og de andre leverandører er lige i hælene på dem. Historien Javascript er som sprog udviklet helt tilbage i 1995 af Brendan Eich for Netscape Corp. I starten hed det egentligt LiveScript, men skiftede navn, da Netscape og Sun (nu Oracle ejeren af Java) indgik et partnerskab, og alt skulle hedde noget med Java. Ideen var og er stadig at give web-udviklere et værktøj til at udføre funktioner ude hos brugeren. På den måde kan brugerens input valideres, inden de sendes til serveren, og det er muligt at give brugeren hurtigere respons på hvad hun foretager sig. Det er værd at huske at i 1995 brugte langt de fleste brugere af internettet modems og havde en båndbredde på under 50 kbps. Filosofien var, at jo mindre data som sendes mellem browser og server, jo bedre. Men allerede nogle år før Netscape havde firmaet Nombas udviklet et objektorienteret programmeringssprog baseret på C. Sproget hed i begyndelsen Cmm (C-minus-minus), men skiftede navn til Cenvi og senere til ScriptEase. Nombas udviklede og markedsførte en plugin til tidens web-browsere, så det var muligt at skrive programmer som kunne afvikles direkte i browseren. Sproget Cmm var en af Brendan Eichs inspirationskilder. Efter Netscape introducerede Javascript, fulgte Microsoft hurtigt med og udviklede en implementering af sproget og dets runtime-miljø til Internet Explorer version 3. Med andre ord har Javascript været en mulighed på internettet siden midten af 1996 hvor tidens to store browsere, (Netscape Communicator 2 og Internet Explorer 3), begge havde Javascript. For at sikre Javascript et bedre offentligt liv, overgav Netscape specifikationen af sproget til standardiseringsorganisationen ECMA (European Computer Manufacturers Association) og siden 1997 har ECMAscript været en åben standard. ECMAscript er det officielle navn for sproget, mens Javascript i princippet kun refererer til en bestemt implemen- Fortolker Leverandør Bruges i Licens JScript Microsoft Internet Explorer Lukket Futhark Opera Software Opera Lukket SpiderMonkey Mozilla Firefox Åben Rhino Mozilla Desktoppen/Java-programmer Åben JavaScriptCore Apple Safari Åben V8 Google Chrome Åben 5 FORLAGET LIBRIS

8 Indledning tering nemlig Mozillas implementering. I dette hæfte og det meste af verden er navnet Javascript det mest udbredte. I december 2009 frigav ECMA den femte udgave af ECMAscript. Det er nu op til leverandørerne at implementere de nyeste ændringer i deres fortolkere. Opbygning af hæftet Hæftet kan groft taget deles op i tre dele. De to første kapitler omhandler Javascript som sprog. Kapitel 1 viser dig sproget syntaksen og dens betydning. I kapitel 2 vil du læse, hvordan klasseløse objekter kan bruges til objektorienteret programmering. Eftersom Javascript bruges primært i webbrowsere, vil du komme tæt på, hvordan Javascript er integreret med en browser, i kapitel 3. I de sidste par år er web-applikationer blevet mere interaktive end tidligere. Især en teknik ved navn AJAX har haft stor betydning hele kapitel 4 er fokuseret på AJAX. Nutidens browsere stiller et stort runtimemiljø til rådighed for web-udvikleren. Desværre er hver implementering lidt forskellig fra de andre. Det gør, at web-applikationer bliver unødig komplekse, da du ikke på forhånd kender dine brugere og hvilke webbrowsere de anvender. Software-biblioteker som prototype.js, jquery, Dojo og YUI har set dagens lys og tilbyder dig hjælp til at reducere kompleksiteten. Mens prototype. js og jquery er gode biblioteker, hvis du ønsker at give eksisterende applikationer lidt liv, er Dojo og YUI komplette framework til udvikling af store, komplekse web-applikationer. Disse fire biblioteker har fået et kapitel hvert. Men det er ikke muligt at give en fuldstændig introduktion på så kort plads. Du skal derfor læse kapitlerne 5-8 for at søge inspiration til dit valg af software-bibliotek. Download Hæftets kodeeksempler kan hentes på nettet. Gå ind på og klik på hæftets titel. Kodeeksemplerne ligger samlet i én fil, som du kan downloade. Taksigelser Jeg vil gerne takke Peter Svendsen og resten af Libris for at give mig mulighed for at skrive om et af tidens bedste programmeringssprog. Libris har været en professionel sparringspartner i udgivelsen af hæftet med mange vigtige bidrag. Endvidere vil jeg gerne takke Hans Henrik Møller for hans henvisninger til Javascripts tidligere historie. Hans Henrik korrigerede mig høfligt i en pause under et foredrag om Javascript og fortalte, at han for lang tid siden havde programmeret i Javascripts næsten ukendte forfader. En del aftener og søndage har jeg tilbragt foran computeren og skrevet. Jeg skylder min familie, Svea, Svante og Pia, en stor tak for tålmodigt at lade mig få fred til at skrive. FORLAGET LIBRIS 6

9 1. Sproget Javascript er et generelt og fuldstændigt programmeringssprog, og det er på højde med andre sprog. Når du kradser lidt i overfladen, ligner Javascript sprog som C, C++ og Java. Men går du sproget efter i sømmene, vil du opdage et sprog, som har sin helt egen elegance og nogle ganske få mørke sider. I dette kapitel kommer du igennem et kort kursus i Javascript. Det er en god idé at lege med sproget ved at skrive en række små programmer og se, hvordan de forskellige sprogelementer virker. Har du tidligere programmeret i f.eks. C, C++ eller Java, vil du hurtigt føle dig hjemme. Hvad er en linje? Det virker måske som et tåbeligt spørgsmål. Men enhver designer af et programmeringssprog er nødt til at beslutte, hvad en linje er (den engelske betegnelse er statement). Du skal ikke tage ordet linje for bogstaveligt. Der kan godt være tegnet linjeskift som en del af en linje. Ud over tegnet linjeskift opfattes mellemrum og tabulator som blanktegn i Javascript, og de har ingen betydning. To linjer adskilles med semikolon (;). Kommentarer i Javascript kommer i to udgaver. Den første er meget enkel: Javascriptfortolkeren ignorerer alle kommentarer fra og med tegnene // og til og med tegnet linjeskift. Den anden form for kommentarer er alt mellem /* og */. Den første udgave foretrækkes blandt langt de fleste Javascriptudviklere. message = "Hello, World"; z = 1 / (x+y); // udtrykket over to linjer Eksempel: eks1-1.js Konstanter Javascript er et sprog med et svagt typesystem. Det betyder, at du ikke behøver at angive typen for en variabel eller en konstant, og konvertering mellem typerne sker helt automatisk. Et svagt typesystem er ikke ensbetydende med, at der ikke findes typer. Logiske værdier Logiske værdier (eng. boolean) er sande (true) eller falske (false). Der er dog en række andre værdier, som også betragtes som falske. Det drejer sig om null, NaN, '' (den tomme streng), 0 og undefined. Alle andre værdier betragtes som sande. Konstanten NaN er Not a Number og kan være resultatet af en numerisk udregning, som ikke giver mening. Det er værd at bemærke, at Javascript både har en værdi for ingenting (null) og udefineret (undefined). Tal Tal er tal og det er både heltal og kommatal. Javascript skelner ikke mellem de to slags tal modsat så mange andre programmeringssprog. Det betyder, at tallet 1 og 1.0 er det samme tal! Det er muligt at arbejde med både positive og negative tal, men negative tal angives faktisk som et udtryk gennem minus-operatoren. Du vil ikke tænke over det, når du programmerer. Heltal giver sig selv; du skriver blot tallets cifre. Kommatal skrives med punktum (.) for at angive, hvor heltalsdelen slutter, og bogstavet e (eller E) bruges til at angive 10 er potenser. Der er to særlige tal: NaN er omtalt i afsnittet før, og med Infinity kan du angive uendelig. I Javascript begynder uendeligt allerede ved ca. 1, NaN kan ikke være lig med noget andet tal inkl. NaN. 7 FORLAGET LIBRIS

10 1. Sproget Strenge En streng (eng. string) er en sekvens af tegn (evt. nul tegn). Du angiver en streng vha. citationstegn. På dit tastatur er der både enkelte og dobbelte citationstegn, og de er begge lige gode. Du skal dog afslutte strenge med samme slags, som du begyndte med. Har du brug for at skrive noget i citationstegn inde i strengen, kan du bruge det andet citationstegn i forhold til den form, som omslutter strengen. Et par enkle eksempler på strenge er: "Hello", 'world', "Don't panic". Du kan bruge alle tegn fra (16 bits) Unicode i dine strenge, og det er på den måde muligt at skrive både amerikansk, dansk og japansk i dine Javascript-programmer. Der findes en række styrekoder eller escape-sekvenser. De er taget fra UNIX, og med dem kan du f.eks. angive linjeskift (\n), tabulator (\t), backslash (\\). Der findes en rar streng-operator, nemlig + (plus). Med + kan du sammenkæde to strenge til en ny streng. Den implicitte typekonvertering og sammenkædningsoperatoren kan du bruge i mange sammenhænge. Du kan f.eks. kæde en streng sammen med et tal. Tallet konverteres først til en streng, og derefter sammenkædes talstrengen med strengen. Endvidere har alle strenge metoden length, som angiver hvor mange tegn strengen indeholder. s = "Hello"; t = "World"; print(s+" "+t); n = 12345; print((""+n).length); // antal cifre i n Eksempel: eks1-2.js Navne Navne i et programmeringssprog bruger du til variabler og funktioner. Javascript følger denne tradition. Det er vigtigt at huske, at der er forskel på store og små bogstaver. Generelt kan navne bestå af bogstaver, cifre og tegnene _ (underscore) og $ (dollar). Der er det lille krav, at et navn ikke må begynde med et ciffer. Eksempler på gyldige navne er: efternavn, Adresse2, _intern, penge$. Generelt er det en god idé, hvis du holder dig til bogstaverne i det engelske alfabet. Udtryk Udtryk kan i Javascript være lige så komplicerede, som du har brug for. De mest enkle udtryk er blot en konstant, men du kan udregne, foretage sammenligninger, kæde strenge sammen og kalde funktioner. Alt dette benævnes som udtryk. Har du bare den mindste erfaring med programmering, kender du reglerne for udtryk også i Javascript. Regneudtryk minder meget om ganske almindelige udregninger, som du finder i enhver bog om matematik. De mest enkle udtryk er enten en konstant (tal, streng, etc.) eller en variabel. Parenteser er gode til at gruppere deludtryk. Er du i tvivl om, det er nødvendigt at sætte parentes omkring et deludtryk, så gør det. Det skader bestemt ikke, og du mindsker risikoen for fejl. Det er muligt at dele udtryk ind i forskellige grupper. Den første gruppe er udtryk med en præfiks-operator. I Javascript er der seks forskellige præfiks-operatorer: + (plus), - (minus),! (logisk ikke), typeof, new samt delete. De tre første kender du fra matematik, mens typeof giver dig typen af et udtryk (som streng). Eftersom Javascript har et svagt typesystem med implicit typekonvertering, er det ofte meget nyttigt at kunne tjekke typen på en variabel el.lign. De sidste to operatorer bruges hhv. sammen med objekter og arrays, som du kan læse mere om senere i kapitlet. Endvidere er det kun de fire første præfiks-operatorer, som virker direkte på et deludtryk. Der findes en lang række operatorer, som kræver to udtryk et på hver side. Du skal bide mærke i, at operatoren + også kan bruges sammen med strenge. Er det ene eller FORLAGET LIBRIS 8

11 1. Sproget begge deludtryk strenge, kæder + dem sammen til en lang streng. Er det ene deludtryk et tal, konverterer Javascript først tallet til en streng, og kæder dem sammen. Funktioner kan også kaldes som en del af et udtryk, men det kræver at den kaldte funktion returnerer en værdi. En arv fra programmeringssproget C er operatoren?:. Det er en forgrening, som vælger enten det andet eller det tredje deludtryk ud fra sandhedsværdien af det første deludtryk. Det er en lidt speciel konstruktion. Det kan være svært at læse og forstå udtryk, hvor?: indgår, og det er ofte bedre at opbygge sådanne udtryk over en række trin med if-konstruktionen. I tabellen nedenfor finder du Javascripts forskellige operatorer. Jo højere oppe i tabellen en operator står, jo højere præcedens har den. Præcedens i et programmeringssprog fortæller, hvor stærk en operator er. Da parenteser står øverst, kan du gøre en operator med lav præcedens stærkere ved at sætte den i parentes. Det lyder nok flyvsk, men du kender det fra matematik, hvor ikke er det samme som 2 (3+4) idet multiplikation har højere præcedens end addition. Operatorer Bruges til. [] () Kald, indeksering og gruppering delete new typeof + -! Præfiks-operatorer * / % Multiplikation, division og modulo (divisionsrest) + - Addition og subtraktion >= <= > < Ulighed!== === Lighed && Logisk og Logisk eller?: Forgrening Der findes også operatorerne!= og ==, men i næsten alle tilfælde er det ikke anbefalet at bruge dem. I eksemplet nedenfor finder du en række små udtryk. var x, y, z; x = 2; y = 3; print('x*y='+x*y); z = (x<y)?5:6; print('z='+z); print('x*y+z='+x*y+z); print('x*(y+z)='+x*(y+z)); Eksempel: eks1-3.js Arrays Javascript har mange indbyggede typer, og arrays er en af dem. Et array er en tabel eller en slags mængde. Hvert element har et indeks, som du bruger til at få værdien. Heldigvis siger Javascript-standarden, at der skal være et objekt, som giver dig arrayagtig funktionalitet. Det objekt hedder Array. Det implementerer langt det meste, du ønsker dig af et array. I Javascript er indeks et heltal, og første element har indeks 0. Der er to måder at oprette et nyt array på. Den første er at bruge Array som constructor (new Array()). Det er ikke anbefalet (se kapitel 2). Den anden måde er at bruge kantede parenteser ([]). Elementer kan tilføjes ved oprettelsen ved at skrive dem imellem de kantede parenteser med komma imellem. Skriver du ingen elementer ved oprettelse, får du oprettet et tomt array. Der er ingen begrænsninger i, hvad et element kan være. Senere i dette kapitel kan du læse mere om objekter, og elementerne i et array skal være objekter. Endvidere behøver elementerne ikke at være af samme type, dvs. dit array kan bestå af strenge og tal samtidig. Eftersom et array er et objekt, kan du godt have et array af arrays. Et array af arrays er Javascripts måde at implementere fler-dimensionale arrays. 9 FORLAGET LIBRIS

12 1. Sproget Spørger du til et ikke-eksisterende element, er værdien undefined. Et ikke-eksisterende element rammer du ind i, hvis du bruger et indeks, som ikke har et tilhørende element. Med andre ord, det giver ingen fejl hvis du rammer uden for et array. Du bør derfor altid tjekke værdien, før du bruger den. Har du brug for at undersøge alle elementerne i et array, kan du bruge for..in konstruktionen. Med operatoren delete kan du slette et element i dit array. Du angiver ganske enkelt elementet vha. indeks, f.eks. delete a[2] sletter det tredje element i arrayet a. I eks1-4.js finder du en række små eksempler på, hvordan du kan bruge arrays. Der findes en del metoder, som du kan bruge på dine arrays. De er opsummeret i tabellen nedenfor. Endvidere har ethvert array en a = [3.14, 2.71]; print('a har '+a.length+' elementer'); print('sorteret: '+a.sort(function(a,b) { return a-b; )); a[a.length] = 1.0; print('ekstra element: '+a); delete a[1]; print('og næsten slettet: '+a); a.splice(1, 1); print('slettet helt: '+a); b = ["Hello", 1, "World"]; print('blandede typer: '+b); for(i in b) { print('element '+i+' er '+b[i]); Eksempel: eks1-4.js attribut ved navn length. Den giver dig antal elementer i arrayet. Sætter du length til nul, fjerner du alle elementer i dit array. Metode Funktion Eksempel concat(data) Opretter et nyt array hvor data er føjet til et array (virker også hvis data er et array). A = [1,2,3] b = [4,5,6] a.concat(b) [1,2,3,4,5,6] join(streng) Sætter alle elementer sammen til en streng. a = [1,2,3] a.join(':') '1:2:3' pop() Fjerner sidste element og returnerer elementet. a = [1,2,3] a.pop() 3 og a=[1,2] push(data) Tilføjer data til et array. a = [1,2,3] a.push(4) a=[1,2,3,4] reverse Vender rækkefølgen om på elementerne. a = [1,2,3] a.reverse() a=[3,2,1] shift() Fjerner første element og returnerer det. a = [1,2,3] a.shift() 1 og a=[2,3] slice(start,slut) Kopierer elementer fra start til slut. a = [1,2,3,4] a.slice(1,3) [2,3] sort(f) Sorterer elementerne vha. funktionen f. Uden f sorteres elementerne som strenge (og så kommer 10 før 9). splice(start, antal, data) Sletter elementer fra start og et antal frem. Er data ikke-tom, erstattes de slettede elementer med data. a = [5,2,3,1,4] a.sort(function(a,b) {return a-b;) a=[1,2,3,4,5] a = [1,2,3,4] a.splice(1,2) [2,3] og a=[1,4] unshift(data) Tilføjer data i begyndelsen. a = [1,2,3] a.unshift(7) a=[7,1,2,3] FORLAGET LIBRIS 10

13 1. Sproget Blokke Du kan gruppere linjer af kode i blokke. En blok er omsluttet af krøllede parenteser ({). Blokke bruges mange steder i Javascript og det vil du se i det efterfølgende afsnit. Men blokke er en af Javascripts mest mørke sider. Mens alle moderne programmeringssprog definerer virkefeltet (eng. scope) til at følge blokke, gør Javascript det ikke. Et virkefelt er en variabels levetid. I sprog som Java og C++ kan du erklære en variabel inden i en blok, og variablen er så kun synlig i den blok. Javascript har et noget anderledes virkefelt. Enten er virkefeltet globalt eller hører til en funktion. Hvis du erklærer en variabel i en blok inde i en funktion, vil variablen være synlig uden for blokken. Og variablen lever videre, efter udførelsen af blokken er afsluttet. Nedenfor finder du et eksempel på, hvordan Javascripts lidt mærkelige virkefelt fungerer. Du skal med andre ord bryde vanen med sene erklæringer af variabler og holde dig til kun at have globale variabler eller variabler erklæret i begyndelsen af en funktion. var x = 1; print("x = "+x); // x = 1 - ok { var x = 2; print("x = "+x); // x = 2 - ok print("x = "+x); // x = 2 uventet Eksempel: eks1-5.js Forgreninger En vigtig del af ethvert computerprograms logik er forgreninger. Javascript byder på hele to slags forgreninger. Den første slags er den enkle slags: hvis en betingelse er opfyldt, gør et eller andet, ellers gør evt. noget andet. Der er her tale om en klassisk if... else... konstruktion. Den alternative del (else) kan udelades, hvis der ikke er brug for den. Det er altid en god idé at bruge krøllet parentes, selvom du kun har en kodelinje i blokken. Krøllet parentes og indrykning giver et bedre overblik over koden og du vil lettere kunne læse og forstå den, når du vender tilbage efter lang tid. Undtagelsen fra denne tommelfingerregel er, hvis du har en else if altså ønsker at undersøge mere end to tilfælde. Her vil de unødvendige krøllede parenteser ofte være mere forvirrende end til gavn. var i = 7, j = 6; if (i > j) { print(i+' er større end '+j); var a = 'Hello',b = 'Hallo'; if (a < b) { print(a+' kommer før '+b); else { print(b+' kommer før '+a); var x = 1, y = 2; if (x > y) { print("x > y"); else if (x === y) { print("x = y"); else { print("x < y"); Eksempel: eks1-6.js Der findes som sagt også en anden slags forgrening, nemlig switch. Den bruges, når du har flere tilfælde, du ønsker at tjekke. Du finder et eksempel på brugen af switch nedenfor. Det er mest nyttigt kun at have et enkelt udtryk en variabel og bruge case-blokke til at opremse de forskellige tilfælde. Det er vigtigt at huske break, da du ellers vil fortsætte med næste tilfælde. Konstruktionen switch bruges ofte til at reagere på returværdier. 11 FORLAGET LIBRIS

14 1. Sproget var rc = Math.floor(3*Math.random()); // returværdier - her et tilfældigt tal 0, 1 eller 2 switch (rc) { case 0: print("ok"); break; case 1: print("ups"); break; case 2: print("det gik næsten"); break; Eksempel: eks1-7.js Løkker Javascript er velsignet med en masse valgmuligheder når det kommer til løkker. Ikke mindre end fire forskellige slags løkker! Det betyder, at du kan gøre en ting på flere måder. Samtidig betyder det, at du skal overveje hvilken type løkke, hver gang du har brug for en løkke. Alle fire muligheder er illustreret i eksemplet nedenfor. print('for'); for(i=1; i<=3; i=i+1) { print(i+':'+3*i); print('while'); i = 1; while (i<=3) { print(i+':'+4*i); i = i+1; print('do while'); i = 1; do { print(i+':'+4*i); i = i+1; while (i<=3); print('for in'); a = [1,2,3]; for (i in a) { print(a[i]+':'+6*a[i]); Eksempel: eks1-8.js Den første type løkke er en simpel tælleløkke: for-løkken. Den har sine rødder i C og C++, hvor den ofte er brugt. Den består af tre dele: initiel værdi af tællevariabel (i=1), stopbetingelse (i<=3) og opskrivning af tællevariabel (i=i+1). Hver del er adskilt af et semikolon. Du kan naturligvis også tælle baglæns og skrive tællevariablen op med mere end 1. Sætter du den initielle værdi af tællevariablen, så betingelsen er opfyldt med det samme, vil der ikke ske et gennemløb af løkken. I andre programmeringssprog er det anbefalet at vente med at erklære variabler, til de bruges første gang. Men virkefeltet i Javascript er anderledes, og du skal ikke erklære tællevariablen ved løkken. Det kan give dig store problemer, hvis tællevariablens navn også bruges uden for for-løkken, da det vil være den samme variabel! Den næste slags løkke er while-løkken. Her er det et (boolesk) udtryk, som afgør, hvornår gentagelsen af løkken stopper (evalueres udtrykket til falsk, afbrydes løkken). Det giver en stor fleksibilitet, som for-løkken ikke har, men det betyder også, at du ikke er garanteret, at programmet holder op med at køre. Begrebet uendelig løkke er en reference til while-løkker også i andre programmeringssprog. Omvendt er du heller ikke garanteret, at løkken gennemløbes en eneste gang, hvis betingelsen er falsk allerede første gang. Tredje løkke-konstruktion er do while-løkken, og med den er du garanteret mindst et gennemløb. Løkken gennemløbes, indtil betingelsen er falsk. Denne løkke-konstruktion bruges ikke nær så tit som de andre tre. Endelig er der en variant af for-løkken, nemlig for in-løkken. Med for in kan du gennemløbe alle elementer i et array eller attributter i et objekt. Er der tale om et array, skal du være opmærksom på, at du ikke får værdien af de enkelte elementer, men derimod indeks til elementerne. FORLAGET LIBRIS 12

15 1. Sproget Undtagelser Håndtering af fejlsituationer er ikke altid elegant. Hvis du vil tjekke alle kaldte funktioners fejlkoder og reagere på fejl, bliver dine programmer hurtig lange og meget komplekse. Samtidig kan det være besværligt at komme ud af løkker på en hurtig og effektiv måde. Heldigvis har Javascript en mulighed i form af undtagelser (eng. exceptions). Området eller kodeblokken, hvor en fejlsituation kan opstå, beskyttes med en try-blok. I en fejlsituation kan du smide en fejl eller undtagelse med throw. Programmet afbryder øjeblikkelig og hopper tilbage fra løkker og funktioner, indtil undtagelsen fanges (af en exception handler) vha. catch. Har dit program ikke noget til at fange undtagelsen, vil Javascriptmotoren fange undtagelsen. try { x = 5; y = 0; if (y === 0) { throw({name: "Fejl", message: "Division by zero"); else { z = x/y; print('z = '+z); catch (e) { print(e.name+' : '+e.message); Eksempel: eks1-9.js Du kan smide alle slags objekter som undtagelse. Strenge som beskriver fejltilstanden, er meget almindelige, men du kan også som i eksemplet ovenfor bruge et objekt med to attributter (name og message). Netop et objekt med disse to attributter er udbredt blandt Javascript-udviklere. Eftersom du kan bruge try catch rundt om en række funktionskald, kan du behandle fejlene i en samlet catch. Er undtagelserne et objekt, hvor du får både et entydigt fejlnavn og en fejlbesked, kan du med en switch-konstruktion behandle fejlene hver for sig og derved give brugeren bedre information om, hvad der er gået galt. Funktioner Funktioner er ikke bare funktioner. På en måde er funktioner egentlig ikke noget særligt i Javascript og det er præcis det, der gør dem særlige. Funktioner er objekter som alt andet i Javascript. På den måde har et heltal og en funktion mere tilfælles i Javascript end i så mange andre programmeringssprog. Det åbner en række muligheder for brugen af funktioner. Der er hele fire måder at kalde en funktion på: klassisk funktionskald som metode constructor gennem apply Funktioner som metoder og constructor kan du læse mere om i næste kapitel, som handler om objektorienteret programmering. Det klassiske funktionskald kræver, at du definerer funktionen først. Til det bruger du det reserverede nøgleord function. Funktioner kan tage et antal parametre, men antallet kan også være nul. Typen af parametrene kan være hvad som helst de skal blot være Javascript-objekter. Det er ikke nødvendigt, men funktioner kan returnere en værdi. Værdien kan være alle slags objekter, inkl. tal, strenge og arrays. Da funktioner er objekter, kan funktioner bruges som både parametre og returværdier. I eksemplet nedenfor finder du tre klassiske funktionskald. Funktioner i Javascript kan være rekursive, dvs. en funktion kan kalde sig selv. Generelt er Javascript-motorerne gode til at håndtere rekursive funktioner, da rekursion er meget anvendelig i arbejde med objekt-træer i en web-browser. Men det er altid en god idé at overveje, om en rekursiv funktion kan erstattes med en løkke, da en 13 FORLAGET LIBRIS

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

POWERPOINT 2010 LÆR DET SELV POWERPOINT 2010 LÆR DET SELV

POWERPOINT 2010 LÆR DET SELV POWERPOINT 2010 LÆR DET SELV KIRSTEN KRISTENSEN POWERPOINT 2010 LÆR DET SELV Dette hæfte lærer dig at lave velfungerende præsentationer i programmet PowerPoint 2010. Du får en god introduktion til programmets brugerflade og de forskellige

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

EXCEL 2010 KURSUSHÆFTE TRIN 2 EXCEL 2010 KURSUSHÆFTE TRIN 2

EXCEL 2010 KURSUSHÆFTE TRIN 2 EXCEL 2010 KURSUSHÆFTE TRIN 2 EXCEL 2010 KURSUSHÆFTE TRIN 2 EXCEL 2010 KURSUSHÆFTE TRIN 2 Excel 2010 for begyndere andet trin Baseret på små overskuelige øvelser Mange store illustrationer i farver KURSUSHÆFTE TRIN 2 Excel 2010 kursushæfte

Læs mere

EXCEL 2010 KURSUSHÆFTE TRIN 1 EXCEL 2010 KURSUSHÆFTE TRIN 1

EXCEL 2010 KURSUSHÆFTE TRIN 1 EXCEL 2010 KURSUSHÆFTE TRIN 1 EXCEL 2010 KURSUSHÆFTE TRIN 1 EXCEL 2010 KURSUSHÆFTE TRIN 1 Excel 2010 for begyndere første trin Baseret på små overskuelige øvelser Mange store illustrationer i farver KURSUSHÆFTE TRIN 1 Excel 2010 kursushæfte

Læs mere

PHP Quick Teknisk Ordbog

PHP Quick Teknisk Ordbog PHP Quick Teknisk Ordbog Af Daniel Pedersen PHP Quick Teknisk Ordbog 1 Indhold De mest brugte tekniske udtryk benyttet inden for web udvikling. Du vil kunne slå de enkelte ord op og læse om hvad de betyder,

Læs mere

En lille vejledning til lærere og elever i at bruge matematikprogrammet WordMat (begynderniveau)

En lille vejledning til lærere og elever i at bruge matematikprogrammet WordMat (begynderniveau) Matematik i WordMat En lille vejledning til lærere og elever i at bruge matematikprogrammet WordMat (begynderniveau) Indholdsfortegnelse 1. Introduktion... 3 2. Beregning... 4 3. Beregning med brøker...

Læs mere

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO...

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO... INDHOLDSFORTEGNELSE INDLEDNING... 7 Kristian Langborg-Hansen KAPITEL ET... 9 I gang med App Inventor Installation af App Inventor... 10 Trådløs installation... 11 Installation af emulator (Windows)...

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

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

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

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

EXCEL 2011 TIL MAC GODT I GANG MED PETER JENSEN GUIDE VISUEL

EXCEL 2011 TIL MAC GODT I GANG MED PETER JENSEN GUIDE VISUEL PETER JENSEN EXCEL 2011 TIL MAC GODT I GANG MED EXCEL 2011 TIL MAC VISUEL GUIDE 59 guides der får dig videre med Excel En instruktion på hver side - nemt og overskueligt Opslagsværk med letforståelig gennemgang

Læs mere

OFFICE 2010 OPGRADERING

OFFICE 2010 OPGRADERING OFFICE 2010 OPGRADERING KIRSTEN KRISTENSEN OFFICE 2010 OPGRADERING Læs om nyhederne i Office 2010 Opgradering fra 2003 eller 2007 Word, Excel, PowerPoint Outlook, Publisher, OneNote KIRSTEN KRISTENSEN

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

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

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin August 2010 Juni 2011 Institution Københavns Tekniske Gymnasium, Vibenhus Uddannelse Fag og niveau Lærer(e)

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

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

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

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

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

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

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

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

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

Procesbeskrivelse - Webprogrammering

Procesbeskrivelse - Webprogrammering Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...

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

JES NYHUS EXCEL 2010 EXCEL 2010 LÆR DET SELV LÆR DET SELV. Nyt i Excel 2010 Båndet, knappen Filer og værktøjslinjerne Navigering og tilpasning

JES NYHUS EXCEL 2010 EXCEL 2010 LÆR DET SELV LÆR DET SELV. Nyt i Excel 2010 Båndet, knappen Filer og værktøjslinjerne Navigering og tilpasning JES NYHUS EXCEL 2010 LÆR DET SELV EXCEL 2010 LÆR DET SELV Nyt i Excel 2010 Båndet, knappen Filer og værktøjslinjerne Navigering og tilpasning Excel 2010 lær det selv 1. udgave, 1. oplag 2010 Copyright

Læs mere

PHP Crash course. Databaser

PHP Crash course. Databaser PHP Crash course Databaser PHP Intro PHP er et server scripting sprog der kan bruges til at lave aktivt indhold på hjemme sider. Der er to betingelser som skal opfyldes for at serveren fortolker PHP koden.

Læs mere

Affine - et krypteringssystem

Affine - et krypteringssystem Affine - et krypteringssystem Matematik, når det er bedst Det Affine Krypteringssystem (Affine Cipher) Det Affine Krypteringssystem er en symmetrisk monoalfabetisk substitutionskode, der er baseret på

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

Tillæg til Libris-hæftet: WordPress. Temaredigering og sikkerhed m.m.

Tillæg til Libris-hæftet: WordPress. Temaredigering og sikkerhed m.m. Tillæg til Libris-hæftet: WordPress Temaredigering og sikkerhed m.m. 1. Temaopbygning og -redigering I det trykte hæfte gennemgår jeg, hvordan du installerer temaer i WordPress. Der findes tusindvis af

Læs mere

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

En open source løsning til bibliotekernes publikumspc ere

En open source løsning til bibliotekernes publikumspc ere En open source løsning til bibliotekernes publikumspc ere Dokument: bibos installationsvejledning bibos version: 2.1.0.1 released 25. oktober 2013 Senest redigeret: 5. februar 2014 af Niels Schmidt Petersen,

Læs mere

JavaScript. Grundlæggende elementer. Jørgen Sørensen. jososoft software development. 1998-2007 Jørgen Sørensen

JavaScript. Grundlæggende elementer. Jørgen Sørensen. jososoft software development. 1998-2007 Jørgen Sørensen JavaScript Grundlæggende elementer Jørgen Sørensen jososoft software development 1998-2007 Jørgen Sørensen Indholdsfortegnelse Introduktion Det første program Variabler.. Operatorer Objekthierarkiet i

Læs mere

PHP og MySQL. PHP og MySQL. Kristian Langborg-Hansen

PHP og MySQL. PHP og MySQL. Kristian Langborg-Hansen PHP og MySQL Kristian Langborg-Hansen PHP og MySQL > Dynamiske websider med PHP og MySQL > Letforståelig introduktion til begge sprog > Hent programeksempler fra nettet PHP og MySQL 1. udgave, 1. oplag

Læs mere

Jørgen Koch. Access. Opgavehæfte

Jørgen Koch. Access. Opgavehæfte Jørgen Koch Access 2002 2002 for alle Opgavehæfte Access 2002 for alle 1. udgave 2002 Copyright 2002 IDG Danmark A/S Forfatter: Jørgen Koch Forlagsredaktion: Frantz Pedersen DTP: Jørgen Koch Skriv til

Læs mere

WORD 2010 KURSUSHÆFTE WORD 2010 KURSUSHÆFTE

WORD 2010 KURSUSHÆFTE WORD 2010 KURSUSHÆFTE WORD 2010 KURSUSHÆFTE WORD 2010 KURSUSHÆFTE Lær Word 2010 helt fra start Ni lektioner med overskuelige øvelser Øvelsesfiler og ekstra lektion til download KURSUSHÆFTE Word 2010 kursushæfte 1. udgave,

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

24-03-2009. Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S

24-03-2009. Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S 24-03-2009 Problemstilling ved DBK integration i BIM Software Hvad skal der til. Nicolai Karved, Betech Data A/S Problemstilling ved DBK integration i BIM Software Domæner og aspekter Det domæne, der primært

Læs mere

Sådan redigerer du en hjemmeside i Umbraco

Sådan redigerer du en hjemmeside i Umbraco Brugermanual til din boligafdelings hjemmeside Sådan redigerer du en hjemmeside i Umbraco Indhold Introduktion... 2 Log på Umbraco og redigér din hjemmeside... 3 Opret ny side... 7 Gem side uden at udgive/publicere

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

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

E-MAIL G-MAIL (GOOGLE)

E-MAIL G-MAIL (GOOGLE) E-MAIL G-MAIL (GOOGLE) Erik Thorsager, Esbjerg. 3. udgave: G-mail Side 1 G-mail E-mail: Det engelske ord mail betyder post. E står for elektronisk. E-mail betyder altså elektronisk post. Elektronisk post

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

Easy Guide i GallupPC

Easy Guide i GallupPC Easy Guide i GallupPC Version. 6.00.00 Gallup A/S Masnedøgade 22-26 DK 2100 København Ø Telefon 39 27 27 27 Fax 39 27 50 80 Indhold SÅDAN KOMMER DU I GANG MED AT ANVENDE GALLUPPC... 2 TILFØJELSE AF UNDERSØGELSER

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

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

Windows 10 DEMONSTRATION AF LARS LAURSEN

Windows 10 DEMONSTRATION AF LARS LAURSEN Windows 10 DEMONSTRATION AF LARS LAURSEN Lidt om Windows 10 (1) Microsoft har sprunget tallet 9 over og er gået direkte til 10 Windows 10. Det kan skyldes, at Apple har et styresystem Mac OS X, hvor X

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

xgalleri Mulige filtyper Installation web-version

xgalleri Mulige filtyper Installation web-version xgalleri xgalleri opstod ud fra ønsket om at lægge en større samling billeder på nettet. Der findes mange programmer, som kan bruges til at lægge datafiler på nettet; men de fungerer typisk på den måde,

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

Kom godt i gang. Begyndertrin

Kom godt i gang. Begyndertrin Kom godt i gang Begyndertrin Kom godt i gang Begyndertrinnet Forfattere Kirsten Spahn og Karsten Enggaard Redaktion Gert B. Nielsen, Lars Høj, Jørgen Uhl og Karsten Enggaard Fagredaktion Carl Anker Damsgaard,

Læs mere

SMART Notebook 11.3 software til Windows - og Maccomputere

SMART Notebook 11.3 software til Windows - og Maccomputere Produktbemærkninger SMART Notebook 11.3 software til Windows - og Maccomputere Lidt om disse produktbemærkninger Disse produktbemærkninger opsummerer funktionerne i SMART Notebook 11.3 samarbejdsbaserede

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

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

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

Programmering i Javascript

Programmering i Javascript Programmering i Javascript 1. Introduktion HTML er et fortrinligt værktøj til at strukturere og præsentere information, men hvis web siderne skal være interaktive, så der kan reageres på brugerens handlinger,

Læs mere

INDHOLDSFORTEGNELSE. Et stort spring... 7 Jesper Bove-Nielsen, forlagsdirektør. KAPITEL ET... 9 Introduktion til Windows 7

INDHOLDSFORTEGNELSE. Et stort spring... 7 Jesper Bove-Nielsen, forlagsdirektør. KAPITEL ET... 9 Introduktion til Windows 7 INDHOLDSFORTEGNELSE Et stort spring... 7 Jesper Bove-Nielsen, forlagsdirektør KAPITEL ET... 9 Introduktion til Windows 7 Windows 7-udgaver... 10 32- eller 64-bit version af Windows 7... 11 Hardware...

Læs mere

Indhold. Produkter oprettelse og vedligehold v 2.0 23.5.2010 Side 2 af 20

Indhold. Produkter oprettelse og vedligehold v 2.0 23.5.2010 Side 2 af 20 Indhold Introduktion...3 Formål...3 Support...3 0. Systemkrav...4 0.1 Internet browser...4 0.2 PDF Reader...4 0.3 Hvordan tillades pop-up vinduer...4 0.4 Kompatibilitetsvisning i Internet Explorer 8...6

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

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

Læs mere

Test- og prøvesystemet De nationale test Brugervejledning for skoler Brugervejledning Indledning Forberedelse

Test- og prøvesystemet De nationale test Brugervejledning for skoler Brugervejledning Indledning Forberedelse Test- og prøvesystemet De nationale test Brugervejledning for skoler Brugervejledning Indledning Forberedelse Version 1-1-1-1-1 (januar 2015) Test- og prøvesystemet De nationale test Brugervejledning for

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

Regneark for begyndere

Regneark for begyndere Regneark for begyndere Regneark i Open- og LibreOffice Version: August 2012 Indholdsfortegnelse Hvad er et regneark?...4 Grundlæggende opbygning...4 Kast dig ud i det!...5 Du arbejder med: Din første

Læs mere

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit.

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. XML (eng. extensible Markup Language) XML er en måde at strukturere data på i tekstform. På samme måde som

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

Zotero er et smart værktøj til at få styr på dine referencer og litteraturlister. Zotero er gratis og på dansk.

Zotero er et smart værktøj til at få styr på dine referencer og litteraturlister. Zotero er gratis og på dansk. 1 Indhold: Hvorfor Zotero?... 3 Installation... 3 Firefox... 3 Installation af Zotero... 3 Registrer dig som bruger af Zotero... 4 Zotero oversigt over programmet... 4 Tilføj referencer manuelt... 5 Eksempel

Læs mere

Adobe Acrobat Professional 11. ISBN nr.: 978-87-93212-08-4

Adobe Acrobat Professional 11. ISBN nr.: 978-87-93212-08-4 Adobe Acrobat Professional 11 ISBN nr.: 978-87-93212-08-4 I n d h o l d s f o r t e g n e l s e Hvad er Adobe Acrobat?... 1 Elektroniske dokumenter... 2 PDF... 2 Acrobat-programmer... 3 Hvor kommer dokumenterne

Læs mere

Det vigtigste ved læring af subtraktion er, at eleverne

Det vigtigste ved læring af subtraktion er, at eleverne Introduktion Subtraktion er sammen med multiplikation de to sværeste regningsarter. Begge er begrebsmæssigt sværere end addition og division og begge er beregningsmæssigt sværere end addition. Subtraktion

Læs mere

Annemette Søgaard Hansen/www.dinwebvejleder.dk

Annemette Søgaard Hansen/www.dinwebvejleder.dk Google Docs Dokumenter Indholdsfortegnelse Værktøjer... Side 3 Menuer... Side 5 Opgave... Side 8 Få adgang til filerne fra din computer... Side 16 Vejledende løsning... Side 17 GoogleDocs Dokumenter 2

Læs mere

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet RSA Kryptosystemet Kryptologi ved Datalogisk Institut, Aarhus Universitet 1 Kryptering med RSA Her følger først en kort opridsning af RSA kryptosystemet, som vi senere skal bruge til at lave digitale signaturer.

Læs mere

MobileCTI Dialer Installations og konfigurations vejledning

MobileCTI Dialer Installations og konfigurations vejledning MobileCTI Dialer Installations og konfigurations vejledning Vejledning i Installation og konfiguration af MobileCTI Outlook Dialer / MobileCTI TAPI Dialer Version 2.10 December 2005 www.blueposition.com

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

Opdatering af ISOWARE til version 6.1.0

Opdatering af ISOWARE til version 6.1.0 Opdatering af ISOWARE til version 6.1.0 September 2015 Indhold Kontaktoplysninger... 1 VIGTIGT... 2 Opdatering af trejdepartssoftware... 2 Opdatering til version 6.1.0.... 2 1. Backup af databasen... 3

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

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

Kom godt i gang. Mellemtrin

Kom godt i gang. Mellemtrin Kom godt i gang Mellemtrin Kom godt i gang Mellemtrin Forfatter Karsten Enggaard Redaktion Gert B. Nielsen, Lars Høj, Jørgen Uhl og Karsten Enggaard Fagredaktion Carl Anker Damsgaard, Finn Egede Rasmussen,

Læs mere

Kenn Römer-Bruhn. WordPress. - gør dig synlig på nettet

Kenn Römer-Bruhn. WordPress. - gør dig synlig på nettet Kenn Römer-Bruhn WordPress - gør dig synlig på nettet version 1.3 2. september 2013 Lidt om hvem Kenn er Arbejdsområder i dag: Forfatter, skribent, redaktør, forlægger, fotojournalist, blogger, grafisk

Læs mere

Kom i gang med... Kapitel 11 Math: Formelredigering med OpenOffice.org. OpenOffice.org

Kom i gang med... Kapitel 11 Math: Formelredigering med OpenOffice.org. OpenOffice.org Kom i gang med... Kapitel 11 Math: Formelredigering med OpenOffice.org OpenOffice.org Rettigheder Dette dokument er beskyttet af Copyright 2005 til bidragsyderne som er oplistet i afsnittet Forfattere.

Læs mere

Artikel om... Digital signatur. OpenOffice.org

Artikel om... Digital signatur. OpenOffice.org Artikel om... Digital signatur OpenOffice.org Rettigheder Dette dokument er beskyttet af Copyright 2005 til bidragsyderne, som er oplistet i afsnittet Forfattere. Du kan distribuere og/eller ændre det

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

Indhold. 1 Indledning... 3. 1.1 Kompatible browsere... 3. 2 Log ind i Umbraco... 3. 3 Content-delen... 4. 3.1 Indholdstræet... 4

Indhold. 1 Indledning... 3. 1.1 Kompatible browsere... 3. 2 Log ind i Umbraco... 3. 3 Content-delen... 4. 3.1 Indholdstræet... 4 Indhold 1 Indledning... 3 1.1 Kompatible browsere... 3 2 Log ind i Umbraco... 3 3 Content-delen... 4 3.1 Indholdstræet... 4 3.2 Ændring af indhold... 5 3.3 Tilføjelse af en side/sektion... 6 3.4. At arbejde

Læs mere

Extension udvikling i Mozilla Firefox. Henrik Gemal

Extension udvikling i Mozilla Firefox. Henrik Gemal Extension udvikling i Mozilla Firefox Henrik Gemal Side 1 Hvem er jeg? Web udvikler hos TDC Laver TDC.dk og TDCOnline.dk Laver HTML, CSS, PHP Med i Mozilla projektet i mange år Udviklet et par extensions

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

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

Brugervejledning til Design Manager Version 1.02

Brugervejledning til Design Manager Version 1.02 Brugervejledning til Design Manager Version 1.02 Indholdsfortegnelse 1. Introduktion... 3 1.1 Det kan du med HostedShop Design Manager... 3 1.2 Feature list... 3 2. Design... 4 3. Filer og CSS... 4 3.1

Læs mere

Kom godt i gang. Sluttrin

Kom godt i gang. Sluttrin Kom godt i gang Sluttrin Kom godt i gang Sluttrin Forfatter Karsten Enggaard Redaktion Gert B. Nielsen, Lars Høj, Jørgen Uhl og Karsten Enggaard Fagredaktion Carl Anker Damsgaard, Finn Egede Rasmussen,

Læs mere

Seniorklubben TDC Jylland Cloud Computing Kursus 2011_5: Rev. 02.11.2011

Seniorklubben TDC Jylland Cloud Computing Kursus 2011_5: Rev. 02.11.2011 1. Om 2. Valg af Google som gratis udbyder ved 3. Valg af browser 4. Oprette en mail-adresse (G-mail) og en konto ved Google 5. Hierarkisk opbygning af mappe- og filsystem i Google 6. Oprette mapper i

Læs mere

Oftest stillede spørgsmål

Oftest stillede spørgsmål Oftest stillede spørgsmål Her finder du svaret på nogle væsentlige spørgsmål vedrørede brugen af Historiefaget.dk. Tekniske spørgsmål Elevernes navne stemmer ikke overens med deres eget Der kan være to

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

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

Ministeriet for Børn og Undervisnings forfattervejledning til ministeriets publikationer

Ministeriet for Børn og Undervisnings forfattervejledning til ministeriets publikationer Ministeriet for Børn og Undervisnings forfattervejledning til ministeriets publikationer Denne forfattervejledning er et bilag til de interne retningslinjer for udarbejdelse af publikationer Sammen med

Læs mere

Vejledning til Google Analytics rapporter

Vejledning til Google Analytics rapporter Vejledning til Google Analytics rapporter Internet statistik kan godt være svært at forstå specielt hvis man ikke er vant til at arbejde med sådanne ting. For at gøre det nemmere for vores kunder at forstå

Læs mere

Velkommen til 6. omgang

Velkommen til 6. omgang Velkommen til 6. omgang I dag Internet Hjemmeopgave 5 Mapper og filer Internet Vi så på faner sidst. og hurtigt på favoritter som ikke må forveksles med faner Favoritter Kan med fordel bruges til internetsider

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