首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Fortran 77中互换虚拟变量?

在Fortran 77中,可以通过使用COMMON块或EQUIVALENCE语句来实现虚拟变量的互换。

  1. COMMON块: COMMON块是一种在不同子程序之间共享变量的方式。通过在不同子程序中声明相同的COMMON块,可以使它们共享相同的变量。在Fortran 77中,COMMON块的声明通常放在程序的开头或子程序的开头。

下面是一个示例代码,展示了如何在Fortran 77中使用COMMON块来互换虚拟变量:

代码语言:txt
复制
PROGRAM virtual_variable_swap
  IMPLICIT NONE
  
  INTEGER A, B
  COMMON /DATA/ A, B
  
  A = 10
  B = 20
  
  CALL SUBROUTINE_A()
  CALL SUBROUTINE_B()
  
  PRINT *, "A =", A
  PRINT *, "B =", B
  
CONTAINS

  SUBROUTINE SUBROUTINE_A()
    COMMON /DATA/ A, B
    INTEGER TEMP
    
    TEMP = A
    A = B
    B = TEMP
  END SUBROUTINE SUBROUTINE_A

  SUBROUTINE SUBROUTINE_B()
    COMMON /DATA/ A, B
    INTEGER TEMP
    
    TEMP = A
    A = B
    B = TEMP
  END SUBROUTINE SUBROUTINE_B

END PROGRAM virtual_variable_swap

在上面的示例中,通过在主程序和子程序中声明相同的COMMON块/DATA/,实现了变量A和B的互换。

  1. EQUIVALENCE语句: EQUIVALENCE语句可以将不同变量关联到同一块内存空间,从而实现变量的互换。在Fortran 77中,EQUIVALENCE语句的语法如下:
代码语言:txt
复制
EQUIVALENCE (variable1, variable2)

下面是一个示例代码,展示了如何在Fortran 77中使用EQUIVALENCE语句来互换虚拟变量:

代码语言:txt
复制
PROGRAM virtual_variable_swap
  IMPLICIT NONE
  
  INTEGER A, B
  EQUIVALENCE (A, B)
  
  A = 10
  B = 20
  
  CALL SUBROUTINE_A()
  CALL SUBROUTINE_B()
  
  PRINT *, "A =", A
  PRINT *, "B =", B
  
CONTAINS

  SUBROUTINE SUBROUTINE_A()
    INTEGER TEMP
    EQUIVALENCE (A, TEMP)
    
    TEMP = A
    A = B
    B = TEMP
  END SUBROUTINE SUBROUTINE_A

  SUBROUTINE SUBROUTINE_B()
    INTEGER TEMP
    EQUIVALENCE (B, TEMP)
    
    TEMP = A
    A = B
    B = TEMP
  END SUBROUTINE SUBROUTINE_B

END PROGRAM virtual_variable_swap

在上面的示例中,通过EQUIVALENCE语句将变量A和B关联到同一块内存空间,实现了变量的互换。

需要注意的是,虚拟变量的互换可能会导致代码的可读性和可维护性降低,因此在实际开发中应谨慎使用。此外,以上示例中的代码仅为演示目的,实际应用中可能需要根据具体情况进行适当的修改。

关于Fortran 77的更多信息和学习资源,您可以参考腾讯云的Fortran 77产品介绍页面:Fortran 77产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过写“猜数字”游戏学习 Fortran | Linux 中国

Fortran 77 是我学习的第一门编译型编程语言。一开始时,我自学了如何在 Apple II 上用 BASIC 编写程序,后来又学会在 DOS 上用 QBasic 编写程序。...但是当我去大学攻读物理学时,我又学习了 FortranFortran 曾经在科学计算中很常见。曾几何时,所有计算机系统都有一个 Fortran 编译器。...“猜数字”程序练习了编程语言中的几个概念:如何为变量赋值、如何编写语句以及如何执行条件判断和循环。这是学习新编程语言时一个很好的的实践案例。...定义变量后,程序会提示用户输入随机数种子。Fortran 程序无法从操作系统初始化随机数生成器,因此你必须始终使用“种子”值和 SRAND 子程序(subroutine) 启动随机数生成器。...INT 函数将结果截断为整数;因此,变量 NUMBER 就是一个介于 1 到 100 之间的随机数。 程序会给出提示,然后进入一个循环。

1.9K30

英文Java开发

用来测试一个对象是否是指定类型的实例对象 27 int 基本数据类型之一,整数类型 28 interface 接口 29 long 基本数据类型之一,长整数类型 30 native 用来声明一个方法是由与计算机相关的语言(C.../C++/FORTRAN语言)实现的 31 new 用来创建新实例对象 32 package 包 33 private 一种访问控制方式:私用模式 34 protected 一种访问控制方式:保护模式...声明在当前定义的成员方法中所有需要抛出的异常 46 transient 声明不用序列化的成员域 47 try 尝试一个可能抛出异常的程序块 48 void 声明当前成员方法没有返回值 49 volatile 表明两个或者多个变量必须同步地发生变化...报告 消息 28 random 随机数 29 insert 插入 嵌入 30 compare 比较 对照 31 ignore 忽视 不理会 32 password 密码 口令 33 change 交换 互换...document 文档 39 display 显示 40 method 方法 条理 41 version 版本 42 parameter 参数 43 calculator 计算 44 change 交换互换

14420
  • 图灵奖12 —— 约翰·巴克斯,Fortran和BNF的发明人,却有着不幸的童年

    这些设备的编程是通过将机器代码从一些长期存储介质(穿孔卡或磁带)加载到主存储器中来完成的。 大多数机器代码是手工编写的,或者是在原始汇编程序的帮助下编写的。...尽管存在一些"自动编程"系统,但它们通常会试图通过为具有所需特性的虚拟机提供解释器来解决机器的限制。巴克斯自己的Speedcoding就是这样的一个系统。...它还使普通的FORTRAN语句与象征性的IBM 704指令混合成为可能,在这些指令中,操作数被FORTRAN变量替换。该系统于1958-1959年冬发布。...其他两个级别(硬件级别和发布级别)可以使用不同的符号集,但如果不清楚,就需要说明如何在不同级别之间进行音译。例如,该符号可能不存在于目标计算机的硬件级语言中。...另外,新的是类型声明,而不是FORTRAN中隐式声明变量类型的变量命名方案。标识符可以是任意长的,包含大写或小写字母和数字的任意组合,唯一的限制是第一个符号必须是字母。

    1.5K20

    因为对Perl和Python不满?圣诞节无聊?编程语言的出现都这么随意吗?

    Fortran I 支持:变量变量名最多 6 个字符)、If 和 do 语句、格式化 IO。...它删除了面向对象概念中的类的概念认为类也是一种对象;消息仍然作为最基本操作;把对象的属性理解为获取或更改属性这两种方法,从而把属性的概念简化为方法;取消了变量和赋值,替代它们的是通过消息来读槽和写槽。...虚拟机面向对象语言:Java 诞生于 1995 年的 Java 1.0,来自于 Sun 公司,是第一个在虚拟机上运行的语言。...Java 运行于 JM(Java 虚拟机)上,JM 和解释器的区别是:JM 会将 Java 源代码编译成字节码,然后然后再由 JM 解释执行。...NET 开发平台包括,运行 IL 语言的虚拟机 CLR,基于 IL 语言的公共类库,用于编译产生 IL 语言程序的高级语言,以及支持这些高级语言开发的编译的基础开发环境。

    1.6K60

    Chatgpt问答之WRF-并行计算

    4、C语言中的指针与fortran语言中的指针有什么区别? • 内存模型不同:C语言的内存模型是连续的字节地址空间,而Fortran语言则支持非连续的内存分配。...• 指针的声明方式不同:在C语言中,指针的声明使用*,int *p,而在Fortran中,指针的声明使用pointer关键字,real, pointer :: p。...也即C语言指针存储的是变量的地址(输出指针结果为地址),fortran语言中指针可视为变量的别名(输出指针结果为变量值)。若想输出地址则需要使用loc()函数。...• 指针的生命周期不同:在C语言中,指针在变量作用域内保持有效,当指针超出作用域后,指向的内存可以被释放。...而在Fortran中,指针的生命周期可以跨越多个子程序,因为它们可以被作为实参传递,并且可以被保存在堆栈或堆上的内存中。因此,在使用Fortran指针时需要更加注意内存管理的问题。

    60530

    fortran中的数组

    本文由知乎答主木子穿叶提供 在前三篇笔记,学习了Fortran作为一个编程语言,最基本的内容:变量,输入输出,流程控制和程序结构。...a(i) = sin(b(i)) 内置函数sin等支持此类操作 以上对于高维数组也是一样的。...通常为了安全,将数组作为参数传递时,也会把尺寸作为若干整数变量一起传递给子程序/函数。 指针 Fortran实际上还有指针pointer,与c语言的指针相比感觉非常鸡肋:1....我们没有用Fortran建立链表之类的动态需求,动态数组完全够用。2. 语法比c语言更繁琐而且更弱,需要target形容的变量才能被指针指向,也没有*p这种运算。3....Fortran的指针pointer需要配套target使用,target表明变量可以被指针指向,pointer表明这个变量是指针。

    52810

    我的第一门编程语言,你听说过吗?

    今天看到一则消息,FORTRAN 进入 Top 10,这到底是怎么回事? 点进去一看,不得了,原来是 67 岁的老牌语言 FORTRAN 连续两个月进入 TIOBE 排行榜 Top 10。...不过这门语言所涉及的编程概念,诸如变量、循环、函数等等,倒是一直有用,后面再学习其它编程语言,就非常容易上手。...在其发展初期,FORTRAN 成为了科学计算的标准,广泛应用于航天、气象学、物理学、工程学等领域。FORTRAN 语言本身也在不断发展,记得我们当年使用的是 FORTRAN 77。...然而,随着计算机技术的发展,其他编程语言 C 和 C++、Python、MATLAB、R 等语言也逐渐崭露头角,开始在高性能计算、科学计算领域竞争,FORTRAN 的流行度在自己擅长的计算领域都有所下降...进入两千年之后,FORTRAN 似乎已经被抛弃。不仅在工业界,即使是工科院校,也不再首选 FORTRAN 语言,所以现在已经没有多少学生听说过这门语言。

    11410

    CMake 秘籍(四)

    其他相关的例子包括解析器生成器, Flex(github.com/westes/flex)和 Bison(www.gnu.org/software/bison/),元对象编译器, Qt moc(doc.qt.io...在本配方中,我们希望更进一步,并演示如何在构建时记录 Git 哈希(或一般而言,执行其他操作),以确保每次我们构建代码时都会运行这些操作,因为我们可能只配置一次,但构建多次。...使用要求,包含目录、编译标志和链接库设置在OBJECT库上将正确继承。...第 7 个配方,使用add_subdirectory限制范围所述,这种方法可以扩展到大型项目,无需在目录之间携带源文件列表的全局变量,并且具有隔离作用域和命名空间的额外好处。...在本配方中,我们没有指定 Fortran 模块文件应放置的目录,并保持了这种透明性。可以通过设置CMAKE_Fortran_MODULE_DIRECTORY CMake 变量来指定模块文件的位置。

    23220

    消失的编程语言

    通用的编程语言,Python、Java和JavaScript,目前占据主导地位,而其他一些更为特定领域的语言似乎逐渐失宠。...3、Haskell Haskell已经过去了最辉煌的时光,这真是遗憾;许多程序员都希望他们知道如何在这个光辉的函数式编程语言中编码。...与更相关、更灵活的语言(Go和Python)相比,Haskell也遭受了竞争压力,这两种语言从2000年代开始挑战Haskell,以其强大和实用性继续挑战该语言。...5、Fortran 令人惊讶的是,已有62年历史的Fortran(Formula Translation)编程语言仍在使用。尽管多年来其使用率可能有所下降,但它仍然超越了一些同龄的编程语言。...尽管它的使用范围有限,但它有坚实的基础,Fortran开发人员可能还需要一段时间才能完全抛弃这种语言。

    22430

    numpy 和 pytorch tensor 的内存连续性 contiguous

    在numpy和torch的数据结构中,都有表示变量是否在内存中数据连续存储的概念。...列优先 Fortran order 而Fortran Order则指的是列优先的顺序(Column-major Order),即内存中同列的元素存在一起。...Fortran,MatLab是列优先存储的。 数据举例 行优先 考虑一个2维数组arr = np.arange(12).reshape(3,4)。...numpy都是行优先的 但是我们创建arr时是以 0 - 11 为顺序创建的,其中[0 1 2 3] [4 5 6 7] [8 9 10 11]连续,矩阵转置后只改变引用,内存数据并不发生变化 类似的操作numpy...numpy numpy 变量中连续性可以用自带的函数修正,不连续的变量通过函数 np.ascontiguousarray(arr)变为C连续,np.asfortranarray(arr)变为Fortran

    2K20

    【SQL国际标准】ISOIEC 9075:2023 系列SQL的国际标准详情

    ISO标准覆盖了广泛的行业和领域,包括但不限于: 制造业:质量管理标准(ISO 9001) 信息技术:信息安全管理标准(ISO/IEC 27001) 环境管理:环境管理体系标准(ISO...14001) 医疗设备:医疗设备质量管理标准(ISO 13485) 食品安全:食品安全管理体系标准(ISO 22000) ISO 官网传送门:ISO - International...—将表达式的结果分配给变量和参数。 —条件处理程序的规范,允许 SQL 调用的例程处理在执行过程中出现的各种条件。 —信号和再信号条件的语句规范。...languages SQL Part 10: Object language bindings (SQL/OLB) ISO/IEC 9075-2 为以下编程语言指定了嵌入式 SQL:Ada、C、COBOL、Fortran...在ISO/IEC 9075-10:2016中,术语"SQLJ"和"SQL/OLB"可以互换使用。

    26200

    八种方法(实现两个数互换),绝了绝了!

    作者:古阙月 实现两个数互换的八种方法 基本数据类型 借助第三个变量 package 贪心;/* 作者 :XiangLin 创建时间 :2020/9/15 22:48 文件 :XX.java...random.nextInt(101); System.out.println("交换前:a = " + a + ", b = " + b); /** * 借助第三个变量实现第三个数互换...如果有不明白的朋友,可以自己准备三个杯子,一个空杯代表变量t,两个杯子装上水分别代表变量a、b,然后互换一下a、b两个杯子里的水即可明白。 ?...了解了按位操作符的概念,那么接下来,我们来了解"异或"操作 a ^ b,若a、b两个值不同,则异或结果为1;若a、b两个数相同,则异或结果为0。...swop(Integer a, Integer b) { System.out.println("a = " + b + ", b = " + a); // 终止Java虚拟机的运作

    48910
    领券