Programmeren. 6e editie. Wallace Wang

Vergelijkbare documenten
Inhoud in vogelvlucht

Programmeren voor Dummies

Raspberry Pi VOOR KIDS. Richard Wentk

Inhoud. Inleiding 5. Project 1: EEN PROGRAMMEUR WORDEN 9. Project 2: de onderdelen voor je Robot verzamelen 33

Inhoud in vogelvlucht

Voordat je begint, lees je eerst deze bladzijden. Daarna weet je precies hoe je dit boek gebruikt.

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

van PSD naar JavaScript

SCRATCH GEVORDERDEN Inhoudsopgave

Een spoedcursus python

Informatie voor de leerkracht Introductie nieuw concept (pagina 1) Programmeren met Bomberbot (pagina 1)

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

het Officiële Boek Help je kinderen leren programmeren! Marina Umaschi Bers en Mitchel Resnick

Apps maken VOOR KIDS. Nadine Bergner Thiemo Leonhardt

WELKOM BIJ BOMBERBOT! LES 1: WAT IS PROGRAMMEREN LES 1: WAT IS PROGRAMMEREN WAAR GAAT DEZE LES OVER? INTRODUCTIE

WordPress. 2e editie. Lisa Sabin-Wilson

Voorwoord Zo maakte ik kennis met Evernote 9

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

BEGINNER JAVA Inhoudsopgave

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 Introductie Visual Steps 8 Wat heeft u nodig? 8 De website bij het boek 9 Hoe werkt u met dit boek?

Java Les 3 Theorie Herhaal structuren

Cursus Programmeren en Dataverwerking.

HTML 5: de basis. Michael Kuijpers

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 Introductie Visual Steps 8 Wat heeft u nodig? 8 Hoe werkt u met dit boek? 9 Uw voorkennis

Inhoud in vogelvlucht

TELEPORTEREN MET VARIABELEN

WAARSCHUWING. Als je wilt dat in je leven niets verbetert, leg dit boek dan NU weg. Het is niets voor jou. Koop een fles champagne en ga het vieren.

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

HTML & CSS DEEL 1. webdesign. Programmeren met CodeAcademy

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Bottleball Onderzoeksverslag MovingMonsters. Uitgevoerd door Arno Classens

PLUSLESSEN MAVO

Vakgroep CW KAHO Sint-Lieven

leerlingbrochure nld Door: Jolanthe Jansen

Ondernemerschapsblokkades

WAARSCHUWING. Als je wilt dat in je leven niets verbetert, leg dit boek dan NU weg. Het is niets voor jou. Koop een fles champagne en ga het vieren.

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

Blue-Bot ONDERWIJSGIDS

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

Ga naar en remix dit project.

Inleiding tot programmeren: Javascript

<NANO> Creeren met. <code> Bouw je eigen. website

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

111 super waardevolle quotes

Inhoud. Introductie tot de cursus

Whitepaper toegankelijke pdf

Inspirerend Presenteren

Een stop-motion film maken

Meer succes met je website

Figuren in Word. Vul de Wat weet ik al?-kaart in van les 7. Als je nog niet alles weet en kan, zoek het dan op in les 7.

Hoofdstuk 1 Wat zijn apps eigenlijk?

Hit the Ground Running INGEZET, WAT NU?

Inhoud in vogelvlucht

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Talentmeting in korte trajecten

2.4.4 LibreOffice Werkblad Mac

Leaflet Web Maps with qgis2leaf

Inhoudsopgave Voorwoord 11 Nieuwsbrief 11 Introductie Visual Steps 12 Wat heeft u nodig? 12 Uw voorkennis 13 Hoe werkt u met dit boek?

Module 2: Wat is Scratch?

1. Introductie. Windows RT en Windows 8. De Surface werkt met Windows RT, het besturingssysteem dat

Communicatie in het horecabedrijf. Waar gaat deze kaart over? Wat wordt er van je verwacht? Wat is communicatie?

Hele fijne feestdagen en een gezond en vrolijk 2017! Raymond Gruijs. BM Groep ARBO West Baanzinnig

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht

Microsoft Excel. It s all about Excel - VBA

Excel reader. Beginner Gemiddeld.

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

GELUK(T)! Editha Gerdingh

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Scratch in drie uur. Hallo, mijn naam is Minti Mint! Ik ga je uitleggen hoe je je eigen computerspel kunt maken. We gaan een racespel maken!

Hoe zou je dit vertellen aan iemand die er vandaag niet bij is? Leerlingen helpen om wiskunde te begrijpen: Vragen die: Ben je het er mee eens?

Cursusgids - Beginners lessen. Eerste druk November Digitaal Leerplein. Website: info@digitaalleerplein.

Een boek schrijven voor dummy s

Fable Aan de slag Bijgewerkt:

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 De website bij het boek 7 Introductie Visual Steps 8 Wat heeft u nodig? 8 Uw voorkennis 9 Bonushoofdstukken

De mbot Ranger. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten.

1. Kennismaken met Windows 10

Teksten op je WordPress site zetten of aanpassen

3. Zoeken naar informatie Surfen op internet met de app Internet Explorer Werken met

1 Introductie. Wat is een blog? Waarom is bloggen zo populair?

Dit werkt voor Mac, Windows en sommige versies van Linux. In de filmpjes gebruiken wij de versie in de browser.

Hoofdstuk 1. Introductie. Wat is icloud?

2. Navigeren over internet

Inhoudsopgave Voorwoord 11 Introductie Visual Steps 12 Nieuwsbrief 12 Wat heeft u nodig? 13 Hoe werkt u met dit boek? 13 Website 15 Toets uw kennis

VAN HET PROGRAMMEREN. Inleiding

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Opleidingscatalogus: Automatisering

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 Introductie Visual Steps 8 Wat heeft u nodig? 9 Hoe werkt u met dit boek? 10 Website 11 Voor docenten

Het hele scherm besturen

1.Noem de vijf categorieën waarin programmeertalen kunnen worden ingedeeld en geef van elke categorie één voorbeeld.

Fernando Halman CommunicateTour

Praktijkinstructie Tekstverwerking 1 (CSE12.1/CREBO:53139)

1. Open het programma KompoZer Het grote witte vlak is een nog lege webpagina. Deze gaan we nu van inhoud voorzien.

Ga naar en remix het spel.

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 Introductie Visual Steps 8 Wat heeft u nodig? 9 De website bij het boek 9 Hoe werkt u met dit boek?

Logo. De schildpad. Hoofdstuk 8 Grafische afbeeldingen met een schildpad

Microsoft WordPad Sinaleri Opleiding

Handleiding voor het gebruik van de community website van OBS t Padland

Hoofdstuk 23: Eenvoudig taken automatiseren met macro s

Transcriptie:

Programmeren 6e editie Wallace Wang Amersfoort, 2018

Inhoud in vogelvlucht Inleiding........................................................ 1 Deel 1: Een computer programmeren.............. 7 HOOFDSTUK 1: Beginnen met programmeren........................... 9 HOOFDSTUK 2: Alles over programmeertalen.......................... 19 HOOFDSTUK 3: Een programma schrijven............................. 39 HOOFDSTUK 4: De gereedschapskist van een computer programmeur.... 53 Deel 2: De bouwstenen van programma s........ 69 HOOFDSTUK 5: Aan de slag.......................................... 71 HOOFDSTUK 6: De structuur van een computer programma............. 79 HOOFDSTUK 7: Variabelen, constanten en commentaar................. 97 HOOFDSTUK 8: Getallen kraken en spelen met strings................. 111 HOOFDSTUK 9: Beslissingen, beslissingen.............................. 127 HOOFDSTUK 10: In herhaling vallen................................... 149 HOOFDSTUK 11: Een programma verdelen in subprogramma s.......... 165 HOOFDSTUK 12: Dingen opslaan in arrays............................. 183 HOOFDSTUK 13: Spelen met objectgeoriënteerd programmeren......... 199 Deel 3: Programmeren voor gevorderden....... 215 HOOFDSTUK 14: Zoek- en sorteeralgoritmen........................... 217 HOOFDSTUK 15: Programma s debuggen.............................. 243 HOOFDSTUK 16: Programmacode optimaliseren....................... 255 HOOFDSTUK 17: Een gebruiker s interface maken....................... 267 Deel 4: Programmeren voor internet en smartphones.................................. 283 HOOFDSTUK 18: Spelen met HTML.................................... 285 HOOFDSTUK 19: Interactieve webpagina s met Java en JavaScript......... 319 HOOFDSTUK 20: Mobiele apps maken................................. 333 Deel 5: Het deel van de tientallen................. 353 HOOFDSTUK 21: Meer dan tien nuttige bronnen voor programmeurs..... 355 HOOFDSTUK 22: Tien potentiële programmeer carrières................. 369 Bijlage A: Gangbare lus- en beslissings structuren 381 Bijlage B: Gratis compilers en interpreters......... 385 Bijlage C: Gebruikelijke programmeer termen.... 387 Index.......................................................... 395 Inhoud in vogelvlucht vii

Inhoud INLEIDING...1 DEEL 1: EEN COMPUTER PROGRAMMEREN........ 7 HOOFDSTUK 1: Beginnen met programmeren............... 9 Waarom zou je leren programmeren?...9 Hoe werkt een computerprogramma?... 13 Wat moet ik in huis hebben om te programmeren?... 17 HOOFDSTUK 2: Alles over programmeertalen.............. 19 Waarom zijn er zoveel programmeertalen?... 20 Welke programmeertaal kan ik nu het beste gaan leren?. 36 HOOFDSTUK 3: Een programma schrijven................... 39 Voordat je een programma gaat schrijven... 40 De technische details van programmeren... 43 De levenscyclus van een programma... 48 HOOFDSTUK 4: De gereedschapskist van een computer programmeur...................... 53 Programma s schrijven in een editor... 55 Een compiler of interpreter gebruiken... 56 Fouten verwijderen met een debugger... 61 Een Help-bestand schrijven... 65 Een installatieprogramma maken... 66 DEEL 2: DE BOUWSTENEN VAN PROGRAMMA S. 69 HOOFDSTUK 5: Aan de slag....................................... 71 BASIC leren... 72 C++ leren... 74 LiveCode leren... 77 HOOFDSTUK 6: De structuur van een computerprogramma...................................... 79 Een programma ontwerpen... 81 Verdeel en heers met subprogramma s... 89 HOOFDSTUK 7: Variabelen, constanten en commentaar. 97 Variabelen aanmaken... 98 Constanten... 106 Commentaar leveren... 107 HOOFDSTUK 8: Getallen kraken en spelen met strings.. 111 Optellen, aftrekken, vermenigvuldigen en delen... 111 Inhoud ix

De ingebouwde wiskundige functies gebruiken... 116 Strings bewerken... 119 Strings omzetten in getallen en vice versa... 122 HOOFDSTUK 9: Beslissingen, beslissingen................... 127 Booleaanse expressies... 128 Werken met IF-THEN-opdrachten... 136 IF-THEN-ELSE-opdrachten... 137 Meerkeuzevragen beantwoorden... 140 HOOFDSTUK 10: In herhaling vallen............................ 149 Lussen maken... 149 Een lus een vast aantal keren herhalen... 151 WHILE-lussen... 157 De UNTIL-lus... 159 Pas op voor eindeloze lussen......................... 161 HOOFDSTUK 11: Een programma verdelen in subprogramma s.............................. 165 Een subprogramma maken... 166 Subprogramma s toepassen... 172 Functies... 177 HOOFDSTUK 12: Dingen opslaan in arrays.................... 183 Een array aanmaken... 184 Dynamische arrays maken... 190 Meerdimensionale arrays... 195 HOOFDSTUK 13: Spelen met objectgeoriënteerd programmeren................................ 199 Inkapseling: het afschermen van gegevens... 200 Overerving: code hergebruiken... 206 Code aanpassen met polymorfisme... 210 DEEL 3: PROGRAMMEREN VOOR GEVORDERDEN................................ 215 HOOFDSTUK 14: Zoek- en sorteeralgoritmen................ 217 Sorteren door invoegen... 219 Bubble-sort... 222 Shell-sort... 226 Quicksort... 230 Het optimale sorteeralgoritme kiezen... 235 Zoekalgoritmen... 235 HOOFDSTUK 15: Programma s debuggen..................... 243 Fouten in soorten en maten... 244 Syntactische fouten... 245 Runtimefouten... 247 Semantische fouten... 249 x Programmeren voor Dummies, 6e editie

HOOFDSTUK 16: Programmacode optimaliseren........... 255 De juiste gegevensstructuur kiezen... 256 Het optimale algoritme selecteren... 256 De broncode verfijnen... 258 Een snellere taal gebruiken... 265 De compiler optimaliseren... 266 HOOFDSTUK 17: Een gebruiker s interface maken........... 267 Een venster ontwerpen... 268 Menu s toevoegen aan een venster... 271 Bedieningselementen toevoegen aan een venster... 274 DEEL 4: PROGRAMMEREN VOOR INTERNET EN SMARTPHONES................................ 283 HOOFDSTUK 18: Spelen met HTML............................. 285 De werking van HTML... 286 Opmaak definiëren met tags... 290 Attributen gebruiken bij tags... 293 Lijsten maken... 296 Hyperlinks maken... 300 Afbeeldingen gebruiken... 302 Een gebruikersinterface maken... 304 De stijl van webpagina s instellen met CSS... 313 HOOFDSTUK 19: Interactieve webpagina s met Java en JavaScript....................................... 319 De werking van JavaScript... 320 JavaScript-functies... 326 Tabbladen en vensters openen en sluiten... 329 De werking van Java-applets... 332 HOOFDSTUK 20: Mobiele apps maken......................... 333 De verschillende soorten mobiele apps... 334 Mobiele besturingssystemen... 336 Een webapp met database maken... 339 Met LiveCode een mobiele app maken... 349 DEEL 5: HET DEEL VAN DE TIENTALLEN........... 353 HOOFDSTUK 21: Meer dan tien nuttige bronnen voor programmeurs................................. 355 Windows-programma s ontwikkelen... 356 Macintosh-programma s ontwikkelen... 357 Linux-programma s ontwikkelen... 358 Met databasetalen werken... 358 Slim online inkopen... 361 Broncode in handen krijgen... 361 Inhoud xi

Zoek een gebruikersgroep van jouw favoriete programmeertaal... 363 Usenet-nieuwsgroepen... 363 Knutselen met een Raspberry Pi... 365 Een vechtrobot programmeren... 366 De speelgoeddoos weer uit de kast halen met Lego Mindstorms... 367 HOOFDSTUK 22: Tien potentiële programmeer carrières. 369 Games!... 369 Computeranimatie... 371 Cryptografie... 372 Internettoepassingen... 373 Antivirus... 374 Professioneel hacken... 375 Open source... 376 Maatwerk... 377 Je kennis doorgeven aan anderen... 378 Je eigen software verkopen... 378 BIJLAGE A: Gangbare lus- en beslissings structuren. 381 Gangbare lusstructuren... 381 Gangbare beslissingsstructuren... 382 BIJLAGE B: Gratis compilers en interpreters.......... 385 BIJLAGE C: Gebruikelijke programmeer termen..... 387 INDEX......................................................413 xii Programmeren voor Dummies, 6e editie

Opdracht Dit boek is opgedragen aan alle geweldige mensen die mijn levenspad hebben gekruist, waaronder... Cassandra (mijn vrouw), Jordan (mijn zoon) en Bo, Scraps, Tasha en Nuit (onze katten). Lily Carnie, de enige die ik ken die werkelijk beide kanten van een verhaal kan zien. Over de auteur Wallace Wang is een van de talloze op koolstof gebaseerde levensvormen die planeet aarde op dit moment bevolken. Hij begon zijn carrière door te studeren en een goede baan te vinden om te ontdekken dat het voltooien van een studie geen garantie is voor een goede baan en dat de meeste goede banen eigenlijk erg vervelend zijn. Het vooruitzicht om de rest van zijn leven stijf van de cafeïne rond te lopen, met hooguit soms een plens alcohol en wat gokken om de sleur van een frustrerende baan te breken, deed hem ertoe besluiten een van zijn dromen te realiseren en schrijver te worden. Hij begon met het schrijven van artikelen voor een computertijdschrift in San Diego, maar klom al snel op naar landelijke publicaties en complete boeken. Bijna twintig jaar fulltime-auteurschap weerhoudt hem er niet van om zijn andere dromen en hobby s na te jagen. Zo zwerft hij nog steeds rond in het clubcircuit van Michigan, Las Vegas en San Diego, waar hij zijn kunsten als stand-upcomedian vertoont aan eenieder die nuchter genoeg is om te kunnen luisteren. Verder heeft hij zijn vakgebied uitgebreid tot buiten de computerboeken en samen met anderen boeken geschreven die niets met computers te maken hebben, waaronder Breaking Into Acting For Dummies ( Acteur worden voor Dummies ), dat hij samen met Larry Garrison schreef. (Met dank aan Ben Affleck voor het rondzeulen van een exemplaar van dit boek en ermee op de foto gaan een foto die in veel belangrijke tijdschriften waaronder People Magazine en The New York Post te zien was.) Samen met drie andere comedy-artiesten (Rick Gene, Wes Sample en Justin Davis) presenteerde Wallace in San Diego een radioprogramma met de Opdracht xiii

naam Keeping It Weird. Dit was het zoveelste avontuur om maar te voorkomen dat hij in een gewone negen-tot-vijfbaan terechtkwam. Op het moment dat je dit leest, is het goed mogelijk dat de auteur zich alweer op iets geheel anders heeft gestort. Maar wat hij ook doet, het zal beslist iets zijn om op een dag aan zijn kleinkinderen te vertellen. Dankwoord Zonder Bill Gladstone van Waterside Productions zou ik nu waarschijnlijk ergens in een uitzichtloos baantje voor me uit zitten staren en me afvragen of het niet beter had gekund. Verder dank ik Allen Wyatt voor al zijn moeite om te zorgen dat alles in dit boek ook inderdaad klopt, en Rebecca Senniger en Virginia Sanders die het schrijven van een boek altijd zoveel eenvoudiger en vaak ook leuker maken. Alle aardige mensen die ik ben tegengekomen tijdens mijn optredens in de Rivera Comedy Club, in het Rivera Hotel & Casino in Las Vegas; Steve Schirripa (die ook te zien is in The Sopranos, zie www.hboshow.com/sopranos), Don Learned, Bob Zany, Gerry Bednob, Bruce Clark, Darrell Joyce en Kip Addotta. Ga bij je volgende bezoek aan Las Vegas beslist even een show bekijken in de Rivera Comedy Club. Vergeet ook niet om wat geld in een eenarmige bandiet te gooien, zodat het Rivera Hotel & Casino genoeg verdient om de Comedy Club draaiend te houden. Mijn dank gaat verder uit naar Roger Feeny van de Ann Arbor Showcase in Ann Arbor, Michigan; Russ Rivas van Laff s in Albuquerque, New Mexico; Pat Wilson uit Mesquite, Nevada; en Joe Jarred van Primm and Pahrump, Nevada, voor het runnen van een van de leukste comedy clubs in het hele land. Als laatste ben ik dank verschuldigd aan Leo (de man, de mythe, de legende) Fontaine, Chris (de Dierentuinman) Clobber, Rick Gene, Wes Sample, Justin Davis en Dante (die al helemaal uit zijn dak gaat als ie alleen maar zijn naam in een boek ziet). Als laatste moet ik mijn vrouw Cassandra bedanken, die het flink te verduren heeft met de vele computers die (in haar visie) zomaar op willekeurige plekken in huis opduiken, om op even onvoorspelbare momenten ook weer te verdwijnen. Telkens wanneer een computer verdwijnt, duikt er weer een nieuw en geavanceerder model op met de belofte van een hogere snelheid en meer opslagruimte. Helaas lijkt de nieuwe aanwinst nooit echt sneller te zijn of ruimer in zijn jasje te zitten dan zijn voorganger. xiv Programmeren voor Dummies, 6e editie

Inleiding Iedereen kan leren programmeren. Dit vereist geen hoog IQ of een aangeboren talent voor toegepaste wiskunde. Het programmeren van een computer vereist twee dingen: de wil om dingen te leren en vooral veel geduld en doorzettingsvermogen. Programmeren is een handigheid, zoals bergbeklimmen, tapdansen of polsstokspringen. Sommige mensen zijn er van nature beter in dan anderen, maar met de nodige oefening kan iedereen het uiteindelijk onder de knie krijgen. Dit is ook de reden waarom veel kinderen en tieners al op jonge leeftijd de status van wizzkid hebben bereikt: ze zijn niet geniaal, maar hebben gewoon veel tijd besteed aan het ontwikkelen van een nieuwe vaardigheid. Verder zijn ze niet bang om fouten te maken, want fouten maken is nu eenmaal een belangrijk onderdeel van het leerproces. Misschien heb je er wel eens aan gedacht hoe het zou zijn om zelf programma s te kunnen schrijven. Nou, neem van ons aan dat het niet saai of eentonig is! Programmeren kan erg leuk zijn, maar soms ook frustrerend of vervelend. Bovenal is het tijdrovend. Speciaal om deze laatste redenen is dit boek uitgebracht, zodat je leert hoe je met de minste problemen en het meeste plezier computers leert programmeren. Of je het nu wilt leren voor je plezier, een nieuwe carrière in de IT wilt beginnen of misschien ook je huidige werk eenvoudiger wilt maken: beschouw dit boek als je persoonlijke gids in de avontuurlijke wereld van programmeren. We moeten je wel gelijk een illusie armer maken: ook dit boek zal je niet binnen enkele dagen in een softwaregoeroe omtoveren. Wel kan het je op een eenvoudige manier duidelijk maken hoe programma s werken, wat de sterke en zwakke kanten van de verschillende programmeertalen zijn en hoe je zelf kunt beginnen met het schrijven van programma s. Inleiding 1

Voor wie dit boek bedoeld is Dit boek is een goede aankoop als je wilt begrijpen hoe het programmeren met computers in zijn werk gaat, zonder echter in de eindeloze details van een programmeertaal verstrikt te raken. Als je eenmaal begrijpt hoe programmeren in het algemeen gaat, kun je veel gemakkelijker leren werken met programmeertalen met cryptische namen als C++ en Java. Koop dit boek vooral als je een van de volgende dingen wilt weten: hoe computerprogramma s werken; wat de overeenkomsten tussen de programmeertalen zijn; hoe je programma s schrijft voor meerdere besturingssystemen, zoals Windows, macos en Linux; of je je volgende programma het beste kunt schrijven in Visual Basic, C++, Perl, SmallTalk, C# of een andere programmeertaal. Net zoals iedere andere vaardigheid kun je ook programmeren alleen leren door veel te oefenen. Dit boek helpt je de benodigde praktijkervaring op te doen door op de website bij dit boek naar verschillende compilers te linken, zodat je programma s kunt leren schrijven op iedere computer die werkt met Windows, macos of Linux. De drie voornaamste programmeertalen die in dit boek aan de orde komen zijn BASIC, C++ en een scripttaal met de naam LiveCode. BASIC is speciaal ontworpen om beginners te leren programmeren; in de loop van dit boek leer je dan ook BASIC-programma s schrijven in Free- BASIC, een variant van deze taal. Ook maak je kennis met Liberty BASIC. FreeBASIC biedt de programmeertaal BASIC in zijn puurste en simpelste vorm, zodat je de beginselen van het programmeren kunt leren zonder verzand te raken in de technische details. Dit boek biedt ook programmavoorbeelden in C++, een van de populairste programmeertalen die op dit moment in gebruik is. Als je ooit van plan bent professioneel te gaan programmeren, moet je op zijn minst vertrouwd zijn met de manier waarop C++ werkt. Als laatste maak je kennis met een niet-traditionele programmeertaal met de naam LiveCode, waarmee je de computer opdrachten geeft met code die lijkt op gewoon Engels. Scripttalen zoals LiveCode zijn zo ontworpen dat zowel het programmeren als het doorgronden van een programma zo eenvoudig mogelijk wordt. Met dergelijke talen is het oplos- 2 Programmeren voor Dummies, 6e editie

sen van ingewikkelde programmeervraagstukken vaak eenvoudiger dan met traditionele talen zoals BASIC en C++. Ook kunnen we nog opmerken dat LiveCode is gebaseerd op Apple Script, de programmeertaal die gebruikt wordt om taken op Apple-computers te automatiseren. Dit betekent dat je via LiveCode ook meteen vertrouwd raakt met AppleScript. Doordat je kennismaakt met drie verschillende talen, BASIC, C++ en Live- Code, leer je vanzelf ook de verschillende stijlen en manieren van aanpak kennen om problemen op te lossen. Ook merk je wat de voordelen en beperkingen zijn van elk van deze talen, zodat je uiteindelijk in staat bent de taal te kiezen die het geschiktst is om een bepaald probleem op te lossen. De opbouw van dit boek Dit boek bestaat uit vijf delen, zodat je snel kunt vinden wat je zoekt. Elk van de delen behandelt een ander onderwerp op het gebied van programmeren. Zodra je iets wilt weten, blader je gewoon door het boek totdat je het deel hebt gevonden met het gezochte onderwerp. Deel 1: Programmeren met een computer Het programmeren met computers mag misschien lijken op zwarte magie, maar dat is slechts schijn. In dit boek worden de bekende mythen over programmeren aan de kaak gesteld, laten we precies zien hoe computerprogramma s werken en leggen we uit waarom programmeren lang niet zo moeilijk is als de meeste mensen denken. In dit deel lees je ook hoe de kunst van het programmeren zich heeft ontwikkeld, waarom er zoveel verschillende programmeertalen zijn en hoe bijna elk programma is gebaseerd op vaste, gemakkelijk te onthouden principes, zodat je bijna meteen aan de slag kunt met het programmeren met je eigen computer. Inleiding 3

Deel 2: De bouwstenen van programmeertalen Er bestaan weliswaar vele honderden programmeertalen, maar al deze talen hebben bepaalde fundamentele overeenkomsten. In dit deel gaan we in op de simpele bouwstenen waaruit programma s zijn opgebouwd, ongeacht de gebruikte taal. Je vindt hier allerlei voorbeelden van hoe telkens dezelfde problemen in verschillende programmeertalen worden opgelost, zodat je al snel de basisstructuren van programma s leert herkennen. Natuurlijk kun je deze voorbeelden ook op je eigen computer uitproberen. Deel 3: Geavanceerde programmeerprincipes Een simpel programma leren schrijven is één ding, maar het wordt wat ingewikkelder als je het programma efficie nter wilt maken, fouten wilt opsporen en daadwerkelijk interactie met gebruikers wilt laten plaatsvinden. Het is immers de bedoeling dat mensen het programma gebruiken! In dit deel ontdek je hoe programmeurs hun software verfijnen en eenvoudig bruikbaar maken (en wat de gevolgen kunnen zijn als ze dat niet doen). Deel 4: Programmeren voor internet en smartphones Internet is inmiddels een onmisbaar element geworden bij computergebruik en smartphones zijn niet meer weg te denken. Daarom laten we je hier zien hoe de verschillende talen voor internet en smartphones werken. Je maakt kennis met HTML (de taal die het uiterlijk van webpagina s bepaalt), JavaScript, Java en PHP en leest over de mobiele besturingssystemen Android en ios. Ook zie je hier hoe programmeurs al die fraaie webpagina s maken die formulieren kunnen tonen en met gebruikers kunnen communiceren. Deze informatie is nuttig als je zelf interactieve webpagina s wilt ontwerpen. 4 Programmeren voor Dummies, 6e editie

Deel 5: Het deel van de tientallen In dit deel proberen we je te laten wennen aan het idee dat je geld kunt verdienen met programmeren. Daarom vind je hier onder meer een overzicht van veel bekende bedrijven en hun softwareproducten. Ook vind je hier verwijzingen naar allerlei handige softwaregereedschappen en nog meer programmacode waarop je kunt studeren. Hoe je dit boek gebruikt De bedoeling van dit boek is duidelijk maken hoe programmeren in zijn werk gaat, echter zonder direct tot in detail in te gaan op één programmeertaal. Het belangrijkste is dat programmacode er na het lezen van dit boek niet langer uitziet als een onbegrijpelijke toverformule of het typewerk van een dronken aap, maar als iets wat je (misschien met enige moeite) kunt ontcijferen; het is ook de bedoeling dat je gaandeweg zelf iets op een toetsenbord kunt inkloppen wat het daglicht kan verdragen. Dit boek maakt je niet alleen wegwijs, maar kan ook van pas komen als je op zoek bent naar een manier om een bepaald probleem op te lossen. Lees een stukje, en als je denkt dat je het begrepen hebt, probeer je het gewoon uit op de computer. Speel ook gerust wat met de code er zal ongetwijfeld van alles verkeerd gaan, maar dat kan doorgaans geen kwaad. Met een beetje geduld en geluk krijg je al snel een goed idee wat programmeren eigenlijk inhoudt. Open deuren intrappen We hoeven het eigenlijk niet meer te zeggen: je hebt pas echt wat aan dit boek als je kunt beschikken over een computer. Je kunt immers ook niet je rijbewijs halen met alleen maar een schriftelijke cursus! Het beste kun je hiervoor een computer hebben met Windows of macos als besturingssysteem, al is Linux ook goed bruikbaar. In dit boek wordt speciale opmaak gebruikt om bepaalde informatie te benadrukken. De items die je moet typen zijn gezet in een niet-proportioneel lettertype. Alle code en de berichten op het scherm worden in hetzelfde lettertype weergegeven. Wanneer een nieuwe term wordt gedefinieerd, is dat woord cursief gedrukt. Inleiding 5

De pictogrammen in dit boek We gebruiken enkele pictogrammen om de aandacht te vestigen op handige tips, belangrijke informatie of technische details (die je waarschijnlijk net zo snel ook weer vergeet). Let op de volgende pictogrammen: TIP Dit pictogram wordt gebruikt bij handige informatie die je veel werk en tijd kan besparen (zolang je dit tenminste onthoudt, natuurlijk). Hier vertellen we je iets belangrijks, wat je zeker niet wilt vergeten. PAS OP Dit pictogram waarschuwt voor fouten, valkuilen en andere ellende die op de loer ligt. PAS OP Dit pictogram vind je als een bepaald stuk programmacode op de website bij dit boek is terug te vinden. Als je slim bent, kopieer je de code dan ook gewoon vanaf internet, zodat je niet alles hoeft over te typen. Dit pictogram wijst op informatie die aardig is om te weten, maar verder niet erg belangrijk is. Alles rondom dit pictogram mag je dus meteen weer vergeten! (Maar als je echt ambitieus bent, stamp je natuurlijk alle technische informatie die je kunt vinden in je hoofd, zodat je je uiteindelijk kunt meten met andere techneuten van wereldklasse.) De website bij dit boek De enige manier om te leren programmeren is zelf programma s te gaan schrijven en daarvoor heb je natuurlijk een compiler nodig en wel minstens eentje voor elke taal die je wilt gebruiken. Daarom vind je op de website bij dit boek links naar de programmeertalen, compilers en andere hulpmiddelen die in dit boek worden gebruikt. Ook vind je op de webpagina een download met de code van een aantal in dit boek besproken listings. Je vindt deze website op www.dummies.nl/downloads. 6 Programmeren voor Dummies, 6e editie

1Een computer programmeren

IN DIT DEEL... Op het eerste gezicht lijkt het misschien een bijna onoverko melijke uitdaging om een computer te programmeren, dus laten we je in dit deel voorzichtig kennismaken met deze fascinerende tak van wetenschap. Als eerste zie je precies welk doel programma s hebben en hoe professionals ze maken. Daarna lees je waarom er zoveel programmeertalen zijn en waarom sommige talen veel populairder zijn dan andere. Je maakt kennis met de verschillende gereedschappen die door programmeurs worden gebruikt om een programma van begin tot einde te ontwerpen, bewerken en verspreiden. Als laatste ontdek je waar je rekening mee moet houden als je besluit zelf een programma te gaan schrijven. Je maakt kennis met de voor- en nadelen van de verschillende programmeertalen en je komt erachter waarom zelfs mensen met amper enige ervaring in het programmeren er toch in slagen een werkend programma te schrijven. Na het lezen van dit deel van het boek heb je een aardig inzicht gekregen in de manier waarop je een programma schrijft, welke achtereenvolgende stappen je daarvoor doorloopt en hoe je een idee voor een programma omzet in een daadwerkelijk functionerend product dat door anderen kan worden gebruikt. En wie weet? Misschien ben jij wel degene die met een goed idee en veel doorzettingsvermogen een gigantisch populair programma maakt, dat de basis vormt van een nieuw softwarebedrijf met een miljoenenomzet!

IN DIT HOOFDSTUK Leren wat programmeren inhoudt Begrijpen hoe een programma werkt Wat er komt kijken bij programmeren Hoofdstuk 1 Beginnen met programmeren Misschien heb jij het tegenovergestelde gehoord, maar geloof me: een computer programmeren is niet zo moeilijk. Programmeren is een vaardigheid die iedereen onder de knie kan krijgen met genoeg geduld, oefening en cafeïnehoudende dranken. Computers mogen dan vreselijk ingewikkelde apparaten lijken, maar daar hoef je je niet druk om te maken. Er zijn relatief weinig mensen die weten hoe een verbrandingsmotor precies werkt, maar verreweg de meeste mensen leren vroeg of laat toch autorijden. Programmeren lijkt hier veel op: je kunt het met wat oefening leren, zonder dat je precies hoeft te weten hoe een computer werkt. Waarom zou je leren programmeren? De eerste vraag die vaak gesteld wordt, ligt voor de hand: Waarom zou je met je computer willen leren programmeren? Het antwoord hangt natuurlijk af van wat je ermee wilt bereiken. Hier zijn enkele goede redenen: Hoofdstuk 1 Beginnen met programmeren 9

Omdat het leuk is. Mensen storten zich op van alles en nog wat, zoals stijldansen, skiën, tuinieren en schilderen, simpelweg omdat het ze leuk lijkt. De meeste van deze mensen zullen nooit een professional worden in hun favoriete hobby, maar dat vinden ze niet erg; voor hen is het gewoon een leuke tijdsbesteding. Hetzelfde gaat op voor programmeren; misschien vind je het gewoon leuk om een simpel programmaatje te schrijven dat de lelijke kop van je baas op het scherm tovert. En als je wat handiger bent en veel geluk hebt, schrijf je misschien een complexer programma dat miljoenen in het laatje brengt, zodat je nooit meer voor een baas met een lelijke kop hoeft te werken. In figuur 1.1 zie je een programma met de naam Comic Life, waarmee je foto s kunt omtoveren tot een stripverhaal. Dit programma is geschreven op een Macintosh-computer, in een programmeertaal met de naam Objective-C, maar er is ook een Windows-versie van beschikbaar. FIGUUR 1.1: In Comic Life maak je een een stripverhaal van een collectie foto s. Om een probleem op te lossen. Veel mensen leren programmeren zonder de bedoeling er ooit hun brood mee te verdienen. Ze willen graag een specifiek probleem oplossen, maar omdat ze geen programma kunnen vinden dat aan hun wensen voldoet, besluiten ze het dan maar zelf te gaan schrijven. Zo leek het iemand ooit wel handig om een programma te hebben dat zijn belastingaanslag vlot kon doorrekenen. Er bleek geen geschikte software op de markt te zijn, dus besloot de man zichzelf programmeren te leren en zelf een belastingprogramma te schrijven. Het resultaat was TurboTax, inmiddels al jaren een van de populairste programma s in de Verenigde Staten voor het invullen van de belastingaangifte. Op dezelfde manier vond een freelanceschrijver dat een gewone 10 DEEL 1 Een computer programmeren

tekstverwerker niet het beste gereedschap was voor het schrijven van zijn roman. Hij ontwikkelde daarom een speciale tekstverwerker met de naam Scrivener (zie figuur 1.2), voorzien van extra functies voor het structureren van een verhaal. Scrivener is geschreven in de ontwikkelomgeving Xcode, die gebaseerd is op C. Dit is ook het leuke van programmeren: als je een programma hebt geschreven om een eigen probleem op te lossen, blijken andere mensen er vaak ook mee geholpen. FIGUUR 1.2: Scrivener helpt schrijvers bij het ordenen van een verhaal. Als start van een nieuwe carrière. Zolang het aantal computers wereldwijd alleen maar blijft stijgen, zul je nooit lang zonder werk zitten als je behoorlijk kunt programmeren. Softwaredeskundigen zijn overal zeer in trek, niet alleen om nieuwe programma s te ontwikkelen, maar ook om bestaande programma s te onderhouden, te repareren of aan te passen. Computers en dus ook programma s zijn tegenwoordig in bijna iedere bedrijfstak doorgedrongen. Van boerderijen tot banken, van scholen tot hotels, van autoverhuurbedrijven tot luchtvaartmaatschappijen overal zijn mensen nodig die met software overweg kunnen. Het aardige is ook dat leren programmeren bij uitstek iets is wat je naast je gewone werk kunt doen, zonder dat je er bijzondere dingen voor nodig hebt. Een groep alternatieve genezers heeft bijvoorbeeld een programma met de naam IBIS geschreven, bedoeld als informatiebron over hoe allerlei aandoeningen genezen kunnen worden met acupunctuur, massage, homeopathie of een bepaald dieet (zie figuur 1.3). IBIS is geschreven in de programmeertaal Revolution, de voorloper van LiveCode, die in dit boek uitgebreid aan bod komt. Omwille van de uitdaging. Veel mensen zijn gefascineerd door computers vanwege de complexe functies die deze machines kunnen uitvoeren. Het is Hoofdstuk 1 Beginnen met programmeren 11

dan ook niet verwonderlijk dat juist veel mensen met bovengemiddelde intelligentie computers zien als gereedschap om hun eigen gedachten te kunnen ordenen en uitdrukken. Een programmeur heeft om deze reden het programma Axon Idea Processor (zie figuur 1.4) gemaakt met Prolog, een populaire programmeertaal in de wereld van kunstmatige intelligentie. Het doel was een programma te maken dat mensen zou helpen ideeën, concepten en feiten te ordenen en te verwerken, zodat ze niet alleen oplossingen kunnen vinden voor specifieke problemen, maar ook hun eigen redeneringen kunnen analyseren en verbeteren. Werken met bestaande software is vaak een dagelijkse sleur, maar zelf een programma schrijven is dat beslist niet. Je merkt ineens dat je echt je hoofd moet gebruiken! FIGUUR 1.3: Met IBIS vindt een alternatief genezer snel alle alternatieve behandelingen voor een kwaal. FIGUUR 1.4: Met de Axon Idea Processor verandert het computerscherm in een digitale afspiegeling van je brein voor het organiseren en verwerken van ideeën. Deze voorbeelden laten zien dat de gebruikte programmeertaal minder belangrijk is dan wat je de computer wilt laten doen. De magie van het 12 DEEL 1 Een computer programmeren

schrijven van programma s is niet afhankelijk van een bepaald type computer, gereedschap of programmeertaal. De echte magie van het programmeren wordt slechts beperkt door je eigen fantasie. Je kunt weliswaar een heel aardig belegde boterham verdienen met programmeren, maar dat kun je ook met het verkopen van paperclips, het repareren van lekkende wc s of het kweken van bloemen. Als je geen plezier beleeft aan wat je doet, zul je zelfs met al het geld in de wereld niet gelukkig worden. Ga in de eerste plaats programmeren omdat het je leuk lijkt, niet omdat je er misschien rijk mee kunt worden. Hoe werkt een computerprogramma? Computers lijken een beetje op de gemiddelde tiener: ze komen pas in actie als je ze precies vertelt wat ze moeten doen. Je kunt een computer slechts op een van de volgende twee manieren iets zinnigs laten doen: Schrijf een programma dat de computer stap voor stap vertelt wat er moet gebeuren, een beetje zoals het recept van een gerecht. Koop een programma dat door iemand anders is geschreven en de computer laat doen wat jij wilt. Met andere woorden: de enige manier om een computer iets zinnigs te laten doen, is het (laten) schrijven van een programma. Een programma is niets anders dan een serie opdrachten die de computer vertelt om specifieke invoer te accepteren, bepaalde bewerkingen op deze invoer uit te voeren en de bewerkte invoer weer uit te spugen in een of andere vorm waar wij mensen iets aan hebben. In tabel 1.1 zie je enkele categoriee n programma s opgesomd, samen met het soort invoer dat ze verwachten en het soort uitvoer dat ze produceren. Invoer en uitvoer van diverse soorten programma s TABEL 1.1 Soort programma Invoer Wat het programma doet Uitvoer Tekstverwerker Toetsaanslagen van het toetsenbord Tekst opmaken en spelling controleren Tekst netjes weergeven en afdrukken Game Toetsaanslagen en/of bewegingen van een joystick Berekenen hoe allerlei objecten op het scherm moeten bewegen Figuren op het scherm laten bewegen Beurskoersprogramma Historie van aandelenkoersen Proberen een trend in de koersen te ontdekken Voorspelling van aandelen koersen Hoofdstuk 1 Beginnen met programmeren 13

TABEL 1.1 Invoer en uitvoer van diverse soorten programma s (vervolg) Soort programma Invoer Wat het programma doet Uitvoer Reisplanner Begin- en eindpunt en tijdstip van een reis Opzoeken hoe de reiziger van begin punt naar eindpunt kan reizen Voorstel voor route en/ of vervoermiddelen Tekstherkenningsprogramma Gescande tekst De vorm van gedrukte tekens herkennen Tekst in bewerkbare digitale vorm, geschikt voor bijvoorbeeld een tekstverwerker Webbrowser Code in HyperText Markup Language (HTML), afkomstig van andere computers HTML-code omzetten in opgemaakte tekst en andere elementen Webpagina s op een computerscherm Programmeren is problemen oplossen Een programma doet in principe niets anders dan een specifiek probleem oplossen door de computer allerlei opdrachten te geven. Aangezien er geen tekort aan problemen is, zijn er praktisch gezien geen grenzen aan de aantallen en soorten programma s die mensen kunnen schrijven. Maar je kunt een computer niet eenvoudigweg vragen om een probleem in één keer op te lossen. Meestal moet je een groot, ingewikkeld probleem opsplitsen in meerdere simpelere problemen, die op hun beurt vaak weer opgesplitst moeten worden enzovoort. Uiteindelijk doet de computer niets anders dan een enorm aantal eenvoudige beslissingen nemen. Laten we eens kijken welke grote problemen opgelost moeten worden wanneer je een game wilt programmeren: bepalen in welke richting en hoe ver een figuurtje (of een ruimteschip, of iets anders) op het scherm verplaatst moet worden als de gebruiker de joystick bedient; vaststellen wanneer een figuurtje tegen een muur botst, in een afgrond valt of tegen een ander object op het scherm aanloopt; voorkomen dat een figuurtje dingen doet die niet mogen, zoals door een muur lopen; de omgeving tekenen, en daarbij opletten dat een figuurtje op een realistische manier aan het zicht wordt onttrokken als het achter een ander voorwerp langs loopt; vaststellen of een figuurtje wordt geraakt door projectielen van andere figuurtjes, en zo ja, bepalen hoe ernstig de schade is, hoezeer dit invloed 14 DEEL 1 Een computer programmeren

heeft op de bewegingsvrijheid van het figuurtje en hoe dit op het scherm zichtbaar wordt. Hoe eenvoudiger het probleem is dat je probeert op te lossen, des te simpeler het wordt om een programma te schrijven dat dit doet. Het schrijven van een simpel pingpongspelletje, met twee batjes in de vorm van een streepje en een balletje in de vorm van een blokje (de oudgedienden onder ons kennen het vast nog wel!) is vele malen eenvoudiger dan een spel waarbij je in een realistisch landschap in een vliegtuig uit de Tweede Wereldoorlog zit, achter andere vliegtuigen aanjaagt en probeert tanks uit te schakelen terwijl je luchtafweergeschut moet ontwijken. Programmeren is niet moeilijk, maar wel tijdrovend Programmeren is echt niet moeilijk of mysterieus. Als je iemand stap voor stap kunt uitleggen hoe hij bij jouw huis moet komen, kun je ook een programma schrijven. Het moeilijkste van programmeren is uitzoeken hoe je het grote, lastige probleem dat je wilt oplossen zo goed mogelijk kunt opsplitsen in kleinere, simpelere problemen. Het grootste probleem voor een programmeur is dat een computer echt ongelooflijk dom is. Het apparaat kan helemaal niets als je niet precies vertelt wat er op welk moment moet gebeuren. Stel je eens voor dat je een vriend de weg naar jouw huis uitlegt. Je instructies zien er bijvoorbeeld als volgt uit: 1. Neem de snelweg A35 in oostelijke richting. 2. Neem de afslag Enschede-Zuid. 3. Sla bij de stoplichten linksaf. 4. Ga bij de vierde afslag aan je rechterhand rechtsaf. Dit is voor jouw vriend vermoedelijk compleet duidelijk. Een computer kan hier echter nog niets mee, en zal allerlei extra gegevens nodig hebben: 1. Waar begin ik precies en hoever moet ik rijden op de A35? 2. Hoe herken ik de afslag Enschede-Zuid en hoe neem ik die afslag eigenlijk? Hoofdstuk 1 Beginnen met programmeren 15

3. Bedoel je de stoplichten direct nadat ik van de snelweg ben afgeslagen of de stoplichten driehonderd meter verderop? Of wellicht nog andere stoplichten? 4. Mijn rechterhand? Wat is dat? Oh, je bedoelt hetzelfde als de rechterkant! 5. Als ik bij de vierde afslag aan de rechterkant rechtsaf ben gegaan, wat moet ik dan doen? De wagen parkeren? Toeteren? Gewoon doorrijden tot in jouw woonkamer? En zelfs als je al deze vragen hebt beantwoord, gaat er nog van alles mis. Zo zal de computer zich zonder speciale opdracht niets aantrekken van de kleur van stoplichten, of zelfs maar van de aanwezigheid van andere weggebruikers. Kortom: een computer zover krijgen dat hij doet wat je wilt, is zelfs nog lastiger en kost nog meer geduld dan hetzelfde bereiken met je kinderen. Je moet de machine echt stapje voor stapje en absoluut ondubbelzinnig uitleggen wat er moet gebeuren, anders zal een programma nooit werken. SOMS MISLUKT EEN PROGRAMMA GEWOON Een enkele keer wordt er jaren werk in een programma gestoken, maar mislukt het uiteindelijk toch. Het is dan soms beter om alles maar te vergeten en opnieuw te beginnen dan hardnekkig te blijven zoeken naar oorzaken waarom het niet goed werkt. Zo had de Amerikaanse regering halverwege de jaren tachtig van de vorige eeuw een prachtig idee voor een hypermodern stuk computergestuurd luchtafweergeschut, Sergeant York genaamd. Het probleem dat de computer moest oplossen klonk simpel: zoek naar vijandige vliegtuigen en schiet ze kapot. Helaas heeft het programma dat Sergeant York bestuurde nooit goed gewerkt. Na miljoenen dollars en ontelbare uren werk om het programma te verbeteren, te testen, opnieuw te verbeteren en fouten te verhelpen, dachten de programmeurs op zekere dag dat ze alle problemen hadden verholpen. Dit was uiteraard reden voor een feestje plus demonstratie, dus nodigde het bedrijf dat Sergeant York ontwikkelde allerlei generaals en andere hoge pieten van het Pentagon uit. Sergeant York werd opgesteld op een paar honderd meter afstand van de tribune met alle hooggeëerde gasten, waarna een op afstand bestuurd vliegtuigje kwam overvliegen als doelwit. Maar Sergeant York had kennelijk zijn dag niet helemaal, want in plaats van het vliegtuigje aan stukken te schieten, bracht hij volgens de overlevering zijn dubbele 40-mm snelvuurkanonnen in horizontale positie, om ze vervolgens pal in de richting van de tribune te draaien. 16 DEEL 1 Een computer programmeren

Het moet een behoorlijk grappig gezicht geweest zijn, al die hoge pieten die in paniek zo snel mogelijk uit de vuurlinie probeerden te komen. Gelukkig vuurde Sergeant York zijn kanonnen niet daadwerkelijk af, maar na deze toch wat teleurstellende demonstratie besloot het Pentagon het hele Sergeant Yorkproject voorgoed af te blazen. Moraal van dit verhaal: als je een fanatiek begonnen programmeerproject ook na lange tijd en veel moeite niet tot een goed einde kunt brengen, is het geen schande om het op te geven. Je bevindt je in goed gezelschap: het Pentagon, allerlei defensiebedrijven en zo ongeveer iedere grote onderneming in de wereld is je voorgegaan. Wat moet ik in huis hebben om te programmeren? Als het schrijven van een programma (bijvoorbeeld een computergame) je minstens zo leuk lijkt als het gebruiken ervan, ben je eigenlijk al automatisch gekwalificeerd. Mocht je nog twijfelen, dan zijn in ieder geval de volgende drie eigenschappen belangrijk: Doorzettingsvermogen. Als je iets maar graag genoeg wilt, lukt het je uiteindelijk ook (al moet je dit niet als een natuurwet beschouwen; sommige dingen zijn fundamenteel onmogelijk, zoals de belastingdienst ervan overtuigen dat je geld moet terugkrijgen in plaats van betalen). Maar als je echt wilt leren hoe je een computer programmeert, zal het uiteindelijk ook wel lukken. Nieuwsgierigheid. Een flinke dosis nieuwsgierigheid is belangrijk om te leren programmeren. Niet alleen moet je willen weten hoe bestaande programma s werken, maar je moet ook je grenzen durven te verleggen. Wat zou er gebeuren als ik een idioot groot getal invoer? Of beter nog: Hm, als ik dit doe, zou de computer dan vastlo... Zolang je maar nieuwsgierig blijft, is het schrijven van een programma een leuke bezigheid in plaats van alleen maar een vervelende klus. En je weet: je leert dingen beter en sneller als ze leuk zijn en je nieuwsgierigheid prikkelen.»» Verbeeldingskracht. Programmeren is een vak, maar met de juiste hoeveelheid verbeeldingskracht wordt het ook een leuk vak. Een middelmatige programmeur met veel verbeeldingskracht zal doorgaans interessantere en bruikbaardere programma s maken dan een fantasieloze topprogrammeur. Het gaat erom dat je je kunt voorstellen wat jouw pro- Hoofdstuk 1 Beginnen met programmeren 17

gramma-in-wording zal doen, en hoe andere mensen ermee zullen omgaan, en wat er misschien nog meer mee mogelijk is. Je mag dan nog zo talentvol zijn op het gebied van computers en programma s, als je niet weet wat je ermee kunt, is je talent bij voorbaat verspild. Dit zijn de drie karaktertrekken die iedere programmeur tot op zekere hoogte moet hebben. Heb je dit alles in voldoende mate, dan is het leren van een specifieke taal zoals C++ eigenlijk niet meer dan een formaliteit (al blijft het vaak nog wel een behoorlijk tijdrovende formaliteit...). In het begin kan leren programmeren een bijna onmogelijke opgave lijken, maar dat valt reuze mee. Vergeet vooral ook niet dat zelfs de beste programmeurs van de wereld ooit beginners zijn geweest. De principes van programmeren zijn simpel; de echte moeilijkheden komen pas wanneer je een programma daadwerkelijk aan de praat wilt krijgen, en mensen ermee om moeten gaan. 18 DEEL 1 Een computer programmeren