Quaternioner och C++

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).

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.

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.

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.

Av någon anledning tycks inte Save Defaults..., från Preferences, spara radnummerinställningen i nedit. Det går att fixa genom att editera filen ~/.nedit/nedit.rc och ändra raden
nedit.lineNumbers: False
till
nedit.lineNumbers: True

När man startar nedit i ett terminalfönster så blockerar nedit fönstret. Om man vill fortsätta att skriva i fönsret, 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)

  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



Back