每個星座都有自己獨特的故事和傳說,不同占星學(xué)將黃道一共分成十二星座,不同出生日期對應(yīng)不同的星座(如圖1)。
根據(jù)這個星座對照表,我們用Scratch編寫程序,根據(jù)輸入生日查詢所屬的星座,比如輸入0802——獅子座。
根據(jù)需求分析,我們創(chuàng)建三個列表:星座、開始日期、結(jié)束日期。將對應(yīng)的數(shù)據(jù)導(dǎo)入列表中,作為查找日期范圍的數(shù)據(jù)源。
首先我們要創(chuàng)建一個詢問交互過程,指令接收用戶輸入的出生日期,然后調(diào)用模塊“星座查詢”來查詢用戶屬于哪一個星座(如圖2)。
接下來創(chuàng)建一個“星座查詢”積木,參數(shù)為出生日期,新增變量i代表月份,重復(fù)執(zhí)行直到變量i>12。這個循環(huán)結(jié)構(gòu)用來遍歷12個星座的開始日期和結(jié)束日期,這種判斷過程有兩種寫法:
A:如果 開始日期≤出生日期與出生日期≤結(jié)束日期那么#找到星座 否則#繼續(xù)查找
B:如果 出生日期<開始日期或出生日期>結(jié)束日期那么 #繼續(xù)查找 否則 #找到星座(如圖3)。
系統(tǒng)根據(jù)用戶輸入的出生日期確定星座的范圍條件,如果用戶輸入的出生日期非法,那么顯示查不到此星座,需重新輸入。
這樣簡單的星座查詢的程序就完成了,不過程序還是存在一些Bug,比如當(dāng)用戶輸入0557,系統(tǒng)也會顯示出雙子座的月份,但是顯然并沒有5月57號出生的人。那么造成這個Bug的原因你找到了嗎?要加什么限制條件才可以防止這種問題的發(fā)生呢(如圖4)?