Programmeermethoden
Werkcollege 1: UNIX

Het eerste werkcollege van het vak Programmeermethoden vindt plaats in zaal 302/304, zaal 306/308 en zalen 307 en 309 (de PC-zalen; 307 en 309 zijn speciaal bestemd voor Wiskunde-studenten). Voor studenten Wiskunde en Informatica is dit werkcollege op dinsdag 6 september 2011, van 11.15 tot 13.00 uur, en voor studenten Natuurkunde of Sterrenkunde op donderdag 8 september 2011, van 11.15 tot 13.00 uur. Het wordt verzorgd door de vaste staf. Enkele bijeenkomsten van het vak Studievaardigheden (voor Informatici) sluiten overigens goed aan op dit werkcollege.

Spreek/Vragenuur in zalen 302 ... 309: dinsdag 6, woensdag 7 en donderdag 8 september 2011, van circa 15.30 tot 17.00 uur.

Binnenhof Voor Haagse studenten is dit werkcollege op donderdag 8 september, van 15.45 tot 17.30 uur, in zaal "Paleistuin" (zaal 13.25).

 

Voorbereiding

Als voorkennis wordt bekend verondersteld: eigenlijk niet zoveel, want dit is een van de eerste activiteiten. Wat helpt:

Het eigenlijke werkcollege

Doe achtereenvolgens deze opdrachten:
  1. Laat je naam even aankruisen op de presentielijst, die vanzelf langs komt.
  2. (Voor zover dat nog niet gedaan is)
    Maak jezelf vertrouwd met de verschillende computersystemen. Volg daartoe de instructies van Hoofdstuk 1.7 (beginnend op pagina 7) van het dictaat, eerste deel. Voor een UNIX-account kun je terecht bij de docent. Lees eventueel maar eens deze introductie.
    Linux-PCs: let er op dat je een Linux inlogscherm ziet. Log in, kies daarbij voor KDE (en niet GNOME), en maak deze je standaard (= default) omgeving. (Als je dat verkeerd had gedaan: uitloggen, en opnieuw ...) De eerste keer moet je helaas soms lang wachten. Terminal maken: icoontje met schelp of beeldscherm. Deze is te vinden bij de menu's links onder: eerste keer soms "switch to KDE-style", dan System - Terminal - X-terminal. Je kunt zo'n icoontje ook naar de taakbalk beneden slepen. Soms is een terminal ook op andere manieren te vinden.
    En als je dat liever doet en/of weet waar het over gaat: gebruik Gnome.
  3. Pas je paswoord, oftewel wachtwoord, aan (gebruik passwd).
  4. Voor nerds: Stuur met mutt (of eventueel elm) een elektronisch berichtje aan je buren en aan jezelf.
    De eerste keer moet je een of twee vragen met y (van yes) beantwoorden. Je komt dan soms terecht in de editor vi: deze is de eerste keer wat cryptisch (je kunt overigens ook een andere editor kiezen, bijvoorbeeld gedit), maar met enkele commando's red je het wel. Zo ga je met de Esc-toets van schrijf-mode naar commando-mode van vi, andersom met i (van insert). Het weghalen van een karakter gaat door eerst naar commando-mode te gaan, de cursor op het foute karakter te zetten en x te geven — daarna weer terug, op de juiste plek, met i. Saven gaat bijvoorbeeld met ZZ (in commando-mode).
    Voor iedereen: Wat is hiervan het nut? Tja, de meningen verschillen. Maar zo werkte het in oude tijden, en in maanlanders, afgesloten grotten, etc. Maak dus een .forward file (zie onder).
    Maar ja ... misschien doe je liever web-mail? Kijk maar eens hier. (Dit werkt alleen met de "Informatica-accounts".)
  5. Oefen de UNIX-commando's, zie eventueel dictaat, eerste deel, Hoofdstuk 2. Gebruik in het bijzonder:
    • Een internet browser: firefox (tik in: firefox &, of gebruik het icoontje) of een van de vele andere ...
    • Een editor: gedit (en eventueel vi (als gvim) en/of kate en/of nedit en/of xemacs en/of ...); maak enkele eenvoudige files, zie het volgende aandachtspunt.
      Zet de tab-instellingen op bijvoorbeeld 3 spaties. En zorg ervoor dat de volgende regel automatisch evenveel inspringt als de huidige.
      Het verschil tussen een terminal en een file die je aan het editen bent, is hopelijk duidelijk.
    • ls     overzicht files; tip: ls -lrt
    • cp     kopieer file
    • rm     verwijder file
    • mv     verplaats file
    • cd     verander van directory (map)
    • mkdir     maak nieuwe directory
    • man     hulp over een commando
    • =====
    • chmod     wijzig rechten (voor gevorderden)
    • ps     overzicht processen
    • kill     gooi proces weg
    Probeer maar eens de website van Programmeermethoden te vinden. Zoek daar naar het tentamen (met uitwerking) van 5 januari 2004, zet dit op je eigen account (NIET printen!), maak een subdirectory en kopieer/verplaats het tentamen daarnaartoe. En hoe kun je het bekijken?
    VEEL meer informatie staat in dit uitgebreide document. Er is ook een uitgebreide Handleiding UNIX van Piet van Oostrum (in PDF-formaat) beschikbaar.
  6. Oefen met nedit (en eventueel gvim), zie dictaat, Hoofdstuk 2. Je kunt bijvoorbeeld de uitwerking van het tentamen editen.
    Of nog beter: Maak dus een .forward file om je email door te laten sturen.
    Er zijn ook andere editors met syntax-highlighting, zoals gvim, gedit en kate. Kies zelf een favoriet.
    Voor gvim: kopieer eerst met cp /home/kosters/.gvimrc ~  handige instellingen naar je eigen homedirectory (NIET in de wiskundezalen). Deze file kun je zelf ook wijzigen.
  7. Maak een eerste C++-programma en compileer dit, zie Hoofdstuk 1.5 en 1.7 uit het dictaat. Schrijf om te beginnen een programma dat een tekstje op het beeldscherm zet. Tik het programma uit het dictaat, pagina 5, over en compileer het. Probeer maar eens te snappen wat er gebeurt. Tijdens de colleges wordt dit uitgebreid uitgelegd.
  8. Hoe print je dit? Dat hangt er van af of het om een C++-file of een PDF-document gaat. Voor dat laatste moet je zeker een laserprinter gebruiken, voor C++-programma's is een matrixprinter (als je die kunt vinden) misschien ook wel goed. Print overigens nooit executables! En een laatste tip: kijk eerst even of de printers het doen ...
    De laserprinter in de gang bij zaal 302/304 heet hp-304-bw. Wil je een file iets.cc op deze laserprinter printen, geef dan lpr -Php-304-bw iets.cc. Elders in het gebouw staan nog meer printers, kijk maar eens met lpc status of lpstat. Alle studenten krijgen een redelijk (maar, zoals wiskundigen zeggen, eindig) aantal printjes op hun quotum.
    Als je de naam van de printer weglaat bij het commando lpr, gaat de file naar je "default printer" (welke dat ook moge zijn ... probeer eens echo $PRINTER). Hopelijk is dat hp-304-bw, bij zaal 302/304. Tip: probeer ook eens hp-410-bw, bij zaal 410.
    Wiskundigen gebruiken de laserprinter in zaal 307.
  9. (Voor de gevorderden:) Pas het programma aan zodat het twee in te voeren gehele getallen optelt en het resultaat afdrukt. Hint: zie het voorbeeldprogramma op pagina 3 van het dictaat, gedeelte "aantekeningen bij de hoorcolleges".
  10. Laat het gemiddelde van de twee getallen afdrukken, en laat het resultaat op verschillende manieren op het scherm zetten.
  11. (Echt alles af?) En nu de eerste programmeeropgave ...

Huiswerk

Lees het "dictaat" nog eens door. En nog eens. Lees Savitch Hoofdstuk 1. Lees van het dictaat, gedeelte "aantekeningen bij de hoorcolleges", Hoofdstuk 3.1 tot en met 3.4.

Kun je uit je hoofd een Hello World programma in C++ bedenken? En editen? En compileren? En uitvoeren, oftewel executeren?