您現在的位置: 高州一中 >> 教學園地 >> 信息技術 >> 高一信息 >> 正文 用戶登錄 新用戶注冊
4.1編制計算機程序解決問題
作者:佚名 文章來源:網絡 點擊數:9202 更新時間:2013/5/18 16:50:56
學習目的:初步掌握用計算機進行信息處理的幾種基本方法,認識其工作過程與基本特征。
學習重難點計算機程序設計的基本流程。
學習方式:理解,練習。
學習內容:
一、體驗程序的運行過程及作用
  請觀看老師演示的畫函數曲線程序,然后思考如下問題:
  ①程序是什么?
  ②程序文件里面有什么?
  ③程序是怎樣實現其功能的?
  ④用計算機程序解決問題的過程是怎樣的?

  回顧我們在數學課上學習過的二次函數圖形的畫法,是通過二次函數算出足夠多的點坐標(x,y),并在直角坐標系上畫出來,多個點連在一起就形成了函數的圖形。

新建文件
  (2)輸入程序。雙擊窗體空白處,打開窗體代碼窗口,把“畫函數圖形.txt”文件中的程序文本復制粘貼到其中。
打開窗體代碼窗口輸入程序代碼
  (3)運行程序。單擊工具欄上的啟動程序按鈕 運行程序,在程序界面中點擊空白處,觀看程序運行效果。
  (4)保存文件。從“文件”菜單中選擇“保存form1”,輸入文件名為“畫函數圖形01.frm”。

  (5)修改程序。根據需要,我們可以將拋物線程序的圖形修改為標準拋物線y=ax2+bx+c曲線圖效果。并以“畫函數圖形02.frm”保存。

程序代碼
  (6)生成可直接執行的exe文件。打開“畫函數圖形01.frm”程序,從“文件”菜單中選擇“生成工程.exe”項,生成“畫函數圖形01.exe”文件,并直接雙擊運行這個程序,查看運行效果。
  用VB 系統編輯生成的frm窗體文件和vbp工程文件,運行時都要首先啟動VB系統,不能獨立運行,但這兩類文件可以重新打開修改,適合在調試階段使用。當輸入的程序修改調試完成后,通常保存為EXE格式的文件,計算機可以直接執行,這類文件不可以重新打開修改。

交流

  你認為VB與你使用過的應用程序(如Powerpoint、Word等)相比,不同之處在哪里?有相似的地方嗎?
 
  通過上面的演示我們知道程序可以看作是讓計算機實現某一功能的一系列計算機能夠識別的語句。人們可以通過編寫程序告訴計算機每一步做什么,計算機則嚴格執行程序中規定的每個步驟來實現人們需要的功能,幫助人們解決問題。如果程序編得不對,計算機運行的時候就會出錯或不能得到正確的結果。
  程序設計語言是人們與計算機打交道的橋梁,通過它告訴計算機執行一系列操作,實現某種功能。程序的編寫依賴于程序設計語言,程序設計語言有很多種,VB是其中的一種
  當問題簡單時,可能編寫一個或若干個程序就可以解決問題。當問題比較大或比較復雜時,就不僅僅是編寫幾個程序能解決的,此時則需要進行軟件開發,編寫程序是軟件開發的重要環節。我們平時所使用的各種軟件,實際上是軟件開發人員按功能需要編寫的程序的集合,如文字處理軟件、圖形圖像制作軟件等。

二、編制計算機程序解決問題的過程
  當我們需要通過編制計算機程序來解決問題的時候,該如何著手呢?一般來說,可以包括以下這些過程:
1、分析問題
  對于任何一個實際問題,首先要分析該問題的需求情況及已知條件,來判斷解決問題的可能性和目標要求,然后對需要解決的問題給出一個精確的描述。
交流 
  你對本節開頭劉麗提出畫拋物線的問題如何分析?
  上面的例子中,函數圖像的表達可以通過多種方法來實現,編程作圖是其中一種,對于二次函數的圖像本身是一個二維坐標圖像,二維坐標軸圖像的基本元素是點,點的構成是位置坐標(包括縱坐標和橫坐標)和色彩。對于二次函數圖形里點的色彩,我們可以自己定義,而對于二次函數點的位置,我們就要通過二次函數本身求取,縱橫坐標就是二次函數的Y,X值。要畫出一個適合的二次函數需要多少個點才適合?其實要畫一個圖形當然是越多點數越好了,但是太多的點又會花費大量的時間,所以可以考慮在一定的范圍內盡可能多的點。
  畫二維圖像還需要考慮是否把坐標軸畫出來,是否需要把坐標刻度畫出來等等。這樣根據問題的需求,我們便構造好一個問題的模型,也就是我們如何將函數轉換為圖像的一個架構。
2、設計算法
  現在要找出解決問題的方法和步驟,這一過程稱為設計算法。算法是程序編寫的基礎。描述算法的方法通常不止一種,可以用自然語言描述,也可以用流程圖的形式描述,根據要求不同可以粗略描述,也可以詳細描述。算法描述越詳細,編寫程序就越方便。下列是對畫二次函數圖形問題的三種算法描述:
  本程序的算法如下:
  描述一:讓二次函數方程y=x2的x值由-3變化到3,每變化一次的變化量是0.001,然后求出y值,再將求出的x,y值作為坐標來畫點。

  描述二:

  ①提示用戶啟動畫圖處理;
  ②在畫板上先畫出笛卡兒坐標系;
  ③通過函數y=x^2求取Y值;
  ④在畫板上的(x,y)坐標上畫一個點;
  ⑤x遞增0.001;

  ⑥重復③~⑤步,直到x的值由-5變化到5為止;

  描述三:
3、編寫程序
  有了清晰的可操作的算法描述,就可以選擇一種程序設計語言來編寫程序,以實現算法。一般來說,只要算法確定,語言的選擇就沒有特別的限定,通常根據問題的特性和編程人員對語言的熟悉程度來選定。程序設計語言是人們編程時與計算機溝通的橋梁,熟悉了程序設計語言就可以更好地把算法轉換為程序,讓計算機執行程序來幫助人們解決問題。在本例子中我們是用Visual Basic語言來實現本算法的程序。構成程序的字符,通常稱為代碼。
4、調試運行
  程序編寫好以后,通過鍵盤輸入計算機,然后運行程序,看看程序能否順利執行。計算機只懂得程序設計語言所規定得語法規則,如果編寫程序時違反了規則,哪怕是一個標點符號出錯,也會令程序出錯,不能執行下去。人們可根據計算機提示的出錯信息修改程序,重新調試運行。
5、檢測結果
   當程序能夠順利運行以后,還需要對程序功能進行分析檢測。因為如果程序符合規則,即使有邏輯錯誤或計算方法的錯誤,計算機也是檢查不出來的。因此,如果結果不合理,還要回頭對程序進行修改,直到確定程序的功能正確為止。
  通過上述的學習我們知道,計算機是不會自己解決問題的,但它可以在人們編好的程序指示下幫助人們解決問題。要想利用計算機解決問題,人們可以使用現成工具軟件,也可以根據實際問題的需要,通過設計解決問題的算法,選用適合的程序設計語言根據算法編寫程序。程序一旦編寫并調試通過,可以重復應用來解決同類的問題。

交流 
  在使用計算機程序解決問題方面,采用計算機編程的方法有何優勢?又有何局限性?


三、課堂練習

  (1)猜數游戲,寫一個程序實現。計算機給出一個100內的整數,讓用戶猜,如果猜的數比計算機出的數要大就輸出“猜大了”,如果猜的數比計算機的數要小就輸出“猜小了”,直到猜出正確的數字為止,輸出“猜對了,您總共猜了n次”。完善下面的算法分析和代碼實現: 
  從后面的列表中將選項選出填在表中“算法分析”和“代碼設計”的空白處:

算法分析可供選項: 
A)統計次數清零 
B)輸入一個數到x
C)統計次數a增加1
D)判斷如果猜的數x比m大,提示“猜大了”要求重新輸入 
E)判斷如果猜的數x比m小,提示“猜小了”要求重新輸入 
F)統計次數a增加1


代碼設計可供選項: 
A)Randomize
m = Int((100 * Rnd) + 1)
B)If x > m Then
x = Int(InputBox("您剛才猜的數大了,請重新猜一個數。"))
C)ElseIf x < m Then
x = Int(InputBox("您剛才猜的數小了,請重新猜一個數。"))
D)x = InputBox("請輸入一個1~100之間的整數") 
E)If x = m Then MsgBox ("恭喜你猜中了!答案就是" + Str(m) + ",您總共猜了" + Str(a + 1) + "次")

  請將上面的猜數游戲在VB里實現。

  (2)“xlmw$mw$q}$fsso”是經過變換的一串字符,已知原文中每個字符的機內碼被加上或減去同一個值(稱為數值偏移),且這個值不超過5,例如’abcd…xyz’用差位為1的字母相代替,即:a用b表示、b用c表示、c用d表示…y用z表示,’good’就變成了’hppe’。你能破譯這句英文嗎?說說你的算法。

十進制 字符
9 TAB(制表符)
10 換行
13 回車
32 空格
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
十進制 字符
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
十進制 字符
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
     從這個例子可以看出,用固定數值的加密方法是很容易被破譯的。想一想,如何設計另一個算法,使每一個字符串偏移值各不相同。

內容錄入:景天昊言    責任編輯:景天昊言 
  • 上一篇內容:

  • 下一篇內容: 沒有了
  • 【字體: 】【發表評論】【加入收藏】【告訴好友】【打印此文】【關閉窗口
    大乐透赢彩票 038彩票 | 盛兴彩票 | 极彩娱乐平台 | 新盈彩彩票 | 悦彩票 | 彩99助手 |