文章插圖

文章插圖
編程,顧名思義就是編寫程序 。學習之前,要先弄明白什么是程序?解決問題的步驟就是程序嗎?算法和程序的關系是什么?本課將一一給出答案 。通過本課的學習,你將了解到程序及算法的概念及其關系 。
什么是計算機程序?
程序是指完成某些事物的一種既定方式和過程,可以將程序看成是一系列動作的執行過程的描述 。在百度百科中,計算機程序被定義為“一組指示計算機執行動作或做出判斷的指令,通常用某種程序設計語言編寫,運行于某種目標體系結構上 。
在生活中,可以見到許多計算機程序實例 。下面,我們看一個生活片段:
清晨六點十分,伴隨著準時而優美的起床鈴聲,我邁出宿舍,走進了第一餐廳 。餐廳里人很多,沒有辦法,我只買了兩個包子做為我的早餐罷了 。隨著我的餐卡在打卡機上輕輕掠過,六毛錢便不翼而飛了 。當我走到超市的時候,突然感覺只吃包子是不是太單調了,于是在超市里拿了一包早餐奶,但付錢的時候卻發現超市的收銀機壞掉了,沒奈何,我只得忍痛把剛拿到手的早餐奶又放了回去,真郁悶!
在上面的生活片段中,我們能找出幾處計算機程序為我們生活服務的痕跡來呢?
● 餐廳打卡機
● 超市收銀機
前面關于計算機程序的定義提到了“計算機程序是一組執行動作或做出判斷的指令并且運行于某種目標體系結構上” 。定義有點晦澀難懂,但是只要我們結合實際運行的程序并稍微略加分析,就能夠做到了然于心 。
首先考察(餐廳打卡機)
餐廳打卡機一般采用了射頻識別技術,“射頻識別(RFID)是一種無線通信技術,可以通過無線電訊號識別特定目標并讀寫相關數據,而無需識別系統與特定目標之間建立機械或者光學接觸 。”②
打卡機利用射頻識別技術將餐卡信息讀取到打卡機,由打卡機的處理程序對讀取的信息做進一步處理 。打卡機中的處理程序就是計算機程序,它需要執行下述動作和指令完成一次打卡操作:
1) 接受輸入的餐費金額
2) 讀取卡內金額
3) 判斷卡內金額是否大于餐費金額
4) 如果卡內金額小于餐費金額,給出余額不足提示
5) 如果卡內金額大于餐費金額,將卡內金額減去餐費金額后,回寫到卡內
文字描述其動作或流程不夠清晰或理解的話,我們可以用流程圖來描述打卡機程序的執行動作或流程:
采用流程圖描述打卡機程序的執行動作,是不是更直觀和清晰一些 。
再來考察(超市收銀機)
超市收銀機的工作原理類似餐廳打卡機,也是采用射頻識別技術讀取商品條碼,獲取商品價格、名稱等信息,并由收銀機內置的計算機程序對商品價格等信息進行匯總處理,給出所購商品金額等信息 。其處理流程要比餐廳打卡機復雜一些,它需要執行下述動作和指令完成一次收費操作:
1) 讀取商品條碼
2) 獲取商品價格、名稱等信息并顯示到收銀機屏幕上
3) 計算商品總金額
4) 等待操作員按鍵
5) 操作員按下“商品”按鍵,繼續讀取商品條碼
6) 操作員按下“等金額”或“找零”按鍵,錢柜自動開啟
其流程圖描述如下:
從餐廳打卡機和超市收銀機的內置的程序可以看出,人們使用計算機,就是要利用計算機程序處理各種不同的問題,為了讓計算機能夠按照我們的意愿去工作,人們在設計計算機時,為計算機提供了一套指令,其中的每一種指令對應著計算機能執行的一個基本動作,為讓計算機完成某項任務而編寫的指令序列就稱為計算機程序 。
2、什么是程序算法?
我們知道,程序是用來解決問題的,是由多個步驟或過程組成的,這些步驟和過程就是解決問題的算法 。
同學們都下過象棋吧,圖3給出的是《江湖迷局》一書的一個殘局棋譜,棋譜給出了每一步棋的走法,按照棋譜規定的步驟行棋,就能破解這個殘局,棋譜給出的行棋規則就是算法 。
去超市購物時,人們經常會對需要購買的同類商品做價格的比較,例如商品A、商品B、商品C在同樣質量的情況下,人們會傾向于比較價格,優先購買價格便宜的商品,這個比較過程是在大腦進行的,比較的過程就是排序算法,從三個數中找出最小的數 。
圖3的棋譜殘局需要走11手,就能破解殘局,圖4的價格排序也僅需要對3個數進行排序,在大腦比對一下數的大小就完成了 。它們都是算法,算法有沒有明確的概念和特征呢?
要想弄清楚算法的概念和特征 。先看看算法能給人們的生活帶來哪些幫助?前面的棋譜殘局和價格比對是生活中的算法,可以幫助人們解決生活中的一些問題,讓我們變成象棋高手,或者買到最實惠的商品 。
如果讓計算機執行算法,會給人們帶來什么幫助呢?在學習方面,把解方程的步驟輸入到計算機,可以幫助人們解方程;在工作方面,把英漢詞庫及檢索算法輸入到計算機,可以幫助人們自動進行英漢詞語翻譯;在生活方面,把游戲規則和算法輸入到計算機,可以讓人們娛樂等等 。計算機有了算法,才有了大腦和靈魂,沒有算法的計算機,只能是一臺機器 。
為了讓計算機能夠完成前面所說的任務,就需要事先對各類問題進行分析,確定解決問題的具體方法和步驟 。再編制好一組讓計算機執行的指令,交給計算機,讓計算機按人們指定的步驟有效地工作 。這些具體的方法和步驟,其實就是一個問題的算法 。例如,讓計算機幫助我們解方程,就需要把解方程的步驟和方程參數輸入到計算機,計算機根據輸入的步驟和參數完成方程的求解 。
嚴格來說,計算機程序是為讓計算機完成某項任務而編寫的指令序列,指令序列就是解決問題的算法 。
前面理解了算法的概念,再來看看算法有哪些特征 。
算法是由有限多個步驟組成的,它有下述兩個基本特征:第一個特征是每個步驟都明確地規定要執行何種操作;第二個特征是每個步驟都可以被人或機器在有限的時間內完成 。算法除了上述兩個基本特征外,還要具有第三個基本特征:雖然有些步驟可能被反復執行多次,但是在執行有限多次之后,就一定能夠得到問題的解答 。
算法比較抽象,下面講解一個實際的算法案例,讓同學們對算法有個感性認識 。對一組無序的數字進行排序,比較經典的排序算法就是冒泡排序 。
3、冒泡排序算法
冒泡排序是將一組數字多趟順序比較,一次比較兩個數字,如果他們的順序錯誤就把他們交換過來,小數或(大數)逐漸往上冒,當再沒有需要交換的數字時,說明該組數已經排序完成 。
對下面的一組數用冒泡排序算法,并按照從小到大的順序排序 。
這四輪比較下來,稱為一趟比較 。如果在該趟比較中,存在兩個數交換位置的情況,就需要進行下一趟比較,直到再沒有數字進行交換,算法結束 。
因為在第一趟比較中,存在兩數的位置交換,因此還需要進行第二趟的比較 。
第二趟比較
第二趟比較也是從數列左側的第一個數開始,順序兩兩比較兩個數的大小 。不過第二趟比較就不需要再比較數列右側的最后一個數了,因為在第一趟比較的過程中,該數列最大的數已經被交換到數列右側最后的一個位置了 。
從第三輪的比較結果來看,排序已經完成,每個數都自己找到了正確的位置 。已經不需要再進行第三趟比較了 。
4、 算法和程序的關系
算法是解決問題的步驟,在前面也談到了程序是執行過程的描述,那么,算法和程序是什么關系呢?
先請同學們思考一個計算長方形面積的問題,并給出算法 。
第一步,設置num1和num2兩個變量,接收用戶輸入的長度和寬度,并存儲到num1和num2兩個變量;
第二步,判斷num1和num2是否大于0,如果大于0,繼續下一個步驟,否則提示用戶長度和寬度輸入錯誤,算法結束;
第三步,計算num1和num2的乘積,并將乘積結果存儲到result變量;
第四步,顯示result變量的值到屏幕 。
算法非常簡單,四個步驟,如何讓計算機執行這個算法呢?
實現算法的偽代碼:
Begin(算法開始)聲明num1、num2;輸入num1、num2;IF num1 <=0 || num2 <=0{Print(“輸入的長度和寬度不能小于0”);退出程序}result = num1 * num2;Printresult;End (算法結束)要讓計算機執行算法,就必須要把算法用編程語言編寫出來,如Java語言,如實現計算長方形面積算法的偽代碼,偽代碼是一種算法描述語言,可以很容易地轉換為編程語言,如Java、C語言等 ??梢?,程序是算法的實現,算法通過某一種編程語言實現后,就是程序 。5、練習題
1、請列舉一些你在生活中經常使用的計算機程序 。
2、計算機程序和算法有什么區別?
3、對下面的一組數字用冒泡排序算法進行排序,請用文字詳細描述排序過程 。
36,29,101,12,33
4、現實問題模擬:《停車場的看門人》
某大型停車場對于進入該場地的車輛有如下的規定:
(1)進入該停車場的車輛必須為客運車輛,貨運車輛謝絕入內 。
(2)如果該車的乘員數量小于等于4人,則收費五元 。
(3)如果該車的乘員數量大于4人,則收費八元 。
作業要求:請根據該停車場的規定,用文字給出判斷進入該場的車輛是否符合規定,應該收費多少的算法 。
5、請用文字給出一個計算長方形面積問題的算法 。
【程序的特征和算法的特征本質上一樣嗎 算法具有哪些特征】要求:接受用戶輸入的長度和寬度,輸入的長度和寬度不能為零,如果為零,提示用戶重新輸入,最后將計算結果顯示到顯示器上 。
- 線程通信的三種方式 線程間是如何通信的
- 簡單介紹MD5加密算法 md5是常用的數據加密
- 韭菜炒蘑菇的家常做法
- 調理氣血的中藥副作用
- 行程碼是否帶星 行程碼帶有星號的屬于重點人群嗎
- eddy短彈簧哪里生產的 eddy短彈簧質量和舒適性怎樣
- 糖對牙齒的危害
- 4g手機哪年上市時間 4g手機是哪一年上市的
- excel隱藏的表格怎么恢復 excel表格隱藏表格怎么恢復
- 移動手機價格 中國移動的手機多少錢
