высокого уровня (на примере FORTRAN)
Язык программирования – это набор правил, согласно которым можно записать алгоритм для дальнейшей обработки его компилятором (compiler) и редактором связей (linker). Программа, с точки зрения компьютера, это последовательность действий. Программа состоит из операторов (statements). Операторы делятся на исполняемые и неисполняемые. Исполняемые операторы как раз и определяют действия, в то время как неисполняемые определяют разные программные атрибуты, такие как размещение (arrangement) и характеристики данных, а также информацию для преобразования данных (data-conversion) и другие свойства и особенности.
Новый формат – FREE (свободный). Нет ограничений на расположение оператора на строке. Метка ставится перед оператором через пробел. Допускается запись нескольких операторов на одной строке – разделителем является символ ”;”. Для продолжения оператора на следующей строке необходимо в конце поставить символ ”&”. В свободном формате пробелы (в ключевых словах) являются значимыми. Комментарий – символ ”!” в любой позиции, далее до конца строки любой текст считается комментарием и игнорируется компилятором.
Меткалф рекомендует следующие правила для совместимости программы в свободном и фиксированном формате:
Требования к оформлению программы - правило рельефа. Если оператор содержиться внутри блока (например, в теле цикла, или в блочном усл. операторе), то его начало должно отступать как минимум на одну позицию вправо от оператора начала блока.
do i=1,5 print '(i5,\)',i end do print *
Комментарии, операторы Include и директивы
|
Options
|
||
Program, FUNCTION,
SUBROUTINE,
MODULE, BLOCK DATA
|
|||
USE
|
|||
NAMELIST,
FORMAT,
ENTRY
|
IMPLICIT NONE
|
||
PARAMETER
|
IMPLICIT
|
||
PARAMETER and DATA
|
Derived-Type Definitions,
Interface Blocks, Type Declaration, Function statements, Specification
statements
|
||
Data
|
Executable statements
|
||
Contains statement
|
|||
Internal subprograms or Module Subprograms
|
|||
END
|
Например, комментарии могут находиться в любом месте программного блока до оператора END.
Комментарий - текст, который компилятор пропускает. Если програмисту
нужно записать в тексте программы любую информацию, например, поясняющую код
программы, названия и суть модулей, заметки "на полях", он может сделать
это с помощью коментариев.
Элементы языка:
Как в обычном разговорном языке фразы записываются с помощью алфавита, так и в языке программирования с помощью знаков из его алфавита записываются элементы языка, складывающиеся в определенные конструкции. В Fortran-е алфавит - буквы английского алфавита, 10 арабских чисел и ряд спец. символов - в том числе символ подчеркивания "_". Используя это алфавит записываются простейшие элементы, соответствующие словам в обычном языке. Они называются лексемами. Разделяются пробелом или символом конца строки. Из этих лексем составляются операторы. Операторы соответствуют законченным фразам в обычном языке. Операторы могут складываться в программные блоки. Из них и составляется программа. Лексемы - ключевые слова, имена, константы, знаки операций, разделители.
Имена – это последовательность литер, предназначенная для обозначения любых объектов программы, таких как переменная , массив, программа и т.д. Имя начинается с буквы и может содержать буквы, цифры и знак подчеркивания. Длина имени – до 31 символа, в новом стандарте – до 63 символов.
Неверно: 5q, B.4, _wrong
"Имена нужны для идентификации объекта и должны содержать хоть какую-то информацию о содержимом объекта. Для глобальных переменных - более полная информация, для локальных - более короткая. Это объясняется тем, что локальные объекты должны использоваться в небольшом тексте программы. Если при его просмотре легко понять смысл назначения переменной, достаточно использовать сокращенное имя. Также можно применять имена согласно устоявшимся правилам, например, для обозначения переменных - счетчиков цикла общепринято использовать имена i,j,k и тд. В этом случае длинные имена доже вредны, так как "загромождают" текст программы и отвлекают от смысла. Очень полезно в имя включять информацию о типе переменной. Одним из самых известных примеров может быть "Венгерская нотация".
из:"Учебник по технологии программирования"
mini-soft....html
Ключевые слова – последовательность литер, имеющая определенный смысл в языке, например, названия типов переменных, команды ввода-вывода и др. В отличие от некоторых языков программирования, в которых определенные слова зарезервированы и могут использоваться программистом только в определенном смысле и контексте, Fortran не имеет таких ограничений. Тем не менее, программист должен следить, когда при именовании переменных делается попытка использовать любые слова, входящие в язык.
Примеры ключевых слов: integer, real, if, else, end, endif
Когда мы работаем с информацией, она имеет какой-то тип. От него зависит набор действий над этой информацией. Следовательно, и переменные должны иметь какой-то тип. Какие типы чаще всего используются – зависит от области работы программиста. Для расчетных задач - целые и вещественные. Их смысл понятен и так. Также бывают комплексные, символьные и логические. Поскольку данные любого типа в памяти записываются в двоичном коде, но принцип кодирования разный, программист должен указать компьютеру тип данных, запоминаемых в пременной. Следовательно, должны существовать некоторые правила, соглашения о способах хранения разных типов. Компьютер должен знать, что хранится в том или ином месте, как с этим работать.Для этого необходимо использовать оператор описания типа.
Определив те данные, с которыми придется программе оперировать, нужно под них выделить переменные или константы. Переменные – для изменяющихся данных и для результатов.
Резюме:
переменная | место хранения данных (или объект, который может содержать некоторое значение). Ее свойствами являются: имя переменной; адрес в памяти; размер занимаемой памяти; тип хранимых данных; количество (для массивов);….. |
+5
|
Просто 5
|
-i
|
Отрицательное значение того, что было в переменной i
|
.NOT..TRUE.
|
== .FALSE.
|
5*3
|
равно произведению обоих операндов, т.е. ==15
|
i**2
|
Квадрат значения переменной i
|
.TRUE..AND..TRUE
|
==.TRUE.
|
Category
|
Operator
|
Precedence
|
|
Defined Unary Operators
|
Highest
|
Numeric
|
**
|
|
Numeric
|
* or /
|
|
Numeric
|
Unary + or -
|
|
Numeric
|
Binary + or -
|
|
Character
|
//
|
|
Relational
|
.EQ., .NE., .LT., .LE., .GT., .GE.
= =, /=, <, <=, >, >= |
|
Logical
|
.NOT.
|
|
Logical
|
.AND.
|
|
Logical
|
.OR.
|
|
Logical
|
.EQV., .NEQV.
|
|
|
Defined Binary Operators
|
Lowest
|
Операция может быть:
Numeric - числовая; Сharacter - символьная; Relational - отношения; Logical - логическая.
В выражении операции выполняются в порядке, определяемом их приоритетами. Порядок можно изменить с помощью скобок, т.е. скобки имеют наивысший приоритет.
Логические операции
Логический тип описывается ключевым словом LOGICAL. Логические константы записываются как .TRUE. и .FALSE. Логическое выражение может иметь только два значения: ИСТИНА или ЛОЖЬ. Логическое выражение может состоять из комбинаций (1 или более) логических констант, логических переменных, логических функций и выражений, имеющих логический тип, соединенных логическими операциями (negation (.NOT.), conjunction 14 (.AND.), inclusive disjunction (.OR.), logical equivalence (.EQV.), logical nonequivalence (.NEQV.)), а также констант и переменных других типов, соединенных операциями отношений <, <=, ==, /=, >, >=. Порядок выполнения операций при вычислении выражения определяется приоритетом операций и скобками.
Выражения, содержащие логические переменные и/или операции отношения, могут быть объединены в логическое выражение с использованием следующих логических операций:Все логические операции, кроме .NOT., являются бинарными, т.е. требуют 2 операнда логического типа.
Операция .AND. дает результат .TRUE. только в том случае, если оба выражения истинны, в противном случае дает значение .FALSE.
LOGICAL :: test ! описание логической переменной с именем test
Integer :: i=5 ! описание и инициализация целой переменной с именем i
test = (i>0) .AND. (i<=6) ! присваивание переменной test значения логического выражения (.true.)
2) LOGICAL :: test, employed=.true.
INTEGER :: age=50
test = employed .AND. (age<45) ! test=.false.
LOGICAL :: test
Integer :: i=5
test = (i<=0) .OR. (i>6) ! test=.false.
Операция .NOT. используется для отрицания (инверсии) логического
значения выражения, то есть .NOT..TRUE. дает .FALSE. и наоборот.
1) LOGICAL :: test
Integer :: i=5
test =.NOT. (i>0 .AND.i<=6) ! test=.false.
2) INTEGER :: big=100, small=2
LOGICAL :: test
test = .NOT. (big>small) ! test=.false.
test = .NOT. test ! test=.true.
LOGICAL :: test,test1
Integer :: i=5
test = (i>0) .AND. (i<=6) ! test=.true.
test1=test .EQV. .TRUE. ! test1=.true.
2) LOGICAL :: test
test = (5*3>12) .EQV. (6*2>8) ! test=.true.
test = (5*3<12) .EQV. (6*2<8) ! test=.true.
LOGICAL :: test,test1
Integer :: i=5
test = (i>0) .AND. (i<=6) ! test=.true.
test1=test .NEQV. .TRUE. ! test1=.false.
Приоритет логических операций ниже арифметических операций.
НА ГЛАВНУЮ | ДАЛЕЕ |