Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Relevanta dokument
Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

JAVAUTVECKLING LEKTION 4

F4. programmeringsteknik och Matlab

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

F2: Styrstrukturer, programmeringsteknik (kap. 3 4)

Villkor, if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Objektorienterad programmering

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Inledande programmering med C# (1DV402) Summera med while"-satsen

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Sanningar om programmering

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Variabler och konstanter

Programmering i C, 7,5 hp

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Föreläsning 1 & 2 INTRODUKTION

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Visual Basic, en snabbgenomgång

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

For-sats/slinga. Notis

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 3-4 Innehåll

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

[] Arrayer = Indexerad variabel

DD1314 Programmeringsteknik

Föreläsning 1 & 2 INTRODUKTION

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Beräkningsverktyg HT07

Sanningar om programmering

Beräkningsvetenskap föreläsning 2

Testning. 1. Inledning

Typkonvertering. Java versus C

TDIU01 - Programmering i C++, grundkurs

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Planering av ett större program, del 2 - for och listor. Linda Mannila

Exceptions (undantag) Murach s: kap 7

Språket Python - Del 1 Grundkurs i programmering med Python

Objektorienterad Programmering (TDDC77)

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Testning av program. Verklig modell för programutveckling

Iteration while-satsen

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Klassdeklaration. Metoddeklaration. Parameteröverföring

TDIU01 - Programmering i C++, grundkurs

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Instuderingsfrågor, del B

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Föreläsning 2 Programmeringsteknik och C DD1316

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

TANA17 Matematiska beräkningar med Matlab

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Kursplanering för EE3D i kursen Programmering 1, 100p.

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Föreläsning 3. Iteration while-satsen

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

SMD 134 Objektorienterad programmering

TDDC77 Objektorienterad Programmering

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Övningsuppgifter kapitel 8

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

JavaScript del 3 If, Operatorer och Confirm

Sanningar om programmering. Sanningar om programmering. Programmeringsprocessen. Att skriva program i Matlab. Programmeringsprocessen

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Övning2. Variabler. Data typer

Data, typ, selektion, iteration

Föreläsning 3: Booleans, if, switch

Transkript:

Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Föreläsning 2: Styrstrukturer & Programmeringsstrategi (Kap. 3 4 i MATLAB Programming for Engineers, S. Chapman) January 21, 2014

Innehåll: Programmeringsstrategi if-satsen switch-satsen try/catch-konstruktionen while-slingan for-slingan avlusning av kod Testning

Styrsatser Tidigare exempel visade sekventiell exekvering av kod. Här villkorad exekvering av kod: Förgrenad exekvering: if-, switch-satser, och för felhantering try/catch-konstruktionen, Upprepad exekvering: while-, och for-slingan Nödvändigt för allt utom de enklaste uppgifter. Större och mer komplicerade program kräver också mer eftertanke innan man börjar skriva programmet.

Programmeringsstrategi Hur beskriver man vad programmet ska göra? Tolka uppdragsgivarens (arbetsgivare, användare, du själv) önskemål Strategi: 1. Definiera uppgiften/problemet 2. Identifiera in- och utdata 3. Välj en algoritm 4. Implementera algoritmen (i Matlab) 5. Testa programmet Algoritm: detaljerad beskrivning av hur man i ett ändligt antal steg löser en uppgift. Punkt 3 leder ofta till delproblem där hela strategin upprepas i mindre skala.

if-satsen Används då ett avsnitt av kod (en eller flera kommandon) bara ska exekveras under vissa förutsättningar Undersöker om ett villkor är uppfyllt i f v i l l k o r kommandon i f v i l l k o r kommandon, a l t 1 e l s e kommandon, a l t 2 Exempel PEng calc roots.m i f v i l l k o r 1 kommandon, a l t 1 e l s e i f v i l l k o r 2 kommandon, a l t 2 e l s e kommandon, a l t 3

if-satsen Exempel: c l e a r d i s p ( Jag t a r r o t e n ur e t t t a l. ) t a l = i n p u t ( Ange e t t r e e l l t t a l : ) ; i f t a l <0 d i s p ( Roten b l i r komplex : ) e l s e d i s p ( Roten b l i r r e e l l : ) d i s p ( s q r t ( t a l ) )

villkor och datatypen logical I villkor används uttryck vars resultat är av datatypen logical; möjliga värden true/false. Tal kan också användas (0 ger false, annars true) Relationsoperatorer ger resultat av typen logical. Ex: ==, =, >, <=,... Många inbyggda funktioner också. Ex: strcmp(str1,str2) ger true om två strängar är identiska, false annars isinf(x) ger true om variabeln x fått värdet Inf. (T.ex. division med 0.) isreal(x) ger true om variabeln x är ett reelt tal. (T.ex. isreal(2+i) ger false). Många inbyggda is -funktioner i Matlab Logiska operatorer & och, eller, ~ icke,... opererar på logiska variabler

villkor och datatypen logical c l e a r a = 0. 1 ; a > 0 ans = 1 a < 0 ans = 0 whos Name S i z e Bytes C l a s s A t t r i b u t e s a 1 x1 8 double ans 1 x1 1 l o g i c a l d i a r y o f f

villkor och datatypen logical Villkor på tabeller ger åtkomst av utvalda element: a = 2:2 a = 2 1 0 1 2 i c k e n e g = a>=0 i c k e n e g = 0 0 1 1 1 r o t e n = s q r t ( a ( a>=0)) r o t e n = 0 1.0000 1.4142 whos Name S i z e Bytes C l a s s A t t r i b u t e s a 1 x5 40 double ans 1 x1 1 l o g i c a l

switch-satsen Används som if-satsen i vissa särskillda fall: Flera villkor ska kontrolleras på samma variabel Alla villkor är av typen variabel = värde Variabeln är ett tal (==) eller en sträng (strcmp) Undersöker om ett villkor är uppfyllt s w i t c h v a r c a s e 1 kommandon, a l t 1 c a s e {2,3} kommandon, a l t 2 c a s e {4,5} kommandon, a l t 3 o t h e r w i s e u p p s a m l i n g s f a l l

switch-satsen Exempel: d i s p ( Vad s a e g e r d j u r e t? ) d j u r =... i n p u t ( V a e l j d j u r ( mus/ko/and/ anka ) :, s ) ; s w i t c h d j u r c a s e mus d i s p ( Pip ) c a s e ko d i s p ( Mu! ) c a s e { and, anka } d i s p ( Kvack! ) o t h e r w i s e d i s p (? )

try/catch-konstruktionen Normalt avbryts exekveringen av ett program om ett fel uppstår. try/catch-konstruktionen låter oss bestämma själva vad som händer vid fel: Vi kan ta hand om all felhantering själva, eller t.ex. ta hand om ett vanligt användarfel, och låta programmet avbrytas vid övriga fel t r y kommandon catch me f e l h a n t e r i n g Mycket användbart vid avlusning (speciellt funktionsanrop, återkommer i nästa föreläsning) Man kan själv generera felmeddelanden via error.

try/catch-exempel, PEng s.117 c l e a r % i n i t i a l i z e an a r r a y a = rand ( 1, 1 0 ) ; t r y % Try to d i s p l a y an element i n d e x = i n p u t (... Enter s u b s c r i p t o f element to d i s p l a y : ) ; d i s p ( [ a ( i n t 2 s t r ( i n d e x ) ) =... num2str ( a ( i n d e x ) ) ] ) ; catch % I f we get h e r e an e r r o r o c c u r r e d d i s p ( [ I l l e g a l s u b s c r i p t :, i n t 2 s t r ( i n d e x ) ] ) ; d i s p ( E x e c u t i o n c o n t i n u e s here )

Annat try/catch-exempel (dagboksfil) c l e a r a = l i n s p a c e ( 0, 1, 6 ) ; t ry, a ( 1 0 ), catch me, whos Name S i z e Bytes C l a s s A t t r i b u t e s a 1 x6 48 double me 1 x1 807 MException d i a r y o f f Variabeln me är ett exempel på en sammasatt datatyp. Återkommer senare i kursen.

try/catch-exempel (dagboksfil) me me = <a h r e f = matlab : helppopup MException s t y l e = f i d e n t i f i e r : MATLAB: b a d s u b s c r i p t message : I n d e x e x c e e d s m a t r i x d i m e n s i o n s cause : {} s t a c k : [ 0 x1 s t r u c t ] d i a r y o f f

try/catch-exempel (dagboksfil) Vi kan använda Matlab-funktionen strcmp, tillsammans med if-satser för att ta hand om vissa utvalda fel. strcmp (me. message,... I n d e x e x c e e d s m a t r i x d i m e n s i o n s. ) ans = 1 strcmp (me. message, Annat meddelande ) ans = 0 d i a r y o f f

try/catch-exempel a = rand ( 1, 1 0 ) ; i d x = 1 1 ; t r y a ( i d x ) catch me i f strcmp (me. message,... I n d e x e x c e e d s m a t r i x d i m e n s i o n s. ) d i s p ( [ a har, i n t 2 s t r ( l e n g t h ( a ) ),... element ] ) e l s e throw (me)

while-slingan Används för att upprepa ett avsnitt av kod Används när man i förväg inte vet antalet upprepningar Kodavsnittet upprepas så länge villkoret är uppfyllt w h i l e v i l l k o r kommandon Exempel: Låt en användare mata in ett godtyckligt antal mätpunkter.

while-slingan Exempel: c l e a r tx = [ ] ; d i s p ( Mata i n p u n k t e r ( t i d, p o s i t i o n ) ) d i s p ( Tom inmatning a v s l u t a r. ) w h i l e e x i s t ( svar, var ) isempty ( s v a r ) s v a r = i n p u t ( Ange k o o r d i n a t e r, [ t, x ] : ) ; tx = [ tx ; s v a r ] ; d i s p ( tx ) Exempel PEng stats 3.m

for-slingan Används som while-slingan, när man vet antal upprepningar i förväg Index-variabeln tilldelas ett värde i taget ur tabellen (oftast en radvektor) i slingans huvud Ändra inte for-slingans index inne i slingan f o r k=k0 : s t e g : k1 kommandon f o r k =1:2:15 d i s p ( [ k =, i n t 2 s t r ( k ) ] ) f o r k=v e k t o r kommandon f o r k=[4 1 6 7 4 ] d i s p ( [ k =, i n t 2 s t r ( k ) ] ) Exempel: summera alla tal i en lista som uppfyller något villkor.

for-slingan Exempel: c l e a r s = 0 ; f o r k =2:100 i f i s p r i m e ( k ) s = s+k ; d i s p ( [ s =, i n t 2 s t r ( s ) ] ) Det finns också en inbyggd funktion sum som vi kunde använt med logisk indexering. Hur?

break och continue Används i for- eller while-slingor i samband med logiska villkorsuttryck continue Gå direkt till nästa upprepning av slingan utan att exekvera resten av satserna inne i slingan. break Avbryt slingan utan att exekvera resten av satserna inne i slingan. Ex: bc.m

Avlusning Provkör för att upptäcka Syntaxfel (språkfel), t.ex. ett felaktigt tecken som gör att kommandona inte kan exekveras Exekveringsfel (fel under körning), t.ex. felaktig indexering Felaktiga resultat. Kräver (viss) kunskap om resultatet (i vissa fall).

Testning Hur vet man att programmets resultat är korrekta? Främst: Systematisk manuell testning av olika fall/indata Skriv ett program som automatiskt testar olika fall/indata