有人對 Swift/SwiftUI 程式設計有興趣嗎?

我是一個退休的資訊工程師,去年想教兩個唸高中的女兒學習程式設計,但我已有20年沒有寫程式,經過一番探索與學習,寫了一份簡單的教材,其中構想有幾個獨特之處:

1. 選定 Swift程式語言(而不是目前當紅的 Python 或 Scratch)
2. 開發環境以 Swift Playgrounds 為主(而不用Xcode)
3. 自行命名的變數、函式、結構、類別...等等,盡量採用中文(而不是英文)
4. 先實作再講解理論

由於對象是高中生,所以講解理論必須盡量淺白,只介紹基本必要的術語,多用實例與比喻。

課程內容的安排,每堂課盡量精簡,預期在20-30分鐘以內,十堂課左右為一個單元,目前構思了幾個單元:

單元#1. Swift資料類型與基本句型
1.1 變數與常數(var/let)
1.2 算術運算與for迴圈
1.3 函式(func)
1.4 陣列(Array)
1.5 布爾(Bool)
1.6 Swift基本句型
1.7 物件結構(struct)
1.8 什麼是物件(Object)
1.9 表情字符(emoji)
1.10 時間(Date)
單元#2. SwiftUI 入門 https://www.mobile01.com/topicdetail.php?f=482&t=6424982
2.1 什麼是SwiftUI
2.2 顯示圖片(Image)
2.3 VStack/HStack
2.4 ZStack
2.5 View 修飾語(modifier)
2.6 ScrollView
2.7 JSON 資料表格
2.8 表情符號(emoji)
2.9 系統圖示(SF Symbols)
2.10 手勢控制
單元#3. 網路資料存取 https://www.mobile01.com/topicdetail.php?f=482&t=6453587
3-1 URL & URLSession 物件
3-2 下載網路圖片
3-3 搜尋 iTunes 音樂
3-4 連接Open API
3-5 下載大圖(downloadTask)
3-6 網路抓圖 AsyncImage
3-7 非同步指令 async/await
3-8 錯誤處理(error handling)
3-9 用iPad撰寫App
3-10 擴充改善我的App
單元#4. SwiftUI 動畫與2D繪圖 https://www.mobile01.com/topicdetail.php?f=482&t=6555364
單元#5. 人工智慧
單元#6. 3D與AR


去年寫了前三個單元,我準備將這30課重新改寫放上來,然後再完成後續的單元,請大家指教。
恭候大作
雪白西丘斯 wrote:
我是一個退休的資訊工(恕刪)


我從頭看到尾 就是沒有看到價錢

要不你先放1~2節課的內容給大家看看?

試試水溫?

天時>地利>人和

在台灣寫軟體的很難說可以拼過做硬體的
雪白西丘斯
謝謝您的建議,我目的是希望提供給暑假疫情期間的學生,在家自主學習,是不收費的。
目前台灣swift的學習資料還是非常欠缺的
期待大作
有興趣,期待大作
雪白西丘斯 wrote:
我是一個退休的資訊工(恕刪)


卡位期待大作
慾望少一點~幸福多一點~/科技始終來自於人性~人性始終來自於惰性~/先和解的不是認輸~是在乎~
#2 測試練習環境

在進入正式課程之前,請先確認有合適的練習環境(軟硬體)可用,對於第一單元(1.1~1.10)來說,可以用網頁版的Swift編譯器來當作開發環境,當然如果條件允許的話,用 Swift Playgrounds (需要在iPad或MacOS的 App Store 下載)來練習是更好。

第三方(非蘋果官方)的網頁版Swift編譯器有好幾個,列舉網址如下,大致測試過都沒問題,中文均可正常顯示:
1. Replit https://repl.it/languages/swift
2. Swift Fiddle https://swiftfiddle.com/
3. Coding Ground https://www.tutorialspoint.com/compile_swift_online.php
4. Online Swift Playground http://online.swiftplayground.run/

我們先用一個範例程式來測試,這個範例程式出自第一單元第10課(1-10),是第一單元所要學習的語法總結,如果看不太懂沒有關係,大約學習一兩個星期之後就會理解。如果對這個範例程式已經完全理解,基本上就可以進入第二單元。

// 計算時間差:判斷質數快速演算法
// Created by Heman, 2020/11/11
import Foundation

func 判斷質數(_ n: Int) -> Bool {
    if n <= 1 { return false } 
    if n == 2 { return true }
    var 整數 = 2
    let 平方根 = sqrt(Double(n))
    while Double(整數) <= 平方根 {
        if (n % 整數) == 0 {
            return false
        }
        整數 += 1
    }
    return true
}

var 數量 = 0
let 執行前 = Date()
let 上限 = 10000
for i in 1...上限 {
    if 判斷質數(i) {
        數量 += 1
        print(i, terminator: " ")
    }
}
let 時間差 = Date().timeIntervalSince(執行前)
print("\n1~\(上限)總共\(數量)個質數")
print("總計花\(時間差)秒")


我們以 Online Swift Playground 為例,將以上範例程式拷貝貼上,按Run執行,正確的執行結果如下圖。如果各位執行結果有問題,可以將畫面貼出來,在此或私訊詢問我。

若要使用Swift Playgrounds的話,請用Mac或iPad到App Store下載此App,打開App後在「更多Playgrounds 檢視全部」中開啟一個「空白」,如下圖。



在Swift Playgrounds裡面,每個單元相當是一本動態的電子書(副檔名是 .playgroundbook),「空白」就是開啟一個空白的電子書,可以讓我們練習寫程式。請將上面範例程式貼上,按右下方「執行我的程式碼」,然後再按右下角顯示控制台,查看輸出內容,如下圖。


如果能用Swift Playgrounds是最好的選擇,因為學習程式設計最好的方式是自己打字,而不是用拷貝貼上,在Swift Playgrounds 裡面打入程式碼的時候,有非常方便的輔助功能,包括語法檢查、關鍵字提示、物件的參考資料等等,而且到第二單元之後,也無法再使用網頁版了,所以儘早熟悉Swift Playgrounds對學習本課程是越好。
bigpolo
Date().timeIntervalSince(執行前) 這個時間差方法,版本不同所以不能正確運行。
恭候大作
卡位,感覺會收穫滿滿
我也來卡個位
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 9)

今日熱門文章 網友點擊推薦!