Gå til innhold

Hjelp til lesing av kode(fortran)


Anbefalte innlegg

Hei hei. Fant ikke noe for fortran, men regner med dere java- programmerere kan dette:)

Jeg har eksamen nå i mai, å må bare innrømme at programmering ikke er noe for meg.

Har sett på noen oppgaver, har løsningene, men forstår ikke hva som skjer. F.eks denne koden jeg har lagt med. Er det noen som har lyst til å tid til å forklare meg hva som skjer?

Kommer sikkert til å sende inn flere oppgaver etterhvert:):)

Blir veldig glad for hjelp:)

Hva blir skrevet ut når dette programmet kjøres?

 

PROGRAM oppgave1b

IMPLICIT NONE

INTEGER, DIMENSION( 1:9, 1:9 ) :: tabell

INTEGER i, j

DO i = 1, 9

DO j = 1, 9

tabell( i, j ) = 0

END DO

END DO

tabell( 8, 8 ) = 1

DO i = 7, 1, -1

DO j = 8, i, -1

tabell( i, j ) = tabell( i+1, j ) + tabell( i+1, j+1 )

END DO

END DO

DO i = 8, 1, -1

WRITE( *,'( 1X, 9I4 )' ) ( tabell( i, j ), j = i, 8 )

END DO

END PROGRAM oppgave1b

Lenke til kommentar
Videoannonse
Annonse

Siden innlegget ditt ikke har noe med Java å gjøre, er det off-topic.

 

Det finnes en egen gruppe som tar for seg programmering generelt, prøv heller der.

 

Uansett...

 

-Har du i det hele tatt _PRØVD_ å lese koden?

-Hvilke(n) linje® er det du ikke forstår?

-Har du prøvd å KJØRE koden?

 

Programeksempelet du kommer med er jo banalt enkelt, og gjør bruk av prinsipper som vel må være noe av det første man lærer seg når man begynner med programmering. Hvis du ikke forstår disse prinsippene blir det veldig vanskelig for meg å forklare. Så jeg står over.

 

Et par av linjene kan vel være litt slitsomme hvis man ikke kan Fortran, men det er nok av Fortran-dokumentasjon og tutorials på nettet.

 

Og siden eksempelet du kommer med er løsningen på en oppgave, så bør du kanskje lese oppgaveteksten. Kanskje det gir deg et clue om hva programmet egentlig skal gjøre.

 

Werner

Lenke til kommentar
Hei hei. Fant ikke noe for fortran, men regner med dere java- programmerere kan dette:)

"Generell programmering" hadde kanskje passet bedre? Fortran er det noen år siden sist jeg tittet på men jeg kan jo ta en rask titt å se hva jeg finner ut :)

 

Hva blir skrevet ut når dette programmet kjøres?

Har du prøvd å kompilere programmet og kjøre det?

 

Men la gå jeg tar en titt. Først og fremst ser jeg at dette er slik nymotens Fortran, Fortran 95 antagelig. Kjedelig, men også ganske greit for da kan vi indentere det litt så blir det lettere å forstå. Gammel-fortran var kolonne-basert, og ikke så lett å indentere slik man gjerne gjør i dag. (Og folk klager over Python sin tolkning av whitespace? hah!)

 

PROGRAM oppgave1b
 IMPLICIT NONE
 INTEGER, DIMENSION( 1:9, 1:9 ) :: tabell
 INTEGER i, j

Her deklareres det en to-dimensjonal array og to integere i og j. Siden det er IMPLICIT NONE må vi deklarere de. En av de artige kuriositene i Fortran er jo nettopp hvordan den bestemmer typen til en variabel utifra forbokstaven i variabelnavnet:) Men dette skrus altså av med 'IMPLICIT NONE'.

 

  DO i = 1, 9
DO j = 1, 9
  tabell( i, j ) = 0
END DO
 END DO

Litt initialisering av tabellen; sett alle felter til 0. Legg merke til at indekser starter på 1 og ikke 0 som du kanskje er vant til.

 

  tabell( 8, 8 ) = 1

Litt mer initialisering...

 

  DO i = 7, 1, -1
DO j = 8, i, -1
  tabell( i, j ) = tabell( i+1, j ) + tabell( i+1, j+1 )
END DO
 END DO

Her er selve beregningen som dette lille programmet gjør. Dette er strengt tatt akkurat som en vanlig nøstet for-løkke som du bør kunne. Den ytterste teller nedover fra 7 til 1 og den innerste teller nedover fra 8 til i. For hver iterasjon settes en verdi i arrayen.

 

Nøyaktig hvordan arrayen ser ut når denne er ferdig kan du regne ut selv, DET gidder jeg ikke gjøre for deg :) Evt kan du kompilere og kjøre programmet.

 

  DO i = 8, 1, -1
WRITE( *,'( 1X, 9I4 )' ) ( tabell( i, j ), j = i, 8 )
 END DO

Her skrives tabellen ut, med en litt fancy format-string. Slå opp i boka du sikkert har for hva denne format-stringen betyr. Jeg husker ikke hvertfall, det er for lenge siden :)

 

END PROGRAM oppgave1b

Og så var moroa over.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...