成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

通過寫“猜數(shù)字”游戲?qū)W習(xí) Fortran

開發(fā) 后端
Fortran 77 是我學(xué)習(xí)的第一門編譯型編程語言。一開始時,我自學(xué)了如何在 Apple II 上用 BASIC 編寫程序,后來又學(xué)會在 DOS 上用 QBasic 編寫程序。但是當我去大學(xué)攻讀物理學(xué)時,我又學(xué)習(xí)了 Fortran。
  • Fortran 是在打孔卡時代編寫的語言,因此它的語法非常有限。但你仍然可以用它編寫有用和有趣的程序。

Fortran 77 是我學(xué)習(xí)的第一門編譯型編程語言。一開始時,我自學(xué)了如何在 Apple II 上用 BASIC 編寫程序,后來又學(xué)會在 DOS 上用 QBasic 編寫程序。但是當我去大學(xué)攻讀物理學(xué)時,我又學(xué)習(xí)了 Fortran。

Fortran 曾經(jīng)在科學(xué)計算中很常見。曾幾何時,所有計算機系統(tǒng)都有一個 Fortran 編譯器。Fortran 曾經(jīng)像今天的 Python 一樣無處不在。因此,如果你是像我這樣的物理學(xué)專業(yè)學(xué)生,在 1990 年代工作,那你肯定學(xué)習(xí)了 Fortran。

[[427153]]

我一直認為 Fortran 與 BASIC 有點相似,所以每當我需要編寫一個簡短程序,來分析實驗室數(shù)據(jù)或執(zhí)行其他一些數(shù)值分析時,我都會很快想到 Fortran。我在空閑時用 Fortran 編寫了一個“猜數(shù)字”游戲,其中計算機會在 1 到 100 之間選擇一個數(shù)字,并讓我猜這個數(shù)字。程序會一直循環(huán),直到我猜對了為止。

“猜數(shù)字”程序練習(xí)了編程語言中的幾個概念:如何為變量賦值、如何編寫語句以及如何執(zhí)行條件判斷和循環(huán)。這是學(xué)習(xí)新編程語言時一個很好的的實踐案例。

Fortran 編程基礎(chǔ)

雖然 Fortran 這些年來一直在更新,但我最熟悉的還是 Fortran 77,這是我多年前學(xué)習(xí)的實現(xiàn)版本。Fortran 是程序員還在打孔卡上編程的年代創(chuàng)建的,因此“經(jīng)典” Fortran 僅限于處理可以放在打孔卡上的數(shù)據(jù)。這意味著你只能編寫符合以下限制條件的經(jīng)典 Fortran 程序(LCTT 譯注:后來的 Fortran 95 等版本已經(jīng)對這些限制做了很大的改進,如有興趣建議直接學(xué)習(xí)新版):

  • 每張卡只允許一行源代碼。
  • 僅識別第 1-72 列(最后八列,73-80,保留給卡片分類器)。
  • 行號(“標簽”)位于第 1-5 列。
  • 程序語句在第 7-72 列。
  • 要表示跨行,請在第 6 列中輸入一個連續(xù)字符(通常是 +)。
  • 要創(chuàng)建注釋行,請在第 1 列中輸入 C 或 *。
  • 只有字符 A 到Z(大寫字母)、0 到9(數(shù)字)和特殊字符 = + - * / ( ) , . $ ' : 和空格能夠使用。

雖然有這些限制,你仍然可以編寫非常有用和有趣的程序。

在 Fortran 中猜數(shù)字

通過編寫“猜數(shù)字”游戲來探索 Fortran。這是我的實現(xiàn)代碼:

  1. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
  2. C     PROGRAM TO GUESS A NUMBER 1-100 
  3. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
  4.       PROGRAM GUESSNUM 
  5.       INTEGER SEED, NUMBER, GUESS 
  6.       PRINT *, 'ENTER A RANDOM NUMBER SEED' 
  7.       READ *, SEED 
  8.       CALL SRAND(SEED) 
  9.       NUMBER = INT( RAND(0) * 100 + 1 ) 
  10.       PRINT *, 'GUESS A NUMBER BETWEEN 1 AND 100' 
  11.  10   READ *, GUESS 
  12.       IF (GUESS.LT.NUMBER) THEN 
  13.          PRINT *, 'TOO LOW' 
  14.       ELSE IF (GUESS.GT.NUMBER) THEN 
  15.          PRINT *, 'TOO HIGH' 
  16.       ENDIF 
  17.       IF (GUESS.NE.NUMBER) GOTO 10 
  18.       PRINT *, 'THATS RIGHT!' 
  19.       END 

如果你熟悉其他編程語言,你大概可以通過閱讀源代碼來弄清楚這個程序在做什么。前三行是注釋塊,表示程序的功能。第四行 PROGRAM GUESSNUM 將其標識為一個 程序program,并由最后一行的 END 語句關(guān)閉。

定義變量后,程序會提示用戶輸入隨機數(shù)種子。Fortran 程序無法從操作系統(tǒng)初始化隨機數(shù)生成器,因此你必須始終使用“種子”值和 SRAND 子程序subroutine 啟動隨機數(shù)生成器。

Fortran 使用 RAND(0) 函數(shù)生成 0 到 0.999…… 之間的隨機數(shù)。參數(shù) 0 告訴 RAND 函數(shù)生成一個隨機數(shù)。將此隨機數(shù)乘以 100 以生成 0 到 99.999…… 之間的數(shù)字,然后加 1 得到 1 到 100.999…… 之間的值。INT 函數(shù)將結(jié)果截斷為整數(shù);因此,變量 NUMBER 就是一個介于 1 到 100 之間的隨機數(shù)。

程序會給出提示,然后進入一個循環(huán)。Fortran 不支持更現(xiàn)代的編程語言中可用的 while 或 do-while 循環(huán)(LCTT 譯注:Fortran 95 等新版支持,也因此在一定程度上減少了 GOTO 的使用)。相反,你必須使用標簽(行號)和 GOTO 語句來構(gòu)建自己的循環(huán)。這就是 READ 語句有一個行號的原因:你可以在循環(huán)末尾使用 GOTO 跳轉(zhuǎn)到此標簽。

穿孔卡片沒有 <(小于)和 >(大于)符號,因此 Fortran 采用了另一種語法來進行值比較。要測試一個值是否小于另一個值,請使用 .LT.(小于)。要測試一個值是否大于另一個值,請使用 .GT.(大于)。等于和不等于分別是 .EQ. 和 .NE.。

在每次循環(huán)中,程序都會驗證用戶的猜測值。如果用戶的猜測值小于隨機數(shù),程序打印 TOO LOW,如果猜測大于隨機數(shù),程序打印 TOO HIGH。循環(huán)會一直持續(xù),直到用戶的猜測值等于目標隨機數(shù)為止。

當循環(huán)退出時,程序打印 THATS RIGHT! 并立即結(jié)束運行。

  1. $ gfortran -Wall -o guess guess.f 
  2. $ ./guess 
  3.  ENTER A RANDOM NUMBER SEED 
  4. 93759 
  5.  GUESS A NUMBER BETWEEN 1 AND 100 
  6. 50 
  7.  TOO LOW 
  8. 80 
  9.  TOO HIGH 
  10. 60 
  11.  TOO LOW 
  12. 70 
  13.  TOO LOW 
  14. 75 
  15.  TOO HIGH 
  16. 73 
  17.  TOO LOW 
  18. 74 
  19.  THATS RIGHT

每次運行程序時,用戶都需要輸入不同的隨機數(shù)種子。如果你總是輸入相同的種子,程序給出的隨機數(shù)也會一直不變。

在其他語言中嘗試

在學(xué)習(xí)一門新的編程語言時,這個“猜數(shù)字”游戲是一個很好的入門程序,因為它以非常簡單的方式練習(xí)了幾個常見的編程概念。通過用不同的編程語言實現(xiàn)這個簡單的游戲,你可以弄清一些核心概念以及比較每種語言的細節(jié)。

你有最喜歡的編程語言嗎?如何用你最喜歡的語言來編寫“猜數(shù)字”游戲?跟隨本系列文章來查看你可能感興趣的其他編程語言示例吧。

責任編輯:未麗燕 來源: Linux中國
相關(guān)推薦

2023-02-23 14:30:27

游戲Tcl

2023-02-13 08:26:28

猜數(shù)字Basic

2021-01-12 06:42:50

Lua腳本語言編程語言

2022-06-03 16:59:13

編程語言Awk

2023-01-13 18:55:09

游戲Ada編程語言

2019-09-23 09:11:02

Python文本編輯器操作系統(tǒng)

2020-12-28 06:29:31

Bash互動游戲Linux

2015-09-29 09:38:50

Java程序猜大小

2020-12-09 11:42:18

WiFi IoT鴻蒙開發(fā)

2021-01-19 09:35:36

Python視頻游戲編程語言

2021-04-22 09:57:37

Random方法游戲

2021-04-13 06:35:13

Elixir語言編程語言軟件開發(fā)

2011-07-28 15:07:23

iOS猜數(shù)游戲

2021-09-08 08:36:50

ncursesLinux猜謎游戲

2023-09-08 10:50:24

Tcl/TkWish

2012-03-28 22:12:00

游戲

2012-03-26 15:08:22

我畫你猜

2021-01-03 16:30:34

Rust編程語言

2021-01-14 08:55:20

C語言編程

2015-03-24 19:48:24

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 偷拍自拍网 | 国产一区二区在线视频 | 国产露脸国语对白在线 | 波多野结衣二区 | 久久欧美精品 | 亚洲视频欧美视频 | 欧美日韩国产在线观看 | 国产在线视频一区二区董小宛性色 | 久久久久91| 亚洲欧美一区二区三区视频 | 综合精品久久久 | 国产成人综合在线 | www.97zyz.com | 日韩精品一区二区三区中文字幕 | 日韩区 | 国产最新精品视频 | 最新中文字幕一区 | 人操人免费视频 | 91直接看 | 日韩国产一区二区三区 | 成年免费大片黄在线观看岛国 | 国产精品久久国产精品99 | 亚洲综合三区 | 精品日韩一区二区 | 精品一区二区三区在线视频 | 97久久久久久久久 | 成人国产在线视频 | 国产精品色综合 | 欧美福利| 91亚洲一区| 国外成人在线视频网站 | 久久大陆| 日韩精品一区二区三区在线 | 精品久久久久久久久久久久 | 亚洲国产高清高潮精品美女 | 亚洲人成在线播放 | 97精品久久 | 日韩视频一区 | 精品一二三区 | 欧美日韩一区二区三区不卡视频 | 日本 欧美 三级 高清 视频 |