首页 > 其他分享 >Fortran入门(四)期末复习|数组

Fortran入门(四)期末复习|数组

时间:2024-06-09 15:28:52浏览次数:24  
标签:REAL 字符 复习 Fortran 数组 FORALL INTEGER DIMENSION 入门

一:字符数据处理

1:字符关系

字符比较是按ASCII码值的大小进行比较的。排列的基本规则是:空格字符最小,数字比字母小,大写字母比小写字母小。

字符型数据比较遵循:

(1)单个字符按ASCII比较

(2)两个相同长度的字符串的比较是将字符串的字符从左到右逐个比较,以第一对不同字符的比较结果为准。

(3)长度不同时,把较短的字符串后面用空格补齐再比较。

2:字符处理函数

常用的:

LEN("XXX")    !返回字符个数,包括前置和尾部空格
LEN_TRIM("XXX")    !返回把字符串尾部空格去掉后的长度

ICHAR("XXX")    !字符转为ASCII
IACHAR("XXX")    !与上式等价

CHAR(X)    !ASCII转字符,等价与ACHAR

二:数组

1:数组的说明方法

以下常用的三种:

REAL(8),DIMENSION(0:10)::A,B,C
INTEGER,DIMENSION(4,5)::D,E

IMPLICITM INTEGER(A-C),REAL(I-J)
DIMENSION B(3:15),IX(10)

REAL K(20)
INTEGER L(5,5)

数组元素是先列后行的顺序来存放的,对于二维数组来说,在占有的存储单元里,先放第一列的元素,再按此往后依次存放。

2:给数组赋初值

(1)用数组构造器

INTEGER,DIMENSION(6)::W=(/3,0,9,2,5,1/)
INTEGER,DIMENSION(8)::P=(/(I,I=1,15,2)/)
INTEGER,DIMENSION(-1,8)::PP=(/3,0,(I,I=1,9,2),4,5,3/)

(2)使用DATA语句

COMPLEX*8 LPP
REAL,DIMENSION(6)::PP
INTEGER,DIMENSION(500)::KKJ
DATA PP,LPP/6*0,(8.0,-89)/
DATA (KKJ(I),I=1,100)/100*10/,(KKJ(I),I=101,500)/100*50/

数组整体运算

REAL A(4,5),B(2,3),C(2,3)
C=A(2:3,1:3)+B

!也可以加常量
B=A(2:3,1:3)+2

3:WHERE语句

WHERE是对数组操作的语句,结构类似于IF。

INTEGER,PARAMETER::N=10
REAL,DIMENSION(N)::A
LOGICAL,DIMENSION::B=.FALSE.
READ *,A
WHERE(ABS(A)>1.0)
   B=.TRUE.
   A=1./A
END WHERE
PRINT *,A
PRINT *,B
END

4:FORALL语句

REAL::A(0:N)
WHERE(A>0.0) A=SQRT(A)
!等价于
FORALL(I=0:N,A(I)>0.0) A(I)=SQRT(A(I))

定义一个5x5的数组,将前三列数组元素赋值10,后两列赋值20

INTEGER,DIMENSION(5,5)::M
FORALL(I=1:5)
  FORALL(J=1:3)
      M(I,J)=10
  END FORALL
  FORALL(J=4:5)
      M(I,J)=20
  END FORALL
END FORALL
PRINT 10,((M(I,J),J=1,5),I=1,5)
10 FORMAT(5I6)
END

5:动态数组

动态数组是指数组元素的个数在程序运行期间可以改变的数组。动态数组声明后,并未分配存储空间,不能直接使用,使用前需通过ALLOCATE语句为动态数组指定维的上下界。直接研究代码吧。

!计算平均值
IMPLICIT NONE
REAL,DIMENSION(:),ALLOCATABLE::A    !定义动态数组
INTEGER::N,I
REAL::V=0.0
READ *,N
ALLOCATE(A(N))    !给动态数组分配存储单元
READ *,A
DO I=1,N
  V=V+A(I)
END DO
V=V/N
PRINT *,V
DEALLOCATE(A)    !释放动态数组
EDN

使用DEALLOCATE语句释放动态数组的存储空间后,可再次用ALLOCATE语句为动态数组分配新的存储空间。

标签:REAL,字符,复习,Fortran,数组,FORALL,INTEGER,DIMENSION,入门
From: https://blog.csdn.net/2303_77182266/article/details/139558724

相关文章

  • Fortran入门(一)(期末复习)
     一:基本数据类型1:整型数据(INTEGER)整型数据类型的性质整型数据类别名类别参数 字节数字节型11短整型22基本整型44长整型88这里需要注意:类别参数为1的整型变量,其有符号数的表示范围是-128~127在FORTRAN95中,数字串后有一个可任选的下划线后再跟类别参数,例如32_2......
  • 2024计算机组成原理复习——第一章
    计算机组成原理复习——第一章一、计算机系统概括本笔记不用于商业用途,内容参考《2025年计算机组成原理——考研复习指导》以及其对应的b站免费视频课(图文信息主要来自于此)(一)计算机系统结构层次1.计算机系统的基本组成硬件:有形的物理设备,计算机系统中实际物理装置的总称......
  • Java入门基础11:面向对象高级一(static、extends继承)
    Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。我会将它分为三章详细讲,本章主要讲静态和继承staticstatic叫静态,可以修饰成员变量、成员方法。类变量(静态成员变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象......
  • Scala代码练习(复习用)
    1、编程实现百分制转换成五级制,规则如下:90~100分,返回优秀;80~89分,返回良好;70~79分,返回中等;60~69分,返回及格;60分以下,返回不及格。packagemain.scala.classStudyobjectgrade{defmain(args:Array[String]):Unit={valnum=70if(num>=90){println(......
  • C++入门7 类|构造函数|析构函数
    一,类型设计和实例化对象封装是面向对象程序设计最基本的特性, 把数据 (属性) 和函数 (操作) 合成一个整体,这在计算机世界中是用类与对象实现的。C++中类的设计1 class 类型名称2 {3 public:4 成员列表1;5 protected:6 成员列表2;7 private:8 成员列表3;......
  • 【java问答小知识3】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知
    什么是Java的Lambda表达式?回答:Lambda表达式是Java8引入的一种语法糖,允许你以简洁的格式编写匿名函数。什么是Java的StreamAPI?回答:StreamAPI是Java8引入的,提供了一种声明式处理集合数据的方式,支持并行处理。什么是Java的Optional类?回答:Optional是一个容器对象,......
  • CATIA入门操作案例——彩色手环的绘制,扫掠中使用拔模方向的使用
    目录引出手花绘制扫掠,使用拔模方向绘制实体改颜色总结异形弹簧新建几何体草图编辑,画一条样条线进行扫掠,圆心和半径画出曲面上的螺旋线再次选择扫掠,圆心和半径其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发自定义信号重载带参数的按钮触发信号触发信......
  • 算法设计与分析(期末复习版4完结版)
    算法设计与分析(期末复习版4)一、蛮力法概述1.设计思想2.优劣性3.适用情况二、蛮力法基本应用1.穷举思路的一般格式2.简单选择排序和冒泡排序3.字符串匹配4.求解最大连续子序列和的问题三、图的深度优先和广度优先遍历1.图的存储结构1)邻接矩阵存储方法2)邻接表存储方法2.......
  • 计算机组成原理复习笔记
    前言就是按照考试的题型写的总结非常应试版题型一、进制转换只考十进制二进制十六进制之间的相互转换一个个看(1)十进制转其他转二进制:除以2从小到大取余数(0或1)转十六进制:除以16从小到大取余数(0到f)(2)二进制十六进制转十进制每位数字乘以相应的幂数再相......
  • 深度学习入门(鱼书)学习记录 - 第5章 误差反向传播法
    前言:上一章通过数值微分计算神经网络的权重参数的梯度,这种方法比较简单但比较耗时。所以现在介绍另外一种比较高效的方法-- 误差反向传播法目录计算图举例为什么用计算图求解计算图的优点链式法则链式求导反向传播加法节点的反向传播乘法节点的反向传播简单层的......