Träning 13 Makroprogrammering

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Relationsdatabasdesign
1 Optimala rundvirkeslager m.h.t. stokastiska leveransvariationer -Lager B Introduktion Peter Lohmander
Klasser och objekt.
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Databasteknik 2.
Metoder i java Det finns två typer av metoder i java
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Stora additionstabellen
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Programmering B PHP Lektion 1 Mahmud Al Hakim Folkuniversitetet
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Bild 1 Hur använder vi KursInfo idag? Högskolan i Skövde.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Det handlar om multiplikation
DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 4 Mahmud Al Hakim
Skattningens medelfel
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Diskreta, deterministiska system Projekt 1.2; Vildkatt
Modulär programutveckling
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 4 Klasser Och Objekt.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
XML, scheman och mappningar
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Träning 13 Makroprogrammering Detta är en mall för att göra PowerPoint presentationer. Du skriver in din rubrik på första sidan. För att skapa nya sidor, tryck Ctrl+M. Skriv sedan in din text. Om du vill ha fast datum, eller ändra författarnamn, gå in under Visa, Sidhuvud och Sidfot. Vill du använda hörnet med loggan över en utfallande bild, gå in på Bildbakgrund och kopiera. Klistra sedan in på den sida du vill ha den.

Makroprogrammering Makrokoden är ett sätt att generera en SAS-kod Användning av makrot brukar reducera kodskrivning betydligt Möjlighet att skapa smidiga koder SAS-kod Exekvering Kompilering Nya mängder, utskrifter osv Makrokod SAS programmering 2015

Makrovariabler Man kan definiera makrovariabler för att använda dem senare i koden: %LET makronamn=uttryck; Använd & för att referera till en makrovariabel %let var_list = RBC WBC Chol; title "Using a Macro Variable List"; proc means data=learn.blood n mean min max maxdec=1; var &var_list; run; Var det nyttigt att skapa en makrovariabel här? SAS programmering 2015

Makrovariabler SAS programmering 2015

Inbyggda makronamn &sysdate - datum sessionen startade &systime - tid sessionen startade &sysday – veckodag title "The Date is &sysdate9 - the Time is &systime"; proc print data=learn.test_scores noobs; run; SAS programmering 2015

Makron %macro macronamn <(variabellista)>; Ett makro är en struktur som tillåter att generera en SAS kod Se ut som en procedur i vanliga programmeringsspråk såsom C eller Java %macro macronamn <(variabellista)>; …. %mend macronamn Anropa makrot: %macronamn; %macro gen(n); data generate; do r = 1 to &n; x = sqrt(r); output; end; run; %mend gen; %gen(4); Kompilering av detta makro= ersätta n med 4, Exekvering= kör koden SAS programmering 2015

Debugging Makrokoden blir sällan 100% rätt För att kunna skicka själva SAS koden eller värdena på makrovariabler till log använd Options <option>; mprint skriver SAS koden till loggen (motsats nomprint) mlogic Detaljerad utskrift av hur makro har fungerat (motsats nomlogic) symbolgen visar värdena på makrovariabler options mprint symbolgen; %macro gen(n); … samma kod som förut SAS programmering 2015

Makron Det finns parametrar som alltid står på en bestämd plats och de som kan stå var som helst: %macro gen(factor, Start=1, End=); data generate; do r = &Start to &End; x = &factor*sqrt(r); output; end; run; %mend gen; %gen(1,End=6); SAS programmering 2015

Makrokommandon För att ändra kompilerarens vanliga beteendet kan man använda makrokommandon %IF… %THEN…; %ELSE… ; %DO … %END; %DO namn=… %TO …;…; %END; %macro divide; %DO g= 1 %to 4; data grupp&g; set learn.blood; array groups[4] $ _temporary_ ('A' 'AB' 'B' 'O'); if bloodtype eq groups{&g}; run; %END; %mend divide; SAS programmering 2015

Makrokommandon SAS programmering 2015

Använda makronamn som en del av SAS namn Vad kommer survey2..&lib att översättas till? Alternativ: <sasnamn>&macronamn; /*Länka samman*/ <&macronamn>.<sasnamn>; /*Länka samman*/ <&macronamn>..<sasnamn>; /*om det behövs punkt mellan macronamn och sasnamn*/ %macro question(lib, variabel, index); data question&index; set &lib..survey2; keep &variabel.&index; run; %mend question; %question(learn,Q,1); SAS programmering 2015

Använda makronamn som en del av SAS namn Att räkna ut ordningsstatistik %let myname=S; %macro ordning; data surveyscore; set learn.survey2; %do i=1 %to 5; &myname.&i=largest(&i, of Q1-Q5); %end; run; %mend ordning; %ordning; SAS programmering 2015

Citationstecken Om man använder makronamn i en textsträng, då måste man använda dubbla citationstecken: %Let filen=gym; data _null_; file "Z:\732G17\2011\Traning 13\&filen..txt"; set learn.&filen; put Subj--Fee; run; SAS programmering 2015

Makron Makron behöver inte innehålla fullständiga programsatser Makron kan anropas var som helst %macro namn(antal); %Do i=1 %to &antal; +&i.*Q&i %end; ; %mend namn; data new; set learn.survey2; Score=%namn(5); run; SAS programmering 2015

Makrovariabler och datasteget Om man vet vilket värde en makrovariabel skulle ha Använd typ %LET var=17; Om makrovariabelns värde skulle bli lika med ett värde på en annan variabel använd CALL SYMPUT(’macronamn’, variabelnamn) Om makronamnet sparas i en annan variabel, kan man få makrovariabelns värde genom CALL SYMGET(variabel) Varför kan man inte skriva %let macronamn=variabelnamn ? SAS programmering 2015

SYMPUT proc means data=learn.blood noprint; var RBC WBC; output out=means mean= M_RBC M_WBC; run; data _null_; set means; call symput('AveRBC',M_RBC); call symput('AveWBC',M_WBC); data new; set learn.blood(obs=5 keep=Subject RBC WBC); Per_RBC = RBC / &AveRBC; Per_WBC = WBC / &AveWBC; format Per_RBC Per_WBC percent8.; SAS programmering 2015

Makron i Help Undersök HelpBase SASSAS Macro Reference SAS programmering 2015

Övningar (Prio 1) Övning 4 sida 534 (Prio 2) Skriv ett makro som beror på parametern plats och gör följande: Om plats=’XLS’ då sparas learn.blood som en Excel fil Annars sparas learn.blood som en CSV fil SAS programmering 2015

Övningar (Prio 1) (Prio 2) Skriv ett makro som räknar ut N:te ruten ur x för alla x från 1 till 100. Resultatet är en tabell med kolumnerna P1,..P10 där varje kolumn visar motsvarande ruten. TIPS1: Variera x med en vanlig DO loop och kolumnindex med %DO loopen TIPS2: 5te ruten ur x skrivs i SAS som x**(1/5) (Prio 2) Övning 5 sida 534 SAS programmering 2015

Läsa hemma Kapitel 25 SAS Help SAS programmering 2015