Skip to content

Commit a2591a5

Browse files
authored
Merge pull request #8 from zoziha/add_new
🚀0.1.0: 添加新手任务
2 parents 6eef25d + 792bfaf commit a2591a5

File tree

13 files changed

+117
-0
lines changed

13 files changed

+117
-0
lines changed

book.toml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
title = "现代Fortran程序设计"
33
authors = ["Fortran-Fans"]
44
desciption = "面向初学者的现代Fortran教程"
5+
version = "0.1.0"
56
language = "zh"
67
multilingual = false
78
src = "src"

src/SUMMARY.md

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
[现代Fortran程序设计](title-page.md)
44
[序言](preface.md)
55

6+
## 新手村任务
7+
8+
- [新手村任务](./新手村任务/README.md)
9+
- [查找两者之间最大的数](./新手村任务/task1.md)
10+
- [计算10的阶乘](./新手村任务/task2.md)
11+
- [根据半径求一个圆的面积](新手村任务/task3.md)
12+
613
## 基础语法
714

815
- [初识Fortran](ch01-00-getting-started.md)

src/src/新手村任务/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 介绍

src/src/新手村任务/task1.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 查找两者之间最大的数

src/新手村任务/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# 新手村任务介绍
2+
3+
为了提高学习编程的趣味性,我们提供了一个新手村任务,你可以在这里获得更多的经验,希望你会喜欢。
4+
5+
你如果想用在线编译器,可以使用[godbolt.org](https://godbolt.org/)编译本书示例代码。
6+
7+
<div align="center">
8+
<img src="newfish.jpg" alt="新手" width="300">
9+
</div>

src/新手村任务/newfish.jpg

24.9 KB
Loading

src/新手村任务/task1.f90

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
program main
2+
3+
integer a, b
4+
5+
write (*, '(a)', advance='no') "Enter two numbers: "
6+
read (*, *) a, b
7+
8+
write (*, '(a,i0)') "The maxium number is: ", max(a, b)
9+
10+
end program main

src/新手村任务/task1.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# 查找两者之间最大的数
2+
3+
查找两者之间最大的数,输入两个数,输出两者之间最大的数。
4+
5+
```fortran
6+
{{#include ./task1.f90}}
7+
```
8+
9+
**知识点:**
10+
11+
- `integer a`:变量、函数先声明后,再调用;
12+
- `max``max`是Fortran内置函数;
13+
- `advance='no'`:IO操作后,控制光标不换行;
14+
- `i0`:控制整型格式输出, 字宽由整型的长度决定。
15+
16+
还有一些知识,待之后再进一步了解。

src/新手村任务/task2.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# 计算10的阶乘
2+
3+
如何计算10的阶乘?
4+
5+
```fortran
6+
{{#include ./task2_1.f90}}
7+
```
8+
9+
**知识点:**
10+
11+
- `do`:三大流程控制之一,循环,记住这个一般形式。
12+
- `write(*,*)`:第一个`*`表示屏幕输出,第二个`*`表示默认输出格式(表控)。
13+
14+
我们还要另一种写法,利用内置函数`product`,Fortran有这180多个内置例程:
15+
16+
```fortran
17+
{{#include ./task2_2.f90}}
18+
```
19+
20+
**知识点:**
21+
22+
- `product`:内置函数,计算数组元素的乘积;
23+
- `[(i, i=1, 10)]`:这是一个隐式`do`循环,构造一维数组数据;
24+
- `::`:当声明变量时,变量有初始化值或其他属性,如可分配`allocatable`,则需要用`::`分隔。
25+
26+
还有一些知识,待之后再进一步了解。

src/新手村任务/task2_1.f90

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
program main
2+
3+
integer i, res
4+
5+
res = 1
6+
do i = 1, 10
7+
res = res*i
8+
end do
9+
10+
write (*, *) "Factorial of 10: ", res
11+
12+
end program main

src/新手村任务/task2_2.f90

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
program main
2+
3+
integer i
4+
integer :: ten(10) = [(i, i=1, 10)]
5+
6+
write (*, *) "Factorial of 10: ", product(ten)
7+
8+
end program main

src/新手村任务/task3.f90

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
program main
2+
3+
real :: PI = acos(-1.0)
4+
real r
5+
6+
write(*, "(a)", advance='no') "Enter the radius of the circle: "
7+
read(*, *) r
8+
9+
write(*, "(a,f6.2)") "The area of the circle is: ", PI*r**2
10+
11+
end program main

src/新手村任务/task3.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# 根据半径求一个圆的面积
2+
3+
从下节开始,难度将提高到2级,本节及之前的为1级。
4+
5+
```fortran
6+
{{#include ./task3.f90}}
7+
```
8+
9+
**知识点:**
10+
11+
- `PI = acos(-1.0)`:Fortran没有内置PI等物理常数,需要自己定义;
12+
- `r**2`:Fortran中的**幂指数次方**,需要用`x**n`表示;
13+
- `f6.2`:Fortran中的**浮点数**控制格式,`6`代表总宽,`2`代表小数位数。
14+
15+
还有一些知识,待之后再进一步了解。

0 commit comments

Comments
 (0)