In de programmeerwereld zijn controle-instructies essentieel voor het sturen van de uitvoeringsstroom van een programma. Deze structuren bepalen hoe variabelen worden geüpdatet, welke berekeningen worden uitgevoerd en welke paden het programma volgt op basis van de gegeven invoer. In dit hoofdstuk behandelen we enkele toepassingen van controle-instructies in Fortran, met name het gebruik van logische en aritmethische controle-instructies voor het berekenen van sommen, het valideren van gegevens en het bepalen van promotie- of studiestatussen.

In het eerste voorbeeld hebben we een eenvoudig Fortran-programma dat de som van de eerste n gehele getallen berekent. Het programma maakt gebruik van een logische if-instructie om te bepalen wanneer het de som kan afdrukken, nadat de waarde van de teller i gelijk is aan de waarde van n. De waarde van de som wordt vergeleken met de waarde die door een standaardformule wordt berekend, wat aantoont dat de logica correct is. Dit illustreert hoe logische controle-instructies de stroom van het programma bepalen door beslissingen te nemen op basis van de toestand van variabelen.

Een ander voorbeeld maakt gebruik van een if-instructie om invoer te valideren. Hier wordt een negatieve snelheid niet geaccepteerd, en als een negatieve waarde wordt ingevoerd, stopt het programma met een foutmelding. Dit toont aan hoe controle-instructies niet alleen de uitvoering kunnen sturen, maar ook de nauwkeurigheid van gegevensinvoer kunnen waarborgen, waardoor ongeldige invoer wordt afgewezen. Het programma biedt echter ook een verbeterde versie waarin de gebruiker wordt uitgenodigd om een geldige snelheid opnieuw in te voeren, nadat een ongeldige waarde is opgegeven. Dit wordt gerealiseerd door een zogenaamde "aritmetische if"-instructie, die de uitvoer van de controle verandert op basis van een voorwaarde.

De toepassing van een ander controleconcept komt naar voren in het programma dat de status van een student bepaalt op basis van de behaalde cijfers. Als een student minder dan 40% van het totale aantal punten behaalt, wordt hij of zij als "gezakt" gemarkeerd, anders wordt de student als "geslaagd" beschouwd. Dit type controle-instructie is eenvoudig, maar effectief, en toont aan hoe complexe beslissingen kunnen worden genomen op basis van eenvoudige vergelijkingen. Het gebruik van een vergelijkbare controle-instructie in een uitgebreidere versie, waarbij de cijfers van vier vakken worden gecombineerd om de algehele score te bepalen, benadrukt de kracht van controle-instructies in het manipuleren van meerdere voorwaarden tegelijk.

Interessant is de toepassing van de goto-instructie, die in de bovenstaande programma's wordt gebruikt om de uitvoeringsstroom te herstarten of naar een ander deel van het programma te springen. Dit biedt de mogelijkheid om de gebruiker meerdere keren om invoer te vragen, zonder dat er complexe herhalingsstructuren zoals lussen nodig zijn. Dit type controle is vooral handig in programma's waar meerdere pogingen tot correcte invoer nodig zijn.

In de context van wetenschappelijke berekeningen komt de kracht van controle-instructies naar voren bij het berekenen van reeksen, zoals in het programma voor het berekenen van de som van een reeks van machten van een getal X. Hier wordt een if-instructie gebruikt om de som van de reeks te berekenen totdat het bereik van n is bereikt. Dit soort logica kan verder worden aangepast, zoals te zien is in een programma dat Fibonacci-nummers genereert. De Fibonacci-reeks is een beroemde reeks waarin elk getal gelijk is aan de som van de twee voorgaande getallen. Door gebruik te maken van controle-instructies kan het programma de Fibonacci-nummers tot 20000 genereren en zelfs de verhouding tussen opeenvolgende Fibonacci-getallen berekenen, die naarmate de reeks vordert, naar een constante waarde convergeert.

Wat deze voorbeelden gemeen hebben, is het gebruik van controle-instructies om ervoor te zorgen dat programma’s op de juiste manier reageren op de invoer van de gebruiker en de juiste berekeningen uitvoeren, afhankelijk van de gegeven voorwaarden.

Een belangrijk aspect van deze controle-instructies is het gebruik van variabelen die de logica aandrijven: variabelen zoals i, n, sum, en vel spelen cruciale rollen in de uitvoering van de berekeningen en de voorwaarden die aan de controle zijn verbonden. Het is van groot belang voor de lezer om te begrijpen hoe deze variabelen door het programma kunnen worden gemanipuleerd om verschillende uitkomsten te bereiken. Het wijzigen van de waarde van een variabele kan de stroom van het programma totaal veranderen, wat de flexibiliteit van controle-instructies illustreert.

Naast de logica die wordt toegepast in de verschillende voorbeelden, is het belangrijk om de efficiëntie van de code in overweging te nemen. In grotere en complexere programma's kunnen ondoordachte controle-instructies, zoals overmatig gebruik van goto-instructies, de leesbaarheid van de code verminderen. Het is essentieel dat de lezer ook inzicht heeft in het belang van een gestructureerde benadering van controle-instructies, wat de ontwikkeling van onderhoudbare en begrijpelijke code bevordert.

Hoe de DO-lus en FORMATS in Fortran Werken: Een Grondige Uitleg van Belangrijke Concepten

In Fortran, een van de oudste en krachtigste programmeertalen voor numerieke berekeningen, spelen lussen en formaatcommando’s een cruciale rol in het effectief verwerken en presenteren van data. De DO-lus bijvoorbeeld, is essentieel voor herhalende operaties, maar moet zorgvuldig worden toegepast om eindeloze lussen te vermijden. Dit geldt vooral wanneer we werken met geneste lussen, die door hun complexiteit vaak voor verwarring kunnen zorgen. Het gebruik van FORMAT-commando’s is net zo belangrijk, aangezien ze de manier waarop gegevens worden ingevoerd of weergegeven sturen, waardoor de leesbaarheid en precisie van je programma’s verhoogd worden.

De DO-lus in Fortran is een eenvoudige manier om een reeks herhalingen uit te voeren. Stel je voor dat je de factoren van een getal wilt vinden. Een eenvoudige DO-lus kan dit doen door alle getallen van 1 tot N te doorlopen en te controleren of ze een factor zijn van N. Dit kan eenvoudig worden geïmplementeerd in Fortran, zoals te zien is in het volgende voorbeeld:

fortran
WRITE(*,*) 'Input the no' READ(*,*) N WRITE(*,*) 'FACTORS OF ', N, ' ARE:' DO 10 I = 1, N K = MOD(N, I) IF (K .EQ. 0) WRITE(*,*) I 10 CONTINUE STOP END

In dit programma wordt elke waarde van I van 1 tot N gecontroleerd, en als I een factor is van N, wordt deze geprint. Het resultaat is eenvoudig en efficiënt, maar zoals met elke DO-lus in Fortran, moeten we oppassen dat we geen onbedoelde oneindige lussen creëren.

Een ander voorbeeld dat aandacht vereist, is het creëren van een onophoudelijke lus. In een Fortran-programma kan een fout in de structuur van een lus leiden tot een programma dat blijft draaien totdat het handmatig wordt gestopt. Dit gebeurt bijvoorbeeld wanneer de controle na een lus terugverwijst naar de beginpositie, zoals in het volgende voorbeeld:

fortran
5 DO I = 1, 1000
END DO GOTO 5

In dit geval zorgt de GOTO 5 ervoor dat de lus opnieuw begint, waardoor het programma in een ononderbroken cyclus terechtkomt. Dit soort fouten kan gemakkelijk over het hoofd worden gezien, maar is eenvoudig te vermijden door de structuur van lussen goed te plannen en te testen.

Geneste DO-lussen vormen een geavanceerdere techniek in Fortran, waarbij een DO-lus binnen een andere DO-lus wordt geplaatst. Dit wordt vaak gebruikt om herhalingen van variërende lengtes te beheren, zoals het printen van getallen die meerdere keren worden herhaald, afhankelijk van hun waarde. Het onderstaande voorbeeld illustreert hoe dit werkt:

fortran
DO 10 I = 1, 5 DO 20 J = 1, I WRITE(*,*) I 20 CONTINUE 10 CONTINUE STOP END

Dit programma print de cijfers 1 tot 5, waarbij elk getal het aantal keren wordt herhaald dat overeenkomt met zijn waarde. Bij I = 1 wordt 1 één keer geprint, bij I = 2 wordt 2 twee keer geprint, enzovoort. De binnenste lus (J-lus) wordt eerst uitgevoerd en daarna wordt de buitenste lus opnieuw gestart.

De FORMAT-commando’s zijn ook essentieel voor het beheren van de invoer en uitvoer van gegevens in Fortran. Ze bieden een manier om gegevens op een specifieke manier te formatteren, zodat deze leesbaarder zijn of voldoen aan bepaalde vereisten. Dit is bijzonder belangrijk wanneer je met grote hoeveelheden numerieke data werkt.

De meest gebruikelijke formatteermethoden in Fortran zijn:

  • I FORMAT voor gehele getallen (bijvoorbeeld FORMAT (I4) voor een geheel getal met een breedte van 4 tekens).

  • F FORMAT voor decimale getallen, waarbij de breedte en het aantal decimalen kunnen worden gedefinieerd (bijvoorbeeld FORMAT (F8.3) voor een getal met een breedte van 8 tekens en 3 decimalen).

  • E FORMAT voor exponentiële notatie, wat nuttig is voor wetenschappelijke berekeningen (bijvoorbeeld FORMAT (E14.6)).

  • X FORMAT voor het overslaan van een bepaald aantal tekens in de uitvoer.

Een belangrijk aspect van het gebruik van FORMAT is het zorgvuldig kiezen van de juiste breedte en precisie, zodat gegevens correct worden weergegeven. Het is cruciaal om de juiste breedte te kiezen, omdat te kleine waarden kunnen leiden tot het verlies van gegevens, terwijl te grote waarden onnodige ruimte innemen.

Daarnaast moet men zich bewust zijn van de carriage control, een fenomeen waarbij de eerste letter van de uitvoer verloren gaat wanneer de uitvoer naar een printer wordt gestuurd. Dit kan worden opgelost door ervoor te zorgen dat het eerste teken een spatie is.

Wanneer je met Fortran werkt, is het belangrijk om de combinatie van lussen en FORMAT-commando’s goed te begrijpen en te gebruiken. Ze vormen de ruggengraat van veel numerieke berekeningen en data-analysetaken. Het correct toepassen van lussen, het vermijden van oneindige lussen en het zorgvuldig kiezen van de juiste formaten voor invoer en uitvoer kan je programma’s efficiënter en betrouwbaarder maken.

Hoe matrices transponeren en gegevensbestanden beheren in Fortran

In veel toepassingen van численный анализ, vooral при обработке больших массивов данных, важно уметь работать с матрицами и эффективно управлять вводом/выводом данных. Рассмотрим, как это можно реализовать в языке программирования Fortran с использованием подпрограмм и работы с файлами данных.

В Fortran можно легко выполнить операцию транспонирования матриц. Транспонирование матрицы заключается в обмене строк и столбцов. Например, если у нас есть матрица 3x3, то её транспонированная версия будет иметь размер 3x3, но в ней строки исходной матрицы заменены на столбцы. Для реализации транспонирования мы можем использовать подпрограмму, которая принимает матрицу и её размерности, и возвращает её транспонированную версию.

Программа, которая читает три матрицы различного размера, находит их транспонированные матрицы и выводит все матрицы (оригинальные и транспонированные) на экран, будет выглядеть следующим образом:

pgsql
subroutine readmat(a,m,n)
integer a(10,10) print*, 'supply m,n' read*, m, n print*, 'supply mat elements row wise' read(*,*) ((A(i,j), j=1,n), i=1,m) return end subroutine writemat(a,m,n) integer a(10,10) do i=1, m write(*,*) (A(i,j), j=1,n) end do return end subroutine transmat(ta,a,m,n) integer ta(10,10), a(10,10) do 15 i=1, m do 15 j=1, n ta(i,j) = a(j,i) end do end do return end program transpose_matrices integer a(10,10), b(10,10), c(10,10) integer ta(10,10), tb(10,10), tc(10,10) write(*,*) 'Enter first matrix' call readmat(a, m1, n1) write(*,*) 'Enter second matrix' call readmat(b, m2, n2) write(*,*) 'Enter third matrix' call readmat(c, m3, n3) call transmat(ta, a, n1, m1) call transmat(tb, b, n2, m2) call transmat(tc, c, n3, m3) print*, 'First matrix' call writemat(a, m1, n1) print*, 'transposed matrix' call writemat(ta, n1, m1) print*, 'Second matrix' call writemat(b, m2, n2) print*, 'transposed matrix' call writemat(tb, n2, m2) print*, 'Third matrix' call writemat(c, m3, n3) print*, 'transposed matrix' call writemat(tc, n3, m3) end

Программа находит транспонированные матрицы и выводит их. Как видно, важными аспектами являются правильное чтение матриц, их транспонирование с помощью подпрограммы и вывод как исходных, так и транспонированных матриц. Важное внимание стоит уделить структуре кода: подпрограммы должны быть определены до основной программы, а также процесс их вызова в теле основной программы должен быть чётко структурирован.

Работа с файлами данных является не менее важной частью программирования в Fortran, особенно при обработке больших объемов информации. В случае, когда данные должны быть получены не с клавиатуры, а из файлов, Fortran предоставляет простые механизмы для открытия, чтения, записи и закрытия файлов.

Процесс работы с данными из файлов включает в себя несколько ключевых операций:

  1. Открытие файла: для работы с файлами используется оператор OPEN. Он позволяет создать новый файл или открыть существующий для чтения/записи.

    Пример:

    fortran
    OPEN(1, FILE='marks.dat', STATUS='NEW')
  2. Чтение данных из файла: оператор READ позволяет считывать данные из открытого файла.

    Пример:

    fortran
    READ(1, *) student_name
  3. Запись данных в файл: оператор WRITE используется для записи данных в открытый файл.

    Пример:

    fortran
    WRITE(1, *) student_name, student_marks
  4. Закрытие файла: после того как все данные обработаны, файл необходимо закрыть с помощью оператора CLOSE.

    Пример:

    fortran
    CLOSE(1)

При работе с файлами важно понимать, что они используются для хранения данных, в то время как исходный код программы и исполнимые файлы выполняют другие функции. В случае, если необходимо сохранить результат работы программы для дальнейшего использования, данные записываются в файлы.

Например, следующая программа создает файл данных, в котором сохраняются номера студентов, их имена и оценки:

fortran
character*40 name integer rn, mark open(1, file='marks.dat') write(*,*) 'Input no. of students' read(*,*) ns do i = 1, ns write(*,*) 'Enter rollno, name, mark of a student one after another' read(*,*) rn read(*,14) name read(*,*) mark write(1,15) rn, name, mark end do

Этот процесс включает в себя чтение данных о студентах и запись их в файл marks.dat. Этот файл затем может быть использован другими программами или открыться для дальнейшего анализа.

Важно, чтобы читатель понимал, что данные, сохраненные в файле, могут быть использованы в различных программах и сценариях. Работа с файлами в Fortran предоставляет гибкость для обмена данными между программами, а также позволяет эффективно хранить большие объемы информации, используя стандартные текстовые форматы.

Hoe Derivaten te Benaderen met Numerieke Differentiatie en Differentiële Vergelijkingen Oplossen

In veel situaties in de wiskunde en natuurkunde hebben we te maken met functies waarvan we de afgeleiden willen bepalen, maar waarvan de expliciete formule moeilijk of onmogelijk te verkrijgen is. Het gebruik van numerieke differentiatie biedt hier een waardevolle oplossing. De centrale differentieformule is een van de meest gangbare benaderingen voor het berekenen van de afgeleide van een functie, die als volgt wordt gedefinieerd door de Taylorreeksuitbreiding:

f(x)=f(x+h)f(xh)2hf'(x) = \frac{f(x+h) - f(x-h)}{2h}

waarbij hh de incrementele stapgrootte is. Deze benadering geeft een waarde die benaderend is, omdat we de hogere afgeleiden in de Taylorreeks hebben weggelaten. Wanneer hh klein genoeg wordt gekozen, zal de fout in de berekening minimaal zijn. Echter, er is een limiet aan hoe klein hh kan zijn, aangezien ronde fouten ook toenemen bij kleinere waarden van hh.

Stel dat we de functie f(x)=2exp(x)x1f(x) = 2 \exp(x) - x - 1 hebben en we de afgeleide willen berekenen bij x=1x = 1, met verschillende waarden voor hh variërend van 0.01 tot 0.1. De exacte afgeleide is f(x)=2exp(x)1f'(x) = 2 \exp(x) - 1, en we kunnen de numerieke waarde berekenen voor verschillende stappen. Het resultaat laat zien dat naarmate de stapgrootte hh toeneemt, de fout in de berekening ook toeneemt. Bij de kleinste stapgrootte is de fout echter nog steeds klein, tot de vijfde decimaal.

Een vergelijkbare analyse kan worden uitgevoerd voor de functie f(x)=x2+4sin(x)f(x) = x^2 + 4 \sin(x). Ook hier zien we een vergelijkbaar patroon van fouten bij verschillende waarden van hh, wat aantoont dat de centrale differentieformule een redelijke benadering biedt voor de afgeleide, zelfs bij verschillende functies.

Een ander scenario doet zich voor wanneer we geen expliciete functie hebben, maar slechts een reeks discrete gegevenspunten (xi,yi)(x_i, y_i). In dit geval, als de gegevenspunten gelijkmatig verdeeld zijn met een stapgrootte hh, kan de drie-punt voorwaartse verschilformule voor de afgeleide worden gebruikt:

f(x)=3f(x)+4f(x+h)f(x+2h)2hf'(x) = \frac{ -3f(x) + 4f(x+h) - f(x+2h)}{2h}

Deze formule vereist drie opeenvolgende yy-waarden: f(x)f(x), f(x+h)f(x+h), en f(x+2h)f(x+2h). Door deze gegevens in een programma in te voeren, kunnen we de afgeleide op een specifiek punt berekenen, zoals getoond in het voorbeeld waarbij de yy-waarden worden gegeven voor x=5,6,7,8,9x = 5, 6, 7, 8, 9. Als we de afgeleide op het eerste, tweede of derde punt berekenen, krijgen we respectievelijk 4.25, 4.5 en 5.75. Dit bevestigt de toepasbaarheid van de drie-punt voorwaartse verschilformule bij het benaderen van afgeleiden uit discrete gegevens.

Naast de numerieke differentiatie is het ook essentieel om numerieke oplossingen voor differentiaalvergelijkingen te kunnen vinden, vooral voor eerste orde differentiaalvergelijkingen die wijdverspreid zijn in de natuur- en ingenieurswetenschappen. Een van de eenvoudigste methoden om deze vergelijkingen op te lossen is de Euler-methode. Deze methode maakt gebruik van de volgende formules:

x1=x0+h,y1=y0+h(dydx)0x_1 = x_0 + h, \quad y_1 = y_0 + h \left( \frac{dy}{dx} \right)_0

Voor latere stappen wordt de formule aangepast naar:

y1=y0+h2[(dydx)0+(dydx)1]y_1 = y_0 + \frac{h}{2} \left[ \left( \frac{dy}{dx} \right)_0 + \left( \frac{dy}{dx} \right)_1 \right]

waar (dy/dx)0(dy/dx)_0 de afgeleide is op het punt (x0,y0)(x_0, y_0), en (dy/dx)1(dy/dx)_1 de afgeleide is op het punt (x1,y1)(x_1, y_1). Door een kleine stapgrootte hh te kiezen, kan de methode voldoende nauwkeurige waarden van yy opleveren.

In het voorbeeld van de differentiaalvergelijking:

dydx=xy2,y0=1,x0=0\frac{dy}{dx} = \frac{x - y}{2}, \quad y_0 = 1, \quad x_0 = 0

met een stapgrootte van h=0.1h = 0.1, kunnen we de waarde van yy berekenen voor x=0.1,0.2,,1.0x = 0.1, 0.2, \dots, 1.0. De resultaten tonen aan dat de berekende waarden van yy dicht bij de werkelijke waarden liggen, die zijn afgeleid uit de analytische oplossing y=3exp(x/2)2+xy = 3 \exp(-x/2) - 2 + x.

De Euler-methode is relatief eenvoudig en biedt voldoende nauwkeurigheid voor veel toepassingen. Als echter een hogere nauwkeurigheid vereist is, kan de Runge-Kutta-methode worden toegepast, die complexer is maar betere resultaten oplevert, vooral voor niet-lineaire differentiaalvergelijkingen.

Het is belangrijk om te begrijpen dat, hoewel numerieke differentiatie en de Euler-methode krachtig zijn voor het oplossen van praktische problemen, ze niet altijd de beste benaderingen zijn voor alle situaties. Bij zeer stugge differentiaalvergelijkingen of wanneer de gegevens niet goed gespreid zijn, kunnen alternatieve methoden zoals de Runge-Kutta-methode of andere meer geavanceerde technieken noodzakelijk zijn. Ook het kiezen van de juiste stapgrootte hh is cruciaal: te groot kan leiden tot onnauwkeurige resultaten, terwijl te klein kan resulteren in numerieke instabiliteit door ronde fouten. Het vinden van de juiste balans tussen nauwkeurigheid en stabiliteit is een essentieel onderdeel van numerieke berekeningen.

Hoe Hyperbolische Functies en Basisprogramma's In Fortran Te Gebruiken

In de wereld van wiskunde en programmeren, vooral in wetenschappelijke en technische toepassingen, spelen hyperbolische functies een cruciale rol. Deze functies, zoals de hyperbolische sinus (sinh), de hyperbolische cosine (cosh), en de hyperbolische tangent (tanh), zijn analogieën van de klassieke trigonometrische functies, maar werken in een hyperbolische ruimte. Ze worden veel gebruikt bij de modellering van fenomenen die betrekking hebben op warmtegeleiding, golfbewegingen en relativistische fysica.

De hyperbolische functies zijn gedefinieerd als volgt:

  • sinh(x)=exex2\sinh(x) = \frac{e^x - e^{ -x}}{2}

  • cosh(x)=ex+ex2\cosh(x) = \frac{e^x + e^{ -x}}{2}

  • tanh(x)=sinh(x)cosh(x)\tanh(x) = \frac{\sinh(x)}{\cosh(x)}

Waarbij xx de invoer in radialen is. De toepassing van deze functies is vaak nodig in situaties waarbij de klassieke trigonometrie niet voldoende is, bijvoorbeeld in problemen van de speciale relativiteit of in de beschrijving van de groei van sommige populaties.

Om de praktische toepassing van deze functies te begrijpen, kan een eenvoudig Fortran-programma worden geschreven om de waarden van de sinus, cosine en tangent voor verschillende hoeken te berekenen. Hier wordt een voorbeeld gepresenteerd van een programma dat de waarden van deze functies berekent voor hoeken van 0°, 30°, 45° en 60°:

fortran
C PROGRAM TO FIND TRIGONOMETRIC FUNCTION VALUES REAL X1,X2,X3,X4,X1R,X2R,X3R,X4R X1 = 0.0 X2 = 30.0 X3 = 45.0 X4 = 60.0 PI = ATAN(1.0)*4. X1R = X1 * PI / 180.0 X2R = X2 * PI / 180.0 X3R = X3 * PI / 180.0 X4R = X4 * PI / 180.0 WRITE(*,*) 'THETA SINTH COSTH TANTH' WRITE(*,*) X1, SIN(X1R), COS(X1R), TAN(X1R) WRITE(*,*) X2, SIN(X2R), COS(X2R), TAN(X2R) WRITE(*,*) X3, SIN(X3R), COS(X3R), TAN(X3R) WRITE(*,*) X4, SIN(X4R), COS(X4R), TAN(X4R) STOP END

In dit programma worden de hoeken eerst omgezet van graden naar radialen, aangezien de trigonometrische functies in Fortran werken met radialen in plaats van graden. De waarde van π\pi wordt berekend door de uitdrukking 4×atan(1)4 \times \text{atan}(1) te gebruiken. De resultaten van het programma tonen de sinus, cosine en tangent van de opgegeven hoeken.

Het gebruik van de MOD\text{MOD}, MAX\text{MAX} en MIN\text{MIN} functies in Fortran is een ander belangrijk concept. Deze ingebouwde functies helpen bij het berekenen van de modulus van twee getallen, het maximum en minimum van een reeks getallen, respectievelijk. Hier is een voorbeeldprogramma dat deze functies gebruikt:

fortran
C program to use MOD, MAX, and MIN functions
X1 = 24 X2 = 36 WRITE(*,*) MOD(X1, X2), MOD(X2, X1) WRITE(*,*) MAX(23, 14, 5, -10, 36) WRITE(*,*) MIN(23, 14, 5, -10, 36) STOP END

In dit programma toont de functie MOD(24,36)\text{MOD}(24, 36) de waarde 24, terwijl MOD(36,24)\text{MOD}(36, 24) 12 oplevert. De MAX\text{MAX}- en MIN\text{MIN}-functies worden gebruikt om respectievelijk de grootste en kleinste waarde uit een reeks getallen te bepalen.

Een andere nuttige techniek in Fortran is het gebruik van de DATA\text{DATA}-verklaring, waarmee variabelen direct bij de initialisatie worden toegewezen. Dit is handig om de leesbaarheid van programma’s te verbeteren, omdat het de noodzaak elimineert om waarden via invoercommando’s te verkrijgen. Een voorbeeld van een programma dat de DATA\text{DATA}-verklaring gebruikt om een aantal variabelen in te stellen:

fortran
C PROGRAM TO DEMONSTRATE THE USE OF DATA STATEMENT INTEGER AGE REAL HEIGHT CHARACTER NAME*15 DATA AGE, HEIGHT, NAME /28, 6.1, 'Pran'/ WRITE(*,*) '**PROGRAM TO DEMONSTRATE THE USE OF DATA STATEMENT**' WRITE(*,*) 'Name:', NAME WRITE(*,*) 'Age:', AGE WRITE(*,*) 'Height=', HEIGHT, ' FEET' STOP END

Dit programma toont de toegewezen waarden van de variabelen en geeft een duidelijk voorbeeld van hoe data vooraf kan worden ingesteld in een Fortran-programma.

Het gebruik van controle-instructies in Fortran is essentieel wanneer je de stroom van een programma wilt beheersen, bijvoorbeeld om condities te controleren of de uitvoering van bepaalde delen van een programma over te slaan of te herhalen. Een voorbeeld van een eenvoudig programma dat de wortels van een kwadratische vergelijking berekent met behulp van een aritmethische IF-instructie:

fortran
C USE OF ARITHMETIC IF STATEMENT REAL A, B, C, DISC, ROOT1, ROOT2 WRITE(*,*) 'Input coefficients a,b,c' READ(*,*) A, B, C DISC = B*B - 4.0 * A * C A2 = 2.0 * A IF (DISC) 10, 20, 30 20 ROOT = -B / A2 WRITE(*,*) 'Roots are equal: Root', ROOT STOP 30 DISC = SQRT(DISC) ROOT1 = (-B + DISC) / A2 ROOT2 = (-B - DISC) / A2 WRITE(*,*) 'Roots are real: Root1', ROOT1, ' Root2', ROOT2 STOP 10 DISC = SQRT(ABS(DISC)) RP = -B / A2 IP = DISC / A2 WRITE(*,*) 'Roots are complex: Real part', RP, ' Imaginary part', IP STOP END

Dit programma gebruikt de waarde van de discriminant om te bepalen of de wortels van de kwadratische vergelijking reëel of complex zijn. Als de discriminant negatief is, worden de wortels complex; als de discriminant nul is, zijn de wortels gelijk; en als de discriminant positief is, zijn de wortels reëel en verschillend.

Bij het werken met Fortran is het belangrijk om te begrijpen hoe gegevens kunnen worden ingevoerd, verwerkt en uitgevoerd met verschillende methoden, zoals de READ\text{READ}-instructie, de DATA\text{DATA}-verklaring en controle-instructies. Het gebruik van ingebouwde functies zoals SIN\text{SIN}, COS\text{COS}, en TAN\text{TAN} is van essentieel belang voor wetenschappelijke en engineeringtoepassingen, omdat ze helpen bij het modelleren van een breed scala aan natuurkundige en wiskundige verschijnselen. Het is ook cruciaal om een goed begrip te hebben van de conversie tussen graden en radialen en om te weten wanneer en hoe verschillende methoden kunnen worden toegepast om de uitvoering van een programma te optimaliseren.