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

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

GMAIL LÆR DET SELV GMAIL LÆR DET SELV

GMAIL LÆR DET SELV GMAIL LÆR DET SELV GMAIL LÆR DET SELV GMAIL LÆR DET SELV GMAIL LÆR DET SELV Gmail lær det selv 1. udgave, 1. oplag 2011 Copyright 2011 Libris Media A/S Forfatter: Kim Krarup Andersen Redaktion: Astrid Lindeloff Omslag:

Læs mere

ONENOTE 2010 LÆR DET SELV

ONENOTE 2010 LÆR DET SELV DAN JOHANSEN ONENOTE 2010 LÆR DET SELV ONENOTE 2010 LÆR DET SELV Opret egne noter og notesbøger Kopiér fra andre Office-programmer Indsæt billeder, lyd og video DAN JOHANSEN ONENOTE 2010 LÆR DET SELV OneNote

Læs mere

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

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

Python programmering. Per Tøfting. MacFest

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

Læs mere

WINDOWS 7 FOR SENIORER

WINDOWS 7 FOR SENIORER Hvis du har Windows 7 på din computer, er dette hæfte noget for dig. Hæftet er fyldt med eksempler og illustrationer, der gør det nemt for dig at følge anvisningerne, når du selv sidder ved computeren.

Læs mere

Sproget Rascal (v. 2)

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

Læs mere

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

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

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

Læs mere

Eksempel: Skat i år 2000

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

Læs mere

SWC eksamens-spørgsmål. Oversigt

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

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

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

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Sproget Limba. Til brug i G1 og K1. Dat1E 2003 Sproget Limba Til brug i G1 og K1 Dat1E 2003 Abstract Limba er et simpelt imperativt sprog med hoballokerede tupler. Dette dokument beskriver uformelt Limbas syntaks og semantik samt en fortolker for Limba,

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

Forelæsning Uge 2 Torsdag

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

Læs mere

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

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

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

Programmering i C. Lektion 4. 5. december 2008

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

Læs mere

Python 3 kursus lektion 1:

Python 3 kursus lektion 1: Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan

Læs mere

Introduktion til funktioner, moduler og scopes i Python

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

Læs mere

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

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

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

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

Læs mere

Kom godt i gang med I-bogen

Kom godt i gang med I-bogen Kom godt i gang med I-bogen At åbne bogen Det allerførste, du skal gøre, for at kunne arbejde med i-bogen, er at aktivere den. Det gøres ved at oprette en konto på systime.dk og derefter aktivere bogen

Læs mere

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2016 til Mac Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden

Læs mere

De rigtige reelle tal

De rigtige reelle tal De rigtige reelle tal Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

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

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

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

Læs mere

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen... Modul 2 Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen... 6 Opgave... 6 POST/GET og formular... 6 Opgaver...

Læs mere

Namespaces. Vi kan kvalificere elementer på denne måde:

Namespaces. Vi kan kvalificere elementer på denne måde: <?xml version=1.0 encoding=iso-8859-1?> Namespaces...1 Default namespace:...6 Præfiks:...7 To slags navne i XML:...11 Standard namespaces:...14 RDF Resource Description Framework:...18 Attributter:...19 DTD skemaer og namespaces:...21 Namespaces.

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

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

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0.

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0. Kursus 02199: Programmering afsnit 3.1-3.5 Anne Haxthausen IMM, DTU 1. Kontrol af programudførn (afsnit 3.1) 2. Valg-sætninger (if og switch) (afsnit 3.2 og 3.3) 3. Bloksætninger (afsnit 3.2) 4. Logiske

Læs mere

Kortforsyningen Rastertjenesten

Kortforsyningen Rastertjenesten KORT & MATRIKELSTYRELSEN Kortforsyningen Rastertjenesten Version 1.3, 2002-05-13 Indledning Kortforsyningens rastertjeneste kan via Internettet levere udsnit af en række af Kort & Matrikelstyrelsens kortværk

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

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

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007 JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript 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 på

Læs mere

MANUAL. Præsentation af Temperaturloggerdata. Version 2.0

MANUAL. Præsentation af Temperaturloggerdata. Version 2.0 MANUAL Præsentation af Temperaturloggerdata Version 2.0 Indholdsfortegnelse FORORD...3 INTRODUKTION...3 KRAV OG FORUDSÆTNINGER...3 INSTALLATION...4 OPSÆTNING...8 PROGRAMOVERBLIK...10 PROGRAMKØRSEL...11

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

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

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

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

Vejledning til referencehåndteringssystemet. Forsvarets Bibliotekscenter Anita Elleby

Vejledning til referencehåndteringssystemet. Forsvarets Bibliotekscenter Anita Elleby Vejledning til referencehåndteringssystemet Forsvarets Bibliotekscenter Anita Elleby Jeg håber, at du vil få glæde af denne vejledning til referencehåndteringssystemet Zotero. Hvis du får problemer undervejs

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

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

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

Å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

Løsning af simple Ligninger

Løsning af simple Ligninger Løsning af simple Ligninger Frank Nasser 19. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk:

Læs mere

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

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

Læs mere

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

Velkommen til 5. omgang af IT for let øvede

Velkommen til 5. omgang af IT for let øvede Velkommen til 5. omgang af IT for let øvede I dag Hjemmeopgave 4 Internet Hjemmeopgave 4 Internet Kablede forbindelser og trådløse forbindelser. Både ude i verden og inde hos jer selv Internet Internetadresser

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

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

Andengradsligninger. Frank Nasser. 11. juli 2011

Andengradsligninger. Frank Nasser. 11. juli 2011 Andengradsligninger Frank Nasser 11. juli 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion

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

Dokumentation af programmering i Python 2.75

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

Læs mere

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

Forelæsning Uge 4 Mandag

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

Læs mere

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

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

Forelæsning Uge 4 Torsdag

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

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Mini Afsluttende Projekt

Mini Afsluttende Projekt Mini Afsluttende Projekt Tobias Sønderskov Hansen og Lau Lund Leadbetter Roskilde Tekniske Gymnasium Klasse 2.4 - IT 2013 Side 1 af 18 Indholdsfortegnelse Indledning... 3 Mindmap... 3 User Stories... 4

Læs mere

Velkommen til 4. omgang af IT for let øvede

Velkommen til 4. omgang af IT for let øvede Velkommen til 4. omgang af IT for let øvede I dag NemId, E-boks, borger.dk Hjemmeopgave 3 Pause Internet Hjemmeopgave 3 I har vel læst Komputer for Alles modul 27 om filer og mapper? Og et par af de andre

Læs mere

jquery - selectors, attributes, traversing og manipulation

jquery - selectors, attributes, traversing og manipulation Denne guide er oprindeligt udgivet på Eksperten.dk jquery - selectors, attributes, traversing og manipulation Jeg vil med denne første artikel fra mig om jquery komme kort ind på jquerys vidunderlige verden.

Læs mere

Opgaveteknisk vejledning Word 2011 til Mac. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2011 til Mac. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2011 til Mac Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden

Læs mere

Opgaveteknisk vejledning Word 2013. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2013. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2013 Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden mens man

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

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

WINDOWS 7 FOR SENIORER

WINDOWS 7 FOR SENIORER Hvis du har Windows 7 på din computer, er dette hæfte noget for dig. Hæftet er fyldt med eksempler og illustrationer, der gør det nemt for dig at følge anvisningerne, når du selv sidder ved computeren.

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

Programmering C RTG - 3.3 09-02-2015

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

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

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

HIGHLIGHTS EPOS REKRUTTERING

HIGHLIGHTS EPOS REKRUTTERING HIGHLIGHTS EPOS REKRUTTERING VERSION 2.13 SP0 MAJ 2015 Indholdsfortegnelse 1 Indledning... 2 2 Internet Explorer vigtig info vedr. kompatibilitets-visning. 2 3 Browser-understøttelse... 2 4 Forbedret performance

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2016/17 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

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

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

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS Juli 2013 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

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

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

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

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

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

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

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

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

Tilpasning af din tastaturgenveje

Tilpasning af din tastaturgenveje Tilpasning af din tastaturgenveje Gary Rebholz Everybody's workflow er anderledes. Selvom mange af de opgaver, vi alle udfører i vores video eller lyd redigeringsfunktioner er de samme som de opgaver alle

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