#Lesson 1 | Introduction

Status
Not open for further replies.

root

Administrator
Staff member


[EN]
To read an article, look for a text color that you understand!

[RU] Чтобы прочитать статью, ищите цвет текста который вы понимаете!

[ES] Para leer un artículo, busque un color de texto que entienda.

[UA] Щоб прочитати статтю, шукайте колір тексту, який ви розумієте!


 

root

Administrator
Staff member


[EN]


Fortran is a high level programming language. It belongs to the category of imperative languages and was originally created for programming computing.

Principles & Terms:
The alphabet of a language is a specification of any language limited to a set of characters that can be used in programs.

Lexeme are alphabetic characters that are elements of more complex components. Lexemes play the role of words, the minimal semantic elements of a language.

  • names of variables, subroutines, etc.;
  • special words from which sentences of description, operators and other language constructions are composed;
  • designations of operations, for example, arithmetic;
  • literal constants;
  • separators, that is, special characters that separate operators, list elements, etc. from each other;
  • labels.
Special words are used to build sentences - the basic units of the language that have semantic completeness.
The purpose of keywords depends on the context, that is, on where in the program the word is used.

A variable is characterized by a set of attributes. The name of a variable is one of its main attributes. The next attribute is the value of the variable. The contents of the memory cell associated with the variable can change during the execution of the program (in fact, that's why the variable is called a variable!). The type of a variable determines the type of information contained in an abstract memory cell, as well as the set of operations and the set of its valid values. The most important characteristic of a variable is its address. In a linear memory model, this is the ordinal number of the first physical memory cell that is part of the abstract cell. The scope of a variable is the part of the program where statements can use the variable. We usually talk about global and local variables. Global variables are available throughout the program, while local variables are available only in individual blocks.

A constant differs from a variable primarily in that its value does not change during program execution. It is customary to distinguish between literal and named constants. Literal constants are values that are interpreted in the program exactly as they are depicted. Values can be numeric, character, or others. Literal constants are also called literals.

An operator describes some completed action.
Declarative statements are statements that describe the properties (attributes) of variables and other objects used in the program.
Control statements are statements that control the flow of program execution.
They implement basic algorithmic constructs such as binary and multivariate branches (conditional statements, selection statements) and loops.

Syntax is the rules for writing a program that determine which character sequences can be used in a program.

Alphabet, lexemes, special words of the Fortran language:

The Fortran language alphabet includes 26 Latin letters:
А, В, С, D, E, F, G, H, I, J, К, L, М, N, О, Р, Q, R, S, T, U, V, W, X, Y, Z,
and the case of letters in programs differs only for string constants.

There are also Arabic numerals:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
underscore and special characters.

All special Fortran words are keywords. They can be used as part of sentences or language statements, but their arbitrary use is considered undesirable practice and bad programming style.


Lexemes are the designations of logical operations and logical constants, which are given in Table. 2.

Recording relationships using 4-character notation is common in Fortran 77 and older versions of the language. Starting with Fortran 90, more convenient notation is used, closer to mathematical notation (i.e., notation rules).

Fortran programs use both individual special characters and pairs of characters that have a special meaning. A list of such symbols with a description of some options for their use is given in Table. 3


 

root

Administrator
Staff member


[EN]
BEGINNING OF TABLES


Table 1. The main keywords of the Fortran language
ADMITALLOCATABLEALLOCATEASSIGN
ASSIGNMENTATENDBACKSPACEBLOCKDATA
CALLCASECHARACTERCLOSE
COMMONCOMPLEXCONTAINSCONTINUE
CYCLEDATADEALLOCATEDEFAULT
DIMENSIONDODOUBLEELSE
ENDENDFILEEND IFEND SELECT
ENTRYEQUIVALENCEEXITEXTERNAL
FORMATFUNCTIONGO TOIF
IMPLICITINCLUDEINQUIREINTEGER
INTENTNTERFACEINTRINSICLOGICAL
MAPMODULENAMELISTNONE
OPENOPTIONALPARAMETERPAUSE
POINTERPRINTPRECISIONPROCEDURE
PROGRAMREADREALRECORD
RECURSIVERETURNREWINDSAVE
STOPSTRUCTURESUBROUTINETARGET
THENTYPEUNIONUSE
WHILEWRITE

Table 2. Logical operations and Fortran language constants
SymbolDescriptionSymbolDescription
.GT."more" attitude.OR.Boolean operation "OR"(boolean addition)
.LT."less" attitude.ANDBoolean operation "AND" (boolean multiplication)
.GE.Attitude "more or equal".NOT.Logical negation
.LE.Attitude "less or equal".FALSE.Boolean constant "False"
.NE.Attitude "not equal".TRUE.Boolean constant "True"
.EQ.Attitude "equal".EQV.Attitude equivalence
.neqv.Attitude non-equivalence
 

root

Administrator
Staff member
Table 3. Single and double special characters of the Fortran language
=assignment operator.Decimal point in literal numeric constants or boolean/constant element
+Arithmetic operation "addition"(/
/)
Constraints in array constructors
-Arithmetic operation "subtraction"'
"
String constant delimiters
*Arithmetic operation "multiply":Separator between the name of the construct and its first keyword, separator when specifying a range of index values, separator for the only branch of the USE statement
/Arithmetic operation "divide", delimiter for common block name!Beginning of a comment
(
)
List of sub-routine parameters, array indices, loopsSpace
`Separator in lists: :
`
Delimiter in description clauses
&Sign of transferring the operator to the next line==Equality relation
;Statement separator in a line in free format program notation=>Assigning a pointer
//Concatenation of strings**Exponentiation
>Attitude "more"/=Attitude non-equivalence
<Attitude "less">=Attitude "more or equal"
%Struct Component Selector<=Attitude "less or equal"

Table 4. Use of spaces in various Fortran language constructions
No spaces requiredSpaces are required
BLOCK DATACASE DEFAULT
DOUBLE COMPLEXDO WHILE
DOUBLE PRECISIONIMPLICIT type specification
ELSE IFIMPLICIT NONE
END BLOCK DATAINTERFACE ASSIGNMENT
END DOINTERFACE OPERATOR
END FILEMODULE PROCEDURE
END FORALLRECURSIVE FUNCTION
END FUNCTIONRECURSIVE SUBROUTINE
END IFRECURSIVE type FUNCTION
END INTERFACEtype FUNCTION
END MODULEtype RECURSIVE FUNCTION
END PROGRAM
END SELECT
END SUBROUTINE
END TYPE
END WHERE
GO TO
IN OUT
SELECT CASE

[EN]
END OF TABLES

 

root

Administrator
Staff member

An example of writing the source code of a program in a fixed format:

Code:
        SUBROUTINE CONVCASE(CIN, COUT, LEN, UPCASE)
        IMPLICIT NONE
        INTEGER :: LEN
        CHARACTER (LEN = *) :: CIN, COUT
        LOGICAL :: UPCASE

!    1) CONVERT A CHARACTER STRING TO ALL UPPER CASE OR ALL LOWERCASE.
!    2) ARGUMENTS:
!        CIN     = INPUT CHARACTER STRING
!        COUT     = OUTPUT CHARACTER STRING IN CONVERTED CASE
!        LEN     = THE CHARACTER LENGTH OF CIN
!        UPCASE  = CASE CONVERSION FLAG
!                = .TRUE. FOR UPPER CASE
!                = .FALSE. FOR LOWER CASE
!
        INTEGER :: I, ILETTR, ILOWRO, IUPPRO
        IUPPRO = IACHAR('A') - 1
        ILOWRO = IACHAR('a') - 1
        COUT = ''
        IF(UPCASE) THEN
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - ILOWRO
                IF(ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.
                    COUT(I:I) = ACHAR(IUPPRO + ILETTR)
                ELSE
                    COUT(I:I) = CIN(I:I)
                END IF
            END DO
        ELSE
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - IUPPRO
                IF (ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.    
                    COUT(I:I) = ACHAR(ILOWR0 + ILETTR)
                ELSE
                    COUT(I:I) = CIN (I:I)
                END IF
            END DO
        END IF
        END SUBROUTINE CONVCASE

An example of writing the source code of the program in free format:

Code:
SUBROUTINE CAL_GETENV(var, varval)
! Return as VARVAL the contents of the operating system
! environment variable VAR, if defined.
! INPUT
!    VAR: name of environment variable    [A*]
! OUTPUT:
!     VARVAL: contents of enviroment variable
!
USE MSFLIB
CHARACTER(LEN = *) VAR, VARVAL
INTEGERD(4) :: lval, lenv
INTENT(in) :: VAR
INTENT(out) :: VARVAL
Lenv = LEN_TRIM(var) "FORTRAN 90 intrinsic
Lval = 0
IF(lenv .GT. 0) THEN
     lval = GETENVQQ(var(:lenv), varval)
END IF
IF(lval .EQ. 0) VarVal = ' '
RETURN
END SUBROUTINE CAL_GETENV
Probably, we will stay in more detail on the features of writing text in a free format.

[EN]

 

root

Administrator
Staff member

[RU]



Fortran — язык программирования высокого уровня. Он относится к категории императивных языков и изначально создавался для программирования вычислений.

Принципы и термины:
Алфавит языка - это спецификация любого языка ограниченная набором символов, которые можно использовать в программах.

Лексемы - это символы алфавита которые являются элементами более сложных компонентов. Лексемы играют роль слов — минимальных смысловых элементов языка.
Лексемами являются:

  • имена переменных, подпрограмм и т. д.;
  • специальные слова, из которых составляются предложения описания,операторы и другие конструкции языка;
  • обозначения операций, например, арифметических;
  • буквальные константы;
  • разделители, то есть специальные символы, отделяющие друг от друга операторы, элементы списков и т. д.;
  • метки.
Специальные слова используются для построения предложений — базовых единиц языка, обладающих смысловой завершенностью.
Назначение ключевых слов зависит от контекста, то есть от того, где в программе слово используется.

Переменная характеризуется набором атрибутов. Имя переменной является одним из основных ее атрибутов. Следующий атрибут — значение переменной.Содержимое ячейки памяти, связанной с переменной, может изменяться в ходе выполнения программы (собственно, поэтому переменная и называется переменной!). Тип переменной определяет вид информации, содержа-содержащейся в абстрактной ячейке памяти, а также набор операций и множество ее допустимых значений. Важнейшей характеристикой переменной является и ее адрес. В линейной модели памяти это порядковый номер первой физической ячейки памяти, входящей в состав абстрактной ячейки. Область видимости переменной — это такая часть программы, в которой операторы могут использовать данную переменную. Обычно говорят о глобальных и локальных переменных. Глобальные переменные доступны во всей программе, а локальные только в отдельных ее блоках.


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

Оператор описывает некоторое законченное действие.
Декларативные операторы это операторы которые описывают свойства (атрибуты) переменных и других объектов, используемых в программе.
Управляющие операторы это операторы, которые управляют ходом выполнения программы.
Они реализуют основные алгоритмические конструкции, такие как бинарные и многовариантные ветвления (условные операторы, операторы выбора) и циклы.

Синтаксис это правила написания программы определяющие, какие последовательности символов можно использовать в программе.

Алфавит, лексемы, специальные слова языка Фортран:

Алфавит языка Фортран включает 26 латинских букв:
А, В, С, D, E, F, G, H, I, J, К, L, М, N, О, Р, Q, R, S, T, U, V, W, X, Y, Z,
причем регистр букв в программах различается только для строковых констант.
Есть также арабские цифры:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,символ подчеркивания и специальные символы.

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


Лексемами являются обозначения логических операций и логических констант, которые приведены в табл. 2.
Запись отношений с помощью 4-символьных обозначений характерна для Фортрана 77 и более старых версий языка. Начиная с Фортрана 90, используются более удобные обозначения, приближенные к математической нотации (т. е. правилам записи).

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


 

root

Administrator
Staff member



[RU]
ТАБЛИЦЫ





Таблица 1. Основные ключевые слова языка Фортран
ADMITALLOCATABLEALLOCATEASSIGN
ASSIGNMENTATENDBACKSPACEBLOCKDATA
CALLCASECHARACTERCLOSE
COMMONCOMPLEXCONTAINSCONTINUE
CYCLEDATADEALLOCATEDEFAULT
DIMENSIONDODOUBLEELSE
ENDENDFILEEND IFEND SELECT
ENTRYEQUIVALENCEEXITEXTERNAL
FORMATFUNCTIONGO TOIF
IMPLICITINCLUDEINQUIREINTEGER
INTENTNTERFACEINTRINSICLOGICAL
MAPMODULENAMELISTNONE
OPENOPTIONALPARAMETERPAUSE
POINTERPRINTPRECISIONPROCEDURE
PROGRAMREADREALRECORD
RECURSIVERETURNREWINDSAVE
STOPSTRUCTURESUBROUTINETARGET
THENTYPEUNIONUSE
WHILEWRITE

Таблица 2. Логические операции и константы языка Фортран
СимволОписаниеСимволОписание
.GT.Отношение "больше".OR.Логическая операция "ИЛИ"(логическое сложение)
.LT.Отношение "меньше".ANDЛогическая операция "И" (логическое умножение)
.GE.Отношение "больше или равно".NOT.Логическое отрицание
.LE.Отношение "меньше или равно".FALSE.Логическая константа "ложь"
.NE.Отношение "не равно".TRUE.Логическая константа "истина"
.EQ.Отношение "равно".EQV.Отношение эквивалентности
.neqv.Отношение неэквивалентности

 

root

Administrator
Staff member
Таблица 3. Одиночные и двойные специальные символы языка Фортран
=Оператор присваивания.Десятичная точка в буквальных числовых константах или элемент логической операции/константы
+Арифметическая операция "сложения"(/
/)
Ограничители в конструкторах массивов
-Арифметическая операция "вычитания"'
"
Ограничители строковой константы
*Арифметическая операция"умножение":Разделитель между именем конструкции и первым ее ключевым словом, разделитель при указании диапазона значений индекса, разделитель для ветви only оператора использования USE
/Арифметическая операция"деление", ограничитель для имени common-блока!Начало комментария
(
)
Список параметров под-подпрограммы, индексы массива, циклыПробел
`Разделитель в списках: :
`
Разделитель в предложениях описания
&Признак переноса оператора на следующую строку==Отношение равенства
;Разделитель операторов в строке в свободном формате записи программы=>Присваивание указателя
//Объединение строк**Возведение в степень
>Отношение "больше"/=Отношение неравенства
<Отношение "меньше">=Отношение "больше или равно"
%Селектор компонента структуры<=Отношение "меньше или равно"

Таблица 4. Использование пробелов в различных конструкциях языка Фортран
Пробелы не требуютсяПробелы требуются
BLOCK DATACASE DEFAULT
DOUBLE COMPLEXDO WHILE
DOUBLE PRECISIONIMPLICIT спецификация типа
ELSE IFIMPLICIT NONE
END BLOCK DATAINTERFACE ASSIGNMENT
END DOINTERFACE OPERATOR
END FILEMODULE PROCEDURE
END FORALLRECURSIVE FUNCTION
END FUNCTIONRECURSIVE SUBROUTINE
END IFRECURSIVE тип FUNCTION
END INTERFACEтип FUNCTION
END MODULEтип RECURSIVE FUNCTION
END PROGRAM
END SELECT
END SUBROUTINE
END TYPE
END WHERE
GO TO
IN OUT
SELECT CASE

[RU]
КОНЕЦ ТАБЛИЦ

 

root

Administrator
Staff member
Пример записи исходного текста программы в фиксированном формате

Code:
        SUBROUTINE CONVCASE(CIN, COUT, LEN, UPCASE)
        IMPLICIT NONE
        INTEGER :: LEN
        CHARACTER (LEN = *) :: CIN, COUT
        LOGICAL :: UPCASE

!    1) CONVERT A CHARACTER STRING TO ALL UPPER CASE OR ALL LOWERCASE.
!    2) ARGUMENTS:
!        CIN     = INPUT CHARACTER STRING
!        COUT     = OUTPUT CHARACTER STRING IN CONVERTED CASE
!        LEN     = THE CHARACTER LENGTH OF CIN
!        UPCASE  = CASE CONVERSION FLAG
!                = .TRUE. FOR UPPER CASE
!                = .FALSE. FOR LOWER CASE
!
        INTEGER :: I, ILETTR, ILOWRO, IUPPRO
        IUPPRO = IACHAR('A') - 1
        ILOWRO = IACHAR('a') - 1
        COUT = ''
        IF(UPCASE) THEN
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - ILOWRO
                IF(ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.
                    COUT(I:I) = ACHAR(IUPPRO + ILETTR)
                ELSE
                    COUT(I:I) = CIN(I:I)
                END IF
            END DO
        ELSE
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - IUPPRO
                IF (ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.  
                    COUT(I:I) = ACHAR(ILOWR0 + ILETTR)
                ELSE
                    COUT(I:I) = CIN (I:I)
                END IF
            END DO
        END IF
        END SUBROUTINE CONVCASE

Пример записи исходного текста программы в свободном формате

Code:
SUBROUTINE CAL_GETENV(var, varval)
! Return as VARVAL the contents of the operating system
! environment variable VAR, if defined.
! INPUT
!    VAR: name of environment variable    [A*]
! OUTPUT:
!     VARVAL: contents of enviroment variable
!
USE MSFLIB
CHARACTER(LEN = *) VAR, VARVAL
INTEGERD(4) :: lval, lenv
INTENT(in) :: VAR
INTENT(out) :: VARVAL
Lenv = LEN_TRIM(var) "FORTRAN 90 intrinsic
Lval = 0
IF(lenv .GT. 0) THEN
     lval = GETENVQQ(var(:lenv), varval)
END IF
IF(lval .EQ. 0) VarVal = ' '
RETURN
END SUBROUTINE CAL_GETENV
Вероятно, мы остановимся более подробно на особенностях записи текста в свободном формате.



[RU]

 

root

Administrator
Staff member


[ES]



Fortran es un lenguaje de programación de alto nivel. Pertenece a la categoría de lenguajes imperativos y fue creado originalmente para programar cálculos.

Principios y términos:
El alfabeto de un idioma es una especificación de cualquier idioma limitada a un conjunto de caracteres que se pueden usar en los programas.


Los léxicos son caracteres alfabéticos que son elementos de componentes más complejos. Los léxicos juegan el papel de palabras, los elementos semánticos mínimos de una lengua.

Los léxicos son:

  • nombres de variables, subrutinas, etc.;
  • palabras especiales que forman oraciones descriptivas, operadores y otras construcciones del lenguaje;
  • designaciones de operaciones, por ejemplo, aritmética;
  • constantes literales;
  • los separadores, es decir, los caracteres especiales, se separan entre sí mediante operadores, elementos de lista, etc.;
  • etiquetas.
Las palabras especiales se utilizan para construir oraciones, las unidades básicas del idioma que tienen integridad semántica.
El propósito de las palabras clave depende del contexto, es decir, de dónde se usa la palabra en el programa.

Una variable se caracteriza por un conjunto de atributos. El nombre de una variable es uno de sus principales atributos. El siguiente atributo es el valor de la variable.El contenido de la celda de memoria asociada con la variable puede cambiar durante la ejecución del programa (de hecho, ¡es por eso que la variable se llama variable!). El tipo de una variable determina el tipo de información contenida en una celda de memoria abstracta, así como el conjunto de operaciones y el conjunto de sus valores válidos. La característica más importante de una variable es su dirección. En un modelo de memoria lineal, este es el número ordinal de la primera celda de memoria física que forma parte de la celda abstracta. El alcance de una variable es la parte del programa donde las declaraciones pueden usar la variable. Normalmente hablamos de variables globales y locales. Las variables globales están disponibles en todo el programa, mientras que las variables locales están disponibles solo en bloques individuales.


Una constante se diferencia de una variable principalmente en que su valor no cambia durante la ejecución del programa. Es costumbre distinguir entre constantes literales y con nombre. Las constantes literales son valores que se interpretan en el programa exactamente como se representan. Los valores pueden ser numéricos, de carácter u otros. Las constantes literales también se denominan literales.

Un operador describe alguna acción completada.
Las declaraciones declarativas son declaraciones que describen las propiedades (atributos) de las variables y otros objetos utilizados en el programa.
Las sentencias de control son sentencias que controlan el flujo de ejecución del programa.
Implementan construcciones algorítmicas básicas, como ramas binarias y multivariadas (sentencias condicionales, sentencias de selección) y bucles.

La sintaxis son las reglas para escribir un programa que determinan qué secuencias de caracteres se pueden usar en un programa.

Alfabeto, lexemas, palabras especiales del idioma Fortran:

El alfabeto del idioma Fortran incluye 26 letras latinas:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
y el caso de las letras en los programas difiere solo para las constantes de cadena.

También hay números arábigos:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
guión bajo y caracteres especiales.

Todas las palabras especiales de Fortran son palabras clave. Se pueden usar como parte de oraciones o declaraciones de lenguaje, pero su uso arbitrario se considera una práctica indeseable y un mal estilo de programación.

Los tokens son las designaciones de operaciones lógicas y constantes lógicas, que se dan en la Tabla. 2.
El registro de relaciones usando la notación de 4 caracteres es común en Fortran 77 y versiones anteriores del lenguaje. A partir de Fortran 90, se usa una notación más conveniente, más cercana a la notación matemática (es decir, reglas de notación).

Los programas Fortran utilizan caracteres especiales individuales y pares de caracteres que tienen un significado especial. En la Tabla se proporciona una lista de tales símbolos con una descripción de algunas opciones para su uso. 3


 

root

Administrator
Staff member


[ES]
MESAS




Tabla 1. Las principales palabras clave del lenguaje Fortran
ADMITALLOCATABLEALLOCATEASSIGN
ASSIGNMENTATENDBACKSPACEBLOCKDATA
CALLCASECHARACTERCLOSE
COMMONCOMPLEXCONTAINSCONTINUE
CYCLEDATADEALLOCATEDEFAULT
DIMENSIONDODOUBLEELSE
ENDENDFILEEND IFEND SELECT
ENTRYEQUIVALENCEEXITEXTERNAL
FORMATFUNCTIONGO TOIF
IMPLICITINCLUDEINQUIREINTEGER
INTENTNTERFACEINTRINSICLOGICAL
MAPMODULENAMELISTNONE
OPENOPTIONALPARAMETERPAUSE
POINTERPRINTPRECISIONPROCEDURE
PROGRAMREADREALRECORD
RECURSIVERETURNREWINDSAVE
STOPSTRUCTURESUBROUTINETARGET
THENTYPEUNIONUSE
WHILEWRITE

Tabla 2. Operaciones lógicas y constantes del lenguaje Fortran
SímboloDescripciónSímboloDescripción
.GT.Actitud "más".OR.Operación lógica "OR" (suma lógica)
.LT.Actitud "menos".ANDOperación lógica "Y" (multiplicación lógica)
.GE.Actitud "más o igual".NOT.La negación lógica
.LE.Actitud "menor o igual".FALSE.Booleana constante "Falso"
.NE.Actitud "no es igual".TRUE.Booleana constante "verdadero"
.EQ.Actitud "igual".EQV.Actitud equivalencia
.neqv.Actitud no equivalencia

 

root

Administrator
Staff member
Tabla 3. Caracteres especiales simples y dobles del lenguaje Fortran
=assignment operator.Decimal point in literal numeric constants or boolean/constant element
+Arithmetic operation "addition"(/
/)
Constraints in array constructors
-Arithmetic operation "subtraction"'
"
String constant delimiters
*Arithmetic operation "multiply":Separator between the name of the construct and its first keyword, separator when specifying a range of index values, separator for the only branch of the USE statement
/Arithmetic operation "divide", delimiter for common block name!Beginning of a comment
(
)
List of sub-routine parameters, array indices, loopsSpace
`Separator in lists: :
`
Delimiter in description clauses
&Sign of transferring the operator to the next line==Equality relation
;Statement separator in a line in free format program notation=>Assigning a pointer
//Concatenation of strings**Exponentiation
>Attitude "more"/=Attitude non-equivalence
<Attitude "less">=Attitude "more or equal"
%Struct Component Selector<=Attitude "less or equal"

Tabla 4. Uso de espacios en varias construcciones del lenguaje Fortran
No spaces requiredSpaces are required
BLOCK DATACASE DEFAULT
DOUBLE COMPLEXDO WHILE
DOUBLE PRECISIONIMPLICIT type specification
ELSE IFIMPLICIT NONE
END BLOCK DATAINTERFACE ASSIGNMENT
END DOINTERFACE OPERATOR
END FILEMODULE PROCEDURE
END FORALLRECURSIVE FUNCTION
END FUNCTIONRECURSIVE SUBROUTINE
END IFRECURSIVE type FUNCTION
END INTERFACEtype FUNCTION
END MODULEtype RECURSIVE FUNCTION
END PROGRAM
END SELECT
END SUBROUTINE
END TYPE
END WHERE
GO TO
IN OUT
SELECT CASE



[ES]
FIN DE MESAS


 

root

Administrator
Staff member
Un ejemplo de escritura del código fuente del programa en formato libre.

Code:
        SUBROUTINE CONVCASE(CIN, COUT, LEN, UPCASE)
        IMPLICIT NONE
        INTEGER :: LEN
        CHARACTER (LEN = *) :: CIN, COUT
        LOGICAL :: UPCASE

!    1) CONVERT A CHARACTER STRING TO ALL UPPER CASE OR ALL LOWERCASE.
!    2) ARGUMENTS:
!        CIN     = INPUT CHARACTER STRING
!        COUT     = OUTPUT CHARACTER STRING IN CONVERTED CASE
!        LEN     = THE CHARACTER LENGTH OF CIN
!        UPCASE  = CASE CONVERSION FLAG
!                = .TRUE. FOR UPPER CASE
!                = .FALSE. FOR LOWER CASE
!
        INTEGER :: I, ILETTR, ILOWRO, IUPPRO
        IUPPRO = IACHAR('A') - 1
        ILOWRO = IACHAR('a') - 1
        COUT = ''
        IF(UPCASE) THEN
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - ILOWRO
                IF(ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.
                    COUT(I:I) = ACHAR(IUPPRO + ILETTR)
                ELSE
                    COUT(I:I) = CIN(I:I)
                END IF
            END DO
        ELSE
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - IUPPRO
                IF (ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE. 
                    COUT(I:I) = ACHAR(ILOWR0 + ILETTR)
                ELSE
                    COUT(I:I) = CIN (I:I)
                END IF
            END DO
        END IF
        END SUBROUTINE CONVCASE

Un ejemplo de escritura del código fuente del programa en formato libre.

Code:
SUBROUTINE CAL_GETENV(var, varval)
! Return as VARVAL the contents of the operating system
! environment variable VAR, if defined.
! INPUT
!    VAR: name of environment variable    [A*]
! OUTPUT:
!     VARVAL: contents of enviroment variable
!
USE MSFLIB
CHARACTER(LEN = *) VAR, VARVAL
INTEGERD(4) :: lval, lenv
INTENT(in) :: VAR
INTENT(out) :: VARVAL
Lenv = LEN_TRIM(var) "FORTRAN 90 intrinsic
Lval = 0
IF(lenv .GT. 0) THEN
     lval = GETENVQQ(var(:lenv), varval)
END IF
IF(lval .EQ. 0) VarVal = ' '
RETURN
END SUBROUTINE CAL_GETENV
Probablemente, nos detendremos con más detalle en las características de escribir texto en un formato libre.



[ES]

 

root

Administrator
Staff member

[UA]



Fortran – мова програмування високого рівня. Він належить до категорії імперативних мов і спочатку створювався для програмування обчислень.



Принципи та терміни:
Алфавіт мови - це специфікація будь-якої мови, обмежена набором символів, які можна використовувати в програмах.

Лексеми - це символи алфавіту, які є елементами складніших компонентів. Лексеми відіграють роль слів - мінімальних смислових елементів мови.

Лексемами є:

  • імена змінних, підпрограм тощо;
  • спеціальні слова, з яких складаються речення опису, оператори та інші конструкції мови;
  • позначення операцій, наприклад, арифметичних;
  • буквальні константи;
  • роздільники, тобто спеціальні символи, що відокремлюють один від одного оператори, елементи списків тощо;
  • мітки.
Спеціальні слова використовуються для побудови речень — базових одиниць мови, які мають смислову завершеність.
Призначення ключових слів залежить від контексту, тобто від того, де в програмі слово використовується.



Змінна характеризується набором атрибутів. Ім'я змінної є одним із основних її атрибутів. Наступний атрибут - значення змінної. Вміст клітинки пам'яті, пов'язаної зі змінною, може змінюватися в ході виконання програми (власне, тому змінна і називається змінною!). Тип змінної визначає вид інформації, що містить-в абстрактній комірці пам'яті, а також набір операцій і безліч її допустимих значень. Найважливішою характеристикою змінної є її адресу. У лінійній моделі пам'яті це порядковий номер першого фізичного осередку пам'яті, що входить до складу абстрактного осередку. Область видимості змінної — це така частина програми, у якій оператори можуть використовувати змінну. Зазвичай говорять про глобальні та локальні змінні. Глобальні змінні доступні у всій програмі, а локальні лише окремих її блоках.





Константа відрізняється від змінної передусім тим, що її значення не змінюється під час виконання програми. Прийнято розрізняти буквальні та іменовані константи. Буквальні константи є значення, які сприймаються в програмі в точності так, як вони зображені. Значення можуть бути числовими, символьними чи іншими. Буквальні константи ще називають літералами.



Оператор визначає деяку закінчену дію.
Декларативні оператори це оператори, які описують властивості (атрибути) змінних та інших об'єктів, що використовуються в програмі.
Керуючі оператори це оператори, які керують ходом виконання програми.
Вони реалізують основні алгоритмічні конструкції, такі як бінарні та багатоваріантні розгалуження (умовні оператори, оператори вибору) та цикли.



Синтаксис це правила написання програми, які визначають, які послідовності символів можна використовувати в програмі.



Алфавіт, лексеми, спеціальні слова мови Фортран:



Алфавіт мови Фортран включає 26 латинських літер:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, Р, Q, R, S, T, U, V, W, X, Y, Z,
причому регістр літер у програмах відрізняється лише для рядкових констант.

Є також арабські цифри:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
символ підкреслення та спеціальні символи.


Усі спеціальні слова мови Фортран є ключовими. Вони можуть використовуватися в складі пропозицій або операторів мови, але їх довільне застосування вважається небажаною практикою і поганим стилем програмування.



Лексемами є позначення логічних операцій та логічних констант, які наведені в табл. 2.

Запис відносин за допомогою 4-символьних позначень характерний для Фортрана 77 і старіших версій мови. Починаючи з Фортрана 90, використовуються зручніші позначення, наближені до математичної нотації (тобто правил запису).


У програмах мовою Фортран використовуються як окремі спеціальні символи, так і пари символів, які мають особливе значення. Перелік таких символів з описом деяких варіантів застосування наведено в табл. 3

 

root

Administrator
Staff member

[UA]
ТАБЛИЦI



Таблиця 1. Основні ключові слова мови Фортран
ADMITALLOCATABLEALLOCATEASSIGN
ASSIGNMENTATENDBACKSPACEBLOCKDATA
CALLCASECHARACTERCLOSE
COMMONCOMPLEXCONTAINSCONTINUE
CYCLEDATADEALLOCATEDEFAULT
DIMENSIONDODOUBLEELSE
ENDENDFILEEND IFEND SELECT
ENTRYEQUIVALENCEEXITEXTERNAL
FORMATFUNCTIONGO TOIF
IMPLICITINCLUDEINQUIREINTEGER
INTENTNTERFACEINTRINSICLOGICAL
MAPMODULENAMELISTNONE
OPENOPTIONALPARAMETERPAUSE
POINTERPRINTPRECISIONPROCEDURE
PROGRAMREADREALRECORD
RECURSIVERETURNREWINDSAVE
STOPSTRUCTURESUBROUTINETARGET
THENTYPEUNIONUSE
WHILEWRITE

Таблиця 2. Логічні операції та константи мови Фортран
СимволОписСимволОпис
.GT.Отношение "больше".OR.Логическая операция "ИЛИ"(логическое сложение)
.LT.Отношение "меньше".ANDЛогическая операция "И" (логическое умножение)
.GE.Отношение "больше или равно".NOT.Логическое отрицание
.LE.Отношение "меньше или равно".FALSE.Логическая константа "ложь"
.NE.Отношение "не равно".TRUE.Логическая константа "истина"
.EQ.Отношение "равно".EQV.Отношение эквивалентности
.neqv.Отношение неэквивалентности

 

root

Administrator
Staff member
Таблиця 3. Поодинокі та подвійні спеціальні символи мови Фортран
=Оператор присваивания.Десятичная точка в буквальных числовых константах или элемент логической операции/константы
+Арифметическая операция "сложения"(/
/)
Ограничители в конструкторах массивов
-Арифметическая операция "вычитания"'
"
Ограничители строковой константы
*Арифметическая операция"умножение":Разделитель между именем конструкции и первым ее ключевым словом, разделитель при указании диапазона значений индекса, разделитель для ветви only оператора использования USE
/Арифметическая операция"деление", ограничитель для имени common-блока!Начало комментария
(
)
Список параметров под-подпрограммы, индексы массива, циклыПробел
`Разделитель в списках: :
`
Разделитель в предложениях описания
&Признак переноса оператора на следующую строку==Отношение равенства
;Разделитель операторов в строке в свободном формате записи программы=>Присваивание указателя
//Объединение строк**Возведение в степень
>Отношение "больше"/=Отношение неравенства
<Отношение "меньше">=Отношение "больше или равно"
%Селектор компонента структуры<=Отношение "меньше или равно"

Таблиця 4. Використання прогалин у різних конструкціях мови Фортран
Пробелы не требуютсяПробелы требуются
BLOCK DATACASE DEFAULT
DOUBLE COMPLEXDO WHILE
DOUBLE PRECISIONIMPLICIT спецификация типа
ELSE IFIMPLICIT NONE
END BLOCK DATAINTERFACE ASSIGNMENT
END DOINTERFACE OPERATOR
END FILEMODULE PROCEDURE
END FORALLRECURSIVE FUNCTION
END FUNCTIONRECURSIVE SUBROUTINE
END IFRECURSIVE тип FUNCTION
END INTERFACEтип FUNCTION
END MODULEтип RECURSIVE FUNCTION
END PROGRAM
END SELECT
END SUBROUTINE
END TYPE
END WHERE
GO TO
IN OUT
SELECT CASE

[UA]
КIНЕЦЬ ТАБЛИЦЬ

 

root

Administrator
Staff member
Приклад запису вихідного тексту програми у фіксованому форматі

Code:
        SUBROUTINE CONVCASE(CIN, COUT, LEN, UPCASE)
        IMPLICIT NONE
        INTEGER :: LEN
        CHARACTER (LEN = *) :: CIN, COUT
        LOGICAL :: UPCASE

!    1) CONVERT A CHARACTER STRING TO ALL UPPER CASE OR ALL LOWERCASE.
!    2) ARGUMENTS:
!        CIN     = INPUT CHARACTER STRING
!        COUT     = OUTPUT CHARACTER STRING IN CONVERTED CASE
!        LEN     = THE CHARACTER LENGTH OF CIN
!        UPCASE  = CASE CONVERSION FLAG
!                = .TRUE. FOR UPPER CASE
!                = .FALSE. FOR LOWER CASE
!
        INTEGER :: I, ILETTR, ILOWRO, IUPPRO
        IUPPRO = IACHAR('A') - 1
        ILOWRO = IACHAR('a') - 1
        COUT = ''
        IF(UPCASE) THEN
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - ILOWRO
                IF(ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.
                    COUT(I:I) = ACHAR(IUPPRO + ILETTR)
                ELSE
                    COUT(I:I) = CIN(I:I)
                END IF
            END DO
        ELSE
            DO I = 1, LEN
                ILETTR = IACHAR(CIN(I:I)) - IUPPRO
                IF (ILETTR .GE. 1 .AND. ILETTR .LE. 26) THEN
!                    CONVERT TO UPPER CASE.
                    COUT(I:I) = ACHAR(ILOWR0 + ILETTR)
                ELSE
                    COUT(I:I) = CIN (I:I)
                END IF
            END DO
        END IF
        END SUBROUTINE CONVCASE
Приклад запису вихідного тексту програми у вільному форматі

Code:
SUBROUTINE CAL_GETENV(var, varval)
! Return as VARVAL the contents of the operating system
! environment variable VAR, if defined.
! INPUT
!    VAR: name of environment variable    [A*]
! OUTPUT:
!     VARVAL: contents of enviroment variable
!
USE MSFLIB
CHARACTER(LEN = *) VAR, VARVAL
INTEGERD(4) :: lval, lenv
INTENT(in) :: VAR
INTENT(out) :: VARVAL
Lenv = LEN_TRIM(var) "FORTRAN 90 intrinsic
Lval = 0
IF(lenv .GT. 0) THEN
     lval = GETENVQQ(var(:lenv), varval)
END IF
IF(lval .EQ. 0) VarVal = ' '
RETURN
END SUBROUTINE CAL_GETENV
Ймовірно, ми зупинимося докладніше на особливостях запису тексту у вільному форматі.



[UA]
 
T

Thomas

Guest
Probablemente, nos detendremos con más detalle en las características de escribir texto en un formato libre.
por ejemplo:

Code:
program helloworld
   print *, "Hello, World!"
end program helloworld
 
Status
Not open for further replies.
Top