edubun
Nederlands

Programmeren

JavaScript en Python vanaf de eerste regel, daarna algoritmen en datastructuren, met uitvoerbare code op de pagina en labs die elke stap tellen.

Code-editorUitlegOefenen

Voor wie nog nooit code heeft geschreven

Beide taalcursussen beginnen bij nul. JavaScript start met één console.log-regel; Python met print("Hello, world!") in een bestand, al een compleet programma. Elk Pythonvoorbeeld is uitgevoerd in Python 3.12 en toont de echte uitvoer. JavaScript bewerk en draai je op de pagina. Oefeningen controleren wat je programma afdrukt. De twee vervolgcursussen zijn voor wie al een lus en functie kan schrijven en wil weten waarom één methode sneller is dan een andere.

Kies een taal en ga daarna dieper

Begin met één van beide. JavaScript heeft twaalf hoofdstukken: waarden en variabelen, if, lussen, arrays, functies en objecten, tot een fooiencalculator en FizzBuzz. Python heeft er tien: strings, lijsten, if, lussen, functies en dictionaries, tot een klein zakgeldoverzicht en foutmeldingen lezen.

Wil je doorgaan, dan is JavaScript de handigste eerste keuze: de oefeningen in de volgende cursussen gebruiken die taal. Algoritmen behandelt Euclides' grootste gemeenschappelijke deler, lineair en binair zoeken, vijf sorteermethoden, Big O, recursie met de Toren van Hanoi en breedte-eerst en diepte-eerst zoeken. Datastructuren volgt met arrays, stapels, wachtrijen en ringbuffers, gelinkte lijsten, hashtabellen, binaire zoekbomen en de keuze ertussen.

Het werk tellen

De labs voeren steeds één stap uit en houden de telling bij. Selectionsort maakt precies 45 vergelijkingen bij elke lijst van 10 waarden, willekeurig of al gesorteerd. Binair zoeken vindt een naam tussen een miljoen gesorteerde namen in hoogstens 20 controles. Bij een miljard stappen per seconde kost een n²-methode op een miljoen waarden ongeveer 17 minuten; een n log n-methode ongeveer 0.02 seconden. De miljoenste arraywaarde lezen kost één stap, een waarde vooraan invoegen verplaatst er een miljoen. Een gebalanceerde boom met 1023 sleutels vindt elke sleutel in hoogstens 10 vergelijkingen. Uit gesorteerde invoer kunnen dezelfde sleutels 1023 vergelijkingen vragen.

Kleine verrassingen in de eerste weken

In JavaScript geeft "5" + 3 de waarde "53", 0.1 + 0.2 geeft 0.30000000000000004 en 5 == "5" is true, maar 5 === "5" is false. In Python geeft 7 / 2 de waarde 3.5, maar 7 // 2 geeft 3. range(5) stopt bij 4. "Python"[6] is een fout, want tellen begint bij 0.

Waar beginners de fout in gaan

Elk Pythonhoofdstuk benoemt verwachte fouten. = lezen als ‘is gelijk aan’ in plaats van ‘krijgt’, waardoor score = score + 5 onmogelijk lijkt. if answer == "yes" or "y" schrijven en verwachten dat beide worden gecontroleerd. Denken dat b = a een back-up van een lijst maakt. Denken dat een functie die het antwoord afdrukt het ook teruggeeft. De docentennotitie noemt dat de bekendste verwarring op dit niveau: het scherm ziet er hetzelfde uit. Of de regel uit een traceback repareren terwijl de oorzaak hoger staat.

Vragen over dit vak

Wat verschilt tussen let en const?

Beide declareren variabelen, maar bij let mag je later een andere waarde toekennen en bij const niet. Een const-declaratie moet meteen een beginwaarde krijgen. Een nieuwe toekenning veroorzaakt een TypeError. Gebruik const als de binding gelijk moet blijven en let als een latere stap haar moet bijwerken, in plaats van telkens dezelfde variabele opnieuw te declareren. JavaScript

Waarom voegt een string plus getal tekst samen?

Bij de plusoperator zorgt een tekenreeks aan een van beide kanten ervoor dat JavaScript de andere waarde ook naar tekst omzet en de twee samenvoegt. Daarom geeft "5" + 3 de tekst "53" en niet 8. Zet cijfertekst vóór het optellen om met Number als je wilt rekenen. Vermenigvuldigen gebruikt andere omzettingsregels en voegt geen tekenreeksen samen. JavaScript

Waarom geeft 0.1 plus 0.2 niet precies 0.3?

JavaScript bewaart getallen in een vast binair formaat. Sommige decimale breuken zijn daarin niet exact weer te geven. Kleine afrondingsfouten kunnen daardoor zichtbaar worden, bijvoorbeeld als 0.30000000000000004. Met toFixed(2) verschijnt "0.30", maar het resultaat is een tekenreeks. Een afgerond weergegeven waarde is dus niet hetzelfde als een numerieke waarde. JavaScript

Wat verschilt tussen dubbel en drievoudig gelijkteken?

Dubbel gelijk probeert vóór de vergelijking typen om te zetten. Een getal en cijfertekst kunnen daardoor gelijk lijken. Driedubbel gelijk gebruikt strikte gelijkheid zonder omzetting: 5 === "5" is false omdat de typen verschillen. Eén gelijkteken doet iets anders: het kent een waarde toe in plaats van twee waarden te vergelijken. JavaScript

Waarom is de laatste stringindex kleiner dan de lengte?

Indexering begint bij nul. Een tekenreeks van tien tekens heeft dus posities nul tot en met negen. "JavaScript" heeft lengte tien; het eerste teken staat op index nul, het laatste op index negen. Bij een slice telt de eindindex niet mee. slice(0, 4) neemt daarom de eerste vier tekens en niet vijf. JavaScript