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

  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