10. Elementen i strukturerad programmering

Slides:



Advertisements
Liknande presentationer
PTS Bredbandskartläggning
Advertisements

CONSUMER ELECTRONICS SHOW Las Vegas: 7–11 januari 2012.
Mall för ett C#-program
Jörgen Ohlsson Softronic AB.
•Varför? •När? Resan •Vad ska vi göra? •Vart bor vi? •Nöjen? 13:45- 14:55 Stockholm- Köpenhamn 15:40- 18:10 Köpenhamn- Chicago 20:05- 23:05 Chicago-
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Relationsoperatorer Java/C# C/C++ Visual Basic FORTRAN PASCAL ORACLE
Svenska Akademins Ordbok (SAOB)
13 jan feb apr jul jul nov feb okt nov dec 2006 Antal ledamöter per medlemsland, Europavalet.
9. Gör ritningen innan Du bygger huset
AUTOMATIC DELIVERY REWARDS (ADR) (Nytt program – 1 september) LifePak ® (Exempel) – PSV kr med 5% rabatt= (59.19 PSV) Frakt=
Nya mötestider - nya resemöjligheter!
Presentation vid Brobyggardagen 2005
Klasser och objekt.
Funktioner och programorganisation
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Klassarv och inkapsling
Redovisning av drogvaneundersökning åk 7-9 Strömsunds kommun 2010
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Några standardalgoritmer
Filhantering Grundprincipen för filhantering Öppna filen
Metoder i java Det finns två typer av metoder i java
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Att programmera i språket Java
Uppgift 1 a) 15/17≈ 0,88 x 100= 88% Svar: 88% har smart phones i min klass b) 53% 27% 13% 7% Appl e Sony Ericsson Samsung Huawei & Andra.
Programmering i C# 2. Inledande detaljer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Sveriges utrikeshandel (Andelar i procent) ImportExport EU (25) EFTA NAFTA Central- och Östeuropa Asien - Japan - Kina Övriga 59,9.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Sveaplans Aula (merparten bokas endast av en institution) Nya lokalerna i Frescati.
4. Arv och dynamisk bindning
Polymorfism.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
:44 Mäklarpanelen maj För vilka är bostadsmarknaden mest fördelaktig just nu, d v s i vilken utsträckning är det.
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Gymnasiearbete 100p Introduktion.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Min praodag på dagiset Kotten. Förmiddan  ställde frågor  Byggde lego med Felicia  gick ut  Fanns 8 barn på stora  När vi kom ut åt frukt.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Databehandling Ett datorprogram består i huvudsak av
RALS 2007 – Lite siffror mars anställda 50,2 % kvinnor 49,8 % män.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Problemlösningsmetodik
TILLÄMPAD DATALOGI (TILDA) Övning 3
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
1 Flödeskontroll Sekvens Val Upprepning. 2 Logiska operatorer Relationsoperatorer > =
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ”Google is your friend”
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Länkade listor Binära träd
Generationsdubbel Inomhus januari 2010 Grupp A X X X 1 32 Jungqvist/Mannerfelt Westerberg Fabricius Jungqvist/Mannerfelt Westerberg Fabricius.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Programmering i C# Laborationer.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Presentationens avskrift:

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!

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.WriteLine("a = " + a); System.Console.WriteLine("b = " + b); System.Console.WriteLine("c = " + c); }

Sekvens JSP Flödesdiagram bearbetning bearbetning Program

Sekvens, exempel public class Hello { public static void Main () JSP Flödesdiagram Start Skriv ut ”Hello World!” Hello Skriv ut ”Hello World!” Stopp public class Hello { public static void Main () System.Console.WriteLine(“Hello World!"); }

Sekvens AreaTest Inmatning Beräkning Utskrift Skriv ledtext Läs radie area=PI * radie*radie Skriv area

Sekvens AreaTest Skriv ledtext Läs radie area = pi * radie * radie Slut

Sekvens public class AreaTest { public static void Main () System.Console.WriteLine("Ange radie: "); double radie = double.Parse( System.Console.ReadLine() ); double area = 3.1415 * radie * radie; System.Console.WriteLine("area = " + area); }

Selektion

Relationsoperatorer == Lika med != Inte lika med (Skilt från) > Större än >= Större än eller lika med < Mindre än <= Mindre än eller lika med

Booleska operatorer ! inte || eller && och

Booleska (logiska) operatorer ! (ICKE) && (OCH) || (ELLER) Om… a b a && b a || b !a s s s s f s f f s f f s f s s f f f f s

Selektion - if JSP Flödesdiagram villkor sant falskt bearbetning Program (villkor) o

Selektion - if, exempel JSP Flödesdiagram SelektionsTest Start sant Är antal=2? sant falskt Skriv ut "OK, det stämde!" Sätt antal = 2 Sätt antal = 2 antalkoll (antal = 2) o Skriv ut "OK, det stämde!" Stopp

Sekvens public class IfTest { public static void Main () int antal = 2; if (antal == 2) System.Console.WriteLine(“OK, det stämde!"); }

Selektion – if-else JSP Flödesdiagram villkor sant Program falskt (villkor = falskt) bearbetning bearbetning o o bearbetning bearbetning

Selektion – if-else, exempel JSP Flödesdiagram Start SelektionsTest Läs in antal Läs in antal antalkoll Är antal=2? sant Skriv "OK, det stämde!" (antal = 2) falskt o o Skriv "OK, det stämde!" Skriv ”Nej, det blev fel!” Skriv ”Nej, det blev fel!” Stopp

Sekvens public class IfTest { public static void Main () int antal = int.Parse( System.Console.ReadLine() ); if (antal == 2) System.Console.WriteLine(“OK, det stämde!"); } else System.Console.WriteLine(“Nej, det blev fel!");

Selektion – if-else, exempel JSP Flödesdiagram SelektionsTest3 Start Läs in antal Läs in antal antalkoll sant (antal = 1 eller 2) antal = 1 eller 2? o o Skriv "OK, det stämde!" Skriv ”Utanför intervallet!” Skriv "OK, det stämde!" falskt Skriv ”Utanför intervallet!” Stopp

Selektion – if-else public class IfTest { public static void Main () int antal = int.Parse( System.Console.ReadLine() ); if (antal == 1 || antal == 2) System.Console.WriteLine(“OK, det stämde!"); } else System.Console.WriteLine(“Utanför intervallet!");

Villkorsoperatorn Exempel: int a = 23; 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.WriteLine( b ); (Nu har vi nämnt villkorsoperatorn, men använd hellre if-satser…  )

if - else Villkorsoperatorn i C/C++/Java/C#: int a = 23; string b = a >= 10 ? “större” : “mindre” ; System.Console.WriteLine( 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.WriteLine( b );

Används för att jämföra strängar. CompareTo CompareTo Används för att jämföra strängar. Uttrycket s1.CompareTo(s2) ger följande resultat: <0 om s1 är mindre än s2 =0 om s1 är lika med s2 >0 om s1 är större än s2 Tecken för tecken jämförs

CompareTo ett exempel Vad skrivs ut?? string s1 = ”Bo”; string s2 = ”Hans”; if( (s1.CompareTo(s2)) > 0 ) { System.Console.Write(”Bo”); } else System.Console.Write(”Hans”); Vad skrivs ut??

Selektion – if-else/switch JSP Flödesdiagram villkor Program Alternativ 1 bearbetning Alternativ 2 bearbetning (alt 1) (alt 2) (alt 3) o o o bearbet-ning bearbet-ning bearbet-ning Alternativ 3 bearbetning

Selektion – if-else/switch JSP Flödesdiagram Start SwitchTest Läs in antal Läs in antal Antal-koll antal? 1 2 (antal = 1) (antal = 2) annat o o o Skriv ut ”Nu är det galet igen” Skriv ut ”OK, det stämde” Skriv ut ”Hmm, så ska det inte vara” Skriv ut ”Nu är det galet igen” Skriv ut ”OK, det stämde” Skriv ut ”Hmm, så ska det inte vara” Stopp

Sekvens – switch public class SwitchTest { public static void Main () int antal = int.Parse( System.Console.ReadLine() ); switch ( antal ) case 1 : System.Console.WriteLine(“Nu är det galet igen!"); break; case 2 : System.Console.WriteLine(“OK, det stämde!"); default : System.Console.WriteLine(“Hmm, så ska det inte vara!"); }

Sekvens – if-else public class IfTest { public static void Main () int antal = int.Parse( System.Console.ReadLine() ); if (antal == 1 ) System.Console.WriteLine(“Nu är det galet igen!"); } else if (antal == 2) System.Console.WriteLine(“OK, det stämde!"); else System.Console.WriteLine(“Hmm, så ska det inte vara!");

Iteration

Iteration JSP Flödesdiagram Stomme falskt villkor (villkor) bearbetning * sant bearbetning

JSP WhileLoop summa=0 antal =0 Läs in tal Talstomme medel = summa / antal Skriv ut medel Tal-bearbetning * (tal <> 999) summa = summa + tal antal = antal +1 Läs in tal Flödesdiagram Start tal = 999 Medel = summa / antal Skriv ut medel sant summa = 0 falskt antal = 0 Läs in tal summa = summa + tal Stopp antal = antal +1 Läs in tal

Iteration – while public class WhileLoop { public static void Main () double summa = 0; int antal = 0; int tal = int.Parse( System.Console.ReadLine() ); while ( tal != 999 ) summa = summa + tal; antal++; tal = int.Parse( System.Console.ReadLine() ); } double medel = summa / antal; System.Console.WriteLine(“Medel = “ + medel);

Ett återkommande mönster Standarditeration Iterationen i exemplet Initiering av uttrycket för villkoret - Inläsning av tal - iteration * iteration * (villkor) (tal är inte 999) ... Förändring av uttrycket för villkoret ... ... Inläsning av tal

Ett återkommande mönster Initiering av uttrycket för villkoret Inläsning av tal villkor tal = 999 sant sant falskt falskt … … Förändring av uttrycket för villkoret Inläsning av tal …

Iteration – do-while JSP Flödesdiagram Stomme bearbetning villkor sant * (villkor) falskt

Iteration – do-while, exempel JSP Flödesdiagram Iteration – do-while, exempel Start Sätt fortsätt till ’n’ DoLoop 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 fortsätt y n Stopp

Iteration - for JSP Flödesdiagram Stomme villkor (x ggr) bearbetning *

Iteration – vad for gör – egentligen… JSP Flödesdiagram - initiering initiering - (villkor) - * villkor bearbet-ning loopslut bearbet-ning loopslut

Iteration – men ibland kan vi uttrycka for enklare… JSP Flödesdiagram - (100 ggr) - * 100 ggr bearbet-ning bearbetning

Iteration - foreach JSP Flödesdiagram Stomme villkor * (för varje x i y) Bearbetning för varje x i y Bearbetning

Iteration – break, continue

Rekursiva metoder JSP Inparametrar: rot, av typen DirectoryInfo nivå, heltal Directories Skapa en sträng indent med längden nivå Skriv ut indent och DirectoryInfo v = rot.GetDirectories() Rekursiv Iteration (för varje nod i v) * Directories (nod, nivå)

Rekursiva metoder Flödesdiagram Inparametrar: rot av typen DirectoryInfo nivå, heltal Directories Skapa en sträng indent med längden nivå Skriv ut indent och DirectoryInfo v = rot.GetDirectories() villkor för varje nod i v Directories (nod, nivå + 1) Stopp

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!

Diagram för metoder JSP Flödesdiagram Max Inparametrar: a och b (heltal) Max Inparametrar: a och b (heltal) a > b returnera r r = a r = b (a > b) o o r = a r = b Returnera r

Diagram för metoder JSP Flödesdiagram Inparametrar: a och b (heltal) Start Max Inparametrar: a och b (heltal) Max a > b (a > b) o o Returnera a Returnera b Returnera a Returnera b

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 Skriv ut z Stopp

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.”

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.

Strukturerad Programmering Start Mata in inkomst inkomst [>= 0] [< 0] Beräkning Slut Skriv ut skatt

Strukturerad Programmering Beräkning Start inkomst [>= 0 and < 100] [>= 100 and < 209100] [>= 209100] skatt = 0 skatt = 200 skatt = 200 + 25% Slut

Strukturerad Programmering Start Mata in inkomst inkomst [< 0] [>= 0 and < 100] [>= 100 and < 209100] [>= 209100] Slut skatt = 0 skatt = 200 skatt = 200 + 25% Skriv ut skatt

Statlig inkomstskatt o o o o Start Tills inkomst < 0 * Mata in inkomst Kolla inkomst Skriv ut skatt negativ Avsluta [negativt tal] o ingen Skatt = 0 [< 100] o låg Skatt = 200 [>= 100och < 209100] o hög Skatt = 200 + 25% [> 209100] o

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

Strukturerad Programmering int skatt, inkomst; while (true) { Console.Write ("Ange den beskattningsbara inkomsten: "); inkomst = int.Parse( Console.ReadLine() ); 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.WriteLine("Den statliga skatten blir: " + skatt); }

Strukturer - poster class Bok { public string titel; public string författare; public float pris; } class BokTest { public static void Main ( ) Bok programmeringsbok = new Bok(); programmeringsbok.titel = ”C# från grunden”; System.Console.WriteLine(programmeringsbok.titel); }

Strukturer - poster * titel författare pris Även poster kan beskrivas med strukturdiagram class Bibliotek { public Bok[] böcker; } Bibliotek class Bok { public string titel; public string författare; public float pris; } * Bok Vad är den totala inköpssumman för alla böckerna? titel författare pris

Strukturer - poster Summering Vi börjar med att renodla vad vi behöver använda i algoritmen. summa = 0 Bibliotek Skriv ut summa Som du ser följer vi helt enkelt den struktur som redan finns! (Så länge det finns böcker) * Bok Vad är den totala inköpssumman för alla böckerna? summa = summa + pris pris

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.WriteLine(summa);

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

Strukturerad Programmering Pseudokod (exempel ”studenterna”): start A resultat >= 0 falskt Skriv antal Skriv rubrik sant Läs namn start antal = 0 Skriv namn, poäng Läs 1.a resultat resultat < 60 sant antal = antal + 1 A falskt Läs resultat

Strukturerad Programmering Pseudokod (exempel ”studenterna”): Start Skriv rubrik antal = 0 Läs resultat Bearbeta alla Skriv antal Bearbeta * en student Läs namn Skriv namn, resultat resultat? Läs resultat antal o = antal + 1 o ----

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.WriteLine(”Skriv ut antalet underkända studenter”); antal = 0; Console.Write("Ange studentens resultat"); student.poäng = int.Parse( Console.ReadLine() ); while (student.poäng >= 0) Console.Write("Ange studentens namn"); student.namn = Console.ReadLine(); Console.WriteLine(student.namn + ” ” + student.poäng); if (student.poäng < 60) antal++; Console.WriteLine("antalet undergända studenter är = " + antal);