Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M
|
|
- David Michelsen
- 8 år siden
- Visninger:
Transkript
1 Enigma Et programmeringssprog Forfatter: Niels Serup X. Y Vejleder: A B C Fag: Programmering Uddannelsessted: N M 25. maj 2010
2 Indholdsfortegnelse Indledning 3 Sproget 3 Syntax Typer Funktionslogik Mindre detaljer Kommentarer If og while Interpreteren 8 Programstruktur Programstart Variabler Indbyggede metoder Tal Logikken Programtests Processen Brugervejledning Forbedringer Perspektivering 12 Konklusion 13 Bilag 14 Tidsplan Programmering 1 af 14 INDHOLDSFORTEGNELSE
3 Programinformation Litteratur 14 Programmering 2 af 14 INDHOLDSFORTEGNELSE
4 Indledning Når man laver et nyt program, der skal kunne køre på en computer, bruger man i langt de fleste tilfælde et eller flere programmeringssprog. Programmeringssprog tillader, at ens kode kan være mere abstrakt i forhold til ren maskinkode og assembly. I løbet af de sidste cirka 25 år er der kommet mange nye programmeringsprog, hver med sine fordele og ulemper. Størstedelen af de programmeringssprog, der bliver brugt i dag C, C++, Java, Python, Ruby, PHP etc. 1 minder rent syntaxmæssigt en del om hinanden, og selv om Python og Ruby har tilføjet anderledes måder at gøre visse ting på, virker de mest udbredte sprog stadigvæk ret ens. Det betyder selvfølgelig, at det er nemmere at lære nye sprog, men det er også lidt kedeligt. Området trænger til lidt fornyelse. Mit problem er altså, at der mangler adspredelse indenfor programmeringssprogssyntax. Man kan tænke sig frem til flere løsninger. En nem løsning ville være at lave et program, der kunne hjælpe brugeren af programmet til at finde nye, esoteriske programmeringssprog ved brug af internettet og indtastede stikord. En anden løsning ville være at lave et program, der kunne generere semitilfældige syntaxvariationer. En tredje løsning ville være at lave et nyt programmeringssprog. Jeg har valgt at lave et nyt programmeringssprog fra bunden og implementere en parser for det i Java. Dette er muligt indenfor projektets tidsramme, idet jeg begrænser mig til at lave et simpelt sprog og altså intet i nærheden af fx Python. Jeg kalder dette sprog for... Sproget En enigma er en svær gåde. Det er ikke. Hvis sproget var meget mere simpelt end det er nu, ville man ikke kunne bruge det til noget. Dette er dog ikke tilfældet, og det er fuldt ud muligt at beskrive velfungerende programmer med dets ellers begrænsede syntax. Syntax Syntaxen i er lidt anderledes end normen indenfor programmeringssprog dikterer. Mens de fleste sprog bruger typen variabelnavn = værdi; til at gemme værdier i en variabel, og funktionsnavn(variabler); 1 Langpop [2010] Programmering 3 af 14 Indledning
5 til at køre en funktion, vender det om. I gemmer man værdier ved at skrive værdi = variabelnavn;...og man kører en funktion ved at skrive variabler! funktion; Dette er det mest grundlæggende i, og egentlig er der ikke meget mere end det. 2 andre operatører, og *, findes også, men de er mindre vigtige og eksisterer kun for at gøre visse ting nemmere. Strengt taget er de ikke nødvendige. I separares variabler med mellemrum. Hvis man vil sende 3 argumenter til en funktion, er det altså efter denne syntax: var1 var2 var3! kode; Og hvis man vil gemme 5 værdier i en listevariabel, foregår det sådan her: var1 var2 var3 var4 var5 = liste; Dette kan bruges som genveje. De to følgende eksempler resulterer i det samme: #Den lange var1 var2 var3! kode1; var1 var2 var3! kode2; var1 var2 var3! kode3; #Den korte var1 var2 var3 = liste; liste! kode1; liste! kode2; liste! kode3; I visse tilfælde kan! -operatøren godt have lidt mangler, hvilket resulterer i lang kode: a! b = c; d c! e = c; Dette løser -operatøren. Den agerer som en samler, der linker to statements sammen. Næste kodesnippet gør det samme som den før: a! b d temp! e = c; Programmering 4 af 14 Syntax
6 Her betyder temp den værdi, som b returnerer og som før blev gemt i c som et mellemtrin. Det er ikke nødvendigt med whitespace mellem variabler og operatører, og x! y er altså det samme som x!y. Den fjerde og sidste operatør, * fungerer ligesom =, men mens = fungerer lokalt, virker * globalt. Mere om det senere. Typer Der er 8 typer variabler i. Modsat almindelige programmeringssprog er der ingen simple typer såsom int, char og float. Alt er objekter. De 8 typer er: CODE BUILTINCODE STRING NUMBER BOOLEAN LIST FILE NONE CODE og BUILTINCODE kan modtage og returnere data, men CODE kommer fra koden af det Enigmaprogram, der kører, mens BUILTINCODE kører direkte fra interpreteren. De inbygedde funktioner er: str, num, list, bool, code, repr, type, len, clone, slice, loop, open, close, read, write, greater, lesser, equal, and, or, not, act, system, add, subtract, multiply, divide, mod, pow, log, random, abs, round, floor, ceil, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh Et CODE-objekt betegnes sådan: {...kode...} Når man kører en Enigmafil, kører man faktisk bare et CODE-objekt. STRING dækker over strenge af tegn. Det betegnes sådan: "tekst..." Programmering 5 af 14 Typer
7 NUMBER dækker over tal. Et tal kan være så langt, som ens computers hukommelse tillader. Internt er det ikke en simpel double, men en kompleks datastruktur. Tal skrives som tal... BOOLEAN dækker over true og false. Den bliver brugt meget i. LIST er en speciel type variabel i. Man kan ikke eksplicit lave en liste den kommer af sig selv, når det er nødvendigt. Egentlig er LIST hovedsageligt brugt til internt at holde styr på variabler, men man kan sagtens interagere med lister. FILE dækker over filer. startes altid med 3 filer: stdout, stderr og stdin. En fil kan laves vha. den indbyggede funktion open, der tager et filnavn som det første argument. Sidst og med mindst værdi er NONE. Den eksisterer som et abstrakt svar på ingeting. Nogle indbyggede funktioner returnerer denne værdi. Den kan skrives direkte i kode som none. har en række indbyggede konstanter af forskellige typer. De er: args, return, temp, stdin, stderr, stdout, zero, true, cwd, cpd, fnm args indeholder argumenter til en funktion når den bliver kaldt, return læses af når noget kode er færdigt, zero er en fil der kan skrives til uden der sker noget, cwd er navnet på den sti, som køres fra, cpd er navnet på den sti, som ens program ligger i, og fnm er stien samt filnavnet på programmet. Resten er selvforklarende. Funktionslogik En vigtig del af er dens funktionsopbygning. For det første er der fuld support for funktioner i funktioner (i funktioner i funktioner etc.). Der er ikke nogen grænser hvad det angår. Det er også vigtigt at funktioner kan tage argumenter, og i kan funktioner tage alt fra 0 til uendeligt argumenter ikke at funktionerne er tvunget til at læse argumenterne. En central del af funktioner kodestykker er at der skal være et slags hierarki. Hvis man har to funktioner, f1 og f2, og f2 er inden i f1, så skal f2 have adgang til variablerne i f1, men f1 skal ikke have adgang til variablerne i f2. Det sidste forhindres også af at alle variabler i en funktions hierarki slettes når funktionen slutter. Nogle gange kan det dog være et problem, at en funktion ikke gemmer variabler for eftertiden. Ved hjælp af den førnævnte operatør * kan man ændre på denne opførsel. Den følgende kode forklarer dette: #x forsvinder {37 = x;} = kode;!kode; #x bliver {37 * x;} = kode;!kode; Programmering 6 af 14 Funktionslogik
8 Som genvej kan man også bare putte en * foran sin kode (som *37 = x;). Dette har samme effekt, men det gælder alle steder i koden. Det kan være lidt besværligt at skulle trække variabler ud fra args i begyndelsen af et nyt kodestykke, og derfor er der defineret en genvej der ser sådan ud: /navn1,navn2/kode... Her er navn1 den først sendte variabel til funktionen (eller none hvis der ikke er nogen) og navn2 den anden (eller none hvis der ikke er nogen. Ved at bruge /.../ -genvejen kan man spare flere linjer kode. De indbyggede funktioner fungerer internt anderledes end brugerdefinerede kodestykker, men umiddelbart kan det godt føles som om de opfører sig ens. Og det er kun godt. Mindre detaljer Kommentarer Kommentarer skrives ved brug af syntaxen: #kommentar If og while I normale programmeringssprog har især if og while en hel syntaxdel for dem selv. I de bare funktioner. er C-like kode: if (x == 2) { kode(); } while (y == 3) { kode(); } Enigmakode: x 2! equal temp kode! act; {y 3! equal = r; r kode! act; r = return;}! loop; Programmering 7 af 14 Mindre detaljer
9 Interpreteren Når man kører et Enigmaprogram skal det ikke kunne ses hvilket sprog interpreteren er skrevet i. Dette er fordi Enigma skal kunne implementeres i flere sprog. Man kan også implementere Enigma i Enigma for den sags skyld. Da den indtil videre eneste Enigmainterpreter er skrevet i Java, er det den kode der skal gennemgås nu. Programstruktur Da Java er et meget objektorienteret sprog, er interpreteren delt op i objekter. Der er 7 klasser: EnigmaMain EnigmaLogic EnigmaBuiltinMethods EnigmaVariable EnigmaVariableDict EnigmaVariableDictList EnigmaVariableType Når køres, loades EnigmaMain, som så starter EnigmaLogic, som så kører ens program. Programstart EnigmaMain består af en statisk main-klasse, der udfører forskellige handlinger baseret på de argumenter man sender til programmet. Den følger GNU-standarderne med hensyn til command line interfaces 2. I sin simpleste form kan det køres ved bare at skrive: java enigma.enigmamain sti/til/program.ngm argument1 argumnent2... argumentn EnigmaLogic og kører derefter program- Hvis der er specificeret et program, loader met. Variabler I -implementationen bruges der en speciel klasse til at holde styr på værdier: Enigma- Variable. EnigmaVariable består af et enum EnigmaVariableType og en værdi Object. 2 GNU [2010] Programmering 8 af 14 Interpreteren
10 Disse variabler gemmes i HashMaps (EnigmaVariableDict), så de kan blive associeret med en tekststreng. Disse HashMaps gemmes så i ArrayLists (EnigmaVariableDictList), så der kan komme et hierarki. Indbyggede metoder Typen BUILTINCODE dækker i Java-implementationen over de metoder i EnigmaBuiltinMethods, som er skrevet i Java, men som kan køres fra en -fil. Dette kræver at en streng er linket til funktionen. Umiddelbart er dette ikke muligt i Java, da pointers altid er implicitte. Man kan ikke selv lave en reference til en metode, og derfor må man bede Java om at gøre det for en via dets Reflection API 3. Når EnigmaLogic startes, kreeres alle referencer til de indbyggede funktioner via en simpel løkke. Alle indbyggede funktioner tager imod en ArrayList som eneste argument. Dette er for at gøre det nemmere at have med at gøre. Kommentarerne ved de indbyggede funktioner følger Javadoc-konventionen 4. Tal I stedet for at bruge longs og doubles bruger Javas egen BigDecimal, der ikke er begrænset i størrelse af andet end brugerens computer. Dette sikrer at der ikke sker overflow errors og at der ikke opstår underlige afrundinger 5. Logikken Selve hjertet af -implementationen ligger i EnigmaLogic. I EnigmaLogic ligger nemlig metoden parsecode, som forstår -kode. Denne funktion skal tage højde for en del, idet -kode, simpel som den er, trods alt stadig har et syntax. parsecode får bl.a. en kodestreng som argument, og den kodestreng læser den så tegn for tegn, om end den nogle gange læser det samme tegn to gange og nogle gange springer et tegn over. Denne funktion kan forklares ved hjælp af det følgende stykke pseudekode (meget forsimplet): kode = String dict = EnigmaV ariabledict vars = EnigmaV ariabledictlist position = 0 vartype = 0 3 Sun [2010b] 4 Se 5 Sun [2010a] Programmering 9 af 14 Programstruktur
11 actiontype = 0 while position < code.length() do if vartype = 0 then if kode[position] er et ligegyldigt tegn then position = position + 1 else if kode[position] er et vigtigt tegn then if actiontype = = actiontype = * then Sæt værdien fra det tidligere variabelsæt til det nuværende. Gem de nye værdier i de specificerede variabler. else if actiontype =! then Send data til kode (indbygget eller ej). end if if kode[position] medfører en handling der udvider ens statement then Lav en ny liste til nye variabler. end if if kode[position] = = then actiontype = = else if kode[position] = * then actiontype = * else if kode[position] =! then actiontype =! else if kode[position] = ; kode[position] = then Reset diverse variabler, så der er plads til at begynde forfra. end if position = position + 1 else if kode[position] = { then vartype = 1 else if kode[position] = then vartype = 2 else vartype = 3 end if end if else if vartype = 1 then Parse kodestreng og gem else if vartype = 2 then Parse tekststreng og gem else if vartype = 3 then if streng minder om tal then Gem som tal else Få fat i den variabel, som strengen linker til, og gem. end if end if end while return dict["return"] Programmering 10 af 14 Programstruktur
12 Programtests er lidt komplekst at implementere, og det kan derfor være en god ide at teste det lidt, så man får udryddet de største bugs. Den bedste måde at teste en interpreter på er selvfølgelig ved at køre -programmer. Et eksempel er dette lille program, der udregner fakultetstal: {/num/ 1 = res; {/n,r/ r n! multiply; n 1! subtract; n 1! greater = return; } = facfunc; facfunc num res! loop; res = return; } = factorial; 5! factorial stdout "5! =" temp! write; Dette og mange andre viste hvad der virkede og hvad der ikke virkede. Faktisk hjalp det. Nogle gange var der fejl i noget, og så kunne man fikse det. Processen Før jeg overhovedet begyndte at programmere, skrev jeg en masse testprogrammer, som jeg kørte i mit hovede. Jeg overvejede hvordan syntaxen skulle være og hvilke funktioner der skulle være bygget ind i interpreteren. Først var der kun = og!, og det varede en del tid før og * kom til. Selve grundideen fik jeg dog hurtigt styr på, og efter nogle ugers grublen begyndte jeg så at lave programmet. I programbygningsfasen havde jeg først ikke særlig meget overblik. Tanker som skal jeg lægge dette i en klasse for sig selv? og hvordan skal jeg tjekke om det her passer fløj gennem mit hovede. Men efter et par dage begyndte koden helt automatisk at få en logisk opdeling, og resten var relativt nemt, selv om det tog noget tid at implementere alle de indbyggede funktioner. Jeg brugte Emacs til at redigere mine filer. Programmering 11 af 14 Programtests
13 Her ses et screenshot af Emacs in action. Brugervejledning Det er nemt at bruge. Men det vil måske afskrække nogle at der ikke er noget grafisk. Dette betyder, at folk må lære om kommandolinjen. Forbedringer Som -interpreteren er lige nu, går det ret langsomt med at parse -programmer. Det burde være relativt nemt at forbedre på dette punkt. Det er samtidig heller ikke helt umuligt at der er nogle få bugs. De skal selvfølgelig sprøjtes. Perspektivering En fordel ved er at det har potentiale til at ændre på hvordan folk opfatter programmeringssprog. Hvis en person ser et stykke -kode, vil den person måske blive inspireret til at skrive sit eget programmeringssprog. Egentlig kan det også have endnu bredere positive konsekvenser, idet den person måske ligefrem sætter sig ned for at lave et rigtigt menneskesprog efter at være blevet inspireret af. Mens bare er et programmeringssprog, så kan hele tanken om at lave noget anderledes spores til også at findes i mange andre områder. Programmering 12 af 14 Brugervejledning
14 Konklusion Jeg kan konkludere, at kan skabe adspredelse inden for programmeringssprogssyntax. Det viste sig at være muligt at lave et simpelt sprog, og det har vist mig at programmering tillader en del. At lave et sprog var sandsynligvis den bedste og mest ligetil løsning. Programmering 13 af 14 Konklusion
15 Bilag Tidsplan Når man kun er en person, er det nemmere at planlægge ens tid. Gennem hele projektet har jeg generelt fulgt den meget overordnede plan om, at jeg først lavede programmet, så testede det, så skrev rapporten og derefter formulerede synopsen. Mere præcis er min tidsplan ikke. Programinformation Enigma 0.1 Copyright (C) 2010 Niels Serup License GPLv3+: GNU GPL version 3 or later < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Litteratur GNU. GNU Coding Standards. Command_002dLine-Interfaces, April Langpop. Programming Language Popularity. April Sun. BigDecimal (Java Platform SE 7). math/bigdecimal.html, Maj 2010a. Sun. Trail: The Reflection API. index.html, April 2010b. Programmering 14 af 14 Bilag
Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:
Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.
Læs mereProgrammering. 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 mereDokumentation 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 mereProgrammering for begyndere Lektion 2. Opsamling mm
Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger
Læs mere//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 mereLær Python dag 1 - modul 1
Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen
Læs mereLær Python - Dag 4, modul 2 Objektorienteret programmering
Lær Python - Dag 4, modul 2 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Metoder Metoder Indtil videre har vi kun brugt objekter til at gemme værdier.
Læs mereKapitel 4 Løkker i C#
Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave
Læs mereGreenfoot En kort introduktion til Programmering og Objekt-Orientering
Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.
Læs mereUniversity 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 mereKlasse 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 mereDenne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)
Denne guide er oprindeligt udgivet på Eksperten.dk Batch genopfriskning Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-) Skrevet den 03.
Læs mereEksempel: 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 mereIndhold. 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 mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereSom sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste
Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),
Læs mereStart 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 mereForelæ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 mereKapitel 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 mereKDE su-håndbogen. Geert Jansen Oversætter: Erik Kjær Pedersen
Geert Jansen Oversætter: Erik Kjær Pedersen 2 Indhold 1 Indledning 5 2 Brug af KDE su 6 3 Indre ting 8 3.1 X-godkendelse........................................ 8 3.2 Grænseflade til su......................................
Læs merePython 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 mereMircobit Kursus Lektion 1
Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator
Læs merevil 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 mereHvorfor skal vi bruge objekt orienteret databaser?
OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal
Læs mereProgrammering 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 mereIndledning. 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 mereLær Python - Dag 3, modul 1 Læse og skrive filer
Lær Python - Dag 3, modul 1 Læse og skrive filer Simon J. Larsen 15. oktober 2017 Institut for Matematik og Datalogi Læse og skrive filer Persistens Vi har ofte brug for at gemme data på disken som ikke
Læs mereSpil Master Mind. Indledning.
side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de
Læs mereJava Klasse nedarvninger
Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering
Læs mereIntroduktion 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 mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September
Læs mere#AlleKanKode. Lektion 2 - Konstanter og Variabler
#AlleKanKode Lektion 2 - Konstanter og Variabler Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger
Læs mereProgrammering i C. Lektion september 2009
Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form
Læs mereSoftware 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 mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereOpfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner
Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave
Læs mereIT 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 mereIntroduktion Indtastning Funktioner Scripts Optimering. Matlab
- robert@math.aau.dk http://www.math.aau.dk/ robert/teaching/2010/matlab 9. august 2010 1/39 Disposition 1. Lidt om. 2. Basiskursus. 3. Opgaver. 4. Mere til basiskursus. 5. Opgaver. 2/39 MATLAB = MATrix
Læs mereMS Visual Studio Basic 2010. En kort vejledning
Du kan hente programmet gratis her: MS Visual Studio Basic 2010 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express Tryk på Install Now og følg vejledningen. Indholdsfortegnelse
Læs mereProgrammering 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 mereIntroduktion 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 mereAt klippe en streng over på det mest hensigtsmæssige sted
Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på
Læs mereGuide til CraftBot2-3D printere
AARHUS SCHOOL OF ENGINEERING Guide til CraftBot2-3D printere Udarbejdet af: Jens Mejdahl j.mejdahl@post.au.dk Side 1 af 12 Gem din model Når dit emne er tegnet færdig i CAD-programmet (fx SolidWorks) skal
Læs mereExceptions 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 mereKursusarbejde 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 mereArduino Programmering
Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået
Læs mereDM507 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 mereSpecialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6
Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereLæringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4
Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...
Læs mereMircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)
Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel
Læs mere2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.
Denne guide er oprindeligt udgivet på Eksperten.dk I gang med Python I denne artikel vil jeg forsøge at give et kort og hurtigt indblik i programmeringssproget Python, der desværre er alt for overset.
Læs mereCrash 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 mereProgrammering i C Videre med C (2 af 4) 19. marts 2007
Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner
Læs mereUdvikling af DOTNET applikationer til MicroStation i C#
Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs merePHP Snippets. De små korte. Skrevet af Daniel Pedersen
PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereSpil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011
Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...
Læs mereJavaScript. 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 mereBemæ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 mereIntroduktion 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 mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereHvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Læs mereInteraktionsudvikling
Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html
Læs merePHP 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 mereKlasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Læs mereI Windows fil struktur er der følgende ting Drev, Mapper, Filer og Genveje.
Windows Fil Struktur I Windows fil struktur er der følgende ting Drev, Mapper, Filer og Genveje. Hvad er et drev Et drev, er en afgrænsning af fil strukturen. Når du går ind på et drev vil du stå i roden
Læs mereKoden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner!
Denne guide er oprindeligt udgivet på Eksperten.dk Slideshow - Guide Denne guide gennemgår grundigt og forklarende hvordan man i Flash laver et slideshow med simpel fade-effekt med billeder hentet dynamisk.
Læs mereFang Prikkerne. Introduktion. Scratch
Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion
Læs mereJSP, 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 mereAarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00
Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed
Læs mereKursus 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 mereListen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereForelæsning Uge 3 Torsdag
Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)
Læs mereHTX, RTG. Rumlige Figurer. Matematik og programmering
HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with
Læs mereForelæ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 mereFra programmering til mikroprocessor
Programmering for begyndere Brug af Arduino Fra programmering til mikroprocessor EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Programmerings kursus Sidste gang (Introduktion)
Læs mereJeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.
Indhold Beregn rødder... 2 Beskrivelse af kærneproblemet... 2 Plan for brugerfladen for programmet... 3 Operationer på inddata... 4 Output - Beskrivelse af uddata... 4 Flowchart - programmets logiske opbygning/struktur...
Læs mereTerese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012
Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend
Læs mereData load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON
Data load og udtræk 2. iteration: implmentation (test af backend) 1 PHP mysql Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON 2 Data udtræk PHP mysql: Processen 1. Forbind til MySQL server
Læs mereGuide: Facebook API. Facebook API til dit data-hjerte
Guide: Facebook API Ønsker du nogle gange, at du kunne få et smugkig i konkurrentens Facebook Insights? Bare lige for at tjekke, hvad de gør godt. Måske kan du endda lære lidt af dem, som inspiration til
Læs mereAutomatisering Af Hverdagen
Automatisering Af Hverdagen Programmering - Eksamensopgave 10-05-2011 Roskilde Tekniske Gymnasium (Kl. 3,3m) Mads Christiansen & Tobias Hjelholt Svendsen 2 Automatisering Af Hverdagen Indhold Introduktion:...
Læs mereModuler i Standard ML
Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,
Læs mereComputerspil rapport. Kommunikation og IT. HTX Roskilde klasse 1.4. Casper, Mathias Nakayama, Anders, Lasse og Mads BC. Lærer - Karl Bjarnason
Computerspil rapport Kommunikation og IT HTX Roskilde klasse 1.4 Casper, Mathias Nakayama, Anders, Lasse og Mads BC Lærer - Karl Bjarnason Indledning Vi har lavet et computerspil i Python som er et quiz-spil
Læs mereProgrammering 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 merePUT og INPUT funktionerne
PUT og INPUT funktionerne Af: Peter Kellberg Danmarks Statistik Sejrøgade 11 DK-2100 København Ø pke@dst.dk PUT og INPUT-funktionerne Denne artikel er foranlediget af en henvendelse til vores interne SAS
Læs merePython 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 mereDet er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
Læs mereIndholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...
Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning
Læs mereSWC 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 mereForelæsning Uge 5 Mandag
Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere
Læs mereKontrol-strukturer i PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende
Læs mereProgrammering 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 mereMålet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer
Læs mereRevo Uninstaller Pro 3.1.2 en guide. Hanne B. Stegemüller 17. juni 2015
Revo Uninstaller Pro 3.1.2 en guide Hanne B. Stegemüller 17. juni 2015 2 Hvad gør Revo Uninstaller? Programmet, der fås både i en gratis udgave og en købeudgave, kan afinstallere alle dine forskellige
Læs mere