Les premiers pas
En 1954, le système de traduction de formules mathématiques IBM, ou en abrégé FORTRAN, compare un grand nombre de programmes pour permettre à l'IBM 704 d'accepter une formulation concise d'un problème en termes de notation thématique et de produire automatiquement un programme IBM 704 à grande vitesse pour la solution du problème. La logique du IBM 704 est telle que, pour la première fois, des techniques de programmation ont été conçues afin de pouvoir être appliquées par un système de codage automatique de telle manière qu'un problème codé automatiquement, ayant été énoncé de manière concise dans un langage ne ressemblant pas à un langage machine, sera exécuté dans le même temps qu'il aurait fallu si le problème avait été laborieusement codé à la main. Jusqu'à présent, les systèmes ayant cherché à réduire le travail de codage et de débogage des problèmes ont offert le choix entre un codage facile et une exécution lente ou un codage laborieux et une exécution rapide.
On estime que le FORTRAN est le langage le plus pratique pour formuler des problèmes à résoudre par une machine. Des études ont montré qu'un programme codé à la main pour un problème contient généralement au moins 5 fois plus de caractères et parfois 20 fois plus de caractères que l'énoncé du problème en langage FORTRAN. De plus, après une heure de cours en FORTRAN, le programmeur moyen peut comprendre parfaitement les étapes d'une procédure énoncée en langage de programmation FORTRAN sans aucun commentaire supplémentaire.
Avant d'envisager la manière dont un problème peut être présenté pour le codage automatique par le système FORTRAN, il serait bon de considérer certains des avantages d'un tel système. Fondamentalement, bien sûr, la raison de l'existence des ordinateurs à grande vitesse est le fait qu'ils permettent de résoudre des problèmes dans un délai beaucoup plus court et à un coût bien inférieur à celui qui serait autrement nécessaire. Le temps et le coût nécessaires à la résolution d'un problème sur une calculatrice à grande vitesse se répartissent approximativement en 4 catégories :
- Analyse et programmation
- Codage
- Débogage
- Solution par machine
Des machines plus rapides et plus puissantes réduiront considérablement le coût et le temps requis pour le point 4, mais jusqu'à présent, l'avènement de nouvelles machines semble n'avoir guère contribué à réduire le coût ou le temps requis pour les points 1, 2 et 3. Il semble être assez généralement vrai que les coûts de personnel d'une installation informatique sont au moins aussi élevés que le coût de la machine. De plus, il est raisonnable de supposer que les coûts du personnel pour le codage et le débogage constituent considérablement plus de la moitié du coût total du personnel. Enfin, dans les installations ayant relativement peu de problèmes à long terme, jusqu'à la moitié du coût de la machine est consacrée au débogage. Par conséquent, de manière grossière, on peut dire que pour chaque dollar dépensé pour résoudre un problème moyen sur un ordinateur à grande vitesse, moins de 25 cents sont dépensés pour l'analyse et la programmation, plus de 25 cents sont dépensés pour le codage et le débogage du personnel, environ 25 cents pour le débogage de la machine et environ 25 cents pour le fonctionnement de la machine.
Étant donné que FORTRAN devrait éliminer pratiquement le codage et le débogage, il devrait être possible de résoudre des problèmes pour moins de la moitié du coût qui serait nécessaire sans un tel système. De plus, comme il sera possible de consacrer presque tout le temps machine utilisable à la résolution de problèmes au lieu de seulement la moitié du temps machine utilisable, le rendement d'une machine donnée devrait être presque doublé. De plus, bien sûr, le temps total écoulé pour la résolution d'un problème devrait être une petite fraction du temps requis sans FORTRAN puisque le temps requis pour le codage et le débogage est généralement supérieur aux 3/4 du temps total écoulé. Non seulement FORTRAN réduit considérablement l'investissement initial dans la production d'un programme, mais il réduira encore davantage le coût de reprogrammation des problèmes pour les futures calculatrices IBM, puisque chaque calculatrice de ce type devrait être accompagnée d'un système similaire à FORTRAN pouvant traduire l'énoncé du problème dans un langage très proche de FORTRAN en son propre code.
Outre les grandes possibilités d'économie du FORTRAN, un tel système rendra l'étude expérimentale de divers modèles mathématiques et méthodes numériques plus réalisable et plus pratique, tant sur le plan humain qu'économique. De plus, le FORTRAN peut appliquer des techniques complexes et longues pour coder un problème que le codeur humain n'aurait ni le temps ni l'envie de déduire ou d'appliquer. Ainsi, dans de nombreux cas, le FORTRAN peut effectivement produire un meilleur programme que celui que le codeur humain normal serait susceptible de produire.
Enfin, la quantité de connaissances nécessaires pour utiliser efficacement le IBM 704 au moyen du FORTRAN est bien inférieure à celle requise pour utiliser efficacement le 701 par codage direct. Les informations concernant la façon d'utiliser les sous-programmes, les instructions machine disponibles, la façon d'optimiser une séquence de calculs et un grand nombre d'autres techniques de codage sont intégrées au système FORTRAN et il n'est pas nécessaire que le programmeur soit familier avec ces informations. En fait, une grande partie des informations que le programmeur doit connaître sur le système FORTRAN est déjà incorporée dans ses connaissances en mathématiques. Il sera donc possible de mettre toutes les capacités du IBM 704 à la disposition d'un plus grand nombre de personnes que ce qui serait autrement possible sans programmes de formation coûteux et chronophages.
En résumé, un système tel que FORTRAN présente les potentiels suivants :
- Une grande économie de temps et d'argent.
- La possibilité de réaliser des expériences plus théoriques.
- La possibilité d'appliquer des techniques complexes et longues pour coder un problème.
- La possibilité de rendre le IBM 704 accessible à davantage de personnes avec plus de commodité et moins de formation.
Avant de commencer une description du système FORTRAN, il convient de noter que la description suivante n'a pour but que d'indiquer les plans actuels. Bien que les méthodes par lesquelles FORTRAN fonctionnera soient bien connues, les développements futurs dans la programmation de programmation FORTRAN peuvent nécessiter certaines modifications mineures dans le système tel qu'il est présenté ci-dessous.
Voici une description des symboles et combinaisons de symboles admissibles dans le langage de programmation FORTRAN et comment les utiliser :
CONSTANTES
- VIRGULE FIXE (ENTIERS)
- Forme générale : 1 à 5 chiffres décimaux séquentiels éventuellement précédés d'un signe plus ou moins :
- Exemples :
- VIRGULE FLOTTANTE
- Forme générale : Toute séquence de chiffres décimaux avec un point décimal précédant ou intervenant entre 2 chiffres ou suivant une séquence de chiffres, le tout éventuellement précédé du signe plus ou moins 8. Le nombre doit être inférieur à 1038 en valeur absolue et supérieur à 1038 en valeur absolue.
- Exemples :
3 +1 -34500 |
17.0 5.0 256.32 0.0033 |
VARIABLES
- VARIABLES À VIRGULE FIXE
- Forme générale : Une séquence de 1 ou 2 caractères alphabétiques ou numériques dont le premier est l'un des suivants : i, j, k, l, m, n
- Exemples :
- i, ia, ii, ij, i1
- VARIABLES À VIRGULE FLOTTANTE
- Forme générale : Une séquence de 1 ou 2 caractères alphabétiques ou numériques dont le premier caractère est un caractère alphabétique, et non l'un des suivants : i, j, k, l, m, n
- Exemples :
- a, aa, ab, ai, a1
OPÉRATIONS
- OPÉRATIONS UNAIRES (OPÉRATIONS SUR UNE SEULE VARIABLE OU EXPRESSION)
- + Prendre la valeur de la constante, variable ou expression suivante.
- - Prendre l'inverse de la valeur de la constante, variable ou expression suivante.
- OPÉRATIONS BINAIRES
Opération | Description |
---|---|
+ | Ajouter la constante, la variable ou l'expression précédant à la constante, la variable ou l'expression suivante. |
- | Soustraire |
x | Multiplier |
/ | Diviser. Notez que a/b/c=(a/b)/c |
xx | Exponentiation. axxb=ab |
FONCTIONS
Aucune liste spécifique de fonctions n'est donnée car il n'y a pas de limite au nombre de fonctions possibles. Les fonctions doivent être à valeur unique.
- FORME GÉNÉRALE : Trois caractères alphabétiques ou numériques ou plus (commençant par un caractère alphabétique) suivis d'une parenthèse gauche suivie du 1er paramètre suivi d'une parenthèse droite ou d'une virgule suivie du 2e paramètre suivi d'une parenthèse droite ou d'une virgule suivie du 3e paramètre,...
- EXEMPLES :
Fonction | Description |
---|---|
sin(a) | Sinus |
sqrt(a+b) | Signifie √a+b |
factl(m+n) | Signifie (m+n) ! |
sqrt(sin(axx2)) | Signifie √sin(a2) |
max(a, b, c , d, e) | Signifie sélectionner la plus grande des quantités a, b, c, d, e. |
EXPRESSIONS
- DESCRIPTION INFORMELLE : Toute séquence de variables et de fonctions séparées par des symboles d'opération et des parenthèses formant une expression mathématique significative de manière normale. Notez que chaque paire adjacente de variables ou de fonctions doit être séparée par un symbole d'opération.
- DESCRIPTION FORMELLE : Par l'utilisation répétée des règles suivantes, toutes les expressions légales peuvent être dérivées et toutes les expressions ainsi dérivées sont légales à condition qu'elles comportent moins de 750 caractères.
- Toute constante ou variable est une expression.
- Si E est une expression n'étant pas de la forme +F ou -F, alors +E et -E sont des expressions.
- Si xxx désigne une fonction à n paramètres, et si E1, E2... En sont des expressions, alors en général xxx (E1, E2,...,En) est une expression. Bien que les fonctions puissent avoir cette forme générale, certaines fonctions imposeront des restrictions sur la forme des paramètres autorisés.
- Si E est une expression, (E l'est aussi).
- Si E et F sont des expressions où F n'est pas de la forme +G ou -G et o est l'une des opérations binaires autorisées, alors EoF est une expression.
- Si E et F sont des expressions, ExxF l'est aussi.
- EXEMPLES :
- a/b/c Notez que cela équivaut à (a/b)/c
- a/bxc Notez que cela équivaut à (a/b)xc
- a/(b+c)xd Notez que cela équivaut à (a/(b+c))xd
- a+sin(bxc /(d+(e+ (f+g)))xcos(b))xbxx2 Notez l'utilisation de parenthèses redondantes dans cet exemple pour indiquer l'ordre de calcul souhaité.
- 2.xr Notez que le point décimal est utilisé pour indiquer que 2 est conservé sous forme de virgule flottante.
- 1,53x10xx-14 désigne 1,53x10-14
- m/n
- Lorsque l'ordre des opérations binaires dans une expression n'est pas entièrement spécifié par des parenthèses, l'ordre de priorité est compris comme suit :
- addition - soustraction
- multiplication - division
- exponentiation
- a+b/c+dxx2xf-g
- EXPRESSIONS À VIRGULE FIXE, EXPRESSIONS À VIRGULE FLOTTANTE, EXPRESSIONS MIXTES :
- Les expressions à virgule fixe sont des expressions contenant uniquement des constantes et des variables à virgule fixe. Toutes les expressions à virgule fixe seront évaluées par l'arithmétique des entiers à virgule fixe. Ainsi, la valeur de i+m/n sera i+(la partie entière (non arrondie) de m+n).
- Les expressions à virgule flottante sont des expressions contenant uniquement des constantes et des variables à virgule flottante, à l'exception des paramètres à virgule fixe de certaines fonctions et des variables ou constantes à virgule fixe suivant l'opération xx. Les expressions à virgule flottante seront évaluées à l'aide de l'arithmétique à virgule flottante. Il peut être nécessaire dans certains cas d'utiliser des parenthèses redondantes pour indiquer une séquence particulière dans laquelle les opérations doivent être effectuées afin d'éviter d'obtenir des résultats intermédiaires dans l'évaluation de l'expression qui pourraient se situer en dehors de l'intervalle 10-38, 1038.
- Une expression mixte est toute expression n'appartenant pas à l'une des deux catégories ci-dessus. Le type d'arithmétique utilisé pour évaluer une expression mixte est décrit ci-dessous dans la section intitulée : FORMULES ARITHMÉTIQUES.
- VÉRIFICATION DE L'UTILISATION CORRECTE DES PARENTHÈSES : Dans les expressions compliquées impliquant l'utilisation de nombreuses parenthèses, il est très facile d'omettre de fermer certaines parenthèses. Par conséquent, dans de tels cas, il est suggéré au programmeur d'utiliser la procédure suivante pour s'assurer que les parenthèses d'une expression indiquent la séquence d'opérations qu'il souhaite. En travaillant de gauche à droite, numérotez chaque parenthèse, droite ou gauche, comme suit : Numérotez la première parenthèse "1", étiquetez chaque parenthèse de gauche avec un entier supérieur de un au numéro de la parenthèse immédiatement à gauche de celle-ci. Étiquetez chaque parenthèse de droite avec un entier inférieur de un au numéro de la parenthèse immédiatement à gauche de celle-ci. Une fois cela fait, la contrepartie de toute parenthèse de gauche étiquetée "n" sera la première parenthèse de droite à droite de celle-ci étiquetée n-1. Il convient de noter que ces nombres ne font pas partie du langage de programmation FORTRAN et ne doivent pas être saisis dans l'expression.
Par exemple, l'expression :
sera pris pour signifier :
(a)+(b/c)+(d2 - (g) |
La multiplication et la division n'auront pas de relation de priorité fixe, sauf dans le sens de la deuxième exemple.
INDICES ET EXPRESSIONS D'INDICE
Les indices et les expressions d'indice décrits ci-dessous doivent toujours avoir des valeurs non négatives et non nulles.
- INDICES : Un indice est une variable ou une constante à virgule fixe.
- EXPRESSION D'INDICES : Une expression d'indice est une expression à virgule fixe ne comportant pas plus de 3 termes où tous les termes sauf un sont une variable ou une constante à virgule fixe unique et un terme peut être un produit de deux indices. Toutes les variables d'une expression d'indice sauf une doivent être désignées comme des constantes relatives. Les parenthèses ne sont pas autorisées dans les expressions d'indice.
- i+1
- i+j
- n+i+j
- 2xn-i
- 100-nxj
Exemples : où j et n sont des constantes relatives :
VARIABLES D'INDICES
- Une variable indicée est une variable (virgule fixe ou flottante suivie d'une parenthèse gauche suivie d'un, deux ou trois indices ou expressions d'indice (où chaque indice ou expression d'indice sauf le dernier est suivi d'une virgule) tous suivis d'une parenthèse droite.
- Chaque indice ou les éléments de chaque expression d'indice peuvent être des variables à virgule fixe indicées.
- Les variables indicées peuvent être utilisées dans une expression de la même manière que les variables ordinaires.
- Aucun indice ou élément d'une expression d'indice étant un indice d'une variable à virgule fixe qui, à son tour, est l'indice d'une autre variable ne peut avoir d'indice.
- EXEMPLES :
- a(i)
- a(i, j)
- a(i9j, k)
- a(3xi+n, m) : signifie a3xi+n, m
- i(j)
- n(i,j)
- a(i(j)) : signifie aij
- i(j(k))
- a(n(i,j), m(k,l)) : signifie ani,j, mk, 1
- a(3xi(j)+2,k)
- a(1)
- a(i,i+1,i)
- a(1,j)
- a(5,7, 15)
FORMULES ARITHMÉTIQUES
- Une formule arithmétique est une expression écrite (en indice ou non), suivie d'un signe égal, suivi d'une expression.
- Il convient de noter que le signe égal dans une formule arithmétique a la signification de "remplacer". En effet, la signification d'une formule arithmétique est donc la suivante : évaluer l'expression de droite et remplacer cette valeur par la valeur de la variable de gauche.
- Si la variable de gauche d'une formule arithmétique est une variable à virgule fixe et que l'expression de droite est une expression mixte, alors la valeur de chaque constante et variable à virgule flottante dans l'expression mixte, à l'exception possible des paramètres de certaines fonctions, sera tronquée en nombres entiers. La valeur de toute fonction à valeur à virgule flottante sera également convertie en nombre entier et l'expression entière sera évaluée par l'arithmétique des nombres entiers à virgule fixe. De même, si la variable de gauche d'une formule arithmétique est une variable à virgule flottante et que l'expression de droite est une expression mixte, les valeurs des constantes et variables à virgule fixe seront représentées sous forme de nombres à virgule flottante et l'expression sera évaluée par l'arithmétique des nombres entiers à virgule flottante.
- Si la variable à gauche d'une formule arithmétique est une variable à virgule fixe et que l'expression à droite est une expression à virgule flottante, l'expression sera évaluée à l'aide de l'arithmétique à virgule flottante et le résultat sera tronqué à un entier. De même, si la variable à gauche d'une formule arithmétique est une variable à virgule flottante et que l'expression à droite est une expression à virgule fixe, l'expression sera évaluée à l'aide de l'arithmétique à virgule flottante et le résultat sera substitué sous forme de virgule flottante à la valeur de la variable à gauche.
- EXEMPLES :
- a(i,j)=sqrt(b(i)xx2+sin(c(j)x(g+cos(h/(p+q/(r+s)))))) signifie : ai,j=√(bi2+sin(cjx(g+cos(h/(p+q/(r+s))))))
- a(i, j) = ixj
- i=i+15 signifie : augmenter la valeur de i de 15 ou i(n+1) i(n)+15
- a=b
- n(i)=a(i)+b(i)x17.3
- x(i)=bxxi
- a(i)r=a(i)+5.1 x sum(j, 1, 20, b(i,j)xc(j). Cette formule signifie augmenter la valeur de ai de la quantité suivante :
- a=a+i
- i=axb+n/(m+c)
20 5.1x ∑ bi, j xcj j=1 |
NUMÉROS DE FORMULES
Chaque formule FORTRAN peut être associée à un entier appelé numéro de formule. Si une formule possède un numéro de formule, celui-ci est inscrit à gauche de la formule. Le numéro de formule doit être inférieur à 100 000. Si une formule doit être référencée par une formule de contrôle telle que décrite ci-dessous, elle doit se voir attribuer un numéro de formule différent de celui de toutes les autres formules. À cette exception près, le choix du numéro de formule pour une formule est totalement arbitraire.
Exemple :
- 12 a=b
FORMULES DE CONTRÔLE
Une séquence de formules arithmétiques indique que les opérations impliquées par la première formule doivent être effectuées, puis les opérations indiquées par la seconde,... Certaines formules appelées formules de contrôle sont fournies pour modifier cette séquence d'opérations de diverses manières.
Dans la forme générale des formules de contrôle ci-dessous, les lettres minuscules et les divers symboles tels que la virgule, le signe égal et les parenthèses seront indiqués de la manière dont ils doivent apparaître dans la formule particulière. Les lettres majuscules seront utilisées pour représenter une classe de symboles pouvant apparaître à un point donné dans une formule. Les crochets sont utilisés pour entourer les symboles pouvant éventuellement apparaître dans la formule.
- LA FORMULE DO
- Description informelle : Les formules Do spécifient une séquence de formules à répéter un certain nombre de fois pour différentes valeurs
d'un indice spécifié et la formule à exécuter après le nombre requis de répétitions. Ainsi, la formule :
- do 10,14,50 i=4, 20, 2
entraînera l'exécution de la séquence de formules commençant par la formule numérotée 10 et se terminant par la formule numérotée 14 de 9 fois, la première fois avec i=4, la deuxième fois avec i=6, la troisième fois avec i=8,... et la dernière fois avec i=20. La formule 50 sera exécutée après la formule 14 lorsque i=20. Ainsi, le premier nombre après le signe égal est la valeur initiale de l'indice, le nombre suivant la valeur finale ou la limite supérieure de l'indice, et le troisième nombre est l'incrément à appliquer à chaque fois. L'incrément n'a pas besoin d'être indiqué lorsqu'il est égal à 1. De plus, comme il arrive fréquemment qu'une formule do précède immédiatement la séquence de formules à répéter et que la formule à exécuter après le nombre approprié de répétitions suive immédiatement la séquence répétée, il n'est pas nécessaire dans un tel cas de spécifier la première formule de la séquence ou la formule à exécuter après les répétitions appropriées de la séquence. Ainsi, la formule :
- do 17 i=1, 20
fait en sorte que les formules la suivant immédiatement jusque là, et y compris la formule numérotée 17, soient répétées en séquence 20 fois pour i=1, i=2, . . . i=20, après quoi la formule suivant la formule numérotée 27 sera exécutée.
- Description formelle : Forme générale :
- Intervalle d'une formule Do : L'intervalle de formules Do A spécifiant un numéro de formule est la séquence de formules suivant
immédiatement la formule Do A jusqu'à et y compris la formule dont le numéro est spécifié, à l'exception des formules dans les intervalles de formules Do
étant dans l'intervalle de formules Do A. L'intervalle d'une formule Do B, spécifiant trois numéros de formule, est la séquence de formules commençant par la
formule ayant le premier numéro de formule spécifié et se terminant par la formule ayant le deuxième numéro de formule spécifié, à l'exception des formules étant dans
les intervalles de formules Do dans l'intervalle de formules Do B.
Exemple :
- 1 do 4 j=1,10
- 2 do 3 i=1,10
- 3 a(i,j) =i,j
- 4 b(J) =sum(i,1,10,a(i,j))
Dans l'exemple ci-dessus, l'intervalle de la formule numéro 1 comprend uniquement la formule 2 et la formule 4.
- Intervalle étendue d'une formule Do : L'intervalle étendue d'une formule Do A comprend les formules dans l'intervalle de la formule Do A plus les formules dans les intervalles de formules Do dans l'intervalle de la formule Do.
- Formules de contrôle dans l'intervalle d'une formule Do : Si une formule de contrôle est dans l'intervalle d'une formule Do A et fait référence au contrôle à la formule Do A, la prochaine formule à exécuter après la formule de contrôle sera la première formule dans la plage de la formule Do A après que l'indice spécifié par la formule Do A a été incrémenté une fois.
- Exécution d'une formule Do : L'exécution d'une formule Do A comprend les étapes suivantes :
- Commencer l'exécution de la séquence de formules dans l'intervalle de formule do A.
- Si la dernière formule dans l'intervalle de la formule do A ou une formule de contrôle faisant référence à la formule do A est rencontrée avant une formule de contrôle faisant référence à une formule n'étant pas dans l'intervalle de la formule do A, incrémenter l'indice spécifié de l'incrément approprié et si la valeur résultante n'est pas supérieure à la limite supérieure spécifiée pour l'indice, recommencer l'étape A, si cette valeur est supérieure à la limite supérieure spécifiée, exécuter la formule ayant le troisième numéro de formule spécifié dans la formule do A. Si formule do A ne spécifie qu'un seul numéro de formule, exécuter la formule suivant la dernière formule dans l'intervalle de formule do A. L'exécution d'une formule do est considérée comme terminée uniquement lorsque les formules dans son intervalle ont été répétées le nombre approprié de fois ou lorsqu'une formule de contrôle dans l'intervalle de formule do est rencontrée faisant référence à une formule n'étant pas dans l'intervalle de formule do.
- Restrictions sur la portée d'une formule Do :
- Le troisième numéro de formule spécifié par une formule Do A ne peut pas faire référence à une formule dans la portée de la formule Do B à moins que la formule Do A soit elle-même dans la portée de la formule Do B. Une restriction similaire s'applique aux numéros de formule spécifiés par les formules If et Go To décrites ci-dessous.
- Si la formule Do A et la formule Do B sont telles qu'aucune n'est dans la portée de l'autre et si S est la séquence de formules comprenant la portée de la formule Do A et si S' est la séquence de formules comprenant la portée de la formule Do B, alors soit S doit être entièrement inclus dans S', soit S' doit être entièrement inclus dans S, si S et S' ont une formule en commun.
- LA FORMULE IF
- Description informelle : Les formules If permettent d'énoncer une condition d'inégalité ou de qualité et d'indiquer qu'une formule doit être exécutée ensuite si la condition est satisfaite et d'indiquer une seconde formule à exécuter ensuite si la condition n'est pas satisfaite.
- Description formelle : Forme générale :
- =
- >
- >=
- Exemple :
- If(nxi>=k+1)3,9
- LA FORMULE GO TO : Forme générale :
- LA FORMULE STOP : Forme générale :
- LA FORMULE RELABEL
- Description informelle : Les formules RELABEL permettent au programmeur de réétiqueter cycliquement les éléments d'un vecteur, les lignes ou les coordonnées d'une matrice, les lignes ou les colonnes ou les plans d'un tableau tridimensionnel. Par exemple, dans une matrice 4 x 4, il peut souhaiter opérer sur les lignes 2 et 3, enregistrer les lignes 1 et 2 sur une mémoire auxiliaire, remplacer les lignes 1 et 2 par de nouvelles informations, opérer sur les lignes 4 et 1, enregistrer les lignes 3 et 4 et les remplacer par de nouvelles informations, opérer sur les lignes 2 et 3,... Si, après avoir remplacé les informations des lignes 1 et 2 par de nouvelles informations, il réétiquete les lignes comme suit, il peut alors utiliser les mêmes formules pour effectuer le deuxième ensemble d'opérations qu'il a utilisées pour effectuer le premier :
- L'ancienne lignes 3 devient la nouvelle ligne 1
- L'ancienne lignes 4 devient la nouvelle ligne 2
- L'ancienne lignes 1 devient la nouvelle ligne 3
- L'ancienne lignes 2 devient la nouvelle ligne 4
- Opérer sur les lignes 2 et 3
- Enregistrer les lignes 1 et 2
- Remplacer les lignes 1 et 2 par de nouvelles informations
- Réétiqueter
- Description formelle : Forme générale :
- Exemples :
- "Relabel a(3)" a la signification suivante où a est un vecteur de 7 éléments. Une référence à a(1) après l'exécution de cette formule est équivalente à une référence à a(3) avant l'exécution de cette formule. De même, le nouveau a(2) correspond à l'ancien a(4), le nouveau a(3) à l'ancien a(5), le nouveau a(4) à l'ancien a(6), le nouveau a(5) à l'ancien a(7), le nouveau a(6) à l'ancien a(1), le nouveau a(7) à l'ancien a(2).
- "Relabel a(1, n, 1)" a la signification suivante où "a" est un tableau 3 x 4 x 5 et où n a la valeur 3, l'ancien a(i, 3, j) devient le nouveau a(i, 1, j) pour toutes les valeurs de i et j et enfin l'ancien a(i, 2, j) devient le nouveau a(i, 4, j) pour toutes les valeurs de i et j.
do F, F, F S=N, N [,N] |
ou :
do F S=N, N [,N] |
où :
F est un numéro de formule.
S est un indice.
N est une constante à virgule fixe, un indice ou une expression d'indice.
If (N S N)F,F |
Où :
N peut être une variable à virgule flottante unique ou une constante ou un indice ou une expression d'indice.
S peut être l'un des symboles suivants :
F est un numéro de formule.
Les symboles entre parenthèses indiquent une égalité ou une inégalité. Le premier numéro de formule indique la formule à exécuter ensuite si l'égalité ou l'inégalité est satisfaite et le deuxième numéro de formule indique la formule à exécuter ensuite si l'égalité ou l'inégalité n'est pas satisfaite.
Cette formule signifie «Si nxi ≥ k+ 1, exécuter ensuite la formule 3, sinon exécuter ensuite la formule 9».
Go to F |
où F est un numéro de formule indiquant la formule à exécuter ensuite.
Stop |
Lorsqu'une telle formule est exécutée, la machine s'arrête. Si le bouton de démarrage est enfoncé après l'exécution d'une formule d'arrêt, la formule suivante sera exécutée ensuite.
En utilisant le type de réétiquetage, la séquence d'opérations indiquée ci-dessus devient simplement la répétition des étapes suivantes :
Relabel V |
où V peut être n'importe quelle variable indicée dont tous les indices sauf un sont des entiers 1 et dont l'indice restant est soit une constante, soit une variable à virgule fixe unique. L'indice différent de 1 indique quel élément, ligne ou colonne, ligne, colonne ou plan doit devenir le nouveau premier élément, première ligne ou première colonne, première ligne ou première colonne ou premier plan.
FORMULES D'ENTRÉE-SORTIE
Les formules d'entrée-sortie permettent au programmeur de spécifier que les informations doivent être introduites dans le IBM 704 à partir de cartes ou de bandes d'entrée ou que les informations doivent être imprimées, perforées ou écrites sur des bandes de sortie. Étant donné que le nombre de variables auxquelles on peut se référer à tout moment dans un calcul est limité par l'étendue de l'entreposage à grande vitesse, il peut être nécessaire d'enregistrer les valeurs de certaines variables dans une mémoire auxiliaire et à d'autres moments d'attribuer de nouvelles valeurs à certaines variables correspondant aux informations dans la mémoire auxiliaire. Des formules d'entrée-sortie sont également prévues à cet effet. Les lettres majuscules apparaissant dans les descriptions de formules ci-dessous seront à nouveau utilisées pour indiquer la classe de symboles pouvant apparaître à la position correspondante dans la formule.
- DESCRIPTION DE LA SÉQUENCE D'UN TABLEAU ORDONNÉ : Pour spécifier que les éléments d'un tableau de données à 1, 2 ou 3 dimensions doivent être enregistrés dans une mémoire auxiliaire ou pour spécifier que les éléments d'un tableau à 1, 2 ou 3 dimensions doivent se voir attribuer des valeurs correspondant à certaines quantités dans la mémoire auxiliaire, il est nécessaire qu'une certaine séquence des éléments du tableau soit soit comprise, soit spécifiée. Cette séquence est celle dans laquelle les éléments seront enregistrés ou extraits de la mémoire auxiliaire. Si aucune séquence n'est spécifiée, la séquence sera comprise comme étant a1, a2,... a dans le cas de vecteurs ou a11, a21... an1,a12, a22,...amn dans le cas de tableaux à 2 dimensions ou a111, a211... an11, a121, a221, ..., anmk dans le cas de tableaux à 3 dimensions. Lorsqu'aucune séquence n'est spécifiée pour un tableau donné qui doit être enregistré ou lu dans une mémoire auxiliaire, il sera compris que le tableau entier doit être enregistré ou lu dans une mémoire auxiliaire.
- Description informelle : Une spécification de séquence pour un tableau unidimensionnel a(i) pourrait être «I=1, 7». Cela indique la séquence a1, a2, ... a7. Une spécification de séquence pour un tableau bidimensionnel a(i, j) pourrait être j=4,8, i=2, 10,2. Cela indique la séquence a2,4' a4,4' a6,4... a10,4' a2,5' a4,5' a6,5' ... a10,5'.... a 10, 8. Notez qu'une troisième quantité spécifiée après l'intervalle d'un indice donné indique un incrément et si une troisième quantité n'est pas spécifiée, l'incrément est supposé être un. En général, l'indice spécifié en premier dans une spécification de séquence est celui variant le moins fréquemment, l'indice spécifié en deuxième est celui qui varie le plus fréquemment et le troisième est celui variant le plus fréquemment. Si une spécification de séquence est donnée, chaque indice du tableau avec son intervalle appropriée et son incrément possible doit être répertorié dans l'ordre approprié.
- Description formelle : Une description de séquence pour un tableau unidimensionnel a la forme suivante :
- LISTE DES QUANTITÉS
- Description formelle : Une liste de quantités a la forme suivante :
- une variable ou une constante unique
- une variable en indice
- une parenthèse gauche suivie d'un ou plusieurs tableaux en indice (chacun sauf le dernier suivi d'une virgule) suivi d'une spécification de séquence suivie d'une parenthèse droite.
- Exemples :
- a, (b(i,j), c(i,j) j=1, 2, i=1,3), d, e
- a, (b(1,i), c(i), d(i,1) i=1, 3), e(1,1)
- FORMULES DE LECTURE DE CARTES : Forme générale :
- read n, (a(i, j) j = 1, 20, i=5, 10), b(i)
- FORMULES DE PERFORATION DE CARTES :
- Forme générale :
- Les formules de perforation de cartes indiquent une séquence de quantités à perforer sur des cartes.
- FORMULE PRINT :
- Forme générale :
- FORMULES DE LECTURE DE BANDE MAGNÉTIQUE :
- Forme générale :
- FORMULES SUPPLÉMENTAIRES POUR LA MANIPULATION DE LA BANDE MAGNÉTIQUE :
- Forme générale :
- FORMULES DE LECTURE DE TAMBOUR :
- Forme générale :
- FORMULES D'ÉCRITURE AU TAMBOUR :
- Forme générale :
- RESTRICTION SUR LES LISTES DE QUANTITÉS DANS LES FORMULES DE LECTURE ET D'ÉCRITURE DE TAMBOUR : Si une spécification de séquence est donnée avec un tableau spécifié dans une liste de quantités dans une formule de lecture ou d'écriture de tambour, les indices apparaissant dans une telle spécification de séquence doivent apparaître dans l'ordre inverse des indices associés au tableau et seul le dernier indice peut avoir une plage arbitraire. Les indices autres que le dernier doivent avoir des intervalles spécifiées commençant par 1 et se terminant par la valeur maximale possible pour cet indice. Aucun des indices dans la spécification de séquence ne peut avoir d'incrémentations autres que 1. Un seul tableau peut apparaître avec une spécification de séquence dans une seule paire de parenthèses.
- Exemples : La liste de quantités suivante peut être correctement spécifiée en lisant ou en écrivant des formules :
- a, (b(i,j,k) i=7, 10 j=1, 50, k=1, 50)
S=N, N[,N] |
Une description de séquence pour un tableau bidimensionnel a la forme suivante :
S=N, N[, N], S=N, N[, N] |
Une description de séquence pour un tableau tridimensionnel a la forme suivante :
S=N, N[, N], S=N, N[, N], S=N, N[,N] |
où :
S peut être un indice qui apparaît comme un indice du tableau dont la séquence est spécifiée.
N peut être un indice ou une expression d'indice
Notez que les crochets entourent des symboles qui sont facultatifs.
V [,V, V, ...] |
où V peut être :
La liste de quantités ci-dessus spécifie la séquence suivante :
a, b(1,1), c(1,1), b(2,1), c(2,1), b(3,1), c(3,1), b(1,2), c(1,2), b(2,2), c(2,2), b(3,2), c(3,2), d, e |
La liste de quantités ci-dessus spécifie la séquence suivante :
a, b(1,1), c(1), d(1,1), b(1,2), c(2), d(2,1), b(1,3), c(3), d(3,1), e(1,1) |
read L |
où L peut être une liste de quantités. Cependant, aucune des quantités de la liste ne peut être une constante. Exemple :
Cette formule indique que la séquence de variables n, ai j et bits doit être affectée à la séquence de valeurs provenant du lecteur de carte de manière biunivoque.
punch L |
où L est une liste de quantités.
print L |
où L est une liste de quantités.
read tape (N) L |
ou
read input tape (N) L |
où N est un numéro de bande magnétique ou une variable à virgule fixe et L est une liste de quantités et aucune quantité n'est une constante.
end file (N) rewind (N) backspace (N) |
où N peut être un numéro de bande ou une variable à virgule fixe.
read drum (N,M) L |
où N est un numéro de tambour ou une variable à virgule fixe et M est un emplacement de tambour ou une variable à virgule fixe et L est une liste de quantités. L'emplacement du tambour est un entier compris entre 1 et 2048. L'effet de cette formule est de faire en sorte que les quantités sur le tambour donné commençant à l'emplacement de tambour donné et dans les emplacements de tambour numérotés consécutivement suivants deviennent les valeurs des quantités spécifiées dans la liste des quantités dans le stockage à grande vitesse.
write drum (N, M) L |
où N est un numéro de tambour ou une variable à virgule fixe et M est un emplacement de tambour ou une variable à virgule fixe et L est une liste de quantités.
où 50 est la valeur maximale possible pour i et j. La liste de quantités suivante peut ne pas être correctement spécifiée par une formule de lecture ou d'écriture de tambour :
(a(i,j,k) k=1, 50, j=3,20, k=1, 50) (a(i,j,k) k=1, 50, j=1,50, k=1, 50) |
PHRASES DE SPÉCIFICATION
En plus de la formulation du problème en termes de formules FORTRAN, certaines informations supplémentaires sont nécessaires ou souhaitables pour permettre au système FORTRAN de produire un programme efficace. Les phrases de spécification permettent de fournir ces informations au système FORTRAN.
- PHRASES DE DIMENSION : Les dimensions maximales possibles de chaque tableau à 1, 2 ou 3 dimensions auquel il est fait référence dans une formule de la formulation du problème doivent être spécifiquement indiquées. Ainsi, si a(i, j, k) est spécifié comme un tableau 5 x 10 x 20, alors à aucun moment lorsqu'une référence à a(i, j, k) est faite, i ne doit dépasser 5, ou j dépasser 10, ou k dépasser 20. Ayant spécifié a(i, j, k), il est néanmoins possible de considérer a(i, j, k) comme représentant L un tableau 4 x 4 x 4 dans un cas particulier. Ce type de situation se produit lorsque les dimensions d'un tableau sont des paramètres d'entrée.
- PHRASES D'ÉQUIVALENCE : Dans certains cas, il peut être possible pour le système FORTRAN d'attribuer le même emplacement d'entreposage à
plusieurs variables. Pour définir quand cela est possible, nous dirons qu'une variable apparaît dans une formule dans une position de type 1 si l'exécution de la formule ne
peut pas modifier la valeur de la variable et nous dirons qu'une variable apparaît dans une formule dans une position de type 2 si l'exécution de la formule peut entraîner
une modification de la valeur de la variable. Ainsi, une variable apparaît dans une position de type 1 si :
- il se trouve sur le côté droit d'une formule arithmétique.
- il s'agit d'un indice d'une variable sur le côté gauche d'une formule arithmétique.
- il apparaît dans une formule de sortie.
- il apparaît dans une formule do-formula, mais pas comme indice à faire varier.
- il apparaît dans une formule "si" ou "aller à".
De même, une variable apparaît dans une position de type 2 si :
- c'est la variable du côté gauche d'une formule arithmétique.
- elle apparaît dans une formule d'entrée.
- elle apparaît comme l'indice à faire varier dans une formule do.
Ainsi, un ensemble de variables peut se voir attribuer le même emplacement de stockage si, pour deux variables a et b de l'ensemble, une apparition de type 2 de a suivie d'une apparition de type 1 de b signifie toujours qu'il y a une apparition intermédiaire de type 2 de b, où l'ordre d'apparition est l'ordre d'exécution des formules. Dans les mêmes conditions, il est également possible d'allouer un espace d'entreposage superposé aux éléments de deux tableaux différents. Les phrases d'équivalence spécifient des ensembles de variables et des tableaux tels que toutes les variables ou tableaux d'un même ensemble puissent se voir attribuer la même zone d'entreposage.
Forme générale :
Equivalence (V, V[, V,V...])[, (V,V[, V, V,...]),...] où V est un symbole de variable. Le symbole de variable peut être soit associé à une variable simple, soit associé à un tableau. Ainsi, pour indiquer que la variable a, le tableau b(i, j) et le tableau c(i, j, k) peuvent se voir attribuer un espace d'entreposage se chevauchant, on inclut dans une phrase de dimension l'ensemble (a, b, c). Si le produit des dimensions maximales de c(i, j, k) est supérieur au produit des dimensions maximales de b(i, j), l'inclusion de l'ensemble ci-dessus dans une phrase d'équivalence signifie que l'espace de stockage attribué à b(i, j) sera inclus dans l'espace d'entreposage attribué à c(i, j, k) et que l'espace d'entreposage attribué à a sera inclus dans celui attribué à b(i, j).
- PHRASES DE FRÉQUENCE : Les phrases de fréquence permettent au programmeur de fournir au système FORTRAN des informations concernant les estimations de la fréquence à laquelle certaines parties du programme seront exécutées. Ainsi, le programmeur peut indiquer qu'il s'attend à ce que la condition spécifiée par une formule if soit satisfaite 10 000 fois et que la condition ne sera pas satisfaite 400 fois au cours de l'exécution du programme. Si la formule if a le numéro de formule 3, cette estimation sera exprimée dans une phrase de fréquence comme suit :
- (3, 10000, 400)
- (17, 200)
- PHRASES À CONSTANTES RELATIVES : Dans certains cas, le système FORTRAN pourra produire un programme plus efficace pour résoudre un problème s'il dispose d'informations spécifiant les variables à virgule fixe dont les valeurs changent très rarement sur une base relative. Les phrases à constantes relatives offrent au programmeur la possibilité de fournir ces informations au système FORTRAN.
Forme générale :
Dimension V[, V, V, ... |
où V est une variable indicée dont les indices sont des constantes à virgule fixe. Ainsi, a(10,11,12) apparaissant dans une phrase de dimension indique que les dimensions maximales du tableau 2 sont 10 x 11 x 12.
Notez que les phrases de dimension spécifiant les dimensions de tous les tableaux apparaissant dans une formulation de problème doivent être fournies.
De même, si une formule do a un intervalle variable pour l'indice à faire varier, le programmeur peut spécifier qu'en moyenne, il s'attend à ce que la formule do nécessite, par exemple, 200 répétitions. Si la formule do a le numéro de formule 17, le programmeur indiquera cette estimation comme suit :
dans le cadre d'une phrase de fréquence, et enfin si une formule de référence contient une variable à virgule fixe, le programmeur peut donner des estimations de la fréquence à laquelle la variable à virgule fixe prendra les différentes valeurs possibles. Si la formule de référence a le numéro de formule 2 et se lit "go to n" et si n peut prendre les valeurs 14, 15 et 16, alors l'estimation (2, 13, 100, 14, 10, 15, 1000) indique qu'il s'attend à ce que n prenne la valeur 13, 100 fois, la valeur 14, 10 fois et la valeur 14, 1000 fois. Les trois types d'estimations ci-dessus, une pour les formules if, une pour les formules do et une pour les formules go to sont les seuls types d'estimations cb autorisés pouvant apparaître dans une phrase de fréquence.
Forme générale :
Frequency E[, E, E... |
où E est une estimation de l'un des trois types décrits ci-dessus.
Forme générale :
Relative constants N[, N, N,...] |
où N est une variable à virgule fixe. Ainsi la phrase :
Relative constants i, n |
où i est une variable à virgule fixe unique et n(j) est un vecteur à virgule fixe, indiquent que la valeur de i et les valeurs de n(1), n(2), ... changent très rarement.
PRÉPARATION DU PROBLÈME
La préparation du problème pour le codage automatique par le système FORTRAN comprend les étapes suivantes :
- PROGRAMMATION : Les formules spécifiant le problème sont écrites sous la forme donnée ci-dessus. Notez que le symbole exact utilisé pour écrire, par exemple, multiplier, est arbitraire à condition que le code Hollerith approprié pour multiplier soit perforé dans les cartes de formules. En plus des formules spécifiant le problème, les phrases de dimension donnant les dimensions maximales de tous les tableaux du problème et éventuellement d'autres phrases de spécification doivent être écrites sous la forme décrite ci-dessus.
- PRÉPARATION DES DONNÉES : Les données d'entrée, référencées par les formules de lecture de cartes ou les formules de lecture de bande d'entrée dans le problème, doivent être écrites sur des formulaires standard adaptés à la saisie au clavier dans des formulaires de cartes standard associés aux formules de lecture de cartes et aux formules de lecture de bande magnétique d'entrée.
- VÉRIFICATION DE L'ESPACE D'ENTREPOSAGE DE DONNÉES REQUIS : L'espace d'entreposage de données requis pour un problème donné si aucune phrase d'équivalence n'est spécifiée est calculé comme le nombre de variables simples et de constantes plus la somme des produits des dimensions maximales de chaque tableau référencé dans le problème. Dans le calcul de l'espace de stockage de données, il suffit de compter un espace pour une séquence de constantes séparées par des opérations arithmétiques. Si des formules d'équivalence sont données, la quantité d'espace de stockage requise est le nombre de constantes plus le nombre de variables simples n'apparaissant pas dans une phrase d'équivalence plus la somme des produits des dimensions maximales des tableaux n'apparaissant pas dans les phrases d'équivalence plus la somme des produits des dimensions maximales du plus grand tableau apparaissant dans chaque ensemble dans une phrase d'équivalence plus le nombre d'ensembles, contenant uniquement des variables simples, apparaissant dans les phrases d'équivalence. L'espace d'entreposage de données requis pour un programme doit être inférieur à une certaine quantité dépendant de l'espace d'entreposage à grande vitesse total de la machine sur laquelle le problème doit être exécuté. La quantité d'espace d'entreposage disponible sur une machine contenant 4096 mots sera d'au moins 3000 unités. Les problèmes doivent être planifiés de manière à ce que l'espace d'entreposage de données requis soit inférieur à la quantité appropriée.
- PERFORATION DES CLEFS : Les formules spécifiant le problème sont perforées sur des cartes sous la forme exacte dans laquelle elles sont écrites. Il y aura de la place pour environ 65 caractères sur chaque carte. Il y aura un espace sur chaque carte pour un numéro de formule qui sera laissé en blanc si la formule n'a pas de numéro attribué. Les grandes formules peuvent s'étendre sur plusieurs cartes. Une indication sur chaque carte indiquera si les informations sur la carte sont ou non la continuation d'une formule sur une carte précédente. Les espaces (indiqués par des colonnes vides sur une carte) sont ignorés par le système FORTRAN. Cela signifie que, s'il le souhaite, le perforateur de clefs peut espacer entre les symboles exactement comme ils sont écrits, ou non, sans perturber la signification de la formule. Les phrases de spécification sont également perforées d'une manière similaire à celle des formules. Notez encore que les phrases de dimension doivent être perforées pour tout problème faisant référence à des tableaux. Les cartes de données sont perforées sous la forme appropriée pour être acceptées par les formules de lecture de cartes ou pour préparer des bandes devant être lues par les formules de lecture de bandes d'entrée.
- PRÉPARATION DES ENSEMBLES DE CARTES ET DES BANDES D'ENTRÉE : Le système FORTRAN offre deux options :
- Perforation de l'ensemble du programmes binaires pour le problème ou préparation d'une bande magnétique de programmes similaire et impression du programme.
- Exécution immédiate du problème.
- CODAGE AUTOMATIQUE DU PROBLEME PAR LE SYSTEME FORTRAN Si l'utilisateur a sélectionné l'option 1 (obtenir les cartes binaires représentant son programme ou une bande magnétique représentant son programme), il doit simplement charger le système FORTRAN à partir de sa bande magnétique et placer l'ensemble de formules FORTRAN dans le lecteur de cartes ou la bande magnétique correspondante sur une unité de bande magnétique. Il doit ensuite régler un commutateur de détection indiquant qu'il a choisi l'option 1. Il doit régler un autre commutateur indiquant que le programme doit être perforé sur des cartes binaires ou qu'il doit être écrit sur une bande magnétique. En appuyant sur le bouton de démarrage, le système FORTRAN va alors écrire le programme requis, le vérifier et soit le perforer sur des cartes binaires, soit l'écrire sur une bande magnétique et préparer une bande de sortie pouvant être utilisée pour imprimer le programme sur un équipement auxiliaire de bande magnétique à imprimante. (Les installations ne disposant pas de dispositifs auxiliaires de bande magnétique à imprimante peuvent faire en sorte que le programme soit imprimé directement).
Si l'utilisateur du système choisit l'option 1, il doit préparer un ensemble de cartes dans l'ordre suivant : toutes les cartes de phrases de spécification suivies de cartes de formules dans l'ordre correct, suivies d'une carte perforée spéciale indiquant la fin des formules FORTRAN du problème. Si l'utilisateur choisit l'option 2, il doit préparer le même jeu que ci-dessus et, en plus, un jeu de cartes de données pour chaque bande d'entrée utilisée dans le problème et pour le lecteur de cartes, s'il en est utilisé.
Après avoir préparé les ensembles de cartes ci-dessus, il doit ensuite préparer les bandes d'entrée appropriées, le cas échéant, sur une carte auxiliaire pour l'équipement de bande. Il peut en outre choisir d'entrer l'ensemble de formules FORTRAN directement à partir du lecteur de cartes IBM 704 ou de préparer une bande magnétique d'entrée à partir de cette ensemble de formules et d'entrer les formules dans le IBM 704 à partir de cette bande magnétique d'entrée.
Si l'utilisateur choisit l'option 2 (exécution immédiate), il doit placer les bandes magnétiques d'entrée appropriées sur les unités de bande magnétiques appropriées et l'ensemble de cartes approprié, le cas échéant, dans le lecteur de cartes. Une fois le système FORTRAN chargé, les commutateurs appropriés réglés et le bouton de démarrage enfoncé, le système FORTRAN écrira le programme requis et fera en sorte que son exécution commence immédiatement après.
AJOUTS FUTURS AU SYSTÈME FORTRAN
Le langage des formules et des phrases FORTRAN décrit ci-dessus doit être considéré uniquement comme le langage FORTRAN de base. Le système FORTRAN est modifié de manière à rendre l'ajout de nouvelles formules, de nouvelles phrases et de nouvelles fonctions aussi simple que possible. Il est prévu que le langage FORTRAN soit continuellement enrichi par de tels ajouts pour le rendre plus économique, plus pratique et plus efficace. Certaines des possibilités d'ajouts futurs au FORTRAN sont énumérées ci-dessous :
- Une variété de nouvelles formules d'entrée-sortie permettant au programmeur de spécifier différents formats pour les cartes, l'impression, les bandes d'entrée et les bandes magnétiques de sortie.
- Formules de contrôle supplémentaires possibles :
- Début de l'arithmétique complexe
- Fin de l'arithmétique complexe.
- Début de l'arithmétique à double précision.
- Fin de l'arithmétique à double précision.
- Début de l'arithmétique matricielle.
- Fin de l'arithmétique matricielle
- Trier les vecteurs sur la bande magnétique numéro N en utilisant le k-ième élément de chaque vecteur comme information indicative
- Résoudre les N équations simultanées suivantes
- Résoudre le système suivant d'équations différentielles ordinaires du premier ordre
- Trouver le vecteur x(i) maximisant la fonction linéaire f et satisfait les inégalités linéaires suivantes.
- Fonctions supplémentaires possibles : Il y aura bien sûr à terme une longue liste de fonctions arithmétiques disponibles pour le système FORTRAN. Les éléments suivants indiquent certains types de fonctions légèrement inhabituels.
- Fonction générale : Une telle fonction permettrait à un programmeur d'éviter de réécrire un ensemble de formules décrivant une fonction propre à son problème mais apparaissant fréquemment dans son problème. Une telle fonction permettrait au programmeur de spécifier les numéros de formule des formules décrivant sa fonction et les paramètres à utiliser dans une instance donnée. La valeur de la fonction serait la valeur de l'expression de droite de la dernière formule spécifiée dans la description de la fonction, après avoir substitué les paramètres spécifiés aux arguments d'origine apparaissant dans la description de la formule de la fonction.
- Intégrale définie : Une telle fonction permettrait au programmeur de spécifier la variable indépendante, les limites d'intégration et l'expression à intégrer.
- Somme : Cette fonction permettrait au programmeur de spécifier l'indice de sommation, les limites de sommation et l'expression à sommer.
- Recherche de table : Cette fonction permettrait au programmeur de spécifier le numéro de table et le paramètre (ou les paramètres si la fonction particulière était bivariée).
TECHNIQUES SOUHAITABLES À UTILISER DANS LA PROGRAMMATION D'UN PROBLÈME À CODER PAR FORTRAN
Bien que le système FORTRAN soit conçu pour produire un programme correct à partir d'un ensemble correct et significatif de formules FORTRAN et bien que le programmeur découvre invariablement de nombreuses formulations possibles du même problème, l'utilisation de certaines techniques aboutira, bien sûr, à une IBM 704 plus efficace.
- REPRÉSENTATION D'UNE EXPRESSION COMPLIQUÉE : Lors de la traduction d'une formule arithmétique unique, le système FORTRAN permutera les opérations indiquées dans l'expression de droite chaque fois que cela est autorisé afin de minimiser le nombre d'instructions STORE étant nécessaires dans le programme IBM 704 résultant. Ainsi, a x b x c /d/e serait permuté en a/dxb/exc. Cependant, tout ordre de calcul spécifié par l'utilisation de parenthèses sera suivi. De plus, si certaines parties d'une expression sont identiques à certaines autres parties de la même expression (toutes dans la même formule), le système le reconnaîtra et évitera les doublons. Pour permettre au système FORTRAN de reconnaître les doublons de diverses sous-expressions dans une expression du côté droit de la formule arithmétique, il sera seulement nécessaire de mettre entre parenthèses les sous-expressions dupliquées lorsqu'elles apparaissent comme partie d'un terme de l'expression. Lorsque des sous-expressions dupliquées apparaissent comme des termes complets, il ne sera pas nécessaire de les mettre entre parenthèses. De plus, si la sous-expression dupliquée est une fonction qui apparaît à plusieurs endroits avec le même argument, il ne sera pas nécessaire de mettre la fonction entre parenthèses même si elle peut être une partie d'un terme. Ainsi, l'expression suivante :
- a x b x c x(axbxc+excos(a))/(axbxe+fxcos(a))+sqrt (axbxe+fxcos(a))
- ((axb)xc) x((axb)xc+excos(a))/((axb)xe+fxcos(a))+sqrt((axb)xe+fxcos(a))
- FORMATION DE BOUCLES : Lors de la spécification d'opérations sur des éléments séquentiels dans des tableaux ordonnés, il est préférable d'utiliser des formules do dans la mesure du possible, car ces formules présentent les informations de contrôle dont le système a besoin pour former des boucles sous une forme consolidée. L'utilisation de formules telles que :
- i = i + 1
- if (i>n) n1, n2
- DÉBOGAGE : Aucune disposition spéciale n'a été incluse dans le système FORTRAN pour localiser les erreurs dans les formules. Après avoir acquis une certaine expérience dans l'utilisation du système, il sera possible d'écrire un programme pour localiser les erreurs les plus courantes parmi celles se produisant fréquemment dans un programme de formule. Étant donné que les formules FORTRAN sont assez lisibles, il devrait être possible de vérifier leur exactitude en recréant indépendamment les spécifications du problème à partir de sa formulation FORTRAN. De cette manière, il devrait être possible d'écrire des programmes de formule corrects à partir desquels le système FORTRAN produira bien sûr des programmes 704 corrects.
- VÉRIFICATIONS DE PROGRAMME Il n'existe aucune disposition automatique dans le système FORTRAN pour inclure des vérifications du bon fonctionnement de la machine dans un programme codé automatiquement, à moins que les vérifications ne soient prévues dans le programme de formule d'origine. Étant donné que les programmes IBM 704 écrits en FORTRAN seront écrits conformément à certains principes uniformes, il devrait être relativement simple pour un opérateur expérimenté dans les programmes écrits en FORTRAN de déterminer ce qui s'est passé dans un programme après une panne de machine.
peut être écrit sous la forme suivante pour éviter les calculs en double :
En général, si une expression compliquée est impliquée dans un problème, il est préférable de ne pas introduire de nouvelles variables dépendantes pour représenter des parties de l'expression compliquée, puis de représenter l'expression compliquée comme une expression impliquant les nouvelles variables dépendantes. Le respect de ce principe permet au système FORTRAN d'effectuer le maximum d'optimisation.
peut entraîner des instructions inutiles dans le programme résultant si de telles instructions sont utilisées pour former des boucles pouvant autrement être formées par l'utilisation de formules do.