21. Programspråket F
21.1 Ett programspråk med både
ett förflutet och en framtid
Det nya
språket FTM har utvecklats som en möjlig ersättare
för Pascal vid programmeringsutbildning, men det är samtidigt
en äkta delmängd av Fortran 90 och Fortran 95.
Det finns F-kompilatorer för Windows, Unix och Linux gratis tillgängliga,
och nästan gratis för MAC Power PC.
Nyckelord är reserverade ord och måste ges med små
bokstäver (gemener), andra identifierare kan vara blandat stora
och små bokstäver (men bara i en kombination per variabel,
och på grund av att det är en delmängd av
Fortran kan inte Var och vaR avse olika variabler).
Funktioner och subrutiner tillåtes
enbart via moduler, funktioner måste ha en resultatvariabel.
Alla variabler måste deklareras explicit
(satsen IMPLICIT NONE är därför implicit,
och fick tidigare inte förekomma explicit, numera är den dock
tillåten av kompatibilitetsskäl).
När den är tillgänglig är därför
kompilatorväljaren -u mycket användbar vid
test av F program med en Fortran 90 kompilator.
Läroböcker om F:
- Jeanne C Adams, Walter S Brainerd, Jeanne Martin och Brian Smith:
The Key Features of F, Unicomp, New Mexico, 1996. ISBN 0-9640135-2-5.
- Walter S Brainerd, Charles H Goldberg och Jeanne C Adams:
Programmer's Guide to F, Unicomp, New Mexico, 1996. ISBN 0-9640135-1-7.
- T M R Ellis och I R Philips: Programming in F,
Addison-Wesley Publishing Company, Reading, Massachusetts 1996.
ISBN 0-201-17991-1.
- Wilhelm Gehrke: The F Language Guide, Springer, Berlin, 1997.
ISBN 3-540-76165-9.
- Wilhelm Gehrke: Die Programmiersprache F, Springer, Berlin, 1997.
ISBN 3-540-63376-9. (Tysk version av boken ovan)
- Loren P. Meissner: essential Fortran 90 & 95,
Common Subset Edition,
Unicomp, New Mexico, 1997. ISBN 0-9640135-3-3.
- Michael Metcalf och John Reid: The F Programming Language,
Oxford University Press, Oxford, 1996. ISBN 0-19-850026-2.
- Robin A Vowels:
Algorithms and Data Structures in F and Fortran, Unicomp, New Mexico,
1999. ISBN 0-9640135-4-1.
Ett exempel på ett program i F finns i
appendix A 8 om Fortrans utveckling.
21.2 Vad finns i Fortran 90 men inte i
FTM
Här följer en kort beskrivning av vad som finns i Fortran 90,
men inte i F.
Alla F program är samtidigt giltiga Fortran 90 program!
Ett F program innehåller inte:
- Alternativa återhopp
- Aritmetisk IF-sats
- Binära, oktala eller hexadecimala konstanter
- BLOCK DATA
- CASE-satsen kan inte arbeta med logiska styrvariabler
- Deklarationen CHARACTER*1, men deklarationen CHARACTER(LEN=1) är tillåten
- Delsträngar av textsträngs-konstanter
- DO-satsen tillåter inte komma direkt efter DO. Fortran 90
tillåter ett komma direkt efter satsnumret i DO-satsen, eller om
satsnumret saknas, direkt efter DO. Detta onödiga komma har jag tidigare struntat
i att berätta om, eftersom det inte ökar läsbarheten och
dessutom är mycket ovanligt.
- En textsträng inuti en formatbeskrivning (utan att gå via en variabel).
Ett exempel på den i F otillåtna varianten ges som tredje
(och fjärde) alternativ i
lösningen
till övning 19.10.
- Fix form av källkoden
- Formatbokstäverna
b, o, z, d, e, en, g, p, x, bn, bz; för
flyttal kan däremot f och
es användas.
Vid in/utmatning kan
bokstäverna E, d, D användas i stället för e
- Funktioner med textsträng av antagen längd som resultat
- Implicita deklarationer
- INCLUDE
- Interna funktioner och subrutiner
- Logisk IF-sats (varianten på en rad)
- NAMELIST
- Namn på CASE eller IF-konstruktioner
- Satsfunktioner
- Satsnummer
- Specifikationerna blank=, delim=, end=, err=, nml=, pad=
- Stopp-kod till STOP-satsen
- Symbolen ; som åtskiljare av satser
- Symbolen & som första tecken på en
fortsättningsrad
Ett F program kan inte ha följande kommandon:
Ett F program kan inte ha följande inbyggda funktioner:
Ett F program kräver att:
- Alla variabler skall deklareras, och eventuella
attribut skall
specificeras i deklarationen.
- Alla nyckelord (kommandon) och alla inbyggda procedurer (funtioner och subrutiner)
skall ges med gemener
(små bokstäver) och är reserverade ord.
- Varje F procedur måste ges i en modul.
- Alla variabler, variabeltyper och procedurer deklarerade i en
modul
måste ha sina
access-attribut ("public" or "private") deklarerade explicit.
- Deklarationerna måste komma i en viss ordning.
- Ingen F funktion får ha någon sidoeffekt,
utom att eventuellt ha formatterad in/utmatning till standardenheten eller ha en
"stop" sats.
- En "open" sats måste indikera position, status
och åtgärd. Dessa får inte stå i konflikt med varandra.
Alternativet "unknown" saknas.
- Textsträngar markeras med citattecken eller dubbelblipp " och inte med
apostrof eller enkelblipp ' och absolut inte med
Hollerith-konstruktionen.
- Funktioner måste ha
resultatvariabel.
- Första tecknet vid utmatning tolkas inte som
styrtecken.
- En enhet som redan är ansluten får inte öppnas.
- Alla inbyggda funktioner är generiska.
Ett F program kräver vidare att följande valfria element
i Fortran 90 följes:
- Varje end-sats måste ges i fullständig form.
- Huvudprogrammet måste ha en program-sats.
- Även subrutiner utan argument måste ha en parentes.
- Ett F-system utnyttjar ASCII-teckensättet.
- En modul som utvidgar en inbyggd procedur måste ha en
intrinsic specifikation.
- Beteckningen dubbelkolon :: är obligatorisk vid deklarationer,
och inga specifikationer får ges efter detta (förutom variabler).
Alla kommandon som kan ges som attribut skall, om de är aktuella,
ges som attribut!
- Alla slag anges
med kind=namnad_skalaer_konstant.
- I parentesen till en open-sats måste "unit="
vara med, vid formattering måste även "fmt=" vara med.
- I parentesen till en backspace, endfile eller rewind-sats
måste "unit=" vara med.
- "Onödiga" blanktecken får inte förekomma i format-information
(tillåtet före och efter komma eller parentes, och efter en
repetitionsfaktor och före en fältbredd eller en tabulatorräknare).
- Operationerna
.ge. .gt. .eq. .ne. .le. .lt. måste ersättas
med >= > == /= <= <.
- En identifierare måste rymmas på raden. Gäller även
sådana sammansatta som end do.
- Ett flyttalsvärde måste ges med minst en siffra på
varje sida om decimalpunkten, och kan bara ha e och inte d
som exponent-bokstav.
- Externa underprogram kan skrivas i andra språk, inkluderande Fortran 90,
och måste då naturligtvis ha ett
gränssnitt.
- I varje argumentlista måste eventuella
frivilliga
(underförstådda) argument komma efter de obligatoriska.
- Avsikten hos
varje formellt argument måste ges, såvida det inte
är en pekare eller procedur.
- Ingen variabel i huvudprogrammet kan ha begynnelsevärde.
F är ett varumärke för
Imagine1, Inc.,
The Fortran Company, Tucson, Arizona, USA.
Senast modifierad: 3 juni 2014
boein@nsc.liu.se