Chapter 3 輸出入及宣告.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

这是一个数字的 乐园 这里埋藏着丰富的 宝藏 请跟我一起走进数学的 殿堂.
FORTRAN 語言簡介 By 陳鯨太.
Chapter 4 流程控制.
第十二单元 第28讲 第28讲 古代中国的科技和文艺   知识诠释  思维发散.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
資料結構使用Java 第1章 資料結構與Java程式複習.
題目:十六對一多工器 姓名:李國豪 學號:B
Chapter 5 迴圈.
Chapter 7 Subroutine and Function
Instructor:Po-Yu Kuo 教師:郭柏佑
Chapter 模組 台灣師範大學數學系 黃聰明.
第十一章 結構.
第2章 Fortran程序设计基础.
Visual C++ introduction
2-3 基本數位邏輯處理※.
Chen Yi Fen The C Language Chen Yi Fen
第3章 變數、資料型別與運算子.
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
Java程式概觀.
生物資訊程式語言應用 Part 3 Perl Language.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
笫11章指针 指针是现代程序设计语言中一个非常重要的概念,它使语言的功能大大加强。FORTRAN90以前的FORTRAN版本,没有指针这种数据类型,FORTRAN90对其作了重大改进,引入了指针的概念。但是值得注意的是,FORTRAN90的指针与C语言中的指针并不相同,因为它并不代表一个变量的地址,而是代表一个变量的别名,实质上它相当于C++里的引用,本章介绍指针的概念与应用。
Chapter 2 Basic Elements of Fortran
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
新觀念的 VB6 教本 第 6 章 資料型別.
Java 程式設計 講師:FrankLin.
第4章 常量和变量 常量和变量都是程序中预留的用于保存数据的内存空间。常量的值在程序运行过程中始终不会发生变化。而变量的值在程序的运行过程中是可以变化的。在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)。按用途,又可以分数值型、字符型和逻辑型三种。相应的常量和变量也可以分为这三种。本章将按照用途介绍常量和变量的基本概念。
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
編譯程式設計 期末專題說明 V1.1 May 2004.
第一單元 建立java 程式.
Ch20. 計算器 (Mac 版本).
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
網路安全管理報告 緩衝區溢位攻擊 學生:吳忠祐 指導教授:梁明章.
Chapter 指標.
Instructor:Po-Yu Kuo 教師:郭柏佑
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
Introduction to C Programming
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
如何使用Gene Ontology 網址:
第14章 基本数值算法举例 数值计算是Fortran语言的强项,也是Fortran语言发明者的初衷。本节主要介绍在计算机程序设计语言学习中经常遇到的一些基本数值算法。目的在于加深对Fortran语言的理解和分析,解决问题的一般思路,并希望通过这些例程介绍一些代码编写方面的技巧。
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
陣列與結構.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
變數與資料型態  綠園.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
博碩書號:PG20266 變數 第3章 博碩文化出版發行.
1757: Secret Chamber at Mount Rushmore
資料表示方法 資料儲存單位.
Programming & Language Telling the computer what to do
第三章 Arduino互動程式設計入門 Arduino程式基礎 認識變數 認識數字系統 認識常數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Array(陣列) Anny
Fortran 实用编程 系列视频教程 Fortran Coder 研讨团队
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Chapter 3 輸出入及宣告

1 write, print輸出敘述 < Ex. 完整程式> < Ex. 執行結果> program main write(*,*) "hello, world!" stop end program main < Ex. 執行結果> hello, world! 印出的字串要用" "框起來

1 write, print輸出敘述 程式說明 write (*,*) "hello, world!" 填入數字或*:輸出的位置 6或*表示輸出的位置使用內定值(也就是螢幕) 填入數字或*:輸出的格式 *表示不特別設定輸出的格式

1 write, print輸出敘述 完整寫法 print寫法(只印在螢幕上) write (unit = *, FMT = *) "hello, world" print寫法(只印在螢幕上) print *, "hello, world" 填入數字或*:輸出的格式 *表示不特別設定輸出的格式

2 宣告(Declaration) 在程式當中,程式設計師要問電腦的作業系統,要求電腦的記憶體中,預留一個存放程式進行所需要資料的空間 < Ex. 完整程式> program ex0301 implicit none integer :: A real :: B character(len=1) :: C logical :: D A = 1 B = 1.0 C = 'c' D = .TRUE. write(*,*) "A=",A,"B=",B,"C=",C,"D=",D stop end program ex0301 < Ex. 執行結果> A= 1 B= 1.0 C=cD= T 在程式當中,程式設計師要問電腦的作業系統,要求電腦的記憶體中,預留一個存放程式進行所需要資料的空間

2 宣告(Declaration) 不同資料型態的宣告 integer integer :: A 宣告一個叫做A的整數變數 < Ex. 完整程式> program ex0302 implicit none integer :: A A = 2+2*4-3 write(*,*) "2+2*4-3=",A stop end program ex0302 < Ex. 執行結果> 2+2*4-3= 7 以2+2*4-3計算結果來設定變數A的數值 印出變數A的值

2 宣告(Declaration) integer :: A,B,C 宣告A,B,C皆為整數變數 integer (kind=2) :: A使用兩個位元組來記錄一個整數 integer (kind=4) :: A使用四個位元組來記錄一個整數 <Note> 省略(kind)敘述時,會以(kind = 4)為integer型態的內定值 整數變數小數點的部份無條件忽略 < Ex. 程式片段> integer :: A A=3/2 write(*,*)A A=1/2 < Ex. 執行結果> 1

2 宣告(Declaration) real real :: a 宣告一個叫做a的單精確度浮點數變數 real (kind=4) :: a 宣告一個叫做a的單精確度浮點數變數 real (kind=8) :: a 宣告一個叫做a的雙精確度浮點數變數 <Note> 省略(kind)敘述時,會以(kind = 4)為real型態的內定值 電腦在儲存浮點數時,都會先把它轉成以指數來表示的科學符號型式,其中可儲存6位小數。 <Ex.> 12345 → 1234567 →

2 宣告(Declaration) < Ex. 完整程式> < Ex. 執行結果> program ex0303 implicit none real :: a, b a = 10000.0 b = 0.0001 write (*,*) a,"+",b,"=",a + b stop end program ex0303 < Ex. 執行結果> 10000.0 + 1.0E-4 = 10000.0 < Ex. 完整程式>

2 宣告(Declaration) complex complex :: a宣告一個叫做a的單精確度複數變數 complex (kind=4) :: a 宣告一個叫做a的單精確度複數變數 complex (kind=8) :: a 宣告一個叫做a的雙精確度複數變數 <Note> 設定複數變數的數值 a = (x,y) 其中x為實部,y為虛部。 省略(kind)敘述時,會以 (kind = 4)為complex型態 的內定值。 複數變數在儲存時,其實 是以兩個浮點數的資料型 態儲存,因此以(kind = 4) 的複數變數必須需要4*2=8 byte來儲存。 < Ex. 程式片段> complex :: a a=(3.2,2.5) write(*,*) a < Ex. 執行結果> (3.2,2.5)

2 宣告(Declaration) character character (len = 1) :: a character (1) :: a character*1 :: a character (len = 80) :: a character (80) :: a character*80 :: a 宣告一個叫做a的字元變數 宣告一個叫做a的字元變數 字串長度為80個字元 <Note> 設定字元變數的數值 a = " xxx " 或 a = ' xxx ' < Ex. 程式片段> character (20) :: a a= "hello, world" write(*,*) a < Ex. 執行結果> hello, world

2 宣告(Declaration) logical logical :: a宣告一個叫做a的邏輯變數 <Note> 設定邏輯變數的數值只有 a = .TRUE.(真值)或 a = .FALSE.(假值) < Ex. 程式片段> logical :: a,b a = .TRUE. b = .FALSE. write(*,*) a,b < Ex. 執行結果> T F

2 宣告(Declaration) 使用變數名稱之原則 變數的名稱以英文字母為原則,可以內含下底線(_)及數字,但不能以數字來起頭。 變數名字的長度,只有前31個字元有效。 變數的名稱不能和Fortran的執行指令同名。 程式中辨認變數時,不會區分它的大小寫。 變數名稱最好具有意義,可提高程式可讀性。

3 read 輸入敘述 < Ex. 完整程式> < Ex. 執行結果> program ex0304 integer :: A real :: B write (*,*) "Please input a (integer) number:" read (*,*) A write (*,*) "Please input a (real) number:" read (*,*) B write (*,*) A, B stop end program ex0304 < Ex. 執行結果> Please input a (integer) number: 120 <輸入 1 2 0 [ENTER] > Please input a (real) number: 0.25 <輸入 0 . 2 5 [ENTER] > 120 0.25

3 read 輸入敘述 程式說明 read (*,*) A 填入數字或*:輸入的格式 *表示不特別設定輸入的格式 填入數字或*:輸入的位置 5或*表示輸入的位置使用內定值(也就是鍵盤) 填入數字或*:輸入的格式 *表示不特別設定輸入的格式

3 read 輸入敘述 完整寫法 多變數輸入 read (unit = *, FMT = *) A 在變數間以空格( )或逗號(,)隔開 program ex0305 integer :: A,B,C read (*,*) A,B,C write (*,*) A,B,C stop end program ex0305 < Ex. 執行結果> 1 23 456 <輸入 1 [SPACE] 2 3 [SPACE] 4 5 6 [ENTER] > 1 23 456 或 1,23,456 <輸入 1 , 2 3 , 4 5 6 [ENTER] > 1 23 456 < Ex. 完整程式>

4 格式化輸出入 (Format) < Ex. 完整程式> < Ex. 執行結果> program main write(*,100) "hello" 100 format(A10) stop end program main < Ex. 執行結果> □□□□□hello < □表空格> 可合併寫成write(*,’(A10)’)”hello”

4 格式化輸出入 (Format) 重要格式控制敘述 Ap 以p個字元寬來輸出字串。 Dp.q 以p個字元的寬度來輸出指數型態的浮點數,小數部分佔q個字元寬 。(p≧q+7) < Ex. 程式片段> write(*,'(A10)')"hello" < Ex. 執行結果> □□□□□hello 10 < Ex. 程式片段> write(*,'(D15.7)')123.45 < Ex. 執行結果> □□0.1234500D+03 15 7

4 格式化輸出入 (Format) 重要格式控制敘述 Ep.q 以p個字元的寬度來輸出指數型態的浮點數,小數部分佔q個字元寬。 (p≧q+7) Fp.q 以p個字元的寬度來輸出浮點數,小數部分佔q個字元寬。 < Ex. 程式片段> write(*,'(E15.7)')123.45 < Ex. 執行結果> □□0.1234500E+03 15 7 < Ex. 程式片段> write(*,'(F8.4)')123.45 < Ex. 執行結果> 123.4500 8 4

4 格式化輸出入 (Format) 重要格式控制敘述 Ip 以p個字元的寬度來輸出整數。 Lp 以p個字元的寬度來輸出T或F的真假值。 5 pX 把輸出的位置向下跳過p個位置,配合其他格式使用。 < Ex. 程式片段> write(*,'(I5)')100 < Ex. 執行結果> □□100 5 < Ex. 程式片段> write(*,'(L5)') .TRUE. < Ex. 執行結果> □□□□T 5 < Ex. 程式片段> write(*,'(5X,I3)') 100 < Ex. 執行結果> □□□□□100 5

4 格式化輸出入 (Format) 格式化輸出入其他注意事項 欄位不足,會輸出*。 格式化輸出入可混合使用,也可以插入字串。 簡略寫法 write(*,'( 3(2X, F5.2) )') A, B, C ≡ write(*,'( 2X, F5.2, 2X, F5.2, 2X, F5.2 )') A, B, C 合併寫法 < Ex. 程式片段> write(*,'(I3)')10000 < Ex. 執行結果> *** < Ex. 程式片段> write(*,'(1X,"Ans=",I3)')10 < Ex. 執行結果> □Ans= □10 ≡ write(*, '(1X, "You are ", I4, "years old. " )') AGE write(*,100) AGE 100 format( 1X,"You are ", I4,"years old. " )

5 宣告的其它補述 implicit內定型態 implict implict integer (A-F, I, K) 第一個字母為I,J,K,L,M,N的變數內定成整數型態,其它的變數則 被當成浮點數來使用。 implict integer (A-F, I, K) 把A到F開頭及I, K開頭的變數都當成整數。 把F到K開頭的變數都當成浮點數。 把“內定型態“的功能關閉。

5 宣告的其它補述 parameter常數宣告 < Ex. 完整程式> < Ex. 執行結果> program ex0307 implicit none real, parameter :: pi = 3.14159 write(*,'(1X,A10,F5.2)') 'sin(pi/6)=', sin(pi/6.0) stop end program ex0307 < Ex. 執行結果> sin(pi/6)= 0.50 < Ex. 完整程式>

5 宣告的其它補述 parameter常數宣告 real, parameter :: pi = 3.14159 常數必須給予初始值 否則沒有功用

5 宣告的其它補述 設定變數的初值 < Ex. 完整程式> < Ex. 執行結果> program ex0308 implicit none integer :: a = 1 real :: b = 1.0 complex :: c = (1.0, 1.0) character(len=1) :: d = 'A' logical :: e = .TRUE. write (*,'(I3,TR1,F4.2,TR1,(F4.2,TR1,F4.2),A2,L3)') a,b,c,d,e stop end program ex0308 < Ex. 完整程式> < Ex. 執行結果> 1 1.00 1.00 1.00 A T

5 宣告的其它補述 宣告在程式中的結構 < Ex. 完整程式> < Ex. 執行結果> program ex0309 implicit none integer :: A = 2, B = 1 real :: C C = B / A write(*,*) C stop end program ex0309 < Ex. 完整程式> 0.0E+0 < Ex. 執行結果> 程式開始→ 主程式碼  程式結束→ 主程式碼結束→ ←implicit要放在宣告的最前端 開始變數宣告 主程式敘述區 必須先將整數型態轉換成浮點數型態,才能算出0.5的值 C=real(B)/real(A)

5 宣告的其它補述 自訂資料型態 < Ex. 完整程式> <接右> program ex0310 implicit none type :: person character(len=30) :: name integer :: age integer :: length integer :: weight character(len=80) ::address end type person type(person) :: a < Ex. 完整程式> write(*,*) 'Input his(her) name:' read(*,*) a% name write(*,*) 'Input his(her) age:' read(*,*) a% age write(*,*) 'Input his(her) body length:' read(*,*) a% length write(*,*) 'His(her) name is ', a% name write(*,*) 'His(her) age is ', a% age stop end program ex0310 <接右>

5 宣告的其它補述 自訂資料型態 type :: person character(len=30) :: name … end type person type(person) :: a read(*,*) a% name 開始宣告一個叫做 "person"的資料型態 自訂資料型態結束 < Ex. 執行結果> Input his(her) name: Tom <輸入 T o m [ENTER] > Input his(her) age: 15 <輸入 1 5 [ENTER] > Input his(her) body length: 170 <輸入 1 7 0 [ENTER] > His(her) name is Tom His(her) age is 15 使用自訂資料型態宣告變數 使用自訂資料型態的變數

5 宣告的其它補述 自訂資料型態初始化 a = person("Tom", 15, 170, 60, "Taipei") type a%nam a%lenth a%address a%age a%weight

5 宣告的其它補述 module模組 < Ex. 執行結果> < Ex. 完整程式> <接右> 產生 constants.mod vars.mod 兩個模組檔 PI = 3.14159 G = 9.81 2 PI = 6.28318 < Ex. 執行結果> module模組 module constants implicit none real, parameter :: pi= 3.14159 real, parameter :: g = 9.81 end module constants module vars real :: pi_2 end module vars < Ex. 完整程式> program ex0312 use constants use vars write(*,*) 'PI = ', pi write(*,*) 'G = ', g pi_2 = 2.0* pi write(*,*) '2 PI = ', pi_2 stop end program ex0312 <接右>

5 宣告的其它補述 module模組 module constants implicit none … end module constants program ex0311 use constants 自訂一個叫做“constants”的module區塊 在程式一開始宣告要使用那個模組,之後在程式中就可以使用模組的內容。

5 宣告的其它補述 module模組 < Ex. 完整程式> <接下頁> module typedef implicit none type :: person character(len=30) :: name integer :: age real :: length real :: weight end type person end module typedef < Ex. 完整程式> <接下頁> 自訂一個module區塊 在module內宣告一個叫做“person”的自訂資料型態

5 宣告的其它補述 module模組 < Ex. 執行結果> < Ex. 完整程式> 產生typedef.mod的模組檔 Input his name: Tom <輸入 T o m [ENTER] > Input hes age: 15 <輸入 1 5 [ENTER] > Name :Tom Age : 15 program ex0311 use typedef type(person) :: a write(*,*) 'Input his name:' read(*,'(A30)') a%name write(*,*) 'Input hes age:' read(*,*) a%age write(*,'(1X, A12, A20)') 'Name :', a%name write(*,'(1X, A12, I6)') 'Age :', a%age stop end program ex0311 < Ex. 完整程式> 使用模組後就可以使用模組內的自訂資料型態來宣告

5 宣告的其它補述 kind 的使用 在PC上資料型態宣告變數可儲存值的範圍 integer(kind=1) -127~127 real(kind=4) ~ real(kind=8) ~

5 宣告的其它補述 kind 的使用 selected_int_kind(p) selected_real_kind(p,q) 傳回記錄p位整數時,所應宣告的kind值。 selected_real_kind(p,q) 傳回記錄p位有效位數,指數達到q的浮點數所需的kind值。 增加程式碼"跨平台"能力

5 宣告的其它補述 kind 的使用 < Ex. 完整程式> <接下頁> module kind_var implicit none integer, parameter :: long_int=selected_int_kind(9) integer, parameter :: short_int=selected_int_kind(3) integer, parameter :: long_real=selected_real_kind(10,50) integer, parameter :: short_real=selected_real_kind(3,3) end module kind_var < Ex. 完整程式> <接下頁>

5 宣告的其它補述 kind 的使用 < Ex. 完整程式> < Ex. 執行結果> program ex0313 use kind_var implicit none integer(kind=long_int) :: a=12345678 integer(kind=short_int) :: b=12 real(kind=long_real) :: c=1.23456789D45 real(kind=short_real) :: d=1230 write(*,'(I10)') a write(*,'(I10)') b write(*,'(E15.5)') c write(*,'(E15.5)') d stop end program ex0313 < Ex. 完整程式> kind 的使用 kind=4 kind=2 kind=8 < Ex. 執行結果> 產生kind_var.mod的模組檔 12345678 12 0.12346E+46 0.12300E+04 kind=4