Константы и переменные
Константа и переменная – это объекты программы, служащие для хранения данных и работы с ними. Константа и переменная единовременно могут содержать только одно значение. Во время работы программы значение, хранящееся в переменной, может изменяться, тогда как значение в константе постоянно.
Константа не может быть изменена во время выполнения программы, это контролируется компилятором. Любой константе можно присвоить символьное имя (идентификатор). Таким образом, различаются именованные и неименованные константы.
В программировании существует важное понятие – тип данных. Типы данных различаются способом хранения данных в памяти компьютера. Каждому типу соответствует своя область допустимых значений, способ хранения в памяти ПК, объём памяти, набор операций.
Имеется пять базовых (основных) типов:
- целочисленныеInteger;
- вещественныеReal;
- комплексные Complex;
- логическийLogical;
- символьный Character.
Каждому типу данных соответствуют свои константы и правила их написания.
В операторах объявления типов целое число после символа «*» указывает, сколько байт в памяти занимает значение этого типа.
Операторы объявления типа переменных и констант – неисполняемые операторы, и они должны располагаться в тексте программы до первого исполняемого оператора
Константы в Фортране бывают именованные и неименованные. Именованные константы имеют имя, составленное в соответствии с соглашением об именах. Неименованные константы специального описания не требуют. Это значения, которые используются в операторах программы (числа, строки символов и т.д.)
Типы данных
Целочисленные типы
Целые значения хранятся в памяти компьютера с абсолютной точностью. Они в основном используются в качестве счетчиков, номеров и индексов.
Разновидности целого типа представлены в таблице:
Тип | Количество байтов | Диапазон представления |
Byte или Integer*1 | 1 байт (8 бит) | От –128 до +127 |
Integer*2 | 2 байта | От –32768 до +32767 |
Integer*4 или Integer | 4 байта | От –2147483648 до +2147483647 |
Integer*8 | 8 байт |
По умолчанию Integer соответствует типу Integer*4.
Неименованная целая константа записывается строкой цифр, которой может предшествовать знак «+» или «–». В отличие от вещественной константы эта строка не содержит десятичной точки.
Примеры целых констант: 23 –6 456 +10002
Вещественные типы
В памяти компьютера хранятся не точные значения вещественных чисел, а приближения к ним с ограниченной точностью. Дело в том, что преобразование вещественного десятичного числа в эквивалентную двоичную форму часто дает периодическую последовательность цифр для дробной части. При занесении числа в память вносится ошибка округления.
Разновидности вещественного типа данных:
Тип | Количество байтов | Диапазон представления | Точность, знаков |
Real или Real*4 | ±10±38 | ||
Real*8или Double precision | ±10±308 | ||
Real*16 | ±10± 4932 |
По умолчанию Realсоответствует типу Real*4.
Существует две возможности записи неименованных вещественных констант:
- запись с фиксированной точкой – это последовательность символов, состоящая из знака, целой части, десятичной точки, дробной части; любая из частей, кроме точки, может быть опущена, например:
3.5 –0.67 .34 4.
- в формате с плавающей точкой (в экспоненциальной форме) дополнительно используются символы E, D или Q. Символ E отвечает простой точности (real), символ D – двойной точности (real*8), символ Q – типу real*16. Любой из этих символов обозначает основание 10. После основания следует порядок – степень числа 10, на которую следует умножить число, записанное перед основанием. Например:
4.43Е-2 (= 4.43*10-2 = 0.0443)
5.2D+3 (= 5.2*103 = 5200)
–.1Q+45 (= 0.1*1045)
Необходимо отметить, что в записи числа знак умножения отсутствует, и число перед символом основания опускать нельзя. Например, число
0,01 = 10-2 следует записать 1.0Е–02 или 1Е–2
Сравните с неправильным Е–2. Эта запись транслируется, как арифметическое выражение, где Е – имя переменной.
Экспоненциальная форма записи используется либо для очень маленьких, либо для очень больших чисел, например:
0.0000034= 3.4Е-6 8800000=8.8Е6.
Комплексные типы
Каждое комплексное число состоит из двух вещественных чисел, соответствующих величине действительной и мнимой частей. Размер памяти, указанный в операторе объявления типа, относится к каждому из этих чисел, т.е. комплексное число занимает в два раза больше байтов, чем указано при объявлении.
Разновидности комплексного типа данных:
Тип | Количество байтов |
Complex или Complex *4 | |
Complex *8или Double complex | |
Complex *16 |
По умолчанию Complex соответствует типу Complex *4.
Неименованная комплексная константа записывается парой вещественных чисел в круглых скобках, например:
(-1.76 , 1.) соответствует комплексному числу –1,76 + i ;
(2., –2.) соответствует комплексному числу 2 – 2 i ;
(0., 1.) соответствует мнимой единице i ;
(1., 0.) соответствует вещественной единице 1
(12.5, 1.7E-2) соответствует комплексному числу 12,5 + 0,017 i ;
(12.5D0, 1.7D-2) комплексное число 12,5 + 0,017 i ; (Double complex)
Символьный тип
Переменные и константы символьного типа представляют собой последовательности символов. Они используются в программах для вывода текста. Отметим, что символ пробела является значащим символом в символьной строке.
Переменные символьного типа объявляются оператором Character, например
Character*5 slovo! символьная переменная из 5 символов
Character Symbol! символьная переменная из одного символа
Здесь по умолчанию, то есть длина переменной не указана, имеется в виду один символ.
Неименованная символьная константа представляет собой последовательность символов, заключенную в кавычки. Примеры символьных констант:
‘Площади квадратов равны’ ‘Работу выполнил студент Иван Иванов’
Логический тип
Существуют только два логических значения – «истина» и «ложь». Переменные и константы этого типа используются в логических выражениях, которые также могут принимать значения «истина» и «ложь». Логические выражения применяются в управляющих операторах, когда в зависимости от некоторых условий требуется изменить последовательность выполнения операторов программы.
Переменные логического типа объявляются оператором Logical, например
LogicalPlus, Minus! список логических переменных
Существуют две логические константы. Обратите внимание на точки в их записи. Без точек вместо констант слова true и false воспринимаются компилятором как имена переменных.
.true. – «истина»
.false. – «ложь»
Переменные
Перед созданием программы рекомендуется определить, сколько потребуется переменных, и какие данные будет обрабатывать программа.
Переменные можно объявлять списком, разделяя их запятыми. При объявлении переменным можно задавать начальные значения (инициализировать их) с помощью символа «=». При объявлении инициализированных переменных необходимо использование символов «::».
Примеры объявления типов и инициализации переменных:
IntegerN! целая переменная N
IntegerNumber! целая переменная Number – имя выбрано со смыслом
Integer::Number=1, Count=10! заданы начальные значения
Real a; ! вещественная переменная a (4 байта памяти)
Real a,b,c; ! список вещественных переменных
Double precisionRadius! вещественная переменная 8 байт памяти
Real*8::Radius=1.7D-2! инициализация вещественной переменной
Complex::comp = (2., 5.)! начальное значение comp = 2+5i
Double complex::comp=(2.5, 1.7)! начальное значение comp = 2,5+1,7i
LogicalYes, No! список логических переменных
Logical::Plus=.true., minus=.false. ! заданы начальные значения
Character:: Sym ! Sym – один символ
Character*5:: Word = ‘слово’! инициализация символьной переменной
Внимание! Инициализация переменных не превращает их в константы. Как и значения любых переменных, значения инициализированных переменных можно изменять.
Переменная не определена в данной точке программы, если ранее в нее не было записано значение. Переменная становится определенной либо в результате инициализации, либо при вводе данных, либо в результате вычислений.
Большинство компиляторов присваивает неинициализированным переменным значение 0 соответствующего типа. Однако полагаться на компилятор не рекомендуется, и использовать любую переменную нужно только после того, как она определена.
В ранних версиях Фортрана было принято соглашение о типах объектов по 1-ой букве имени. Имена объектов, начинающиеся с букв I, J, K, L, M, и N, подразумевали по умолчанию (без объявления типа) принадлежность этих объектов к целому типу. Объекты, имена которых начинались с остальных букв латинского алфавита, по умолчанию считались вещественными. Это соглашение действует и поныне. Отменить его в своей программе можно, написав сразу после заголовка программы оператор
Implicit None
Использование этого оператора заставляет программиста объявлять типы всех объектов программы, не пользуясь умолчанием. Это считается хорошим стилем, т.к. позволяет уже на этапе компиляции обнаружить ошибки, связанные с неправильным использованием типов данных.
Дата добавления: 2017-09-19; просмотров: 1592;