10 Elementen i strukturerad programmering Sekvens Selektion Iteration



















































![Strukturerad Programmering Start Mata in inkomst [>= 0] inkomst [< 0] Slut Beräkning Skriv Strukturerad Programmering Start Mata in inkomst [>= 0] inkomst [< 0] Slut Beräkning Skriv](https://slidetodoc.com/presentation_image_h2/60c4140fd602f99ab2dedfd343c9c603/image-52.jpg)
![Strukturerad Programmering Beräkning Start inkomst [>= 0 and < 100] [>= 100 and < Strukturerad Programmering Beräkning Start inkomst [>= 0 and < 100] [>= 100 and <](https://slidetodoc.com/presentation_image_h2/60c4140fd602f99ab2dedfd343c9c603/image-53.jpg)
![Strukturerad Programmering Start Mata in inkomst [< 0] Slut [>= 0 and < 100] Strukturerad Programmering Start Mata in inkomst [< 0] Slut [>= 0 and < 100]](https://slidetodoc.com/presentation_image_h2/60c4140fd602f99ab2dedfd343c9c603/image-54.jpg)




![Strukturer - poster Även poster kan beskrivas med strukturdiagram class Bibliotek { public Bok[] Strukturer - poster Även poster kan beskrivas med strukturdiagram class Bibliotek { public Bok[]](https://slidetodoc.com/presentation_image_h2/60c4140fd602f99ab2dedfd343c9c603/image-59.jpg)






- Slides: 65
10. Elementen i strukturerad programmering Sekvens Selektion Iteration
Sekvens
Sekvens En sekvens beskriver något som kan delas upp i en bestämd tidsföljd, t. ex 19. 00 Kulturnyheterna 19. 10 Regionala nyheter 19. 30 Filmkrönikan eller 06. 00 Gomorron Sverige 06. 45 Klappar på kredit kan bli dyr affär, 06. 50 Svensk hockey på hal is? 07. 15 Julkalendern med Allrams höjdarpaket 07. 30 Gomorron Sverige 07. 49 Boktips för barn 08. 10 Är Rumänien redo för EU? 08. 20 Möt männen bakom Hipphipp! 09. 30 Om barn 10. 00 Alla sinnen tillåtna! Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 3
Sekvens public class JSPTest { public static void Main () { int a = 2; int b = 3; int c = 4; a = a + b + c; b = a + b + c; c = a + b + c; System. Console. Write. Line("a = " + a); System. Console. Write. Line("b = " + b); System. Console. Write. Line("c = " + c); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 4
Sekvens JSP Flödesdiagram Program bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 5
Sekvens, exempel JSP Flödesdiagram Start Hello Skriv ut ”Hello World!” Stopp public class Hello { public static void Main () { System. Console. Write. Line(“Hello World!"); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 6
Sekvens Area. Test Inmatning Skriv ledtext Beräkning Läs radie area=PI * radie*radie Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur Utskrift Skriv area 7
Sekvens Area. Test Skriv ledtext Läs radie area = pi * radie Skriv area Slut Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 8
Sekvens public class Area. Test { public static void Main () { System. Console. Write. Line("Ange radie: "); double radie = double. Parse( System. Console. Read. Line() ); double area = 3. 1415 * radie; System. Console. Write. Line("area = " + area); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 9
Selektion
Relationsoperatorer == != > >= < <= Lika med Inte lika med (Skilt från) Större än eller lika med Mindre än eller lika med Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11
Booleska operatorer ! || && inte eller och Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 12
Booleska (logiska) operatorer ! (ICKE) Om… a b s s s f f && (OCH) a && b s f f f || (ELLER) a || b s s s f Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur !a f f s s 13
Selektion - if JSP Flödesdiagram Program villkor sant (villkor) o bearbetning falskt Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur bearbetning 14
Selektion - if, exempel JSP Flödesdiagram Selektions. Test Sätt antal = 2 antalkoll (antal = 2) Skriv ut "OK, deto stämde!" Start Sätt antal = 2 Är antal=2 ? falskt sant Skriv ut "OK, det stämde!" Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 15
Sekvens public class If. Test { public static void Main () { int antal = 2; if (antal == 2) { System. Console. Write. Line(“OK, det stämde!"); } } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 16
Selektion – if-else JSP Flödesdiagram villkor Program (villkor = sant) (villkor = falskt) o bearbetning o sant falskt bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 17
Selektion – if-else, exempel JSP Flödesdiagram Start Selektions. Test Läs in antalkoll sant Är antal=2 ? falskt (antal = 2) Skriv "OK, det stämde!" o Skriv ”Nej, det blev fel!” o Skriv "OK, det stämde!" Skriv ”Nej, det blev fel!” Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 18
Sekvens public class If. Test { public static void Main () { int antal = int. Parse( System. Console. Read. Line() ); if (antal == 2) { System. Console. Write. Line(“OK, det stämde!"); } else { System. Console. Write. Line(“Nej, det blev fel!"); } } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 19
Selektion – if-else, exempel JSP Flödesdiagram Selektions. Test 3 Läs in antal (antal = 1 eller 2) Skriv "OK, det stämde!" antalkoll o Start Läs in antal = 1 eller 2? Skriv ”Utanför o intervallet!” sant falskt Skriv "OK, det stämde!" Skriv ”Utanför intervallet!” Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 20
Selektion – if-else public class If. Test { public static void Main () { int antal = int. Parse( System. Console. Read. Line() ); if (antal == 1 || antal == 2) { System. Console. Write. Line(“OK, det stämde!"); } else { System. Console. Write. Line(“Utanför intervallet!"); } } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 21
Villkorsoperatorn Kommer ni ihåg Excel? villkor resultat om sant resultat om falskt Villkorsoperatorn i C/C++/Java/C#: villkor ? resultat om sant : resultat om falskt ; Exempel: int a = 23; string b = a >= 10 ? “större” : “mindre” ; System. Console. Write. Line( b ); (Nu har vi nämnt villkorsoperatorn, men använd hellre if-satser… ) Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22
if - else Villkorsoperatorn i C/C++/Java/C#: int a = 23; string b = a >= 10 ? “större” : “mindre” ; System. Console. Write. Line( b ); Kan lika gärna (hellre? ) använda en if-else-sats: int a = 23; string b = null; if (a >= 10) { b = “större”; } else { b = “mindre” ; } System. Console. Write. Line( b ); Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 23
Compare. To Används för att jämföra strängar. Uttrycket s 1. Compare. To(s 2) ger följande resultat: <0 om s 1 är mindre än s 2 =0 om s 1 är lika med s 2 >0 om s 1 är större än s 2 Tecken för tecken jämförs Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 24
Compare. To ett exempel string s 1 = ”Bo”; string s 2 = ”Hans”; if( (s 1. Compare. To(s 2)) > 0 ) { System. Console. Write(”Bo”); } else { System. Console. Write(”Hans”); } Vad skrivs ut? ? Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 25
Selektion – if-else/switch JSP Flödesdiagram Program villko r Alternativ 1 Alternativ 2 (alt 1) o bearbet -ning (alt 2) o bearbetning (alt 3) o bearbetning Alternativ 3 bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 26
Selektion – if-else/switch JSP Flödesdiagram Start Switch. Test Läs in antal (antal = 1) Antalkoll (antal = 2) o Skriv ut ”Nu är det galet igen” Skriv ut ”OK, det stämde” antal ? 1 o o Skriv ut ”Hmm, så ska det inte vara” Skriv ut ”Nu är det galet igen” 2 Skriv ut ”OK, det stämde” annat Skriv ut ”Hmm, så ska det inte vara” Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 27
Sekvens – switch public class Switch. Test { public static void Main () { int antal = int. Parse( System. Console. Read. Line() ); switch ( antal ) { case 1 : System. Console. Write. Line(“Nu är det galet igen!"); break; case 2 : System. Console. Write. Line(“OK, det stämde!"); break; default : System. Console. Write. Line(“Hmm, så ska det inte vara!"); break; } } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 28
Sekvens – if-else public class If. Test { public static void Main () { int antal = int. Parse( System. Console. Read. Line() ); if (antal == 1 ) { System. Console. Write. Line(“Nu är det galet igen!"); } else if (antal == 2) { System. Console. Write. Line(“OK, det stämde!"); } else { System. Console. Write. Line(“Hmm, så ska det inte vara!"); } } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 29
Iteration
Iteration JSP Flödesdiagram Stomme falskt villkor (villkor) bearbetning * sant bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 31
JSP While. Loop summa=0 Läs in tal antal =0 (tal <> 999) summa = summa + tal Talstomme medel = summa / antal Skriv ut medel Tal* bearbetning antal = antal +1 Läs in tal Flödesdiagram Start tal = 999 falskt summa = 0 antal = 0 Läs in tal sant Medel = summa / antal summa = summa + tal Skriv ut medel Stopp antal = antal +1 Läs in tal Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 32
Iteration – while public class While. Loop { public static void Main () { double summa = 0; int antal = 0; int tal = int. Parse( System. Console. Read. Line() ); while ( tal != 999 ) { summa = summa + tal; antal++; tal = int. Parse( System. Console. Read. Line() ); } double medel = summa / antal; System. Console. Write. Line(“Medel = “ + medel); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33
Ett återkommande mönster Iterationen i exemplet Standarditeration Initiering av uttrycket för villkoret (villkor) . . . - iteration Förändring av uttrycket för villkoret Inläsning av tal * - (tal är inte 999) iteration * Inläsning av tal. . . Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 34
Ett återkommande mönster Initiering av uttrycket för villkoret villkor falskt Inläsning av tal sant tal = 999 falskt … … Förändring av uttrycket för villkoret Inläsning av tal sant … Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 35
Iteration – do-while Flödesdiagram JSP Stomme bearbetning (villkor) bearbetning * villkor sant falskt Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 36
JSP Flödesdiagram Iteration – do-while, exempel Start Do. Loop Sätt fortsätt till ’n’ Skriv ut datum (fortsätt = y) * Läs in fortsätt Skriv ut datum Läs in fortsätt y n Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 37
Iteration - for JSP Flödesdiagram Stomme villkor (x ggr) bearbetning * x ggr bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 38
Iteration – vad for gör – egentligen… JSP Flödesdiagram initiering - (villkor) - bearbetning * loopslut villko r bearbetning loopslut Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 39
Iteration – men ibland kan vi uttrycka for enklare… JSP Flödesdiagram - (100 ggr) - * bearbetning 100 ggr bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 40
Iteration - foreach JSP Flödesdiagram Stomme * (för varje x i y) Bearbetning villko r för varje x i y Bearbetning Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 41
Iteration – break, continue Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 42
Rekursiva metoder JSP Inparametrar: rot, av typen Directory. Info nivå, heltal Directories Skapa en sträng indent med längden nivå Skriv ut indent och Directory. Info v= rot. Get. Directories() Rekursiv Iteration (för varje nod i v) * Directories (nod, nivå) Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 43
Rekursiva metoder Flödesdiagram Directories Inparametrar: rot av typen Directory. Info nivå, heltal Skapa en sträng indent med längden nivå Skriv ut indent och Directory. Info villko r v= rot. Get. Directories() för varje nod i v Directories (nod, nivå + 1) Stopp Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 44
Fällor • Har du nollställt de variabler du använder innan du går in i en ny iteration? • Tänk särskilt på vad det är för värden i de variabler som ingår i olika villkor. • I synnerhet i villkorssatser för iterationer, eftersom du annars kan hamna i en oändlig loop! • Skrivbordstesta! Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 45
Diagram för metoder JSP Flödesdiagram Inparametrar: a och b (heltal) Max a>b returnera r r=a (a > b) r=a Max o r=b Returnera r Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 46
Diagram för metoder JSP Flödesdiagram Inparametrar: a och b (heltal) Max Inparametrar: a och b (heltal) Start Max a>b (a > b) o Returnera a o Returnera b Returnera a Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur Returnera b 47
Diagram för metoder JSP Flödesdiagram Inläsning av tal x Start Main Inläsning av tal y z = Max(x, y) Inläsning av tal x Inläsning av tal y z = Max(x, y) Skriv ut z Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur Skriv ut z Stopp 48
Fler exempel
Statlig inkomstskatt • Definiera problemet (Ur ”Dags att deklarera”): ”Om din beskattningsbara förvärvsinkomst är lägst 100 kr men högst 209 100 kr, betalar du 200 kr i statlig inkomstskatt. Om din beskattningsbara förvärvsinkomst är högre än 209 100 kr, betalar du statlig inkomstskatt med 200 kr plus 25% av den del som överstiger 209 100 kr. ” Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 50
Statlig inkomstskatt • Planera för lösningen • Vid körning av programmet skall man ges tillfälle att mata in den beskattningsbara förvärvsinkomsten. • När användaren matat in den aktuella inkomsten skall den statliga inkomstskatten skrivas ut, föregången av texten ”Den statliga skatten blir: ” • Vi förutsätter att den inmatade inkomsten är ett heltal. • Man ska kunna göra godtyckligt många beräkningar utan att behöva starta programmet igen. För att markera avslutning ska ett negativt belopp matas in. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 51
Strukturerad Programmering Start Mata in inkomst [>= 0] inkomst [< 0] Slut Beräkning Skriv ut skatt Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 52
Strukturerad Programmering Beräkning Start inkomst [>= 0 and < 100] [>= 100 and < 209100] skatt = 0 skatt = 200 [>= 209100] skatt = 200 + 25% Slut Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 53
Strukturerad Programmering Start Mata in inkomst [< 0] Slut [>= 0 and < 100] [>= 100 and < 209100] skatt = 0 skatt = 200 [>= 209100] skatt = 200 + 25% Skriv ut skatt Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 54
Statlig inkomstskatt Start Tills inkomst < 0 Mata in inkomst * Kolla inkomst Skriv ut skatt [negativt tal] [< 100] o [>= 100 och < 209100] o negativ ingen Avsluta Skatt = 0 [> 209100] låg Skatt = 200 o hög o Skatt = 200 + 25% Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55
Strukturerad Programmering • Pseudokod: REPETERA Läs in inkomst OM inkomst < 0 avbryt exekveringen ANNARS OM inkomst > 209100 skatt = 200 + 0. 25 * (inkomst - 209100) ANNARS OM inkomst >= 100 skatt = 200 ANNARS skatt = 0; OM-SLUT Skriv ut "Den statliga skatten blir: " + skatt LOOP-SLUT Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 56
Strukturerad Programmering int skatt, inkomst; while (true) { Console. Write ("Ange den beskattningsbara inkomsten: "); inkomst = int. Parse( Console. Read. Line() ); if (inkomst < 0) { return; } else if (inkomst > 209100) { skatt = (int) (200 + 0. 25 * (inkomst - 209100)); } else if (inkomst >= 100) { skatt = 200; } else { skatt = 0; } Console. Write. Line("Den statliga skatten blir: " + skatt); } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 57
Strukturer - poster class Bok { public string titel; public string författare; public float pris; } class Bok. Test { public static void Main ( ) { Bok programmeringsbok = new Bok(); programmeringsbok. titel = ”C# från grunden”; System. Console. Write. Line(programmeringsbok. titel); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 58
Strukturer - poster Även poster kan beskrivas med strukturdiagram class Bibliotek { public Bok[] böcker; } class Bok { public string titel; public string författare; public float pris; } Vad är den totala inköpssumman för alla böckerna? titel Bibliotek * Bok författare Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur pris 59
Strukturer - poster Vi börjar med att renodla vad vi behöver använda i algoritmen. Som du ser följer vi helt enkelt den struktur som redan finns! Summering summa = 0 Skriv ut summa Bibliotek (Så länge det finns böcker) * Bok Vad är den totala inköpssumman för alla böckerna? Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur summa = pris summa + pris 60
Strukturer - poster Vad är den totala inköpssumman för alla böckerna? class Bok { public string titel; public string författare; public float pris; } class Bibliotek { public static void Main() { Bok[] böcker = new Bok[2]; double summa = 0; böcker[0] = new Bok( ); böcker[0]. titel = "AAA"; böcker[0]. författare = "AAA"; böcker[0]. pris = 100; böcker[1] = new Bok( ); böcker[1]. titel = "BBB"; böcker[1]. författare = "BBB"; böcker[1]. pris = 200; for (int i = 0; i < böcker. Length; i++) { summa = summa + böcker[i]. pris; } System. Console. Write. Line(summa); } } Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 61
Strukturerad Programmering • Pseudokod (exempel ”studenterna”): skriv ut rubrik sätt räknare till 0 läs in 1: a studentens resultat REPETERA så länge studentens resultat är större än eller lika med 0 läs in studentens namn skriv ut namn och resultat OM totalpoäng är mindre än 60 lägg 1 till räknaren OM-SLUT läs in studentens resultat REPETERA-SLUT skriv ut antalet underkända studenter Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 62
Strukturerad Programmering • Pseudokod (exempel ”studenterna”): start A Skriv rubrik resultat >= 0 antal = 0 Läs 1. a resultat A falskt Skriv antal sant Läs namn start Skriv namn, poäng resultat < 60 sant antal = antal + 1 falskt Läs resultat Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 63
Strukturerad Programmering • Pseudokod (exempel ”studenterna”): Start Skriv rubrik antal = 0 Bearbeta alla Läs resultat Skriv antal Bearbeta * en student Läs namn Skriv namn, resultat Läs resultat? antal o = antal + 1 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur ---- o 64
Strukturerad Programmering class Student { public string namn; public int poäng; } class Studentpoäng { public static void Main ( ) { int antal; Student student = new Student(); Console. Write. Line(”Skriv ut antalet underkända studenter”); antal = 0; Console. Write("Ange studentens resultat"); student. poäng = int. Parse( Console. Read. Line() ); while (student. poäng >= 0) { Console. Write("Ange studentens namn"); student. namn = Console. Read. Line(); Console. Write. Line(student. namn + ” ” + student. poäng); if (student. poäng < 60) antal++; Console. Write("Ange studentens resultat"); student. poäng = int. Parse( Console. Read. Line() ); } Console. Write. Line("antalet undergända studenter är = " + antal); } } B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur Abelli, 65

































































