Innehåll. Förord 1. Kapitel Så kommer du igång Övningsuppgifter Lösningsförslag Eftersnack...

Storlek: px
Starta visningen från sidan:

Download "Innehåll. Förord 1. Kapitel 1 3 1.1 Så kommer du igång... 3 1.2 Övningsuppgifter... 12 1.3 Lösningsförslag... 17 1.4 Eftersnack..."

Transkript

1 Innehåll Förord 1 Kapitel Så kommer du igång Övningsuppgifter Lösningsförslag Eftersnack

2 Innehåll ii

3 Förord Konsten att programmera är en färdighet, precis som konsten att läsa, skriva och räkna. För att förvärva en färdighet krävs övning övning ger färdighet Denna bok ger dig, genom sina drygt 150 lösta och väl kommenterade program, just möjligheten till övning. Innehållet, uppdelat på 14 kapitel eller föreläsningar, utgör en grundkurs i programmering. Tyngdpunkten ligger på problemlösning och programmering snarare än vid ett visst programspråk. Boken gör därför inte anspråk på att vara en fullständig genomgång av programspråket C. Du kommer snart att inse att du behöver lära dig använda datorsystemets hjälpfiler eller manualer som du enkelt finner på internet. För att översätta en lösning (en algoritm) du funnit till en som datorn kan exekvera, krävs ett programspråk. C är ett lämpligt första språk för den som tänker sig vidare till C++, Java eller C#. Så här använder du boken: Starta med att läsa igenom kapitlets teori och sätt dig in i tillhörande exempel. Gå sedan över till att lösa kapitlets övningsuppgifter. Det är bara om du tycker att ett problem är enkelt, som du har rätt att hoppa

4 Förord över det. Säkerheten (och glädjen) infinner sig när du löst cirka 100 av bokens uppgifter. Läs igenom texten, tills du säkert förstår vad uppgiften går ut på. Det finns en viss egennytta i att snabbt kunna sätta sig in i ett problem. Se varje uppgift som ett litet uppdrag och texten som en kravspecifikation. Skissa, gärna med penna och papper, hur du tänker dig lösningen. Gör klart för dig vad som är indata och vad som är utdata och hur beräkningarna ska utföras. Översätt din skiss till ett program i C, genom att skriva in det på datorn. Kompilera och testkör. Övertyga dig om att programmet verkligen är korrekt genom att testa det med olika indata. Om du stöter på svårigheter går du till lösningen och läser vad som står under rubriken diskussion. Ändra eventuellt din plan och gör nya försök. Om dessa tips inte ledde dig fram till ett fungerande program går du åter till lösningen och studerar nu koden till lösningsförslaget och läser kommentarerna. I den här situationen kommer du säkert att hamna då och då. Tänk då på att den vanligaste inlärningsmetoden är att just studera vad andra har gjort. Observera att det inte finns någon entydig lösning på en programmeringsuppgift. Det finns kanske lika många lösningar, som det finns programmerare. Detta betyder att ditt förslag till lösning kan skilja sig mycket från bokens, men likväl vara helt korrekt eller nära att fungera. Ge därför inte upp, om du intuitivt känner på dig att du är nära ett fungerande program. Förhoppningsvis kommer materialet i denna bok att ge dig grunderna i konsten att programmera. Även för den som inte tänker sig ett arbete inom IT och programmering, kommer konsten att lösa problem och att strukturera sina lösningar att vara en viktig förmåga i det framtida yrkeslivet. Till boken hör en hemsida där du återfinner alla bokens program och datafiler på elektronisk form. Dessutom finns här en del viktig information av teknisk karaktär. Håkan Strömberg Tyresö 2

5 Kapitel Så kommer du igång Innan du kastar dig in i programmeringens underbara värld och innan Du kan få ditt första C-program att fungera behöver du skaffa dig och hjälpligt lära dig hantera en utvecklingsmiljö för C-program. Bäst för en nybörjare är troligtvis en integrerad miljö. Helt enkelt ett enda program från vilket hela programmeringsarbetet utförs. Det finns många alternativ att välja bland, både kommersiella produkter och freeware. Att lösa ett problem i denna bok, innebär för dig att följa detta schema: Sätta dig in i problemet. Det är förstås nödvändigt att förstå vad uppdraget går ut på. Kanske blir du tvungen att läsa texten flera gånger. Finna en plan för hur programmet ska konstrueras. Det är alldeles nödvändigt att du, på ditt modersmål, för dig själv kan beskriva hur programmet ska fungera. Kan du inte det är chansen obefintlig att du kan uttrycka det i det konstgjorda språket C. Skriva in programmet. I editorn skapar du nu källkoden sats för sats, rad för rad. I början kommer du att behöva koncentrera dig på att få syntaxen korrekt. C innehåller en mängd speciella tecken

6 Kapitel 1 som alla måste finnas med. Så småningom, när du blir mer van, kommer dessa tecken mer eller mindre automatiskt att hamna på rätt plats. Kompilera. Den C-kompilator du använder översätter nu den kod du skrivit in, till instruktioner som datorn kan utföra (exekvera). Visar det sig att din kod inte är korrekt utifrån den syntax som gäller för C, kommer du nu att få meddelande om detta. Dessa fel måste rättas för att komma vidare genom en ny kompilering. Länka. I de flesta integrerade system sker länkning omärkligt, bakom kulisserna. Om den kan genomföras utan fel skapas en exekverbar fil slutprodukten. Att länka innebär just att bygga den exekverbara filen med hjälp av ditt program och byggstenar från standardbibliotek. Testköra. Att ett program klarat sig igenom den syntaktiska kontrollen är ingen garanti för att det kommer att fungera som det är tänkt. Det finns ofta många möjliger till logiska fel. Om man finner ett fel här tvingas man korrigera koden, vilket leder till en ny kompilering och en ny exekverbar fil, som också måste testas... Utvecklingsarbetets gång visas i form av ett flödesschema i figur 1.1. För att konkretisera det hela har vi valt att exemplifiera detta med hjälp av Code::Blocks, freeware, som kan laddas ned gratis. Det är knappast troligt, om du valt att arbeta i en annan miljö, att den exakt motsvarar beskrivningen nedan och du måste därför själv söka upp de kommandon och menyval som gäller i din miljö. För att skapa en fil i vilken du kan lagra källkoden till ditt program väljer du från menyn File - New - Emptyfile. I fönstret som öppnar sig kan du nu skriva in texten, källkoden, till ditt program. Börja med att spara filen med lämpligt namn och med filtillägget.c. Det är viktigt att du redan från början skapar ordning och reda bland dina program. Skapa en biblioteksstruktur där du snabbt hittar dina program. Ett program en mapp kan vara ett sätt. Men lämpligare är kanske här en mapp för varje kapitel. Under Settings - Editor kan Du ställa in färger, fonter med mera, som sedan kommer att sparas tills du ändrar dem. Experimentera gärna, tills du fått en layout du trivs med. 4

7 1.1 Så kommer du igång När programmet är inskrivet är det dags att kompilera. Observera att programmet automatiskt sparas på hårddisken innan kompileringen startar. Detta kommando utför du genom att klicka på symbolen med en grön pil och ett kugghjul. Datorn synar nu din inskrivna kod och om fel upptäcks kommer detta att rapporteras i ett speciellt fönster längst ned på skärmen, under fliken Build log. Anmärkningarna i detta fönster är av två slag: varningar och fel. Felen måste åtgärdas för att komma vidare, men varningarna kan man hoppa över, när man väl förstått vad de vill förmedla. Då du dubbelklickar på ett felmeddelande eller varning får du upplysning om var i källkoden felet återfinns. När du korrigerat dina fel är det dags att kompilera på nytt. Då kompilering sker utan fel skapas en EXE-fil (exekverbar fil) på hårddisken. Programmet kan nu köras genom att klicka på den gröna pilen. Efter att till exempel ha utvecklat programmet test finns följande filer på hårddisken. test.c. Den viktigaste filen, som innehåller din källkod den text du skrivit in. Filtillägget för dina program bör vara.c. Tillägget.cpp skulle kunna vara ett alternativ, men det betyder då att det handlar om ett C++ program. Det är ju C vi ska studera här och inte C++. test.exe Slutprodukten, själva programmet som kan köras även utanför utvecklingsmiljön. Denna fil kan du ta bort eftersom den enkelt kan återskapas så länge test.c finns kvar. Ett (mycket) enkelt program Detta enkla program får bli det första C-program du möter: Exempel 1. Ett (mycket) enkelt program 1 #include <stdio.h> 2 int main(void){ 3 printf("jag älskar programmering - C Puss Puss"); 4 } 5

8 Kapitel 1 Figur 1.1: Arbetsgången vid enkel programutveckling Så här kan det förklaras: 1 Den första raden, include, knyter ett så kallat funktionsbibliotek till programmet. Vi behöver det för att klara av utskriften (standard in- och utmatning). Vi kommer att lära oss mer om detta och andra bibliotek senare och accepterar nu denna rad, rakt upp och ned. 2 Raden int main(void) finns i alla C-program i den här boken och inleder huvudfunktionen. Raden avslutas med en vänsterklammer ({), som har sin avslutning på sista raden (}). När du jämför bokens program med andra program, i andra böcker, kanske du upptäcker att det finns alternativ till texten på denna rad: int main() eller bara main(). 3 Mellan dessa klamrar finns själva programmet. Programmet här består av en sats, ett anrop till funktionen printf. Om vi glömt den första raden i detta program, include-raden, hade systemet inte känt igen printf, som förstås är till för att skriva ut något på skärmen. Detta något är denna gång en text Jag älskar programmering - C puss puss. 6

9 1.1 Så kommer du igång Observera att alla tecken, som finns i detta program, är nödvändiga för en korrekt syntax, semikolon (;), citationstecken (") och parenteser. Dessa små till synes obetydliga tecken kommer Du att få slåss med under hela kursen! För övrigt kan sägas att detta program är fullständigt meningslöst. Ett program, som levererar samma resultat varje gång det körs, har förstås en kort livslängd. För att ett program ska vara intressant måste det på något sätt kunna läsa in data, som efter bearbetning leder till nya, tidigare okända, resultat. Ett program till Detta program är också väl enkelt, men ändå betydligt mer komplicerat än det förra. Programmet tar emot två heltal, summerar dem och skriver ut summan. Fantastiskt! Exempel 2. Ett program till 1 #include <stdio.h> 2 #include <conio.h> 3 int main(void){ 4 int a,b,c; 5 printf("skriv in ett tal: "); 6 scanf("%d",&a); 7 printf("ett till: "); 8 scanf("%d",&b); 9 c=a+b; 10 printf("summan blir = %d",c); 11 getch(); 12 } Programlistningarna i denna bok innehåller en kolumn med tal längst till vänster. Denna radnumrering ingår inte i koden utan används här för att i efterföljande text kunna referera till önskad rad. 7

10 Kapitel 1 Förklaring: 1-3 Programmet inleds precis som det tidigare med include och int main(void), och så ska alla program inledas i övningarna till detta kapitel, som du senare ska göra. Dessutom finns i rad 2 texten #include <conio.h>, som inkluderar biblioteket conio.h. Förklaring kommer längre ner. 4 int a,b,c; är en så kallad deklaration. Man talar här om att man ska använda tre variabler, som alla ska vara av heltalstyp, int,. Det betyder att de kan anta värden (... 2, 1,0,1,2...). Det här med variabler är viktigt. Program utan variabler är meningslösa. En metafor för begreppet variabel: En variabel kan liknas vid en låda. På lådan står ett namn, variabelns namn (här a, b eller c). I lådan förvaras variabelns värde. Lådan är av en viss typ, i detta fall heltalstyp. Lådan har en adress. Med hjälp av namnet kan man ta reda på var i minnet lådan finns, även om det oftast är ointressant. Frågan vilket värde har b? är liksom kommandot ge variabeln a värdet 7 meningsfulla. 5 printf skickar ut texten Skriv in ett tal: till skärmen. 6 Med scanf får man datorn att läsa in data från tangentbordet. %d betyder att datorn förväntar sig ett heltal (int) och det är ju just det vi tänkt oss mata in. Talet lagras nu i variabeln a. Varför det ska stå ett &-tecken framför återkommer vi till många gånger. Troligtvis kommer du i början ofta att glömma detta &-tecken, vilket leder till en bug. 7-8 De två följande satserna är i stort en upprepning av de två tidigare, men nu är det variabeln b, som får ett värde. 9 I nästa sats sker den stora beräkningen, c=a+b. Denna sats kallas tilldelningssats. För att den ska vara möjlig, måste alla variabler till höger om likhetstecknet tidigare fått ett värde (och de har de ju här). Resultatet då satsen utförs blir att variabeln c tilldelas det värde som erhålles då a s och b s värden adderas. På det sättet får alltså nu också c ett värde. Vilket värde c får bestäms förstås av de värden a och b fått vid inmatningen. Ingenting programmeraren vet något om. Det är operatören, den som kör programmet, som bestämmer detta. 8

11 1.1 Så kommer du igång 10 Programmets näst sista sats meddelar resultatet. Uttrycket Summan blir =%d ska tolkas som att texten, fram till %-tecknet, skrivs ut. %d meddelar att här ska ett heltalsvärde skrivas ut vilket anges sist i printf-satsen. Det är alltså värdet för c som ska skrivas ut. 11 Följande kommentar beror på vilken utvecklingsmiljö du valt. När du exekverar programmet inifrån en integrerad miljö öppnas ett svart fönster, konsol, där din dialog med programmet kommer att visas. Om du provade det första programmet ovan, så upptäckte du att den konsolen, bara blinkade till och att du inte hann läsa texten. När programmet har exekverat klart stängs konsolfönstret, vilket är logiskt. Detta kan botas genom att lägga till satsen getch() sist i programmet. Vilket betyder att programmet väntar tills en tangent tryckts ned innan exekveringen avslutas och konsolfönstret stängs. För att kunna använda getch() krävs att conio.h är inkluderad. Observera att detta kladd inte är nödvändigt om du kör ditt program från ett redan öppet konsolfönster. conio.h och getch() hör heller inte till ANSI C och kanske har du valt en utvecklingsmiljö där denna teknik inte är möjlig. Fortsättningsvis utelämnar vi detta i våra programlistningar. Att programmera I denna programmeringskurs står du inför två stora uppgifter. Delas att lära dig ett programmeringsspråk (C) och dels att lära dig programmera. Att lära sig C innebär att lära sig syntax (satslära) och semantik (betydelselära) för ett språk, som någon annan har skapat och som gjorts möjlig för datorer att förstå. Att lära sig programmera innebär att lösa problem. Att läsa, tolka och förstå en text, som innehåller ett uppdrag, som någon vill ha utfört. Är uppdraget enkelt eller programmeraren duktig kanske lösningen kan kodas direkt vid datorn, men troligare är att programmeraren måste upprätta en plan innan arbete vid datorn kommer i fråga. Verkliga uppdrag är oftast så stora, att flera personer ingår i arbetsgruppen. Kravet på en plan blir då ännu större. Att lära sig programmera är egentligen oavhängigt programspråk, men vill man genomföra alla stegen, från idé till färdig produkt, måste man ha ett språk att uttrycka sig i. I vårt fall C. En parallell: Ett språk är 9

12 Kapitel 1 nödvändigt för en författare, men det är inte tillräckligt för att bli en bra författare. Detta gäller också för en programmerare. Därför sätter vi i denna kurs stor vikt vid problemlösandet det som kan göra dig till en bra programmerare. Programspråket C kan delas in i ett antal olika delar. Varje del har ett betydande djup det finns mycket att lära inom varje del. Men i stället för att gå på djupet inom en del i taget, väljer vi här att portionera ut lite i taget från flera områden på en gång. Vi tar en skiva av C-osten Ett tredje exempel Även om problemet är enkelt och du genast kan skriva ned koden, ska vi här genomföra framtagandet av en plan för hur programmet ska fungera. Uppgift: Skriv ett program som tar emot data om resistansen hos två motstånd R 1 och R 2 och beräknar ersättningsresistansen R 3 för R 1 och R 2 parallellkopplade. Indata: Resistansen hos R 1 och R 2. Utdata: Ersättningsresistansen R 3 Lösning: Vi startar med att läsa in värden på R 1 och R 2. Ersättningsresistansen R 3 bestäms sedan med hjälp av formeln 1 R 3 = 1 R R 2 Om vi uttrycker R 3 explicit får vi formeln R 3 = R 1 R 2 R 1 +R 2 Programmet avslutas med utskrift av R 3. 10

13 1.1 Så kommer du igång Körningsexempel: Resistans hos R1 (ohm) : 100 Resistans hos R2 (ohm) : 50 R3 beräknas till ohm Exempel 3. Ett tredje exempel 1 #include <stdio.h> 2 int main(void){ 3 float r1,r2,r3; 4 printf("resistans hos R1 (ohm) : "); 5 scanf("%f",&r1); 6 printf("resistans hos R2 (ohm) : "); 7 scanf("%f",&r2); 8 r3=r1 r2/(r1+r2); 9 printf("r3 beräknas till %6.3f ohm\n",r3); 10 } Förklaringar till programmet 1-2 Inledningen har vi börjat vänja oss vid nu. Så kommer den att se ut ett tag framåt i kursen och kanske kan det vara arbetsbesparande att skriva en skelett -fil som innehåller just dessa inledande rader tillsammans med den avslutande. För att slippa skriva samma sak gång på gång... 3 De variabler vi tidigare använt har varit av heltalstyp (int). Här använder vi tre variabler som deklarerats float, flyttal. Detta innebär förstås att de är tillåtna att tilldelas reella värden utöver heltal, som till exempel 2.34 och Observera dock att man i denna värld använder decimalpunkt till skillnad från det i vardagsbruk i Sverige vanligare decimalkommat. 5,7 I stället för koden %d i tidigare scanf-satser, där vi läste in heltal, använder vi här %f, som anger att det är fråga om flyttal. 8 Programmets nyckelsats, där resultatet beräknas. Observera att man måste ha parenteser i nämnaren. Vi återkommer till aritmetiska uttryck längre fram, men du är säkert van vid detta skrivsätt från räknedosan. 9 När vi nu ska skriva ut resultatet, skriver vi först en text i vilken vi med %-tecken markerar platsen för det numeriska värdet. Hos 11

14 Kapitel 1 %6.3f står f för att det handlar om ett flyttal, 6 för att hela talet ska ta upp sex positioner på raden och 3 för att vi önskar tre decimaler. r3, nästan sist på raden, anger att det är denna variabels värde som ska skrivas ut på %-tecknets plats i texten. 1.2 Övningsuppgifter Övning och åter övning, är det säkraste sättet att nå framgång i detta ämne. Vi sätter därför igång direkt. Även om du inte kommer att lyckas lösa dessa problem, kan det vara idé att skriva in dem direkt från facit. Du behöver praktiska övningar på att skriva in kod, kompilera, ändra, spara och köra program. Var inte rädd för att experimentera: Vad händer om jag skriver så här istället? Uppgifterna här leder i allmänhet till program av den raka typen, det vill säga varje sats i programmet utförs precis en gång. Normalt inleds programmen med ett antal printf- och scanf-satser, där indata ges, följt av en eller flera tilldelningssatser. Programmet avslutas så med printfsatser som skriver ut resultatet. För att klara dessa uppgifter ska du... känna till hur ett enkelt C-program ser ut kunna starta den utvecklingsmiljö du valt. Till exempel DevCpp. kunna skriva in, kompilera, rätta och spara ett program kunna köra ett program veta hur man deklarerar variabler av typerna heltal och decimaltal med hjälp av scanf kunna läsa in heltal och decimaltal från tangentbordet kunna skapa en tilldelningssats där uttrycket till höger om liketstecknet använder de fyra räknesätten kunna skriva ut resultatet på bildskärmen med hjälp av printf kunna städa upp i biblioteket som använts, så att endast källkodsfilerna (med filtillägget C) återstår. Det är ju dessa filer som du själv skapat och som därför är viktigast. 12

15 1.2 Övningsuppgifter Uppgift 1-1. Ohms lag Skriv ett litet enkelt program som frågar efter ström (givet i ampere, A) och spänning (givet i volt, V) och som med hjälp av dessa värden och Ohm s lag bestämmer resistansen (i ohm). En körning av programmet ska ge följande dialog: Ström (A)...: 10 Spänning (V)...: 200 Ger resistansen 20 Ohm Här antar vi att ström och spänning ska kunna anges som decimaltal, det vill säga man ska kunna ange strömmen till 10.5 (observera att man använder decimalpunkt). För att kunna lagra ett sådant tal i en variabel måste variabeln vara av typen float. I scanf-satsen talar vi om att det är ett flyttal vi förväntar oss genom %f Du kommer väl ihåg Ohms lag? Tecknet för division (divisionsoperatorn) är /. När man ska skriva ut resultat av en division kanske man bara vill ha två decimaler. Det ordnar man genom att skriva %.2f i formatet (uttrycket mellan citationstecknen) i printf-satsen. Uppgift 1-2. Bensintanken Man känner till mätarställningen hos en bil (given i mil) före resan och man läser av mätaren efter. Eftersom bensintanken var full vid resans början kan man med hjälp av den volym bensin, som gick att fylla på efter resan, bestämma bensinförbrukningen i liter/mil. Skriv ett program som utför beräkningarna och i övrigt fungerar som körningsexemplet nedan. Mätarställning före resan (mil): Mätarställning efter resan (mil): Tanken rymmer efter resan (liter): 20 Bensinförbrukningen liter/mil 13

16 Kapitel 1 Figur 1.2: Uppgift 1-3. Balken Figur 1.2 ovan är symmetrisk (i y-led). Skriv ett program som tar emot uppgifter om de fyra längderna och härur beräknar figurens area. Ett körningsexempel: A: 20 B: 5 C: 18 D: 10 Figurens area är 260 Uppgift 1-4. Ett antal sekunder Skriv ett program, som räknar om ett givet antal sekunder i timmar, minuter och sekunder. Dialogen ska se ut som nedan Antal sekunder: sekunder = 2 tim 2 min och 36 s Alla variabler i programmet ska vara av heltalstyp. När man i C utför en division likt 125/60 blir resultatet exakt 2, vilket betyder att då två heltal divideras blir resultatet alltid ett heltal decimalerna kastas. Av detta följer att 99/100 blir lika med 0. Denna egenskap passar oss alldeles utmärkt här. 14

17 1.2 Övningsuppgifter Uppgift 1-5. Herons formel Med hjälp av Herons formel kan man bestämma arean (T) till en triangel då man känner längden hos de tre sidorna, a, b, c. Herons formel ser ut så här: T = s(s a)(s b)(s c)) där s = a+b+c 2 Ge programmet följande dialog: Sidan a: 12 Sidan b: 15 Sidan c: 17 Triangelns area är För att beräkna kvadratroten ur ett tal n använder man funktionen sqrt() och skriver sqrt(n). För att systemet ska finna denna funktion måste vi inkludera matematikbiblioteket med #include <math.h>. Vad händer när du kör ditt program för sidlängderna 9, 5 och 3? Varför blir resultatet som det blir och hur skulle programmet kunna garderas mot detta? Uppgift 1-6. Cylindern Skriv ett program som beräknar massan hos en cylinder då dess höjd (h), radie (r) och densitet, (ρ) är givet. Följande formler är till glädje. Först för att beräkna cylinderns volym V c och sedan för att beräkna densiteten ρ: V c = π r 2 h ρ = m v 15

18 Kapitel 1 Dialogen bör se ut som nedan: Cylinderns höjd (m)...: 0.5 Cylinderns radie (m)...: 0.3 Cylinderns densitet (kg/dm3).: 3 Cylinderns massa är kg Uppgift 1-7. Bromssträckan Med hjälp av formeln s = v 4 + v2 125 kan man bestämma, approximativt, bromssträckan s (i meter) hos en bil, som färdas med farten v (km/tim) på torrt underlag. a Skriv ett program som frågar efter hastigheten och bestämmer bromssträckan. b Skriv ett program som frågar efter bromssträckan och bestämmer hastigheten. c Utveckla programmet i a, så att det även tar hänsyn till förarens reaktionstid. Det tar alltid lite tid för föraren att reagera och flytta foten till bromspedalen. Dialogen för c bör se ut som nedan: Hastighet (km/tim)..: 100 Reaktionstid (s)...: 0.2 Stoppsträckan blir m 16

19 1.3 Lösningsförslag 1.3 Lösningsförslag Uppgift 1-1. Ohms lag 1 #include <stdio.h> 2 int main(void){ 3 float i,u,r; 4 printf("ström (A) "); 5 scanf("%f",&i); 6 printf("spänning (V) "); 7 scanf("%f",&u); 8 r=u/i; 9 printf("ger resistansen %6.2f Ohm\n",r); 10 } Kommentarer: H Programmet har stora likheter med 1.1 Ett tredje exempel. 8 Formeln som ska användas är förstås R = U I 9 Resultatet skrivs sedan ut med 2 decimaler. Uppgift 1-2. Bensintanken Diskussion: Tre uppgifter bildar indata, mätarställningen före resan, fore, mätarställningen efter resan, efter och hur mycket bensin tanken rymmer efter resan, bensin. Utdata, förbrukningen per mil, permil, beräknas med formeln permil = bensin efter fore 17

20 Kapitel 1 1 #include <stdio.h> 2 int main(void){ 3 float fore,efter,bensin,permil; 4 printf("mätarställning före resan (mil) :"); 5 scanf("%f",&fore); 6 printf("mätarställning efter resan (mil) :"); 7 scanf("%f",&efter); 8 printf("tanken rymmer efter resan (liter):"); 9 scanf("%f",&bensin); 10 permil=bensin/(efter fore); 11 printf("bensinförbrukning %.3f l/mil",permil); 12 } Uppgift 1-3. Balken Diskussion: Formeln för arean med de beteckningar som användes i figuren Area = ac 2bd 1 #include <stdio.h> 2 int main(void){ 3 int a,b,c,d,area; 4 printf("a:"); 5 scanf("%d",&a); 6 printf("b:"); 7 scanf("%d",&b); 8 printf("c:"); 9 scanf("%d",&c); 10 printf("d:"); 11 scanf("%d",&d); 12 area=a c 2 b d; 13 printf("figurens area är %d",area); 14 } 18

21 1.3 Lösningsförslag Uppgift 1-4. Ett antal sekunder 1 #include <stdio.h> 2 int main(void){ 3 int sekunder,t,m,s; 4 printf("antal sekunder: "); 5 scanf("%d",&sekunder); 6 t=sekunder/3600; 7 m=(sekunder 3600 t)/60; 8 s=sekunder 3600 t 60 m; 9 printf("%d sekunder = %d tim, %d min och %d s\n", 10 sekunder,t,m,s); 11 } Kommentarer: H Den här uppgiften ställer lite krav på problemlösaren. Det är inte alldeles givet hur man får fram antalet minuter och sekunder. 6 Genom tipset i texten förstår vi att t kommer att innehålla antalet hela timmar efter att sekunder dividerats med Nu vet vi hur många sekunder som gått åt för timmarna och kan räkna fram hur många som återstår. Detta antal dividerar vi sedan med 60 för att få fram antalet minuter m. 8 Återstår att ta reda på hur många sekunder, s, som blir över En lång sats kan i C brytas ned till två eller flera rader. Detta görs oftare i boken än du kommer att behöva göra i praktiken. 19

22 Kapitel 1 Uppgift 1-5. Herons formel 1 #include <stdio.h> 2 #include <math.h> 3 int main(void){ 4 float a,b,c,s,d; 5 printf("sidan a: "); scanf("%f",&a); 6 printf("sidan b: "); scanf("%f",&b); 7 printf("sidan c: "); scanf("%f",&c); 8 s=(a+b+c)/2; 9 d=s (s a) (s b) (s c); 10 if (d<=0) 11 printf("ingen triangel\n"); 12 else 13 printf("triangelns area är %f\n",sqrt(d)); 14 } Kommentarer: 5-7 Hittills har vi i våra program skrivit en sats per rad. Här har vi nu två satser per rad och det fungerar lika bra. Det kan kännas logiskt att ha dessa två satser tillsammans. Vi kommer att diskutera formatering av program längre fram. 8-9 Vi startar med att bestämma värdet av s. Detta värde använder vi sedan på inte mindre än fyra ställen i rad 9. Du glömde väl inte parenteserna i rad 8? För att klara av den lilla extrafrågan måste vi skjuta in en if-sats, just nu överkurs. Om diskriminanten, d < 0, kan ingen triangel bildas. Om en sida är 9, så kan de andra två, 3 och 5, inte nå fram till varandra. 20

23 1.3 Lösningsförslag Uppgift 1-6. Cylindern 1 #include <stdio.h> 2 int main(void){ 3 float h,r,d,v,m; 4 printf("cylinderns höjd (m) : "); 5 scanf("%f",&h); 6 printf("cylinderns radie (m) : "); 7 scanf("%f",&r); 8 printf("cylinderns densitet (kg/dm3).. : "); 9 scanf("%f",&d); 10 v= r r h; 11 m=d v 1000; 12 printf("cylinderns massa är %.2f kg\n",m); 13 } Kommentarer: 10 Först beräknar vi volymen v. Till det behöver vi π, där vi här nöjer oss med att skriva in konstanten med så många decimaler vi minns. r 2 skriver vi som r*r. Det finns ingen direkt operator för beräkna potenser i C. Det gör det däremot i Basic och Fortran, två andra, vanliga programspråk. 11 Återstår två smärre svårigheter. Först måste vi lösa ut m ur den givna formeln för densiteten och sedan multiplicera med 1000 för att få svaret i kg. 12 När vi inte anger antalet önskade decimaler i printf-satsen får vi leva med ett överdrivet stort antal. 21

24 Kapitel 1 Uppgift 1-7a. Bromssträckan 1 #include <stdio.h> 2 int main(void){ 3 float s,v; 4 printf("bilens hastighet (km/tim) "); 5 scanf("%f",&v); 6 s=v/4+v v/125; 7 printf("bromssträckan blir %.2f meter\n",s); 8 } Kommentarer: H Kommentarer överflödiga, om du inte råkar deklarera v som int förstås. Är du nyfiken på vad som händer, så ändrar du programmet och testkör. Kan du förklara det felaktiga resultatet? Uppgift 1-7b. Bromssträckan 1 #include <stdio.h> 2 #include <math.h> 3 int main(void){ 4 float s,v,k; 5 printf("bromssträckan (m) "); 6 scanf("%f",&s); 7 k=125.0/8.0; 8 v=sqrt(k k+125 s) k; 9 printf("bilens hastighet är %.2f km/tim\n",v); 10 } Kommentarer: H För att kunna beräkna v, så måste vi ha v explicit uttryckt och för att nå dit måste vi lösa andragradsekvationen med avseende på v s = v 4 + v

25 1.3 Lösningsförslag En andragradsekvation har som bekant två rötter v 1,2 = 5( 25± s ) Om dessa rötter kommer fram genom handräkning eller med hjälp av Mathematica bryr sig inte uppdragsgivaren om. Vi väljer förstås den positiva roten. Då roten är funnen är programmet lätt att skriva. Detta är därför ett exempel på en uppgift där det största arbetet ligger utanför själva programskrivandet. 8 Uppgift 1-7c. Bromssträckan 1 #include <stdio.h> 2 int main(void){ 3 float s,v,extra,t; 4 printf("bilens hastighet (km/tim) "); 5 scanf("%f",&v); 6 printf("reaktionstid (s) "); 7 scanf("%f",&t); 8 extra=1000.0/ v t; 9 s=v/4+v v/125; 10 printf("stoppsträckan = %.2f meter\n",s+extra); 11 } Kommentarer: 4-7 Detta program behöver två indata. Reaktionstiden ges i sekunder. 8 Här beräknas hur långt bilen hinner förflytta sig under reaktionstiden. 9 Bromssträckan beräknas som i 1 7a 10 Den totala stoppsträckan skrivs ut som summan av extra och s. 23

26 Kapitel Eftersnack En del kapitel avslutas med rubriken Eftersnack, där vi kommer att ställa en del kontrollfrågor, ta upp en del mer eller mindre viktig teori och besvara vanliga studentfrågor: Fråga 1. Hur gammalt är programspråket C? Svar 1. Cirka 35 år. Dennis Ritchie började utvecklingen omkring Bland annat med idéer från programspråket B, utvecklat av Ken Thompson kom Brian Kernighan och Dennis Ritchie ut med boken The C Programming Language, som man ofta refererar till som K&R. Denna bok kom att bilda en första sorts standard, idag kallad Traditionell C. Det riktiga standardiseringsarbetet kom igång i mitten på 80-talet och 1989 lades ANSI C (C89) fram. Denna standard har sedan uppdateras 1995 (C95) och 1999 (C99). I början av 90-talet började C få konkurrens av sin storebror C++. C är nästan, men inte helt en delmängd av C++. Vilken dialekt av C du använder spelar mindre roll i denna kurs. Fråga 2. Är C ett lämpligt nybörjarspråk? Svar 2. På den tiden då Basic och Pascal var vanliga nybörjarspråk nådde programmeringen ut till en bredare publik. Fler lärde sig lite om programmering i början av 80-talet än idag, trots att det då inte var lika gott om datorer. Eftersom C++ och Java är naturliga efterföljare till C, kan man säga att C är ett lämpligt språk att starta med. Fråga 3. Varför ingår det kurser i programmering även i utbildningar, där det inte är tänkt att man efter examen ska arbeta med datorer och programutveckling? Svar 3. Det är inget godtagbart svar på frågan, men denna typ av kurser har funnits i 40 år, insprängda i de flesta tekniska och naturvetenskapliga utbildningar. Den färdighet som en väl genomförd programmeringskurs erbjuder är inte fel att ha, vad man än kommer att syssla med i sitt yrkesliv. I dessa kurser får du möjlighet att strukturera och lösa problem där det finns många olika vägar fram till målet. Du utvecklar din kreativitet och fantasi, 24

27 1.4 Eftersnack men måste samtidigt lära dig bygga stabila och korrekta program som exakt följer de regler som datormiljön ställer upp. Fråga 4. Jag har sett i andra böcker olika inledningar av main. Till exempel void main(void) och enbart main(). Kan denna rad se ut lite hur som helst? Svar 4. I tidigare versioner av C har det varit tillåtet att utelämna int här, men sedan Standard C (1999) måste main förgås av int. Dina två förslag leder dock, för de flesta kompilatorer, endast till en varning, som man inte behöver bry sig om. Vi återkommer senare till vilken funktion int har här, i samband med funktioner. 25

28 Kapitel 1 26

29 Sakregister adress, 8 conio.h, 8, 9 deklaration, 8 filer, 5 funktionsbibliotek, 6 getch, 9 heltalstyp, 8 int, 8 kompilering, 5 källkod, 4 main, 6 printf, 8 raka program, 12 scanf, 8 tilldelningssats, 8 variabel, 8

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

Övningsuppgifter till föreläsning 2 Variabler och uttryck 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

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

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

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

Läs mer

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

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 2 2.1 Variabler Vi studerar exempel 1 från boken: int main(void) int a,b,c=7; float antal,pris=3.70,laengd; a=34; b=32767; antal=-123.978; pris=89.00; laengd=56; c=-38; laengd=laengd+1; Sex

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta

Läs mer

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

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

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

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2 Uttryck och villkor Föreläsning 2 Dagens kluring Finn fem fel! #include int main(void) printf("resistans hos R1 (ohm) : ") scanf("%d",r1); printf("resistans hos R2 (ohm) : "); scanf("%d",r2);

Läs mer

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

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x Mathematica Första kapitlet kommer att handla om Mathematica det matematiska verktyg, som vi ska lära oss hantera under denna kurs. Indata När du arbetar med Mathematica ger du indata i form av kommandon

Läs mer

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så

Läs mer

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

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

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

Att komma igång. Föreläsning 1 Att komma igång Föreläsning 1 Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf

Läs mer

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.

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. Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra

Läs mer

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

Att komma igång. Föreläsning 1 Att komma igång Föreläsning 1 Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

En kort text om programmering i C.

En kort text om programmering i C. En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,

Läs mer

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

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

Läs mer

HI1024 Programmering, grundkurs TEN2 2014-03-13

HI1024 Programmering, grundkurs TEN2 2014-03-13 HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2 Uttryck och villkor Föreläsning 2 Dagens kluring Finn fem fel! #include int main(void) printf("resistans hos R1 (ohm) : ") scanf("%d",r1); printf("resistans hos R2 (ohm) : "); scanf("%d",r2);

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Code-Lite tutorial ( /RoJ)

Code-Lite tutorial ( /RoJ) Code-Lite tutorial (2013-03-20/RoJ) Följ dessa anvisningar för att skapa projekt, kompilera/länka och testa dina laborationsuppgifter 3,4. Project Projekt, innehåller bland annat ett antal källtextfiler

Läs mer

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

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg Programmering i C En tuff kurs på halvfart för nybörjare i programmering Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg 1 Idag Kursupplägg Satser

Läs mer

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering Föreläsning 2 Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade

Läs mer

Introduktion till Matlab

Introduktion till Matlab Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar

Läs mer

Fråga 11. Vad skrivs ut? Fråga 12. Vad skrivs ut? Fråga 13. Vad skrivs ut? x=x+y; y=x-y; x=x-y;

Fråga 11. Vad skrivs ut? Fråga 12. Vad skrivs ut? Fråga 13. Vad skrivs ut? x=x+y; y=x-y; x=x-y; Håkan Strömberg KTH STH 1 Fråga 1. Vilka värden har c, e och f efter att de tre tilldelningssatserna har exekverats? int a=3, b=10; float c,d=2.0,e,f; c=b/a; e=b/a+d; f=d*b/a; Fråga 2. Skriv ett logiskt

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få

Läs mer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Datorövning 1 Calc i OpenOffice 1

Datorövning 1 Calc i OpenOffice 1 Datorövning 1 Calc i OpenOffice 1 1 OpenOffice Calc Till förmån för de som följer kursen Fysikexperiment för lärare skall vi här gå igenom några få exempel på hur OO Calc (motsvarar MS Excel) kan användas

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Statistik över heltal

Statistik över heltal Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande

Läs mer

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5 Funktioner och programstruktur Föreläsning 5 Dagens kluring int v[10]=1,2,3,4,5,6,7,8,9,10; int i; for(i=0;i

Läs mer

Programmering i C, 7,5 hp

Programmering i C, 7,5 hp Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata

Läs mer

Introduktion till programmering, hösten 2011

Introduktion till programmering, hösten 2011 Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter

Läs mer

Introduktion till Matlab

Introduktion till Matlab Introduktion till Matlab Analys och Linjär Algebra, del A, K1/Kf1/Bt1, ht10 1 Inledning Ni kommer använda Matlab i nästan alla kurser i utbildningen. I matematikkurserna kommer vi ha studio-övningar nästan

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 0 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: ca 2 3 timmar Att läsa: sidan 45 52 Syfte: Att ladda hem och installera utvecklingsmiljön Att skriva ditt första Javaprogram

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Inledande programmering med C# (1DV402) Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till programmering Introduktion till programmering Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt

Läs mer

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.

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. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1 Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens

Läs mer

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Mål Så enkelt som möjligt: låg tröskel Ett riktigt programmeringsspråk: inget tak Roliga uppgifter som går

Läs mer

Gamla tentemensuppgifter

Gamla tentemensuppgifter Inte heller idag någon ny teori! Gamla tentemensuppgifter 1 Bestäm det andragradspolynom vars kurva skär x-axeln i x = 3 och x = 1 och y-axeln i y = 3 f(x) = (x 3)(x + 1) = x x 3 är en bra start, men vi

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

Läs mer

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

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TRE Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta

Läs mer

a = a a a a a a ± ± ± ±500

a = a a a a a a ± ± ± ±500 4.1 Felanalys Vill man hårddra det hela, kan man påstå att det inte finns några tal i den tillämpade matematiken, bara intervall. Man anger till exempel inte ett uppmätt värde till 134.78 meter utan att

Läs mer

Laboration 1. Objektorienterad programmering, Z1. Syfte

Laboration 1. Objektorienterad programmering, Z1. Syfte Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

1 Datorer och program

1 Datorer och program 1 Datorer och program Idag är datorn ett av de viktigaste och vanligaste verktygen i vårt samhälle. På de flesta arbetsplatser finns det idag datorer. Vad använder man datorerna till? Vad gör en dator?

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Frekvenstabell över tärningskast med C#

Frekvenstabell över tärningskast med C# Instruktion Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Innehåll Du ska följa steg för steg -instruktionen i

Läs mer

Programmeringsuppgifter 1

Programmeringsuppgifter 1 Programmeringsuppgifter 1 Redovisning: Ni demo-kör och förklarar för handledaren några av de program ni gjort. Ni behöver inte hinna allt, redovisa så långt ni kommit. Om ni hinner mer kan ni alltid redovisa

Läs mer

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5 Funktioner och programstruktur Föreläsning 5 Dagens kluring int v[10]=1,2,3,4,5,6,7,8,9,10; int i; for(i=0;i

Läs mer

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

Läs mer

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera 1 Språket C++ 1.1 Valet av språket C++ för kompendiet Språket C++ är ett språk som utvecklats för storskalig objektorienterad utveckling av sofistikerade och komplexa system. Det ligger då i sakens natur

Läs mer

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

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter Inledande matematik för I1 MVE011 läsperiod 1 010 Matlab vecka övningsuppgifter Linjära ekvationssystem Matlab har många kraftfulla redskap för att hantera matriser och därmed också linjära ekvationssystem.

Läs mer

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Labora&on 1 Variabler och beräkningar övningar/uppgi9er Labora&on 1 Variabler och beräkningar övningar/uppgi9er 1M322 Webbteknik 2, 7,5hp Medieteknik 2015 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2014-10-27 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Talmängder. Målet med första föreläsningen:

Talmängder. Målet med första föreläsningen: Moment 1..1, 1.., 1..4, 1..5, 1.. 1..5, 1..6 Viktiga exempel 1.7, 1.8, 1.8,1.19,1. Handräkning 1.7, 1.9, 1.19, 1.4, 1.9 b,e 1.0 a,b Datorräkning 1.6-1.1 Målet med första föreläsningen: 1 En första kontakt

Läs mer

Programmering Grundkurs Laboration 1

Programmering Grundkurs Laboration 1 Programmering Grundkurs Laboration 1 Till kursen Programmering Grundkurs hör fyra obligatoriska laborationer. Detta är Laboration 1 given i period 1, HT 2010 vid KTH STH. Mål: I början av en programmeringskurs

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering λ Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Så här skriver du ditt första program i C++

Så här skriver du ditt första program i C++ Så här skriver du ditt första program i C++ Introduktion till att skapa Solution, Project och källkodsfil i Visual Studio 2013 Författare Anne Norling Kurs: Strukturerad programmering med C++ Kurskod:1DV433

Läs mer

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32 PROGRAMMERING JAVA Innehållsförteckning 1 Allmänt om Java...5 I detta kapitel... 5 Historia... 5 Hur fungerar det att programmera?... 6 Inspiration... 9 Styrkan i Java...10 Övningsuppgifter... 11 2 Utvecklingsverktyget...12

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

Inledning till OpenOffice Calculator Datorlära 2 FK2005

Inledning till OpenOffice Calculator Datorlära 2 FK2005 Inledning till OpenOffice Calculator Datorlära 2 FK2005 Mål Lära sig att skapa och använda ett räkneblad med OpenOffice Calculator Beräkna medelvärde och standardavvikelsen med räknebladet Producera en

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2016-01-09 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

Lathund Excel 2010. Nytt utseende. Skapa Nytt. Flikar

Lathund Excel 2010. Nytt utseende. Skapa Nytt. Flikar Lathund Excel 2010 Nytt utseende Programfönstret i Office 2010 har ett nytt utseende. Likt Office 2003 är Arkiv tillbaka. Under Arkiv hittar du de aktiviteter som i 2007 s version finns under Offic knappen

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

Läs mer

Programmering. Scratch - grundövningar

Programmering. Scratch - grundövningar Programmering Scratch - grundövningar Lär känna programmet: Menyer för att växla mellan att arbeta med script, utseende/bakgrund och ljud. Scenen där allting utspelar sig. Här klickar du på bakgrunden

Läs mer

Linjär algebra med tillämpningar, lab 1

Linjär algebra med tillämpningar, lab 1 Linjär algebra med tillämpningar, lab 1 Innehåll Per Jönsson Fakulteten för Teknik och Samhälle, 2013 Uppgifterna i denna laboration täcker kapitel 1-3 i läroboken. Läs igenom motsvarande kapitel. Sitt

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

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

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, 8.15-13.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

Läs mer

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer