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.
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:
-
Inhoud van het college van dinsdag 6 september 2011.
Zie de
sheets.
-
Doorgelezen: eerste deel dictaat.
-
Misschien doorgelezen: Savitch Hoofdstuk 1.
Het eigenlijke werkcollege
Doe achtereenvolgens deze opdrachten:
-
Laat je naam even aankruisen op de presentielijst,
die vanzelf langs komt.
-
(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.
-
Pas je paswoord, oftewel wachtwoord, aan (gebruik passwd).
-
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".)
-
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.
-
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.
-
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.
-
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.
- (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".
-
Laat het gemiddelde van de twee getallen afdrukken,
en laat het resultaat op verschillende manieren op het scherm zetten.
-
(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?