TỔNG QUAN
Đặt vấn đề
Hiện nay, thị trường di động ngày càng phát triển với nhu cầu cao về các ứng dụng đính kèm thông minh, không chỉ trên nền tảng Android mà còn trên iOS và OSX Ngôn ngữ lập trình Swift của Apple, được phát triển trong bốn năm bởi đội ngũ chuyên gia giàu kinh nghiệm, đã ra mắt vào năm 2014 và mang đến môi trường lập trình thú vị, giảm bớt sự khô khan so với các ngôn ngữ khác Swift thể hiện cam kết của Apple không chỉ tập trung vào lợi nhuận và sản phẩm hoàn thiện cho người dùng cuối, mà còn chú trọng xây dựng một hệ sinh thái vững mạnh bằng cách hỗ trợ và hợp tác với các lập trình viên.
Hình 1 Khái quát về Swift
Swift đã cách mạng hóa cách lập trình viên phát triển ứng dụng cho OS X và iOS với giao diện trực quan, đơn giản, nhanh chóng và tiện dụng Theo lời chia sẻ của Craig Federighi, Phó chủ tịch cấp cao phụ trách phần mềm của Apple, Swift nằm giữa C và Objective-C, cho phép lập trình viên sử dụng các công cụ của Objective-C trên nền tảng Swift Điều này giúp các nhà phát triển dễ dàng làm quen và tích hợp các mã nguồn hiện có, đồng thời đảm bảo khả năng mở rộng và linh hoạt trong quá trình phát triển ứng dụng Chính bởi tính linh hoạt và phổ biến của Swift, nó trở thành ngôn ngữ lập trình ưu tiên cho cộng đồng phát triển iOS và OS X.
Trường Cao đẳng Công nghệ Thủ Đức cập nhật chương trình đào tạo với ngôn ngữ lập trình mới nhằm giúp sinh viên nắm bắt kiến thức và công nghệ hiện đại Việc cập nhật này đảm bảo sinh viên được trang bị kỹ năng phù hợp với xu hướng công nghệ mới nhất Tôi đề xuất chỉnh sửa nội dung chương trình đào tạo để phù hợp hơn, từ đó nâng cao chất lượng giảng dạy và đáp ứng nhu cầu của sinh viên khóa 13 trở về sau.
Mục tiêu đề tài
Tìm hiểu ngôn ngữ lập trình mới của hãng Apple
Đề xuất cập nhật lại chương trình đào tạo của học phần “Lập trình di động trên iOS” áp dụng cho Sinh viên Cao Đẳng khóa 2013 trở về sau
So sánh ngôn ngữ Objective-C và ngôn ngữ Swift
Xây dựng một số ứng dụng đơn giản Demo cho Sinh viên
Đối tƣợng nghiên cứu
Ngôn ngữ lập trình SWIFT
Các ứng dụng đơn giản sử dụng ngôn ngữ SWIFT
Chương trình học phần Lập trình di động trên iOS
Phạm vi nghiên cứu
Ngôn ngữ lập trình SWIFT
Các ứng dụng đơn giản sử dụng ngôn ngữ SWIFT Chương trình học phần Lập trình di động 3
Phương pháp nghiên cứu
Tham khảo tài liệu SWIFT
Research các ứng dụng sử dụng ngôn ngữ SWIFT Thử nghiệm và đánh giá
Cập nhật chương trình học phần “Lập trình di động iOS”
Bố cục đề tài
CHƯƠNG 1 TỔNG QUAN 1.1 Đặt vấn đề
1.2 Mục tiêu đề tài 1.3 Đối tƣợng nghiên cứu 1.4 Phạm vi nghiên cứu 1.5 Phương pháp nghiên cứu 1.6 Bố cục đề tài
Trường CĐ Công nghệ Thủ Đức 1.8 Điểm mới của đề tài
1.9 Giá trị thực tiễn của đề tài CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Ngôn ngữ SWIFT
2.2 Một số ví dụ sử dụng ngôn ngữ SWIFT 2.3 So sánh ngôn ngữ Objective-C và Swift
CHƯƠNG 3 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 3.1 Các kết quả đạt đƣợc và hạn chế của đề tài 3.2 Hướng phát triển
1.3 Đề xuất TÀI LIỆU THAM KHẢO
Điểm mới của đề tài
Ngôn ngữ Swift là ngôn ngữ lập trình mới đƣợc ra đời năm 2014 và đã đƣợc ứng dụng ở các công ty lập trình di động
Trường CĐ Công nghệ Thủ Đức
NGÔN NGỮ SWIFT
Giới thiệu ngôn ngữ Swift
Swift là ngôn ngữ lập trình mới của apple, nó đƣợc giới thiệu tại WWDC 14 và đƣợc tích hợp cùng với iOS 8 trong Xcode 6 beta
Swift kết hợp ưu điểm vượt trội của hai loại ngôn ngữ lập trình: sự mạnh mẽ và linh hoạt của ngôn ngữ compile cùng với sự đơn giản, nhẹ nhàng của ngôn ngữ script Điều này giúp Swift trở thành một ngôn ngữ lập trình hiệu quả, dễ học và phù hợp cho nhiều dự án khác nhau Việc tích hợp các đặc điểm này giúp phát triển phần mềm nhanh chóng, tối ưu và dễ bảo trì, góp phần nâng cao năng suất của lập trình viên.
Lập trình với Swift trở nên trực quan hơn nhờ phương thức sắp xếp hợp lý trên giao diện người dùng và kiểu hiển thị kết quả theo thời gian thực trong Xcode Runtime Trong quá trình viết mã, kết quả được hiển thị ngay lập tức, giúp dễ dàng chỉnh sửa và xem hình ảnh trực tiếp bên trong IDE Ngoài ra, Xcode tự động dựng các kịch bản thực thi trong ứng dụng, hỗ trợ lập trình viên quản lý ứng dụng hiệu quả và giảm thiểu rủi ro xảy ra sự cố tràn bộ nhớ.
Ngôn ngữ lập trình Swift giống với Objective-C nhưng có phương thức hoạt động đơn giản hơn, giúp lập trình viên dễ dàng áp dụng Nếu bạn đã từng lập trình với Objective-C, việc học Swift sẽ trở nên dễ dàng hơn nhờ vào việc ngôn ngữ này kế thừa một số cú pháp quen thuộc từ trước Điều này giúp quá trình chuyển đổi giữa hai ngôn ngữ trở nên mượt mà hơn và tiết kiệm thời gian học tập.
Biến và hằng trong Swift
2.2.1 Khai báo biến và hằng
Swift cung cấp đầy đủ các kiểu dữ liệu nhƣ trong C và Objective C:
Kiểu dữ liệu Int Double Float Bool String Character
Swift cung cấp các kiểu collection như Array và Dictionary, giúp quản lý dữ liệu hiệu quả Trong Swift, không cần khai báo rõ ràng kiểu dữ liệu trước khi sử dụng, nhờ vào tính năng inference kiểu mạnh mẽ của ngôn ngữ Để khai báo biến có thể thay đổi, chúng ta sử dụng từ khóa „var‟, còn để khai báo hằng số không đổi, dùng từ khóa „let‟ Việc này giúp mã nguồn rõ ràng hơn và dễ bảo trì trong quá trình lập trình Swift.
Trường CĐ Công nghệ Thủ Đức Để khai báo nhiều biến liên tiếp:
Lưu ý rằng dấu chấm phẩy không cần thiết ở cuối mỗi câu; tuy nhiên, nếu muốn viết hai câu trên cùng một dòng, chúng ta bắt buộc phải sử dụng dấu chấm phẩy để phân cách Việc nắm rõ quy tắc sử dụng dấu chấm phẩy giúp bài viết rõ ràng và chính xác hơn trong ngữ pháp tiếng Việt
Chúng ta có thể khai báo kiểu annotation khi khai báo một biến hay hằng số mà chúng ta đã biết kiểu dữ liệu sẽ được lưu
Convert giữa kiểu int và kiểu Double nhƣ sau:
Kiểu chuỗi (string) trong swift
Dưới đây là các ví dụ sử dụng String trong Swift
Trường CĐ Công nghệ Thủ Đức
Trường CĐ Công nghệ Thủ Đức
Kiểu array
Dưới đây là các ví dụ khác nhau về kiểu array trong Swift var shoppingList = ["catfish", "water", "tulips", "blue paint"] shoppingList[1] = "bottle of water" var occupations = [
"Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations"
Print biến và hằng số (variables and constants)
Chúng ta có thể sử dụng println () để in các biến
In biến chúng ta cần phải bỏ trong ngoặc đơn: \ (variable)
Vòng lặp trong Swift
Swift cung cấp đầy đủ các câu lệnh điều khiển giống như ngôn ngữ C, bao gồm vòng lặp for và while để thực hiện các tác vụ lặp đi lặp lại Các câu lệnh if và switch giúp điều hướng luồng thực thi dựa trên các điều kiện khác nhau, nâng cao tính linh hoạt của mã nguồn Ngoài ra, các câu lệnh như break và continue cho phép chuyển đổi luồng thực thi tới các điểm nhất định trong mã, tối ưu hóa hiệu suất và kiểm soát chương trình hiệu quả hơn.
2.6.1 Vòng lặp For - For Loops
Swift cung cấp hai kiểu vòng lặp để thực hiện một gói các lệnh một số lần nhất định:
- Vòng lặp for-in thực hiện một tập hợp các lệnh cho mỗi phần tử trong một phạm vi, trình tự, tập hợp, hoặc cấp số
Vòng lặp for giúp thực hiện một tập hợp các lệnh lặp đi lặp lại cho đến khi điều kiện xác định được đáp ứng Thường thì vòng for sẽ tự động tăng giá trị của biến truy cập sau mỗi vòng lặp để kiểm soát số lần lặp Đây là cấu trúc lặp phổ biến giúp tối ưu hoá quá trình lập trình và xử lý dữ liệu hiệu quả.
Trường CĐ Công nghệ Thủ Đức
Chúng ta sử dụng vòng lặp for-in để duyệt qua tập hợp các phần tử như dãy số, mảng hoặc chuỗi ký tự Vòng lặp này giúp kiểm tra từng phần tử một cách dễ dàng và hiệu quả, phù hợp trong các bài toán xử lý dữ liệu trong lập trình Sử dụng for-in là phương pháp tối ưu để lặp qua các phần tử trong tập hợp một cách ngắn gọn và dễ hiểu.
Ví dụ này sẽ in một vài chuỗi đầu tiên trong năm lần lặp:
3 println("\(index) times 5 is \(index * 5)")
Trong ví dụ trên, biến index là một hằng số tự động được thiết lập vào đầu mỗi vòng lặp mà không cần khai báo trước bằng từ khóa let Điều này nghĩa là index không phải là biến được định nghĩa rõ ràng mà được mặc nhiên khai báo khi đưa vào phần khai báo vòng lặp, giúp mã nguồn ngắn gọn hơn và dễ hiểu hơn.
Trong lập trình, khi không cần sử dụng mỗi giá trị từ phạm vi, bạn có thể bỏ qua các giá trị đó bằng cách sử dụng dấu gạch dưới (_) thay cho tên biến Việc này giúp làm rõ mã nguồn, giảm thiểu sự rối rắm và tối ưu hóa hiệu suất Sử dụng kỹ thuật này cũng giúp duy trì sự rõ ràng trong quá trình viết code, đặc biệt trong các vòng lặp hoặc khi xử lý nhiều giá trị trả về Đây là một mẹo giúp lập trình viên viết mã sạch sẽ, dễ đọc và dễ bảo trì hơn.
13 println("\(base) to the power of \(power) is \(answer)")
15 // prints "3 to the power of 10 is 59049”
Ví dụ này minh họa cách tính giá trị của các số được luỹ thừa với một số khác, trong đó 3 nâng lên lũy thừa 10 Quá trình này nhân giá trị ban đầu là 1 (bằng 3 luỹ thừa 0) với 3, mười lần liên tiếp, dựa trên một phạm vi từ 1 đến 10 Phép toán này không yêu cầu phải biết giá trị ban đầu, giúp người học hiểu rõ hơn về cách tính lũy thừa trong toán học.
Trường CĐ Công nghệ Thủ Đức trị đếm riêng mỗi lần trong vòng lặp, nó đơn giản chỉ cần thực hiện vòng lặp chính xác số lần
Ký tự gạch dưới _ (được sử dụng ở vị trí của một biến vòng lặp) tạo ra những giá trị riêng để đƣợc bỏ qua và không cung cấp quyền truy cập vào giá trị hiện tại trong mỗi lần lặp của vòng lặp
Sử dụng một vòng lặp for-in với một mảng để duyệt qua các phần tử của nó:
15 let names = ["Anna", "Alex", "Brian",
"Jack"] for name in names { println("Hello, \(name)!")
Chúng ta cũng có thể duyệt qua một từ điển - dictionary - để truy cập vào cặp khoá - giá trị của nó Mỗi phần tử trong từ điển đƣợc trả về nhƣ là một bộ (key, value) khi từ điển đƣợc duyệt qua, và chúng ta cũng có thể phân tán các phần tử của bộ (key, value) vào một hằng số có tên rõ ràng cho việc sử dụng trong thân vòng lặp for-in Ở đây, các khoá của từ điển đƣợc phân tán vào một hằng số gọi là animalName, và các giá trị của từ điển đƣợc phân tán vào một hằng số gọi là legCount:
13 let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] for (animalName, legCount) in numberOfLegs { println("\(animalName)s have \(legCount) legs")
} // ants have 6 legs // cats have 4 legs // spiders have 8 legs
Các phần tử trong từ điển (Dictionary) không bắt buộc phải được duyệt theo cùng thứ tự như khi chúng được chèn vào, vì từ điển vốn không có thứ tự cố định Việc duyệt qua các phần tử trong từ điển không đảm bảo trật tự khi lấy ra, do đó cần lưu ý khi xử lý dữ liệu Để hiểu rõ hơn về mảng và từ điển, bạn có thể tham khảo tài liệu Collection Types.
Trường Cao đẳng Công nghệ Thủ Đức cung cấp các chương trình đào tạo đa dạng phù hợp với nhu cầu của thị trường lao động Trong lập trình, vòng lặp for-in được sử dụng để duyệt qua các ký tự trong một chuỗi, giúp xử lý dữ liệu một cách dễ dàng và hiệu quả Ngoài ra, các môn học về từ điển cũng giúp sinh viên nắm vững kiến thức về xử lý dữ liệu từ khóa, phục vụ tốt cho công việc lập trình và phân tích dữ liệu.
Trong Swift, ngoài vòng lặp for-in, còn có vòng lặp for truyền thống của C với điều kiện và câu lệnh tăng dần, giúp kiểm soát luồng thực thi linh hoạt hơn Dạng vòng lặp này có hình thức chung như sau, phù hợp để thực hiện các nhiệm vụ lặp đi lặp lại dựa trên điều kiện cụ thể trong mã nguồn Swift của bạn.
1 for var index = 0; index < 3; ++index {
Trong Swift, cú pháp vòng lặp khác so với C khi không yêu cầu dùng dấu ngoặc đơn để bao quanh toàn bộ phần “initialization; condition; increment” Thay vào đó, dấu chấm phẩy được sử dụng để tách ba phần của định nghĩa vòng lặp, giúp đoạn mã rõ ràng và dễ đọc hơn.
Trường CĐ Công nghệ Thủ Đức
Chú ý rằng giá trị cuối cùng của chỉ số sau khi vòng lặp kết thúc là 3 chứ không phải 2 Lần cuối cùng lệnh tăng dần ++index được gọi, nó sẽ đặt chỉ số là 3; do đó, với điều kiện index < 3, vòng lặp sẽ kết thúc khi kết quả trả về là false, đảm bảo vòng lặp hoạt động chính xác.
2.6.2 Vòng lặp While - While Loops
Vòng lặp while trong Swift biểu diễn một tập các lệnh sẽ được thực thi liên tục cho đến khi điều kiện trở thành sai Loại vòng lặp này phù hợp nhất khi số lượng lần lặp không được xác định trước từ lần bắt đầu của phiên lặp Swift cung cấp hai kiểu vòng lặp while để xử lý các tình huống này, giúp lập trình viên kiểm soát quá trình lặp chính xác hơn.
+ while: đánh giá điều kiện của nó vào lúc bắt đầu mỗi lần đi qua vòng lặp
+ do-while: đánh giá điều kiện của nó vào lúc kết thúc mỗi lần đi qua vòng lặp
Vòng lặp while bắt đầu bằng việc đánh giá một điều kiện đơn, và nếu điều kiện này đúng (true), các lệnh trong vòng lặp sẽ được thực thi lặp đi lặp lại Quá trình này sẽ tiếp tục cho đến khi điều kiện đó trở thành sai (false), giúp kiểm soát luồng thực thi của chương trình một cách linh hoạt và hiệu quả.
Ví dụ: Cho đoạn code sau: var i = 1 while i