Fortsättningskurs i programmering F 3 Algoritmer i programutveckling II Hugo Quisbert 20130123 1 Flödesplaner med selektion 2 1
Exempel 1 selektion Om köpesumman är 1000 kr eller mer erhålles 10 % rabatt. Rita en flödesplan för ett program som matar in köpesumman och skriver ut vad kunden skall betala. Output? Summa att betala Input? Köpesumma Kontrollstrukturer? Sekvens och selektion. (Uppgiften innehåller ett villkor med alternativa vägar. Villkoret är köpesumman är 1000 kr eller mer. Det ena alternativet ger 10 % rabatt och det andra ger inte någon rabatt.) Operationer? Visa ledtext. Mata in köpesumma. Omköpesumman är 1000 kr eller mer Såär (ny) köpesumma = (inmatad) köpesumma * 0.9. (ger 10 % rabatt) Visa Summa att betala (ny) köpesumma. 3 Flödesdiagram exempel 1 Start Visa texten Skriv in köpesumman. Mata in köpesumma. köpesumma >= 1000? Ja Nej köpesumma = köpesumma * 0.9 Visa Summa att betala köpesumma Stopp 4 2
Relationsoperatorer < mindre än <= mindre än eller lika med >= större än eller lika med > större än likhetsoperatorer = =lika med!= inte lika med, skilt från Villkors operatorer 5 Exempel Om lösenord < 6 teckenså ge ett felmeddelande Om ålder <= 2 årså är biljetten gratis annars kostar den 100 kr Om svar == J så avsluta programmet annars mata in ett nytt tal Om ålder >= 18 årså skriv Myndig annars skriv Omyndig Om tal 1 > tal 2så skriv tal 1 är störst Om 2 + 7!= 9så skriv Fel! 6 3
Exempel 2 Övning i klassrumet. Jobba med en klasskompis. En säljare får bonus på följande villkor: Försäljning av varor mindre än 1 000 kr ger ingen bonus. Försäljning på 1000 kr eller mer men mindre än 5000 kr ger en bonus på 10 % av hela beloppet. Försäljning för minst 5000 kr ger en bonus på 700 kr plus 15 % på allt över 5000 kr. Rita flödesplanen för ett program som läser in försäljningssumman och skriver ut vilken bonus försäljaren får. 7 Lösningsförslag exempel 2 Start Visa texten Skriv in försäljningssumman. Mata in f-summa. Nej F-summa >= 1000? Ja Bonus = 0 Nej F-summa >= 5000? Ja Bonus = f-summa * 0.1 Bonus = 700 + 0.15 * (f-summa 5000) Visa Erhållen bonus bonus Stopp 8 4
Sammansatta villkorsuttryck I exemplen ova är det endast ett villkor i varje alternativbox. Men ibland behöver vi kombinera flera villkor, se exempel: Om köpesumman >= 1000och köpesumman < 5000så ge10 % rabatt Båda villkoren måste vara uppfyllda för att hela villkoret skall vara sant. Om uppgift 1 = okoch uppgift 2 = okoch uppgift 3 = okså är kursen godkänd I detta exempel så måste alla tre villkoren vara uppfyllda för att hela villkoret skall vara sant. Om dag = lördag eller dag = söndag så skriv ledig dag Om kl < 8.00 eller kl > 17.00så skriv fritid I dessa två exempel räcker det att ett av villkoren är uppfyllt för att hela villkoret skall vara sant. Om student = Jaoch förköp = Jaeller bonuskund = Jaså ge 30 % rabatt på biljettpriset 9 Liten vilkorsövning Om försäkringstagaren är svenskmedborgare eller matalsskriven i Sverige, utgår sjukersättning I dagens rätt ingår förrätt eller dessert 10 5
Liten vilkorsövning Om student = Jaoch förköp = Jaeller bonuskund = Jaså ge 30 % rabatt på biljettpriset Om (student = Jaoch förköp = Ja)eller bonuskund = Jaså ge 30 % rabatt på biljettpriset Om student = Jaoch (förköp = Jaeller bonuskund = Ja)så ge 30 % rabatt på biljettpriset 11 Flödesplaner med iteration 12 6
Klassövnning Exempel 3 Rita en flödesplan för ett program som låter användaren mata in 20 heltal. Programmet skall beräkna och visa summan och medelvärdet av de 20 talen. 13 Lösningsförslag Output? Summa och medelvärde Input? 20 heltal Kontrollstrukturer? Sekvens samt iteration Operationer? Repetera 20 ggr: Visa texten Mata in ett heltal Mata in ett heltal Addera heltalet till summan Slut upprepa Beräkna medelvärdet genom att dividera summan med 20 Visa summa och medelvärde 14 7
Lösningsförslag Start Falskt 20 ggr Visa texten Mata in ett heltal Mata in ett heltal Sant Addera heltalet till summan Beräkna medelvärdet genom att dividera summan med 20 Visa summa och medelvärde Stop 15 Fötestad vs eftertestad villkor START REP. SATSER Sant VILLKOR? Falskt STOPP 16 8
Exempel 4 Klassövning Vid köp av kopieringskort ska användaren mata in det antal kopior som kortet skall innehålla. Priset varierar beroende på hur många kopior man köper. Max 20 st kostar 1,50 kr/st, 21-50 st kostar 1 kr/st och fler än 50 kostar 85 öre. Rita flödesplanen för ett program som räknar ut det totala priset för minst ett kort. Användaren skall sedan kunna köpa ett nytt kort eller välja att avsluta. 17 Kostruktion av selektion i Java if(condition){ statements; }[else{ }] statements; switch(contition){ case x: statements; break;... deafult: statements; } 18 9
Kostruktion av iteration i Java Förtestad while(condition){ statements; } Efertestad do{ statements; }while(condition); 19 Kostruktion av iteration i Java for(expresion){ } statements; START antal =1 antal = antal + 1 Nej antal <= n? for(int i = 0; i < 10; i++)... Ja REP SATSER STOPP 20 10
Att inte glöma Precedens Operator Operation Relation 1 + - Unär plus Unär minus H till V 2 * / % 3 + - Multiplikation Division Modulo Addition Susbstraktion V till H H till V result = 12 + 8 / 2; 21 11