Томский государственный университет систем управления и радиоэлектроники
Опубликован: 01.11.2012 | Доступ: свободный | Студентов: 633 / 68 | Длительность: 06:01:00
Лекция 2:

Типы данных

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Аннотация: Вторая лекция знакомит со стандартными типами данных: integer, real, complex, logical, character. Рассказывается о правильной записи математических и логических выражений, погрешности вычислений. Приводится описание встроенных математических процедур, процедур преобразования типов и процедур обработки строк. Для каждого стандартного типа приводятся элементы форматируемого ввода/вывода. Вводится понятие ссылок, адресатов и целочисленных указателей. Рассматривается оператор associate.

Вы можете скачать презентацию к данной лекции здесь.

Стандартные

integer целый
real вещественный
complex комплексный
logical логический
character символьный

Производные

type (имя типа)

Переменные и константы


Значения переменных могут изменяться, константы содержат всегда одно и то же значение.

Задание имен

  1. Латинские буквы A..Z, a..z (маленькие и большие не различаются);
  2. Цифры и знак подчеркивания со 2-й позиции;
  3. Длина имени не более 63 символа.

Используйте осмысленные имена!

Целочисленный тип

тип длина(байт) диапазон
integer(1) 1 -128 .. 127
integer(2) 2 -32768 .. 32767
integer(4) 3 - 2^{31} \ldot  2^{31}-1
integer(8) 8 - 2^{63} \ldot  2^{63}-1

Номера, счетчики, переменные циклов, границы и индексы массивов.

      ! -----------------------------переменные
      integer(1) a5
      integer(4) nomer
      integer index
      integer*2 b2
      ! -----------------------------константы
      integer, parameter :: T0 = 500
      integer(2), parameter :: fact = 10100
      integer(8), parameter :: QW = 3**20
      
      index = 1000     ! переменным присвоили значения
      a5 = B'1000101   ! двоичное представление
      b2 = O'347'      ! восьмеричное
      c7 = Z'AAB'      ! шестнадцатеричное
    

Инициализация переменных

program unknown
  integer koef
  write(*,*) koef
end

Инициализация переменной – объявление + присваивание значения. (Какой результат будет выведен на экран?)

integer :: a = 10 ! инициализация переменной
integer :: s = 2**8+3**7+4**6 ! арифметические операции

Всегда ли есть соответствие?

integer :: a = 10

integer a
а = 10

Вещественный тип

тип длина(байт) точность (знаков) диапазон
real(4) 4 7 1.2*10^{-38} .. 3.4*10^{+38}
real(8) или double precision 8 15 2.3*10^{-308} .. 1.7*10^{+308}
real(16) 16 33 3.4*10^(-4932) .. 1.1*10^{+4932}

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

      ! ---------------------- переменные
      real(4) :: p = 3.14159 ! 3.14159_4
      real(4) :: s = 0.00001 ! .00001  или  1E-5
       
      real(4)  :: A = 6.79E+15
      real(4)  :: B = -9.0E-10
      
      real(8)  :: q = 123456789D+5
      double precision :: f = +2.7843D0
      
      real(16) :: p1 = 123456789Q4000
      real(16) :: p2 = -1.23Q-400
      
      ! ---------------------- константа
      real, parameter :: pressure = 1e+10
    

Комплексный тип

тип длина(байт) диапазон
complex(4) 8 7
complex(8) 16 15
complex(16) 32 33
    ! ---------------------- переменные
    complex(4) c1
    complex :: i1 = (0.0, 1.0) ! мнимая единица
    
    ! ---------------------- константа 
    complex, parameter :: z = (2.0, 3.0) ! 2+3i
    

Переменные для обработки комплексных данных (корни уравнений, преобразования Фурье).

Арифметические операции


Целочисленная арифметика

Деление целого числа на целое - результат целое.

    S = 1/3 + 1/3 + 1/3 ! S = 0.0
    P = 16 * * (1/4)     ! P = 1.0
    

Запись целого числа в вещественной форме.

    S = 1.0/3.0 + 1./3. + 1./3       ! S = 1.0
    P = 16 * * (1.0/4)                   ! P = 2.0
    

Деление целого числа на нуль – ошибка выполнения.

    m = 2/3
    k = n/m     ! деление на нуль
    

Переполнение значения.

    integer(1) :: bt = 127
    bt = bt+1  ! bt = -128
    
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >