從程式設計方法到思維訓練總結

2022-03-13 19:23:44 字數 3103 閱讀 6191

本文通過幾個例子來講述程式設計方法,通過程式設計方法達到思維訓練的目的。

主要的核心設計方法是偽**法和分解法:

偽**法:用來描述程式的思路,也可以用來注釋

分解法:逐步細化,分解步驟

下面我們通過幾個例子來學習偽**法和分解法

。(sd: 以下**用python語言來編寫)

概念:

示例索引:

分解法

分解的思想可以通用在任何程式設計,接下來從兩種角度來運用程式的分解。

利用分解法可以把程式分解

程式最大組成單元是檔案;乙個檔案分解成若干個函式;函式分解成語句塊;語句塊分解成語句;語句分解成表示式、變數、運算子

還可以反向聚合:表示式、變數、運算子聚合成語句;語句聚合成語句塊;語句塊聚合成函式;若干個函式聚合成乙個檔案

分解成:輸入、計算(或處理)、輸出

輸入:提示資訊(可以沒有)、輸入方式「cui或者gui的使用者互動式輸入、函式入口引數、命令列引數、檔案讀取、其他裝置」、資料合法性校驗或斷言

計算(或處理):狹義計算「算術運算(加減乘除)、邏輯運算(與或非)、關係運算(大於等於小於)」

廣義計算:程式流程和演算法

處理:可以運用偽**法或分解法

輸出:螢幕輸出、印表機輸出、檔案輸出、函式返回值、函式的出口引數

法老的金字塔

題目:

編寫乙個程式,輸入層數,在控制台列印出任意層數的金字塔,如圖:

分析:

根據題目,金字塔圖形由空格和星號組成,現在先設定金字塔為3層,height = 3

解決這個問題,先做乙個**: 

level   n   m

第0層:空格2,星1

第1層:空格1,星3

第2層:空格0,星5

當層數為第0層是空格為兩個,星號為乙個;

當層數為第1層是空格為乙個,星號為三個;

當層數為第2層是空格為零個,星號為五個;

可以列出:n = height - 1- level ;

m = 2*level + 1

根據偽**法,可以先寫出程式思路:

在控制台輸入層數就能隨意列印想要的圖案。

丟手絹

題目:

有n個人圍成一圈了,順序排號。從第乙個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位?

分析:

接下來進行思維訓練:模擬現實法(把現實問題照搬到計算機上)

根據現實的問題,畫出圖形將它例項化,用反例項化將圖形以數字的形式表達出來,之後找乙個資料結構來表述問題,最後設計一種演算法來編寫**,總結起來有五個步驟:

現實世界

計算機世界

step0 —— step1       ——  step2        ——    step3 —— step4

接下來利用乙個例子(丟手絹)來學習模擬現實法,同樣運用為**法與分解法。

接下來步驟開始,呀哈:

圖形(設5個人,畫圖),將問題例項化,設定有5個人參加遊戲,將每個人編號,從第乙個人開始報數喊1,到喊3的人出局,下乙個繼續報1.

到最後乙個再返回第乙個報數,最後得到剩下的那個人為第四個人

用數學語言描述(定義人數為n),設定第乙個為pos0,出局的為pos1 ,那報數就成為根據pos0找pos1,根據pos1再找pos0。

(pos0——pos1——pos0——pos1),並且注意兩個狀況:1、隊尾;2、下乙個已經出局

step3:

找資料結構(陣列),建立乙個陣列p[100], p[0]用來計數出局的人數,p[1] = 1,p[2]=2,p[3]= 3,p[4] = 4,p[5] = 5 ;

於是p[0]=4時,最後剩下乙個。令出局的p[pos1]= 10,來表示已出局。

step4:

找演算法(nextpos),找下乙個位置,nextpos表示下乙個位置。

1    2    3

pos0——pos1

pos0 到pos1要經過兩個位置,所以nextpos再nextpos

pos1到pos0 要nextpos。

同時考慮隊尾與下乙個已經出局的狀況,將上述寫成程式**,如圖:

演算法:

運用分解法:

本站文章為寶寶巴士 sd.team

) **自【寶寶巴士superdo團隊】

程式設計思維訓練(一)

最近以提問的形式發了幾條關於程式設計思維的微博,有的獲得了粉絲的響應,有些卻無人問津。今天突然想到可以將我對這些問題的思考整理成一篇博文,以便與大家分享。另外,我計畫以 程式設計思維訓練 為名寫一些系列文章,希望通過這類文章與讀者分享我在程式設計活動中的一些思考。問 有一對記憶體管理函式memall...

程式設計邏輯思維訓練

問題區 1.你讓工人為你工作7天,給工人的回報是一根金條。金條平分成相連的7段,你必須在每天結束時給他們一段金條,如果只許你兩次把金條弄斷,你如何給你的工人付費?2.請把一盒蛋糕切成8份,分給8個人,但蛋糕盒裡還必須留有乙份。3.小明一家過一座橋,過橋時是黑夜,所以必須有燈。現在小明過橋要1秒,小明...

作為訓練思維方式的程式設計

原文 programming as a way of thinking現代程式語言的強大之處在於其具有強大的表現力 可讀性 簡潔性 精確性和可執行性的能力。艾倫.唐尼 於2017年4月26 從程式語言產生到現在,程式設計方式有了翻天覆地的改變,在fortran和c等第一代程式語言中,程式設計師的負擔...