【Xcode】for/while迴圈,還有function做伙來

forwhile-1

好不容易結束if/else的邏輯判斷,Xcode程式第2堂課,還是以程式的基本邏輯為主。這是要陷入迴圈的世界,結果我也不知道和皮卡丘他們全面啟動到第幾層,醒來發現已經下課了,於是回家看到一長串題目,頭只有更痛,沒有最痛啊。好加在朋友們都是IT工程師,自己就像幼稚園小孩,在他們循序漸進的說明提示下,終於釐清一點頭緒,開始寫作業吧!

開始前再唸一次自己的口訣:for/while是計算迴圈裡面的東西,if/else是增加條件,function是把它公式化,之後就能換參數帶入。

題目https://www.dropbox.com/s/jggtfg7881cxy78/%E4%BD%9C%E6%A5%AD3.pdf?dl=0

1.算全部格子的總合

forwhile-2

▲認真說:第一眼真的不知道要幹嘛,以為依序把1+2+…7,接著2+2+…14,然後算出數字總和即可。

經過朋友提示:不要急著想數字怎麼算,要看整個大框架找出邏輯規則,這才理解(大概花了半小時吧…) 每一格的由來是 欄x列,接著再透過迴圈設定範圍,依序加起來就是答案!

forwhile-1

▲這題是透過兩個for迴圈計算,依序限定欄(i)和列(j)的範圍是0到7(包含頭尾),總共要計算64次,得出全部格子總合是784。

2.奇數行的數字總合

forwhile-3

▲有了第1題的邏輯概念,第2題之後就加快許多。每一格的數字同樣是 欄x列,但是偶數列不算,所以要利用if條件去限定只計算奇數列。

forwhile-2

▲for迴圈裡面可加if,因此把 列(j)%2餘1,就是要算的奇數列,總共計算32次,奇數列的數字總合為448。同樣道理,如果列(j)%2等於零,代表整除就是計算偶數列。

3.所有格子的總合,除了列數>=行數的格子

forwhile-3

▲第3題同樣要計算格子的總合,但是列數大於等於行數的格子不用算,反過來想,只要算行數小於列數的格子,亦即i小於j。

forwhile-4

▲這題我一樣用for迴圈算,加入if條件i小於j。總共計算28次,行數小於列數的格子總合為322。

4.定義function,接受3個參數,起始值,最大值和決定數字倍數的number, 回傳運算結果 比方起始值3,最大值98,決定數字倍數的number為5時,(只包含5的倍數) 運算結果為 5 + 10 + 15 + ….. + 95

一看到題目的當下又是有看沒有懂,經過朋友翻譯成白話是計算範圍在3~98,所有5的倍數總合。

forwhile-5

▲題目要求定義function,因此要先設定起始值、最大值、倍數,最後再分別帶入題目數字3、98、5去計算。既然要算倍數,很自然就會想到前一堂課學的任意數字去除都能整除,亦即餘數等於零,加入if條件並計算迴圈。當起始值3,最大值98,倍數為5時,總共會加19次,總和為950。

5.定義function,接受3個參數,起始值,最大值和決定數字倍數的number, 回傳運算結果:比方起始值3,最大值11,決定數字倍數的number為5時,(不包含5的倍數) 運算結果為 3 + 4 + 6 + 7 + 8 + 9 + 11

第5題同前一題的方法,差別只在將if條件反過來,扣掉5的倍數後,其他才是真正要加起來的數字,

forwhile-11

▲原本以為if條件加入i不等於( !=)5就完成了,但swift規定不能這樣寫。於是改為 找出5的倍數 (餘數等於零)之後不做事,if裡面大括號留空,真正要執行的是else裡面。這樣邏輯就通了~5的倍數不執行,其他通通加起來。回傳運算結果:比方起始值3,最大值11,倍數5時要扣掉,還要計算7次,總和等於48。

6.奇數行的數字總合, 定義function,接受2個參數,分別代表行數和列數

forwhile-7

▲第6題同第2題,只是改為function型式,方便之後直接呼叫function帶入數字。

7.所有格子的總合,除了列數>=行數的格子, 定義function,接受2個參數,分別代表行數和列數

forwhile-8

▲第7題同第3題,一樣改為function即可。

8.定義一個function,接受一個參數代表華式溫度 , 回到攝式溫度

如果以上7題都會,那最後這題的華氏攝氏溫度轉換,絕對沒問題 !還記得這是國中一年級物理最常見的問題,不過早就忘記轉換公式了,要先google一下XD

forwhile-9

▲小叮嚀:溫度轉換結果會有小數點,所以定義Function時,型別要設定為浮點數Double,接著直接帶入公式即可。帶入華氏溫度70度,等於攝氏21.1度,剛好和現在差不多,舒服好睡的溫度!

全部寫完也可以安心睡囉 >> Xcode檔上傳至Github,可點此連結參考

——————————————————————————————————————-

▼按讚加入《好奇小悶》粉絲專頁

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料