FP-2: Supplerende noter i funktionsprogrammering
|
|
- Anders Nissen
- 8 år siden
- Visninger:
Transkript
1 FP-2: Supplerende noter i funktionsprogrammering Nils Andersen juli 2005 (revideret juli 2006) Datalogisk Institut Københavns Universitet
2 Redaktion: c Nils Andersen 2006 ISSN Forord Disse noter er skrevet med henblik på den indledende programmeringsundervisning i funktionsprogrammering på Datalogisk Institut ved Københavns Universitet (DIKU). Siden den første version fra 1996 er noterne løbende blevet omarbejdet, og ved Det Naturvidenskabelige Fakultets overgang i efteråret 2004 fra semester- til kvartalsstruktur måtte en del af stoffet fjernes. Efter fremkomsten af lærebogen FP-1 [5], (Hansen og Rischel: Introduction to Programming using SML) blev noterne omskrevet, så de først og fremmest behandlede emner, der enten kun berøres overfladisk eller helt forbigås i lærebogen. Noternes første seks kapitler udgør en selvstændig fremstilling, men senest inden kapitel 7 (Tegn, tekster, udskrivning) er det nødvendigt at sætte sig ind i typen af lister [5, Chapt. 5]. Tak til kollegaer og studerende, som gennem årene har bidraget med kritik og kommentarer, og en særlig tak til Jakob Grue Simonsen for hans pertentlige gennemlæsning. Yderligere kommentarer, forslag, oplysninger om trykfejl og lignende modtages gerne. De kan sendes til nils@diku.dk 2
3 Indhold 1 Programstyret databehandling Data Databehandling Analoge og digitale data Automatisering Universalitet Programmering Det imperative princip Det applikative princip Højere programmeringssprog Valg af programmeringssprog Ind- og udlæsning Alfabeter ISO s 7 bit-kode ISO s 8 bit-kode Unicode Funktionsbegrebet Den matematiske opfattelse Den datalogiske opfattelse Litteratur Dialog med Standard ML Dialogen Foranstillede (monadiske) operatorer Sandhedsværdi Værdierklæring Afslutning Gruppering Associering Prioritet Funktioner Funktionserklæring Funktionskald, parenteser og prioritet Argumentsæt Sprogsystemets faser
4 2.4.1 Navne Fem simple typer To typer tal Sandhedsværdier Tegn Tekster Sammenfatning Opgaver Programmeringssproget Standard ML Funktionsdefinition med valg mellem flere parametermønstre Evaluering af funktionskald Virkefelt Redefinition Rekursion Navnerum; biblioteksmoduler Typen af heltal Heltalsdivision Euklids algoritme Standardundtagelser Ikke-udtømmende parametermønstre Overløb Typen af sandhedsværdier Striks eller efterladende strategi? Betingelse som skildvagt Konjunktion og disjunktion Koncis omgang med sandhedsværdier De øvrige simple typer Typen af brudne tal Typerne af tegn og tekster Overlæssede symboler Typebegrænsning Definitionen af Standard ML Skandering i grundsymboler Gruppering i syntaktiske helheder Sammenfatning Opgaver Produkttype. Terminering. Blokke Strukturerede typer Sæt Enhedstypen Komponentvalg Projektionsfunktionerne Joker Blok
5 4.4.1 Analytisk brug af val Udtryk og erklæringer; let og local Polymorfi Værdipolymorfi Kast af standardundtagelse Robusthed Uendelig løkke Sammenfatning Opgaver Konstruktion af funktioner Problemløsning Et eksempel: Hexadecimale tegnkoder Rekursion Fakultetsfunktionen Virkning af funktionskald Rekursiv problemløsning Ræsonneren om funktionskald Indsættelse Programnedskrivning Navnevalg Opstilling Kommentarer Systematik Afprøvning Bevis eller afprøvning? Afprøvningsdata i programteksten Udformning af testdata Programkonstruktion Hanois tårn Egenskaber og definitioner Kaldtræer Opgaver Højereordensfunktioner Funktion som funktionsværdi Parentesregler ved funktionskald og funktionstype Sekventialisering Funktion af tupel eller sekventialiseret funktion? Operator som funktion Funktion som funktionsargument Anonym funktion Funktionserklæring med val Sammenfatning Opgaver
6 7 Tegn, tekster, udskrivning Typen string af tekster Typen char af tegn Typeerklæring Eksempler Majuskler Decimale talord Opstilling Listekombinatoren map Sammenfatning Opgaver Naïv sortering Naboombytning Boblesortering Indsættelsessortering Udtagelsessortering Sammenfatning Opgaver Et større eksempel: kalender Rektangulære billeder Opdeling af en liste i dellister En enkelt måneds billede Ugedag Månedsdata Skudår De enkelte måneder Opsamling af månedsdata Kalenderfunktionen Hele programmet Udnyttelse af listefunktionalen map Hele programmet på kompakt form Opgaver Kombinatorisk søgning Det grådige princip Alle løsninger Kaste og gribe undtagelser Blindgydesøgning Problemet med de otte dronninger Sammenfatning Opgaver
7 11 Køretidseffektivitet Eksempel: potensopløftning En forbedring Måling af ressourceforbrug Beregning af udførelsestid Funktioners vækst Store O-notation Store Ω- og store Θ-notation Effektivitet Listespejling Analyse af listesammenstillen Analyse af funktionen spejl Programtransformation Sammenfatning Opgaver Effektiv sortering Ineffektiv sortering En nedre grænse for sorteringstid Forbedring Flettesortering Analyse af flettesortering Kviksortering Analyse af kviksortering Effektiv sortering Tilfældige tal Pseudo-tilfældige tal Sammenfatning Opgaver Litteratur 167 A Styretegn 169 B Engelsk-dansk ordliste 173 B.1 Ordliste for de enkelte afsnit i lærebogen B.1.1 Chapter 1: Getting started B.1.2 Chapter 2: Basic values and operators B.1.3 Chapter 3: Tuples and records B.1.4 Chapter 4: Problem solving I B.1.5 Chapter 5: Lists B.1.6 Chapter 6: Problem solving II B.1.7 Chapter 7: Tagged values and partial functions B.1.8 Chapter 8: Finite trees B.2 Engelsk-dansk ordliste
8 C Indeks 183 8
9 Kapitel 1 Programstyret databehandling I betragtning af, at en computer tilsyneladende hverken producerer eller forarbejder eller transporterer noget fysisk håndgribeligt materiale, kan man undre sig over disse apparaters store betydning og udbredelse. Dette kapitel indeholder nogle mere principielle overvejelser over en computers funktion. 1.1 Data Det er centralt, at computere ikke arbejder med fænomenerne selv, men med repræsentationer af dem eller, som man også siger, med data. Ordbogsdefinitionen 1 af data er: En formaliseret repræsentation af kendsgerninger eller forestillinger på en sådan form, at den kan kommunikeres eller omformes ved en eller anden proces. Bemærkning: En repræsentation kan tage sigte på menneskelig tolkning (fx trykt tekst) eller på tolkning ved hjælp af apparatur (fx hulkort eller elektriske signaler). omverden perception fænomen forståelse virkelighed tanke bevidsthedsindhold information repræsentation symbol tolkning Figur 1.1: Forholdet imellem omverden, tanke og sprog. sprog Forholdet imellem omverdenen og menneskets erkendelse af den, beskaffenheden af vores bevidsthed og tilsvarende problemer behandles og diskuteres i filosofisk og datalogisk litteratur. Spørgsmålene er vanskelige, og der er ingenlunde enighed om svarene, men man kan vælge at anskue sammenhængen på følgende måde (se figur 1.1): I det bombardement af sanseindtryk og udfordringer, den omgivende virkelighed påtrykker os, forsøger mennesker 1 fra [1]. data 9
10 at orientere sig ved at danne ideer og begreber. Skal sådanne bevidsthedsfænomener huskes til senere, kommunikeres til andre eller på anden måde behandles uden for bevidstheden, må de formes som talte eller skrevne ord eller andre symboler, der da (i henhold til ovenstående definition) fungerer som data. Sagt på en anden måde er data den form, tanker og ideer fremtræder på, når de befinder sig uden for et menneskes bevidsthed, og der er en konvention for, hvorledes de skal tillægges betydning. Overgange mellem de tre faser finder sted i begge retninger: Ord og begreber foranlediges som nævnt af virkelighedens ydre påvirkninger og dannes i en analyse, der givetvis i høj grad er sprogligt og kulturelt betinget; man kunne sige, at ideerne udgjorde en form for model af det studerede fænomen. Den anden vej siges vi at have forstået et begreb, hvis vi er klare over, hvilke praktiske betydninger det dækker. Begreber kan så repræsenteres i form af symboler, og omvendt kan symboler fortolkes som bestemte begreber. 1.2 Databehandling indgangsdata addition af decimale talord dataproces 48 udgangsdata Figur 1.2: Databehandling. I de mange situationer, hvor man benytter repræsentationer af ting i stedet for tingene selv, foretager man en databehandling. I denne brede betydning er fænomenet ikke nyt: opbevaring eller afsendelse af en lertavle med en meddelelse i kileskrift ligesom beregning på en abacus (kugleramme) var i henhold til begrebets definition databehandling. Når databehandling finder sted, foreligger der nogle indgangsdata eller inddata (eng.:input), hvoraf der ved en dataproces dannes tilhørende udgangsdata eller uddata (eng.:output), se figur 1.2. En del af årsagen til, databehandling er så nyttig, kan forklares ved at opfatte den som simulering: Der er en proces, man gerne vil vide noget om, men af en eller anden grund ønsker man ikke, den skal udspille sig i virkeligheden. Det kan være, den tager for lang tid (hvordan bliver vejret i morgen?), er for dyr (opfør et nyt kraftværk!), destruktiv (hvad er effekten af en bombesprængning?), forurenende, eller der kan være andre grunde til, at man ikke ønsker et reelt eksperiment. Ved at simulere processen i en databehandling kan man alligevel (i det omfang, modellen er troværdig) komme til kendskab om den. Denne opfattelse illustreres af figur 1.3 og udgør vores bedste bud på et svar på det indledende spørgsmål om, hvorfor computere egentlig er nyttige. Mange EDB-anvendelser kan beskrives ud fra figur 1.3, men i en moderne hverdag tager man også en del hjælpemidler i brug, som kun langt ude harmonerer med opfattelsen af databehandling som simulering: supermarkedets stregkodelæser og dankortautomat, pladsreservationssystemer (for teatre, færge- og flyselskaber) og et elektronisk kontaktur er eksempler på databehandlingssystemer. 10
11 virkelighedens plan det bevidstheds- eller begrebsmæssige plan modellering repræsentation proces, der ønskes studeret indgangs- fænomen indgangsoplysninger udgangsfænomen indsigt resultater tolkning sprogets eller kalkulens plan inddata dataproces uddata Figur 1.3: Databehandling opfattet som simulering. 1.3 Analoge og digitale data Man skelner mellem analog og digital repræsentation af information. Hvis der ved repræsentationen benyttes en længde, vinkel, strøm, spænding eller anden kontinuert varierende fysisk størrelse, kaldes det analoge data. I en analogregnemaskine benyttes der analoge signaler i de centrale kredsløb; udviklingen inden for elektronik har imidlertid betydet, at man nu kan opnå langt større hastighed og præcision ved at benytte digital teknik. (Det er den samme udvikling, man i øjeblikket ser inden for telefon-, radio- og fjernsynstransmission.) Digitale data forudsætter et vedtagent alfabet af såkaldte tegn (eng.:character), og i en digital repræsentation, som også kaldes et ord, er der til hver af en række positioner knyttet et tegn. Den skrivemåde for ikke-negative hele tal, som vi har fra araberne, er et eksempel på digital repræsentation: Tegnene er de ti decimale cifre, og positionerne betegner antallet af enere, tiere, hundreder, osv., regnet fra højre (fordi arabisk læses fra højre mod venstre). Vi vil skelne mellem et tal, som er det matematiske begreb, og dets repræsentation som talord. Med et givet antal positioner udnytter det arabiske talsystem mulighederne optimalt: har man for eksempel tre cifre til rådighed, kan der dannes forskellige talord, som bruges til at betegne de 1000 forskellige tal fra 0 (betegnet 000) til 999. Det underliggende princip kaldes radixnotation og er ikke afhængigt af, at alfabetet netop har ti forskellige tegn: Systemet kan bruges for et hvilket som helst alfabet, når der blot mindst er to forskellige tegn i det. (Man kan sågar tillade forskellige alfabeter for hver af de forskellige positioner.) Bruges kun de to cifre 0 og 1, fås det binære talsystem eller totalssystemet; et binært ciffer kaldes også en bit. Skrevet binært begynder talrækken 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001,... I disse noter skal vi kun interessere os for digitale data. 11
12 1.4 Automatisering Data skal (det ligger i selve definitionen) kunne behandles af en proces. Udførelse af de fire elementære regningsarter på decimale talord ciffer for ciffer under brug af mente, lån, den lille tabel og så videre er eksempler på sådanne processer. De nævnte metoder går helt slavisk frem, og i 1642 konstruerede Blaise Pascal ( ) en mekanisk regnemaskine, som kunne addere og subtrahere sekscifrede decimale talord; moderne elektroniske lommeregnere kan behandle flere cifre og har mange flere funktioner. Selv om en automatisk regnemaskine kan aflaste megen triviel talbehandling, skal man dog stadig selv tage stilling til, hvilke operationer der skal udføres, og i hvilken rækkefølge det skal ske. Det afgørende skridt fra regnemaskine til computer går ud på at automatisere hele dataprocessen og ikke blot de aritmetiske operationer. En computer indeholder en regneenhed som en af sine dele, men er yderligere bygget ud, så den kan løse en hel beregningsopgave uden indgriben undervejs Universalitet Rent teknisk er der ikke noget i vejen for at bygge automater, der løser specialiserede databehandlingsopgaver (som at udstede billetter, veksle penge, styre en vaskemaskine og lignende). Det viser sig imidlertid, at man ikke skal gøre en automats ordrerepertoire særligt omfattende, før den bliver universel i den forstand, at den kan udføre en hvilken som helst databehandling. For os vil det interessante netop være universelle computere, det vil sige databehandlingsapparater med den egenskab, at hvis man kunne specialbygge en indretning, der løste en bestemt ønsket databehandlingsopgave, så kan man også få computeren til at løse denne opgave. 1.5 Programmering Fysisk set ombygges computeren ikke mellem hver af de forskellige opgaver, den skal løse. Det, der sker, er, at man udskifter dens program, det vil sige de ordrer, som styrer dens virkemåde. At programmere (eller, som man sagde før i tiden: kode) en computer går ud på at forsyne den med de ordrer, der skal til for at løse en forelagt opgave. Her står flere forskellige principper eller beregningsmodeller til rådighed; vi omtaler nedenfor kort to af dem: det imperative og det applikative princip Det imperative princip Når en beregningsopgave løses manuelt, har man ud over en regnemaskine brug for at kunne notere mellemresultater ned, taste andre mellemresultater ind igen og eventuelt lade delresultater styre de videre beregninger. En af de måder, hvorpå man kan udbygge en regneenhed til en computer, der er universel i den ovennævnte forstand, er derfor ved siden af regneenheden at have et lager til mellemresultater. 12
13 Et vigtigt skridt i datamaskinernes udvikling blev taget, da Charles Babbage ( ) planlagde en mekanisk regnemaskine, som ud over datalager og regneenhed samt indog udlæsningsenheder også skulle have en styreenhed, hvori en sekvens af hulkort bestemte, hvilke operationer der skulle udføres. Denne maskine kunne altså programmeres: med forskellige sekvenser af hulkort i styreenheden kunne den løse forskellige opgaver. Til assistance ved planlægning af styringen havde han komtesse Augusta Ada Lovelace (den engelske digter lord Byrons datter), som således i en vis forstand blev verdens første programmør. Af praktiske grunde forblev maskinen dog på tegnebrættet med datidens teknik var den umulig at bygge. Imperativ programmering, der også kan kaldes tilstandsorienteret programmering eller variabelbaseret programmering, går ud på at supplere regnekapaciteten med et lager. Skudt ind mellem de almindelige regneordrer (til addition, subtraktion, multiplikation og så videre) ligger der ordrer om at læse fra pladserne i lageret og at skrive til dem, så lagerets indhold hele tiden ændrer sig. Fungerende datamaskiner har næsten alle denne opbygning, og skal man benytte sådan en maskine, skal den altså udføre et program, der bestemmer, hvordan lagerets indhold skal bruges og ændres. Efter den imperative model foregår en beregning ved, at en maskine (med sin regneenhed og sit lager) præsenteres for to ingredienser: dels de aktuelle inddata, dels et program, hvorefter maskinen behandler inddata i overensstemmelse med programmet og som resultat leverer uddata: x inddata p program Det applikative princip datamaskine M (imperativ forståelse) y uddata Almindelige regneudtryk formår ikke at beskrive alle beregninger, og derfor skulle der i den imperative model suppleres med et lager til mellemresultater. En anden opfattelse går ud på, at en beregning veksler mellem at inddrage forskellige dele. Ved at identificere de forskellige dele med passende navne kan man sørge for, at de kommer i brug til det rigtige tidspunkt. Mentalt arbejder denne model derfor med bindinger mellem navne eller parametre og værdier. Så længe et bånd består, ændres et navns værdi ikke (i modsætning til forholdene i den imperative model, hvor en plads kunne skifte værdi). I applikativ programmering, der også kaldes funktionsorienteret programmering eller værdiorienteret programmering, opnås universaliteten ved at udvide klassen af udtryk med nye former og operationer, som gør det muligt at formulere en vilkårlig beregning som et udtryk. Da disse nye operationer skal erstatte brugen af et eksplicit lager, er det klart, mange af dem vil have karakter af nogle omflytninger, og den nødvendige udvidelse kaldes også kombinatorisk logik. Det matematisk grundlag for det applikative synspunkt blev udviklet i 1930 erne af Alonzo Church ( ) i form af den såkaldte lambda-kalkule, men den første, der foreslog teorien benyttet i forbindelse med programmering, var John McCarthy, som omkring 1960 udviklede en kalkule for rekursive funktioner af symbolske udtryk og konstruerede programmeringssproget Lisp. 13
14 I applikativ programmering formuleres den opgave, man vil have løst, som et generaliseret regneudtryk, og man lader derefter det datamatiske system evaluere dette regneudtryk til en værdi. Sagt på en anden måde skal inddata kapsles ind i et mere omfattende regneudtryk; hvad der i det imperative paradigme var et program, svarer her til en kontekst: et generaliseret udtryk med et hul (hvori inddata kan placeres). f(x) inddata indkapslet i et applikativt udtryk datamaskine A (applikativ forståelse) y uddata Højere programmeringssprog Udviklingen inden for elektronik (radiorør) gjorde det muligt at bygge de første fungerende datamaskiner i tiden omkring anden verdenskrigs slutning; disse maskiner havde dog stadig et separat styrende program. Forud for hver ny anvendelse af maskinen skulle programmet skiftes ud, hvilket kunne være en møjsommelig opgave. I 1940 erne fik en gruppe ingeniører, hvis mest fremtrædende medlem var John von Neumann ( ), den afgørende ide at integrere data- og programlager, således at de ordrer, som styrede dataprocessen, blev hentet fra lageret, hvilket også betød, at maskinen undervejs i en beregning kunne modificere sine egne ordrer. Selv om det skyldes den moderne elektronik (transistorer, integrerede kredse), at datamaskiner er blevet hurtige og billige og dermed har fået en sådan udbredelse, som tilfældet er, har elektronik ikke principiel betydning i forbindelse med datateknik: man kunne også (og gør det i et vist omfang) bruge mekaniske, hydrauliske, pneumatiske (trykluft), magnetiske eller optiske (lys) lagrings- og transportmedier; det afgørende er, at vi har at gøre med en universel datamaskine, der fortolker sit program fra et lager, hvortil der automatisk kan skrives. Betegnelsen datamaskine eller datamat (eng.:computer) vil i det følgende blive brugt om en sådan universel datamaskine med lagret program; datamatik (eng.:computer science) drejer sig om egenskaber ved og brugen af sådanne maskiner. Reglerne for, hvorledes en datamat fortolker et lagerindhold som en ordre, er bestemt af maskinens ingeniørmæssige konstruktion og kaldes for dens maskinsprog. Da ordrer kan behandles som data, behøver man imidlertid ikke at programmere maskinen i dette sprog: et afviklingsprogram (der dog da selv må være lagt ind i maskinsprog) kan oversætte eller fortolke programmer udformet i et såkaldt højere programmeringssprog til maskinsprog, og man siger da, at det højere programmeringssprog er implementeret på den pågældende datamat. Hvis et afviklingsprogram for sproget L er lagt ind i en maskine M, ser det fuldstændig ud, som om man havde at gøre med en L-maskine. Fremkomsten af højere programmeringssprog har gjort det muligt at afvikle de samme programmer på meget forskellige datamater (og at afvikle programmer i mange forskellige programmeringssprog på samme datamat) i princippet kan alle datamater det samme. Siden implementeringen i 1958 af det første højere programmeringssprog Fortran (afledt af formula translator ) er der fremkommet et overordentlig stort antal af den slags sprog. To af dem har navn efter de ovennævnte pionerer Pascal og Ada; et meget udbredt sprog hedder C (videreudviklet til C++). Sammen med Algol, Cobol, PL/1, Basic og mange andre tilhører alle de nævnte sprog klassen af imperative eller tilstandsorienterede 14
15 programmeringssprog. Fælles for disse sprog er et forholdsvis tro billede af datamatens lager som opbygget af variable, der skifter værdi under en beregning. I Objektorienteret programmering opfattes alle forhold og størrelse, programmet skal arbejde med, som objekter med visse egenskaber. Objektorienterede programmeringssprog er blandt andet Simula, Emerald, Java og C++. Det sprog, der præsenteres i de følgende kapitler, tilhører klassen af såkaldte applikative, værdiorienterede eller funktionsorienterede programmeringssprog, hvor program og inddata bygges sammen til et udtryk, og den ønskede databehandling opfattes som evaluering af dette udtryk til en værdi. De applikative sprog omfatter blandt andet Lisp, Scheme, ML, Hope, Miranda og Haskell. Logikprogrammering, går ud på at beskrive de egenskaber, uddata skal have, på en sådan måde, at denne beskrivelse kan danne grundlag for beregning; funktionsprogrammering og logikprogrammering kan under et betegnes deklarativ programmering. Eksempler på logikprogrammeringssprog er Prolog og SQL. Datamater med et applikativt sprog som maskinsprog har været konstrueret, men har ikke vundet stor udbredelse. I praksis afvikles ethvert højere programmeringssprog, hvad enten det er imperativt eller applikativt, på traditionelle imperative maskinarkitekturer ved hjælp af et passende afviklingsprogram Valg af programmeringssprog At løse en opgave ved hjælp af en datamat betyder at realisere en bestemt dataproces K og indebærer i praksis, at man vælger et bestemt højere programmeringssprog (imperativt eller applikativt), som man har adgang til et afviklingsprogram for, og skriver passende kode (et program p K eller en f K (...)). Der er en tendens til, at programmører opdeler sig i skoler, der (undertiden nærmest fanatisk) sværger til hver deres foretrukne programmeringssprog. Ved en mere nøgtern betragtning må det erkendes, at de forskellige sprog har hver deres styrker og svagheder. Tilstandsorienterede sprog holder mest konkret styr på, hvad der foregår i datamaten, og giver derigennem mulighed for konstruktion af meget effektive programmer. Effektiviteten opnås på bekostning af, at der er flere detaljer, man selv skal tage stilling til, så det bliver mere omstændeligt at nå frem til en løsning og vanskeligere at overbevise sig om, at den er korrekt. Programmeres efter det funktionsorienterede princip, kan det være vanskeligere at gennemskue, hvilke maskinaktiviteter der sættes i gang, og man kan uforvarende komme til at skrive ineffektive programmer. Nyere forskning inden for området betyder dog, at afviklingstiderne i de senere år er reduceret betydeligt. Først og fremmest opvejes eventuelle ulemper ved funktionsorienterede sprog af, at der er mange detaljer, man slipper for at tage stilling til, så man får langt større fleksibilitet, modularitet og udtrykskraft. Frem for et lager, hvis indhold varierer gennem beregningsforløbet, er det mentalt set enklere at have at gøre med bindinger mellem navne og værdier, hvor værdierne ikke ændrer sig, mens båndet består. Funktionsudtryk er sædvanligvis velstrukturerede og lette at afprøve og at ræsonnere om. Derfor er et funktionsorienteret sprog også velegnet ved introducerende undervisning. 15
16 1.6 Ind- og udlæsning Skal databehandlingsresultater forelægges mennesker, må det ske ved påvirkning af en af vore fem sanser i praksis synet og/eller hørelsen. Inddata må frembringes af vores bevægeapparat: først og fremmest fingre og hænder, eventuelt tale. De første seriefremstillede datamater var forbundet med en elektrisk skrivemaskine, således at inddata hentedes fra tastaturet, og uddata var maskinskrevet tekst på papir. Megen ingeniørmæssig energi og opfindsomhed er investeret i at udvikle hurtigere og bedre måder at kommunikere med maskinerne på; i moderne datamater præsenteres resultater som billeder på en skærm, eventuelt i farver, og som lyd eller musik, mens inddata kan komme fra tastaturet eller ved at der er brugt en mus og trykket på musens knapper. Der er også skærme, som kan reagere, når der peges på dem, og man kunne forestille sig mange andre muligheder. Alle signaler kan digitaliseres; bag de farvebilleder, skærmen viser, ligger en repræsentation, som for hvert punkt på skærmen angiver dets farve og lysintensitet. Psykologisk er det naturligvis af stor betydning, om man præsenteres for et rigtigt billede eller bare for en tabel af indgange af formen (x, y, farvekode), men det informationsteoretiske indhold er det samme. Programmer i et højere programmeringssprog formuleres som tekst, og i disse noter vil vi også gå ud fra, at ind- og uddata er tekster. I princippet er dette tilstrækkeligt til simulering af enhver dataproces: Der er standard-programpakker, som kan sørge for, at brug af musen bliver til indgangstekster a la venstre museknap nedtrykket i skærmkoordinat (x, y), og at udgangstekster med (x, y, farvekode) bliver vist som billeder på skærmen. Kernen i at lære at programmere går derfor ud på at konstruere programmer med tekst som ind- og uddata. 1.7 Alfabeter Fejloversat fra engelsk kaldes et alfabet, som er en mængde af tegn (eng.:character set), også for et tegnsæt. Forskellen på en mængde og et sæt er, at der ikke er nogen organisation i en mængde, mens elementerne i et sæt er ordnet. Brugt som digitale data har tegn i et alfabet imidlertid hver deres kode eller vægt, og betegnelsen tegnsæt giver da alligevel mening, idet man kan tænke sig alfabetets tegn stillet op i rækkefølge efter vægt. Hvordan noget skal repræsenteres, er kun i meget ringe grad naturligt og kan vælges næsten fuldstændig frit. I begyndelsen, hvor hver computer var en autonom installation, og hvert fabrikat derfor omtrent havde sit eget alfabet, var et stort antal alfabeter i brug. Med udbredelsen af datakommunikation blev der behov for standardisering, og antallet af forskellige alfabeter er efterhånden reduceret. I det følgende omtales de tre alfabeter, man hyppigst støder på i dag: ISOs 7 bit-kode, ISOs 8 bit-kode og Unicode ISO s 7 bit-kode Sædvanlig maskinskreven tekst er også digital: Alfabetet består af de forskellige skrifttegn (også kaldet grafemer), maskinen kan frembringe, og positionerne er anslagene mod papiret. En af mulighederne for en position er ikke at have noget grafem tilknyttet; denne 16
17 mulighed regnes med blandt skrifttegnene og kaldes et blanktegn. Det mest almindeligt anvendte grafiske tegnsæt ASCII (American Standard Code for Information Interchange) har udviklet sig fra det internationale fjernskriveralfabet og er i let modificeret form blevet anerkendt af den internationale standardiseringsorganisation ISO som standarden ISO 646. Det har 128 forskellige tegn, som både omfatter grafiske tegn (blanktegn, cifre, bogstaver og specialtegn) og forskellige ikke-grafiske tegn til opstilling, styring med mere, se tabel 1.1. Da man i totalssystemet netop får 128 talord ved at bruge 7 bit, kaldes koden også for ISOs 7 bit-kode. kode NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 16 DLE DC 1 DC 2 DC 3 DC 4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 32 SP! " /# $/ % & ( ) * +, -. / : ; < = >? A B C D E F G H I J K L M N O 80 P Q R S T U V W X Y Z Æ/[ Ø/\ Å/] ^ 96 ` a b c d e f g h i j k l m n o 112 p q r s t u v w x y z æ/{ ø/ å/} /~ DEL Tabel 1.1: DS/ISO 646 og DS At alfabetet primært er konstrueret med henblik på transmission, afspejler sig i det store antal ikke-grafiske tegn; nogle af disse styrer tegnenes opstilling eller andre terminalfunktioner og forklares i tabellen nedenfor (styretegnenes tilsigtede virkning kan ses i appendiks A). Som man kan se, stammer mange af betegnelserne fra den gang, hvor en terminal var en skrivemaskine med valse og slæde. kode forkortelse navn virkning 7 BEL Bell egentlig klokke : får terminalen til at afgive lyd (sige bip ) 8 BS Backspace tilbagerykningstegn (én position mod venstre) 9 HT Horizontal tabulation tabuleringstegn: fremrykning mod højre til næste tabuleringsmærke 10 LF Line feed linjeskift: en linje nedad; egentlig uden ændring af positionen i tværgående retning (og skift til ny linje styres da af to tegn, i rækkefølgen CR+LF), men hvis udstyret tillader det, kan man vælge at lade dette tegn (som da også forkortes NL, New line) betyde skift til forrest på næste linje 11 VT Vertical tabulering nedad tabulation 12 FF Form feed sideskift 13 CR Carriage vognretur: tilbagerykning til linjens begyndelse return 32 SP Space blanktegn På en skærm (og på papir) er tegn stillet op i to dimensioner; omformningen til en en- 17
18 dimensional række finder sted ved, at teksten opfattes som en sekvens af vandrette linjer, som opstilles efter hinanden, idet der efter hver linje indsættes et linjeskift; blanke dele yderst til højre på linjerne er uden betydning og kan udelades. Som et eksempel vil teksten kunne sendes som sekvensen Her er et eksempel på, hvorledes en tekst transmitteres. Her er et eksempel på, hvorledes en tekst transmitteres. hvor blanktegn (kode 32) er vist som og ny-linje-tegn (kode 10) som. Et tastatur behøver ikke at have en tast for hvert tegn, der skal kunne frembringes: flere taster kan benyttes i kombination. Der kan være parallelle skiftenøgler, som skal holdes nede, samtidig med at man trykker på en anden tast. Princippet kendes fra den måde, hvorpå man på en sædvanlig skrivemaskine frembringer de store bogstaver, men ud over denne nøgle, betegnet Shift, kan en arbejdsplads have skiftenøgler betegnet Option (eller Alt eller Select ) og Ctrl. Det er almindeligt at lade Ctrl virke på den måde, at man får dannet det tegn, hvis kode er 64 (eller 96) mindre end det tegn, man ellers ville få (se tabel 1.1). I mange programmeringssprog kan en beregning, der er løbet løbsk, standses ved, at man sender ETX (kode 3); det sker så ved, at Ctrl holdes nede, mens man taster c. Et serielt ikke-låsende skiftetegn eller undvigelsestegn (eng.:escape character) ændrer det umiddelbart efterfølgende tegns betydning; på mange tastaturer fungerer accent-taster på den måde: accenten placeres over det efterfølgende tegn; tasten Esc, der sender tegnet ESC (kode 27), har en tilsvarende virkning. Man kan også have låsende skiftetegn, hvor et såkaldt skift-ud-tegn ændrer betydning for alle efterfølgende tegn, indtil der kommer et skift-ind-tegn. I modsætning til konstruktionen på en gammeldags skrivemaskine er det på en arbejdsplads sådan, at den tast (mærket Caps Lock ), der låser til store bogstaver, ikke sætter den normale skiftenøgle ud af funktion: det er nemlig kun tasterne med bogstaver på, hvis virkning ændres; for de andre taster er det stadig nødvendigt at kombinere med skiftenøglen, hvis man vil frembringe tegnet for oven på tasten. Gruppering Trods standardiseringsbestræbelserne er der en række forhold, man ikke har kunnet enes om. Linjeskift. Svarende til, at overgangen fra en linje til den næste egentlig kombinerer to bevægelser (tilbage til venstre margin + en linje ned), skulle linjeskift oprindeligt angives CR (kode 13) + LF (kode 10), og sådan er konventionen også i operativsystemerne MS Windows 95/98/... Standarden åbner mulighed for, at man kan nøjes med med LF (kode 10); dette alternativ har man valgt under operativsystemet Unix. Også på Macintosh nøjes man med ét tegn, men det er (i strid med standarden) CR (kode 13). 18
19 Mellemrum. Horisontal tabulering og blanktegn (og kombinationer af dem) danner mellemrum mellem de grafiske tegn, men der er ikke enighed om, hvorvidt blanktegnet selv skal klassificeres som grafisk eller ej. I programmeringssproget Standard ML har man en lang række prædikater til klassifikation af tegn (se [5, D.3.3]), og man har valgt, at om blanktegn skal Char.isPrint (is a printable character) være sandt, men Char.isGraph (is a graphical character) være falsk. De danske bogstaver Den oprindelige ide i ISO 646 var at holde syv pladser (koderne 64, 91, 92, 93, 123, 124, 125, med mulighed for udvidelse til ti pladser ved også at inddrage kode 94, 96 og 126) ledige til nationale udvidelser af alfabetet. Desuden kunne anførelsestegn, apostrof, komma, pilespids-opad og overstregning i kombination med tilbagerykningstegn bruges som accenterne henholdsvis trema (to prikker), aigu, cedille, cirkumfleks og tilde. Dansk Standardiseringsråd foreskrev derfor i DS 2089, at æ, ø, å, Æ, Ø og Å skulle placeres som vist i tabel 1.1. Desværre er de tegn, som derved bliver utilgængelige først og fremmest kantede og krøllede parenteser vanskelige at undvære inden for programmering, og det må konstateres, at den danske standard aldrig rigtig er slået an. Hertil kommer, at otte bit, svarende til et repertoire på 256 muligheder, er en mere naturlig enhed på nutidens maskiner end syv 2. ISO 646-koden afløses derfor i stigende grad af mere omfattende tegnsæt ISO s 8 bit-kode En gruppe på 8 bit, der kaldes en byte 3 og kan rumme 256 forskellige muligheder, er en naturlig dataenhed for computere. Lagerstørrelser måles som regel i byte, maskinens naturlige repræsentationer af heltal, reelle tal og ordrer vil være et helt antal byte, og ofte er en byte den mindste adresserbare lagerenhed. ISO 8859 standardiserer en familie af alfabeter indeholdende lutter grafiske tegn med koder mellem 0 og 255, så de kan rummes inden for en byte. Af dem er det såkaldte latinske alfabet nummer 1 indrettet med henblik på at indeholde alle de tegn, som kræves i vesteuropæiske sprog (nærmere bestemt catalansk, dansk, engelsk, fransk, færøsk, irsk, islandsk, italiensk, nederlandsk, norsk, portugisisk, spansk, svensk og tysk). Til gengæld er det ikke meningen, at der skal bruges mere end én kode for noget grafisk tegn inden for denne standard (bogstaver med accent regnes med andre ord for selvstændige tegn og må ikke dannes ved kombinationer og tilbagerykning). Som det fremgår af tabel 1.2 er der ved denne udvidelse ikke alene blevet plads til æ/æ, ø/ø og å/å, men også til svensk og tysk ä/ä og ö/ö, tysk ü/ü og ß, islandsk og færøsk d -/D- med meget mere. Al standardisering er et kompromis, men det er alligvel forbavsende, at fransk œ/œ ikke er lagt ind i steden for /. Forklaringen er, at medlemmerne af standardiseringskommissionen har defineret Œ som ligatur (typografisk sammenskrivning) af O og E, ligesom (i nederlandsk) ij og IJ er ligaturer, eller fi og fl er ligaturer for fi og fl. 2 selv om den ottende bit ved asynkron transmission kunne bruges som paritetskontrol. 3 De foreslåede fordanskninger til stavelse eller oktet er ikke slået an. 19
20 kode ikke i tabel 32 SP! " # $ % & ( ) * +, -. / : ; < = >? A B C D E F G H I J K L M N O 80 P Q R S T U V W X Y Z [ \ ] ^ 96 ` a b c d e f g h i j k l m n o 112 p q r s t u v w x y z { } ~ ikke i tabel 160 NBSP c Y= c ā << SHY R 176 ± ō µ >> À Á ^A ~A Ä Å Æ Ç È É ^E Ë Ì Í ^I Ï 208 D- ~N Ò Ó ^O ~O Ö Ø Ù Ú ^U Ü Ý bp ß 224 à á ^a ~a ä å æ ç è é ^e ë ì í ^ı ï 240 d- ~n ò ó ^o ~o ö ø ù ú ^u ü ý bp ÿ ikke i tabel Tabel 1.2: ISO 8859 Part 1: Latin alphabet No. 1. Vores æ/æ blev også i begyndelsen kaldt en ligatur og først ved en senere rettelse accepteret som selvstændigt bogstav! HTML-kodning Ved at udnytte elektronisk lagrings muligheder for effektiv adgang til alverdens oplysninger kan man bygge systemer, der ud fra henvisninger i en tekst hurtigt finder frem til det, der henvises til. Med den slags systemer til rådighed ændrer begrebet tekst karakter: snarere end en lineær strøm fornemmes den som en struktur med dybde i, og betegnelsen hypertekst er foreslået indført for at dække dette nye begreb. Kort kan en hypertekst måske forklares som en tekst med aktive henvisninger, og det er klart, at der så bliver brug for et særligt formuleringssprog, et afmærkningssprog, at skrive den slags tekster i. HTML står for HyperText Markup Language og er dels en betegnelse for selve begrebet (afmærkningssprog til at skrive hypertekster i), dels en betegnelse for et ganske bestemt sådant sprog, der er vidt udbredt og blandt andet benyttes af systemerne Netscape og Internet Explorer. De forhold, som omtales her, gælder version 2.0 af HTML. Sproget er sådan indrettet, at man ved udformning af kildeteksterne bag HTML-dokumenter kan nøjes med tegn fra ISOs 7 bit-sæt. For i teksten se DIKUs hjemmeside i et HTML-dokument at få ordene DIKUs hjemmeside til at henvise til DIKUs hjemmeside skal man indføre et såkaldt anker i kildeteksten: se <a href = " hjemmeside</a> Ud over de egentlige henvisninger er der i HTML en lang række muligheder for at angive forskellige typografiske opstillinger af teksten. Fremhævelse (som regel med kursiv) angives 20
Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Datamatiske principper
Datalogi 0 GA Forelæsning 1 2 1. september 2003 Nils Andersen Datamatiske principper EDB som simulering Programmering Problemløsning Tilstandsorienteret Værdiorienteret (= funktionsorienteret) Administrative
Læs mereFormål: Indledning: Notationer
Formål: Formålet med dette kompendium er at gennemgå de forskellige principper bag EDB printeren, således at læseren efter gennemgangen, har overblik over printeren som enhed. Indledning: I nudansk ordbog
Læs mereSproget 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 mereIt og informationssøgning Forelæsning 1 6. september 2006 Nils Andersen. Beregning på computer
It og informationssøgning Forelæsning 1 6. september 2006 Nils Andersen Beregning på computer Begrebet data Universel computer Højere programmeringssprog Python Dialogdrift Fejl (syntaksf., udførelsesf.,
Læs mereIt og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning
It og informationssøgning Forelæsning 2 13. september 2006 Nils Andersen Underprogrammer og betingelser Standardfunktioner, typeomsætning Funktionskald Moduler, lange navne Brugerdefinerede funktioner
Læs mereTalregning. Aktivitet Emne Klassetrin Side. Indledning til VisiRegn ideer 1-7 2 Oversigt over VisiRegn ideer 1-7 3
VisiRegn ideer 1 Talregning Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Indledning til VisiRegn ideer 1-7 2 Oversigt over VisiRegn ideer 1-7 3 Vejledning til Talregning
Læs mereALMINDELIGT ANVENDTE FUNKTIONER
ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner
Læs mereElementær Matematik. Mængder og udsagn
Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde er
Læs mereSproget 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 mereDe 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 mereDatalogi 0 GA Forelæsning september 2003 Nils Andersen. Tegn og tekster. Listefunktionalen map. Naïv sortering
Datalogi 0 GA Forelæsning 11 12 18. september 2003 Nils Andersen Tegn og tekster. Listefunktionalen map. Naïv sortering Typen char af tegn Typen string af tekster Eksempler Højereordensfunktionen map Sortering
Læs mereChapter. Information Representation
Chapter 3 Information Representation (a) A seven-bit cell. Figure 3. Figure 3. (Continued) (b) Some possible values in a seven-bit cell. Figure 3. (Continued) 6 8 7 2 5 J A N U A R Y (c) Some impossible
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 mereComputeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang.
Den tekniske platform Af redaktionen Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang. Teknologisk udvikling går således hånd i hånd med videnskabelig udvikling.
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 mereSproget 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 mereBaggrundsnote 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 mereIt og informationssøgning Forelæsning september 2006 Nils Andersen. Gentagelser og tekster
It og informationssøgning Forelæsning 3 20. september 2006 Nils Andersen Gentagelser og tekster Dokumentationstekster Iteration (gentagelse) - med while - med for En- og todimensionale tabeller Typen af
Læs meredcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)
dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal
Læs mereMaple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.
Maple Dette kapitel giver en kort introduktion til hvordan Maple 12 kan benyttes til at løse mange af de opgaver, som man bliver mødt med i matematiktimerne på HHX. Skærmbilledet Vi starter med at se lidt
Læs mere3. Om skalamønstrene og den indfoldede orden
Dette er den tredje af fem artikler under den fælles overskrift Studier på grundlag af programmet SKALAGENERATOREN (forfatter: Jørgen Erichsen) 3. Om skalamønstrene og den indfoldede orden Lad os begynde
Læs mere(Positions) Talsystemer
(Positions) Talsystemer For IT studerende Hernik Kressner Indholdsfortegnelse Indledning...2 Positions talsystem - Generelt...3 For decimalsystemet gælder generelt:...4 Generelt for et posistionstalsystem
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 mereStregkodereferencevejledning
Stregkodereferencevejledning Version 0 DAN 1 Introduktion 1 Oversigt 1 1 Denne referencevejledning indeholder information om stregkodeudskrivning ved hjælp af kontrolkommandoer, der sendes direkte til
Læs mereMatricer og lineære ligningssystemer
Matricer og lineære ligningssystemer Grete Ridder Ebbesen Virum Gymnasium Indhold 1 Matricer 11 Grundlæggende begreber 1 Regning med matricer 3 13 Kvadratiske matricer og determinant 9 14 Invers matrix
Læs mereNoter 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 mereAppendiks 6: Universet som en matematisk struktur
Appendiks 6: Universet som en matematisk struktur En matematisk struktur er et meget abstrakt dyr, der kan defineres på følgende måde: En mængde, S, af elementer {s 1, s 2,,s n }, mellem hvilke der findes
Læs mereRepræsentation af tal
Repræsentation af tal DM534 Rolf Fagerberg 1 / 18 Mål Målet for disse slides er at beskrive, hvordan tal repræsenteres som bitmønstre i computere. Dette emne er et uddrag af kurset DM548 Computerarkitektur
Læs mereDen sproglige vending i filosofien
ge til forståelsen af de begreber, med hvilke man udtrykte og talte om denne viden. Det blev kimen til en afgørende ændring af forståelsen af forholdet mellem empirisk videnskab og filosofisk refleksion,
Læs mereBoolesk Algebra og det binære talsystem - temahæfte informatik. Oprindelse.
Boolesk Algebra og det binære talsystem - temahæfte informatik. I dette hæfte arbejdes der med to-tals systemet og logiske udtryk. Vi oplever at de almindelige regneregler også gælder her, og vi prøver
Læs mereHvad er matematik? C, i-bog ISBN 978 87 7066 499 8
Et af de helt store videnskabelige projekter i 1700-tallets Danmark var kortlægningen af Danmark. Projektet blev varetaget af Det Kongelige Danske Videnskabernes Selskab og løb over en periode på et halvt
Læs mereComputerarkitektur. - en introduktion til computerarkitektur med LINDA
Computerarkitektur - en introduktion til computerarkitektur med LINDA faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig
Læs mere3 Algebra. Faglige mål. Variable og brøker. Den distributive lov. Potenser og rødder
3 Algebra Faglige mål Kapitlet Algebra tager udgangspunkt i følgende faglige mål: Variable og brøker: kende enkle algebraiske udtryk med brøker og kunne behandle disse ved at finde fællesnævner. Den distributive
Læs mereDATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004
Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes
Læs mereRepræsentation af tal
Repræsentation af tal DM526 Rolf Fagerberg, 2009 Bitmønstre 01101011 0001100101011011... Bitmønstre skal fortolkes for at have en betydning: Tal (heltal, kommatal) Bogstaver Computerinstruktion (program)
Læs 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 mereOmskrivningsregler. Frank Nasser. 10. december 2011
Omskrivningsregler Frank Nasser 10. december 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 mereSkriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Læs mereLagervisning. Dina Friis, og Niels Boldt,
Lagervisning Dina Friis, dina@diku.dk og Niels Boldt, boldt@diku.dk 6. april 2001 Kapitel 1 Sammenfatning Dette dokument er et eksempel på en delvis besvarelse af G-opgaven stillet på Datalogi 0 2000-2001.
Læs mereSelam Friskole Fagplan for Matematik
Selam Friskole Fagplan for Matematik Formål Formålet med undervisningen er, at eleverne udvikler matematiske kompetencer og opnår viden og kunnen således, at de bliver i stand til at begå sig hensigtsmæssigt
Læs mereTalrækker. Aktivitet Emne Klassetrin Side
VisiRegn ideer 3 Talrækker Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Talrækker 2-4 Elevaktiviteter til Talrækker 3.1 Talrækker (1) M-Æ 5-9 3.2 Hanoi-spillet
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 mereTal. Vi mener, vi kender og kan bruge følgende talmængder: N : de positive hele tal, Z : de hele tal, Q: de rationale tal.
1 Tal Tal kan forekomme os nærmest at være selvfølgelige, umiddelbare og naturgivne. Men det er kun, fordi vi har vænnet os til dem. Som det vil fremgå af vores timer, har de mange overraskende egenskaber
Læs mereNoter til Perspektiver i Matematikken
Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden
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 mereITS MP 013. Talsystemer V009. Elevens navn. IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:+45 76 42 62 44
ITS MP 013 V009 Elevens navn IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:+45 76 42 62 44 ITS MP 013 Udarbejdet af Søren Haahr, juni 2010 Copyright Enhver mangfoldiggørelse af tekst eller illustrationer
Læs mereØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER
ØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER INDHOLDSFORTEGNELSE 0. FORMELSAMLING TIL FORMLER OG LIGNINGER... 2 Tal, regneoperationer og ligninger... 2 Isolere en ubekendt... 3 Hvis x står i første brilleglas...
Læs mereInduktive og rekursive definitioner
Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal
Læs mereMATEMATIK. Formål for faget
MATEMATIK Formål for faget Formålet med undervisningen er, at eleverne udvikler matematiske kompetencer og opnår viden og kunnen således, at de bliver i stand til at begå sig hensigtsmæssigt i matematikrelaterede
Læs mereRepræsentation af tal
Repræsentation af tal DM534 Rolf Fagerberg Mål Målet for disse slides er at beskrive, hvordan tal repræsenteres som bitmønstre i computere. Dette emne er et uddrag af kurset DM548 Computerarkitektur og
Læs mereLø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 mereHow to do in rows and columns 8
INTRODUKTION TIL REGNEARK Denne artikel handler generelt om, hvad regneark egentlig er, og hvordan det bruges på et principielt plan. Indholdet bør derfor kunne anvendes uden hensyn til, hvilken version
Læs 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 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 mereOprids over grundforløbet i matematik
Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
Læs mereBRP Tal. Om computer-repræsentation og -manipulation. Logaritmer
BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave
Læs mereAPPENDIX 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 mereGrundlæ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 mereRepræsentation af tal
Repræsentation af tal DM534 Rolf Fagerberg Bitmønstre 01101011 0001100101011011... Bitmønstre skal fortolkes for at have en betydning: Tal (heltal, decimaltal (kommatal)) Bogstaver Computerinstruktion
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 mereMatematik samlet evaluering for Ahi Internationale Skole
efter 3.klasse. e efter 6.klasse. e Skole efter 9.klasse. e indgå i dialog om spørgsmål og svar, som er karakteristiske i arbejdet med matematik (tankegangskompetence formulere sig skriftligt og mundtligt
Læs mere4. Snittets kædebrøksfremstilling og dets konvergenter
Dette er den fjerde af fem artikler under den fælles overskrift Studier på grundlag af programmet SKALAGENERATOREN (forfatter: Jørgen Erichsen) 4. Snittets kædebrøksfremstilling og dets konvergenter Vi
Læs mereVisiRegn: En e-bro mellem regning og algebra
Artikel i Matematik nr. 2 marts 2001 VisiRegn: En e-bro mellem regning og algebra Inge B. Larsen Siden midten af 80 erne har vi i INFA-projektet arbejdet med at udvikle regne(arks)programmer til skolens
Læs mere3. klasse 6. klasse 9. klasse
Børne- og Undervisningsudvalget 2012-13 BUU Alm.del Bilag 326 Offentligt Elevplan 3. klasse 6. klasse 9. klasse Matematiske kompetencer Status tal og algebra sikker i, er usikker i de naturlige tals opbygning
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 mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereMODELSÆT 2; MATEMATIK TIL LÆREREKSAMEN
MODELSÆT ; MATEMATIK TIL LÆREREKSAMEN Forberedende materiale Den individuelle skriftlige røve i matematik vil tage udgangsunkt i følgende materiale:. En diskette med to regnearks-filer og en MathCad-fil..
Læs mereRegneark hvorfor nu det?
Regneark hvorfor nu det? Af seminarielektor, cand. pæd. Arne Mogensen Et åbent program et værktøj... 2 Sådan ser det ud... 3 Type 1 Beregning... 3 Type 2 Præsentation... 4 Type 3 Gæt... 5 Type 4 Eksperiment...
Læs mereRegulære udtryk og endelige automater
Regulære udtryk og endelige automater Regulære udtryk: deklarative dvs. ofte velegnede til at specificere regulære sprog Endelige automater: operationelle dvs. bedre egnet til at afgøre om en given streng
Læs mereSymbolbehandlingskompetencen er central gennem arbejdet med hele kapitlet i elevernes arbejde med tal og regneregler.
Det første kapitel i grundbogen til Kolorit i 8. klasse handler om tal og regning. Kapitlet indledes med, at vores titalssystem som positionssystem sættes i en historisk sammenhæng. Gennem arbejdet med
Læs mereGrundliggende regning og talforståelse
Grundliggende regning og talforståelse De fire regnearter: Plus, minus, gange og division... 2 10-tals-systemet... 4 Afrunding af tal... 5 Regning med papir og blyant... 6 Store tal... 8 Negative tal...
Læs mereBoolsk algebra For IT studerende
Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse 1 Indledning...2 2 Logiske kredsløb...3 Eksempel:...3 Operatorer...4 NOT operatoren...4 AND operatoren...5 OR operatoren...6 XOR operatoren...7
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 mereAffine - et krypteringssystem
Affine - et krypteringssystem Matematik, når det er bedst Det Affine Krypteringssystem (Affine Cipher) Det Affine Krypteringssystem er en symmetrisk monoalfabetisk substitutionskode, der er baseret på
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereπ can never be expressed in numbers. William Jones og John Machins algoritme til beregning af π
can never be expressed in numbers. William Jones og John Machins algoritme til beregning af. Oprindelsen til symbolet Første gang vi møder symbolet som betegnelse for forholdet mellem en cirkels omkreds
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 mereUndervisningsplan for matematik
Undervisningsplan for matematik Formål for faget Formålet med undervisningen i matematik er, at eleverne udvikler kompetencer og opnår viden og kunnen således, at de bliver i stand til at begå sig hensigtsmæssigt
Læs mereÅrsplan for 2. årgang. Kapitel 1: Jubii. Kapitel 2: Mere om positionssystemet
Årsplan for. årgang Trix A Kapitel : Jubii Det første kapitel i. klasse samler op på det matematiske stof, som eleverne har lært i. klasse. Jubii giver dermed læreren mulighed for at screene, hvor klassen
Læs merePointen med Funktioner
Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en
Læs mereSpace Challenge og Undervisningsminsteriets Fælles Mål for folkeskolen
Space Challenge og Undervisningsminsteriets Fælles Mål for folkeskolen I dette kapitel beskrives det, hvilke Fælles Mål man kan nå inden for udvalgte fag, når man i skolen laver aktiviteter med Space Challenge.
Læs mereDe fire elementers kostbare spejl
Projekt.6 Lineær algebra moderne og klassisk kinesisk De fire elementers kostbare spejl "Som bekendt anses matematikken for at være en meget vigtig videnskab. Denne bog om matematik vil derfor være af
Læs mereGödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931
Kommentar til 1 Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Denne afhandling af den 24-årige Kurt Gödel er blevet en klassiker. Det er vist den eneste
Læs 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 mereÅrsplan for 2. årgang Kapitel 1: Jubii. Kapitel 2: Mere om positionssystemet
Årsplan for. årgang 08-9 Materialer: Trix A, Trix B samt tilhørende kopiark. Trix træningshæfte. Øvehæfte og 4. Andet relevant materiale. Trix A Kapitel : Jubii Det første kapitel i. klasse samler op på
Læs mereÅrsplan matematik 5. klasse. Kapitel 1: Godt i gang
Årsplan matematik 5. klasse Kapitel : Godt i gang I bogens første kapitel får eleverne mulighed for at repetere det faglige stof, som de arbejdede med i 4. klasse. Kapitlet er udformet som en storyline
Læs mereKapitel 2 Tal og variable
Tal og variable Uden tal ingen matematik - matematik handler om tal og anvendelse af tal. Matematik beskæftiger sig ikke udelukkende med konkrete problemer fra andre fag, og de konkrete tal fra andre fagområder
Læs mereFormål & Mål. Ingeniør- og naturvidenskabelig. Metodelære. Kursusgang 1 Målsætning. Kursusindhold. Introduktion til Metodelære. Indhold Kursusgang 1
Ingeniør- og naturvidenskabelig metodelære Dette kursusmateriale er udviklet af: Jesper H. Larsen Institut for Produktion Aalborg Universitet Kursusholder: Lars Peter Jensen Formål & Mål Formål: At støtte
Læs mereMATEMATIK. GIDEONSKOLENS UNDERVISNINGSPLAN Oversigt over undervisning i forhold til trinmål og slutmål
MATEMATIK GIDEONSKOLENS UNDERVISNINGSPLAN Oversigt over undervisning i forhold til trinmål og slutmål KOMMENTAR Vi har i det følgende foretaget en analyse og en sammenstilling af vore materialer til skriftlig
Læs mereEncoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2
Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding: Vi har tidligere set på spørgsmålet om et XML dokuments encoding. Det er generelt altid en god ide at gemme et dokument
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 mereDifferentialregning. Ib Michelsen
Differentialregning Ib Michelsen Ikast 2012 Forsidebilledet Tredjegradspolynomium i blåt med rød tangent Version: 0.02 (18-09-12) Denne side er (~ 2) Indholdsfortegnelse Introduktion...5 Definition af
Læs merePolynomiumsbrøker og asymptoter
Polynomiumsbrøker og asymptoter Frank Villa 9. marts 2012 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold
Læs mereGennem de sidste par årtier er en digital revolution fejet ind over vores tidligere så analoge samfund.
Den digitale verden et barn af oplysningstiden Af redaktionen Gennem de sidste par årtier er en digital revolution fejet ind over vores tidligere så analoge samfund. Den elektroniske computer er blevet
Læs mereHjerner i et kar - Hilary Putnam. noter af Mogens Lilleør, 1996
Hjerner i et kar - Hilary Putnam noter af Mogens Lilleør, 1996 Historien om 'hjerner i et kar' tjener til: 1) at rejse det klassiske, skepticistiske problem om den ydre verden og 2) at diskutere forholdet
Læs mereog til summer af stambrøker. Bemærk: De enkelte brøker kan opskrives på flere måder som summer af stambrøker.
Hvad er en brøk? Når vi taler om brøker i dette projekt, mener vi tal på formen a, hvor a og b er hele tal (og b b 0 ), fx 2,, 3 og 3 7 13 1. Øvelse 1 Hvordan vil du forklare, hvad 7 er? Brøker har været
Læs mereTalsystemer I V X L C D M 1 5 10 50 100 500 1000. Hvad betyder halvanden??. Kan man også sige Halvtredie???
Romertal. Hvordan var de struktureret?? Systematisk?? I V X L C D M 1 5 10 50 100 500 1000 Regler: Hvis et lille tal skrives foran et stort tal trækkes tallet fra: IV = 5-1 = 4 Hvis et lille tal skrives
Læs mereRekursion C#-version
Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet
Læs mereMed TI-89 / TI-92 Plus kan du også sammenligne eller manipulere binære tal bit for bit.
Kapitel 20: Talsystemer 20 Resumé af talsystemer... 344 Indtastning og omregning af talsystemer... 345 Udførelse af matematiske beregninger med hexadecimale og binære tal... 346 Sammenligning eller manipulation
Læs mere