ØVELSESGANG 1A EDB PROGRAMMER SAS SOM PROGRAMMERINGSSPROG

Relaterede dokumenter
Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

IDAP manual Emission

Guide til Umbraco CMS

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Elevvejledning til SkoleKomNet - Min egen hjemmeside

PUT og INPUT funktionerne

matematik Demo excel trin 2 bernitt-matematik.dk 1 excel by bernitt-matematik.dk

Programmering C RTG

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

Kom igang med Scroll:bit

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

ØVELSE 2A. Ex_2a. Data-trin faciliteter: DATA sætningen INPUT sætningen CARDS sætningen INFILE sætningen LIST sætningen

ØVELSE 2B. Formål Det primære formål med denne øvelse er at prøve nogle vigtige procedurer til statistisk og grafisk analyse.

Daglig brug af JitBesked 2.0

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kommentarer til øvelser i basalkursus, 2. uge

Vejledning til datatræk i Novax på ICPC-koder (eksempel stress)

Datatransport Import & Eksport af data Generelt Import/eksport Felter i Import og Eksport... 5

Du har nu en genvej på dit skrivebord hen til den mappe hvor dine filer med bøgerne kommer til at ligge, den virkelige sti = c:\bøger.

Brugsanvisning til SyreN ph Rapport.

matematik Demo excel trin 1 preben bernitt bernitt-matematik.dk 1 excel by bernitt-matematik.dk

APPENDIX A INTRODUKTION TIL DERIVE

Orddeling. Automatisk orddeling. Manuel orddeling. Word thoremil.dk. Vælg fanebladet [Sidelayout] Vælg [Orddeling] Markér Automatisk orddeling

DM507 Algoritmer og datastrukturer

VEJLEDNING. Hastigheden for afspilning kan ændres og det er muligt at lave hurtig spring frem og tilbage

NetLogo-simuleringen. Simuleringer og fysiske modeller (henfaldsloven)

e-konto manual e-konto manual Side 1

Sådan opretter du en elektronisk aflevering

ØVELSE 3A. I SAS kan man både bruge {}, [] og () som paranteser til index.

Vejledning til udtræk fra UNIK (Version: UNIK Bolig 4)

Vejledning PROPHIX 11. Driftsbudgettering ved åbning af templates (Kun til Avanceret-brugere)

Annemette Søgaard Hansen/

CQ Serviceaftaler. Åbn kundevinduet. Find kunden og tryk på Serviceaftale / abonnement. Service aftale vindue

Excel-1: kom godt i gang!!

DM507 Algoritmer og datastrukturer

F11 avanceret patient søgning.

Statistik i GeoGebra

Start af nyt schematic projekt i Quartus II

Quick guide Dynamicweb 9. Kom godt i gang med brugen af redigeringsværktøjet bag vores hjemmesideløsning CMS-systemet Dynamicweb

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

Søgning på patienter med kræft

VUC IT Niveau G. Drev Mapper Filer

I denne vejledning lærer du de mest grundlæggede funktioner i PowerPoint 2003: Hvad er en præsentation? Eksempel på en præsentation...

Vejledning til datatræk i Novax på ICPC-koder

How to do in rows and columns 8

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Styresystemet er den del af softwaren, der sammenkæder hardware og brugerprogrammer, således at de kan arbejde sammen.

Easy Guide i GallupPC

Lav din egen forside i webtrees

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013

DM507 Algoritmer og datastrukturer

Brugervejledning til diverse i OS X

Gem dine dokumenter i BON s Content Management System (CMS)

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne

At indsætte ord og billeder og brug af hjælpefunktionen.

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

EVALUERING I SURVEYXACT TRIN FOR TRIN

Brugermanual til MOBI:DO Make på Internettet

Fra Blåt Medlem til Excel.

Gratisprogrammet 27. september 2011

Introduktion til SAS macro language

DM507 Algoritmer og datastrukturer

Arduino Programmering

Sådan søger du patientgrupper i Novax

Oktober Dokumentpakker

Indholdsfortegnelse. 1. Installation af LØN Introduktion til LØN Indtastning af lønseddel Udskrifter...

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

Manual til hjemmeside i Typo3

DM507 Algoritmer og datastrukturer

Moderne SAS-programmering på webben med SAS Studio. Georg Morsing SAS Institute

ONSCREENKEYS 5. Windows XP / Windows Vista / Windows 7 / Windows 8

Opgavestyring, op og download af mange filer

EVALUERING I SURVEYXACT TRIN FOR TRIN

Sproget Rascal (v. 2)

Redaktørvejledning for Skriv en artikel

3. Om skalamønstrene og den indfoldede orden

Brugervejledning til. Vejleder

Kort intro til SAS. Efterår Janne Petersen Judith L Jacobsen Lene Theil Skovgaard

ØVELSESGANG 1B. I denne øvelse fortsætter vi med: Det grundlæggende i SAS-systemet. Operatorer og funktioner i SAS. Biblioteksfunktioner

Kom i gang med DANBRO

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

Introduktion til SPSS

Velkommen til 1. omgang af IT for let øvede

Opret CFU-kursusevaluering i Survey Xact

Denne vejledning er optimeret til Windows XP, men kan også bruges til de andre Windows styresystemer.

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

Arbejd videre med statistik

Vejledning - web-baseret indberetningssystem vedr. forebyggende foranstaltninger for udsatte børn og unge.

Kingos tekstdokumenter

Introduktion til funktioner, moduler og scopes i Python

Daglig brug af Jit-klient

Test af It-komponent

DM507 Algoritmer og datastrukturer

Heldigvis har systemet indbygget en hjælp, som man kan benytte, hvis denne vejledning ikke berører det opståede problem.

KLARMELD ET KONTRAKTARBEJDE

Vejledning til udtræk fra UNIK (Version: UNIK Bolig 4)

Specialkort med Valgdata

Athena DIMENSION Varmeanlæg 4

Langeskov IT Online Backup Guide

Transkript:

ØVELSESGANG 1A EDB PROGRAMMER Et EDB program er en serie instruktioner, skrevet i et sprog som maskinen forstår. Helt generelt består et program af et hoved, en header, og en body der indeholder input/output statements, samt assignments (de linier, der laver arbejdet). SAS SOM PROGRAMMERINGSSPROG Et programmeringssprog implementeres traditionelt enten i form af en fortolker (interpreter) eller en oversætter (kompiler). I et fortolkende system analyseres hver enkelt programsætning (eller gruppe af sætninger) for sig, oversættest til maskinsprog, hvorefter den (de) bliver direkte udført. I forbindelse med kompilere oversættes hele kildeteksten til maskinkode, der normalt anbringes i en separat eksekverbar fil og bringes samlet til udførelse. SAS er både og: fortolkende for så vidt angår den kode man selv skriver, mens alle de funktioner og procedurer, der kan kaldes i et SAS-program ligger færdigkompilerede. I de fleste tilfælde grupperes SAS-sætninger i blokke (programtrin), der bringes til samlet udførelse. C er et typisk eksempel på et struktureret højniveau sprog: Det tillader en opdeling af programmeringsarbejdet i små bidder (funktioner eller procedurer), der hver udfører en velafgrænset opgave på enten lokale eller globale variable. De enkelte procedurer eller funktioner kan bygges inden i hinanden som et system af kinesiske æsker. Dette muliggør en arbejdsform, hvorved et vilkårligt kompliceret problem kan brydes ned i mindre delproblemer, der hver kan løses (programmeres og afprøves) separat. Man taler om en `top-down approach' for programudvikling. SAS er også i nogen grad et struktureret sprog, idet hver enkelt programtrin (datatrin eller proceduretrin) afvikles som en selvstændig enhed. Men i SAS kan kun et enkelt programtrin ad gangen være aktivt, og det er derfor ikke muligt at bruge de traditionelle teknikker og arbejdsmåder til struktureret programmering. Programstrukturen i SAS Datatrin 1 PROC-trin 1 Datatrin n PROC-trin 2 PROC-trin n Et SAS-program består af et eller flere programtrin (DATA eller PROC), der gennemløbes sekventielt. Kun et programtrin ad gangen kan være aktiv. I hovedtræk består et SAS-program af to dele, jvf. figuren: 1. Datatrin, der bringer observationer ind i et datasæt og tilrettelægger dette på en hensigtsmæssig måde med henblik på senere beregninger, eller at kalde et allerede eksisterende datasæt som objekt for analysen, eller at dokumentere (rapportere) værdierne i et datasæt. Et SAS datasæt er en datafil i SAS's særlige datafil-format. Et datatrin begynder altid med det reserverede ord DATA. 2. Proceduretrin (et eller flere), hvori et datasæt underkastes analyse ved hjælp af udvalgte SASprocedurer (PROC's). Et proceduretrin indledes med det reserverede ord PROC. 1

Der kan godt være flere datatrin og proceduretrin i samme SAS-program, og de to slags programtrin kan alternere. Enten data- eller proceduretrin kan udelades, men de fleste SASprogrammer indeholder begge. Kun et enkelt programtrin ad gangen kan være aktivt. Opdelingen i programtrin er et særkende for SAS i forhold til andre programmeringssprog. Kildeteksten til et SAS-program kan skrives med en vilkårlig tekst editor, f. eks. NOTEPAD men normalt vil man anvende den editor, som er indbygget i SAS-systemets `display manager'. Filer med SAS-kildetekster skal under WINDOWS have filtypen.sas for at kunne starte SAS automatisk, når man dobbeltklikker på dem - og man ikke i forvejen er i SAS. SAS's hjælpesystem SAS er forsynet med et meget udbygget on-line hjælpesystem. Systemet ligner det, der kendes fra andre WINDOWS-programmer. Eksempler på SAS-programmer Nedenstående simple SAS-program, hallo.sas, skriver teksten Er her nogen? til den tekstfil eller uddata-enhed (FILE PRINT, printfil, `listing device'), der normalt modtager uddata fra SAS-programmer. I forbindelse med de første SAS-programmer i denne øvelse sendes uddata til output-vinduet. Hvis de gemmes, kan de læses med en vilkårlig tekst-editor. Teksten i linie 1 og 2 er en kommentar, dvs. tekst omkranset af /*... */ overspringes under fortolkningen af programmet. Bemærk, at alle sætninger (statements) i et SAS-program skal afsluttes af et semikolon ;. SAS-programmer skrives i øvrigt i frit format, fx kan en programsætning deles over flere linier, eller flere sætninger kan stå på den samme linie. Man kan (og bør) bruge indrykning af programsætninger, for at lette læsningen af programmet. Der skelnes ikke mellem små og store bogstaver i SAS-navne. I de programeksempler, som vises, følges en bestemt skrivestil med hensyn til store/små bogstaver, indrykning og indskudte blanke linier; denne stil er du ikke tvunget til at følge. 1 /* Programmet HALLO.SAS 2 skriver en meningsløs besked til printfilen */ 3 DATA _NULL_; 4 FILE PRINT; 5 PUT "Er her nogen?"; 6 RUN; Programmet hallo.sas består kun af et enkelt datatrin, der startes linie 3. Der er intet proceduretrin (der findes ingen PROC-sætninger i kildeteksten). I datatrinet oprettes ikke noget datasæt (det reserverede ord _NULL_ i programmets linie 3 betegner det `tomme' datasæt), og der foretages ingen beregninger. Programmet er i det hele taget ikke til megen nytte. Sætningen RUN;, som vil genfindes i mange af de følgende programeksempler, fortæller SAS, at der ikke er flere kommandoer til det pågældende programtrin, således at eksekveringen af dette kan startes. Ved kørsel i SAS afsluttes et programtrin først i forbindelse med påbegyndelse af et nyt programtrin, eller når RUN;-sætningen mødes. Som sædvanligt i denne bogs programudskrifter er linienumrene ikke en del af programteksten. 2

Et simpelt beregnings-program. 1 * TOTAL.SAS beregner kvotienten mellem to tal; 2 DATA TEMP; 3 FILE PRINT; 4 INPUT TAL1 TAL2; 5 KVOTIENT = TAL1/TAL2; 6 PUT "Kvotienten er " KVOTIENT; 7 8 CARDS; 9 1 3 10 ; 11 RUN; Linie 1 er en kommentar: En sætning, der starter med tegnet * og (som altid) slutter med ; opfattes som et kommentarfelt (smgl. med hallo.sas). Det er en god ide at skrive oplysende kommentarer i programmerne, så man senere kan finde ud af, hvad der er programmets formål. I linie 2 påbegyndes total.sas's datatrin, men uden proceduretrin (det reserverede ord DATA); der oprettes et datasæt ved navn TEMP hvis indhold bestemmes af de følgende sætninger i datatrinet. Dette datasæt TEMP er temporært, så det svarer til sit navn. Et temporært datasæt gemmes ikke, når programmet er færdigt. Uddata fra programmet skal sendes til standard printfilen (specificeret i linie 3). I linie 4 fastlægges, at der skal indlæses værdier i de to numeriske variable TAL1 og TAL2. For hvert indlæst sæt af TAL1 og TAL2 skal kvotienten mellem dem beregnes (linie 5), og resultatet udskrives med PUT-sætningen (linie 6) til printfilen. Inddata kan stilles til rådighed for SAS-programmer på forskellige måder. Her er inddata (de tal, der skal regnes på) placeret i selve kildetekstfilen (linie 9) - efter programsætningerne, og efterstillet sætningen CARDS;, der markerer, at datatrinet er slut, og at de efterfølgende linier rummer data og ikke programsætninger. Datatyper De talværdier, der skal regnes på (variablerne TAL1 og TAL2), og resultatet (KVOTIENT), opfattes implicit som numeriske variable. SAS opererer kun med to datatyper: numeric og character. En variabel antages at være af typen numeric, med mindre den eksplicit erklæres som character, dette gøres ved at tilføje tegnet $ efter variabelnavnet i INPUT-sætningen, Simpelt!? Variabelnavne i SAS-programmer, fx TAL1, TAL2 og KVOTIENT, må ikke være længere end 32 tegn. Datatypen numeric repræsenteres internt i 8 bytes, og der skelnes ikke mellem ordinale og reelle typer. Nøjagtigheden er mere end 15 cifre. Det er dog muligt at specificere et mindre antal bytes ved lagring af SAS-datasæt på disk. Hertil bruges LENGTH- eller ATTRIB-sætningen. Datatypen character kan have længder i intervallet 1-32767 bytes (tegn). Ved ikke at skelne mellem forskellige numeriske datatyper, gøres programmeringsarbejdet umiddelbart lettere, men til gengæld opnås ikke den større hastighed, pladsbesparelse og de andre fordele, der knytter sig til de mindre numeriske typer. Dette eliminerer ikke vigtigheden af begrebet datatype. Også i et SAS-program er det fundamentalt, at hver enkelt dataelement har en veldefineret type, der kan afledes enten af en specifik typeerklæring (i INPUT-sætningen), eller af det beregningsudtryk, hvorved dataelementet fremkommer. Det er ikke muligt at arbejde med delintervaltyper eller andre brugerdefinerede typer. I linie 5 i Total.SAS beregnes kvotienten mellem TAL1 og TAL2 (divisions-operatoren /), og resultatet lægges i en variabel med navnet KVOTIENT. Tegnet = fungerer her som 3

tilskrivningsoperator. Der findes også i SAS en sammenligningsoperator, der bruger samme symbol. Den dobbelte betydning af = er en mærkværdighed, SAS deler med flere andre af de lidt ældre programmeringssprog. Man skal være opmærksom på, hvornår = antager den ene eller anden af de to forskellige funktioner. SAS 8:37 Monday, November 13, 2006 Page 1 Kvotienten er 0.3333333333 Programmet total.sas producerer ovenstående uddata til `listing device' (printfilen). Overskriftlinien med klokkeslet og sidenummer genereres af SAS. (Standardformatet for overskriften er lidt anderledes end det her viste). Det kunne tænkes, at der var mere end to tal, hvis kvotient vi ønskede beregnet af total.sas. Der skal så blot tilføjes ekstra datalinier efter CARDS-sætningen: * TOTAL.SAS beregner kvotienten mellem to tal; DATA TEMP; FILE PRINT; INPUT TAL1 TAL2; KVOTIENT = TAL1/TAL2; PUT "Kvotienten er " KVOTIENT; CARDS; 1 3 2 4 3 5 4 6 ; RUN; INPUT-sætningen i total.sas specificerer, at hver enkelt observation skal bestå af værdierne for de to variable TAL1 og TAL2. Programmets datatrin gennemløbes en gang for hver enkelt observation, udfører i hvert tilfælde de specificerede beregninger, og tilføjer såvel de primære variable som de beregnede størrelser til datasættet Begreberne `observation' og `variabel' går tilbage til SAS's oprindelse som et system til statistisk analyse: Hver gentagen måling af en bestemt størrelse kaldes (i statistikken og i SAS) en observation; de enkelte observationer i et eksperimentelt materiale er normalt uafhængige af hinanden, hvilket er en forudsætning for den statistiske analyse. I SAS-programmets datatrin indlæses og behandles hver enkelt observation uafhængigt af de øvrige. Hver enkelt størrelse, der måles, kaldes (i statistikken og i SAS) en variabel. I ovenstående eksempel med 5 observationer findes der i datasættet 5 værdier af hver af de tre variable TAL1, TAL2 og KVOTIENT. Du kan tænke på datasættet som et rektangulært skema med tre kolonner (svarende til variablerne TAL1, TAL2 og KVOTIENT), og 5 rækker (svarende til de 5 observationer): 1 3 0.33333 2 4 0.50000 3 5 0.60000 4 6 0.66667 5 7 0.71429 4

Øvelse 1a 1. Forberedelse af dit H:-drev med henblik på SAS-beregninger: Dine SAS-programmer (kildetekst-filer) og SAS-datasæt (datafiler i det særlige SAS-format) skal du under arbejdet med denne øvelse gemme på dit H:-drev i et særskilt bibliotek, fx H:\MYSAS. Ikke noget med at lade filerne ligge og rode på H:\! Opret biblioteket H:\MYSAS (du må gerne kalde det noget andet, men vi bruger fremover dette navn) og gør det til det aktuelle bibliotek. 2. Kald SAS find rundt i de forskellige vinduer, og prøv at få overblik over hjælpesystemet. 3. Et simpelt program, jvf. eksemplet TOTAL.SAS: Skriv SAS-program (SAS Enhanced Editor), der skal beregne kvotienten og produktet af de to tal i en serie observationer. De enkelte observationer skrives i selve kildetekst-filen og placeres efter CARDS;-sætningen. Gem kildeteksten i en fil med filtypen SAS. Kør programmet (submit) ved at trykke på knappen med den sorte mand (eller F8). Læg mærke til den tekst, SAS skriver til PC'ens skærm (log-vinduet) under kørsel af programmet. Når SAS-jobbet er færdigt, undersøges programkørslen ved hjælp af log-vinduet. Undersøg ved hjælp af log'en, om der var fejl i programmet. I så fald, ret dem, og kør programmet igen. Når programmet kører rigtigt, så undersøg indholdet af OUTPUT-vinduet. Er resultatet i overensstemmelse med det forventede? Er SAS et fortolkende eller et kompilerende system - og hvad er forskellen? 4. Et beregningsprogram: Skriv et SAS-program, der kan beregne arealet af den krumme overflade A af en eller flere kegler, hvis grundflade har radius r og hvis halve topvinkel er α regnet i radianer (2π = 6.283 radianer 360 ). Værdierne af r og α indlæses fra et Cards -statement, idet hver kegles r og α udgør en enkelt observation). Bemærk, at vinklen for at være en topvinkel naturligvis ikke kan være lig med eller større end 180 (=π). π kan du enten definere som en konstant i dit program, Pi = 3.1415; - eller hente fra SAS, constant( pi ). Beregningsformel: r A = π 2 sinα Udbyg nu programmet, således at du kan indskrive vinklerne som alm. vinkelmål i Cards; -delen. Vinklen 90 skal således skrives som 90, som vi er mere vant til, og ikke 1.57 (π/2). Herefter skal programmet selv omregner tallene til radianer, indsætter i formlen og udregne som før. 5

Teoretisk opgave: Denne opgave skal afleveres næste mandag. Skema til udfyldelse findes som Word-fil på adressen K:\edb-kurs\week1\EX1_Rapport-1.doc. Skemaet sendes udfyldt som attachment til i en E-mail til dine lærere på adressen bioedb@aki.ku.dk. K:-drevet Hvis du ikke allerede har adgang til K:-drevet, kan du logge dig på følgende måde: 1. Højreklik med musen på My Computer på skrivebordet. 2. Venstreklik på punktet Map Network Drive.... 3. Skriv (eller vælg dig frem til) K: i det øverste vindue. 4. Skriv \\home1\edudisk i det nederste vindue. 5. Nu skulle du have fået et K:-drev. Du kan også finde det samme skema på adressen http://www.aki.ku.dk/dataanalyse på nettet, hvor du så går videre under punktet Undervisningsplanen (nederst på siden) og igen videre under punktet Ting fra øvelserne (under skemaet). Spørgsmålene i EX1_Rapport-1.doc er Hvad forstår du ved et SAS datasæt? Hvad forstås ved observationer og variable? Hvor mange observationer og hvor mange (og hvilke) variable findes i de datasæt, der oprettes af de to SAS-programmer, du netop har kørt? Hvad er forskellen mellem et temporært og et permanent datasæt? Hvad er forskellen mellem data i tekstfil-format og data repræsenteret i SAS datasætformat? Hvilke datatyper råder SAS over? Er det nødvendigt at definerer, at et tal du indlæser, skal være numeric. Med hvor mange betydende cifre repræsenteres numeriske størrelser ved beregninger med SAS, og hvor meget plads optager numeriske variable i RAM og på disk? 6