9789144114583

Page 1

C frรฅn bรถrjan

Jan Skansholm


Kopieringsförbud Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och studenters begränsade rätt att kopiera för undervisningsändamål enligt Bonus Copyright Access kopieringsavtal är förbjuden. För information om avtalet hänvisas till utbildningsanordnarens huvudman eller Bonus Copyright Access . Vid utgivning av detta verk som e-bok, är e-boken kopieringsskyddad. Den som bryter mot lagen om upphovsrätt kan åtalas av allmän åklagare och dömas till böter eller fängelse i upp till två år samt bli skyldig att erlägga ersättning till upphovsman eller rättsinnehavare. Studentlitteratur har både digital och traditionell bokutgivning. Studentlitteraturs trycksaker är miljöanpassade, både när det gäller papper och tryckprocess.

Art.nr 39314 ISBN 978-91-44-11458-3 Upplaga 1:1 © Författaren och Studentlitteratur 2016 www.studentlitteratur.se Studentlitteratur AB, Lund

Omslagslayout: Jens Martin Signalera Omslagsidé: Adam Dahlstedt, Addstudio Kapitelbilder: Shutterstock Printed by Specialtrykkeriet A/S, Denmark 2016


Innehåll Förord 1 1 Att komma igång 5 1.1 1.2 1.3 1.4

Vad är en dator? 5 Vad är ett program? 7 Vad är C? 9 Hur får man in programmet i datorn? 10 1.4.1 Redigering av programtexten 11 1.4.2 Kompilering 12 1.4.3 Länkning och exekvering 14 1.5 Det första programmet 16 1.6 Anpassning av kommandofönstret 20 1.7 Redigering av programtexten 22 1.8 Kommentarer 23 1.9 Sammanfattning 24 1.10 Programmeringsuppgifter 25

2 Att räkna 27 2.1 Variabler 27 2.1.1 Tilldelningar 28 2.1.2 Variabeldeklarationer 29 2.1.3 Inläsning och utskrift av variabler av typen int 30 2.1.4 Ett enkelt programexempel 31 2.1.5 Initieringar 33 2.2 Aritmetiska typer 34 2.3 Konstanter 37 2.4 Utskrift med printf 40 2.5 Inläsning med scanf 43 2.6 Uttryck 45 2.7 Aritmetiska typomvandlingar 49 2.8 Inkluderingsfilen math.h 50 2.9 Fel vid kompilering 52 2.10 Sammanfattning 56 2.11 Programmeringsuppgifter 56

3 Att välja 59 3.1 if-satsen 59 © Författaren och Studentlitteratur

i


Innehåll

3.2 3.3 3.4 3.5 3.6 3.7

Nästlade if-satser 63 Logiska uttryck 65 switch-satsen 69 Villkorsoperatorn 71 Sammanfattning 72 Programmeringsuppgifter 72

4 Att upprepa 75 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

while-satsen 75 break-satsen 78 for-satsen 81 Operatorerna ++ och -- 85 Sammansatta tilldelningar 87 do-satsen 87 Nästlade repetitionssatser 88 Sammanfattning 90 Programmeringsuppgifter 90

5 Algoritmer 93 5.1 5.2 5.3 5.4 5.5 5.6

Pseudokod och strukturdiagram 93 Kontrollstrukturer 95 Stegvis förfining 95 Ett exempel 96 Sammanfattning 99 Programmeringsuppgifter 99

6 Funktioner 101 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8

Definitioner av funktioner 101 Anrop av funktioner 103 Lokala variabler 107 Funktioner som returnerar sanningsvärden 113 Funktioner utan returvärde 115 Funktionsdeklarationer 117 Sammanfattning 120 Programmeringsuppgifter 120

7 Att sätta samman 125 7.1 7.2 7.3 7.4 7.5 ii

Egna inkluderingsfiler 125 Funktionsbibliotek 128 Externa och statiska funktioner 130 Synlighetsområde för variabler 134 Externa och statiska variabler 137 © Författaren och Studentlitteratur


Innehåll

7.6 7.7 7.8 7.9

Livslängd för variabler 141 Ett exempel 143 Sammanfattning 146 Programmeringsuppgifter 146

8 Fält 149 8.1 8.2 8.3 8.4 8.5 8.6 8.7

Hur man skapar ett fält 149 Indexering 152 Tilldelningar 159 Jämförelser 161 Fält som parametrar 163 Exempel – Mandatfördelning 169 Flerdimensionella fält 171 8.7.1 Deklaration av flerdimensionella fält 172 8.7.2 Indexering i flerdimensionella fält 174 8.7.3 Flerdimensionella fält som funktionsparametrar 176 8.8 Sammanfattning 178 8.9 Programmeringsuppgifter 178

9 Att hantera text 183 9.1 Typen char 183 9.2 Att läsa och skriva enstaka tecken 188 9.3 Att testa och omvandla tecken 192 9.4 Teckenfält och textsträngar 193 9.5 Att läsa och skriva texter 196 9.6 Att tilldela texter 201 9.7 Att jämföra texter 205 9.8 Texter som parametrar 207 9.9 Sammanfattning 214 9.10 Programmeringsuppgifter 214

10 Textfiler 217 10.1 10.2 10.3 10.4 10.5 10.6

Strömmar och filer 217 Att öppna filer 219 Att läsa och skriva strömmar 224 Att ändra i en fil 231 Sammanfattning 236 Programmeringsuppgifter 236

11 Pekare 239 11.1 Primärminnesadresser 239 11.2 Pekarvariabler 240 © Författaren och Studentlitteratur

iii


Innehåll

11.3 Pekare som parametrar 244 11.4 Pekare och fält 246 11.5 Pekare och textsträngar 250 11.6 Fält med pekare 254 11.7 Komplicerade deklarationer — typedef 260 11.8 Typen void 262 11.9 Minnesallokering 263 11.10 Vanliga misstag 266 11.11 Pekare till funktioner 268 11.12 Sammanfattning 275 11.13 Programmeringsuppgifter 275

12 Strukturer 279 12.1 Definition av strukturer 279 12.2 Hur man skapar strukturvariabler 281 12.3 Hur man kommer åt medlemmar 286 12.4 Pekare till strukturvariabler 289 12.5 Pekare till strukturvariabler som parametrar 292 12.6 Pekare som medlemmar 295 12.7 Fält med strukturvariabler 301 12.8 Lagring av strukturvariabler i binärfiler 305 12.9 Sammanfattning 309 12.10 Programmeringsuppgifter 310

13 Sökning och sortering 313 13.1 13.2 13.3 13.4 13.5 13.6 13.7

Rak sökning 313 Sortering 316 Alfabetisk sortering 324 Binärsökning 326 Standardfunktioner för sökning och sortering 332 Sammanfattning 336 Programmeringsuppgifter 336

14 Listor 339 14.1 Yttre egenskaper 340 14.1.1 Listor i allmänhet 340 14.1.2 Köer 340 14.1.3 Stackar 341 14.2 Att använda abstrakta datatyper 341 14.3 Implementering med fält 347 14.4 Implementering med länkad lista 351 14.5 Implementering med dubbellänkad lista 354 iv

© Författaren och Studentlitteratur


Innehåll

14.6 Sammanfattning 362 14.7 Programmeringsuppgifter 362

15 De sista pusselbitarna 365 15.1 15.2 15.3 15.4 15.5 15.6

Rekursiva funktioner 365 Uppräkningstyper – enum 371 Bit-operatorer 377 Unioner 380 Bit-fält 383 Kontakt med hårdvaran 384 15.6.1 Minnesadresser 385 15.6.2 Avbrottshantering 387 15.6.3 Assembler i C-kod 389 15.7 Sammanfattning 391 15.8 Programmeringsuppgifter 391

Appendix A Reserverade ord och operatorer 393 Appendix B LATIN_1-koder 395 Appendix C Funktionen printf 397 Appendix D Funktionen scanf 399 Sakregister 401

© Författaren och Studentlitteratur

v



3 Att välja Nu vet du hur man läser in data till ett program, gör enkla beräkningar och visar resultatet. Men de program du sett hittills har alla en stor begränsning: De värden som räknas ut måste kunna uttryckas med hjälp av en formel av något slag. I praktiken är det mer komplicerat än så. Ett program måste t.ex. ibland välja olika alternativ vid en beräkning och ibland vill man kunna göra flera beräkningar i följd. Dessutom är det inte alltid så att ett program bara har till uppgift att räkna ut ett eller flera resultat. Det kan vara mycket mer komplicerat. (Tänk t.ex. på vad en texteditor eller ett e-post-program gör.) I mer generella program räcker det inte med att bara räkna upp ett antal satser som skall utföras i tur och ordning. Man måste ha bättre möjligheter att styra i vilken ordning de olika satserna skall utföras. Det visar sig att man måste kunna välja mellan olika alternativ. Man måste också kunna upprepa ett antal satser. I detta kapitel får du se hur man använder s.k. if-satser för att utföra val. I samband med detta diskuteras också logiska uttryck, uttryck som kan vara sanna eller falska. Hur man upprepar satser kommer att beskrivas i nästa kapitel.

3.1

if-satsen

När man skall välja mellan olika vägar i ett program använder man för det mesta en if-sats. Denna sats kan se ut på lite olika sätt. Den enklaste versionen har formen if (logiskt uttryck) sats;

Innanför parenteserna skall det stå ett s.k. logiskt uttryck, ett uttryck som kan vara sant eller falskt. På andra raden kan det stå en sats, vilken som helst. Om uttrycket är sant utförs satsen, annars hoppas den över. I båda fallen fortsätter sedan exekveringen med nästa sats som kommer efter if-satsen. Här kommer ett exempel: Antag att man i variabeln temp har räknat ut temperaturen i rummet. Om temperaturen visar sig vara lägre än 18 grader vill man uppmana användaren av programmet att sätta på värmeelementet. Man kan då skriva följande programrader: © Författaren och Studentlitteratur

59


3 Att välja if (temp < 18) printf("Sätt på värmen!"); // här fortsätter programmet alltid

Ytterligare ett exempel visas här. Antag att man i en idrottstävling har uppmätt två tider och läst in dem till variablerna t1 och t2 som båda har typen double. Man vill få reda på hur stor skillnaden är mellan tiderna och skriver därför följande programrader: double d = t1 - t2; if (d < 0) d = -d; printf("Tidsskillnad: %.2f sek", d);

Man beräknar skillnaden mellan tiderna och sparar den i en ny variabel med namnet d. Om t2 är större än t1 kommer d att innehålla ett negativt värde, men man vill att tidsskillnaden skall anges som ett positivt värde i utskriften. Om man vill utföra mer än en enda sats måste man använda klamrar: if (logiskt uttryck) { satsA; satsB; ... }

Man brukar ofta som här sätta vänsterklammern sist på raden för att undvika en nästan tom rad. Även om man bara har en sats kan man sätta ut klamrar för att göra programmet tydligare. I följande exempel skall programmet både ge ifrån sig ett varningsljud och skriva ett varningsmeddelande när temperaturen är för låg. if (temp < 18) { printf("\a"); printf("Sätt på värmen!"); }

(Man "skriver ut" alarmatecknet \a. Se Övning 1.8 på sidan 20.) I det logiska uttryck som skall stå innanför parenteserna i en if-sats kan man använda följande vanliga jämförelseoperatorer: <

60

<=

>

>=

==

!=

© Författaren och Studentlitteratur


3.1 if-satsen De står för mindre än, mindre än eller lika med, större än, större än eller lika med, lika med respektive icke lika med. Observera att lika med skrivs med två likhetstecken == eftersom enkelt likhetstecken = används för att beteckna tilldelning. Man kan ha mer komplicerade logiska uttryck. Detta kommer att diskuteras i avsnitt 3.3.

Övning 3.1 Skriv ett program som beräknar kostnaden för att ringa med en enkel mobiltelefon. Programmet skall läsa in det beräknade antalet minuter man ringer per månad samt kostnaden per minut. Antag att man får 10 % rabatt om man ringer för minst 1 000 kr. I den enkla version av if-satsen som du sett hittills kan man välja mellan att utföra en viss sats eller att inte utföra den. Men det är kanske vanligare att man har situationer där man har två satser och vill välja att utföra antingen den ena eller den andra. Då har man nytta av en ifsats med else-del. Den enklaste versionen har formen if (logiskt uttryck) sats1; else sats2;

Om det logiska uttrycket är sant utförs sats1 och om det är falskt sats2. Man kan alltså aldrig utföra både sats1 och sats2. Här kommer ett exempel där man skall visa priset för en charterresa: Priset för vuxna är 4 295 kr och för barn 3 145 kr. Som barn räknas alla som är under 12 år. Resenärens ålder läses in till variabeln alder. printf("Hur gammal är du? "); int alder, pris; scanf("%d", &alder); if (alder < 12) pris = 3145; else pris = 4295; printf("Pris: %d kr", pris);

Lägg märke till att de villkorliga satserna efter if eller else dragits in en bit på raden så att man tydligt ser hur programmet är uppbyggt. I det sista exemplet ser man t.ex. tydligt att satsen på den sista raden inte är villkorlig, utan alltid kommer att utföras. © Författaren och Studentlitteratur

61


3 Att välja if-sats, olika forme if (logiskt uttryck) { sats;

if (logiskt uttryck) { en eller flera satser }

if (logiskt uttryck) sats; else sats;

if (logiskt uttryck) sats; else { en eller flera satser }

if (logiskt uttryck) { en eller flera satser } else { en eller flera satser }

if (logiskt uttryck) { en eller flera satser } else sats;

Om man har flera satser som skall utföras villkorligt efter else måste man ha klamrar, precis som när man har flera satser efter if. De olika former som kan förekomma visas i faktarutan. Värt att observera är att om du har flera satser i if-delen och därför använder klamrar runt dessa, skall du inte ha något semikolon före else. Du skall däremot ha ett semikolon framför else om du inte har några klamrar i if-delen. if (alder < 12) { printf("Du får barnrabatt\n"); pris = 3145; } else { printf("Vuxenpris\n"); pris = 4295; } printf("Pris: %d kr", pris);

Övning 3.2 På ett gym kan man antingen köpa ett årskort eller köpa en biljett vid varje besök. Skriv ett program som läser in priset för ett årskort, priset för en biljett samt antalet gånger man planerar att besöka gymmet under ett år. Därefter skall programmet ange om det lönar sig att köpa årskort eller inte.

62

© Författaren och Studentlitteratur


3.2 Nästlade if-satser

3.2 Nästlade if-satser Den sats som skall stå i if-delen eller else-delen av en if-sats kan vara vilken sorts sats som helst. Den kan alltså mycket väl vara en annan ifsats. Man säger då att man har nästlade if-satser. Studera följande exempel: if (temp < 18) if (temp < 10) printf("Sätt på värmen och jackan"); else printf("Sätt på värmen");

Den yttersta if-satsen är en enkel if-sats utan else-del. I dess if-del finns en enda sats, vilken är en ny if-sats. Den inre if-satsen har en else-del. Att else-delen hör till den inre if-satsen beror på att en else-del alltid hör ihop med den if-del som är närmast. Det är viktigt att man drar in texten på rätt sätt så att detta syns. Här följer ytterligare ett exempel, men denna gång finns det en inre ifsats i else-delen av den yttre satsen: if (temp < 18) printf("Sätt på värmen"); else if (temp > 22) printf("Stäng av värmen");

I en if-sats kan man välja mellan två alternativ, men det händer ofta att man har flera alternativ att välja mellan; man har en flervalssituation. Ta t.ex. exemplet med priset på charterresan från förra avsnittet. Där kostade resan 4 295 kr för vuxna och 3 145 kr för barn under 12 år. Den if-sats som räknade ut priset såg ut på följande sätt if (alder < 12) pris = 3145; else pris = 4295; printf("Pris: %d kr", pris);

Antag nu att pensionärer, personer som är 65 år eller äldre, får 500 kr i rabatt. Man kan då skriva om if-satsen:

© Författaren och Studentlitteratur

63


3 Att välja if (alder < 12) pris = 3145; else if (alder < 65) pris = 4295; else pris = 3795; printf("Pris: %d kr", pris);

Här ser du att det finns en inre if-sats i else-delen av den yttre if-satsen, men detta är egentligen en flervalssituation. Man har tre alternativ att välja mellan. När det är fråga om flervalssituationer brukar man ofta indentera texten (dra in den) på ett annorlunda sätt för att poängtera att det är fråga om flera likvärdiga alternativ. Man skriver istället if-satsen på följande sätt: if (alder < 12) pris = 3145; else if (alder < 65) pris = 4295; else pris = 3795; printf("Pris: %d kr",

// alternativ 1, barn // alternativ 2, vuxen // alternativ 3, pensionär pris);

Du ser att man då börjar den inre if-satsen på samma rad som else och att man drar in alla alternativen lika mycket. Fördelen med detta sätt att redigera programtexten är att det är lätt att generalisera till hur många alternativ som helst. Antag t.ex. att barn under 2 år åker gratis. if (alder < 2) pris = 0; else if (alder < 12) pris = 3145; else if (alder < 65) pris = 4295; else pris = 3795; printf("Pris: %d kr",

// alternativ 0, under 2 år // alternativ 1, barn // alternativ 2, vuxen // alternativ 3, pensionär pris);

Naturligtvis gäller samma regel som tidigare: Om man vill ha mer än en enda sats i en if-del eller en else-del, måste man använda klamrar:

64

© Författaren och Studentlitteratur


3.3 Logiska uttryck if (alder < 2) pris = 0; // alternativ 0, under 2 år else if (alder < 12) { pris = 3145; // alternativ 1, barn printf("Välkommen till barnklubben\n" ); } else if (alder < 65) pris = 4295; // alternativ 2, vuxen else pris = 3795; // alternativ 3, pensionär printf("Pris: %d kr", pris);

Övning 3.3 På ett matteprov kunde man få högst 50 poäng. Gränsen för betyget E var 25 poäng och för betygen D, C, B och A 30, 35, 40 respektive 45 poäng. Skriv ett program som läser in poängen för en elev och som visar vilket betyg hon eller han fick på provet.

3.3 Logiska uttryck I avsnitt 2.6 fick du lära dig att varje numeriskt uttryck alltid har ett visst värde och en viss typ. Detta gäller inte bara numeriska uttryck. Alla uttryck i C har ett visst värde och en viss typ. I en if-sats skall det innanför parenteserna stå ett uttryck som kan vara sant eller falskt. Ett sådant uttryck kallas ett logiskt uttryck. Detta uttryck skall vara, eller kunna omvandlas till, ett heltalsvärde. Värdet 0 betraktas som falskt och alla andra värden som sant. Traditionellt i C har det gällt att ett logiskt värde skall ha typen int, men från och med standarden C99 finns en inbyggd heltalstyp med namnet _Bool som kan användas istället1. Om man använder de vanliga jämförelseoperatorerna <, > etc., bildas uttryck av typen int. Värdet blir 1 om uttrycket är sant och 0 annars. Här följer några exempel på jämförelseuttryck. a > b

antal == 36

y >= 2.5

n != 0

1

I standarden C11 finns också en inkluderingsfil med namnet stdbool.h. Om man inkluderar denna fil kan man i programmet använda typen bool samt de två orden false och true vilka har värdena 0 och 1. © Författaren och Studentlitteratur

65


3 Att välja

Jämförelseoperatorer == !=

lika med icke lika med

< <=

mindre än mindre än el. lika med

> >=

större än större än el. lika med

Här måste utfärdas en varning för ett av de vanligaste felen man kan göra. Studera följande programrader. Vilken utskrift tror du man får? int k = 0; if (k = 0) printf("k är noll"); else printf("k är inte noll");

Eftersom variabel k uppenbarligen har värdet 0 blir man kanske överraskad när man får utskriften k är inte noll

Anledningen till detta är att man skrivit k = 0, istället för k == 0. Uttrycket k = 0 är en tilldelning, inte en jämförelse. Det innebär att k tilldelas värdet 0. I C betraktas tilldelningar som uttryck och uttryck har alltid ett värde. Värdet av ett tilldelningsuttryck är det nya värde variabeln får. Här är alltså värdet av uttrycket k = 0 lika med 0. Men värdet 0 betraktas ju som falskt. Därför hamnar man i else-delen. Förutom jämförelseoperatorerna finns det tre operatorer som man kan använda för att bilda mer komplicerade logiska uttryck. Det är operatorerna &&, || och ! vilka utför operationerna och, eller respektive icke. Dessa operatorer har operander som är logiska värden (dvs. av heltalstyp) och ger som resultat ett värde av typen int. För detaljer se faktarutan.

Logiska operatorer A && B

A || B

1 (sant) om både A och B är sanna, 0 (falskt) annars

1 (sant) om minst en av A eller B är sann, 0 (falskt) annars

! A

1 (sant) om A är falsk, 0 (falskt) annars

&& och || har lägre prioritet än jämförelseoperatorer ! har högre prioritet än aritmetiska operatorer och jämförelseoperatorer

66

© Författaren och Studentlitteratur


3.3 Logiska uttryck Här kommer några exempel: a > b && a < c

Detta uttryck är sant (dvs. 1) om a är större än b och a är mindre än c. n == 0 || n == 100

Detta uttryck är sant om n är lika med 0 eller n är lika med 100. !(n == 0 || n == 100)

Detta uttryck är sant om n inte är lika med 0 eller 100. Här ser du att man kan använda parenteser för att bilda deluttryck. I detta exempel beräknas deluttrycket innanför parenteserna först och sedan negeras resultatet eftersom operatorn ! står framför. Operatorerna && och || har lägre prioritet än operatorerna +, -, * och / och jämförelseoperatorerna <, > etc. Detta innebär att uttryck som i + j > k * l && m == n

tolkas som (i + j) > (k * l) && (m == n)

Operatorerna && och || beräknas från vänster till höger och beräkningen avslutas så fort det är möjligt. Det innebär att om den vänstra operanden till operatorn && blir falsk, beräknas aldrig den högra och om den vänstra operanden till operatorn || blir sann, beräknas aldrig den högra. Detta är ibland viktigt, som t.ex. i följande uttryck där man vill undvika att göra divisionen om variabeln k är lika med noll. k != 0 && n/k > 10

Som exempel på logiska uttryck visas ett program som undersöker om ett visst årtal är ett skottår eller inte. Följande regel gäller för skottår (i Sverige fr.o.m. år 1754): Skottår är sådana år som är jämnt delbara med 4, med undantag för sådana år som är jämnt delbara med 100. Dock är sådana år som är jämnt delbara med 400 skottår. #include <stdio.h> int main () { printf("Skriv ett årtal: "); int ar; scanf("%d", &ar); © Författaren och Studentlitteratur

67


3 Att välja if ((ar % 4 == 0 && ar % 100 != 0) || ar % 400 == 0) printf("Skottår"); else printf("Inte skottår"); }

Så här kan det se ut när man kör programmet. Skriv ett årtal: 2016 Skottår

Det är förstås det logiska uttrycket i if-satsen som är det intressanta i detta program. Där används operatorn % som ju ger resten vid heltalsdivision. Uttrycket ar % 4 ger t.ex. resten när man dividerar årtalet med 4. Om årtalet är jämnt delbart med 4 blir resten lika med noll. Om uttrycket ar % 100 inte är lika med noll, är årtalet inte jämnt delbart med 100. Deluttrycket (ar % 4 == 0 && ar % 100 != 0)

är alltså sant för sådana årtal som är jämnt delbara med 4, men inte med 100. För att ett år skall vara skottår måste antingen detta deluttryck vara sant eller så måste året vara jämnt delbart med 400. Det är därför det står || ar % 400 == 0 sist i det logiska uttrycket.

Övning 3.4 I Postnords anvisningar finns följande föreskrifter för hur stora och små vanliga brev får vara: Maximimått: Längd 600 mm, Tjocklek 100 mm, Bredd+längd+tjocklek högst 900 mm. Minimimått: Längd 140 mm, Bredd 90 mm.

Skriv ett program som läser in ett brevs längd, bredd och tjocklek och som undersöker om brevet har tillåtna mått eller inte. Programmet skall skriva ut texten Måtten OK eller Felaktiga mått. Precis som man kan deklarera variabler av de numeriska typerna kan man också deklarera variabler av typen _Bool: _Bool billig; _Bool barn;

Dessa variabler kan innehålla värdena 0 eller 1. Det går t.ex. att skriva

68

© Författaren och Studentlitteratur



Jan Skansholm är tekn. dr. och har under lång tid varit verksam som universitetslektor i datalogi vid Chalmers tekniska högskola och Göteborgs universitet. Han har mångårig erfarenhet av programmeringsundervisning och är författare till läroböcker om Java, C#, C, C++, Ada, Unix och X. Som exempel kan nämnas böckerna ”Java direkt med Swing” och ”Java – steg för steg”.

C från början C från början ger en introduktion till både C och programmeringsteknik. Många nyare språk, t.ex. Java, C++ och C# samt flera skriptspråk, har ärvt sina grundläggande konstruktioner från C, vilket gör språket till en utmärkt start oavsett vilket språk man senare kommer att fördjupa sig i. Boken presenterar även s.k. strukturer på ett sätt som gör att man enkelt kan överföra kunskaperna till ett objektorienterat synsätt senare. Dessutom får läsaren flertalet möjligheter till träning i hantverket programmering genom en mängd övningar och programmeringsuppgifter. C från början förutsätter inga tidigare kunskaper om programmering. Den börjar med de allra enklaste programkonstruktionerna, vilka sedan byggs på, bit för bit, med mer avancerade ting. Boken lär ut allt från enkla uttryck, satser och funktioner till avancerade konstruktioner, som abstrakta datatyper, filhantering och verktyg för maskinnära programmering. Läsaren ges en stabil och bred grund för fortsatta studier inom mer avancerad programmering och en ingång till många andra programspråk. Exempel på fortsättning med boken som grund är utveckling av objektorienterade program med grafiska användargränssnitt, maskinnära program i inbäddade system, eller appar för smartphones. C från början är lämplig som kurslitteratur i grundläggande programmeringskurser t.ex. för högskoleingenjörer, eller i gymnasiekursen Programmering 1. Den kan också användas som introduktion till de andra kurser som ingår i ämnet Programmering i gymnasieskolan.

Art.nr 39314

www.studentlitteratur.se


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.