100 likes | 268 Views
第 3 章 简单输入与输出. 计算机程序的主要作用是对输入的数据进行适当的加工处理以得到人们关心的结果,并将结果输出。在进一步讲解程序设计的基本概念前,有必要介绍简单的输入输出语句。这样,程序设计中的一些问题可以直观的表现出来,便于对一些概念的理解。. 3.1 输入和输出概述. 在 Fortran 语言中,数据的输入输出操作由相应的输入输出语句来完成。输入输出语句负责向计算机说明程序中哪些数据要进行输入输出、输入输出数据的格式、在何种设备上进行输入输出等问题。 Fortran 中的输入输出方式主要有以下三种: 按用户指定的格式进行输入输出;
E N D
第3章 简单输入与输出 • 计算机程序的主要作用是对输入的数据进行适当的加工处理以得到人们关心的结果,并将结果输出。在进一步讲解程序设计的基本概念前,有必要介绍简单的输入输出语句。这样,程序设计中的一些问题可以直观的表现出来,便于对一些概念的理解。
3.1 输入和输出概述 • 在Fortran语言中,数据的输入输出操作由相应的输入输出语句来完成。输入输出语句负责向计算机说明程序中哪些数据要进行输入输出、输入输出数据的格式、在何种设备上进行输入输出等问题。 • Fortran中的输入输出方式主要有以下三种: • 按用户指定的格式进行输入输出; • 按系统隐含的标准格式输入输出(也称为表控输入输出、直接列表输入输出); • 无格式的输入输出。
3.2 简单输出语句 • 简单输出语句主要是指表控输出,即表控格式(List Directed Format,也叫直接列表)输出。在用这种格式进行输出时,计算机系统会用隐含的输出格式为每一种数据类型规定输出的长度和表示形式。例如,实数是用小数还是指数来表达,小数位数有几位等。 • 在Fortran中没有专用的表控输出语句,表控输出格式的输出都是输出语句的简化形式。具体来说,PRINT语句和WRITE语句都能够进行表控输出。下面分别对两种语句的表控输出用法进行说明。
3.2.1 PRINT语句的表控输出 • PRINT语句是Fortran中较为常用的一种输出语句,用它来完成表控输出的语法格式如下所示。 • PRINT *[, 输出项,……] • 在PRINT语句中不能指定输出设备,只能向系统隐含指定的设备输出数据(隐含指定的输出设备一般是指计算机屏幕);语句中的星号“*”表示“表控格式输出”,即按照计算机默认的格式进行数据的输出;输出项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输出项时,命令将输出一个空白行。
3.2.2 WRITE语句的表控输出 • 使用WRITE语句来完成表控输出的语法格式如下所示。 • WRITE(*,*)[输出项,……] • WRITE语句中第一个星号“*”表示在系统隐含指定的设备上输出;WRITE语句中的第二个星号“*”表示“表控格式输出”;输出项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输出项时,命令将输出一个空白行。
3.2.3 表控输出的特点 • 从上面两个例子中可以发现表控输出的一些特点。如果输出的是整数,系统会自动为每个整数分配11列,当要输出的数据位数不够时,左端以空格补齐。在输出实数时,给每个实数分配的输出长度分为以下两种情况。 • 当实数能够用小数形式表达时,分配8列,小数点前最多7位。如果小数点后有效位数不足,则用“0”补齐。 • 如果实数只能用指数形式表达时,则分配13列。其中,指数部分占4位,小数点后占7位。 • 在输出数组时,数组元素会按照它在数组中存储的先后顺序依次输出。在输出字符串时,直接按照字符串的实际长度进行输出。 • 用户也可以在同一条PRINT语句或WRITE语句中输出整数、实数和字符串。示例如下。 • PRINT *, 1000, 1.414, “Two Numbers”
3.3 简单输入语句 • 简单输入语句主要是指表控输入格式,又称为自由格式输入。这种输入操作不需要用户指定输入数据的具体格式,只要将数据按其合法的形式依次输入就可以了。数据之间以逗号“,”或空格间隔。Fortran中的表控输入语句也是特定输入语句的简化形式。READ语句能够实现表控输入,其实现形式有两种。下面分别给出两种形式的表控输入语句。
3.3.1 READ语句的表控输入形式一 • 使用READ语句来完成表控输入的语法形式如下所示。 • READ *[, 输入项,……] • 在这种形式中,不能指定输入设备,只能由系统隐含指定的设备上输入(系统隐含指定的设备一般是指键盘);语句中的星号“*”表示“表控输入”,即按照数据合法的格式进行输入;输入项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输入项时,系统将挂起程序的运行直到用户键入回车符。
3.3.2 READ语句的表控输入形式二 • 第二种形式的READ语句表控输入的语法如下。 • READ(*, *)[输入项,……] • 语句中的第一个星号“*”表示“系统默认的输入设备”(一般指键盘);第二个星号“*”表示“表控输入”;输入项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输入项时,系统将挂起程序的运行直到用户键入回车符。 • 下面用一个具体的代码来演示表控输入语句的应用。这段代码主要演示了第二种形式的READ语句表控输入在程序的简单实现。 • TEST0305.F90 • ! 这是直接列表输入语句READ的范例 • PROGRAM TEST0305 • IMPLICIT NONE • ! 变量定义 • REAL :: A , B • INTEGER :: I, J • ! 表控输入 • READ(*, *)A, B • READ(*, *)I, J • ! 表控输出 • PRINT *, "Output:" • PRINT *, A, B • PRINT *, I, J • END PROGRAM TEST0305
3.3.3 表控输入的特点 • 在应用READ语句进行表控输入操作时,输入的数据应该符合READ语句中的要求,即输入的数据个数应该与READ语句中的变量个数一致;输入数据的类型应与READ语句中相应变量的类型一致。如果输入的数据不够,READ语句将会等待用户继续输入,直到输入所需的全部数据为止。如果输入的数据过多,则多余的数据不起作用。如果输入的数据与READ语句中的变量类型不一致,则可能出现赋值错误。