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