Introduktionskurs i SAS. Del 1 Datastegsprogrammering
|
|
- Gun Lena Jansson
- för 8 år sedan
- Visningar:
Transkript
1 Introduktionskurs i SAS Del 1 Datastegsprogrammering
2 Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens (Knowit Information Management) skriftliga godkännande. Upphovsmannen har gett sitt godkännande att detta material fritt får användas vid undervisning på Linköpingsuniversitet, IDA. Sidan 2
3 DATASTEGSPROGRAMMERING SAMT ETT URVAL AV SAS - FUNKTIONER... 4 GRUNDLÄGGANDE HANTERING AV SAS... 4 AUTOEXEC OCH CONFIG... 4 KOMMENTERING I SAS... 5 AVBRYTA HÄNGANDE SAS-SESSIONER ELLER PROGRAM... 5 LOGG OCH RESULTATFÖNSTER... 5 LIBNAME OCH FILNAME... 6 SAS-TABELLER - DATASET...6 DATASTEGET... 7 LENGTH... 7 DATA _NULL_-STEG... 7 DATUM I SAS... 9 LABEL... 9 SKRIVA TILL DATASET LÄSA FRÅN DATASET SKRIVA TILL EXTERN FIL LÄSA FRÅN EXTERN FIL BEHANDLA DATA SELEKTERA DATA VÄLJA UT POSTER/RADER VÄLJA UT VARIABLER/KOLUMNER ÄNDRA BEFINTLIGA VARIABLER SKAPA NYA VARIABLER/KOLUMNER Nya variabler av gamla KONVERTERA VARIABLER MED HJÄLP AV PUT/INPUT Några användbara konverteringar LOOPA I DATASTEGET...21 BEHÅLLA VÄRDEN PÅ VARIABLER ÖVER FLER OBSERVATIONER I DATASTEGET ANVÄNDBARA OPTIONS TILL SET EFFEKTIVISERING SAS-FUNKTIONER, ETT URVAL ARITMETISKA FUNKTIONER TRUNKERINGSFUNKTIONER...25 CHARACTER-FUNKTIONER DATUM OCH TIDS FUNKTIONER FUNKTIONER FÖR EXTERNA FILER SPECIALFUNKTIONER VARIABELFUNKTIONER SYSTEM OPTIONS DATA TILL ÖVNINGAR COMPANY Tabellrelationer PROGRAMHUVUD Sidan 3
4 Datastegsprogrammering samt ett urval av SAS - funktioner I den första delen av introduktionskursen i SAS kommer vi att gå igenom grunden i SAS Base programmering - datastegsprogrammering samt några användbara funktioner. Kapitlet innefattar ett antal kodexempel och meningen är att man läser dokumentet på datorn och har SAS igång för att löpande kopiera över kodexemplen till SAS och provköra och studera resultaten. Grundläggande hantering av SAS Den bästa onlinehjälpen för datastegsprogrammering hittar man under Help / SAS Help and Documentation. Har man tillgång till Internet finns även en bra online dokumentation på SAS Institiutes hemsida, antingen via eller direkt via Autoexec och config SAS-miljön kan anpassas efter egna behov genom att göra tillägg och ändringar i programfilerna AUTOEXEC.SAS och SASV9.CFG. Dessa filer används av SAS när en session skapas, I SASV9.CFG sätts inställningar för hur SAS-sessionen skall konfigureras, t.ex. med avseende på var work-biblioteket skall ligga eller hur stort utrymme en sortering får använda. De inställningar man gör inne i SAS, t ex egna snabbtangenter, fönsterstorlekar, inställningar under preferences, etc. sparas i en sas-katalog med filnamnet profile.sas7bcat. Katalogen ligger i SASUSER-biblioteket som är ett av de libnames (referens till bibliotek) som SAS själv definierar upp via inställningarna i SASV9.CFG. I AUTOEXEC.SAS kan man skriva vanlig SAS-kod som man vill skall utföras när SAS öppnas. Det vanligaste är att man i AUTOEXEC.SAS lägger in de LIBNAMEs, d.v.s. referenser till de bibliotek som man använder ofta. I Tools - > Options -> Preferences kan man också göra diverse inställningar, t.ex. för hur resultat ska visas. Sidan 4
5 Kommentering i SAS För att skriva in kommentarer i datasteget används två notationer: För att kommentera bort en sats: * Kommentar bla bla... ; Här kommenteras allt bort fram till nästa semikolon. Det kan alltså vara fler rader eller del av en rad. För att kommentera bort ett helt block med satser: /* sats 1 ; sats 2 ; sats 3 ; */ Ha som grundregel att kommentera ofta och snyggt i koden så att du själv eller andra som skall läsa ditt program förstår vad som händer. Vi rekommenderar att man använder följande standard för att kommentera i löpande SAS kod: *-- Kommentar1 --*; *-- Kommentar2 --*; Använd /* Kommentar */ endast inne i en sats eller om flera satser skall kommenteras bort. Avbryta hängande SAS-sessioner eller program I bland kan det bli så att SAS sessionen hänger sig p.g.a. av att vi kodar fel. Vanligt är att man missar t ex. ett quit; en, eller ett ;, vilket kan göra att SAS hänger sig. I stället för att starta om sessionen kan man testa att köra magic string nedan. Normalt löser det hängningsproblem. *)*/;/*'*/ /*"*/; %mend;quit;;;;; Det går också ofta att avbryta ett hängande program med Break (utropstecknet) i menyraden. Logg och resultatfönster Det är också bra (mer ett måste) att efter varje körning titta i loggen och reflektera över ev. WARNING, NOTEs och ERRORs för att se om körningen gått bra. Gå även in och titta på datat, rapporten etc. som skapats för att se om resultatet blivit som förväntat. Sidan 5
6 Libname och filname Data sparas i SAS i s.k. sastabeller (dataset). Ett dataset refereras vanligen inte med en vanlig sökväg (c:\nisse\datasetet.sas7bdat), utan refereras normalt via en saskatalog (=referens/pekare till fysisk katalog) som man definierar upp med ett LIBNAME-uttryck. Namnet på katalogen är sedan den logiska adress som SAS använder för att hitta dataseten. Finessen med detta är att man kan skriva programmen generella och oberoende av den fysiska sökvägen till datasetet och skriver då endast en gång, i början av programmet, eller i en styrfil, den fysiska adressen. Det går även via denna teknik att komma åt andra typer av databaser eller filer, t.ex. Excel. Exempel LIBNAME Detta talar om för SAS att allt som refereras med nisse i programmen ligger i c:\saskurs katalogen. Namnet på libnamet kan vara max 8 tecken långt. libname testlib 'c:\saskurs'; Exempel FILENAME Om man använder eller skapar textfiler kan dessa refereras med sin fysiska sökväg, men av samma anledning som ovan är det mer flexibelt att mappa sökvägen till en intern referens som i detta fall kallas FILENAME. filename infilen 'c:\sas\min_lilla_infil.xls'; Exempel Ta bort LIBNAME eller FILENAME För att ta bort ett definierat libname eller filename skriver man bara en tom FILE/LIBNAME-sats. libname testlib; filename infilen; SAS-tabeller - DATASET I SAS lagras all data i ett s.k. dataset, vilket i princip är samma sak som en tabell i databas. I ett dataset finns två typer av variabler/kolumner; alfanumeriska (character) och numeriska. Det finns alltså ingen specifikt variabeltyp för datum eller tid, utan dessa två typer lagras som numeriska variabler, och sedan använder man ett format för att visa datumet. Tidräkningen i SAS startar som är dag 0 i SAS. Sidan 6
7 Datasteget Datasteget används i SAS för att läsa och skriva data från/till dataset och filer. Datasteget är en implicit loop över samtliga observationer i indatasetet (om det finns något). Exempel Skapa tomt dataset med datasteget I sin enklaste form kan ett datasteg se ut som nedan. Datasteget ska i detta exempel skriva till datasetet UTDATA som ligger i biblioteket/saskatalogen TESTLIB. Ett tomt dataset (utdata) utan variabler skapas. data testlib.utdata; Exempel Skapa dataset utifrån ett annat dataset I nedanstående exempel kommer alla observationer från TESTLIB.INDATA skrivas till TESTLIB.UTDATA. data testlib.utdata; set testlib.indata; Length För att definiera variabler kan man använda ett LENGTH statement. Exempel Definiera variabler med LENGTH I nedanstående exempel kommer variabeln X definieras som alfanumerisk (character), 40 tecken lång, och variabeln Y som numerisk och 8 byte. data testlib.utdata; length x $40 y 8; Data _NULL_-steg I ovanstående exempel läses/skapas data i datasteget som skrivs till ett utdataset, men ett datasteg behöver varken ha något indataset eller skapa utdataset. För att köra ett datasteg utan att skriva till ett dataset används nyckelordet _NULL_ i stället för namnet på utdatasetet: data _NULL_; Detta datasteg utför ingenting. Syftet med detta är att man t.ex. kan vilja använda funktioner utan att läsa eller skriva till dataset, alltså endast visa resultatet i loggen. Sidan 7
8 Exempel - Lägga ut dagens datum och tid i loggen: Nedanstående exempel lägger ut dagens datum och tid i loggen, utan att skriva till ett dataset: data _null_; var = put(date(),yymmdd10.); put 'Dagens datum: ' var; Detta är resultatet i loggen: Dagens datum: NOTE: DATA statement used (Total process time): real time 0.17 seconds cpu time 0.01 seconds Exempel Villkorsstyrt meddelande i loggen I detta exempel ska ett meddelande skrivas ut i loggen om det är fredag, annars skrivs ett annat: data _null_; var=put(date(),yymmdd10.); dag=weekday(date()); put 'Dagens datum: ' var; if dag=6 then put 'Trevlig helg!'; else put 'Jobba på!'; Resultat (om det är fredag): Dagens datum: Trevlig helg! NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.00 seconds Sidan 8
9 Datum i SAS Datum i SAS lagras som en numerisk variabel, och för att den skall presenteras som ett datum måste man lägga ett format på variabeln d.v.s. ange hur den ska visas. Format kan läggas på då dataset skapas, vilket då kan användas varje gång datasetet används. Det andra alternativet är att lägga på ett format då en rapport skapas. Då används formatet bara i just den rapporten. SAS räknar tid från 1/ detta datum representeras som 0. Format kommer att behandlas ytterligare i Del 5 i denna kurs. Exempel Skriva ut ett formaterat datum i loggen: length y 8; format y yymmdd8.; y=365; put y; PUT-satsen skriver ut följande formaterade text till loggen: INFORMAT kan användas om man ska läsa från textfiler och direkt vill omvandla t.ex. en datumtextsträng enligt ovan till ett numeriskt SAS-datum. Label Variablerna kan tilldelas labels som sedan används i rapporter o. dyl. där variabeln ska beskrivas mer i klartext: length Y 8; format Y datetime17.; label Y='En variabel innehållande datum och tid.'; y=1000; put y; Här har formatet DATETIME17. använts, som då tolkar det numeriska värdet som antal sekunder det gått sedan 1 januari För att titta på vilka variabler ett dataset innehåller, vad de är för typer, vilka format de har och vilka labels dom har kan man skriva kommandot VARS libname.dataset, ex VARS TESTLIB.UTDATA, på kommandoraden i sas. Då visas ett fönster som listar variablerna i UTDATA och deras attribut (typ, längd, format, label). Det går också bra att högerklicka på en tabell eller använda en procedur, Proc CONTENTS som kommer att nämnas senare i kursen. Sidan 9
10 Attrib Istället för att använda LENGTH, LABEL och FORMAT kan samtliga karaktäristika för en variabel definieras via ATTRIB. at trib Y length=8 format=datetime17. label='innehåller datum och tid.'; y=1000; put y; Skriva till dataset Man kan antingen skriva implicit eller explicit till det dataset som angivits i DATAstatementet. Om man bara skriver t.ex.: data testlib.utdata; y=1000; så kommer en post att skrivas till utdata, även om vi inte explicit har angivit något. Man kan lika gärna skriva: data testlib.utdata; y=1000; output; OUTPUT-satsen säger explicit till SAS att skriva till utdata. Om ingen OUTPUT-sats finns i datasteget antar SAS att ett output ska göras när en datastegsiteration är klar. Ifall man skriver: data testlib.utdata; y=1000; output; output; så kommer två identiska poster att skrivas till utdata. Man kan även skriva till olika dataset i ett och samma datasteg genom att ange fler utdataset i data-satsen. data testlib.utdata1 testlib.utdata2; length x $10 y 8; x= 'Hej'; y=1000; Sidan 10
11 Detta datasteg kommer att skapa två identiska dataset i TESTLIB. Man kan explicit ange till vilket dataset man vill skriva information: data testlib.utdata1 testlib.utdata2; length x $10 y 8; x='hej'; y=1000; output; x='svejs'; output testlib.utdata2; I detta exempel skrivs Hej samt 1000 i en post till båda dataseten, men i utdata2 skrivs dessutom en post med x= Svejs och y=1000 (oförändrad). Läsa från dataset Genom att ange ett dataset i en set-sats läser SAS in en post från detta dataset per iteration i datasteget. Varje post läses in i en temporär programdatavektor som innehåller aktuell posts alla variabelvärden. data testlib.utdata; set testlib.indata; eftersom inget annat har angivits kommer SAS här att skriva till utdata för varje iteration, vilket innebär att utdata blir en exakt kopia av indata (Alla attribut kommer också att kopieras om inget annat anges, dock inte index). Antag nu att indata innehåller variablerna in_x (char 10) och in_y (num 8) och följande körs: data testlib.utdata; set testlib.indata; length ut_y 8.; ut_y=in_y*0.25; så kommer variablerna in_x, in_y samt ut_y att skrivas till utdata, ut_y blir en härledd variabel från in_y. Sidan 11
12 Kommentar: För att kontrollera vad som händer vid t.ex. debugging är det ett bra hjälpmedel att skriva meddelanden till loggen med put-satsen: data testlib.utdata; set testlib.indata; length ut_y 8.; ut_y=in_y*0.25; put in_y= ut_y=; Resultat: IN_Y=1 UT_Y=0.25 IN_Y=2 UT_Y=0.5 IN_Y=3 UT_Y=0.75 IN_Y=4 UT_Y=1 IN_Y=5 UT_Y=1.25 Detta fall är trivialt, men om man vill kontrollera värden på variabler t.ex. innan villkorssatser är det användbart. Skriva till extern fil PUT-satsen används även för att skriva till en extern fil. Man anger önskat filnamn i en FILE-sats. Om det finns en FILE-sats i ett datasteg kommer alltså inte PUT-satser att resultera i att något skrivs i LOG-fönstret (som i exemplen ovan), utan i filen. Om man inte vill skriva till något dataset anger man _NULL_ som utdataset i DATAsatsen. data _null_; file 'c:\exempelfil.txt'; set testlib.indata; put in_x; Nu kommer samtliga observationers värden på IN_X skrivas till varsin rad i textfilen. För att göra koden mer generell bör man använda ett FILENAME på samma sätt som man använder LIBNAME: filename utfil 'c:\exempelfil.txt'; data _null_; file utfil; set testlib.indata; put in_x; I sista delen kommer vi gå igenom hur man kan använda detta för att skapa rapporter, s.k. data _null_ rapporter. Sidan 12
13 Läsa från extern fil För att läsa in information från en extern flatfil använder man input-satsen. För att ange vilken fil man ska läsa från används INFILE-satsen: filename infil 'c:\exempelfil.txt'; data testlib.utdata; length ut_x $40; infile infil; input ut_x; För att läsa in fler variabler från bestämda positioner (exempel, finns andra metoder): filename infil 'c:\exempelfil.txt'; data testlib.utdata; length ut_x $40 ut_y 8.; infile infil; input ut_x $1-10 ut_y; Här förväntas det att strängen som ska in i variabeln ut_x finns i position 1-10 i filen. Den numeriska variabeln ut_y specificeras inte med några positioner, det första numeriska värde som hittas efter pos 10 läggs i ut_y. Exempel: Test ett 7 Test två 8 xxx Position 1-10 läses in som text, positionen på nästa variabel spelar ingen roll. Filer som har variabler med fasta positioner kan läsas in på följande sätt: data testlib.utdata; length ut_x $40 ut_y 8.; infile infil; ut_x ut_y 3.; Som i exemplet ovan läses text i i position 1-10, men den numeriska variabel läses in från Test ett 7 Test två 8 xxx 987 Sidan 13
14 Många filer som läses in har någon form av avgränsare mellan kolumnerna, då kan man använda följande: data testlib.utdata; length ut_x $40 ut_y 8.; infile infil dlm=';'; input ut_x ut_y; Mellan fnuttarna anger man vilken avgränsare som skall användas. Anger man inget utan bara skriver DLM, så används blanksteg som avgränsare. I detta fallet bör alla variabler deklareras i LENGTH-statementet. Givetvis finns inget som hindrar att man har textfiler både som input och output. INFILE-options Det finns ett antal options som kan läggas till INFILE-uttrycket. Nedan ett exempel på ett av dem: TRUNCOVER - Överrider INPUT-uttryckets beteende när en post är kortare än vad INPUT-uttrycket förväntar sig, och gör det möjligt att läsa poster med varierande längd. Variabler utan värde sätts till MISSING. Behandla data Selektera data Man kan selektera data i två ledder, dels höjden, dvs. välja ut vissa poster från ett dataset, dels på bredden, dvs. välja ut vissa variabler från datasetet. VÄLJA UT POSTER/RADER Vi skapar först ett dataset med testdata: data testlib.indata; length anstnr 8 namn $20; anstnr=1; namn='olle A'; output; anstnr=100; namn='olle B'; output; anstnr=1000; namn='olle C'; output; anstnr=1000; namn='olle D'; output; Att välja ut vissa poster kan göras i koden, eller i form av ett WHERE-option på indatasetet: Exempel - implicit if-sats: set testlib.indata; if anstnr>100 then do; Sidan 14
15 *-processa data...; output; end; else; *- processa data...; Sidan 15
16 Exempel Subsetting if: set testlib.indata; if anstnr>100; *-processa data...; Subsetting IF innebär att ALLT efter IF-satsen bara utförs om villkoret är uppfyllt. Eftersom OUTPUT görs sist i datasteget kommer bara de poster som uppfyller villkoret att skrivas till utdata. Exempel WHERE-option: set testlib.indata(where=(anstnr>100)); Den senare metoden är att föredra av effektivitetsskäl, se effektivitetsavsnittet. Exempel Läsa ut en viss post med POINT: För att bara läsa ut en viss post från ett dataset används ett POINT-option: min_pek=2; set testlib.indata point=min_pek; output; stop; Notera att man i detta fall dels måste lägga in ett stop, annars avslutar inte datasteget, att POINT-värdet måste sättas av en variabel (ej t.ex. POINT=2), samt att OUTPUT måste göras explicit. Exempel Läsa ut ett visst antal poster med FIRSTOBS och OBS: FIRSTOBS och OBS kan användas för att välja ut den första posten som ska läsas, respektive den sista. Detta används kanske främst för att välja ut ett fåtal poster i testsyfte, ifall man har stora datamängder, men kan också användas för att t.ex. skapa 10-i-topplistor eller liknande. set testlib.indata (firstobs=3 obs=10); Sidan 16
17 VÄLJA UT VARIABLER/KOLUMNER Att välja ut variabler kan göras genom att använda DROP respektive KEEP. Det finns flera olika sätt att använda DROP och KEEP, dels som ett dataset-option på in- resp. utdatasetet, dels som ett uttryck ( statement ) inuti datasteget. Exempel DROP på indatasetet: Variabler i indatasetet som man inte är intresserad av alls, ens för att använda för att skapa nya variabler bör kastas bort redan vid inläsning av indatasetet, av effektivitetsskäl: set indata(drop=var10 var11); *- processing data...; Exempel DROP på utdatasetet med dataset-option: Variabler som man vill använda för att t.ex. beräkna en ny variabel, men som man inte behöver ha med i utdatasetet tas bort i DATA.-uttrycket, d.v.s. de används i datasteget, men skrivs inte till det nya datasetet. data utdata(drop=var1); set indata; *- processing data...; Exempel DROP på utdatasetet med DROP-uttryck inuti datasteget: DROP eller KEEP-uttryck inuti datasteget tar alltid bort valda variabler på utdatasetet, ej på indatasetet. Detta sätt att ta bort variabler används alltså på samma sätt som föregående exempel. set indata; datum=date(); *-processa data...; drop datum; Ändra befintliga variabler För att ändra längd, eller ordning på variabeln i programdatavektorn kan LENGTHuttrycket sättas innan SET-uttrycket: length stad $30; set indata; datum=date(); *-processa data...; drop datum; I detta exempel är stad är en befintlig variabel från indatasetet. Sidan 17
18 Om man vill definiera om variabler när man skriver dem från ett dataset till ett annat måste man lägga LENGTH-satsen som den första satsen i datasteget, detsamma gäller om man vill byta ordningen på befintliga variabler: Skapa nya variabler/kolumner När nya variabler ska skapas kan det göras både implicit och explicit, exemplen nedan i detta avsnitt beskriver skillnaderna, och vad man bör tänka på då nya variabler ska skapas. Exempel Skapa ny variabel implicit kan leda till problem Enklaste sättet att skapa en variabel är att bara referera till den i koden: my_text='xxx'; Detta går i och för sig bra, men man bör alltid explicit definiera variabeln för att vara säker på hur den är definierad. I exemplet ovan kommer SAS automatiskt definiera my_text som alfanumeriskt (char), tre positioner lång. Därmed kommer följande exempel: my_text='xxx'; output; my_text='xxx yyy'; output; leda till att my_text trunkeras i post nr 2. Exempel Skapa ny variabel explicit lösningen på problemet Lösningen är att explicit definiera längden på variabeln med en LENGTH-sats: length my_text $10; my_text='xxx'; output; my_text='xxx yyy'; output; Man bör vänja sig vid att alltid definiera alla variabler explicit i LENGTH-satsen, dels av skälet som visas ovan, att inte få oönskade trunkeringar, men också för att det ger bättre överblick. Sidan 18
19 Nya variabler av gamla Det vanligaste är kanske att man skapar nya variabler av gamla eller av kombinationer av gamla. Vi skapar ett dataset med indata: data testlib.indata; length anstnr lon 8 namn $20; anstnr=1; namn='olle A'; lon=15000; output; anstnr=100; namn='olle B'; lon=17000; output; anstnr=1000; namn='olle C'; lon=19999;output; anstnr=1000; namn='olle D'; lon=26000;output; Exempel skapa nya variabler av gamla Vi vill ändra lönen för samtliga personer, genom att öka den med 15%. Den gamla lönen skall vara kvar och löneökningen skall också lagras i en ny variabel; data testlib.indata; set testlib.indata; lon_okn = lon * 0.15; nylon = lon + lon_okn; Ett alternativ är att alla personer som tjänar över får en ökning med 20% och övriga får nöja sig med 10%. data testlib.indata; set testlib.indata; if lon gt then do; lon_okn = lon * 0.20; nylon = lon + lon_okn; end; else do; lon_okn = lon * 0.10; end; nylon = lon + lon_okn; Konvertera variabler med hjälp av put/input Många gånger vill man konvertera en variabel, eller lägga ett annat format på den. Ett vanligt fall i SAS är datum. Eftersom datum lagras numeriskt så måste man formatera om det innan man skriver ut det, såvida det inte är sparat i datasetet med format. Sidan 19
20 Exempel Konvertering av datum: Vi läser in filen nedan Pelle Nisse Kalle data testlib.dat; length datum idnum 8. namn $8.; infile test; inpu datum idnum namn $5.; put datum; Datumen skrivs ut i loggen Vill man istället få datumet utskrivet i klartext måste man konvertera datum variabeln när den skrivs ut. Det kan man göra genom att i put-satsen lägga till det datum-format som variabeln skall skrivas ut i. put datum yymmdd8.; Nu skrivs datumet ut som ett datum Man kan också skapa en ny variabel med datumet som char och sedan skriva ut den. nyvar = put(datum, yymmdd8.); Några användbara konverteringar Förutom datum så vill man många gånger konvertera en variabel. Nedan har vi listat några vanliga konverteringar. /* CHAR till NUM NUM till CHAR DATUM till CHAR NUM till DATUM DATUM till NUM CHAR till DATUM */ input(left(var), best.) put(var, $w.) input(left(put(var, yymmddw.)), $w.) input(left(put(var, w.)), yymmddw.) input(put(var, yymmddw.), w.) input(var, yymmddw.) Sidan 20
21 Exempel Konverteringar av variabler text datum - nummer: data konvert; text_n = '4'; num_n = 4; datum = 365; datum_t = ' '; datum_n = ; charrnumm= input(left(text_n), best.); nummcharr=put(num_n, $1.); datcharr=input(left(put(datum, yymmdd8.)), $8.); nummdat = input(left(put(datum_n, 8.)), yymmdd8.); datnumm = input(put(datum, yymmdd6.),8.); chardat= input(datum_t, yymmdd8.); LOOPA I DATASTEGET Ibland kan man behöva loopa i ett dataset (iterera). Nedan visas ett antal exempel på detta. Syntax do i=1 to... (until / while), do while / until, do i=1 by 2 to 11 Exempel - Generera ett dataset med 1000 anställningsnummer: do anstnr=1 to 1000; output; end; Exempel - Generera ett dataset med anställningsnr med endast jämna nummer: do anstnr=2 by 2 to 1000; output; end; Exempel - Loopa tills ett villkor är uppfyllt Detta exempel visar så många gånger det går på två sekunder: length anstnr tmp secs 8; drop tmp secs; tmp=time(); *starttid; anstnr=0; secs=0; do until (secs >= 2); anstnr=anstnr+1; output; secs=time()-tmp; end; Sidan 21
22 Alternativt: length anstnr tmp secs 8; drop tmp secs; tmp=time(); *starttid; anstnr=0; secs=0; do while (secs < 2); anstnr=anstnr+1; output; secs=time()-tmp; end; Behålla värden på variabler över fler observationer i datasteget Variabler som skrivs till utdatasetet initieras från början som blank eller missing i programdatavektorn inför varje iteration. Exempel SOM INTE FUNGERAR där variabeln up_down ska uppdateras beroende på hur x förhåller sig till föregående observations x: (testin innehåller fyra poster med x=1,2,1,1. Exemplet går ut på att variabeln up_down blir U, U, D,- på respektive post. Först skapas indatasetet: data testlib.testin; x=1; output; x=2; output; x=1; output; output; Exempel Behålla värdet på variabel utan RETAIN fungerar inte: Sedan ett program för att skapa variabeln up_down: data testlib.utdata; set testlib.indata(keep=x); length last 8. up_down $1; if x>last then up_down='u'; else if x<last then up_down='d'; else if x=last then up_down='-'; last=x; Detta exempel fungerar inte. up_down kommer alltid bli U eftersom last kommer att initieras som missing inför varje iteration. Sidan 22
23 Exempel Behålla värdet på variabel med RETAIN - fungerar: Datasteget kompletteras med ett RETAIN statement som innebär att värdet i programdatavektorn ej initieras av SAS, utan bara ändras då det uttryckligen ändras i programmet: data testlib.utdata; set testlib.indata(keep=x); length last 8. up_down $1; retain last; if x>last then up_down='u'; else if x<last then up_down='d'; else if x=last then up_down='-'; last=x; I detta fall behåller LAST värdet på X i föregående observation och utfallet blir som önskat. Möjligen skulle man vilja att LAST initieras. Annars kommer alltid up_down vara U i första observationen eftersom LAST då är missing. Antag att man vill att ingångsnivån på LAST ska vara 2. Då modifieras retain-satsen enligt nedan: retain last 2; I detta fall kommer up_down i stället bli D i observation ett. Användbara options till SET Till alla uttryck (statements) finns ett antal options som gör att man kan kontrollera dess beteende. Till SET statmentet finns ett antal olika options som man ofta använder för att kontollera hur data läses från indatasetet. I ett dataset kan man läsa från flera indataset på en gång. I detta exempel läses två olika dataset in till datasetet UT. data ut; set test1 test2; Sidan 23
24 Exempel Option (IN=) Med hjälp av option IN= kan man skapa en variabel som innehåller värdet 1 eller 0, 1 när en post läses från dataset eller 0 när det inte sker någon läsning från datasetet. Observera att denna variabel endast finns under exekveringen av datasteget och inte sparas till resultattabellen. Detta är en mycket användbar option som ofta används, framförallt vid matchning av dataset, vilket vi kommer till i senare i kursen. data ut; set test(in=ett) test(in=tva); if ett then text = 'Läser från dataset 1'; if tva then text = 'Läser från dataset 2'; Exempel option (END=) I bland kan det vara bra att veta när datasetet är slut, d.v.s. när sista posten är inläst. Det kan man göra med END=. Den fungerar på samma sätt som IN=, i den mån att en 0/1 variabel skapas under exekvering som kommer att ha värde 1 när sista posten är läst. data _null_; set test end=slut; if slut then put 'Läsning av dataset är slut, sista posten är läst!'; Effektivisering För att effektivisera datasteget bör man inte lyfta in fler variabler eller observationer än man behöver i datasteget. Exempel: Antag att testdata.indata innehåller ett mycket stort antal variabler och väldigt många observationer. TESTDATA.UTDATA ska innehålla två av variablerna och bara de observationer som uppfyller ett villkor. Man kan då köra datasteget: data testdata.utdata(keep=kategori belopp); set testdata.indata; if kategori='a' and belopp>100 then output; Kommentar: Samtliga variabler i INDATA läses i detta exempel in i minnet (i programdatavektorn), även om man anger att utdata endast ska behålla två av dessa. Detta kräver både minne och tid. Datasteget itererar över samtliga poster i indata även om bara de som uppfyller villkoret skrivs till utdata. Detta tar tid. Sidan 24
25 Det är betydligt effektivare att avgränsa det som läses in av SAS genom att ange detta som options redan på INDATA-datasetet: data testdata.utdata; set testdata.indata ( keep=kategori belopp where=(kategori='a' and belopp>100) ); Nu kommer bara de använda variablerna och posterna att läsas in i minnet, vilket är avsevärt mycket mer effektivt om det är många variabler och många poster som inte ska tas med. Ovanstående exempel kördes med ett indataset innehållande drygt 100 variabler och ca observationer och tog för exempel 1 knappt 15 sekunder och för exempel 2 ca 11 sekunder, dvs. en prestandahöjning med 25-30%. SAS-funktioner, ett urval SAS har skapat ett antal funktioner för att göra vissa beräkningar enklare. Nedan följer en mycket kortfattad listning av vissa användbara SAS-funktioner, samt enkla exempel som visar vad vissa av dem utför. Funktionerna indelas i nitton grupper. Här kommer dock endast några av grupperna att nämnas. Aritmetiska funktioner abs(värde) min(värde1,värde2, ) max(värde1,värde2, ) mod(värde1,värde2) Tar fram det absoluta beloppet. Minsta värdet Största värdet Restvärdet vid division värde1/värde2 Exempel: data _null_; a=abs(-40); b=min(1,3,6); c=max(1,3,6); d=mod(9,5); put a= b= c= d=; Trunkeringsfunktioner int(värde) round(värde<,0.1/10/ >) trunc(värde, längd) Tar heltalet (utan att avrunda) Avrundning. Om andra argumentet ej finns avrundas talet till jämnt heltal, annars till valt antal decimaler; tiotal etc. Trunkerar till vald längd Sidan 25
26 data xxx; x= ; y=round(x); yy=round(x,10); z=trunc(x,3); put y= yy= z=; Character-funktioner compress(text1 <,text2>) index(text1<,text2>) Rensar bort alla text2 från text1 Letar efter första tillfället som texten i text2 förekommer i text2. Resultatet anges i vilken position den sökta text2 hittades. Om inte text2 hittas blir resultatet 0. indexc(text1<,text2>) left(text) right(text) length(text) repeat(text,n) scan(textsträng,n,delimeter) substr(textsträng,pos1,n) translate(text, t2, t1) trim(text) Letar efter första tillfället som någon av tecknen i text2 förekommer i text2. Resultatet blir positionsnumret för det först hittade tecknet. Vänsterställer textsträngen Högerställer textsträngen Räknar fram antalet tecken för angiven textsträng Text repeteras n +1 gånger Letar upp det n:e ordet från angiven textsträng där varje ord avskiljs genom via en delimeter. Hämtar tecknen från position pos1 och n positioner framåt från textsträng. Ändrar tecken i text1 från t1 till t2 Tar bort inledande blanksteg från text data _null_; t='detta är en text som jag vill omforma'; a=compress(t,' '); b=index(t,'jag'); c=indexc(t,'jag'); d=length(t); e=scan(t,3,' '); f=repeat(scan(t,3,' '),4); g=substr(t,4,8); h=translate(t, 'a', 'ä'); p ut a= b= c= d= e= f= g= h=; data _null_; length t $30 z $90; t='lkjdfälkj'; z=t t; put z; z=trim(t) trim(t); put z; Kommentar: Detta tecken slår ihop två textsträngar, s.k. konkatenering. Sidan 26
27 Datum och tids funktioner date() datetime() day(sasdatum) month(sasdatum) year(sasdatum) Ger dagens datum Ger dagens datum inklusive klockslag Returnerar dagen från ett SAS-datum Returnerar månaden från ett SAS-datum Returnerar året från ett SAS-datum data _null_; dag=day(date()); man=month(date()); ar=year(date()); put 'År:' ar 'Månad:' man 'Dag:' dag; Funktioner för externa filer PATHNAME( LIBNAME / FILEREF ) returnerar den fysiska sökvägen till SAS-katalogen eller filreferensen. libname clib 'C:\'; data _null_; lib=pathname('clib'); put lib=; Specialfunktioner sysget(env-variabel) symget/symput: system(systemkommando) system("exit"); Ex: kör SET kommandot i DOS: listar systemvariabler. Alla dessa kan hämtas in med sysget. Ex: sysget(username) hämta in / skicka ut makrovariabler (se även Del 4, Makroprogrammering, en introduktion) Ex: call system("md &_lxtmp1_"); call data _null_; length x y $50; x=sysget('processor_identifier'); y=sysget('username'); put x= / y=; %let my_mvar=hej; *Makrovariabel som hämtas in i datasteget nedan; data _null_; a='hejdå'; call symput('ny_mvar',a); y=symget('my_mvar'); put y; %put &ny_mvar; Sidan 27
28 Datasetfunktioner open( datasetnamn ) close(dataset-id) Öppnar ett dataset, returnerar ett positivt id-nr om det gick bra Stänger ett dataset angivet med id-nr som returneras från tidigare open() data _null_; dsid=open('xxx'); put dsid=; a=varname(dsid,2); b=varnum(dsid,'z'); c=vartype(dsid,varnum(dsid,'y')); put a=; put b=; put c=; dsid=close(dsid); put dsid=; Variabelfunktioner varname(dsid,var-num), varnum(dsid, varname ), vartype(dsid,var-num); Returnerar namn på variabel nr. var-num i datasetet dsid. Returnerar vilket ordningsnummer variabeln varname har i datasetet dsid. Returnerar variabeltypen Slumptalsfunktioner Ett exempel på en slumptalsfunktion: RANUNI(seed) Returnerar ett slumptal från en uniform distribution. Seed är ett heltal. Om seed <= 0, så används aktuell tid för att initiera beräkningen. System options När man startar SAS eller under tiden som SAS är igång kan man göra ett antal olika inställningar (options) som påverkar hela SAS-sessionen. Under SAS system help: Main menu / SAS language / SAS System options finns samtliga options. Nedan listar vi några användbara options. För att ange ett eller flera option skriver du: options ; Linesize= (ls=) Pagesize= (ps=) Längden på linjen i en printfil Antal rader som skrivs i en output Sidan 28
29 Number nonumber Date nodate Source nosource Stänger på/av sidnumreringen i OUTPUTfönstret Stänger på/av datumet i output-fönstret Visar SAS-koden i loggen Sidan 29
30 Data till övningar Övningarna är baserade på data från finansinspektionen över insideraffärer. Nedan beskrivs de tabeller som kommer att användas i övningarna. Själva övningarna finns i ett separat dokument. COMPANY Alla företag med organisationsnummer och namn ORGNR Organisationsnummer num VCOMPANY AB-kort char COMPANY Aktiemarknadsbolag char TESTHAND Förändring i innehav IDNR Identifikationsnummer num ORGNR Organisationsnummer num FIN Finansiellt instrument char FINTYP Typ av finans instr. char INSDAT Insiderdatum num ANTAL Antal num CHANGE Ändring char ANDART Ändringens art char TESTIHAV Innehav IDNR Identifikationsnummer num FIN Finansiellt instrument char FINTYP Typ av finans instr. char SENDAT Datum för senaste förändringen num ANTAL Innehav num ORGNR Organisationsnummer num TESTINS Personuppgifter BEFATT IDNR FNAMN ENAMN STORINV char num char char num TESTKURS kursvärde FIN FINTYP KURS KURSDAT ORGNR char char num num num Sidan 30
31 Tabellrelationer Nedan beskrivs relationerna mellan dataseten som används i övningarna. Programhuvud Nedan visas ett exempel på hur ett programhuvud kan se ut, där man skriver vem som skapat programmet, ändringshistorik etc. /* System...: Program...: Function...: Date...: Language...: SAS 9.1 (Base) Programmer...: Dataset/Tables...: Parameters...: See syntax help History...: */ Sidan 31
Objektorienterad programmering Föreläsning 2
Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs mer4. Kunna orientera sig mellan de olika fönstren
Datorövning 1 Statistikens Grunder 1 Syfte 1 Lära sig läsa in data i SAS 2 Importera data från Excel 3 Lära sig skriva ut data med proc print 4 Kunna orientera sig mellan de olika fönstren Exempel Att
Läs merAnvändarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Läs merIntroduktionskurs i SAS
Introduktionskurs i SAS Del 4 Makroprogrammering Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens (Knowit Software Solutions AB) skriftliga
Läs merVisual Basic, en snabbgenomgång
Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika
Läs merAnvända några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt
Datorövning 1 Statistisk teori med tillämpningar Repetition av SAS Syfte Syftet med Datoröving 1 (D1) är att repetera de SAS-kunskaperna från tidigare kurser samt att ge en kort introduktion till de studenter
Läs merIntroduktion till Jasmine 1.2 ODQL
Introduktion till Jasmine 1.2 ODQL I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL. 1 ODQL miljön Man kan enklast köra ODQL mot Jasmine från ett vanligt Command
Läs merAlla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Läs merMålet för D1 är att studenterna ska kunna följande: Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt
Datorövning 1 Statistisk teori med tillämpningar Repetition av SAS Syfte Syftet med Datoröving 1 (D1) är att repetera de SAS-kunskaperna från tidigare kurser samt att ge en kort introduktion till de studenter
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merObjektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Läs merVariabler och konstanter
Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merChapter 3: Using Classes and Objects
Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop
Läs meri LabVIEW. Några programmeringstekniska grundbegrepp
Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar
Läs merLaboration 1. "kompilera"-ikonen "exekvera"-ikonen
Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merLaboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Läs merPROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC
lektion 1 PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC VB är ett applikationsutvecklingsverktyg med programmeringsspråket är basic, gränssnittet är grafiskt och man arbetar hela tiden
Läs merLabb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Läs merProgrammering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Läs merEnkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Läs merGrundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Läs merIntroduktionskurs i SAS Base
Introduktionskurs i SAS Base Del 3 Sammanslagning av dataset (joins) och grundläggande SAS/SQL Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merC++ Lektion Tecken och teckenfält
C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för
Läs merI Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Läs merStatistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs
Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs TE/RC Datorövning 1 Syfte: 1. Lära sig läsa in data i SAS 2. Importera data från Excel 3. Lära sig skriva ut data med proc print 4. Kunna orientera
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Läs merEn kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Läs merDatorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv
Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merAlternativa metoder för sammanslagning av tabeller i SAS. Fredrik Bernström och Johan Elfman Konsulter SAS Institute
Alternativa metoder för sammanslagning av tabeller i SAS Fredrik Bernström och Johan Elfman Konsulter SAS Institute Alternativa metoder för sammanslagning av tabeller i SAS Syfte med presentationen: Visa
Läs merPlanering Programmering grundkurs HI1024 HT TIDAA
Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Läs merDagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
Läs merFöreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Läs merFrekvenstabell över tärningskast med C#
Instruktion Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Innehåll Du ska följa steg för steg -instruktionen i
Läs merC++ Slumptalsfunktioner + switch-satsen
C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.
Läs merGrundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merObjektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 9 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Fält Grunderna Fält med komponenter av struct-typ Fält med referenser Standardklassen
Läs merDesign av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.
Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!
Läs mer[] Arrayer = Indexerad variabel
[] Arrayer = Indexerad variabel Lagra många värden i en variabel Jmfr inom matematiken, variabler x 0, x 1, x 2, I detta dokument tas upp hur man skapar och hanterar sådana variabler i java. Dessa kallas
Läs merFöreläsning 5: Introduktion av pekare
Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men
Läs merProgrammering i C, 7,5 hp
Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata
Läs merÖvning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Läs merLaboration 1. "kompilera"-ikonen "exekvera"-ikonen
Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i
Läs merKPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner
KPP053, HT2016 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner MATLAB Väletablerat Mycket omfattande program GNU OCTAVE Öppen
Läs merPascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs merAnvändarhandledning för koppling av dokument
nvändarhandledning Modul: lla vser: Koppla dokument i 3L 2006 1[11] nvändarhandledning för koppling av dokument Olika typer av dokument kan kopplas till poster i en 3L-databas. Exempelvis kan en eller
Läs merÖversikt över Visual Basic
Översikt över Visual Basic Om denna översikt Denna översikt ger en kort introduktion till de viktigaste delarna i programspråket Visual Basic 6.0. På alla ställen där det beskrivs hur man skriver kod gäller
Läs merPlanering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
Läs merStatistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs
Statistikens grunder och 2, GN, hp, deltid, kvällskurs TE/RC Datorövning 3 Syfte:. Lära sig göra betingade frekvenstabeller 2. Lära sig beskriva en variabel numeriskt med proc univariate 3. Lära sig rita
Läs merPascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs mer729G04 Programmering och diskret matematik. Föreläsning 7
729G04 Programmering och diskret matematik Föreläsning 7 Föreläsningsöversikt Information Interaktion via text Läsa från fil Skriva till fil Spara och läsa abstrakta datatyper från fil Information Felaktigt
Läs merKomponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska
Matlab-föreläsning 3 (4), 17 september, 2015 Innehåll Sekvenser (från förra föreläsningen) Upprepning med for-slingor och while-slingor Villkorssatser med if - then -else - Logik Sekvenser - repetion från
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Läs merLaboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
Läs merSpråket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
Läs merMålet för D2 är att studenterna ska kunna följande: Dra slumptal från olika sannolikhetsfördelningar med hjälp av SAS
Datorövning 2 Statistisk teori med tillämpningar Simulering i SAS Syfte Att simulera data är en metod som ofta används inom forskning inom ett stort antal ämnen, exempelvis nationalekonomi, fysik, miljövetenskap
Läs merJAVAUTVECKLING LEKTION 4
JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet
Läs merLabora&on 2 Funk&oner, if och loop övningar/uppgi:er
Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns
Läs merStatistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs
Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs TE/RC Datorövning 4 Syfte: 1. Lära sig beräkna konfidensintervall och täckningsgrad 2. Lära sig rita en exponentialfördelning 3. Lära sig illustrera
Läs merInledande programmering med C# (1DV402) Summera med while"-satsen
Summera med while"-satsen Upphovsrätt för detta verk Inledande programmering med C# (1DV402) Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får
Läs merHI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början
Läs merÖvning2. Variabler. Data typer
Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merFöreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER
Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera
Läs merTIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE
TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE ÖVERBLICK 10 inställningar I Enterprise Guide 3 tips för processflöden Utforska med Data Explorer 5 användbara kortkommandon
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor
732G11 Linköpings universitet 2011-02-01 1 2 3 Strukturdiagram Strukturdiagram används för att visa hur ett program fungerar. Man kan se alla val och upprepningar som sker i programmet. Består av tre (!)
Läs merFunktioner. Linda Mannila
Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen
Läs merPlanering Programmering grundkurs HI1024 HT 2015 - data
Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Läs merUppgift 1 (Oläsliga krypterade meddelanden)
Uppgift 1 (Oläsliga krypterade meddelanden) Ofta vill man kryptera text för att inte andra skall se vad man skrivit. I den givna filen KRYPTERAD_TEXT.TXT finns en krypterad text som kan vara av intresse
Läs merProgrammeringsteknisk översiktskurs för yrkeshögskoleprogram
Programmeringsteknisk översiktskurs för yrkeshögskoleprogram Föreläsning 12 Våren 2005 Innehåll Palindrom Hur man hittar fel i program, debuggning Felhantering, hur man förhindrar program att krascha Ev.
Läs merDagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -
Läs merCOBOL. från grunden. monitors. Peter Sterwe. training people
training people monitors COBOL från grunden Peter Sterwe Lär dig grunderna i COBOL-programmering på ett översiktligt och pedagogiskt sätt från företaget som har mer än trettio års erfarenhet av utbildning
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs merFrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll
FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merSphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.
Sphero SPRK+ Appen som används är Sphero Edu När appen öppnas kommer man till denna bild. Klicka på 3D-modeller för att se delarna på Sphero Klicka här för att ansluta Sphero till ipad Programmet för att
Läs merDagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)
Programmeringsteknik och Matlab Övning Dagens program Övningsgrupp 2 (Sal Q22/E2) Johannes Hjorth hjorth@nada.kth.se Rum 458 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d2
Läs merFöreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merProgrammering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Läs merÖvningsuppgifter till föreläsning 2 Variabler och uttryck
Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna
Läs merKapitel 16: Programmering
Kapitel 16: mering Innehåll Komma igång: Volymen av en cylinder...2 Skapa och ta bort program...4 Skriva instruktioner och köra program...5 Redigera program...6 Kopiera och byta namn på program...7 PRGM
Läs merPROGRAMMERING-Java Omtentamina
PROGRAMMERING-Java Omtentamina Nicolina Månsson 2007-08 13 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 41 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. -
Läs merDatorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma
Läs merMålet för D3 är att studenterna ska kunna följande: Dra slumptal från olika sannolikhetsfördelningar med hjälp av SAS
Datorövning 3 Statistisk teori med tillämpningar Simulering i SAS Syfte Att simulera data är en metod som ofta används inom forskning inom ett stort antal ämnen, exempelvis nationalekonomi, fysik, miljövetenskap
Läs merMedieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor
http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript
Läs merIntroduktion till frågespråket SQL (v0.91)
DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs mer