<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的安装】
(具体看视频)…
(具体看视频)…