Föreläsning 1: Momstabellen i C++

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 1: Momstabellen i C++"

Transkript

1 Nu sätter vi igång med C++! Föreläsning 1: Momstabellen i C++ På den här föreläsningen skall jag ta ett stort exempel och ett par små och med dessa hoppas jag att täcka in mycket av det som är grundläggande. Idag är tanken att vi skall hinna med hur man skriver ett litet c++-program, hur satser (tilldelning, if-satser, loopar, m.m.) ser ut i c++ och en del annat. I det första exemplet skall vi ta ett gammalt välkänt problem som vi redan har löst och titta på övergången mellan Ada och c++. Här är problemet: Skriv ett program som låter användaren mata in två priser och ett steg (realla tal) och som sedan skriver ut en momstabell. Momssatsen är alltid 25%. Programmet skall göra rimlighetskontroller på indatat. Körexempel: Mata in första pris (mellan 0 och 100): 10 Mata in sista pris (minst första pris): 12 Mata in steglängd: 0.3 MOMSTABELL (mini) Detta känner vi igen, det är ju vår gamla lab 1 (i princip). Vi rotar fram koden och modifierar lite, då får vi (lämplig att dela ut, eller köra på OH) mom.adb:

2 1 with Ada.Text_IO; use Ada.Text_IO; 2 with Ada.Float_Text_IO; use Ada.Float_Text_IO; 3 with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; 4 5 procedure Mom is 6 7 Fp : Float; 8 Lp : Float; 9 S : Float; 10 M : Float; N : Integer; begin 15 Put("Mata in första pris (mellan 0 och 100): "); 16 Get(Fp); 17 while Fp < 0.0 or Fp > loop 18 Put("ERROR: Mata in första pris igen: "); 19 Get(Fp); 20 end loop; loop 23 Put("Mata in sista pris (minst första pris): "); 24 Get(Lp); 25 if Lp >= Fp then 26 exit; 27 end if; 28 end loop; Put("Mata in steglängd: "); 31 loop 32 Get(S); 33 exit when S > 0.0; 34 Put("ERROR: Mata in steglängd igen: "); 35 end loop; M := 25.0; Svensk normalmoms (för kläder) N := Integer(Float'Floor((Lp fp) / S + 1.0)); Put_Line("MOMSTABELL (mini)"); 42 for I in 0.. N 1 loop 43 Put(Fp + Float(I) * S, 44 Fore => 5, Aft => 2, Exp => 0); Put((Fp + Float(I) * S) * M / 100.0, 47 Fore => 7, Aft => 2, Exp => 0); Put((Fp + Float(I) * S) * (1.0 + M / 100.0), 50 Fore => 7, Aft => 2, Exp => 0); New_Line; 53 end loop; 54 end Mom; 55

3 Ett par korta kommentarer om detta program: Vi har ett par olika varianter på rimlighetskontrollerna. Detta för att vi skall få se lite olika skrivsätt när vi går över till c++. Många brukar lösa den här laborationsuppgiften med en while för själva tabellutskriften. I detta exempel har jag valt att använda en for (egentligen är detta bättre) och helt enkelt räkna ut hur många varv som loopen skall gå. Vi sätter igång på direkten. I den här kursen kommer ni att fortsätta att programmera i emacs (eller vad ni nu har använt tidigare) så det är precis samma som när vi skulle skapa ett ada-program. Vi skapar en ny fil som vi kallar för mom.cpp. Vad skriver vi nu i denna? Jo vi börjar, precis som i ada, med själva programskellettet, vilket är ganska simpelt: 1 int main() 2 { 3 4 return 0; 5 } Vad innebär nu detta? Från Ada är vi vana vid att kunna döpa vårt huvudprogram till vad vi vill, eller snarare att huvudprogrammet heter ju som filen. I C++ heter huvudprogrammet alltid main. Parenteserna efter main är en parameterlista. Man kan alltså lägga till parametrar till huvudprogrammet. Vi kommer senare att se att det är här man kan lägga till saker om man vill ha kommandoradsargument till sitt program, vi hoppar över det så länge. Klamrarna (eller måsvingarna, eller vad man nu vill kalla dem) markerar att här börjar ett block, vi kan tänka på det som "begin" och "end" från ada. Alla konstruktioner som spänner över flera satser kommer behöva sådana block (t.ex. if-satser och loopar). Dessa talar alltså om vilka satser som hör till huvudprogrammet. Ordet "int" precis innan main beskriver returtypen för funktionen. Funktionen? Jajemän i c++ är även ditt huvudprogram en funktion precis som alla andra underprogram (det finns inga procedurer). Detta hänger alltså ihop med att vi returnerar ett tal längst ner i programmet. Varför skall man returnera ett heltal då? Jo, egentligen är det så att program bör returnera ett tal som talar om hur de avslutades. Att returnera 0 betyder att programmet avslutades normalt, allting annat kommer betyda att något gick fel under körning. Ett program kan på ett sådant sätt returnera "felkoder". Vi kommer inte jobba jättemycket med det. Skulle man glömma att göra "return 0;" i sitt program så kommer faktiskt kompilatorn lägga till det åt dig, men man skall ha "int" som returntyp för sitt huvudprogram i c++. Innan vi går vidare så kan jag bara säga något om hur vi kompilerar. Vi kommer att använda kompilatorn g++ (en del av gcc, precis som gnatmake). För att kompilera detta skulle vi alltså skriva: g++ mom.cpp Om det blir kompileringsfel eller varningar så kommer g++ att beskriva dessa. Nu vill jag varna er lite, g++ är inte alls lika snäll som gnatmake. Ta det därför lugnt i början och kompilera ofta så att ni slipper många fel samtidigt. Det är också så att g++ inte varnar på lika mycket som t.ex. gnatmake gjorde, för att få det beteendet måste man själv lägga till varningsflaggor t.ex. -Wall och -Wextra. Så här: g++ Wall Wextra mom.cpp Om ni kompileringen gick bra så kommer man få den körbara filen a.out (den heter alltid så). Vill man att den körbara filen skall heta något annat så kan man lägga till flaggan -o och sedan namnet: g++ mom.cpp o mitt_program Nu skulle alltså den körbara filen heta mitt_program. På vår hemsida kommer vi ha en liten "kom igång"- sida länkad vid laborationerna om vilka flaggor som kan vara bra att använda, och lite andra justa tips.

4 Nu tittar vi tillbaka i mom.adb. Vad gjorde vi där? Jo först så deklarerade vi lite variabler. Ett c++-program är inte uppdelat i en deklarationsdel och en satsdel. Man får alltså deklarera variabler vart man vill i sin kod, vi måste inte deklarera dem i början. Vi kan ju börja med ett par stycken, så här deklarerar jag variabler: 1 int main() 2 { 3 double fp; 4 double lp, s; 5 6 return 0; 7 } Man skriver alltså datatypen först och sedan namnet på sin variabel. Här är det "double" som är datatypen. I c++ finns float också, men vill man representera realla tal så används vanligtvis double eftersom den har mer precision. Precis som i Ada kan jag deklarera två variabler samtidigt (rad 4). Värt att nämna också är att c++ skiljer på stora och små bokstäver, så kompilatorn kommer inte att förstå om vi senare t.ex. skriver "FP". Här är lite andra datatyper i c++ (och motsvarigheten i Ada): Ada Float Integer Character Boolean String C++ float (double används oftast) int char bool string Vad är nästa sak som skall ske? Jo vi skall skriva ut lite text. I C++ använder vi cout till detta. cout är en utmatningsström som skriver ut till standard out d.v.s. till terminalen. Precis som i ada finns den inte i språkets "kärna" utan vi måste lägga till något, biblioteket iostream, detta gör vi med preprocessorkommandot #include. Detta talar om för preprocessorn (något som körs innan kompilatorn) att den även skall ta med rutinerna i iostream innan vi kompilerar. Man kan tänka på detta som "with" i Ada, fast i c++ är det mer att vi "klipper och klistrar" med koden. Precis som i Ada så kan man nu göra något ytterligare för att vi sedan bara ska behöva skriva cout. Ni kom väl ihåg när vi började och var tvugna att skriva Ada.Text_IO.Put hela tiden? Det är samma sak nu. Gör vi nu inget mer så måste vi skriva std::cout varje gång vi vill använda cout. Gör vi inte det så kommer kompilatorn bråka om att cout inte är deklarerad. "std" är nämligen den namnrymd som cout tillhör. Om vi då skriver till using namespace std; är det sedan fritt fram att bara säga cout. Namnrymder kan (till skillnad från att göra "use" på ett paket i Ada) spänna över flera bibliotek. Allt som allt får vi: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 double fp; 8 double lp, s; 9 10 cout << "Mata in första pris (mellan 0 och 100): "; 11 Just "<<" är en operator för "formaterad utmatning", mer om det senare. För tillfället kan vi se detta som att vi skickar strängen till cout, detta motsvarar alltså Put i Ada. Nu vill vi låta användaren mata in ett första pris. Inmatning gör man med couts motsvarighet, cin, som läser från standard in d.v.s. tangentbordet. Hur ser detta ut, jo så här:

5 12 cin >> fp; Detta motsvarar alltså Get (för flyttal) i Ada. ">>" är operatorn för "formaterad inmatning" vad detta innebär vet ni egentligen redan från hur Get beter sig i Ada. D.v.s. läs bort inledande vita tecken, läs sedan in något som kan tolkas som ett flyttal, t.ex Om vi nu tittar i Ada-koden så ser vi att vi vill ha en while-loop. Att göra detta i c++ blir mycket likt: 13 while (fp < 0.0 fp > 100.0) 14 { 15 cout << "ERROR: Mata in första pris igen: "; 16 cin >> fp; 17 } 18 Skillnaderna är som sakt mycket små. Det är den logiska operatorn "or" som har bytts mot " ". Vi har inget ord "loop" eller "end loop", vi använder klamrarna istället. Det går att skippa klamrarna om man bara har en sats i loopen (samma med if-satser) men gör inte det, ha alltid med dem. Det blir så lätt fel om man senare går tillbaka och lägger till en till sats. Jag vill passa på att säga att vita tecken inte har någon betydelse, precis som i Ada (om man inte råkar slå ihop två ord eller bryta isär t.ex. while till whi le). Exakt vart man sätter sina radbrytningar och hur många mellanslag man vill ha bestämmer man alltså lite själv. Givetvis är det bra att följa någon sorts kodstil. Vi på kursen (och i följande kurser) kommer t.ex. alltid sätta klamrarna på egen rad, i indenteringsnivå med den sats de tillhör. Nu tittar vi på nästa loop (d.v.s den som börjar på rad 22 i Ada-koden). Detta är ju någon form av loop med ett villkor, precis som while, fast kontrollen av villkoret är i slutet. I Ada finns det ingen sådan inbygd loop så man har här använt den vanliga "loop" och satt en if-sats med en "exit" sist. I c++ och c-relaterade språk finns det dock just en sådan loop som vi vill ha, den heter do-while: 19 do 20 { 21 cout << "Mata in sista pris (minst första pris): "; 22 cin >> lp; 23 } 24 while (lp < fp); Eftersom villkoret nu talar om när loopen skall fortsätta, snarare än när loopen skall avbrytas måste vi nu vända på villkoret. Det fanns alltså en sats i c++ som inte fanns i Ada! Språk är olika helt enkelt. Det är inte så att vissa språk är "bättre" än andra, utan de är "bättre" i vissa givna situationer. I vårt fall såg vi att det inte spelade någon roll att do-while inte fanns i Ada, vi kunde lösa det ändå. Nu kommer vi till något som finns i Ada men inte i c++, nämligen nästa loop (rad 31). Den här loopen avbryts mitt i. C++-motsvarigheten till "exit" är break, så det kan vi fixa, men hur får vi en loop som motsvarar Adas "loop". Här kan man göra på lite olika sätt, men det vanligaste är att man använder en while med ett villkor som alltid är sant, t.ex. true: 25 cout << "Mata in steglängden: "; 26 while ( true ) 27 { 28 cin >> s; 29 if ( s > 0.0) 30 { 31 break; 32 } 33 cout << "ERROR: Mata in steglängden igen: "; 34 }

6 Vi blir tvugna att ta till en if-sats för vår break. Just "exit when" är en ada-specialitet. If-satsen i c++ är mycket lik den i Ada. Vi har inget "then" eller "end if", vi använder klamrar istället. Det finns självklart else, och också else if. Nu kommer vi fram till den punkt då vi vill sätta att momsen skall vara 25% (rad 37). I vårt c++-program har vi ju inte ens deklarerat m än. Det kan vi göra nu. Vi kan samtidigt passa på att säga att m skall vara en konstant, då måste vi sätta ms värde direkt: 35 const double m = 25.0; "const" marekare alltså att m är ett data som inte får ändras senare i vårt program. Tilldelning gör vi med "=", alltså inte ":=" som i Ada. Man kan då fundera på hur man jämför om två saker är lika i C++, jo med "==", mer om det senare. Just att tilldela en variabel då den deklareras kallas för initiering. Det finns en nyare, mer modern syntax för detta som använder klamrar, jag kommer tillbaka till den strax. Nu vill vi beräkna hur många varv som den kommande for-satsen skall gå. Vi deklarerar därför variabeln n och tilldelar den resultatet från ett uttryck: 36 int n; 37 n = floor((lp fp) / s) + 1.0); Saknas det inte något? Tja, det ser lite märkligt ut eftersom högerledet här verkar ju bli ett flyttal (double) medan till till vänster är heltal. Här sker en automatisk omvandling från double till int. C++ är ett typat språk, men det kan ske automatiska omvandlingar, så det gäller att se upp lite. funktionen "floor" avrundar nedåt och finns inuti ett annat bibliotek som heter cmath, så det får vi lägga till längst upp. I detta fall skulle man faktiskt inte behöva göra "floor" eftersom den automatiska omvandlingen trunkerar (hugger av decimalerna). Nu skall vi bara skriva ut en rad till (rubriken på tabellen), och dessutom göra ett new_line: 38 cout << "MOMSTABELL (mini)" << endl; Man kan göra radbrytningar med specialtecknet '\n'. En "endl" gör precis detta och "flushar" dessutom utmatningsbufferten så att man vet att texten verkligen har skrivits ut innan man går vidare till andra satser. Nu till själva tabellen. Hur ser en for-loop ut i c++? Tja egentligen är det bara en glorifierad while, en while++. Generellt så skriver man den på detta sätt: Villkor för att fortsätta upprepa. for ( ; ; ) Satser som görs en gång innan första varvet Satser som görs i slutet av varje varv. Vi kan alltså formulera vår for-loop på detta sätt: 39 for ( int i = 0 ; i < n ; ++i ) 40 { Innan första varvet vill vi ju ha en ny variabel (precis som vi får från Adas for-loop). I C++ deklarerar vi den i for-satsens första del. Den variabeln kommer bara att existera i for-satsens block. Det är det vi är vana vid

7 från Ada. Villkoret för att fortsätta är att i håller sig mindre än n, d.v.s det sista värde som i får anta är n - 1. I slutet av varje varv vill vi räkna upp i med 1. Vi hade lika gärna kunnat skriva i = i + 1 här, men vi kan passa på att introducera preinkrementsoperatorn ++ som gör precis samma sak. Här är lite andra varianter: i++ postinkrement, räknar upp i men returnerar det gamla värdet. i += 1 exakt samma som att skriva i = i + 1. Tycker man att dessa verkar krångliga så är det helt ok att skriva i = i + 1. Nu är vi snart klara. Vi skall bara skriva ut raderna i vår tabell. Vi kan använda cout för att skriva ut flyttal också, men om vi inte säger något extra blir det inte snyggt (vi får inte ut några decimaler!). För att säga hur många decimaler man vill skriva ut med så kan man använda utskriftsmanipulatorn setprecision, och fixed. När man använder dessa så kommer de att gälla för alla utskrifter som görs till cout framöver. cout << setprecision(2) << fixed << fp; //skriver ut fp med två decimaler För övrigt är "//" kommentarsymbolen i c++. Man kan även göra kommentarer som spänner över flera rader med "/*" och "*/", men gör inte det, det brukar sällan bli bra. Vi vill också säga att vi vill att talet skall skrivas ut med en viss bredd, det kan vi göra med manipulatorn setw. Detta kommer att ange bredden för hela talet, vi räknar lite och kommer fram till att det borde bli 8. (I Ada-koden var ju Fore 5. Med två decimaler och en plats för decimalpunkt blir detta 8). Setw (till skillnad från setprecision) gäller bara för just nästa utskrift dock: 41 cout << setprecision(2) << fixed 42 << setw(8) << fp + i * s; Obs: åter igen sker en automatisk typomvandling på rad 42 (i är ju int). Vi ser nu att setprecision och fixed alltså borde kunna ligga utanför loopen, men men. Utskriftsmanipulatorerna ligger i biblioteket iomanip, så det får vi också lägga till längst upp. Nu behöver vi bara skriva ut resten. Man kan skicka många saker till cout när man ändå håller på: 43 cout << setw(10) 44 << (fp + (i * s)) * m / << setw(10) 46 << (fp + i * s) * (1.0 + m / 100.0); 47 << endl; } // slut på for loopen Så! Det var hela programmet. Nu tänkte jag gå över och titta på ett annat exempel som illustrerar lite mer I/O. Säg att vi vill ha ett program som låter användaren mata in sitt för- och efternamn (två ord) och sin hobby (en hel rad text). Programmet skall sedan upprepa tills man väljer att avsluta. Körexempel: Mata in ditt för och efternamn: Eva Andersson Mata in din hobby: Åka snowboard och skidor Vill du avsluta (j/n): n (programmet upprepar) I c++ löser vi lätt de två första problemen med datatypen string. En string i c++ kan innehålla godtyckligt många tecken - hurra! Det är alltså inte riktigt så enkelt som i Ada där strängar helt enkelt var fält av tecken.

8 Exakt hur string är implementerad kan vi titta på någon annan gång, just nu är vi intresserade av hur vi använder den: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 string first_name, last_name; cout << "Mata in ditt för och efternamn: "; 12 cin >> first_name >> last_name; return 0; 15 } Med formaterad inmatning läser cin alltså tecken till strängen tills den stöter på ett vitt tecken. Detta fungerar bra för inläsningen av våra namn. Hur gör vi med hobbyn, det skulle ju vara en hel rad. Lyckligtvis finns det en bra rutin för detta, nämligen get_line, som läser in ända till radslut: cout << "Mata in din Hobby: "; 16 getline(cin, hobby); Vi får lägga till hobby bland våra strängvariabler. Nu måste vi dock tänka till lite om tangentbordsbufferten igen. Efter första inmatningen kommer det ju att ligga ett enter-tecken kvar i bufferten. Det innebär ju att getline direkt kommer att ta detta som att användaren skrev in 0 tecken på hobbyn. Mellan inmatningarna måste vi alltså rensa bufferten, en Skip_Line från Ada hade varit trevligt. I C++ finns en liknande rutin som heter ignore som anropas direkt på cin. Till den skickar man hur många tecken som skall ignoreras och vilket tecken som ignoreringen skall sluta vid. Vi lägger alltså till efter den första inmatningen: 13 cin.ignore(1000, '\n'); Detta betyder alltså, börja kasta bort tecken tills antingen du har kastat bort ett entertecken eller tills du har kastat bort 1000 stycken. Varför valde jag just 1000? Tja, om det skulle komma mer skräp innan entertecknet. Nu fungerar ju inte detta om det råkar vara mer än 1000 skräptecken, så egentligen skulle jag vilja göra detta på något mer generellt sätt, men det löser vi inte nu. Nu skall dessa upprepas, så vi lägger på en do-while. Men vad skall vi ha för krav på avslutandet av loopen? Jo, vi låter användaren mata in ett tecken. Vi deklarerar variabeln c (med datatypen char) och läser in endast ett tecken. Det kan vi göra med rutinen get. Nu ser programmet ut så här:

9 1 #include <iostream> 2 3 using namespace std; 4 int main() 5 { 6 string first_name, last_name; 7 string hobby; 8 char c; 9 do 10 { 11 cout << "Mata in ditt för och efternamn: "; 12 cin >> first_name >> last_name; 13 cin.ignore(1000, '\n'); cout << "Mata in din hobby: "; 16 getline(cin, hobby); 17 cout << "Vill du avsluta (j/n): "; 18 cin.get(c); 19 } 20 while (c!= 'j'); return 0; 23 } Här är det viktigt att man faktiskt skriver "!=", det är operatorn "skiljt ifrån". Okej vi hade ju lika gärna kunnat skriva "c == n", men om vi skulle använda Adas operatorer "/=" eller "=" så skulle detta tolkas som något helt annat. "=" är ju faktiskt tilldelning, och tilldelning returnerar ett värde i C++. Alltså skulle det fortfarande gå att kompilera men programmet skulle bete sig mycket underligt. Jag varnar alltså därför åter en gång, tänk till när ni skriver "=" i c++, är det tilldelning eller jämförelse ni menare. Detta är en superlätt grej att göra fel på när man är ny.

10 Innan vi avslutar så skall jag ta ett litet exempel till. Man kan faktiskt läsa tecken från tangentbordet tills det "tar slut". Ett sådant slut brukar kallas för filslut och markeras med ctrl-d. Nu skall vi göra ett program som läser tecken till filslut och summerar hur många vita tecken som matades in. När man använder cin för att läsa in så returneras det alltid sant eller falskt. Så länge det gick bra att läsa så returneras sant, om det inte går bra (t.ex. för att indatat har "tagit slut") så kommer falskt att returneras. Det betyder att man kan sätta själva inläsningen i en while-loops villkor: 1 #include <iostream> 2 #include <cctype> 3 4 using namespace std; 5 6 int main() 7 { 8 char c; 9 int num_spaces{0}; 10 while ( cin.get(c) ) 11 { 12 if (isspace(c)) 13 { 14 num_spaces += 1; 15 } 16 } cout << "Du skrev in " << num_spaces 19 << " vita tecken." << endl; return 0; 22 } På rad 9 vill vi initiera variabeln num_spaces till 0. Vi skulle kunna göra detta med tilldelningsoperatorn ("=") men jag visar här ett annat sätt att initiera variabler på. Funktionen isspace finns i biblioteket cctype. Där finns det en hel del bra rutiner för att hantera tecken, t.ex. rutiner för att kolla om något är en stor bokstav, om ett tecken är ett numeriskt tecken o.s.v.

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer C++ - en introduktion Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna Ett första

Läs mer

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 77 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

5 Grundläggande in- och utmatning

5 Grundläggande in- och utmatning 5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta

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

Föreläsning 4: Poster

Föreläsning 4: Poster Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra

Läs mer

Föreläsning 0: Introduktion av Ada

Föreläsning 0: Introduktion av Ada Föreläsning 0: Introduktion av Ada OBS! Detta är antagligen det enda papper som delas ut under hela FÖ serien. Det finns förutom detta ett antal OH:n som kommer att användas under nästa FÖ, men sen är

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

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

Introduktionslaboration

Introduktionslaboration LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte

Läs mer

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram Mål Lab 2: Underprogram Följande laboration introducerar underprogram; procedurer, funktioner och operatorer. I denna laboration kommer du att lära dig: Hur man skriver underprogram och hur dessa anropas.

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

Läs mer

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19 Programmering i C++ EDA623 Strömmar och filer EDA623 (Föreläsning 9) HT 2013 1 / 19 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess

Läs mer

C++ Lektion Tecken och teckenfält

C++ Lektion Tecken och teckenfält C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

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

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Modul 2 Byggstenar PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Byggstenar 4 Nyckelord 4 Tecken 4 Syntax 5 Standardbibliotek 5 Vårt första program 5 Variabler 6 Konstanter 9 Operatorer 9 Övningar 9 Mer operatorer

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

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

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1a (Aktiekurser utan poster) Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har

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

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I 2002-03-18 Betygsgränser: 3 14 poäng 4 20 poäng 5 27 poäng Maxpoäng: Hjälpmedel: 32 poäng Bilagd ASCII-tabell Lycka till Per Ekeroot

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

Prova på-laboration i Ada

Prova på-laboration i Ada Prova på-laboration i Ada Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-01 1. Introduktion till imperativa språk Programspråket Ada är resultatet av ett

Läs mer

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Ö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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Strömmar, externa filer och kommandoradsargument Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/32 Strömmar Kommandoradsargument Jämförelseoperatorer

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

Avrundning och manipulatorer

Avrundning och manipulatorer Avrundning och manipulatorer Intern avrundning Avrundning vid utskrift o o Med formatflaggor Med manipuilatorer Andra manipulatorer o Exempel 1 Intern avrundning Intern avrundning används t ex då en variabel

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

Funktionens deklaration

Funktionens deklaration Funktioner - 1 Teknik för stora program #include #include......... cout

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

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

System.out.println(Jaså du har + antalhusdjur+  husdjur); if ( antalhusdjur > 5 ) System.out.println(Oj det var många); 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment EDAf30: Programmering i C++, 7.5 hp EDAF30 Programmering i C++ 1. Introduktion Sven Gestegård Robertz Datavetenskap, LTH 2015 Mål: Kursens syfte är att ge kunskaper i objektorienterad programmering i C++.

Läs mer

Uppgift 1 (Sorterade heltal som är OK)

Uppgift 1 (Sorterade heltal som är OK) 2013-03-12.kl.14-19 Uppgift 1 (Sorterade heltal som är OK) Ibland råkar man ut för att man måste se till att man inte får dubletter i sina inmatningar. Denna uppgift baserar sig på detta, men dessutom

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

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 Exempel 3: Mata in storlek på bikupan: 3 \ / \

Läs mer

Lektion 1 - Steg 1. Introduktion. Hello World

Lektion 1 - Steg 1. Introduktion. Hello World Introduktion Kursen är utvecklad som ett projekt med syfte att stödja ett flexibelt lärande. Idéerna bakom den successiva examinationen är att synliggöra de enskilda inlärningsstegen i kursen. Tanken är

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

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

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 2014-2015. L0 - Grunder i C++ Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 01-015 L0 - Grunder i C++ Det här är den första lektionen i kursen Introduktion till algoritmer vid Matematikgymnasiet, läsåret

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

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Uppgift 1 (vadå sortering?)

Uppgift 1 (vadå sortering?) 2011-06-08.kl.14-19 Uppgift 1 (vadå sortering?) Du skall skriva ett program som sorterar in en sekvens av tal i en vektor (en array ) enligt en speciell metod. Inledningsvis skall vektorn innehålla endast

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

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

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT 2014 Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att

Läs mer

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada. Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val 732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==

Läs mer

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler 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

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

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

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

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

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

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

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

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Data, typ, selektion, iteration

Data, typ, selektion, iteration Data, typ, selektion, iteration En programmeringkurs på halvfart IDT, MDH ttp://www.negative-g.com/nolimits/no%20limits%20defunct%20coasters.htm 1 Dagens agenda Talrepresentation Typkonvertering Sekvens

Läs mer

Föreläsning 7: Filer

Föreläsning 7: Filer Genomgånget på FÖ: Föreläsning 7: Filer Undantag: Liten mall för undantag ("exceptions") och vad man har det till. Dock inte med betoning på allt, men det väsentliga är upptaget. Filer: P. Open(filvar,

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

Instuderingsfrågor till Steg 1

Instuderingsfrågor till Steg 1 Instuderingsfrågor till Steg 1 Följande frågor har till avsikt att underlätta inläsningen av det teoriavsnitt som hör till steg1. Frågorna är anpassade till kursboken C++ from the Ground Up av Herbert

Läs mer

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 + / \ + + + + \ / + Exempel 3: Mata in storlek

Läs mer

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016 Emacs Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016 Historia 2/21 Utvecklas konstant, från 70-talet Är en generellt texteditor (INTE ordbehandlare) som fokuserar på texten, inte utseendet

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion 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. 2 C Standarder

Läs mer

Anteckningar 1: Grundläggande saker

Anteckningar 1: Grundläggande saker UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering

Läs mer

Föreläsning 4: Filer och strömmar

Föreläsning 4: Filer och strömmar Föreläsning 4: Filer och strömmar PROGRAM OPERATIV- SYSTEM EXTERNA (IO-)ENHETER cout > x; STANDARD INSTRÖM ifstream infil A.TXT infil >> str; INGÅENDE FILSTRÖM

Läs mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

Läs mer

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

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011 1 of 7 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Föreläsning 2: Avlusning och antilustekniker

Föreläsning 2: Avlusning och antilustekniker 2D1458, Problemlösning och programmering under press Föreläsning 2: Avlusning och antilustekniker Datum: 2007-09-11 Skribent(er): Emil Hesslow, Stefan Pettersson Föreläsare: Per Austrin Föreläsningen handlade

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

kl Examination - Ada

kl Examination - Ada Examination - Ada TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer