Fortran 中的五种基本数据类型和派生类型介绍

!
! 编程环境Simply Fortran
!
! Fortran 中的五种基本数据类型和派生类型介绍
! 五种基本数据类型分别为:
!   整型
!   实型
!   逻辑类型
!   字符类型
!   复数类型
program helloworld
implicit none


! 1 整型
integer :: age ! 默认为4字节长度
integer(kind = 1) :: sex  ! kind = 1 指定使用的字节数
integer(kind = 8) :: longval 
            ! 可通过kind(val)方法查看变量使用的字节数
            ! huge(val) 查看变量所能容纳的最大数目
! 2 实型  
! 用法与integer相似
! 默认实型和双精度型
! 除法运算同c一样,结果取精度高的类型
real :: real_1, real_2
integer :: int_1, int_2
! 3 逻辑类型  
logical(1) :: logi_T, logi_F
! 4 字符类型
! 存储字符和字符串,默认长度为1
! ch_val(start:end) 可以容易的得到子串,
! startend分别为起始和结束位置
! 字符串操作:字符串拼接符 //,用于连接两个字符串;
!             trim(str) 返回去掉尾随空格的字符串;
!             index(str,sub) 在一个字符串找出子串的位置,没有返回0
character(len = 40) :: subStr0
character(len = 20) :: subStr1
character(len = 20) :: subStr2
character(len = 20) :: subStr3

! 5 复数类型
complex :: cx_1

! 6 派生数据类型
! 为了方便的存储一个记录,可以通过以上基本数据类型构造实用的派生类
! 派生类型格式:
! type type_name   !派生类型开始   
!   ! 在此声明变量
! end type          ! 派生类结束标记
type Person
    character(len=20)   :: name
    integer(kind = 4)   :: age
    logical(kind=1)     :: gender
    real(kind=4)        :: height
end type Person

! 派生类型person的使用
type(Person) :: Zhangsan, lisi



! --------------------------integer------------
age = 100
sex = 1
print *, age, sex, kind(age), kind(longVal), huge(longVal)

! --------------------------real------------
int_1 = 2; int_2 = 3
real_1 = 2.0; real_2 = 3.0
print *, real_1/real_2, int_2/real_1, int_1/int_2, int_2/int_1

! --------------------------logical------------
! 注意:逻辑类型只有两个值,truefalse两侧都有一个“.”号
logi_T = .true.
logi_F = .false.
print *, logi_T, logi_F

! --------------------------character-----------
subStr1 = 'hello Fortran'
subStr2 = 'hi FORTRAN'
subStr3 = 'Fortran'
subStr0 = subStr1//subStr2
print *, subStr1, subStr1(1:5),  '   ',  subStr0
print *, trim(subStr1)//trim(subStr2)
print *, index(trim(subStr1), trim(subStr3)), &
         index(trim(subStr2), trim(subStr3))

! --------------------------complex------------
cx_1 = (3.0, 5.0)
print *, cx_1

! --------------------------derive type------------
Zhangsan = Person('zhangsan', 23, .true., 178.3)
lisi%name = 'lisi'
lisi%age = 25
lisi%gender = .false.
lisi%height = 160.3

print *, 'zhangsan:', Zhangsan%name, Zhangsan%age, &
        'lisi:', lisi


end program helloworld

你可能感兴趣的:(Fortran)