1.18k likes | 1.37k Views
高一電腦. Pascal. 電腦教室使用規則. 請勿帶食物、飲料 ( 水 ) 等進入電腦教室。 教室外有餐桌供同學進食或暫放食物。牆上有抹布及清潔劑供同學使用後清潔桌面。 不得擅自更動或破壞電腦教室的設備或連線配置。 不得在電腦上玩任何遊戲。 不得使用即時通訊軟體。. 課程規劃. 第一學期分兩部份: 上半學期:每週兩節課,上程式設計。 下半學期:每週一節課,上電腦概論。 第二學期:電腦應用專題報告。. 鼓勵同學多講話. 講話要大聲講 講話的時機 心中有一些自己的想法 回答問題 看同學有無聽課 確認同學有無聽懂 引導同學思考 心中有疑問,聽不懂.
E N D
高一電腦 Pascal
電腦教室使用規則 • 請勿帶食物、飲料(水)等進入電腦教室。教室外有餐桌供同學進食或暫放食物。牆上有抹布及清潔劑供同學使用後清潔桌面。 • 不得擅自更動或破壞電腦教室的設備或連線配置。 • 不得在電腦上玩任何遊戲。 • 不得使用即時通訊軟體。
課程規劃 • 第一學期分兩部份:上半學期:每週兩節課,上程式設計。下半學期:每週一節課,上電腦概論。 • 第二學期:電腦應用專題報告。
鼓勵同學多講話 • 講話要大聲講 • 講話的時機 • 心中有一些自己的想法 • 回答問題 • 看同學有無聽課 • 確認同學有無聽懂 • 引導同學思考 • 心中有疑問,聽不懂
程式語言 • 語言分兩種: • 自然語言 • 中文、英文、法文….等 • 程式語言 • BASIC、C、C++、Java、Fortran、COBOL、Pascal、Prolog、Ada、Forth、LISP….
本課程所使用的語言 必須符合以下的原則: • 適合初學者 • 合適者:BASIC、Pascal • 不合適者:C、C++、Java • 有免費的編譯器 • Visual BASIC 無免費編譯器,學生用教育版每套約 NT$ 2,000。
C、C++ 版本 if (age>16) printf(“%s”, “You are safe for dating.”);else printf(“%s”, “You are too young to date.”);
Pascal 版本 if age > 16 then writeln (‘You are safe for dating.’)else writeln (‘You are too young to date.’);
Pascal 的編譯器 • Turbo Pascal ->Quick BASIC • Delphi ->Visual BASIC • Lazarus (拉撒路) (免費的) • www.lazarus.freepascal.org
Hello, World! • 指令格式:指令 (參數) • write 指令 • 中斷點 • writeln 指令 • 指令分隔字元: ; • 復習指令格式中參數的意義 • 存檔
作業1 • 到官方網站下載並安裝 Lazaruswww.lazarus.freepascal.org • 到 File / New 選 Project / Custom Program 並撰寫一個 Hello, World! 程式。
作業一定要做! • 作業不檢查,不算成績,但是一定要做! • 如果有作業,下一週就會有考試。 • 不做作業很容易被當。 • 作業不可以拖到上課前一天才寫,因為如果碰到困難就沒有時間解決。 • 作業一定要自已做,看懂別人寫的程式不代表自己會寫程式。 • 作業都有寫,問題都有解決,你不會被當!
老師的網頁 • http://ncmail.pcsh.tpc.edu.tw/~cpkuo • 或是到學校首頁的「親親我師」中去找我的名字 (郭兆平)。
運算符號 • 加法:+ • 減法:- • 乘法:* • 除法:div (商)mod (餘數)/ (小數)
運算子的優先順序 • 1 + 2 * 3 = 7(1 + 2) * 3 = 9 • 1 - 2 - 3 = -41 - (2 - 3) = 2 * 在 Pascal 中,不管有幾層,一律使用小括號 ()。
定義變數 • 語法:Var 變數名稱 : 資料型態 ; • Var 必須出現於 begin 之前,而不是 begin 與 end. 之間 • 程式一開始執行時,所定義的變數中的值為一個未知的值,而且每次執行時有可能會不同。所以在使用一個變數之前,都需要先給它一個值。
:= 指令 • := 指令的語法變數 := 值 (運算式) • := 指令會把其右側的「值」指定給其左側的「變數」 • 其目的就是要把「變數」「改成」其右側所指定的「值」
作業2 • x 代表一個 8 位數的統一發票號碼,請顯示這張發票號碼的倒數第 3 碼。 • 例如:若 x 為 12345678 則顯示 6 若 x 為 87654321 則顯示 3 • 參考程式: program last3; var x : integer; begin x := 12345678; writeln () end.
程式設計考試規則 • Open Book 考試 • 可以看筆記 (整本、非單張)、老師資料夾 • 考試中不得向他人借用任何資料 • 不得看他人的螢幕,答對的同學也不可以。 • 做出來的同學請舉手,如果答對了,老師會把視窗縮小,請勿打開、關閉或把答案刪掉。 • 如果答錯了,老師會說:「xx號同學繼續努力!」這時你應該要用更多不同的數據來測試你的程式。
考題1-1 • x 代表一個 8 位數的統一發票號碼,請顯示這張發票號碼,只是末 3 碼要改成 888。 • 例如:若 x 為 12345678 則顯示 12345888 若 x 為 87654321 則顯示 87654888 • 參考程式: program last3; var x : integer; begin x := 12345678; writeln () end.
考題1-2 • a, b 分別為兩個正整數,請顯示 a 除以 b 的商到小數點以下 2 位數。小數點以下第 3 位以後無條件捨去。 • 例如:若 a 為 11, b 為 4 則顯示 2.75 • 參考程式: program dec2; var a, b: integer; begin a := 11; b := 4; write (a div b, '.'); writeln (); end.
考題1-3 • x 代表一個電腦教室的座號,請顯示 x 所在那排的最前面座位 (排頭) 的座號。 • 若 x 為 13 則顯示 5若 x 為 24 則顯示 8 • 參考程式: program seat; var x : integer; begin x := 24; writeln () end.
考題1-4 • 電腦課要求同學要分組做期末報告,分組的方式為依座號順序,每 3 個人一組。如:1, 2, 3 一組,4, 5, 6 一組….。每組第一個人為組長。若 x 代表一個座號,請顯示 x 的組長的座號。 • 若 x 為 13 則顯示 13若 x 為 24 則顯示 22 • 參考程式: program head; var x : integer; begin x := 24; writeln () end.
考題1-5 • x 代表 2006 年 9 月的一個日期,請顯示那天是星期幾。0 代表星期日、1 代表星期一….以此類推。 • 若 x 為 13 則顯示 3若 x 為 24 則顯示 0 • 參考程式: program week; var x : integer; begin x := 24; writeln () end.
考題1-6 • a 代表電腦課在星期幾,b 代表今天星期幾。請算出下一次電腦課距離今天還有幾天。注意:0 代表星期日,1代表星期一….以此類推。如果今天就有電腦課,請顯示 0。 • 若 a 為 1,b 為 3,則顯示 5。若 a 為 5,b 為 2,則顯示 3。 • 參考程式: program days; var a : integer; {電腦課星期幾} b : integer; {今天星期幾} begin a := 1; b := 3; writeln () end.
考題1-7 • a, b 分別為兩個正整數,請顯示 a 除以 b 無條件進位後的商。 • 若 a 為 11, b 為 4 則顯示 3若 a 為 16, b 為 4 則顯示 4 • 參考程式: program roundup; var a, b: integer; begin a := 11; b := 4; writeln (); end.
Turbo Delphi 安裝程序 • 先忽略光碟自動執行的畫面。 • 先安裝以下的先備元件 (prerequisites): • \prereqs\dotNETRedist\dotnetfx.exe • \prereqs\dotNETSDK\setup.exe • \prereqs\dotNETJSharp\vjredist.exe • \prereqs\MSXML\msxml.msi • 將授權檔 \prereqs\reg736.txt 複製到「C:\Documents and Settings\(使用者名稱)\」子目錄下。
Turbo Delphi 安裝程序 • 回到光碟自動執行畫面,(或執行 \install.exe 檔案),選擇「Install Borland Turbo Delphi」。 • 按指示完成安裝程序。(所有選項都不用改變,以預設值進行安裝即可。)
開新檔案 在主選單上選 File / New / Other 在對話框上選 Console Application
第 1, 8, 10 行是 Pascal 語言必須的元素。 第 3 行是 Turbo Delphi 指定 Console 模式必須的指令。 第 5, 6, 9 行目前可以刪除。 program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end. 新增的程式內容 這行不能刪哦!
儲存檔案 • 儲存檔案的方法: • 在主選單上按 File / Save
Readln 指令 • Readln 用來從畫面上輸入資料。 • 當執行到 readln 指令,程式會停下來,等待使用者輸入。 • 使用者所輸入的資料會放在 readln 指令後面 ( ) 中所指定的變數中。 • 可以用 readln 指令來取代程式最後的中斷點。 • 注意:就像 := 的左邊只能放一個變數一樣,readln 的 ( ) 中也只能放變數,不能放運算式。
運算子 • 算術運算子 數 ◆ 數 → 數+, -, *, /, div, mod • 關係運算子 數 ◆ 數 → 邏輯值>, <, >=, <=, =, <>
資料型態 • 文字:string • 數字:integer, real • 邏輯值:boolean
if … then …敘述 • 語法:if 邏輯值then 敘述 ;或if 邏輯值then 敘述1 else 敘述2 ; • 以上語法也可表示成:if 邏輯值then 敘述1 [ else 敘述2 ];
運算子的優先順序 • 關係運算子的優先順序比算術運算子要低。
考題2-1 • 電腦課要求同學要分組做期末報告,分組的方式為依座號順序,每 3 個人一組。如:1, 2, 3 一組,4, 5, 6 一組….。輸入兩位同學的座號,判斷他們是否在同一組。 • 參考程式: program group; {$APPTYPE CONSOLE} var a, b: integer; begin write ('同學甲:'); readln (a); write ('同學乙:'); readln (b); writeln ('同組') writeln ('不同組'); readln; end.
考題 2-2 • 某公司舉辦「泰好康」抽獎活動,只要你的身分證號碼和七、八月的統一發票特獎號碼(50553673)最後一碼相同,就可以獲得免費泰國來回機票一張。請讓使用者輸入他身分證字號不含英文字母的後9碼,判斷他是否中獎。 • 參考程式: program thai; {$APPTYPE CONSOLE} var id: integer; begin write ('請輸入身分證號碼的後九碼:'); readln (id); writeln ('恭喜你,中了免費泰國來回機票一張!') writeln ('對不起,你沒中獎。'); readln; end.
考題 2-3 • 輸入一個座號,判斷該生是坐在電腦教室的左半邊或右半邊。 • 參考程式: program seat; {$APPTYPE CONSOLE} var x: integer; begin write ('請輸入座號:'); readln (x); writeln ('左側') writeln ('右側'); readln; end.
考題2-4 • 輸入 2006 年 10 月的任一日期,請判斷這天是上班日 (星期一 ~ 五) 或週休日 (星期六、日)。 • 參考程式: program work; {$APPTYPE CONSOLE} var x: integer; begin write ('請輸入日期:'); readln (x); writeln ('上班日') writeln ('週休日'); readln; end.
考題 2-5 • 右圖為某自強號車廂的座位配置。輸入一個座位號碼,請判斷該座位是靠窗或是靠走道。 • 參考程式 program seat; {$APPTYPE CONSOLE} var x: integer; begin write ('請輸入座位號碼:'); readln (x); writeln ('靠窗') writeln ('靠走道'); readln; end.
考題 2-6 • 輸入電腦教室的兩個座號,判斷他們是否坐在同一張桌子。 • 參考程式: program seat; {$APPTYPE CONSOLE} var x, y: integer; begin write ('請輸入座號:'); readln (x); write ('請輸入座號:'); readln (y); writeln ('同桌') writeln ('不同桌'); readln; end.
閏平年 • 閏平年的判斷是根據以下的規則: • 如果 y 不是 4 的倍數,是平年 (如 2006) • 如果 y 是 4 的倍數,而且不是 100 的倍數,是閏年 (如 2008) • 如果 y 是 100 的倍數,而且不是 400 的倍數,是平年 (如 2100) • 如果 y 是 400 的倍數,是閏年 (如 2000)
流程圖 (閏平年) if then y 不是 4 的倍數 else if then y 不是 100 的倍數 else 平年 if then y 不是 400 的倍數 else 閏年 平年 閏年
if 邏輯值 then 敘述 if 邏輯值 then 敘述 巢狀結構 • if 敘述中含有另一個 if 敘述。 if 邏輯值 then else
閏平年程式 (巢狀結構版) program leap1; {$APPTYPE CONSOLE} var y: integer; begin write ('請輸入一個西元年份:'); readln (y); if y mod 4 <> 0 then writeln ('平年') else if y mod 100 <> 0 then writeln ('閏年') else if y mod 400 <> 0 then writeln ('平年') else writeln ('閏年'); readln; end.
運算子 • 算術運算子 數 ◆ 數 → 數+, -, *, /, div, mod • 關係運算子 數 ◆ 數 → 邏輯值>, <, >=, <=, =, <> • 邏輯運算子 邏 ◆ 邏 → 邏輯值and, or, not • true and true → true • true and false → false