New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Fortran - Wikipedia

Fortran

Van Wikipedia

Fortran is een programmeertaal die speciaal ontwikkeld is voor wetenschappelijke doeleinden. Het woord Fortran is een samentrekking van FORmula TRANslation. Fortran is om verschillende redenen van belang. Ten eerste was het de eerste hogere programmeertaal, die alleen daardoor al zijn stempel op alle andere programmeertalen gedrukt heeft. Ten tweede was het de eerste taal die door het ANSI gestandaardiseerd werd en is de ontwikkeling af te lezen uit een aantal opvolgende standaards (Fortran 66, Fortran 77, Fortran 90, Fortran 95 en Fortran 2003), waarbij de compatibiliteit met voorgaande versies zo veel mogelijk behouden bleef. Ten slotte is het decennia lang de meest toegepaste taal voor natuurwetenschappelijke en econometrische problemen gebleven . De blijvende populariteit van Fortran wordt dan ook treffend beschreven in de anonieme uitspraak: Ik heb geen idee hoe de programmeertaal van de toekomst er uit zal zien, maar één ding is zeker: hij zal Fortran heten.

Inhoud

[bewerk] Vroege geschiedenis

De eerste versie is ontwikkeld door een aantal medewerkers van IBM onder leiding van John Backus. Het eerste rapport over Fortran dateert van 1954, de eerste werkende compiler, voor de IBM-704, kwam begin 1957 gereed. Al in 1958 kwam de opvolger daarvan, Fortran II, beschikbaar. In de jaren daarop verschenen vele versies van Fortran, ook van andere leveranciers dan IBM. Dit leidde tot bemoeienis van het ANSI, die in 1966 de standaard Fortran 66 publiceerde. Fortran 66 kende twee versies, namelijk Basic Fortran, dat ongeveer overeenkwam met Fortran II, en full Fortran, dat het meest leek op de op dat moment nieuwste versie, Fortran IV. Omdat latere versies van Fortran niet vernieuwend meer waren maar de ontwikkelingen bij andere programmeertaal op enige afstand volgden wordt hier een beschrijving van Basic Fortran 66 gegeven. Hoewel die taal alleen in een ver verleden gebruikt werd staat de beschrijving in de tegenwoordige tijd.

[bewerk] Kenmerken van Fortran 66

De schrijfwijze is gebaseerd op de veronderstelling dat programma's op ponskaarten worden aangeboden aan de computer. Van de 80 kolommen van de ponskaart kunnen de laatste acht worden gebruikt voor een volgnummer, wat nuttig is als de operateur een stapel ponskaarten uit de handen laat vallen. In kolom 1 geeft een 'C' aan dat de kaart slechts commentaar bevat en ieder ander teken dan een spatie in kolom 6 geeft aan dat de kaart als een vervolg op de vorige kaart beschouwd moet worden: de gewone toestand is dus dat één kaart één opdracht bevat, die in kolom 7 t/m 72 staat. Kolommen 2 tot en met 5 worden gebruikt voor getallen die als label dienen; deze getallen mogen in willekeurige volgorde staan. Zoals gebruikelijk bij ponskaartinvoer gebruikt Fortran alleen hoofdletters.

Spaties zijn in Fortran niet significant: woorden mogen naar believen aan elkaar of los worden geschreven. Ook kent Fortran geen gereserveerde woorden: namen van statements mogen ook worden gebruikt als namen van variabelen. Deze regels zijn niet erg zinvol omdat ze het schrijven van een compiler moeilijker maken en voor de gebruiker weinig voordeel opleveren.

Enkelvoudige variabelen hoeven niet gedeclareerd te worden. Gehele variabelen hebben een naam die begint een van de letters I t/m N, Reële variabelen hebben een naam die met een andere letter begint. Array’s moeten gedeclareerd worden met de DIMENSION opdracht. Zij hebben hoogstens twee dimensies en de ondergrens is altijd 1. Variabelen die in de COMMON opdracht gedeclareerd worden zijn globaal; zij kunnen zowel in het hoofdprogramma als in subroutines en functies gebruikt worden. Alle andere variabelen zijn lokaal; lokale variabelen in subroutines en functies hebben hun oude waarde bij een nieuwe aanroep, net als de own variabele in Algol-60.

De toewijzingsopdracht (assignment statement) heeft de vorm

Variabele = Formule

Bijzonderheden zijn dat machtsverheffen wordt aangegeven met ** en dat een formule of alleen gehele of alleen reële waarden mag bevatten. Het resultaat van een deling (/) hangt dan ook af van het type van deler en deeltal: het resultaat van 3/2 is 1, het resultaat van 3.0/2.0 is 1.5. Komen gehele en reële waarden in één formule voor dan moet de functie FLOAT of IFIX gebruikt worden voor de noodzakelijke conversie. Bij de toewijzing wordt weer wel een automatische conversie uitgevoerd: bij conversie naar een gehele waarde wordt het resultaat afgekapt en niet afgerond.

Er zijn slechts drie controlestructuren namelijk de DO opdracht, de IF-opdracht en de GOTO-opdracht;

De DO-opdracht heeft de vorm:

DO label, variabele = beginwaarde, eindwaarde, stapgrootte

De variabele moet enkelvoudig en geheel zijn en een stapgrootte van 1 kan worden weggelaten. Een DO-opdracht heeft tot gevolg dat de opdrachten tot en met de opdracht met het opgegeven label herhaald worden totdat de eindwaarde bereikt is. Omdat niet alle opdrachten als eindopdracht van een DO-lus kunnen dienen kan de label voor de loze opdracht CONTINUE worden gezet. Basic heeft deze constructie eleganter geformuleerd met FOR-NEXT

De IF-opdracht heeft een zeer curieuze vorm, namelijk

IF(formule) label1, label2, label3

Dit betekent dat het programma naar label1 springt als het resultaat van de formule negatief is, naar label2 als het nul is en naar label3 als het positief is. Ook in dit geval is de formulering in Basic eleganter:

Fortran:
    IF(I-3)100,110,110
100
Basic
    IF I>=3 THEN 110

De gewone GOTO-opdracht heeft de vorm

GOTO label 

De berekende GOTO-opdracht heeft de vorm:

GOTO(label1,label2,…labeln), variabele 

Hier bepaalt de waarde van de gehele variabele bij welke label het programma wordt voortgezet. Deze opdracht is dus te vergelijken met de ON GOTO in Basic of het gebruik van de Switch in Algol-60.

Programma’s, subroutines en functie eindigen met END. Het hoofdprogramma stopt bij het bereiken van END, subroutines en functies keren terug naar het hoofdprogramma bij RETURN. Een functie wordt in een formule aangeroepen, een subroutine wordt met CALL aangeroepen.

De wijze waarop gegevens worden afgedrukt wordt bepaald in een FORMAT-opdracht, waarna in de opdracht READ, WRITE of PRINT wordt verwezen. Deze kan ook worden gebruikt om niet-numerieke gegevens af te drukken, die overigens niet kunnen worden verwerkt. Hiervoor wordt gebruikgemaakt van zogenaamde Hollerithconstanten, waarbij het aantal karakters zorgvuldig moet worden geteld.

[bewerk] Hello world

Hello World programma in basic Fortran 66:  

  PRINT 10
10  12HHELLO WORLD
  END

 

[bewerk] Voor- en nadelen

Een belangrijk voordeel is dat standaard Fortrancode altijd heel goed overdraagbaar is geweest tussen machines omdat er geen machinespecifieke commando's in de taal waren gedefinieerd. Er waren wel dialecten gemaakt door specifieke computerleveranciers die niet-overdraagbare uitbreidingen hadden. Ook zijn Fortrancompilers vaak erg stabiel en leveren ze erg snelle code; door het ontbreken van pointers kan een Fortrancompiler meer optimalisaties uitvoeren dan bijvoorbeeld een C-compiler. In de jaren 1960 werd Fortran vooral toegepast op computers van IBM en CDC, terwijl Algol-60 de taal was voor tragere en minder betrouwbare Europese computers. Typerend voor die tijd is de uitspraak van de natuurkundige Walter Hoogland: Fortran is beter dan Algol, want de bandponser van het MC is altijd kapot.

Fortran heeft oorspronkelijk weinig faciliteiten gehad om op laag niveau met het besturingssysteem te converseren, en het kende lange tijd ook geen pointers. Dit maakte het moeilijk om Fortran te gebruiken voor systeemtaken, maar het gebruik van hogere programmeertalen voor dit doel kwam pas op in de jaren 1970.

[bewerk] Latere ontwikkelingen

[bewerk] Fortran 77

Fortran 77 was op beide punten sterk verbeterd: er waren veel meer controlestructuren en er werden karaktergegevens geïntroduceerd.

[bewerk] Fortran 90

Fortran 90 heeft pointers geïntroduceerd. Dit gebeurde op een moment waarop al regelmatig gewezen werd op de problemen bij het gebruik van pointers in Pascal en C

[bewerk] Fortran 95

[bewerk] Fortran 2003

[bewerk] Bronnen

  • Davis,G.B., An Introduction to Electronic Computers, McGraw-Hill, New York, 1965.
  • Sammet, J.R., Programming Languages: History and Fundamentals, Prentice-Hall, Englewood Cliffs N.J., 1969.
  • Zander,C., Art and Beauty of Computer Science & Mathematics
{{{afb_links}}} Overzicht van programmeertalen {{{afb_rechts}}} {{{afb_groot}}}

Industrieel: Ada - AWK - Assembler - C - C++ - C# - COBOL - F# - Fortran - J# - Java - JavaScript - Lisp - Object Pascal - Pascal - Perl - PHP - Python - Visual Basic

Academisch: Eiffel - Haskell - Logo - ML - Prolog - Scheme - Smalltalk

Historisch: ALGOL - APL - BASIC - Clipper - MUMPS - PL/I - PowerBuilder - Simula

 

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu