hh-fortran-03选择结构
第六讲 Fortran数据结构及输入、输出

将参数转换为复数型。 将参数转换为复数型。
将参数转换为复数型。结
REAL(x) REAL(x) IMAG(x) IMAG(x) CONJG(x) CONJG(x)
求x的实部。 的实部。 同AIMAG(x)。 AIMAG(x)。 (x) 求x的共轭复数。 的共轭复数。
AIMAG(x) 的虚部。 AIMAG(x) 求x的虚部。
字符按先后排列成某种次序, 字符按先后排列成某种次序,每个字符在排序中有确定的位 character(len= 6) first 称为排序号 有了排序号, 排序号。 置,称为排序号。有了排序号,字符之间就可以比较大小及 character(len=10) second 相等与否,组成关系表达式。 相等与否,组成关系表达式。
6.1 字符型数据/ A(11:) 11: A(字符型数据/子字符串 -> 11
Fortran数据结构及输入 数据结构及输入、 第六讲 Fortran数据结构及输入、输出
字符型数据
字符运算符: 字符运算符:// 子字符串 运算符 内部函数 例子
program ex060202 ,系统都把本机上可以使用的各种 关系表达式:对每种机器, 关系表达式:对每种机器
end
Fortran数据结构及输入 数据结构及输入、 第六讲 Fortran数据结构及输入、输出
字符型数据
函数名 子字符串 运算符 内部函数 说明
LGE(s1,s 按 ASCII码值判定字符串 。 LGE(s1,s2 * ASCII码 码值判定字符串s ASCII 码值判定字符串 转换为对应字符。 ACHAR(n)2)将ASCII码n转换为对应字符s1 大于等于 字符串s 字符串s2。 ADJUSTL(string)* 将字符串string 左对齐, string左对齐 ADJUSTL(string)* 将字符串 string 左对齐 , 即去 掉左端空格* 按 ASCII 码值判定字符串 s1 大于字符 LGT(s1,s2 ASCII码值判定字符串 码值判定字符串s LGT(s1,s2) 串s2。 ADJUSTR(string)* 将字符串string 右对齐, string右对齐 ADJUSTR(string)* 将字符串 string 右对齐 , 即去 掉右端空格。string:CH(*),结果类型同string 结果类型同string 掉右端空格。string:CH(*),结果类型同1 小于等于 LLE(s1,s2 ASCII码值判定字符串 码值判定字符串s LLE(s1,s2)* 按 ASCII 码值判定字符串 s 字符串s ASCII码 转换为对应字符。 字符串 CHAR(n)* s2。 CHAR(n)* 将ASCII码n转换为对应字符。 IACHAR(c)* 将字符c转换为对应的ASCII码。 ASCII码 IACHAR(c)** 将字符c转换为对应的ASCII小于字符 LLT(s1,s2 ASCII码值判定字符串 码值判定字符串s LLT(s1,s2) 按 ASCII 码值判定字符串 s1 串s2。 ICHAR(c)* 将字符c转换为对应的ASCII ASCII码 ICHAR(c)* 将字符c转换为对应的ASCII码。
Fortran语言基本语法

Fortran语⾔基本语法a、Fortran 之基本规定:在Fortran的规定中,程序的开始需先宣告变量形式,接着才能⽤这些变量来写程序内容,再整个程序中的第⼀⾏必须空⽩,除⾮键⼊英⽂字母c或*⽤以表⽰那⼀列为说明项⽽⾮实际之计算式⼦。
第⼆⾏⾄第五⾏为地址⾏,可⽤数字标⽰其地址,⽤以执⾏程序时控制之⽤。
第六⾏⽤以填⼊⼀个⾮零的数字或字母表⽰连结上⼀列的式⼦。
第7⾏⾄72⾏则为程序主体之所在,若不⼩⼼在72⾏之后键⼊程序Fortran将不于理会。
再程序的最后⼀列⽤ end命令告知程序终了。
b、变量(Variable)Fortran语法中的变量相当于函数上变量,但其种类则更多,举凡复数(complex)、整数(integer)、实数(real)、逻辑(logical)和字符串(character)等等。
对于变量的规定是变量的第⼀个字母为英⽂字母,其长度最长为6个字,除刚刚说的第⼀个字之外,其余的可为数字或字母,以下为⼏个简单范例: Integer count,pg1real time,po2pc、运算符号与内定函数:Fortran 基本的运算符号如下:+加法;-减法;*乘法;/ 除法**平⽅;**(n) n次⽅除了上列之基本运算符号之外,数值计算上常⽤之函数如三⾓等等亦以写成内定含式,常⽤的以下⼏项:log 对数函数;exp 指数函数;sin、cos、tan、cot、sec和csc等三⾓函数;abs 绝对值;asin、acos、atan、acot、asec和acsc等反三⾓函数。
D、控制结构:结构化Fortran有⼀些控制的结构,关系控制即是其中之⼀种,⽤以⽐较两变量之间关系,包含有:.lt. 表⽰⼩于.gt. 表⽰⼤于.eq. 表⽰等于.le. 表⽰⼩于或等于.ge. 表⽰⼤于或等于.ne. 表⽰不等于另⼀种重要的控制为逻辑控制,包含有:.not. .not. p => 若p为⾮真则为真.and. p .and. q => p和q为真则为真.or. p .or. q => p或q其⼀为真则为真.eqv. p .eqv. q => p和q同为真或同为⾮真则为真.neqv. p .neqv. q => p或q之中⼀为真⼀为⾮真则为真e、输⼊与输出结构:> Fortran 经常会有⼀些数值需要输⼊或计算的值需要输出,这时 Fortran 便提供了⼀些格式码好让使⽤者将欲输⼊或输出的数值针对其变量的特性作较佳的安排设计,兹举例如下,其中输出之资料格式完全相同:a、write(*,10) i,j,k10 format (1x,2I5,I3)b、assign 10 to ifmt10 format (1x,2I5,I3)write (*,ifmt) i,j,kc、write (*,'(1x,2I5,I3)') i,j,kd、character*11 fmtchfmtch='(1x,2I5,I3)'write (*,fmtch) i,j,k其中X表⽰空格之意,1x即是空⼀格, write为输出的指令,若改为 read 则为输⼊指令,I为整数的格式码, 2I5 表⽰输出的总位数为五,⽽这样的格式重复两次,其余尚有不同之各种格式码,常⽤的有:1. F 格式码,⽤于实数变量,其⼀般型态为 rFw.d ,其中F表实数,r为重复次数,w为总位数,⽽d为⼩数字数。
fortran教程[技巧]
![fortran教程[技巧]](https://img.taocdn.com/s3/m/31be265dce84b9d528ea81c758f5f61fb73628ec.png)
前言FORTRAN90的新特性1、淘汰了所有转移语句,增加了新的控制结构,使程序结构化。
增加了结构块,模块及过程的调用灵活形式。
2、加强数组的算法功能。
提出超载概念与实现方法。
提高了文字处理功能。
3、更接近自然语言与公式演算。
允许在字符数据用选取不同种别。
特别:语句书写对列的要求放宽:一般一行写一条语句(也可也多个语句,用“;”分隔),没有标号区、续行区、正文区的区别。
一行最多为132列,可以在任何列处中断语句,中断处写一个“&”,随后在下一行任意列处继续。
一个语句最长不能超过2640个字符。
语句结尾不可有标号、符号。
注释以“!”开始,可以位于任何位置。
***以下只讨论与FORTRAN77不相同处。
第一章FORTRAN90的基本语句第一节类型说明语句1、变量名全长不得超过31个字符。
2、变量类型定义:INTEGER::X,YREAL::ACOMPLEX::B,C,D3、建议淘汰隐式说明,在程序说明部分一开始就写:IMPLICIT NONE向系统声明不使用隐式说明。
4、可以在变量说明时就置初值。
如:REAL::X=1.1,Y,Z=2.25、种别——决定变量的精度和所占内存单元数。
a.如:REAL(KIND=2)::X 说明变量X为REAL型,种别为2。
KIND是种别说明关键字。
如没有种别说明,则采用系统省缺值。
b.有关函数:KIND(X) 返回X的种别参数。
当X取常数0时,返回省缺种别参数。
如KI ND(0)、KIND(0.0)、KIND(.FALSE.)、KIND('A')分别返回整型、实型、逻辑型、字符型的省缺种别参数。
SELECTED_REAL_KIND(N,M) 返回种别参数,使之满足十进制有效位为N, 值范围在10**(-M)和10**M之间的实数。
SELECTED_INT_KIND(N,M) 与上类似,选择整型类别。
c.常数类别表示对数值型常数、逻辑型常数用后缀法,即在常数后加一下划线,再跟种别参数。
fortran循环结构及基本语句

fortran循环结构及基本语句Fortran中的循环结构包括DO循环和DO WHILE循环。
基本语句包括赋值语句、条件语句和IO语句。
1.DO循环结构:DO循环结构用于重复执行一段代码块,语法如下:DO variable = start, end, step!代码块ENDDO在循环开始前,将变量初始化为start的值,然后执行代码块。
然后将变量增加step的值,并检查是否达到end的值,如果没有达到则继续执行代码块,直到达到end的值为止。
2.DOWHILE循环结构:DOWHILE循环结构用于在满足条件时重复执行一段代码块,语法如下:DO WHILE (condition)!代码块ENDDO在每次循环开始前,检查condition是否为真,如果为真则执行代码块,然后再次检查condition。
只有当condition为假时,循环才会结束。
3.赋值语句:赋值语句用于将一个值赋给一个变量,语法如下:variable = expression可以使用算术运算符和函数来计算expression的值,并将结果赋给变量。
4.条件语句:条件语句用于根据条件选择执行不同的代码块,常用的条件语句有IF语句和SELECTCASE语句。
-IF语句的语法如下:IF (condition) THEN!代码块1ELSE IF (condition) THEN!代码块2ELSE!代码块3ENDIF根据condition的值选择执行代码块1、代码块2或代码块3-SELECTCASE语句的语法如下:SELECT CASE (expression)CASE (value1)!代码块1CASE (value2)!代码块2CASEDEFAULT!代码块3ENDSELECT根据expression的值选择执行相应的代码块,如果没有匹配的值,则执行默认的代码块。
5.IO语句:IO语句用于输入和输出数据,常用的IO语句有WRITE和READ语句。
03章-选择结构程序设计

例3.9 输入一个三位自然数,判断它是否为水仙花数,所谓水仙花 数,是指各位数字的立方和等于该数本身的数如153=13+53+33为水 仙花数。 程序如下: INTEGER N,N1,N2,N3,S READ*,N N1=MOD(N,10) N2=MOD(N/10,10) N3=N/100) S=N1*N1*N1+N2*N2*N2+N3*N3*N3 IF(S==N)THEN PRINT*,N,"是水仙花数" ELSE PRINT*,"不是水仙花数" END IF END
ENDIF
END
3. 多分支结构
IF(逻辑表达式1)THEN 语句块1 ELSE IF(逻辑表达式2)THEN 语句块2 …… ELSE IF(逻辑表达式N)THEN 语句块N ELSE
语句块N+1 END IF
例3.2、编程求任意一元二次方程AX2+BX+C=0的根,其 中A、B、C为任意实数。
P.42 习题1 (3)
INTEGER X,Y,A,B X=1 Y=0 A=3 B=4 SELECT CASE(X) CASE(1) SELECT CASE(Y) CASE(0) A=A+1 CASE(1) B=B+ 1 END SELECT
CASE(2) A=A+1 B=B-1 CASE DEFAULT A=A+B B=A+B END SELECT RINT*,"A=",A,"B=",B END
3.1.2 逻辑运算
逻辑运算用于逻辑值的运算。例如,两个关系表达式之间是
否同时满足、是否满足其中之一、是否完全一致等,这些运
FORTRAN语言第3章(共8章)

会再去执行。这一点同后面的SELECT CASE完
全不同。也就是说IF结构中的选择条件是允许重 叠的,但SELECT CASE语句不允许选择条件有 重叠。
第二节 块IF选择结构
1.ELSEIF语句其作用相当于将ELSE语句与其 后的ELSE块中的块IF语句连接在一起。 2.同块IF语句不同, ELSEIF语句与ENDIF语 句间不存在一一对应关系。 3.在这种IF结构中,允许使用多个ELSEIF语 句。在最后一个ELSEIF语句之后,可以有与 之对应的ELSE语句,也可以没有。当有 ELSE语句在最后时,表示如果前面所有的条 件都不成立,执行其后的ELSE块;如果没有 ELSE块,则表示如果前面所有的条件都不成 立时,流程转到ENDIF语句。
条 件 1 假 条 件 2 真 条 件 ...... 1 块 2 块 ...... 块 n 块 n +1 真 假 条 件 n 真 假 假
EN D IF 的 后 继 语 句
第二节 块IF选择结构
多重判断的IF结构中,判断条件的成立具有
唯一性。即一旦有判断条件成立,就去执行相应
的模块,如果其后仍有判断条件是成立的,也不
一个嵌套分支结构可使用若干个块 IF语句,相应就有若干个ENDIF语句,
每个块IF语句还可能使用一些ELSE
IF语句、ELSE语句,这就可能构成一 个复杂的IF-ELSEIF-THEN-ELSE结构。
当嵌套层次过多时,往往一时难以找
到同一层的块IF中的各语句,一般可 按以下方法确定: (1)从最内层的块IF语句开始,向下找到离它最近的ENDIF 语句,将它们用线括起来,这就是同一层次的块IF。 (2)由内向外重复这一个过程,直到遇见最外层块IF语句和 ENDIF语句为止。 (3)在书写嵌套分支结构时采取缩进方式进行程序书写,程 序的嵌套层次就容易确定。
Fortran77教程-4逻辑运算和选择结构
2
例:计算职工工资。正常工资rate (yuan/h),一周超过 40 hours时,超过部分按1.5 rate (yuan/h) 。
3
c
Payroll with overtime program payroll read(*,*) rate, hours if(hours.gt.40.0) then regpay=rate*40.0 ovtpay=1.5*rate*(hours-40.0) else regpay=rate*hours ovtpay=0.0 end if pay=regpay+ovtpay write(*,*) 'rate=', rate, ' hours=', hours write(*,*) 'regular pay=', regpay, ' overtime pay=', ovtpay write(*,*) 'total pay=', pay end
成绩分级 A : ≥80 B : ≥70且<80 C : ≥60且<70 D : <60
15
给a, b, c三个数排序,要求从小到大输出
16
read(*,*) a,b,c if(a.le.b) then else t=a a=b b=t end if if(b.le.c) then else t=b b=c c=t if(a.le.b) then else t=a a=b b=t end if end if write(*,*) a,b,c end
第一章 算法 第二章 计算机和计算机程序 第三章 Fortran语言程序设计初步 第四章 逻辑运算和选择结构 第五章 循环结构的实现 第六章 Fortran的数据结构 第七章 数据的输入、输出 第八章 常用算法的程序设计举例
3Fortran程序设计3-选择结构
SELECT CASE(X>=3) CASE(.TRUE.) PRINT *,‘YES’ CASE(.FALSE.) PRINT *,‘NO’ END SELECT
♦ 其它流程控制
GOTO IF 与 GOTO 联用 PAUSE CONTINUE STOP
SELECT CASE(MAJOR) CASE (‘Astronomical Physics’)
语句块1 CASE (‘Applied Physics’)
语句块2 CASE (‘Theoretical Physics’)
语句块3 END SELECT DEPARTMENT_22_MAJOR
逻辑型 SELECT CASE 举例
♦ 选择结构
块 IF
块IF的一般形式可写成:
IF(逻辑表达式) THEN
块1
ELSE
块2
END IF
其中,ELSE 和else块可以省略
← 块IF语句 ← then块
← else块
♦ 选择结构
IF - ELSE IF (多重判断)
IF(逻辑表达式1) THEN …
ELSE IF(逻辑表达式2) THEN …
2 (X.LT.0.).OR.(X.GT.100.)
3 .NOT.(X.LE.O.)
当X<0或X>100时,表达式值为真 当X≤0时,表达式值为假
4 (A.GT.B).EQV.(C.GT.D)
当两个括弧内的值都为真或都为假时,表达式的值为真
5 L1.NEQV.L2
当L1与L2的逻辑值不相同时,表达式的值为真
一个计算问题的解决过程通常包含下面几步:
Fortran教程第三章 选择结构程序设计
所作的处理在其后的块语句中完成。
(3)case default与其后的默认块,是缺省情况,可有可无。
如果加入它,则代表前面所有选择表达式的值皆非的情况下 执行该块。 (4)end select为case结构结束的标志。
例3.3、设计程序,完成小学加、减、乘、除四则运算, 即输入两个数,再输入一个运算符号,做对应的运算,
program exam
implicit none integer n
read *, n
if ( mod(n,3)==0.and.mod(n,5)==0 ) then print *,’该数能同时被3和5整除。’
else
print *,’该数不能同时被3和5整除。’ endif end
块IF结构的组成
program exam3 real g read *,g if (g>=90) then print *,“优秀”
else if( g>=80) then
print *,"良好" else if( g>=60) then
print *, "通过"
else print *,"不及格" endif end
FORTRAN所用的基本逻辑运算有:
.AND.
.EQV.
.OR.
.NEQV.
.NOT.
.XOR.
(1)逻辑与,运算符.AND. 当连接的两个逻辑操作数为真时, 逻辑表达式取值为真,只要一个为假则取假。例如数学表达式 1<X<2,在FORTRAN中应写成逻辑表达式:X>1.AND.X<2。
(2)逻辑或,运算符为.OR. 连接的两个逻辑操作数只要有一个 为真时,逻辑表达式取值为真,全部为假时才为假。例如|X|>5,
FORTRAN知识点总结
F O R T R A N第2章FORTRAN90基础知识:程序单元的概念:fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。
每个程序只有一个主程序单元。
各单元体的程序体形式上相同。
程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。
语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。
字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。
数据结构:整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回;实型REAL ,小数形式和指数形式;复型COMPLEX (种别类型参数值取实部与虚部中较大者);字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成;逻辑型LOGICAL。
派生数据类型TYPE;数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A);字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。
变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。
第3章基本语句:类型说明语句:类型说明(种别说明),属性说明::变量名表尽量避免把两个实数作相等或不相等的比较。
淘汰隐式说明IMPLICIT NONE种别说明:种别参数即对可移植数据精度和范围进行选择的机制KIND(X) 返回变元X的种别参数值SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end select print*,year,"年",month,"月所对应的天数为:",day end
算术IF语句(简单了解)
格式:if (算术表达式) 标号1,标号2,标号3 执行过程 ➢ 计算算术表达式的值 ➢ 值小于0,执行标号1对应的语句 ➢ 等于0,执行标号2对应的语句 ➢ 大于0,执行标号3对应的语句
例 3.9 将学生 成 绩 分为 优 (90~100 分 )、 良 (80~89)、 中 (70~79)、及格(60~69)、不及格五个档次,输入成绩, 输出对应的档次。
思考: 用什么语句实现?
integer g read*,g
case(80:89) print*,"良"
case(90:100)
select case(g)
➢ 两边的小数点不能漏 ➢ 实数存在误差,在用.EQ. 与.NE. 时要特别注意 ➢ 一个算术型量的两侧不允许都是关系运算符
逻辑表达式
格式: <逻辑型量> <逻辑运算符> <逻辑型量>
逻辑运算符
.AND. 与 .OR.或
.NOT.非
.EQV.等价 .NEQV.不等价
.XOR.异或
结果是逻辑型值
.TRUE.或.FALSE.
case(1,3,5,7,8,10,12) day=31
case(4,6,9,11) day=30
case(2) if ((mod(year,4).eq.0.and.mod(year,100).ne.0) $.or.mod(year,400).eq.0) then day=29 else day=28 endif
real a,b character op !定义一个字符变量 read*,a,b,op select case(op)
case('+') print*,'两个数之和为:',a+b
case('-') if(a<b)then print*,'被减数不能小于减数' else print*,'两个数之差为:',a-b endif
解决办法:块select
case选择结构
一般格式
select case(表达式) case(表达式1) 块1 case(表达式2) 块2 …… case(表达式n) 块n
case default 默认块
end select 执行过程
说明
(1)select case后括号里的“表达式”,用来表示待 选择的内容,如成绩、工资、年龄等,一般为变量 名,可是整型、逻辑型、单个字符型变量或者相应 的表达式
➢ 块if结构中,可有多个else if,但只能有一个else语句,且与 最后一个else if语句相配对
➢ 块if结构中,也可只有else if,而没有else ➢ 特别强调,条件必须写对,否则会出现逻辑错误
块SELECT CASE选择结构
问题: 用else if语句实现多路分支,书写是否方便?是否容易阅读?
print*,"优"
case(0:59)
case default
print*,"不及格"
case(60:69) print*,"及格"
print*,"成绩输入 错误,请重新输入!"
end select
end
case(70:79)
print*,"中"
作业
P44 5、7、9 要求: 1、作业本上画流程图 2、程序输入计算机,下次上机使用 3、上机要求与上次一致
含义
运算顺序
.NOT.→.AND.→.OR.→.EQV. .NEQV. .XOR.
逻辑表达式中,各种运算符的优先顺序:
注意 ➢不同运算符的运算对象和运算结果 ➢一个逻辑型量的两侧都可以与逻辑运算符相邻,但不能与 算术运算符、关系运算符相邻 ➢不能在算术量的两侧都出现关系运算符 ➢一定要注意运算顺序
个语句,语句太长时可以使用继续行 ➢ else语句必须单独占一行 ➢ end if语句必须单独占一行,表示块if结构结束 ➢ if语句与end if语句是必须的,而then、else语句可根据实
际情况省略
逻辑if与块if区别
➢ 块if语句至少应有一个end if语句与它相对应;而逻辑if语句 不用
块IF结构
逻辑if语句的局限性
➢只允许有一个语句,多个语句无法实现 ➢实现多个分支时,如用多个逻辑if语句实现,则每一个逻 辑if语句中的逻辑表达式比较复杂
块if结构的一般形式
If (逻辑表达式) then
S1
else
S2
endif
注意问题
➢ 逻辑表达式必须用一对圆括号括起来 ➢ S1、S2可由若干个可执行语句组成,但一行上只能写一
➢ 块if结构中有then;而逻辑if语句中无 ➢ 块if语句中的then后面有多句;逻辑if语句有一句 ➢ 逻辑if可用块if实现;反之,不一定。
例题3.2
y
x3 2x2
3x
2
6x
4x 10, x
7,
x 0
0
具体见演示
选择结构的嵌套
一般形式
注意 ➢每层必以if开始,以end if结束。采用缩进规 则 ➢每层不允许出现交叉 ➢可从内层转到外层。反之不行;then块与else 块也不能互转
预习
如何构造循环结构? 有哪些基本的循环语句?适用场合?
嵌语句不能是非执行语句,也不能有多于一个可执行语句; ➢ 在使用逻辑if语句时,一定要注意逻辑表达式的正确写法,
特别是在使用多个逻辑if语句时更要注意。
例3.1 输入三个数,求出最大和最小的值。 real x,y,z,max,min read * ,x,y,z max=x min=x if (max<y) max=y if (max<z) max=z print *, "三个数中最大数是", max if (min>y) min=y if (min>z) min=z print *, “三个数中最小数是", min end
例3.6 输入x,求函数的值。已知函数如下:
此问题可以用算术if语句实现。程序如下:
real x
read*,x
if(x)10,20,30
10 y=x*x+1 goto 100
从上可看出,和goto结合使
20 y=sin(x+1)
用,使程序结构不太清晰,
goto 100
不宜多用。
30 y=sqrt(x+2)
➢例3.5 编写程序,输入年月,输出该月 所对应的天数
分析 ➢ 4、6、9、11为30天,其他为31天 ➢ 2月:一般28天,闰年29天 ➢ 闰年:年能被4整除,但不能被100整除;或
年能被400整除都为闰年
integer year,month,day read*,year,month select case(m于前面select case括号里表达式的具体取值,取值 不同,动作不同
(3)case default是缺省情况,可有可无 (4)end select为case结构结束标志
✓ 例3.4、设计程序,完成小学加、减、乘、 除四则运算,即输入两个数,再输入一个 运算符号,做对应的运算,并显示相应的 结果。
goto 100
100 continue
print*,"y=",y
end
程序举例
例题3.7
由键盘输入三个整数A、B、C,然后按从小到大的顺 序输出。 流程图:
例3.8 输入一个三位自然数,判断它是否为水仙花数。 即:各位数字的立方和等于该数本身的数。如 153=13+53+33
integer n,g,s,b,s
逻辑IF语句
一般形式:if (逻辑表达式) 内嵌语句 执行过程: ➢ 1.先算圆括号内判断条件 ➢ 2.成立,执行内嵌语句,然后执行后面的语句 ➢ 3.不成立,直接执行后面的语句 适用范围:只关心一种条件时,仅执行一个处理的简单情况 注意问题:
➢ 逻辑if语句中的逻辑表达式一定要用一对圆括号括起来; ➢ 逻辑if语句中的内嵌语句只能是单个的可执行语句,即内
(1)用逗号隔开的单个值,如:case(1,3,5, 7)
(2)用冒号分隔的值的范围。一般形式为case (a :b),其中,a为下界,b为上界,下界 或上界也可缺省,如:case(2:8)、case(: 10)、case(’i’:’n’)、case(15:)
(3)1和2的混合,如:case(2:4,6,8:)
2020/5/19
3
关系表达式
格式:<算术量> <关系运算符> <算术量> 关系运算符
.GT.(> 大于); .LT.(< 小于); .EQ.(== 等于); .NE.(/= 不等于); .GE.(>= 大于或等于); .LE.(<= 小于或等于)
结果是逻辑型常数 .TRUE.或.FALSE.
注意
第三章 选择结构程序设计
2020/5/19
1
课前思考
对于条件语句,fortran中提供了几种形式? 每种形式各适用于什么场合? 每种形式的注意事项是什么? 编写程序时应考虑哪些问题?
第三章 选择结构程序设计
逻辑if语句 块if结构 选择结构的嵌套 用else if语句实现多路分支 块分支选择结构 程序举例
read*,n g=mod(n,10) s=mod(n/10,10) b=mod(n/100,10)