Kap 4: Mer om char och stränghantering

Storlek: px
Starta visningen från sidan:

Download "Kap 4: Mer om char och stränghantering"

Transkript

1 Kap 4: Mer om char och stränghantering Vi fortsätter med teckenvariabler, char, och skapar ett program, som skriver ut ASCII-tabellen. Sedan gör vi ett program, som skriver ut en char på slumpvis plats i fönstret, och använder funktionen setcolor(), som gör det möjligt att använda färger i console-programmering. I det här kapitlet gör vi också ett program, som visar hur textsträngar är uppbyggda och hur de deklareras och matas in från tangentbordet. Vi ska också kopiera och sätta samman strängvariabler till nya strängar. 1. ASCII-tabellens tecken Skapa en ny mapp med namnet Kap 04, där alla projekt i det här kapitlet sparas. Förutom int, som lagrar heltalsvariabler, och double och float, som lagrar flyttal (decimaltal), har vi också använt typen char tidigare. En char-variabel lagrar ett tecken. Tecknen anges i teckenuppsättningen ASCII, som betyder American Standard Code for Information Interchange. På svenska: amerikansk standardkod för informationsutbyte. Teckenuppsättningen innehåller 256 tecken, 0 255, eftersom det går att skriva 256 olika heltal med minnesenheten 1 byte. Tabellen innehåller bokstäver, siffror och specialtecken. Den vanligaste uppsättningen visar i Appendix A längst bak i boken. Tecken kan dock variera en del i olika versioner. Stora bokstäverna A - Z (versaler i engelska språket) har nummer medan de små bokstäverna a z har nummer Det innebär att om 32 adderas till versalens nummer erhålls det gemena tecknet. Eftersom A har nummer 65 har a nummer = 97. B har nummer 66 och b nummer 98 eftersom = 98. Detta gäller dock inte Å, Ä och Ö samt å, ä och ö, som inte har nummer efter den här principen. En char lagrar endast det heltal, som svarar mot numret i tabellen. Kompilatorn översätter sedan numret till symbolen. Det program vi ska skapa i det här avsnittet ska skriva ut tecken i ASCI-tabellen. Vi börjar med tecken 32, som är blanktecknet, eftersom tecken 0-31 är styrtecken, som radslut, nyrad-tecken etc. En del av tecknen 0 32 har inte längre någon större användning i console-program men finns kvar av kompatibilitetsskäl. Lägg in följande kod i projektets cpp-fil: // Ex01_04. Program som skriver ut ASCII-tecknen #include <iostream> #include <conio.h> using namespace std; #include <svtecken.h> int main() teckenbyt(); for (int j=32; j<255; j++) if (j<100) cout << ; cout << j << : << (char)j << ; cout << \n\n ; cout << Tryck tangent ; getch(); return 0; 53

2 Här används en for-sats för att skriva ut tecknen. För att det ska bli tilltalande, se snyggt ut, används en if-sats, för att skriva mellanslag före alla nummer under 100. Vissa av tecknen under 32 är viktiga, exempelvis tecken nr 13 som är nyrad-tecknet. Tecken nr 7 är också ett användbart tecken, eftersom det ger ett pip i datorns inbyggda högtalare. Komplettera programmet med följande rad före slutraderna: cout << (char)7; Kör programmet på nytt. Nu hörs ett pip då uppmaningen att trycka tangent ges. 2. Utskrift av stjärnor Uppgift 1, Uppgift 2 I det här avsnittet ska vi skriva ett program som skriver ut tecken 42, *, på slumpmässig plats på skärmen med hjälp av gotoxy(). Skapa ett nytt projekt, Ex02_04, och lägg in följande kod i cppfilen: // Ex02_04. Program som skriver en stjärna på slumpvis plats #include <iostream> #include <conio+.h> #include <time.h> // Behövs endast i Visual using namespace std; #include <svtecken.h> int main() teckenbyt(); char ch='s'; int kol, rad; srand(time(0)); gotoxy(1,24); cout << Tryck S för stjärna. Sluta - tryck annat tecken: ; ch=getch(); while (ch=='s' ch=='s') kol=rand()%80+1; rad=rand()%22+1; gotoxy(kol,rad); cout << '*'; gotoxy(1,24); cout << Tryck S för stjärna. Sluta - tryck annat tecken: ; ch=getch(); cout << \n\n ; return 0; Här används read ahead-teknik och när ett S eller s trycks slumpas en kolumn från 1 till 80 och en rad från 1 till 22. En stjärna skrivs ut. Vi stoppar vid 22 eftersom inte texten längst ner i fönstret ska skrivas över. Om annan tangent trycks bryts while-loopen och programmet avslutas. Som 54

3 du ser tillåter while-villkoret litet eller stort s för brytning. Båda tecknen går bra. Vi ska använda funktionen setcolor() som finns i conio+.h. Lägg till deklarationen av color och två rader inuti while-kroppen: int color; while (ch=='s' ch=='s') kol=rand()%80+1; rad=rand()%22+1; color=rand()%16; setcolor(color); gotoxy(kol,rad); cout << '*'; setcolor(7); gotoxy(1,24); cout << Tryck S för stjärna. Sluta - tryck annat tecken: ; ch=getch(); Kör programmet. Bilden ovan visar hur console-fönstret kan se ut efter att stjärnor har slumpats ett tag. Följande 16 färger kan väljas med setcolor(): Heltal Namn Färg Heltal Namn Färg 0: BLACK Svart 8: DARKGRAY Mörkgrå 1: BLUE Blå 9: LIGHTBLUE Ljusblå 2. GREEN Grön 10: LIGHTGREEN Ljusgrön 3: CYAN Blågrön 11: LIGHTCYAN Ljusblågrön 4: RED Röd 12: LIGHTRED Ljusröd 5: MAGENTA Violett 13: LIGHTMAGENTA Ljusviolett 6: BROWN Brun 14: YELLOW Gul 7: LIGHTGRAY Ljusgrå 15: WHITE Vitt 55

4 Först deklareras int color, som ger olika textfärger som värde i setcolor(), som finns i conio+.h. Funktion bestämmer textfärgen och färgade stjärnor skrivs ut. I parentesen ska ett heltal från 0 och högst 15 skrivas. Alternativt kan konstanterna, som anges med namnen i tabellen användas. Eftersom den ursprungliga textfärgen är 7 (LIGHTGRAY) måste den återställas innan cout-satsen uppmanar användaren att trycka nytt tecken. Vi ändrar programmet så att stjärnor skrivs ut i hela fönstret tills en tangent trycks. Byt ut koden i main() mot följande: teckenbyt(); char ch='s'; int kol, rad, color; srand(time(0)); while (kbhit()==false)//ch=='s' ch=='s') kol=rand()%80+1; rad=rand()%25+1; color=rand()%16; if (kol==80&&rad==25) continue; setcolor(color); gotoxy(kol,rad); cout << '*'; cout << \n\n ; return 0; Här används funktionen kbhit(), som låter while-satsen pågå tills en tangent trycks. Eftersom utskrift av stjärnor i sista skärmpositionen (80,25) medför scrollning finns en if-sats i koden, som i så fall avbryter loopen så att nya värden kan slumpas. Utskrift av stjärnor sker alltså inte i hela fönstret, eftersom sista positionen aldrig används. 3. Teckensträngar Om man använder många teckenvariabler av typ char efter varandra fås en teckensträng. Vi ska börja med att skriva ut några char efter varandra. Skapa ett nytt projekt och lägg in följande kod i cpp-filen: // Ex03_04. Program som deklarerar och skriver textsträngar #include <iostream> #include <conio.h> using namespace std; #include <svtecken.h> int main() teckenbyt(); char ch1='c', ch2='+', ch3='+'; Uppgift 3 cout << \njag gillat att programmera i << ch1 << ch2 << ch3 << '.'; 56

5 cout << \n\n\n ; cout << Tryck tangent ; getch(); return 0; Kör programmet. De tre deklarerade tecknen, som också initieras vid deklarationen, skrivs ut. Vi kan deklarera en teckensträng med koden: char str[]= C++ ; Ett fält bestående av tre tecken deklareras och ges namnet str. Att str är ett fält, dvs ett antal tecken i rad, anges med hakparenteserna. Mellan dessa kan antalet tecken, som fältet ska bestå av, skrivas. I det här fallet behövs detta inte, eftersom antalet framgår av initieringen: str[]= C++ ; Bygg ut programmet ovan med följande kod före slutraderna: char str[4]= C++ ; cout << \n\njag gillar att programmera i << str << '.'; Kör programmet igen. Som du ser blir resultatet det samma. Fältet skrivs ut som en enhet. Istället för ordet fält används ofta den engelska beteckningen array och man säger då ofta på svenska arrayen. Observera att minnesutrymme har reserverats av programmet för fyra tecken eftersom tecknen avslutas med nolltecknet, dvs tecknet med ASCII-kod 1. Detta skrivs här \0 och så här ser str ut: C + + \0 Strängvariabeln består av fyra tecken om det avslutande nolltecknet också räknas. Det går inte att utöka antalet tecken till fler än som deklarerats från början. Efter de tre tecknen följer det avslutande nolltecknet. Vi bygger ut programmet och deklarerar ytterligare en sträng: cout << \n\nsträngen består av följande tecken: << str[0] << ' ' << str[1] << ' ' << str[2]; cout << \n\ndet fjärde tecken är nolltecknet. ; Kör programmet. Som du ser kan varje tecken plockas fram med indexet i klammern. Genom att använda en heltalsvariabel kan man bekvämt plocka fram vilket tecken som helst i en sträng. Genom att tilldela platsen ett nytt tecken kan strängen också ändras. I koden nedan går loopen igenom strängen C++ och byter alla plus mot minus genom att använda en if-sats. char[] str= C++ ; for (int j=0; j<3; j++) if (str[j]=='+') str[j]='-'; Observera de dubbla lika med-tecken i villkoret och det enkla i tilldelningen. Vi deklarerar ytterligare än strängvariabel, str2, med följande tillägg som placeras efter föregående kod: char str2[9]= språket ; cout << \n\njag gillat att programmera i << str2 << str; Kör programmet på nytt. Här deklareras en sträng som är åtta tecken lång. Det åttonde tecknet utgörs av mellanslaget på 57

6 slutet. Längden skrivs i hakparentesen och där anges 9 eftersom det avslutande nolltecknet upptar en plats det också. Utskrift görs med cout som vanligt, men förutsättningen för att det ska fungera är, att strängen avslutas med nolltecken. Lägg till följande kod efter den föregående och före slutraderna: char str3[16]= programspråket ; cout << \n\njag gillat att programmera i << str3 << str <<. ; Innehållet i en sträng kan bytas mot nytt innehåll, men observera att det inte fungerar att lägga en ny sträng i str2 genom att skriva: str3= språket C++. ; Istället används funktionen strcpy(), som kopierar strängen och placerar den i den andra strängen. Vi ska studera funktionen strcpy() och andra strängfunktionerna mer längre fram i kapitlet men bygger nu ut programmet med följande kod: strcpy(str2, språket C++. ); cout << \n\njag gillar att programmera i << str2; Kör programmet och observera att texten i str2 nu har bytts mot språket C++. Om innehållet i en sträng ska bytas används funktionen strcpy(). Uppgift 4, Uppgift 5 4. Inmatning av strängar Vi ska mata in textsträngar från tangentbordet i det här avsnittet. Skapa ett projekt, Ex04_04, och lägg in följande kod i cpp-filen: // Ex04_04. Inmatning av textsträngar #include <iostream> #include <conio.h> using namespace std; #include <svtecken.h> int main() teckenbyt(); char str[35]; cout << \nmata in en textsträng: ; cin >> str; cout << \ndu matade in strängen: << str; cout << \n\n\n ; cout << Tryck tangent ; getch(); return 0; Kör programmet. Prova att mata in strängen: Jag gillar att programmera i C++ Som du märker går det inget vidare. Det är endast första ordet som lagras i str. Inläsningen 58

7 fungerar endast fram till mellanslaget, som är ett vitt tecken. Ett annat vitt tecken är returtryckningstecknet 13. När inläsningen stöter på ett sådant tecken avbryts den. Byt ut mittraderna mot följande: char str[35]; cout << \nmata in en textsträng: ; cin.getline(str, sizeof(str)); cout << \ndu matade in strängen: << str; Kör programmet igen. Mata in strängen: Jag gillar att programmera i C++ och konstatera att det nu fungerar utmärkt. För att visa de problem, som kan uppkomma, ska vi läsa in en sträng, som är för lång, och sedan fortsätta att läsa in ännu en sträng. Lägg in följande efter den föregående koden: cout << \n\n\nmata in en ny textsträng: ; cin.getline(str, sizeof(str)); cout << \ndu matade in strängen: << str; Kör programmet och mata in strängen: Jag gillar verkligen att programmera i C++ Nu fungerar det inte eftersom strängen är för lång. Den är längre än 34 tecken. Men sedan blir det verkligen kris, som du ser. Inmatning av nästa sträng misslyckas helt. Det första felet får alltså följdverkningar. Byt ut mittraderna mot dessa istället: char str[35]; cout << \nmata in en textsträng: ; cin.get(str, sizeof(str)); cin.ignore(1000,'\n'); cout << \ndu matade in strängen: << str; cout << \n\n\nmata in en ny textsträng: ; cin.get(str, sizeof(str)); cin.ignore(1000,'\n'); cout << \ndu matade in strängen: << str; Kör programmet och mata först in Jag gillar verkligen att programmera i C++ och i andra inmatningen den kortare strängen Jag gillar att programmera i C++. Andra gången fungerar nu eftersom det inte blir några följdverkningar av att strängen första gången var för lång. Vid inmatning av strängar från tangentbordet bör cin.get() användas istället för funktionen cin.getline(). Dessutom bör cin.get() följas av cin.ignore(1000,'\n'); Inuti parentesen i cin.get() anges namnet på den sträng, som ska lagra texten, och därefter strängens längd. Lämpligt är att använda sizeof() enligt koden i exemplet. Returtryckningstecknet \n finns då kvar i inmatningsbufferten och möjliggör användning av cin.ignore() för att rensa bufferten. Vanligt är att ange 1000,'\n' i parentesen. Det betyder att högst 1000 tecken fram t o m returtryckningstecknet kommer att hoppas över vid nästa inläsning. Eftersom bufferten sällan innehåller så många tecken fungerar det alltid i praktiken. Bufferten töms och är redo för ny inmatning. Men finns inget \n i bufferten sker heller ingen tömning. Funktionen cin.ignore() kan inte användas efter cin.getline(), eftersom även tecknet \n placeras i strängvariabeln och alltså inte ligger kvar i inmatningsbufferten. Funktionen sizeof() ger storleken på en variabel. För att ta reda på hur många tecken, som får plats i en sträng, subtraherar man 1 från det värde som sizeof() ger. Men naturligtvis är inte det värde som sizeof() ger detsamma som strängens verkliga längd. För att enkelt ta reda på strängens längd används funktionen strlen(). 59

8 Lägg in följande kod efter den föregående för att prova: cout << \n\n\nden sist inmatade strängen är << strlen(str) << tecken lång men plats finns för << sizeof(str)-1 << tecken. ; Kör programmet. Nu skrivs strängens längd ut med strlen(), och sizeof() används för att skriva ut hur stort utrymme som finns i strängen. Uppgift 6 5. Kopiering och sammankoppling av strängar För att kopiera en sträng till en annan används funktionen strcpy(), som vi redan använt oss av. Om endast ett visst antal tecken ska kopieras används istället strncpy(), som kopierar det antal tecken, som anges, till den mottagande strängen. Vi ger exempel i nedanstående kod där också funktionen strcat() används. Med strcat() sätter man samman strängar, två i taget. Lägg in följande kod i cpp-filen: // Ex05_04. Kopiering och sammansättning av strängar #include <iostream> #include <conio.h> using namespace std; #include <svtecken.h> int main() teckenbyt(); char str[]= Kaj-Göran är förnamnet., fornamn[10], efternamn[]= Klang, namn[20]= ; cout << endl << str << \n\nefternamn: << efternamn; strncpy(fornamn, str, 9); fornamn[9]='\0'; cout << \n\nförnamnet kopierat med strncpy: << fornamn; strcat(namn, fornamn); strcat(namn, ); strcat(namn, efternamn); cout << \n\nhela namnet sammansatt med strcat: << namn; cout << \n\n\n ; cout << Tryck tangent ; getch(); return 0; Kör programmet och studera koden. Förnamnet kopieras till fornamn med strncpy(), som kopierar över de nio första tecknen i str. Men fornamn måste avslutas med ett nolltecken. Det sker genom att skriva in ett nolltecken som tecken nr 10. Tecknen i strängar numreras alltså från 0 och uppåt: 0, 1, 2 etc. Det första tecknet i fornamn är K, som är tecken 0, det andra är a, som är tecken 1 etc. Strängen namn sätts sedan 60

9 samman av fornamn, ett tomtecken (mellanslag) och efternamn. Det sker genom att variabeln namn, som är tom från början, först sätts samman med fornamn med strcat(). Sedan sätts namn ihop med ett tomtecken och slutligen kopplas även efternamn till. Strängar måste sättas samman med strcat() två i taget. Finns behov kan strncat() användas istället. Då kan ett visst antal tecken från en sträng adderas till en annan sträng, liksom vid kopiering med strncpy(). För att få reda på hur lång en sträng är används som vi berättat tidigare - funktionen strlen(). Lägg till följande kod: cout << \n\nnamnets längd: << strlen(namn) << tecken ; Kör programmet. Som du ser är strlen() väldigt behändig att använda. Tecknen i en sträng kommer man åt med indexering. Vi avslutar detta avsnitt med att ta fram tecknen i strängen namn, ett efter ett, och skriver ut dem. Lägg in följande kod efter den föregående: cout << \n\ntecknen i namnet: ; for (int j=0; j<strlen(namn); j++) cout << ' ' << namn[j]; Kör programmet och se hur fint det fungerar. I Builder ges en varning: Comparing signed and unsigned values. Den varningen försvinner om konvertering till int görs före strlen(): cout << \n\ntecknen i namnet: ; for (int j=0; j<(int)strlen(namn); j++) cout << ' ' << namn[j]; Naturligtvis kan man strunta i varningen, men de utgör på något sätt en skönhetsfläck, som det känns skönt att ta bort. Uppgift 7, Uppgift 8 6. Jämförelse av strängar med strcmp() eller stricmp() Strängar kan ordnas i storleksordning genom att använda ASCII-koden för de olika tecknen som hjälp. Stängen Arne är mindre än Bertil eftersom A kommer före B i alfabetet. Arne är också mindre än arne eftersom det gemena a:et har ASCII-nummer 97, som kommer efter numret för A som är 65. Adolf är större än Adam eftersom o kommer efter (är större än) a i alfabetet. För att göra dessa jämförelser används funktionen strcmp(), som ger talet noll, om strängarna är lika och annars talet 1 eller -1. Se följande exempel: strcmp( Arne, Bertil ) ger talet 1, eftersom Arne är mindre än Bertil. strcmp( Bertil, Arne ) ger däremot talet 1, eftersom Bertil är större än Arne. strcmp( Arne, Arne ) ger talet 0 som resultat, eftersom två lika strängar jämförs. Skapa ett nytt projekt, Ex06_04, och lägg in följande kod i cpp-filen, Ex06.cpp: // Ex06_04. Ordning av strängar med strcmp() #include <iostream> 61

10 #include <conio.h> using namespace std; #include <svtecken.h> int main() teckenbyt(); char namn1[20]=, namn2[20], temp[20]; while (strcmp(namn1, )!=0) cout << \nmata in ett förnamn (Sluta - tryck enbart retur): ; cin.get(namn1,sizeof(namn1)).ignore(1000,'\n'); if (strcmp(namn1, )==0) break; cout << \nmata in ett förnamn till: ; cin.get(namn2,sizeof(namn2)).ignore(1000,'\n'); if (strcmp(namn1,namn2)>0) strcpy(temp,namn1); strcpy(namn1,namn2); strcpy(namn2,temp); if (strcmp(namn1,namn2)==0) cout << \ndet är samma namn två gånger\n\n ; else cout << \ni bokstavsordning: << namn1 << << namn2 << \n\n ; cout << \n ; return 0; Här används strcmp() för att avgöra vilket namn, som kommer först i bokstavsordning. Men observera att strcmp() inte ger rätt resultat med de svenska tecknen Å, Ä och Ö och å, ä och ö. Funktionen är gjord för tecknen i ASCII-koden. Exemplet visar också hur den tomma strängen, som fås genom tryck av enbart returtangenten, kan identifieras med strcmp(). I programmet avbryts inmatningen med tryck på enbart <Enter>. Det är ett enkelt och snyggt sätt att bryta while-loopen. Matas samma namn in båda gångerna skrivs texten Det är samma namn två gånger ut. Men om Arne och arne matas in ger jämförelsen att arne > Arne. Om man inte vill att versaler och gemener ska ha betydelse kan istället funktionen stricmp() användas. Funktionen stricmp() fungerar precis som strcmp(), men gör inte skillnad mellan stora och små bokstäver. Ändra i koden enligt nedan:... kod som tidigare cin.get(namn2,sizeof(namn2)).ignore(1000,'\n'); if (stricmp(namn1,namn2)>0) strcpy(temp,namn1); strcpy(namn1,namn2); strcpy(namn2,temp); if (stricmp(namn1,namn2)==0) cout << \ndet är samma namn två gånger\n\n ; else kod som tidigare... 62

11 Kör programmet och mata in samma namn ena gången med gemener, andra gånger med versaler. Som du ser gör inte stricmp() skillnad på dessa. Matas Arne och arne in säger programmet att det är samma namn, vilket det ju också är! Uppgift 9, Uppgift 10 Sammanfattning av kapitel 4: Vi har: arbetat vidare med teckenvariabler och skrivit ut ASCII-tabellen visat hur utskrift av tecken kan slumpas i console-fönstret visat hur textfärg kan ändras med funktionen setcolor() deklarerat och initierat textsträngar som är fält av tecken lärt oss att tecknen i en sträng kan läsas och ändras med hjälp av indexering lärt oss mata in textsträngar och att rensa bufferten efter inmatning visat hur strängar kopieras och sätts ihop använt strcmp() och stricmp() för att ordna strängar i bokstavsordning 63

12 64

13 Uppgifter: 1. Skriv ett program, som läser in tre tecken med getch() eller getche(), och sedan skriver ut tecknen efter varandra. 2. Skriv ett program där användaren trycker en liten (gemen) bokstav. Programmet ska sedan omvandla och skriva ut tecknet som stor bokstav (versal) istället. 3. Skriv ett program som slumpar två gemena bokstäver (a z) och sedan skriver ut dem i bokstavsordning genom att använda ASCII-tecknen. Programmet ska använda olika färger vid utskriften. Exempelvis kan tecknen skrivas med olika färger. 4. Deklarera fyra strängvariabler, flod1, flod2, flod3 och flod4. Ge dem värdena Lagan, Nissan och Ätran och Viskan. Använd variablerna för att skriva ut texten: Hallands floder heter Lagan, Nissan, Ätran och Viskan. 5. Skriv ett program där användaren ska mata in en sträng med ett eller flera a:n. Sedan ska alla bokstäver a bytas mot b. Slutligen ska programmet skriva ut den ändrade strängen. Ledning: För att avgöra strängens längd kan antalet tecken räknas. Tecknen i strängen är skiljt från nolltecknet utom på slutet. 6. Deklarera en strängvariabeln och låt användaren mata in en sträng. Ange i ledtexten att strängen får vara högst 15 tecken lång. Programmet ska sedan skriva ut strängen snett ned åt höger ungefär som visas nedan. Om strängen PROGRAMMERING matas in, ska utskriften bli: P R O G R A M M E R I N G 65

14 7. Skriv ett program där användaren matar in en textsträng, högst 20 tecken lång. Programmet ska sedan ändra strängen så att den istället lagras baklänges. Vid utskrift skrivs alltså texten baklänges. 8. Skriv ett program som frågar efter enhet, mappnamn, filnamn. Till slut ska programmet skriva ut sökvägen. I nedanstående exempel är det som matas in understruket: Mata in enhet: C Mata in mappnamn: Kap 4 Mata in filnamn: Min_fil Mata in suffix: cpp Sökväg: C:\Kap 4\Min_fil.cpp Obs: Tecknet \ (omvänt snedstreck, backslash) måste skrivas dubbelt eftersom det är ett s k excape-tecken. Ett escape-tecken förändrar betydelsen av det tecken som följer efter. Normalt betyder ju n bokstaven n, men om det föregås av escapetecknet \ (\n) betyder det ny rad. Ska accent och citattecken skrivas i en sträng måste dessa tecken också föregås av omvänt snedstreck \. 9. Ett palindrom är ett ord, som blir samma, om man läser från vänster till höger eller baklänges. Exempel är apa, girig och nitalarbralatin (ni talar bra latin). Skriv ett program där ett ord ska matas in, och programmet sedan kan avgöra, om det är fråga om ett palindrom eller inte. Gör programmet upprepningsbart. Om en tom sträng matas in, ska programmet avslutas. 10. Skriv ett program där tecknet X skrivs mitt på skärmen. X:et ska kunna styras med hjälp av piltangenterna och det ska inte vara möjligt att röra X:et utanför fönstret. Det innebär att kolumnen högst ska kunna vara 80 och raden högst 25. Styrtangenter, som piltangenterna, genererar två ASCII-koder varav det första är noll. Använd alltså getch() två gånger. Programmet ska avslutas med tryck på <Escape>. 66

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

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 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

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

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU01 (725G67) - Programmering i C++, grundkurs . TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler

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

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

4 Sammansatta datatyper

4 Sammansatta datatyper 4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara

Läs mer

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18 Programmering i C++ EDAF30 7.5 hp EDAF30 (Föreläsning 2) HT 2014 1 / 18 Tecken och texter char char ch = A ; teckenfält = strängar i C char str[] = "123"; standardklass i C++ string s = "C++"; EDAF30 (Föreläsning

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

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

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

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

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

Introduktionslaboration

Introduktionslaboration TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt

Läs mer

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline:

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

Föreläsning 11. Strängar

Föreläsning 11. Strängar Föreläsning 11 Strängar Dagens kluring void findmax(int v[], int length, int *pmax) int i;??=v[0]; for(i=1;i< length;i++) if(v[i]>??)??=v[i]; int main() int a[]=1,2,3,4,2; int max; hittamax(a,5,???); printf(

Läs mer

Tecken & Strängar. Kapitel 7

Tecken & Strängar. Kapitel 7 Tecken & Strängar Kapitel 7 Datatypen char Alla tecken i teckenuppsättningen Synliga och andra ASCII American Standard Code for Information Interchange Numera 256 tecken (8 bitar (2 8 ) numreras 0..255)

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

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

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

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

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar STRÄNGAR En av de mest avancerade av de normala datatyperna är. Här skall vi grundläggande gå igenom hur den datatypen fungerar och vidare flertalet funktioner som hör till datatypen. Låt oss kasta oss

Läs mer

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011, Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1 Tisdagen den 7 juni 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 inom C programmering.

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

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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade

Läs mer

Kap 6: Lista, stack och kö

Kap 6: Lista, stack och kö Kap 6: Lista, stack och kö Vi har använt vector en hel del i boken. Det finns andra liknande konstruktioner, som också har tillkommit under senare år. I det här kapitlet ska vi lära oss använda: list,

Läs mer

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

Föreläsning 1: Momstabellen i C++ 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.

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

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

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

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

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

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

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= Nils; // längd = 5 bytes Tecken EDAF30 Programmering i C++ 2. Tecken och texter char char ch = A ; Sven Gestegård Robertz Datavetenskap, LTH 2015 sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char c1, c2; c1 = A ; c2

Läs mer

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion

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

Strängar. Strängar (forts.)

Strängar. Strängar (forts.) Strängar En sträng i C är helt enkelt en array av char: char namn[20]; För att få strängar att bete sig som om de vore av dynamisk längd markeras strängens slut med null-tecknet \0 : J o z e f S w i a

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

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

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

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

Läs mer

PROGRAMMERING A C++ GOTOXY, TEXTCOLOR och GRAPHICS.h. Kompendium med lektionsanteckningar och övningsuppgifter. Stefan Sundin

PROGRAMMERING A C++ GOTOXY, TEXTCOLOR och GRAPHICS.h. Kompendium med lektionsanteckningar och övningsuppgifter. Stefan Sundin PROGRAMMERING A C++ DEL 2 av 2. GOTOXY, TEXTCOLOR och GRAPHICS.h Kompendium med lektionsanteckningar och övningsuppgifter Stefan Sundin Torsbergsgymnasiet Bollnäs GOTOXY och TEXTCOLOR Att styra färg och

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

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33 Programmering i C++ EDA623 Typer EDA623 (Föreläsning 4) HT 2013 1 / 33 Typer Innehåll Heltalstyper Flyttalstyper Pekare Minnesallokering Funktionspekare Typdeklarationer med typedef Typomvandlingar (casting)

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

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

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

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

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

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

Datorövningar. Grunderna i C/C++

Datorövningar. Grunderna i C/C++ Datorövningar Grunderna i C/C++ övning 1 Innehåll: Editering, kompilering, länkning och exekvering av C++-program. Något om funktioner/procedurer. 1. Ett program är ett antal rader text som beskriver lösningen

Läs mer

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar. Vad har vi lärt oss så här långt Vad är en sträng Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar. Matriser av strängar. Sortering av strängar. Vad har vi lärt oss i dag Literals

Läs mer

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

Uppgifter till praktiska tentan, del A. (7 / 27) Uppgifter till praktiska tentan, del A. (7 / 27) I. Sortering/Sökning: III II. Representation/Omvandling/format/protokoll: II III. Strukturering: II I alla problem, där bokstäver förekommer, antar vi att

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

[] Arrayer = Indexerad variabel

[] Arrayer = Indexerad variabel [] Arrayer = Indexerad variabel Lagra många värden i en variabel Jmfr inom matematiken, variabler x 0, x 1, x 2, I detta dokument tas upp hur man skapar och hanterar sådana variabler i java. Dessa kallas

Läs mer

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3 Loopar och datatyper Föreläsning 3 Dagens kluringar int x; printf("ange x:"); scanf("%d",&x); if(/*fyll i kod*/) printf("du angav x mellan 7 och 14"); int i=0; if(i++) i++; printf("%d",i++); //vad skrivs

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

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3 Loopar och datatyper Föreläsning 3 Dagens kluringar int x; printf("ange x:"); scanf("%d",&x); if(/*fyll i kod*/) printf("du angav x mellan 7 och 14"); int i=0; if(i++) i++; printf("%d",i++); //vad skrivs

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

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

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH UMEÅ UNIVERSITET Datavetenskap Marie Nordström 071207 TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH DATORSYSTEM/GRÄNSSNITT, 7.5HP. (5DV074/5DV075) Datum : 071207 Tid : 3 timmar Hjälpmedel : Allt.

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

Läs mer

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är

Läs mer

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Introduktion till programmering SMD180. Föreläsning 7: Strängar Introduktion till programmering Föreläsning 7: Strängar 1 1 En sammansatt datatyp En sträng är ett enhetligt värde, som kan lagras i variabler och fungera som operand eller funktionsargument en datastruktur

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

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

Chapter 3: Using Classes and Objects

Chapter 3: Using Classes and Objects Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop

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

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

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de

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

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

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13) 85/2=42 OBS! Heltal 1 (13) Inmatning och formaterad utmatning 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

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

2 Pekare och dynamiska variabler.

2 Pekare och dynamiska variabler. 2 Pekare och dynamiska variabler. När man definierar en variabel reserverar man samtidigt minne för variabelns värde. Detta minnesutrymme kommer man sedan åt med hjälp av variabelns namn. Definierar man

Läs mer

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. 1(9) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Fr 28/1 och kan då hämtas på

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs . TDIU01 - Programmering i C++, grundkurs Datalagring - poster och vektorer Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Poster 2/17 struct Book string title; string author; int pages; ;

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

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

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

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 ges för: Tentamensdatum: Tid:

Tentamen ges för: Tentamensdatum: Tid: Programmering E 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Tentamen TE081B El2 Tentamensdatum: 2012-04-13 Tid: 900 1300 Hjälpmedel: Kursbok Kelley, Pohl: A Book on C, Fourth Edition Tillåtet

Läs mer

Tentamen i. Programmering i språket C

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

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Denna tenta kommer att vara färdigrättad Fr 14/1 och kan då hämtas på mitt tjänsterum,

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

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

Inledande programmering med C# (1DV402) Summera med while"-satsen

Inledande programmering med C# (1DV402) Summera med while-satsen Summera med while"-satsen Upphovsrätt för detta verk Inledande programmering med C# (1DV402) Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får

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

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

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

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram Programmeringsteknisk översiktskurs för yrkeshögskoleprogram Föreläsning 12 Våren 2005 Innehåll Palindrom Hur man hittar fel i program, debuggning Felhantering, hur man förhindrar program att krascha Ev.

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

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

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

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor 732G11 Linköpings universitet 2011-02-01 1 2 3 Strukturdiagram Strukturdiagram används för att visa hur ett program fungerar. Man kan se alla val och upprepningar som sker i programmet. Består av tre (!)

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