FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础
Fortran-第一讲--第一章
1.3.1 声明部分
声明由不可执行语句组成 位于程序开头 定义程序名和程序引用的数据以及变量类型
PROGRAM语句用来指定程序的名字 程序名最长可达31个字符 由字母、数字和下划线任意组合而成 第一个字符必须是字母 如果存在PROGRAM语句,它必须是程序的第一个语句行 例:下列程序名是否有效,如无效则说明原因 new_program 3rd
无效的实数表示: -12.0E1.5
例
下列各组数在计算机里表示的值是否一样 4650. 4.65E+3 -12.71 -1.27E1 0.0001 1.0E4 3.14159E0 314.159E-3
1.5.3 字符类型
字符类型由字符串组成 字符常数是由单引号或双引号括住的字符串 在单引号或双引号之间括起来的部分称为字符文本, 字符文本可以采用任意计算机可以表示的字符,而 不受Fortran字符集限制 如果字符文本中含有单引号该怎么办?
这一转换仅仅是指参与操作的两个操作数类型 分别为实数和整数而言
表达式
1 2 3 1+1/4 1.0+1/4 1+1.0/4
结果
1 1.0 1.25
因为混合运算的情况是如此复杂,所以我们在程序中要尽量避免这种情 况发生
练习
下面的程序段的三个赋值语句是否正确,正 确写结果,错误说明原因 INTEGER :: i,j INTEGER, PARAMETER :: K=4 i = K **2 j = i/K K=i+j
简单地说:学完本章,你应该可以编写除函数以外的简单程序
1.1 Fortran字符集
正如英语的学习从abc开始,Fortran的学习 也是从字符集开始
FORTRAN90程序设计1[1]
程序设计举例
算法
算法是计算机软件中的一个基本概念,它是对解决实际问题的方法和步
骤的描述。设计算法是程序设计的核心,也是编写程序的基础。
正确的算法有以下几个显著特点:
(1)有穷性(flniteness)。 (2)确定性(certainty)。 (3)有效性(effcctivencss)。 (4)有零个或多个输入(input)。 (5)有一个或多个输出(output)。
简单的FORTRAN90程序分析
(6)空格并不是随处都可以使用的,一个像关键字、变量和常量名以 及操作符等的字符,其内部是不能使用空格的,空格会使字符失去其原 有的含义。 (7)FORTRAN90的注释语句是以感叹号为标志的,一行中感叹号后的 所有字符都被编译器作为注释语句而忽略。注释语句可以单独占一行, 也可在程序的其他语句后面出现。在FORTRAN90中,空行被作为注释 语句。 (8)如果遇到一条语句的长度超过了FORTRAN90所允许的行最大长度, 需要写成几行,FORTRAN90提供了一个续行符 ( & ) ,通过在语句末尾 添加续行符,编译器就会把下一行作为续行来处理。如果是把一个如关 键字这样的字符分成两行,那么需要在下行语句的开头再加一个续行符。
CHARACTER ( LEN = 10 ) :: STRING 子字符串是字符串中的若干个连续字符的集合。子字符
CHARACTER (LEN = 5 ) :: SUBSTRING 串的表示方法如下: CHARACTER (LEN = 1 ) :: CHAR STRING=’JANEJORDE’ 字符串变量名([FIRST-POSITION] : [END-POSITION]) ! SUBSTRING的值为“JANE” SUBSTRING=STRING ( :5 ) 缺省的开始位置是1,缺省的结束位置是字符串的长度。 SUBSTRING=STRING ( 5:6 ) ! SUBSTRING的值为“J” 如果开始位置大于结束位置则子字符串为空,即它的长 SUBSTRING=STRING ( 3:7 ) ! SUBSTRING的值为“NEJO” N=7 度为0。 CHAR=’ABCDEFGHIJK’ ( N:N ) ! CHAR的值为“G”
01章FORTRAN程序设计基础精品PPT课件
16
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然 语言、一般流程图、N-S图等。前面例1.1~ 例1.2的算法是用自然语言──汉语描述的,其 优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常 用流程图表示算法。
17
1. 一般流程图
一般流程图是一种传统的算法描述方法,它用不同 的几何图形来代表不同性质的操作。例如,用矩形框 表示要进行的操作,用菱形框表示判断,用流程线将 各步操作连接起来并指示算法的执行方向。一般流程 图的主要优点是直观性强,初学者容易掌握。缺点是 对流程线的使用没有严格限制,如毫无限制地使流程 任意转来转去,将使流程图变得毫无规律,难以阅读。 为了提高算法可读性和可维护性,必须限制无规则的 转移,使算法结构规范化。
9
什么叫程序设计?
对于初学者来说,往往把程序设计简单地理解 为只是编写一个程序。这是不全面的。“程序设计” 反映了利用计算机解决问题的全过程,包含多方面 的内容,而编写程序只是其中的一个方面。使用计 算机解决实际问题,通常是先要对问题进行分析并 建立数学模型,然后考虑数据的组织方式和算法, 并用某一种程序设计语言编写程序,最后调试程序, 使之运行后能产生预期的结果。这个过程称为程序 设计。
x →max
i+1→i
n
n
输出max
20
2. 程序的三种基本结构
1966年Bohra和Jacopini提出了组成结构化算 法的三种基本结构,即顺序结构、选择结构和循 环结构。
《高级语言程序设计(Fortran)》
Tel: E-mail:
1
计算机是在“程序”的控制下进行自动工作的, 它解决任何实际问题都依赖于解决问题的程序。
第1章 FORTRAN程序设计基础
n
i+1 →i 输出max
思考题
用N-S图描述求解以下问题的算法。 (1)将两个变量的值互换。 (2)判断一个数N能否同时被3和5整除。 (3) 输入三角形的三个边长,求三角形的面积。
三、程序设计方法
结构化程序设计
自顶向下 逐步求精 模块化
面向对象程序设计(OOP)
传统的程序设计是基于求解过程来组织程序流程。在 这类程序中,数据和施加于数据的操作是独立设计的, 以对数据进行操作的过程作为程序的主体。面向对象 程序设计则以对象作为程序的主体。对象是数据和操 作的“封装体”,封装在对象内的程序通过“消息” 来驱动运行。在图形用户界面上,消息可通过键盘或 鼠标的某种操作来传递。在对象内部的实现上,常常 使用结构化程序设计方法。
(3) N-S图
N-S图以三种基本结 构作为构成算法的基 本元素,每一种基本 结构用一个矩形框来 表示,而且取消了流 程线,各基本结构之 间保持顺序执行关系。 N-S图可以保证程序 具有良好的结构,所 以N-S图又叫做结构 化流程图。 输入max 1→i 当i≤9时 输入x x y x →max
x>max?
输入max
(1)一般Leabharlann 程图用不同的几何图形 来代表不同性质的 操作。例如,用矩 形框表示要进行的 操作,用菱形框表 示判断,用流程线 将各步操作连接起 来并指示算法的执 行方向。
1→i i≤9? y 输入x x>max? y x →max i+1→i n n
输出max
(2) 程序的三种基本结构
顺序结构。顺序结构是最简单的一种基 本结构,依次顺序执行不同的程序块。 选择结构。选择结构根据条件满足或不 满足而去执行不同的程序块。 循环结构。循环结构是指重复执行某些 操作,重复执行的部分称为循环体。
1_FORTRAN程序设计基础
起止框
1
流程线 0
有错
输入输出框 2 i=-1
y%400==0
连接点
Y i=1 2 y=y+1 N 3注释框 y>2500 Y 结束
判断框
i=1
2
N i=-1 2
处理框
FORTRAN程序设计
Page7
算法的表示方法:改进的流程图
三种基本结构
a Y A A B b 顺序结构 b 选择结构 a P N B A N a P Y P Y b 循环结构 (当型循环) b 循环结构 (直到型循环) a A N
程序与程序设计
程序设计方法+算法+数据结构+语言工具 =程序
分析问题+设计算法+编写程序+调试程序 =程序设计
FORTRAN程序设计
Page2
ቤተ መጻሕፍቲ ባይዱ
算法
广义的定义:为解决一个问题而采取的方法和步骤 计算机能够执行的算法:数值运算算法和非数值运算算法
FORTRAN程序设计
Page3
简单算法举例
例1.1 判断2000-2500年中每一年是否是闰年,将结果输出。
FORTRAN程序设计
!函数子程序 function area(a,b,c) implicit none real a,b,c,s,area s=(a+b+c)/2.0 area=sqrt(s*(s-a)*(s-b) & *(s-c)) return end
Page13
打开开发系统
看到的系统界面
判断闰 年的算 法的N -S图
FORTRAN程序设计
Page10
结构化程序设计方法
结构化程序:由三种基本结构组成的程序。 结构化程序的优点:便于编写、便于阅读、便于修改和维护 怎样编写结构化的程序: 自顶向下 逐步细化 模块化编程 结构化编码
Fortran90学习指导
FORTRAN90学习指导一、FORTRAN90基础知识1.源程序及其构成书写格式:主程序定义语句、结束语句注意:在没有程序名称的时候,程序开头的PROGRAM也不要出现。
如果使用了程序名称且在END语句中出现,则END语句中的PROGRAM不能省略。
语句行可以是0~132个字符;除赋值语句外,每个语句都要使用关键字开头。
如果希望一行中出现多个语句,语句一定要用分号隔开。
空格不能随便使用,关键字、变量和常量名以及操作符中的空格会使字符失去其原有的含义。
但它们之间一定要加空格。
注释行:以感叹号为标记,或“C”、“*”(FORTRAN90中不提倡此用法)续行标记:在句末尾添加续行符&,如果将关键字分成两行,则下一行开头也要加续行标记。
如果续行符出现在注释语句中,则失去了续行的功能。
2.FORTRAN90字符集126个英文字母(大小写字母等价)210个阿拉伯数字3下划线421个特殊字符:空格= + - * / (),. ‘ :!“% & ;< > ? $5其他字符(只可以出现在字符常量、字符串编辑描述符、注释和输入输出记录中)3.基本数据类型1 整型KIND值可以为1、2、4类型说明关键字:INTEGERKIND值决定数据的范围。
对于整数没有误差。
I=3/2=1;I=1/2=0INTEGER(KIND=4)::AINTEGER*4::AINTEGER(4)::A2 实型KIND值可以为4(单精度7位有效数字)、8(双精度15~17位有效数字)类型说明关键字:REAL小数表示形式、指数表示形式(规格化的指数形式)错误表示形式:E34、.E34、0.14E2.38开3次方:8.0**(1.0/3.0)3 复型KIND值为4、8是实数的有序对,将两个实数中间用逗号分隔,然后放在一对括号中类型说明关键字:COMPLEX复数的运算:+、—、*、/4 字符型KIND值为国家语言种类由一对单撇号或一对双撇号之间的字符序列组成。
第一章FORTRAN90概述
Y=2000
Y不能被 4整除
Y
N
Y不能被100 整除
N
N
打印Y “不是闰年” Y能被 400整除
Y
打印Y “是闰年”
Y
打印Y “是闰年” 打印Y “不是闰年”
Y=Y+1
Y
Y≤2500
N 结束
3.2 用N-S图表示算法
成立
P
不成立
A B 顺序结构
A
B
选择结构
当P1 A A 直到P2
当型循环
直到型循环
变量
•变量:在程序运行过程中其值可以发生变化。 每个变量都会分配到一个相应的存储空间,这个 空间就是该变量的存储地址,是相对固定的。
变量必须有名字和类型,它的值可以变化,与其类 型密切相关 变量名是变量的标志。 命名规则:以字母开头,由字母、数字、下划线组 成的字符串,允许长度为31个字符,并且不区分大小 写字母:Ab和 aB 是同一变量。 同一个程序模块中不能有相同名字的两个变量。 最好不要用FORTRAN中用到的名字作变量名。 FORTRAN中所有名字都遵守命名规则
例:求三个数(5,10,23)的平均值。
PROGRAM TEST ! 计算三个数的平均值 A=5;B=10;C=23 ave=(A+B+C)/3 write(*,*) 'AVE=',ave
END PROGRA&
&M TEST !注意续行方法
§1.5 FORTRAN 90字符集 FORTRAN90字符集包括:
§1.3 FORTRAN
90语言的特点
对FORTRAN77的扩充主要有:
引入数组运算
提高数值计算功能 内在数据类型参数化 用户定义的数据类型、运算和赋值 引入模块数据及过程定义的功能 引入指针概念
FORTRAN90程序设计1、2、3
[例2-1]
PROGRAM H_TO_C !Given the F temprature,to calculate the Centigrade REAL::TC,TH READ *,TH TC=5*(TH-32)/9 PRINT *,TH,TC END PROGRAM H_TO_C
[例2-2] PROGRAM CAL_M_SUM IMPLICIT NONE INTEGER::N,M REAL::T,A N=0;T=0 PRINT *,'Input number of data:' READ *,M DO READ *,A T=T+A ;N=N+1 IF(N>=M)EXIT END DO PRINT *,T END PROGRAM CAL_M_SUM
输出结果S
[例1-1]N-S图
FORTRAN 语言的发展 源程序及其构成
语言元素
程序单元概念
FORTRAN 是 FORmula TRANslation 的缩写 1954年 1978年 第一个FORTRAN文本的提出 推出FORTRAN77
1991年
FORTRAN90问世
几个简单的FORTRAN90程序 FORTRAN90程序的构成
PROGRAM CAL_FACTOR IMPLICIT NONE INTEGER::FACTOR,S=0,I DO I=4,8 S=S+FACTOR(I) END DO PRINT *,'S=',S END PROGRAM CAL_FACTOR
FORTRAN90程序的构成
1.FORTRAN90是分块形式的程序,一个程序含有 多个程序单元,每个程序有且仅有一个主程序单元。 2.各程序单元由若干行构成。程序行主要有: 说明语句行 可执行语句行 注释行(用!开始)
FORTRAN语言程序设计
n 是一个十进制数字(0~9)序列。
Kind值为:1、2、4、8之一。分别表示1、2、4、8个字节个数。
FORTRAN 90/95标准中整型常量的范围没有明确规定。
例如:122、0、-36、559_2
均为合法的整型常量
100.0、100,000、100 0、1002 均为非法的整型常量
5.6.2.2 实型常量
5.5 程序的书写格式 (1)固定格式:将一个语句行分为若干个区域,如下图所示
:
5.6 数据类型
5.6.1 基本概念 1.内部数据类型 FORTRAN语言将内部数据划分为以下类型: 整型 实型 算术型 数据类型 复型 逻辑型 字符型 2.种别 一个数据在内存中均占有一定字节个数的存储单元。上述每类数据都有 其不同的种别(即Kind)特性,即上述每类数据根据其种别特性(即 Kind值)的不同分别拥有不同字节个数的存储单元。 3.数据对象 1)常量:程序运行时,其值不能改变的量,称为常量。如:5,3等等。 2)变量:程序运行时,其值可以改变的量,如:变量a, a是一个存储单元
第四章 FORTRAN语言开发环境
详见教材:3.3 FORTRAN语言 开发环境
第五章 FORTRAN 语言基础知识
5.1 字符集
FORTRAN语言允许使用的字符集为:
FORTRAN90第1章
【方法】 采取自顶向下、逐步求精、模块化设 计和结构化编码的分析方法。
4 结构化程序设计
【自顶向下】 是指对设计的系统要有一个全面的理解,从问题的 全局入手,把一个复杂问题分解成若干个相互独立的子 问题,然后对每个子问题再作进一步的分解,如此反复, 直到每个问题都容易解决为止。 【逐步求精】 是指程序设计的过程是一个渐进的过程,先把一个 子问题用一个程序模块来描述,再把每个模块的功能逐 步分解细化为一系列的具体步骤,以至能用某种程序设 计语言的基本控制语句来实现。逐步求精总是和自顶向 下结合使用,一般把逐步求精看作是自顶向下设计的具 体表现。
• 算法:对解决一个实际问题而采取 的方法和步骤的描述 • 数据结构+算法=程序 • 算法分类:
数值运算算法和非数据运算算法
算法基本特征
• (1)输入性 • (2)输出性 • (3)确定性 • (4)有效性
• (1)正确性 • (2)可读性 • (3)健壮性 • (4)效率与低存储量需求
4 结构化程序设计
【模块化设计】 其设计思想实际上是一种“分而治之”思想,把一 个大任务分为若干个子任务。一般来讲,一个程序由一 个主控模块和若干个子模块组成。
4 结构化程序设计
【结构化编码 】 在设计好一个结构化的算法之后,还 要善于进行结构化编码。所谓编码就是将 已设计好的算法用计算机语言来表示,即 根据已经细化的算法正确地写出计算机程 序。
2 算法的描述
(1)用自然语言表示 (2)用传统流程图表示 (3)用N_S流程图表示 (4)用伪代码表示
流程图表示算法
常用的符号:
起始框
数据输入输出框 处理框图
流程线
判断框
连接点
流程图表示算法三种基本结构
Visual Fortran90程序设计基础第1、2章
34_2
34_SHORT
12345678998765432_4
下划线后面的量就是种别参数,没有下划线的数都具 有缺省种别。
为了保证计算机内数的范围够用,就要通过给定种别 参数来约定。种别参数是由内在询问函数KIND送回的。提 供的最小范围是由内在函数Selected_int_kind送回的。表 示十进制幂的范围是由内在函数range送回的。
在记号内部,也不许随意地使用空格。例SIN(X)与S I N(X)不同。 记号与记号之间的空格可以随意地使用。
•
多个空格在语法上与一个空格的作用相同。
一个记号与相邻关键字、名字、常数或标号之间,应当用一个或多个空格 分开,以避免错误,同时也使结构清晰。
Fortran的数据类型(1)
什么是数据类型?
§1.2程序设计语言 填补了人与计算机交流的鸿沟
程序设计语言 有问题需要计 算机解决的人 交流的鸿沟 计算机硬件仅仅 知道0和1 有问题需要计 算机解决的人 计算机硬件仅仅 知道0和1
程序设计语言的分类
1.机器语言:二进制代码形式,可以被计算机直接执 行,不可移植 2.汇编语言:用助记符来代替机器指令,容易记忆, 不可移植 3.高级语言:接近自然语言(英语)的程序设计语言, 又称算法语言,易学、易用、易维护,可移植性好 例:FORTRAN、BASIC、PASCAL、C、LISP、 PROLOG等
• 例:selected_int_kind(6)可以返回范围在-106~+106
(不包括两端点值)的所有整数的种别值。
•为使程序具有可移植性,可将K6说明成符号常数, 作为种别常数来使用。
INTEGER, parameter::k6=selected_int_kind(6)
FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础
例1.1 求
其中
2
x y u x y
2
a b x 2 2 a b
ab ab
a b a b y 4 a b
ab ab
这一题的算法并不难,可写成: (1)从键盘输入a、b的值。 ab x a b ,y (2)如果a<b,则 ab , 4 x a b , y 否则 。 ab (3)计算u的值。 (4)输出u的值。
3. N-S图
由于传统流程图的缺点,1973年美国学者 I.Nassi和B.Shneiderman提出了一种新的流程图工 具─N-S图。N-S图以三种基本结构作为构成算法 的基本元素,每一种基本结构用一个矩形框来表 示,而且取消了流程线,各基本结构之间保持顺 序执行关系。N-S图可以保证程序具有良好的结 构,所以N-S图又叫做结构化流程图。
例1.3的算法:
(1)输入m和n的值。 (2)求m除以n的余数r。 (3) 若r=0 ,则转至第 (6) 步,否则执行第 (4) 步。 (4)n→m,r→n。 (5)转第(2)步。 (6)输出n。
算法的五个特征:
(1) 有穷性。算法中执行的步骤总是有限次数的, 不能无止境地执行下去。 (2) 确定性。算法中的每一步操作必须具有确切 的含义,不能有二义性。 (3) 有效性。算法中的每一步操作必须是可执行 的。 (4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。 (5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自 然语言、一般流程图、N-S图等。前面例 1.1~例1.3的算法是用自然语言──汉语描述 的,其优点是通俗易懂,但它不太直观, 描述不够简洁,且容易产生二义性。在实 际应用中常用流程图表示算法。
FORTRAN90程序设计实验指导
FORTRAN90程序设计实验指导FORTRAN90程序设计实验指导第一节 FORTRAN PowerStation 4.0快速入门1.1 安装FORTRAN PowerStation 4.01.1.1 系统要求安装Microsoft FORTRAN PowerStation 4.0需要具备以下软硬件条件:●80486或以上处理器,运行Windows 95/Windows NT 3.51或以上操作系统。
●如果安装标准版,需要3.5英寸软盘驱动器或光盘驱动器,如安装专业版,则必须具有光盘驱动器。
●16MB或以上内存。
●足够的硬盘空间。
安装程序根据安装选项提示所需的硬盘空间。
标准版和专业版的典型安装分别需要约45MB和70MB硬盘空间。
●VGA显示器(推荐使用SVGA显示器)。
●鼠标。
1.1.2 安装步骤下面以Windows 95操作系统为例,对于Windows NT操作系统,安装过程与此类似。
首先,将含FORTRAN PowerStation 4.0的光盘插入光盘驱动器,在资源管理器中运行Setup程序,屏幕显示MicrosoftFORTRAN PowerStation Setup窗口;安装程序自动搜索已有组件,单击【Continue】(继续)按钮,并按提示输入CD-Key后,安装程序会显示安装选项对话框(图 1.1);如果要改变安装FORTRAN PowerStation 4.0的文件夹,单击【Change Folder...】(改变文件夹)按钮,选择或输入所需的文件夹名;如果输入的文件夹不存在,安装程序会自动生成该文件夹,并生成几个下级文件夹以存放相应的各类文件。
图1.1还显示了各安装选项的简短说明和安装时所需的硬盘空间。
选择下列四个安装选项之一继续安装:Typical(典型)Custom/Complete(定制/完全)Compact(紧凑)图1.1 Setup程序的安装选项对话框Run from CD-ROM(从光盘运行) Typical(典型)安装选项将安装最常用的部分,约需70MB硬盘空间。
Fortran 90 程序设计
Fortran的数据类型
在FORTRAN90中,也可以表示二进制、八进制、 十六进制形式的无符号整数。其形式如下: 二进制数:B’101101’ 或 B”101101” 八进制数:O’76210’ 十六进制数:Z’1FA2’
Fortran的数据类型
2.实型常量(REAL)
实型常量又叫实数,它具有数学实数的近似值。 实数最常见的两种表示形式是:小数形式和指数形式 小数形式:由十个数字、小数点及数符组成的数。 指数形式:对绝对值相对较小或很大的实数 。 规格化指数形式: (两种形式) 1。数字部分的值小于1,且小数点后的第一位数字非0 2。数字部分有且仅有一位非零的整数。
五种变量的类型说明关键字:
整型:INTEGER
实型: REAL
复型:COMPLEX
逻辑型:LOGICAL
字符型:CHARACTER
待说明的变量放在后面,中间用双分隔符::隔开,对于同时 说明多个变量,变量之间用逗号分隔。
Fortran90关于变量说明的新功能: 1.在变量说明的同时,可以给变量赋初值。 INTEGER::I=5,J=126 REAL::X=7.2,Z,W=774.2 2.在说明变量的同时也可说明其种别 3.在说明变量的同时,还可说明变量的属性 INTEGER,PARAMETER::I=5,J=123 REAL,DIMENSION(1:10)::A
缺省种别是指有符号或无符号的整数值。可在数值后用 下划线标明种别,没有下划线为缺省种别。缺省种别整数的范 围一般取决于所用计算机的字长。说明了种别参数后,提高了 程序的可移植性。
简而言之,种别即决定数值在计算机中存储的字节数。
Fortran的数据类型
1.整型常量(INTEGER)
整型常量又叫整数,整数值的集合就是数学整数的子集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
K=B
当K不能被A整除时
Y 返回K值
N
K=K+B 返回K值
例1.8 验证哥德巴赫猜想:任何大于2的偶数 都是两个素数之和。
给出每一个偶数N,验证能否表示成两个素数之和, 如果不能,输出No,否则继续验证下一个偶数N。 接下来的的问题是如何把N分解为N1和N2(N=N1+N2) 以及如何判断N1和N2是素数。 把N分解为N1和N2的方法很多,一种方法是,N1从2 变化到N/2,且N2=N-N1。为了判断N1和N2是否素数, 可以分别引入逻辑变量L1和L2,N1是素数时,L1为 真,否则为假,N2是素数时,L2为真,否则为假。二 级算法如图1.13(b)所示,其中判断N1或N2是否素数可 采用子程序技术。
输出max
2. 程序的三种基本结构
1966年Bohra和Jacopini提出了组成结构化 算法的三种基本结构,即顺序结构、选择 结构和循环结构。
顺序结构
顺序结构是最简单的一种基本结构,依次 顺序执行不同的程序块。
S1 S2 S3
选择结构
选择结构根据条件 满足或不满足而去 执行不同的程序块。 当条件P满足时执 行A程序块,否则 执行B程序块。
模块化
所谓模块化就是把大程序按照功能分为较小的程 序。一般地讲,一个程序是由一个主控模块和若 干子模块组成的。主控模块用来完成某些公用操 作及功能选择,而子模块用来完成某项特定的功 能。当然,子模块是相对主模块而言的。作为某 一子模块,它也可以控制更下一层的子模块。一 个复杂的问题可以分解成若干个较简单的子问题 来解决。这种设计风格,便于分工合作,将一个 庞大的模块分解为若干个子模块分别完成。然后 用主控模块控制、调用子模块。
2 2 2 2例1.2 ຫໍສະໝຸດ 入十个数,要求找出 其中最大的数。
设max单元用于存放最大数,先将输入的 第一个数放在max中,再将输入的第二个 数与max相比较,大者送到max,然后将第 三个数与max相比,大者放在max中,…, 一直到比完九次为止。
例1.2的算法
(1) 输入一个数,放在存储单元max中。 (2) 设置用来统计比较次数的单元i,初值置1。 (3) 若i≤9,做第(4)步,否则做第(8)步。 (4) 输入一个数,放在存储单元x中。 (5) 比较max和x中的数,若x>max,则将x的值送 给max,否则,max值不变。 (6) i增加1。 (7) 返回到第(3)步。 (8) 输出max中的数,此时max中的数就是十个数 中最大的数。
例1.3的算法:
(1)输入m和n的值。 (2)求m除以n的余数r。 (3) 若r=0 ,则转至第 (6) 步,否则执行第 (4) 步。 (4)n→m,r→n。 (5)转第(2)步。 (6)输出n。
算法的五个特征:
(1) 有穷性。算法中执行的步骤总是有限次数的, 不能无止境地执行下去。 (2) 确定性。算法中的每一步操作必须具有确切 的含义,不能有二义性。 (3) 有效性。算法中的每一步操作必须是可执行 的。 (4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。 (5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
Y
P
N
S1
S2
循环结构
循环结构是指重复执行某 些操作,重复执行的部分称 为循环体。判断条件是否满 足,当条件P满足时反复执 行A程序块,每执行一次测 试一次P,直到P不满足为止, 跳出循环体执行它下面的基 本结构。
P Y N
S
三种基本程序结构的共同特点:
(1)只有一个入口。 (2)只有一个出口。 (3)结构中无死语句,即结构内的每一部分都有机 会被执行。 (4)结构中无死循环。 结构化定理表明,任何一个复杂问题的程序, 都可以用以上三种基本结构组成。具有单入口单 出口性质的基本结构之间形成顺序执行关系,使 不同基本结构之间的接口关系简单,相互依赖性 少,从而呈现出清晰的结构。
x>max?
n
输出max
1.3 程序设计方法
1.3.1 结构化程序设计 随着计算机技术的不断发展,人们对程序设 计方法的研究也在不断深入。早期程序设计的好 坏常以运行速度快、占用内存少为主要标准,然 而在计算机的运算速度大大提高,存储容量不断 扩大的情况下,程序具有良好的结构成为第一要 求,一个结构良好的程序虽然在效率上不一定最 好,但结构清晰,易于阅读和理解,便于验证其 正确性。这对传统的程序设计方法提出了严重的 挑战,从而促使了结构化程序设计方法的产生。
M从2变化到333
N=667-M 求G
求L Y
L=120*G?
N
输出M、N
求最大公约数及最小公倍数
对参数A和B(A<B),使K从A开始变化,找 到一个能同时整除A与B的K,K就是最大 公约数。而求最小公倍数是:若干个B之和, 若能被A整除,则该和便是A和B的最小公 倍数。
K从A变化到1
A和B能同 时被K整除?
自顶向下
自顶向下是指对设计的系统要有一个全面 的理解,从问题的全局入手,把一个复杂 问题分解成若干个相互独立的子问题,然 后对每个子问题再作进一步的分解,如此 重复,直到每个问题都容易解决为止。
逐步求精
逐步求精是指程序设计的过程是一个渐进 的过程,先把一个子问题用一个程序模块 来描述,再把每个模块的功能逐步分解细 化为一系列的具体步骤,以致能用某种程 序设计语言的基本控制语句来实现。逐步 求精总是和自顶向下结合使用,一般把逐 步求精看作自顶向下设计的具体体现。
第一章
FORTRAN程序设计基础
计算机是在“程序”的控制下进行自动工作 的,它解决任何实际问题都依赖于解决问题的程 序。 学习FORTRAN程序设计的目的,就是要学 会利用FORTRAN语言编写出适合自己实际需要 的程序,让计算机完成自己指定的任务。 本章将介绍: 程序设计的基本概念 FORTRAN 语言的发展 FORTRAN程序的基本结构与书写格式 FORTRAN 90开发环境
什么叫程序设计?
对于初学者来说,往往把程序设计简单地 理解为只是编写一个程序。这是不全面的。程 序设计反映了利用计算机解决问题的全过程, 包含多方面的内容,而编写程序只是其中的一 个方面。使用计算机解决实际问题,通常是先 要对问题进行分析并建立数学模型,然后考虑 数据的组织方式和算法,并用某一种程序设计 语言编写程序,最后调试程序,使之运行后能 产生预期的结果。这个过程称为程序设计。
这是求若干项之和的问题
S=0 I从1~10 求F S=S+F 输出S F=0 J从1~ I 求F1 F=F+F1 F1=1 K从1~J F1=F1*K
例1.7 两个自然数之和是667,且它们的最 小公倍数与最大公约数之比是120:1,例如 115和552,求这样的自然数。 设两个自然数分别 为M和N=667-M (2<=M<=333),两 数最小公倍数为L, 两数最大公约数为 G,则一级算法如 图所示。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自 然语言、一般流程图、N-S图等。前面例 1.1~例1.3的算法是用自然语言──汉语描述 的,其优点是通俗易懂,但它不太直观, 描述不够简洁,且容易产生二义性。在实 际应用中常用流程图表示算法。
1. 一般流程图
一般流程图是一种传统的算法描述方法,它 用不同的几何图形来代表不同性质的操作。例 如,用矩形框表示要进行的操作,用菱形框表 示判断,用流程线将各步操作连接起来并指示 算法的执行方向。一般流程图的主要优点是直 观性强,初学者容易掌握。缺点是对流程线的 使用没有严格限制,如毫无限制地使流程任意 转来转去,将使流程图变得毫无规律,难以阅 读。为了提高算法可读性和可维护性,必须限 制无规则的转移,使算法结构规范化。
例1.3 求两个正整数m和n的最大公约数。
m,n的最大公约数即是所有能同时除尽 m,n的数中的最大数。求两个正整数的最大 公约数常用展转相除法。由于m和n是两个 正整数,因此存在q,r,使m=n×q+r (q≥0,r≥0,r<n)。如果r=0,则n即是m和n的最 大公约数。否则,可以证明n和r的最大公 约数就是m和n的最大公约数。用同样的方 法求n和r的最大公约数。如此继续下去, 直到余数为0。
具体要经过以下四个基本步骤:
(1)分析问题,确定数学模型或方法。 (2)设计算法,画出流程图。 (3)选择编程工具,编写程序。 (4)调试程序,分析输出结果。
1.2 算法及其描述
1.2.1 算法的概念 在日常生活中,我们做任何一件事情,都是 按照一定规则,一步一步地进行的,这些解决问 题的方法和步骤称为算法。比如工厂生产一部机 器,先把零件按一道道工序进行加工,然后,把 各种零件按一定法则组装起来,生产机器的工艺 流程就是算法。同样,我们要编写解决问题的程 序,首先应设计算法,任何一个程序都依赖于特 定的算法,有了算法,再来编写程序是很容易的 事情。
S1 S2
P
当P满足时 N S2
S3
Y S1
S
例1.5 用N-S图来描述例1.1的算法。
输入a、b
Y
a<b?
N
x a2 b2
ab y ab
u
x a2 b2
y 4 a b
x y x y
输出u
例1.2的算法。
输入max 1→i 当i≤9时
输入x y
x →max i+1 →i
3. N-S图
由于传统流程图的缺点,1973年美国学者 I.Nassi和B.Shneiderman提出了一种新的流程图工 具─N-S图。N-S图以三种基本结构作为构成算法 的基本元素,每一种基本结构用一个矩形框来表 示,而且取消了流程线,各基本结构之间保持顺 序执行关系。N-S图可以保证程序具有良好的结 构,所以N-S图又叫做结构化流程图。