Introduktion till vetenskapliga ber¨ akningar II. Ovning 6, ht 2009 ¨
1. Skriv ett program som skriver ut de 500 f¨orsta heltalen formaterat till en fil, med tio tal per rad, ett blankt tecken i b¨orjan av varje rad, 5 kolumner f¨or varje heltal och tv˚a mellanrum mellan varje heltalsf¨alt. Skriv ett annat program som l¨aser in denna fil i en vektor, och skriver ut talen i motsatt ordning med 8 tal per rad p˚a sk¨armen.
2. Skriv ett Fortran-program till hj¨alp f¨or en f¨orfattare, som g¨or upp ett register f¨or en bok. Han sl˚ar sig ned i allsk¨ons ro vid sin dator och matar in nyckelord, j¨amte de sidnummer, d¨ar de f¨orekommer. Antag, att nyckelorden och sidnumren skrivs in p˚a en fil, som efter hand kan uppdateras (f¨orf. kanske beh¨over en kaffepaus el. dyl.). N¨ar alla ord blivit inf¨orda, sorteras orden alfabetiskt av programmet och skrivs ut i en annan fil, j¨amte de sidnummer d¨ar de f¨orekommer.
3. Antag, att ett spektrum av n˚agot slag blivit uppm¨att s˚a, att intensiteten i varje kanal anges som ett h¨ogst sjusiffrigt heltal och har skrivits ut i en textfil med 8 kanaler (tal) per rad. Det motsvarande Fortran-formatet ¨ar (8I8). Av n˚agon anledning vill man ”v¨anda om” spektret, dvs skriva intensiteterna i motsatt ordningsf¨oljd. Skriv ett Fortran-program, som l¨aser filens namn, kontrollerar dess existens, l¨aser in spektret i minnet, byter om intensiteternas ordningsf¨oljd, och skriver ut det konverterade spektret p˚a en ny fil.
4. Ekvationen f¨or en cirkel kan skrivas (x−x0)2+(y −y0)2 = r2, d¨ar punkten (x0, y0) ¨ar cirkelns medelpunkt, och r ¨ar dess radie. Konstruera en h¨arledd typ, som representerar en cirkel med dess namn, medelpunktens koordinater och radien. Anv¨and denna typ i ett Fortran 90 program som l¨aser in medelpunktens koordinater, och koordinaterna f¨or en punkt p˚a cirkelns periferi, samt d¨arur r¨aknar ut radien. Till sist skall programmet skriva ut koefficienterna i den allm¨anna formen av cirkelns ekvation ax2+ by2+ cx + dy + e = 0.
5. Skal¨arprodukten av tv˚a tredimensionella vektorer aaa och bbbaa bb definieras som aaaaa· bbbbb = a1b1+ a2b2+ a3b3, d¨ar aaa = aaa 1iiiii + a2j + ajjjj 3k och bbbkkkk bb = b1iiiii + b2j + bjjjj 3kk. Vektorprodukten avkkk de tv˚a vektorerna definieras som ccccc = aaaaa× bbbbb, d¨ar c1 = a2b3− a3b2, c2 = a3b1− a1b3 och c3 = a1b2− a2b1.
Skriv en Fortran-modul, som f¨orst genererar den vektortyp, som beskrevs p˚a f¨orel¨as- ningen, och d¨arp˚a definierar tv˚a funktionsrutiner, som r¨aknar ut skal¨arprodukten och vektorprodukten enligt ovanst˚aende formler. Du kan ocks˚a f¨ors¨oka konstruera tv˚a op- eratorer, t.ex. * och .x. enligt anvisningarna i f¨orel¨asningen f¨or att underl¨atta anv¨and- ningen av rutinerna. Anv¨and sedan modulen i ett program som ber¨aknar trippelskal¨ar- produkten av tre vektorer aaaaa, bbbbb och ccccc: aaaaa· (bbbbb× ccccc).