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