何廣林
本題來自2021年NOC創(chuàng)新編程復賽操作題。阿短是一位小學五年級學生,本學期即將結(jié)束,阿短打算創(chuàng)作一個能夠進行四則運算練習的出題程序。程序能夠隨機出10道題,題目皆是一位數(shù)的加減乘除四則運算,每答對一題得1分。請你幫助阿短,編寫出這個程序吧。
1.參與運算的兩個數(shù)值都是從0到9之間隨機獲取,運算符是從“+”、“-”、“*”、“/”中隨機產(chǎn)生,并作為詢問的內(nèi)容,如題干配圖所示;
2.在要求1的基礎(chǔ)上進一步對數(shù)值做出限制,如果運算符為“-”,那么要求被減數(shù)不小于減數(shù);如果運算符為“/”,那么除數(shù)不得為0;
3.程序?qū)﹄S機生成的算式進行運算,并對結(jié)果進行四舍五入取整。如果用戶輸入答案與結(jié)果相等,那么說出“回答正確”,然后將得分增加1分;否則說出“回答錯誤”;
4.程序總共隨機生成10道題目(圖1)。
1.在計算機中,“*”表示乘法運算,等同于數(shù)學中“×”; “/”表示除法運算,等同于數(shù)學中“÷”;
2.對于除法運算,要求除數(shù)不得為0,對于結(jié)果為小數(shù)的情況,進行四舍五入取整;
3.小學數(shù)學大綱中不涉及負數(shù)運算,所以在進行減法運算時,要求被減數(shù)不小于減數(shù)。
1.首先明確怎么去定義函數(shù)和調(diào)用自定義函數(shù),確定新建“變量”項目;
2.分別編寫“加、減、乘、除”4個自定義函數(shù)子程序;
3.確定“加、減、乘、除”4個運算符號,并將其添加入“運算符號”列表中;
4.根據(jù)列表“運算符號”中隨機出現(xiàn)的“符號”,調(diào)用相應(yīng)的函數(shù)“子程序”出題。
(一)添加或?qū)胍唤巧?,背景為白色。添加如圖2中的全局變量和列表(圖2)。
(二)編寫“加、減、乘、除”各函數(shù)子程序。
1.自定義“加法”函數(shù),添加參數(shù)“加數(shù)1”和“加數(shù)2”。程序如圖3。
2.自定義 “減法”函數(shù),增加參數(shù)“減數(shù)1、減數(shù)2”,因為小學數(shù)學大綱中不涉及負數(shù)運算,在進行減法運算時,要求被減數(shù)不小于減數(shù),所以設(shè)置條件“數(shù)1≥數(shù)2”(圖4)。
3.自定義 “乘法”函數(shù),增加參數(shù)“乘數(shù)1、乘數(shù)2”(圖5)。
4. 自定義 “除法”函數(shù),增加參數(shù)“被除數(shù)1、除數(shù)2”。在計算中因為除數(shù)不得為0,所以設(shè)置條件 “數(shù)2≠0”(圖6)。
(三)搭建“+、-、*、/”插入到“運算符號”列表程序(圖7)。
(四)搭建隨機出題主程序。
因為需要根據(jù)出現(xiàn)的運算符號來調(diào)用相應(yīng)的函數(shù)子程序,總題數(shù)是10,所以選擇“重復執(zhí)行(10)次”和“如果——否則”積木。程序搭建如圖8。
測試程序,檢查運行效果是否符合題目要求。
本題中首先是根據(jù)題意設(shè)計程序運行的基本框架流程,確定新建“變量”的項目和“列表”;其次利用自定義函數(shù)定義“加、減、乘、除”各運算子程序,再根據(jù)題中的相關(guān)要求設(shè)定相應(yīng)的條件;最后根據(jù)“運算符號”列表中隨機出現(xiàn)的運算符,對等地調(diào)用“加、減、乘、除”各子程序。