tentamensdags och lab 3…
Större program delas normalt upp i flera filer/moduler vilket har flera fördelar: Programmets logiska struktur när man klumpar ihop funktioner som hör ihop (och ibland också struct-def och variabler) Man kan enkelt återanvända generisk kod (tänk på biblioteken vi använder) Man behöver inte kompilera om hela programmet när man ändrar i en modul
#include #include "matte.h" int main() { printf("arean:%.3f\n",cirkelarea(10)); return 0; } #include #include "matte.h" double cirkelarea(double radie) { return M_PI*radie*radie; } #ifndef MATTE_H_INCLUDED #define MATTE_H_INCLUDED double cirkelarea(double radie); #endif // MATTE_H_INCLUDED
Börja med att starta ett projekt File -> New -> Project… Console application C namn Kompilera och kör! Go Next> Finish
Skapa sedan en till källkodsfil: File -> New -> File… C/C++ source C matte.cDebug Release Go Next> … v v Finish
och tillhörande headerfil: gör samma sak men välj C/C++ header och namnge den matte.h
gcc –c main.c skapar objektsfilen main.o gcc –c matte.c skapar objektsfilen matte.o gcc –o cirkelprogram main.o matte.o länkar ihop objektsfilerna till ett körbart program OBS att headerfilen matte.h ligger i samma katalog!
Formalia och hur går det till på praktisk tentamen (TEN2) Träning inför praktisk tentamen Frågor inför teoretisk examen (TEN1) Frågor angående Lab 3
Tentamen är 4h och 45min i datorsal Ni får ett speciellt användarnamn och lösenord Ni sparar alla filer på H: - spara ofta! Internet är avstängt Ni får ha med er boken utan anteckningar och en A4 med handskrivna anteckningar på ena sidan De fyra följande uppgifterna skulle kunna utgöra en tentamen
1. Skriv ett program som omvandlar km/h till m/s. Användaren ska kunna göra så många omvandlingar denne vill och sedan kunna avsluta 2. Skriv en funktion som tar två strängar och returnerar hur många av bokstäverna i den första strängen som också finns i den andra strängen. Ex: comp("banan","arbete") ska returnera 3 eftersom b,a och a i banan finns i arbete comp("banan"," avlusa") ska returnera 2 eftersom a och a i banan finns i avlusa comp("rivas"," avlusa") ska returnera 3 eftersom v,a och s i rivas finns i avlusa Skriv också en main som testar funktionen. Exempel på main som testar funktionen: int main(void) { printf("Antal: %d",comp("banan","arbete")); }
3. I det här programmet ska vi representera en rektangel med heltalssidor med en struct. Skriv en funktion som som tar två heltal (längd och bredd) och returnerar en rektangel. Skriv en funktion som tar en rektangel och returnerar arean som en int Skriv en funktion som ökar en rektangels längd och bredd med ett Skriv en funktion som tar två rektanglar och kontrollerar om längd och eller bredd är lika stora och i så fall returnerar den en ny rektangel som har formen av de två rektanglarna liggande bredvid varandra
4. Master Mind I det här spelet slumpar datorn fram 4 siffror (0-9) på fyra positioner. Spelaren skall sedan gissa vilka siffror datorn har slumpat fram. Efter gissningen berättar datorn hur många siffror som var rätt siffra på rätt plats och hur många siffror som var rätt siffra men på fel plats. Sedan får spelaren gissa igen och så fortsätter spelet tills spelaren gissat rätt varvid denne gratuleras av programmet. Datorn slumpar fram fyra unika siffror och spelaren förväntas gissa fyra unika siffror. Så här skulle en körning där datorn slumpat fram siffrorna se ut: Valkommen. Gissa fyra siffror(0-9) med mellanslag mellan siffrorna: Du har 0 siffror ratt pa ratt plats och 2 siffror ratt pa fel plats. Gissa igen: Du har 2 siffror ratt pa ratt plats och 0 siffror ratt pa fel plats. Gissa igen: Du har 2 siffror ratt pa ratt plats och 1 siffror ratt pa fel plats. Gissa igen: Grattis du gissade ratt på 4 gissningar!
Skriv ett program som låter användaren spela ett kortparti 21 mot datorn. I ett 21-spel har kortfärgen ingen betydelse. Man får ett kort i taget och det gäller att komma så nära 21 som möjligt. Får användaren över 21 har denne förlorat. Om användaren är nöjd innan denne fått 21 spelar datorn och då vinner den som kommit närmast. Får användaren exakt 21 vinner denne direkt. I vår variant av spelet räknas essen alltid som 1 och vi bryr oss inte om vilka kort som gått utan man kan alltid få korten 1 tom 13 med samma sannolikhet (det är alltså teoretiskt möjligt att få 5 ess i rad).
Skriv ett program som låter en slumpa lotto-bollar med nummer Användaren ska alltså få en slumpmässig siffra mellan 1 och 15 men aldrig samma siffra man tidigare fått: 12 For nasta boll tryck enter 7 For nasta boll tryck enter 4 For nasta boll tryck enter 5 For nasta boll tryck enter 9 For nasta boll tryck enter 2 For nasta boll tryck enter …
Observera eventuella problem med textfiler om ni använder shared folder i linux i virtual box! Använd en annan folder och flytta säkerhetskopia till er shared folder ofta