Övningsuppgifter till föreläsning 2 Variabler och uttryck

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

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Uttryck och villkor. Föreläsning 2

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Programmering i C, 7,5 hp

Programmeringsteknik med C och Matlab

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

TDIU01 - Programmering i C++, grundkurs

Extramaterial till Matematik Y

Att komma igång. Föreläsning 1

Föreläsning 6 pekare och pekare tillsammans med arrayer

Uttryck och villkor. Föreläsning 2

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

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

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Planering Programmering grundkurs HI1024 HT 2014

Blandat. Föreläsning 5

Att komma igång. Föreläsning 1

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Föreläsning 10. Pekare (Pointers)

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Code-Lite tutorial ( /RoJ)

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

TDDC77 Objektorienterad Programmering

Övningsuppgifter kapitel 8

Klassdeklaration. Metoddeklaration. Parameteröverföring

DD1314 Programmeringsteknik

Parameteröverföring. Exempel. Exempel. Metodkropp

Extramaterial till Matematik Y

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

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

*Pekarvärden *Pekarvariabler & *

Datorteknik 2 (AVR 2)

Data, typ, selektion, iteration

Några småsaker. switch break, continue, goto Kommentarer

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Extramaterial till Matematik Y

Loopar och datatyper. Föreläsning 3

Föreläsning 5: Introduktion av pekare

Lösningsförslag till övningsuppgifter till föreläsning 6 Funktioner

Funktioner och programstruktur. Föreläsning 5

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

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 (vadå sortering?)

Tentamen i Programmering grundkurs och Programmering C

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

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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Logik och kontrollstrukturer

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

TDIU01 - Programmering i C++, grundkurs

Loopar och datatyper. Föreläsning 3

Värmedistribution i plåt

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

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

Låt n vara ett heltal som är 2 eller större. Om a och b är två heltal så säger vi att. a b (mod n)

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

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

Variabler och konstanter

Arbetsblad 1:1. Tiondelar på tallinjen 0,1 0,5 0,9 0,2 0,8 0,3 0,8 1,1 1,5 1,6 2,1 2,4 1,1 1,4 2,6 3,2 3,8

Arbetsblad 1:1. Tiondelar på tallinjen 0,9 1,1 0,8. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

Arbetsblad 1:1. Tiondelar på tallinjen. 6 Sätt ut pilar som pekar på talen: A = 0,3 B = 0,8 C = 1,4

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

Uppgifter till praktiska tentan, del A. (7 / 27)

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor.

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Programmering för språkteknologer I, VT2012. Rum

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Objektorienterad programmering Föreläsning 2

Obligatorisk uppgift: Numerisk kalkylator

Laboration 1 Introduktion till Visual Basic 6.0

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Applets med komponenter

kl Tentaupplägg

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

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

Objektorienterad programmering i Java

Lösningsförslag till övningsuppgifter till föreläsning 6 Funktioner

Programmeringsuppgifter 1

Micro:bit. Börja skapa egna program

Instruktion för laboration 1

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

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret L0 - Grunder i C++

JavaScript del 3 If, Operatorer och Confirm

Objektorienterad Programmering (TDDC77)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

Transkript:

Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna med andra. Be om att få förklara vad koden gör för någon annan och lyssna när någon annan förklarar för dig. Diskutera om ni löser uppgifterna lite olika. Uppgifter Övningsuppgift 2.1 Vi har på föreläsningen gått igenom variabler. En variabel måste ha ett namn, ett värde och en typ. Du ska skapa en variabel som heter age, som har typen heltal (int), och som får värdet 17. Nedan finns ett förslag till program. Din första uppgift är att skriva in programmet, kompilera och köra det. Vad skrivs ut? int age; age = 17; printf("min ålder är %d \n", age); I programmet deklarerar vi en variabel som heter age, av typen heltal. Det betyder att nu vet datorn om att du vill kunna lagra heltal på ett ställe som kallas age. Därefter tilldelas age värdet 17. Det som står till höger om likamedtecknet (=) beräknas först, i detta fall är det enkelt, det blir 17. Därefter stoppas värdet in i variabeln med hjälp av =. Tänk på = som en pil som pekar åt vänster, först beräknas det till höger, sedan överförs resultatet till variabeln till vänster. Det kan endast stå variabler till vänster om ett likamedtecken. Det finns en hel del andra rader i ditt program. De behövs för att datorn skall förstå en del saker vi vill göra, och finns för det mesta alltid med när vi skriver c-program. Talar om för datorn vilka sedan tidigare färdiga funktioner vi tänker använda, så att den kan kolla att vi gör rätt

Sid 2 (5) Här startar programmet alltid, denna rad måste finnas med. Efter måsvinge - parentesen kommer koden vi skriver printf("min ålder är %d \n", age); printf sköter utskrift på skärmen. Den skriver ut allt som finns mellan, och byter ut saker som %d mot värdet hos en variabel Måste finnas med för att datorn skall vara nöjd (hänger ihop med main) Ligger alltid sist i main, säger att det är slut på kod här Prova nu att experimentera med att ändra värdet i tilldelningen och se att utskriften ändras. Övningsuppgift 2.2 Man kan ha mer komplicerade uttryck till höger om =, till exempel beräkningar. Ett exempel är om vi vill lägga till något till en variabel som redan har ett värde. Säg att vi vill öka på åldern med 2. Det ser ut så här: age = 17; age = age + 2; Det som finns till höger om = beräknas först, i detta fall blir det 17 + 2, dvs 19. Därefter lagras detta resultat i age och ersätter 17 som fanns där tidigare. Prova att skriva in den extra raden i ditt program och se om det fungerar som du tänkt. Övningsuppgift 2.3 Nu är det dags för lite mer komplicerade uttryck. Antag att du skall ha fest och räknar med att det kommer 10 personer. Du har köpt 10 korvar men kommer på att det inte räcker och att varje person nog borde få två korvar var, och att du dessutom behöver fem stycken i reserv ifall några är extra hungriga. Du letar efter miniräknaren för att räkna ut hur mycket korv det blir totalt men inser snabbt att du kan skriva ett program som gör jobbet åt dig. Modifiera programmet ovan så att variabeln heter nrsausages istället för age, och ändra beräkningen så att nrsausages på slutet är lika med dubbla antalet ursprungliga korvar plus 5. Tips: nrsausages * 2 fördubblar antalet. Övningsuppgift 2.4 Att hålla på att skriva in hur många korvar man har i sitt program hela tiden är ju inte särskilt praktiskt, det vore ju bättre om programmet kunde fråga användaren efter det önskade värdet. På så sätt behöver du inte kompilera om programmet för att kolla hur det blir om du startar med 25 stycken istället för 10. I C finns en funktion som heter scanf som gör just det. Ändra ditt program så att du byter ut nrsausages = 10; mot följande: scanf("%d", &nrsausages);

Sid 3 (5) scanf stoppar programmet och väntar på att du skall skriva in ett tal, i detta fall ett heltal. Därefter måste du trycka på enter för att scanf skall vara nöjd. Prova att kompilera och köra ditt program. Fungerar det som du tror? Du märker att du inte får någon ledtråd av programmet att du skall skriva in något, ordna det genom att skriva in en printf-sats som förklarar vad som skall hända, strax innan scanf-satsen. Övningsuppgift 2.5 Vi har hittills använt oss av heltal i våra program, men det är inte alltid så praktiskt. Om vi vill väga saker till exempel vore det bra om det gick att ange 3.1 kilo. Ändra ditt program så att variabeln nrsausages nu heter sausageweight och är av typen double. Programmet ser nu ut ungefär så här: double sausageweight; printf("hur mycket korv har du? "); scanf("%d", &sausageweight); sausageweight = sausageweight * 2 + 5; printf("mängd korv du behöver: %d\n", sausageweight); Vad händer när du kör programmet? Kan du lista ut vad som är fel? Fick du några varningar av kompilatorn? Övningsuppgift 2.6 Både scanf och printf måste få reda på vilken typ det är på variabeln de skall använda, och det anger du med en formatkod, som är %d för ett heltal. För att läsa in flyttal (decimaltal) av typen double så använder du istället %lf. För att läsa skriva ut flyttal (decimaltal) så använder du istället %f. Prova att ändra i ditt program och se om du kan knappa in 3.5 som svar på frågan. Övningsuppgift 2.7 Som du ser av utskriften så får du en hel rad med nollor efter decimalpunkten. Om du vill ha ett snyggare resultat så kan du ändra lite på formatkoden till printf. Ändra till %5.2f och prova sedan att köra programmet och mata in olika stora tal, t.ex. 0.1, 2, 300, 50000.1234567. Formatet 5.2f betyder att talet skall skrivas ut med 2 decimaler och att det skall ta upp 5 positioner, inklusive decimalpunkten, dvs 99.99 borde vara det största talet som kan skrivas ut. Stämmer det? Om inte, varför? Prova även att ändra till %20.2f.

Sid 4 (5) Övningsuppgift 2.8 Det finns en hel del operatorer i C, som till exempel *, /, +, -. Skriv ett program som läser in två decimaltal, number1 och number2, och sedan skriver ut resultatet av: number1 + number2 number1 - number2 number1 * number2 number1 / number2 För att läsa in två tal kan du använda två scanf-satser efter varandra. I C är det tillåtet att utföra beräkningar på de ställen där man kan ha en variabel, så prova att använda följande sats för att skriva ut resultatet av första uttrycket: printf("summan är : %5.2f\n", number1 + number2); Lägg till printf-satser för alla uttrycken ovan. Blir resultatet som du tror? Övningsuppgift 2.9 I föregående uppgift använde vi decimaltal för beräkningarna. Ändra nu ditt program så att number1 och number2 är heltal, och ändra också formatkoderna till %d. Blir resultatet av körningen som du tror? Om inte, varför? Övningsuppgift 2.10 I föregående uppgift blev division av heltal inte riktigt som vi trodde. Det beror på att resultatet omvandlas till ett heltal, så att t.ex. 7 / 2 blir 3, inte 3.5 som man tycker att det borde. För att få ett resultat med decimaler måste vi använda flyttal. Det finns en till operator som används i just detta fall, % ( modulo eller resten vid division ). 7 % 2 ger resultatet 1, dvs vad som blir över när man dividerat 7 med 2. Heltalskvoten 7/2 ger 3, och kvar blir en etta. Prova att lägga till denna rad i ditt program: printf("resten : %d\n", number1 % number2); Provkör nu. Notera att resten blir 1 om du dividerar ett udda tal med två, och 0 om du dividerar ett jämnt tal med två. Detta används ibland som ett enkelt sätt att avgöra om ett tal är udda eller jämnt. Nu bör ditt program se ut ungefär så här: int number1, number2; printf("skriv in tal 1: ");

Sid 5 (5) scanf("%d", &number1); printf("skriv in tal 2: "); scanf("%d", &number2); printf("summan : %d\n", number1 + number2); printf("skillnaden : %d\n", number1 - number2); printf("produkten : %d\n", number1 * number2); printf("kvoten : %d\n", number1 / number2); printf("resten : %d\n", number1 % number2); Övningsuppgift 2.11 Om man har mer komplicerade uttryck så kan man använda parenteser för att göra dem mer lättlästa. Datorn har en inbyggd ordning för hur operatorerna skall användas, t.ex. så beräknas gånger före plus, men man kan ändra på det om man vill. Prova att ändra ditt program så att det skriver ut resultatet av: number1 * number2 + 5 number1 + number2 * 5 Multiplikationen utförs först oavsett i vilken ordning operatorerna kommer. Prova nu: number1 * (number2 + 5) (number1 + number2) * 5 Övningsuppgift 2.12 Skriv ett program som beräknar hur många mil en bil gått under det senaste året och hur stor den genomsnittliga drivmedelsförbrukningen per mil har varit. Indata till programmet är dagens mätarställning, mätarställningen för ett år sedan, samt hur många liter drivmedel som förbrukats det senaste året.