Programmering C RTG - 3.3 09-02-2015



Relaterede dokumenter
Sammenlign og byt. Et eksempel på dokumentering af et program

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

Michael Jokil

Klasse 1.4 Michael Jokil

HTX, RTG. Rumlige Figurer. Matematik og programmering

Dokumentation af programmering i Python 2.75

DM536. Rapport og debug

Programmering I Java/C#

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Lær Python dag 1 - modul 1

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

I denne manual kan du finde en hurtig introduktion til hvordan du:

Formatering af tekst, JCE Editor, Joomla

Python 3 kursus lektion 1:

LCD Character display Intro

Visualiseringsprogram

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Opstart. I gang med Dreamweaver. Læs mere om... Generelle bemærkninger. Hvilken skærmopløsning? OBS

Opstart. I gang med Dreamweaver. Læs mere om...

Easy Guide i GallupPC

Vejledning til opbygning af hjemmesider

Vejledning til Teknisk opsætning

fotografisk kommunikation

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

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

Lav din egen forside i webtrees

Manual til Dynamicweb Februar 2010

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Coloris. Programmet fungere på den måde at man vælger det billede man ønsker at arbejde med ved at klikke på det under menupunktet Projekter.

Vejledning i redigering af apotekets hjemmeside

18/ Version 2.0 Side 1 af 36

MountainSite Guide: Kom godt i gang

Åbn Paint, som er et lille tegne- og billedbehandlingsprogram der findes under Programmer i mappen Tilbehør. Åbn også Word.

IT og Programmering eksamens projekt

Programmering for begyndere Lektion 2. Opsamling mm

Afsluttende - Projekt

Manual til hjemmeside i Typo3

Hjælpemenu tasten åbner for forskellige muligheder for redigering, alt afhængig af, hvilket et program der arbejdes med.

Start af nyt schematic projekt i Quartus II

Installation og afvikling

Picasa billedalbum og webalbum

Edb-tekstbehandling, præsentation mm

Arduino Programmering

Lonbox PCM2001 betjeningsenhed

Det skrå kast, en simulation

Med et filarkiv kan du give dine besøgende på din hjemmeside adgang til at hente dokumenter i Word, PDF, PowerPoint og Excel.

ActiveBuilder Brugermanual

Dokumentation. Workflow. Grafisk produktion. Trine Alexandersen 1. hovedforløb

Quickguide til kredscms. Login

Kom godt i gang med I-bogen

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Prezi. Aldrig mere gammeldaws slideshows!? Version: December 2012

Brug af Discoverer. 1. Start Discoverer ved at klikke på knappen Discoverer på

Braille Display Input kommandoer

xgalleri Mulige filtyper Installation web-version

Microsoft Visio 2013 DK

APPENDIX A INTRODUKTION TIL DERIVE

DM507 Algoritmer og datastrukturer

Guide til Condes. Indhold:

Mappestruktur- og logik i VuptiWeb er stort set den samme som på vores computer.

09/ Version 1.4 Side 1 af 37

1.0 Velkommen til manualen for Editor Editorens typiske udseende HTML-kode Generelle funktioner og deres ikoner 2

PowerPoint Intro 2010 Segment - en del af dit netværk

Redaktørvejledning for Skriv en artikel

Manual for Synkron hjemmesider

Annemette Søgaard Hansen/

Microcontroller, Arduino

ITSprint. Sådan printer du vha. print.supportcenter.dk ITS

Installationsguide til Oracle Database XE 10.2 og APEX 3.1.1

SIGIL Sådan opretter du en e- bog Step by Step

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Rapporter. Family Tree Maker Rapporter

En liste, hvor der kun kan angives et svar. En dropdown menu, hvori kun et svar kan vælges

Fang Prikkerne. Introduktion. Scratch

fotografisk kommunikation

Arduinostyret klimaanlæg Afsluttende projekt programmering C

ectrl vejledning ectrl Autorapporter

Opstart. I gang med Dreamweaver. Læs mere om...

En Kort Introduktion til Oracle

JØRGEN KOCH Office til ipad

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

OFFICEUNIVERSET.DK. ^ + SKIFT + ; (semikolon) Formellinje - skift mellem udvid og fold CTRL + SKIFT + U

Genvejstaster. Brugerfladen. Filhåndtering. Navigation i dokumentet. Aktiver adgangstaster. Aktiver genvejsmenu (højreklik)

Start på programmering (IT-hæfter fra Libris)

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN

Genvejstaster. Brugerfladen. Filhåndtering. Navigation i præsentationen. Aktiver adgangstaster

Tegninger ved skriftlig prøve i fysik A, stx Om tegning på pdf-filer med Adobe Acrobat Reader og andre programmer

Kom godt i gang med Fable-robotten

Programmering i C Intro og grundlæggende C 5. marts 2007

Vejledning til udskrivning af etiketter/labels og konvolutter i Blåt Medlem

Transkript:

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... 7 Problemer og mangler... 7 Specielle python koder fra min ASCII kode... 8 v1.9... 8 v2.1... 8 Konklusion... 9 Side 1 af 10

Formål Formålet med denne opgave er at lave en maskinlæsbar form af en standard ASCII tabel uden udvidelsen vha. python, som så oversætter det til en form der er læselig af mennesker. Opgave formulering Lav et program som udskriver tegnene i den oprindelige ASCII-tabel, altså de 128 tegn, på en nydelig måde i en tabel. Du kan selv vælge hvordan du formaterer din tabel. Følgende krav skal dog opfyldes: Programmet skal vise sit output på en skærm med 80 tegn (eller kolonner á et tegn) og 24 linjer. De ikke grafiske tegn (kontrol tegnene og mellemrum) skal representeres af en intelligent forkortelse med max tre store bogstaver. o Option: Hvis du har tid og lyst, så forklar betydningen af disse forkortelser i en tekst nedenfor eller ved siden af tabellen. Denne information skal også være synlig samtidig med selve tabellen. Tegnenes nummer skal anføres i umiddelbar nærhed til tegnet, således at der ikke kan være tvivl om hvilket tegn har hvilket nummer. Programmet skal kunne skrive tabellen til en tekstfil med navnet ascii_tabel_dit_bruger_navn.txt, som ligger i samme mappe/directory som kildekodefilen som gerna må hedde ascii_tabel_dit_bruger_navn_vxx.py, hvor vxx er versionsnumer for kildkoden (v01, v02 osv.). Du kan også bruge en anden metode til navngivning af dine kildekodefiler, - bare du let kan finde flere tidligere versioner af programmet når du er færdig og skal dokumentere udviklingsarbejdet. Programmet skal afprøves i en terminal (DOS prompt) hvor antal kolonner og rækker er sat til 80x24. Dokumenter udviklingen af nogle forskellige prototyper, f.eks. to, inklusive den endelige version, med tekst og skærmbilleder i en journal som du uploader og præsenterer kort på dit StudieWeb i en mappe med navnet ascii_tabel i dit home directory. Følgende skal uploades: 1. Kildekoden, evt. i flere forskellige versioner 2. Tekstfilen med ASCII tabellen 3. Journal på ca. 5 til 10 sider i PDF format (plus andre formater om du vil). I journalen skal du 3.1. beskrive de værktøjer du bar brugt (Python, editor osv.) 3.2. beskrive hvordan du har løst opgaven, gerne vha. blokdiagram og et flowchart. 3.3. vise forskellige versioner af kildekoden, 3.4. beskrive problemer og forklare hvordan du har løst dem. Side 2 af 10

3.5. gør kort rede for nogle af de Python-funktioner som du har brugt, specelt dem som du har brugt til håntering af strenge. Krav til dokumentation af programmer Når vi skal dokumenter udvikling af programmer, så kan vi bruge følgende liste over krav til dokumentationen som inspiration. For nogle programmer vil det være mindre meningsfuldt at bruge alle punkterne i listen, og for andre programmer vil der måske behøves tiltag som ikke nævnes i listen. Brug den som inspiration, vælg selv de punkter som du synes relevante for dit program: 1. User stories, en eller flere, som beskriver brugernes forventninger til programmet. Her er nogle eksempler. 2. Kerneproblemet (evt. flere problemer). Beskrivelse i prosa, på dansk!, af kerneproblemet, altså det eller de problemer som du skal løse for at komme i gang med programmeringen af den første prototype. (Dette krav er inspireret af "Bottom Up" tilgangen til programmering.) 3. Beskrivelse af brugerfladen for programmet (tekst UI, eller GUI). Tegn en eller flere skitser! 4. Use Case diagram, som visualiserer hvem skal bruge programmet og til hvad det skal bruges. Her kan f.eks. ArgoUML eller Dia bruges. Sparxsystems har en beskrivelse af opbygningen i de forskellige UML-diagrammer. 5. Klassediagram, som viser de vigtigste klasser i programmet. Her kan f.eks. ArgoUML eller Dia bruges. 6. Input. En beskrivelse af input (inddata) til programmet. Hvilke data, deres datatype og mening for brugeren. 7. Operationer på inddata, altså en beskrivelse af de operationer som programmet skal udføre på inddata. 8. Output. Beskrivelse af output (uddata) fra programmet. Hvilke data, deres datatype og mening for brugeren. 9. Flowchart (rutediagram) som viser programmets logiske opbygning/struktur. (Flowcharting, flowchart, brug gerne programmet Dia og for Dia til Windows se her. 10. Kildekoden for det færdige program, formateret med en non-proportional font, altså med et skriftsnit hvor alle bogstaver er lige brede. Det bevirker at indrykninger i kildekoden ikke forvanskes. Prøv også at bruge ikke større bogstaver end 12 punkter, evt. kun 10 punkter hvis der er mange lange linier i kildekoden som ellers ville deles på to linier (wrap to the next line). 11. Skærmbilleder som viser/dokumenterer hvordan det færdige program bruges/virker. Husk at i Windows så kan det det valgte, eller aktive vindue, kopieres til klippebordet (clipboard) med tastkombinationen Alt+PrtScr. Det kan være praktisk for at undgå at skulle paste skærmbilledet ind i et billedredigeringsprogram alene for manuelt at klippe vinduet ud fra hele skærmbilledet. Side 3 af 10

12. Et skærmbillede, eller flere, som viser udviklingsmiljøet, kildekoden, Python shell'en og evt. debuggeren i funktion med en kort kommentar/forklaring. 13. Diskussion/beskrivelse af de sætninge (statements) og evt. funktioner i Python som du har brugt i dit program. 14. Diskussion/beskrivelse af de eksterne funktionsbiblioteker (Python moduler) du evt. har brugt i dit program. ASCII tabel For at fortælle om mit python program vil jeg først forklare hvad en ASCII tabel egentlig er. ASCII står for American Standard Code for Information Interchange (amerikansk standardkode til udveksling af information). ASCII definere en transformation mellem grafiske tegn og binære værdier. ASCII finder dermed anvendelse når tekst på grafisk form, der er læselig af mennesker, ønskes repræsenteret på elektronisk maskinlæsbar form. ASCII tabellen består oprindeligt af 128 tegn (0-127) og blev offentliggjort i 1963. Side 4 af 10

ASCII tabellen har dog fået en udvidelse på 128 ekstra tegn, så ASCII blev til 256 tegn (0-255). Værktøjer Jeg startede med at bruge standard programmet PyScripter, som er et udemærkede program til at skrive python kode ned, men jeg gik videre til programmet PyCharm. Dette program er bedre til projekter, da man kan lave flere små python filer i mapper. Disse mapper og filer har man adgang til i venstre side i en slags manager. Derved kan man hurtigt komme til at sine forskellige versioner igennem projektet og derved giver det meget mere rig mulighed for udvikling. Her ses PyCharm programmet. Side 5 af 10

Til information angående python koder har jeg brugt bogen How To Think Like A Computer Scientist og diverse internetkilder. Versioner af ASCII tabel Idet at jeg har lavet en ASCII tabel i python, blev min kode udviklet mere og mere. Jeg har taget to eksempler af mine koder, hvor der er et stort spring i udviklingen. Mine to eksempler har samme udseende på nær nogle forkortelser, som indgår i v2.1. Ud over det er beskrivelsen af forkortelserne også tilføjet i v2.1. v1.9 I min version 1.9 har jeg en meget simpel kode, hvor der er blevet levet op til alle kravene. En optimering for denne kode kunne være at give hvert tegn for 0-31deres oprindelige forkortelse i stedet for NUL. Her ses min kode, som oversættes, så det er læseligt for et menneske. Denne kode består blot af en masse start variabler, som jeg hidkalder i et loop, der kører 16 gange for hver variabel. Hver variabel har jeg sat til at vokse med 1 hver gang, så tallene vokser og derved ændre tal og tegn sig. Problemer og mangler I denne version er manglerne: - Forkortelser for tegn 0-31 plus 127. - Forklaring af forkortelser. Det er som så ikke nogle problemer med denne kode. Side 6 af 10

v2.1 I min version 2.1 har jeg lavet en lidt svær kode i brug, men som ser mere professionel ud og fylder mindre. Det vil sige at den er mere avanceret, da den køre et loop i et loop. Her ses min kode, som oversættes, så det er læseligt for et menneske. Denne kode kører af to loop altså gentagelser. En for hen og en for ned, lidt som en x- og y-akse. Loopet for i er ned og loopet for j er hen. Problemer og mangler Denne version er helt som den skal være. Der er kun en lille visuel irritation, som er at tallene 100-111 står helt op ad skillevæggen, men hvis jeg skubbede dem fra hinanden med et mellemrum ville der ikke være plads til tegn 127, altså DEL. DEL ville jeg hellere have indgik, så det bare være mindre visuelt flot for 100-111 end at et tegn kun var halvt. Denne fejl skylles at tabellen kun måtte være 80 tegn lang. Side 7 af 10

Specielle python koder fra min ASCII kode v1.9 I denne version har jeg brugt chr(124) i stedet for, da jeg i starten ikke kunne finde ud af at indtaste, men samtidigt gør jeg brug af ASCII i det jeg programmere en ASCII tabel, som jeg synes er en sjov tanke. Angående loop, altså gentagelse bruger jeg: for i in range(16):. Den får den efterfulgte kode til at gentage sige 16 gange. Generelt når jeg skriver chr() hidkalder jeg tegn fra ASCII. Når variablerne indsættes i chr() afkodes variablen til sit tal og hidkalder derved det ønskede nummer fra ASCII, som så bliver til et ASCII tegn. print () funktionen er blot en kommando for at udskrive koden ud til kommandoprompt også kendt som cmd. Når en funktion som denne ( " " if a < 10 else "") bliver taget i brug er det for at fortælle at hvis en variabel er nogle specielle tal skal der udskrives hvad, der står imellem de første to gåse øjne. Resten af tallene skal følge gåse øjne sæt nummer to. I det ovennævnte eksempel beskriver koden at der skal laves et mellemrum, hvis tallet er under 10 og hvis tallet er lig med eller over 10 skal der ikke være noget som helst. end= betyder blot at teksten/funktionen ender. v2.1 I denne version træder mange af de samme funktioner fra v1.9, som selvfølgelig har andre variabler, osv. Dog træder nye funktioner også i kraft til v2.1. Funktionen int() betyder blot at man angiver et tal. str() betyder at det er ren tekst. Jeg lavede en udvidet model af else funktionen: (" "+str(deci)) if j < 10 or (j > 95 and j <100) or (j>15 and j<96) or (j>111 and j<128) else (str(deci))) Her bruges kommandoerne and og or, der sammensætter variablerne lidt. or fortæller at hvis noget er dette eller noget andet, hvor and er en måde at lave et interval på fx. Side 8 af 10

Konklusion Det er ikke så lige til at lave en så enkel ting som en ASCII tabel, når man skal gøre det helt fra bunden. Det svære er at stille det op i en tabel med en hvis dimension og samtidig med at det skal fremføres flot. Men rigtig spændende at komme ind bag hjernen og tankegangen i en computer. Vindues størrelsen er afpasset til kravene med et vindue på 80x24: Og som det kan ses herunder, så passer min tabel til kravene: Side 9 af 10

Resten af teksten ses herunder i en helhed: Side 10 af 10