1、 CHARACTER*(*),parameter:A=aasdfasd 运算符:/ 函数:CHAR(NUM);ICHAR(CHAR);LEN(STRING);LEN_TRIM(STRING) INDEX(STRING,KEY);TRIM(STRING)5 逻辑型 KIND值为2、4 只有真(.TRUE.)和假(.FALSE.)两个值。4命名规则1 名字的长度不能超过31个字符。2 名字的组成成分可以是字母、数字和下划线。3 名字的第一个字符必须是字母。4 要特别注意,在名字中不能出现空格。5 变量名不能与全局名(程序单位名,数组名)同名,也不要与关键字同名。6 名称不区分大小写。二、基本语句1
2、类型说明语句a 显式说明:b 隐含说明:IMPLICIT INTEGER (A-C) !FORTRAN90不再使用c I-N规则:d 屏蔽I-N规则:IMPLICIT NONE2种别说明program ex0435implicit none! 判断可以记录9个位数的整数kind值integer, parameter : long_int = selected_int_kind( 9 ) 判断可以记录3个位数的整数kind值 short_int = selected_int_kind( 3 ) 判断可以有10个有效位数, 指数可以记录到50的浮点数kind值 long_real = select
3、ed_real_kind( 10, 50 ) 判断可以有3个有效位数, 指数可以记录到3的浮点数kind值 short_real= selected_real_kind( 3, 3 )integer(kind=long_int) : a = 12345678integer(kind=short_int) : b = 12real(kind=long_real) : c = 1.23456789D45real(kind=short_real) : d = 1230write(*, (I3,1X,I10) ) long_int, a ) short_int, b(I3,1X,E10.5) ) lo
4、ng_real, c ) short_real, dstopendprogram ex0436real(kind=4) : areal(kind=8) : ba=1.0_4 ! 确定1.0这个数字是使用单精度b=1.0_8 ! 确定1.0这个数字是使用双精度write(*,*) a,b3属性说明: EXTERNAL:当用户过程作为实元时 INTRINSIC:当内在函数名作为实元时 SAVE:保存外部过程变量的值 INTENT:决定虚元值的传递方向 PARAMETER:符号常量声明EQUIVALENCE:等价声明 !EQUIVALENCE(A,B)表示A,B使用同一内存空间OPTIONAL:可选
5、择属性的变元ALLOCATABLE:动态属性的变元ASSIGN:赋值语句ENTRY:为函数子程序或子例子程序提供多个入口4算术表达式 A算术运算符:* * 、/ +、 注意:同级运算左结合,乘方运算右结合 B内在函数: 数值函数:ABS(x):对任何类型的数值求绝对值。类似的有CABS();IABS();DABS()AIMAG(z):返回复数Z的虚部。AINT(a,kind):返回舍去小数后的参数值。INT()ANINT(a,kind):返回最接近参数a的整数值。NINT()CEILING(a):返回一个等于或大于a的最小整数。CMPLX(x):复数类型转换;当复数赋值时实部或虚部为表达式,则
6、要用该函数FLOOR(a):返回等于或小于a的最大整数。MOD(A,B):计算a/b的余数。当参数为浮点数时,返回(a-int(a/b)*b)SIGN(A,B):B=0 返回abs(a);B5) 或 ALL(ab)!a、b是类型相同的数组,检查a中是否每一个元素都比数组b中任何一个元素大,返回一个逻辑值。ANY():对数组进行逻辑判断,只要有一个元素满足条件就返回真值COUNT():返回数组中合乎条件的元素数目。PRODUCT():返回数组中所有元素的相乘值。SUM():计算数组元素的总和。 数组查询函数:ALLOCATED():检查一个可变大小的数组是否已经声明大小。LBOUND():返回数
7、组声明时的下限值SHAPE():返回数组的维数及大小。如:integer a(2,3,4) integer b(3) b=shape(a) 执行结果:b(1)=2 b(2)=3 b(3)=4SIZE():返回数组大小UBOUND():返回数组上限UNPACK(vector,mask,field):根据逻辑运算的结果,返回一个变形的多维数组。结果会根据在内存中的顺序,如果逻辑为真,回填入vector的值,否则就回填入field的值。Integer:a(4)=(/1,2,3,4/)b(2,2)Logical:c(2,2)=reshape(/.true.,.true.,.false.,.false.
8、/),(/2,2/)B=unpack(a,c,0)执行后B=(/1,2,0,0/) 数组变形函数:RESHAPE(data,shape):通过shape的设置,把一串数据“整形”后,再传给一个数组。例如:integer:a(3,3)=(/1,2,3,4,5,6,7,8,9/)b(9)b=reshape(a,(/9/)a=reshape(b,(/3,3/)但是:a(3,3)a=(/1,2,3,4,5,6,7,8,9/) !编译出错,形状不同,必须用函数ENDTRANSPOSE():返回一个转置矩阵 C算术表达式 书写表达式应注意几点:(教材41面1、2、3、4) 注意表达式结果的类型和种别。5赋
9、值语句 赋值语句的功能:计算、类型转换、赋值6输入输出语句A 表控格式的输入输出:READ *,A,BREAD(*,*)A,B 各数据间有分隔符: 逗号或空格。 类型匹配:整数:不得带小数点; 实数:可以为整数;小数形式;指数形式 复数:(实部,虚部);实部和虚部可以为整型也可为实型 字符:一串字符,赋值时长度转化;一串字符,即可省略。 逻辑:以T或F作为第一个字母的字符串(点号、空格在前忽略) 如果输入一个整型数,则偶数为假,奇数为真 个数: 1)不得少于变量的个数; 2)可分行输入; 3)多余的数据不起作用 4)每一个READ开始一个新的记录 无效值的输入 , , 连续两个逗号,对变量值不
10、影响。 空格可以多个,/ 表示输入数据结束,后面的数据被取消, 没有输入数据的变量值为0; Read*,A,B,C 输入: 2,1/3 结果: A=2 B=1 C=0 r*c: r为重复数 4*0.5,2*3,2*AB,3*(1.0,-1.0) 多个Read语句 每个Read必须从一个新的行输入数据PRINT *,A,BWRITE(*,*)A,B 固定的输出宽度 类型:复型: 带( )输出 逻辑型:T,F 输出一个字符 字符型:丢失,采用左对齐输出3. 一行显示不下,数据自动换行输出4. 多个PRINT语句:每个开始输出一个新的记录B 输入输出编辑符一般形式:READ (,)READ WRIT
11、E (PRINT =d+3+4优点:不必事先估计数的大小,能容纳任意大小的数据。G编辑符功能:根据输出实数大小决定用F或E格式输出。较大或较小,自动按E格式条件:abs(A)10*d 使用E格式输入输出10*dabs(A)=0.1 使用F格式输入输出采用F格式,d为全部数字的总位数,且优先满足整数位数WRITE(*,(G9.4)123.0 !G9.4=F5.1,4XWRITE(*,(G9.2)123.0 !G9.2=E9.2 3 逻辑格式编辑符:rLw功能:逻辑值的输入输出规则:输出一个字母,在字段最右端,前面补空格输入时按宽度读取,以第一个字母作为逻辑值,如果第一个字母非T或F,则出错WRI
12、TE(*,(L4).TRUE. !输出三个空格和一个T 4 字符格式编辑符:rAw A字符型数据的输入:字符变量的长度L对格式起一定的作用 若wL,仅保留右边的L个字符 若wL,右边加L-w个空格 字符变量的输出:输出形式要有w个字符若wL 右对齐,左边补w-L个空格 CHARACTER(LEN=5): A=AB !AB A=ABCDEFG !ABCDE READ *,A AB !ABCDEFG ! READ (A3) AB !ABCDE !ABC READ (A7) ABCDEFGH !CDEFG A=ABCDE PRINT (A3),A !ABC PRINT (A7),A ! ABCDE
13、5 X编辑符功能:在输出时产生空格;输入时,表示跳过n个字符 1不需变量对应 2.是不可重复的编辑符6 撇号编辑符功能:输入所需的字符串,描述字符串常量。 PRINT (I=,I3),I !错,应将其中一对引号改为双引号7 H编辑符 nH1. N 必定等于字符串长度,否则编译出错 PRINT (2HI=,I3),I !正确 PRINT (3HI=,I3),I !出错 2. 字符串中空格有意义 8 斜杠编辑描述符作用:结束本记录的输出并开始下一个记录的输出(换行输出)9 冒号编辑符作用:结束前一个编辑符的功能。1用空格式语句来输出一个空行,如:FORMAT() 此时,WRITE,PRINT语句不
14、应有变量输出,否则出现死循环2遇到右括号或斜杠/编辑符,表示结束本记录的输出,但不意味着停止全部输出,只要输出列表中还有未输出变量,将重复使用格式说明或斜杠右边的格式说明组织输出。PRINT (2HI=,/I3),IPRINT (2HI=,I3),I,J I= 1I= 23FORMAT语句和WRITE语句的位置可以相邻,也可在程序的任何一个地方4用表控格式输出时,在WRITE语句中的输出项可以包含字符串但在输出时用到FORMAT语句,则不能再包含字符串,否则必须加以说明。PRINT (2HI=,I3),IPRINT (I3),I=,I !出错 应改为PRINT (A,I3),I=,I 三、选择
15、结构程序设计1关系表达式和逻辑表达式1 关系运算符:相等 = = 不等 /= 复型常量和变量:只能进行 .EQ.、.NE. .EQ.(= =)或.NE.(/=)要小心使用;实型量一般要改写:0.1*10.EQ.1为.FALSE. 应改为 abs(0.1*10-1)=1E-6 两个整型表达式进行逻辑运算结果为整型,而不是逻辑型 逻辑运算符之间的空格不能省略。特别是.NOT.与其他逻辑运算符相连时。2 逻辑表达式和计算: 逻辑运算符:NOT AND OR EQV(逻辑等)NEQV(逻辑不等) XOR(异或) 运算优先级:从左到右依次降低3 运算顺序: ( ) 函数 算术 关系 逻辑 高 低4 练习
16、表达式的写法 1、 数学式 ACD !不能出现连不等式 2、 1x2+y26、逻辑型变量A值为真(或为假) !7、字符变量A为小写字母 !A=a .AND. A=z .OR. A=A .AND. A=0 .AND.X=1 .AND.X=0)THEN=1)THEN IF(X PRINT *,越界 举例:任意输入4个整数,把它们按从小到大输出。PROGRAM MAININTEGER:A,B,C,D,EREAD *,A,B,C,DIF (AB) THENE=A;A=B;B=EENDIFIF(CA) THENA=C;C=B;ELSEIF(CE=B;B=C;C=EIF(DA)THENPRINT *,D,
17、A,B,CELSEIF(DB)THENPRINT *,A,D,B,CC)THENPRINT *,A,B,D,CELSEPRINT *,A,B,C,D 6多重同级选择判断(CASE结构)写法:SELECT CASE(表达式) CASE(表达式列表1) block1(块1) CASE(表达式列表2) block(块2) - CASE(表达式 n) block n CASE default 默认块END Select 1. 表达式:整型变量、逻辑变量、长度为1的字符型变量或相应的表达式 2. 表达式列表: (1) 用 ,(逗号)分隔符单个值的列表。 例: case(3,5,7)值不能重复 (2) 用冒号分隔的值的范围 case(5:10,20); case(i:n)类型与Setect case中的一致,值范围下界、上界可省略。(3) Case default:只有一个,它不是必须的7练习:4-3、4-8、4-134-3REAL:X,YREAD *,X=15)THEN=30)THEN =45)THEN=75)THEN90)THEN Y=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1