<center>视频:fcode实用编程基础篇+应用篇</center>
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 特殊用法,【函数名作为参数】


x2和x3是传递的函数

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的继承,模块树】

=>改名字,从tv到screen,- 推荐,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的安装】


(具体看视频)…

(具体看视频)…

