I denna laboration kommer
du att
träna på C++-programmering, funktioner och något om
datatyper. Eftersom lab-pm innehåller en del matematiska formler
har jag använt
LaTeX
för att skriva
texten (pdf).
Anvisningarna förutsätter att du sitter vid en Linux-dator.
Man kan fortfarande använda Matlabs editor för att skriva in
programmen (Matlab har stöd även för C, C++, Java och
HTML). Om du går in under Matlab-menyn File och väljer
Preferences kan du dessutom, under Editor/Debugger och sedan Language,
ställa in vilka suffix Matlab skall känna av, vilka
färger som skall användas (syntax highlighting) etc. En
nackdel med att använda Matlabs editor är ju att Matlab
måste vara igång (vad jag vet i alla fall), men vi
använder ju inte alls Matlab i denna laboration.
Av denna anledning kan du välja en helt annan editor, det finns
flera installerade i Linux-systemet. Jag rekommenderar nedit (Nirvana
editorn) som är en trevlig och kraftfull editor. Om du är
bekant med Matlabs editor så är det inga problem att byta
till nedit. Starta nedit antingen genom att välja Nedit
från Programming-altenativet i Applications-menyn eller genom att
skriva
nedit
i ett
terminalfönster. Nedit har också stöd för C++
(titta under Preferences, Language Mode). Om du editerar en fil som
slutar på
.cc
så väljer nedit automatiskt C++ som språk. När man startar nedit får
man felmeddelandet,
UTF8 locale not supported, men
det kan man ignorera, så länge som man inte använder åäöÅÄÖ. Så om du
programmerarer på engelska är detta inget problem.
Andra editorer är gedit (som inte har stöd för C++),
emacs, xemacs, gvim och vim. Jag använder vim, som är en
kraftfull editor, men den tar lite tid att komma igång med,
så jag rekommenderar den inte om du bara har använt Matlabs
editor. För ytterligare alternativ, se
denna
lista (alla editorerna är dock inte tillgängliga under
vårt system).
Svar på några frågor
om labben:

Man kan slå på radnumrering
i
nedit
(gör det
enklare att lokalisera felmeddelandena från
g++).
Välj
Show Line
Numbers från
Preferences-menyn. Av
någon anledning tycks detta inte
ta
direkt
,
men den fungerar om man gör
Save Defaults (under
Preferences)
och sedan startar om
nedit.

Radnumrering i
vim, skriv (i
edit-mode)
:set
nu följt av enter. Detta fungerar även i
gvim, men där
kan man
också använda sig av Edit-menyn. Välj
File Settings
och sedan
Toggle
Line Numbering.
Radnumret syns också i statusraden nederst i fönstret.

I Emacs syns radnumret i
statusraden
nederst i fönstret.

När man startar
nedit i ett
terminalfönster så blockerar
nedit
fönstret. Om man
vill fortsätta att skriva i fönstret, gör då
så här. Klicka med musen i terminalfönstret, så
att det är aktivt. Skriv sedan ^Z dvs. tryck och håll nere
Ctrl-tangenten och tryck sedan på Z-tangenten (analogt med ^C,
med andra ord). Du skall då få tillbaks shell-prompten. Ge
sedan kommandot
bg
och
tryck på Enter (bg = background, dvs. lägg nedit i
bakgrunden). Fönstret är nu inte längre blockerat.

Upphöjtoperatorn ^ finns inte
i
C++ (^ betyder bitvis "antingen eller", exclusive or). Använd
multiplikation eller
pow-rutinen
(vilken kräver att du inkluderar
cmath), så här
t.ex:
#include
<cmath>
#include
<iostream>
using namespace std;
int main()
{
double x
= 2, y;
y =
pow(x,
2); // same as x * x
y =
pow(x, 0.5); //
same as sqrt(x)
cout << "sqrt(2) = " << y << endl; // write something
return 0;
}
Här är länkarna från labpm:
http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hamilton.html
http://turnbull.mcs.st-and.ac.uk/history/Biographies/Hamilton.html
samt några till
http://en.wikipedia.org/wiki/Quaternion
(med
minnestavlan)
http://mathworld.wolfram.com/Quaternion.html