naums hat geschrieben:Ich würde mich über Feedback freuen.
https://www.proggen.org/doku.php?id=fortran:test
Bei Hello World habe ich die Tabs vorne natürlich direkt weggelassen, aber das kann man Dir natürlich nicht anlasten, schließlich hast Du es in Fettschrift über das Listing geschrieben.
Warum eigentlich Tab? Später erklärst Du 6 Leerzeichen und benutzt auch die 6 Leerzeichen statt des Tabs!?
Da ich aber bereits eine Programmiersprache kann, interessiert mich auch ein bisschen, wie dieses Hello World funktioniert. Wofür steht (*,*)? Und warum kommt nicht "Hello World" raus, sondern "<Leerzeichen>Hello World"?
Was bedeutet ähnlich wie der gcc? Kann ich da -std=c++11 eingeben? Funktioniert -Wall?
Ich denke, Du willst auf -o heraus, dann schreib das doch einfach. Andere Flags wüsste ich jetzt nicht, die ähnlich zu C++ sind!?
-I für Include-Verzeichnisse? Wie funktioniert das bei Fortran? Vielleicht könnte man da noch eine kleine Tabelle machen, um da eine Vorstellung zu bekommen, oder den Satz rausnehmen und die Flags anderswo aufführen, da wir ja nur die Installation testen.
Die Seite "Installation machen" und "Installation testen" könnte man zusammenlegen, beides ist ja relativ kurz.
https://www.proggen.org/doku.php?id=fortran:structure
Warum möchtest Du die Fixed Form im Tutorial nutzen? Wir haben 2015, seit Fortran 95 hat man sich mit dem Gedanken angefreundet, dass Lochkarten in der IT wohl keine Zukunft haben.
Ich habe mit Fixed Form kein Problem, da viel Code noch in der Form vorliegt, aber ich würde regelmäßig beides zeigen, so dass die Leute alten Code lesen und warten können und aktuellen Code schreiben können.
https://www.proggen.org/doku.php?id=fortran:variable
"God is real, unless declared integer." ^^
Bei folgendem Programm hat mich interessiert, ob Fortran kommentarlos Integer und Reals verpackt.
Code: Alles auswählen
PROGRAM main
INTEGER :: a,b
REAL :: c,d
a = 12
b = 42
c = 0.3
d = a + b * c
write (*,*) d
END PROGRAM
und bekam heraus:
Code: Alles auswählen
xin@trinity:~/temp/fortran$ gfortran vars.f
xin@trinity:~/temp/fortran$ ./a.out
24.6000004
Pack das doch mal dazu.
Und ich hätte gerne dazu eine Erklärung:
Code: Alles auswählen
xin@trinity:~/temp/fortran$ cat vars.c
#include <stdio.h>
int main(void)
{
int a = 12, b=42;
double c=0.3, d;
d = a+b*c;
printf("%.8lf\n", d );
return 0;
}
xin@trinity:~/temp/fortran$ gcc vars.c
xin@trinity:~/temp/fortran$ ./a.out
24.60000000
xin@trinity:~/temp/fortran$
Stellen wir die Ergebnisse mal untereinander:
Wir erinnern uns kurz an das Kapitel "Warum Fortran?"
Außerdem wird Fortran heute noch im mathematischen Sektor verwendet
Da stellt sich mir eine Frage...
WARUM!?? Wenn ich das so sehe, sollten wir uns darüber dringend Gedanken machen. ^^
https://www.proggen.org/doku.php?id=fortran:subroutine
"Wichtig bei Fortran ist, dass die Parameter in der Funktion / im Unterprogramm definiert werden. Dort wird entschieden, wie die Werte an den übergebenen Stellen (Call-By-Reference) zu interpretieren sind."
Kapiere ich nicht. Und der "/" macht's nicht einfacher. Es wird später klarer, in dem es erklärt wird. Besser so schreiben, dass die Erklärung vorne steht und der unverständliche Text verschwindet. Die Information Call-by-Reference dann vielleicht nachreichen?
Aktuelles Fortran erlaubt die Typprüfung, soweit mir bekannt.
Code: Alles auswählen
INTEGER FUNCTION func ( a, b, c )
INTEGER a,b
REAL c
func = a+b * c
return
END SUBROUTINE
Subroutine mag mein Compiler nicht.
Nachdem ich das korrigiert habe, kann ich aber immernoch nicht kompilieren:
Code: Alles auswählen
xin@trinity:~/temp/fortran$ cat call.f
INTEGER FUNCTION func ( a, b, c )
INTEGER a,b
REAL c
func = a+b * c
return
END FUNCTION
PROGRAM main
c real r
c r = call func( 12, 42, 0.3 )
c write (*,*) r
write (*,*) func( 12, 42, 0.3 )
END
xin@trinity:~/temp/fortran$ gfortran call.f
call.f:13.25:
write (*,*) func( 12, 42, 0.3 )
1
Error: Return type mismatch of function 'func' at (1) (REAL(4)/INTEGER(4))
Also "REAL FUNCTION func ( a, b, c )".
Weshalb funktioniert die Zuweisung auf r eigentlich nicht?
Aus eigener Erfahrung schreibst Du am besten fertige lauffähige Programme, testest sie und beschreibst sie dann, in dem Du aus dem lauffähigen Programm die Teile rauskopierst. Copy and Paste im Wiki führt zu entsprechenden Fehlern. REAL FUNCTION und END FUNCTION habe ich korrigiert.
Ich lese weiter...

Soweit verstehe ich es aber gut und habe bereits was gelernt.
