程式语言教学讲义_第1页
程式语言教学讲义_第2页
程式语言教学讲义_第3页
程式语言教学讲义_第4页
程式语言教学讲义_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、卞卞卞中卞宁卞屮卞卞卒卞中卞宁卞卞卞卞宁卞卒TtF* tttFtF*程式語言教學講義-進階挑戰篇f 朱 卞 F* 卞tttfft?SFiFf?IF*iF *ttSF-?SF-tF-?IF-ftt?IF單元一重複結構:for壹、觀念介紹條件結構(ifelse)執行程式敘述一次,就是上課提過的偶爾出現。重複結構:重複結構可以重複執行某一段程式好幾遍,直到條件的不成立才跳 出這個循環。先前我們教過的while就屬於這類型。今天我們要介紹新的重複結構:forFor的用法附註:1. for中的主要敘述,要用完整的上下大括號”和”包起來。2. 使用for迴圈可以省去使用counter(計數器)的麻煩,以下

2、範例將讓同學體會。3. 因為同屬重複結構,while 迴圈都可以用for迴圈改寫。貳、操作範例【範例1-1】(檔名:Ex1-1.java)先前我們學到的while結構,可以幫助我們解決以下問題,程式解法如下:使用while結構,讓使用者輸入某位同學的8科成績後,程式能自動計算總分。7: /*程式開女台 */8:int score ;9:int sum = 0;10:int count = 0;11:while(cou nt8)12:System.out.pri ntl n(”請輸入成績:);13:score = In teger.parse In t(i nput.readL in e();1

3、4:sum = sum + score;15:count = count + 1;16:17:System.out.pri ntl n (”總分為:+sum+分);18 /*程式結束 */現在我們要使用for結構改寫以上的while範例使用for結構,讓使用者輸入某位同學的 8科成績後,程式能自動計算總分。【範例1-1】程式碼8:int score ;9:int sum = 0;10:11:for(int i=0 ; i0; i-)System.out.pr intln(”請猜數字(120):);guess = In teger.parse In t(i nput.readL in e();

4、if (an swer != guess)System.out.println(Sorry你猜錯了 );elseSystem.out.println(恭喜你猜對了 );i=0;System.out.pri ntl n(*程式結束);程式結束*/【課堂筆記】【習題2】(檔名:Ex1Hw2.java)計算五個等差數列的總和:請寫一個程式讓使用者輸入等差數列的 首項及公差,程式會自動印出五個數列的內容。 程式範例如右下圖所示附註:如果在一數列中,任意相鄰兩項的後面的項減去前面的項所得的差都是一樣,就稱此數列 為等差數列,並稱所得的差為公差。通常以d代表公差,耳代表首項,an代表第n項。a1 =首項a

5、n =印 +(n-1)*d;【習題2】程式碼/*程式開女台double a, d, num=0;System.out.println(請輸入首項); a = Double.parseDouble(i nput.readL in e();System.out.println(請輸入公差);d = Double.parseDouble(i nput.readL in e();System.out.pri ntln (5 個等差數列為:程式範例請輸入首項:3請輸入公差:45個等差數列為:3.07.0 */11.015.019.0I!);for(i nt n=1 ; n=5; n+)num=a+( n

6、-1)*d; System.out.pr intln(nu m);/*程式結束 */【課堂筆記】【習題3】(檔名:Ex1Hw3.java)計算N個等差數列的總和:請寫一個程式:1. 讓使用者輸入等差數列總共有幾項2. 讓使用者輸入等差數列的 首項及公差3. 程式會自動印出五個數列的內容,並計算總和程式範例請輸入等差數列總共有幾項4請輸入首項2請輸入公差54個等差數列為:2.0/*程式開女台double a, d, N, num=0,sum=0;System.out.pri ntl n(請輸入等差數列總共有幾項N = Double.parseDouble(i nput.readL in e();

7、System.out.println(請輸入首項);:7.0水*12*0*/17.022.027.O等差數列的總和為:87.0【習題3】程式碼a = Double.parseDouble(i nput.readL in e(); System.out.println(請輸入公差);d = Double.parseDouble(i nput.readL in e(); System.out.pri ntl n(N+個等差數列為:);for(i nt n=1 ; n二N; n+) num=a+( n-1)*d; System.out.pr intln(nu m);for(i nt n=1 ; n二

8、N; n+) sum=sum+(a+( n-1)*d);System.out.pri ntl n(”等差數列的總和為:+ sum );*程式結束 *【課堂筆記】單元二陣列先前我們學過了變數的概念。 變數:用來存放會變動的數值或字串。但變數宣告有時會出現以下問題,我們先進行以下範例:【教師範例1】請寫程式讓使用者分別輸入並儲存八科成績,之後再印出各科成績。你會怎麼寫這個程式呢?【教師範例1】程式碼請教師視課堂時間足夠與否進行,可以教師直接示範或讓學生親身體驗恐怖冗長的程式碼請輸入第一科成績”請輸入第二科成績”請輸入第三科成績”請輸入第四科成績” .你的第一科成績是”你的第二科成績是”你的第三科成

9、績是”你的第四科成績是” 【教師範例2】請寫程式讓使用者分別輸入並儲存八科成績,計算平均後,輸出大於平均的科目有哪幾科【教師範例2】程式碼請教師視課堂時間足夠與否進行,可以教師直接示範或請學生體驗 (程式太長了 本頁放不下,直接用超連結檔案的方式)打開程式範例檔你發現以上程式的問題了嗎?悯丿王戎两其實我們可以用另一種方法儲存資料那如果今天你有很多筆資诽斗要存放呢?我們可以使用 陣列就像在 電腦裡放一個檔 案櫃*把要存放 的資料一筆-筆 地存到對應的抽 屜裡。變數就像足在電腦裡創造一個盘 子1盒內可放任意物品-但規則 是禽內只能放一樣物品。在程式中,我們往往需要處理大量的資料,為避免宣告上的麻煩

10、,我們以陣列(array)的方式來儲存與使用資料。陣列(array):就是多個擁有相同名稱且相同類型的變數集合 當需要一個空的陣列時,你可以這樣宣告:int| a = new int4;當需要有內容的陣列時,你可以這樣宣告:doubled a = 1.2, 2.3, 3.8, 4.6,51;使用陣列的優點:1. 不用宣告多次。2.使用方便,可用迴圈控制。請教師記得講述陣列是從0開始,宣告八個陣列時,是0叫7,而不是18,所以當需要 存8個資料時,為了方便理解,我們會宣告陣列大小為9, 0讓它浪費掉。現在我們就用陣列來重寫以上兩個範例。【範例2-1】(檔名:Ex2-1.java)【教師範例2】的

11、改寫:請寫程式讓使用者分別輸入並儲存八科成績,計算平均後,輸出大於平均的科目有哪幾科【範例2-1】程式碼程式開始*/第+ n +科大於平均);程式結束*/double score = new double9;double sum = 0, ave = 0;for (i nt n=1; n9;n+)System.out.println(請輸入第+ n +科成績);score n二 Double.parseDouble(i nput.readL in e(); sum = sum + score n;ave = sum / 8;System.out.println(”你的平均是 +ave+分);f

12、or (i nt n=1; nave)System.out.pri ntln(”【課堂筆記】【習題1】(檔名:Ex2Hw1.java)剛剛的範例,解決了之前恐怖的教師範例二,現在換你了喔!【教師範例1】的改寫:請寫程式讓使用者分別輸入並儲存八科成績的成績,之後再印出各科成績。【習題1】程式碼程式開始*/20double score = new double9; double sum = 0, ave = 0;for (i nt n=1; n9;n+)System. out .println(請輸入第+ n +科成績); scoren二 Double. parseDouble (input.re

13、adLine();for (i nt n=1; n9;n+)System. out .println(第+ n +科的成績為+scoren+ 分); 程式結束*/【課堂筆記】【習題2】(檔名:Ex2Hw2.java)請寫一個程式:讓使用者輸入座號110號同學的國文成績。輸入完成後,程式將自動輸出:1. 成績高於90分的同學座號,並輸出”考得很不錯喔!”2. 成績低於60分的同學座號,並輸出”這樣不行喔,要加油啦!”【習題2】程式碼程式開始*/double score = new double11; double sum = 0, ave = 0;for (i nt n=1; n11; n+)S

14、ystem. out .println(” 請輸入+ n +號的國文成績); scoren二 Double. parseDouble (input.readLine(); for (i nt n=1; n=90)System. out .println( n +號同學,考得不錯喔!); else if(score n60)System. out .println( n + 號同學,再加油吧!”);程式結束*/【課堂筆記】單元三循序搜尋法壹、觀念介紹電腦厲害之處在於可以很快的解決一些問題,我們最常用的一個功能就是:用電腦搜尋資料 今天我們就要學習電腦搜尋資料的其中一種方法:循序搜尋法循序搜尋法:

15、從頭到尾依序尋找,直到找到資料為止。配合投影片(超連結)【範例3-1】(檔名:Ex3-1.java)請寫一個程式,查詢陣列中的資料(假設共有100筆資料)。使用者只要輸入要搜尋的數字, 程式會自動告知這個數字存在與否。若存在,程式會輸出此數字在陣列中的第幾號位置。註:1. 請先使用畐【J程式readfile,讀入文件檔【檔名:scoresl.tx】中的資料到陣列中2. readfile使用法如下readfile(檔案名稱.txt,陣列名稱,陣列大小)此副程式會把文件檔中的第一筆資料讀到第一個位置,第二筆資料讀到第二個位置,以此類推。果一想:1. 程式需要用到哪些變數(包括陣列)?2. 請問,要

16、用何種結構來逐一搜尋所要找的資料?3. 請問,要用何種結構來判斷是否找到資料,並決 定找到時做什麼動作?例如:若存在,輸出資料在第 24號位置“。 若不存在,輸出”對不起,找不到!”【範例3-1】程式碼int array = new in t101;int key, found = 0;程式輸出範例 請輸入你要查詢的數字(1100):4資料在第24號位置。請輸入你要查詢的數字(1100):9對不起,找不到!readfile(scores1.txt, array, 100); 將 numbers.txt讀入到陣列中System.out.println(請輸入你要查詢什麼數字(1100):);ke

17、y = In teger.parse In t(i nput.readL in e();for (int i=1;i=100;i+)if (arrayi= =key)System.out.println(搜尋資料在第+ i + 號位置); found = 1;if (found= =0)System.out.pri ntl n(對不起,找不到!);程式驗證:請打開scores1.txt!案查看內容,看看你的程式是不是寫對了?【習題1】(檔名:Ja3Hw1.java)成績查詢系統:黃老師把全班共35人的成績全部依座號次序存在一個文字檔【檔名:scores2.tx】中。請你幫老師寫一個程式,讓他輸

18、入成績,即可查出哪些座號的同學大於該成績,並輸出該位同學 考幾分。最後,請計算出大於此成績的總共有幾人?註1. 可使用副程式readfile,把成績依序讀入陣列中。2. 參考範例1,讓程式印出高於該成績的同學座號 -想:1. 程式需要用到哪些變數(包括陣列)?2. 回想一下,之前要計算總共幾人或總共幾次的時 候,你都是怎麼做的呢?【習題1】程式碼int score = new in t36; int key = 0 ;int count =0;int found = 0;readfile(scores2.txt, score, 35);System.out.println(” 請輸入你要查詢的

19、分數(1100) key =In teger.parse In t(i nput.readL in e();程式輸出範例請輸入你要查詢的分數(1100):94成績大於94分的座號為19號19號的成績是96分成績大於94分的座號為29號29號的成績是95分成績大於94分的座號為30號30號的成績是95分總共有3個同學考的比94分還高請輸入你要查詢的分數? (1100)99對不起,沒人考的比這個分數高!for (int i=1;i key )System.out.println(”成績大於+ key +分的座號為+ i + 號);System.out.println( i + 的成績是+ scorei + 分);found = 1;count = count + 1;if(fou nd = 0) System.out.pri ntl n(”對不起,沒人考的比這個分數高!);else System.out.println(” 總共有+ count +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论