07-视频:fcode实用编程基础篇+应用篇


视频:fcode实用编程基础篇+应用篇

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

fcode实用编程基础篇

https://www.bilibili.com/video/BV1x4411b7Sn?spm_id_from=333.337.search-card.all.click

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P1第 1 期 了解Fortran及相关概念

35:35

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P2第 2 期 常见编译环境的操作

51:23

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P3第 3 期 常见问题的检测和排查

50:41

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P4第 4 期 语法之源代码结构,14:30

01:45 固定格式和自由格式

05:35 程序单元

  • fortran可以跨平台的原因,运行时库系统调用

09:43 语句类型

  • 声明语句

  • 执行语句

11:18 变量的定义和声明

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P5第 5 期 语法之数据类型与浮点数,57:56

02:25 数据类型【法则,标准数据类型,parameter属性】

  • 不同的法则,不同的数据类型,

  • 不同的法则,不同的数据类型,

  • Type类型,是结构体

  • 属性,形容词,符号常量,

15:18 Kind,整数的kind

  • 整数的Kind,

  • 整数的Kind,

  • 整数的Kind,

  • 整数的Kind,

  • 整数的kind

22:43 浮点数的kind

  • 1.6_DP,表示1.6的kind值为DP
  • kind()函数,能查看变量的kind值;

  • 4.2..2384,为什么不是4.2,因为1.6是单精度的,常数必须有kind值,否则会有误差

31.29 复数的kind

32.29 字符型的kind

33.08 逻辑性的kind

33.36 整型和字符型,子字符串,动态format

  • Open,文件通道号,>10,//挂靠,

  • 动态format

40.45 浮点数

  • 解释了浮点数~,0.5,0.05,0.005,…

  • 实数数学中的,实型是计算机中的,去接近实数,

46.25 浮点数IEEE表示规则

50.40 浮点数误差,精度,浮点数需避免操作,误差放大和累加

没有误差累积的例子:

误差累积的例子:

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P6第 6 期 语法之流程控制,24:50

02.06 条件判断,【if,ifelse,else,数组相等,署名,case】

  • 数组相等的判断;

  • 署名;

  • case

11.00 条件判断,【SELECT TYPE】

11.27 循环,【DO】

12.40 循环,【DO WHILE】

13.30 循环,【Implied DO】

14.24 循环,【DO,无穷循环,署名】

15.07 循环,【控制】

17.50 循环,【注意】

20.40 FORTRAN77的替代,【GOTO】

22.40 FORTRAN77的替代,【循环】

23.43,FORTRAN77的替代,【IF】

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P7第 7 期 语法之数组和结构体,44:21

00.01 元数据

03.55 聚合数据

04.30 聚合数据,【枚举类型】

05.50 聚合数据,【数组类型】

07.35 聚合数据,【结构体类型】

09.35 聚合数据,【类,面向对象】

  • 面向对象:数据的封装,类方法的多义性,类的扩展,类的继承,…

13.43 数组,【数组的分类】

17.30 数组,【数组的声明】

21.25 数组,【数组的访问】

  • 隐藏函数,
  • 数组函数FUNARR数值会发生变化
  • 不连续的赋值,
  • 数组函数FUNARR,当传递给数组函数不连续的数组片段时,数值不会发生变化,

33.38 数组,【数组的函数】

38.10 结构体

  • 抽象数据,
  • 和指针结合起来,

39.10 结构体,【结构体的声明、访问】

学习正确的书写代码可以减少不必要的麻烦和错误

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P8第 8 期 语法之函数和子例行程序,58:53

02.25 函数和子例行程序,【函数优缺点】

  • 文件的输入输出,消息的发送,

11.46 函数和子例行程序,【函数和子例程的声明】

  • 传址

15.15 虚参和实参

17.25 虚参和实参,【参数传递方式】

  • 默认传址,

21.10 虚参和实参,【example】

24.52 传递数组和结构体

26.42 传递数组和结构体,【传递数组】

  • 假定形状默认的下限是1,推荐假定形状

30.15传递数组和结构体,【传递结构体】

33.44 特殊用法,【save属性】

  • 赋初值是在编译的时候进行的,不是在运行的时候

35.35 特殊用法,【intent属性】

  • 默认是中性属性
  • intent的检查是在编译的时候进行的,不是在运行的时候

37.15 特殊用法,【value属性】

38.14 特殊用法,【optional属性,可选参数】

40.00 特殊用法,【更改参数顺序】

42.24 特殊用法,【函数名作为参数】

  • x2x3是传递的函数

46.11 特殊用法,【result后缀】

49.00 特殊用法,【recursive,递归子程序】

图解,

54.43 特殊用法,【递归一进多出,递归使用原则】

57.46 特殊用法,【不建议使用的特殊用法】

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P9第 9 期 语法之Module,1:02:31

03.07 Interface,【interface产生原因】

07.55 Interface,【Interface必须使用的情况】

09.10 Interface,【interface声明】

  • module自带interface,

12.13 module,【module产生原因】

13.45 module,【module与函数的区别】

15.00 module,【module use,use时默认增加了相关interface的声明】

  • 第一个a,b,c 输出 a=0, b=0, c=0

  • 第二个a,b,c 输出 a=3, b=4, c=5

  • 第三个a,b,c 输出 a=1, b=2, c=3

  • 第四个a,b,c 输出 a=3, b=4, c=5

  • 在主程序改变a, b, c

    module的子程序默认继承新的值,神奇,

18.50 module,【Fortran没有全局变量】

20.00 module,【module的声明,权限属性-public-protected-private,外部视角-内部视角】

  • u, v, w 时Private

  • module中的相互调用都是带有interface接口的,

27.49 module,【】

28.26 module,【module的继承,模块树】

  • =>改名字,从tvscreen
  • 推荐,moduleA中的变量和函数,带有module的名称,

34.16 module,【module的缺点】

  • 底层模块

35.58 module,【一个例子】

47.32 特殊用法,【统一接口】

55.54 特殊用法,【自定义操作符】

58.58 特殊用法,【重复的话,为调用者服务】

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P10第 10 期 语法之文件读写(上),57:55

https://www.bilibili.com/video/BV1x4411b7Sn?p=10

02.35 文件和路径,【文件,扩展名】

  • .dat可以是任何文件,仅仅只是扩展名;

07.10 文件和路径,【文本文件,二进制文件】

  • 用拼音来看英文,

14.02 文件和路径,【二进制文件专属的应用程序】

16.45 文件和路径,【二进制文件的解释?需要格式说明】

19.30 文件和路径,【两种文件的读取方式及其对比,两种文件对比】

26.38 顺序读写有格式文件,【Open语句】

  • 通道号,相当一个标签

30.45 顺序读写有格式文件,【通道号与句柄区别】

32.19 顺序读写有格式文件,【Read语句,跳过一部分读取】

  • 星号表示一种格式,也存在其它的输出格式,可以尝试去了解,不过一般星号格式够了~~

SSSS

  • 隐秘函数

41.56 顺序读写有格式文件,【Read语句,未知行数、列数】

  • 动态读取

44.44 顺序读写有格式文件,【Read语句,读取行的特定内容】

48.10 直接读取有格式文件,【直接读取方法的要求】

50.42 直接读取有格式文件,【Open,Read】

56.30 小结

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P11第 11 期 语法之文件读写(下),38:52

02.20 顺序读写无格式文件,【安全,十六进制编辑器查看二进制】

05.17 顺序读写无格式文件,【MiniHex】

07.55 顺序读写无格式文件,【…】

13.30 直接读写无格式文件,【…】

24.16 流文件读写无格式文件,【…】

29.50 读写无格式文件小结

30.29 其他问题,【字节序】

  • E5 一个字节,8位数bit

33.13 其他问题,【关于文件路径】

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P12第 12 期 语法之标准函数,43:37

01.55 标准函数的一般问题,【IVF帮助文档】

05.20 标准函数的一般问题,【很多语法函数并没有提供所有数据类型的版本】

06.15 标准函数的一般问题,【GenericName】

08.00 标准函数的一般问题,【逐元函数】

09.21 标准函数的一般问题,【关于优化】

12.40 数学数值函数,【类型转换】

14.25 数学数值函数,【一般数值函数,三角函数,其他数学函数,向量矩阵函数】

17.40 字符串和数组函数,【批量化处理,字符串函数】

  • 不同操作系统回车符不一样;

24.40 字符串和数组函数,【数组函数】

36.47 其他函数

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

fcode实用编程应用篇

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P1第 1 期 内部文件的使用,14:18

https://www.bilibili.com/video/BV114411b7My?p=1

01.47 内部文件,【read和write的内部文件定义】

  • read()和write()中第一个变量为字符串时,为内部文件;
  • read()和write()中第一个变量为整型时,为外部文件,通道号;

02.39 内部文件,【使用内部文件常见的错误】

03.19 内部文件,【使用内部文件设置数据的四种类型】

03.40 write内部文件,【AdjustL,TRIM】

06.36 write内部文件,【控制格式】

07.32 write内部文件,【控制格式+内部文件批量生成】

08.48 write内部文件,【控制格式+动态生成输出格式】

09.52 read内部文件,【控制格式+读取系统时间中的整数】

11.05 read内部文件,【控制格式+external属性+避免程序锁死】

13.14 内容回顾

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P2第 2 期 IDE 高级操作,58:24

https://www.bilibili.com/video/BV114411b7My?p=2

01.17 IDE与命令行,【编辑器+编译器+链接器+调试器,IDE】

04.32 IDE与命令行,【常见的命令行,ping,GUI,ifort】

09.30 IDE与命令行,【VS】

10.54 IDE与命令行,【工程管理】

13.41 IDE与命令行,【IVF和VS的关系】

15.08 IDE与命令行,【范例:ifort具体实现相关命令行】

VS的高级操作

VS对IVF的高级操作

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P3第 3 期 调试器的使用,40:32

00.45 什么是调试,【动态分析,debug调试,调试的定义,De-bug】

05.35 什么是调试,【调试的级次】

06.42 什么是调试,【运行时库】

无可用源:

09.35 gdb命令行调试,

10.20 gdb命令行调试,【范例】

VS窗口化测试

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P4第 4 期 静态库和动态库,48:05

https://www.bilibili.com/video/BV114411b7My?p=4

00.46 什么是lib和dll?【源代码分享】

03.35 什么是lib和dll?【静态链接库】

04.45 什么是lib和dll?【动态链接库】

05.48 什么是lib和dll?【lib和dll的比喻】

07.15 什么是lib和dll?【编译器中的lib和dll】

08.57 什么是lib和dll?【lib和dll各自的特点】

11.21 静态库的编译和使用【静态链接库,mod文件】

  • 不同编译器得到的mod文件可能不一样;
  • mod文件可以不包含执行语句,头文件;

14.38 静态库的编译和使用【命令行实现静态库范例,ar】

↓ 范例中3个文件,

↓编译2个函数文件,生成2个.o文件和一个.mod文件,

↓ 打包函数.o文件形成静态库,删除文件夹的.o文件

↓删除/更改mod文件名称,会报错,故不能更改.mod文件,

↓.mod文件内容,只有函数的接口,参数,内部实现是没有的,

↓主程序使用静态库,执行exe,可以删除静态库,exe独立了,

19.53 静态库的编译和使用【VS实现静态库范例】

24.30 动态库的编译和使用【编译过程,两种调用方法】

27.12 动态库的编译和使用【两种调用方法的特点】

29.22 动态库的编译和使用【命令行实现动态库范例,-shared】

↓ 范例中3个文件,

↓ 生成2个函数文件的动态链接库即一个.so文件,由于有有一个是module文件,还会生成一个.mod文件,

.so是linux下的动态链接库,

-shared 表示动态链接库,

-fPIC ?

↓ 使用动态链接库进行编译生成可执行文件,找不到动态链接库?添加环境变量,

↓ ldd查看可执行文件依赖的动态链接库(含运行时库),

↓将动态链接库进行改名,出错,

动态链接库和静态链接库的区别,

33.03 动态库的编译和使用【VS实现动态库范例(显示调用动态库)】

41.02 动态库的编译和使用【动态调用动态库(隐式调用动态库)】

fortran和c语言交互,

类似插件,

47.26 小结

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P5第 5 期 第三方函数库的使用,47:49

00.55 函数库的通常组成【具体函数库的使用不能完全照抄】

02.35 函数库的通常组成【函数库的内容】

  • include 类似c语言的头文件,f90会用到,

04.25 函数库的通常组成【函数库的原理,路径+文件名】

06.03 Linux下使用Lapack【Lapack函数库介绍和安装过程(后面具体操作)】

07.14 Linux下使用Lapack【一个示范代码求解Ax=b(后面具体操作)】

  • s代表单精度,d代双精度,c代表复数

08.33 Linux下使用Lapack【Lapack的安装过程(操作)】

10.18 Linux下使用Lapack【一个示范代码求解Ax=b(操作)】

↓ 直接编译会错误,因为路径问题,3种解决方法,

13.13 Linux下使用Lapack【gfortan -L】

14.48 IVF+VS使用IMSL【IMSL的介绍,闭源库,32和64位】

  • 付费?

  • 开源的编译器gfortran用不了

18.20 IVF+VS使用IMSL【IMSL的安装】

(具体看视频)…

(具体看视频)…

31.00 IVF+VS使用MKL

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

https://fcode.cn


Author: Jincan
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Jincan !
  TOC