Phần 1: “Lần đầu” với lập trình Objective-C | Lập Trình TV

ICTSharing

Chúng tôi rất vui vì các bạn đọc seri bài tự học Objective-C. Seri này gồm 6 bài viết rất chi là đơn giản giúp cho các bạn LTV dù chỉ có những kỹ năng lập trình cơ bản cũng sẽ dễ dàng hiểu Objective-C và nhanh chóng xây dựng được những chương trình đơn giản.  Đừng chần chừ gì nữa, chúng ta cùng bắt tay vào học ngay nào!

Objective-C là gì?

Nếu bạn đang đọc bài viết này thì tôi có thể chắc chắn gần như đến 99% là bạn đã có chút ít kinh nghiệm liên quan đến lập trình cũng như đã biết 1 vài ngôn ngữ lập trình thông dụng như C hay Java. Tuy nhiên nếu bạn là fresher hay beginner thì cũng chả sao bởi vì ai trong cuộc đời mà chả có “lần đầu”. Nào là “lần đầu tập đi”, “lần đầu tập nói”, lớn hơn một chút thì “lần đầu tập yêu” và rồi tiếp theo là “lần đầu lập trình”; đúng là “lần đầu” thì bỡ ngỡ thật nhưng từ lần sau chắc sẽ ổn hơn (chúng tôi hy vọng thế!!!). Tất cả điều chúng tôi mong đợi đó là “độ máu” của các bạn vớiMacOS và Objective-C. Vậy Objective-C là gì? và nó có giống như C không?

Objective-C là một ngôn ngữ lập trình hướng đối tượng (OOP) được xây dựng dựa trên ngôn ngữ lập trình C. Tuy nhiên ta phải thấy sự khác nhau giữa C và Objective-C ở chỗ Objective-C là ngôn ngữ lập trình hướng đối tượng còn C lại là ngôn ngữ lập trình hướng thủ tục. Objective-C là ngôn ngữ chính được sử dụng để phát triển hệ điều hành MacOS X cũng như iOS (hệ điều hành chạy trên các thiết bị iPhone, iPod hay iPad). Thực chất, nó là ngôn ngữ được dùng để phát triển một hệ điều hành khác mà Apple đã mua về, NeXTSTEP, và hệ điều hành này đã trở thành một phần rất quan trọng giúp cho việc hình thành hệ điều hành chính thức MacOS của Apple sau này.
Do Objective-C được phát triển từ C nên chúng ta có thể thoải mái sử dụng C trong chương trình viết bằngObjective-C và tất nhiên chương trình sẽ chạy ngon lành. Objective-C compiler sẽ chuyển tất cả mã lệnh viết bằng C sang thành mã biên dịch bằng Objective-C. Chính vì vậy mà Objective-C có đầy đủ sức mạnh của ngôn ngữ C và những cải tiến của một ngôn ngữ lập trình hướng đối tượng hiện đại.
Nếu vẫn còn cảm thấy mơ hồ thì hay ghi nhớ câu thần chú như sau: tất cả những thứ C có thể làm được thìObjective-C cũng sẽ làm được, tuy nhiên chiều ngược lại chưa chắc đã đúng.

Bạn cần phải chuẩn bị những gì để học Objective-C?

Trong suốt chuỗi bài học này, chúng tôi sẽ không quá tập trung vào việc demo chi tiết quá trình phát triển các ứng dụng cho iPhone hay iPad. Thay vào đó, chúng tôi sẽ chú trọng tới ngôn ngữ Objective-C và chính bởi điều này mà tất cả ta cần chỉ là một máy tính Mac với một bộ compiler như GCC. Nếu bạn đã cài bộ công cụ phát triển cho Mac (Xcode) thì bạn hoàn toàn yên tâm là máy Mac của bạn đã có GCC complier và bạn có thể bắt tay ngay vào họcObjective-C. Về mặt kinh nghiệm lập trình, chúng tôi cũng không bắt buộc bạn phải có quá nhiều kinh nghiệm vềOOP hay đã rất thành thạo C. Tuy nhiên nếu bạn đã OK về hai vấn đề trên thì sẽ là một lợi thế lớn.
Trong trường hợp bạn dùng Windows thì chúng tôi khuyên bạn nên dùng compiler khác như CygWin hay MinGW để dịch chương trình Objective-C. Tuy nhiên, chúng tôi khuyến cáo các bạn nên sử dụng hệ thống Mac vì như vậy bạn sẽ tận dụng được hết khả năng cũng như hiệu suất của ngôn ngữ Objective-C.

Compile chương trình đầu tiên viết bằng Objective-C

Giả sử bạn đã viết xong một chương trình bằng Objective-C, vậy làm thế nào bạn có thể dịch và chạy chương trình đó. Điều đầu tiên bạn phải sure là máy tình của mình có cài GCC compiler. Sau đó ta sẽ tiến hành dịch và chạy dòng lệnh chạy chương trình trên cửa sổ tương tác theo kiểu command line. Tất cả các ví dụ tôi demo trong chuỗi bài học này, chúng tôi đều chạy trên môi trường Mac và bạn hoàn toàn có thể thực thi các công việc liên quan đến khởi tạo và setup chương trình ban đầu thông qua công cụ mang tính trực quan hơn. Đó là bộ công cụ Xcode giúp bạn có thể dễ dàng phát triển những ứng dụng trên nền tảng Mac.
Tuy nhiên điều bắt buộc đối với lập trình viên khi mới bắt đầu học ngôn ngữ lập trình là phải học cách chạy trên môi trường dòng lệnh thông qua command line. Công cụ chúng tôi sử dụng trên MacOS là Terminal. Để chạy chương trình này bạn có thể vào Applications> Utilities> Terminal. Chương trình này giống chương trình cmd trong Windows.
Bước 1: Trong cửa sổ Terminal, gõ lệnh
cd /Users/MyName/Desktop/Test
Lệnh cd giúp bạn có thể nhảy vào thư mục theo đường dẫn sau lệnh cd.
Bước 2: Compile chương trình viết bằng Objective-C. Giả sử chương trình của bạn có tên là: inputfile.m (source file sẽ có đuôi là .m). Tiếp tục vẫn sử dụng cửa sổ Terminal, bạn gõ lệnh sau:
gcc inputfile.m -o outputfile
Kết thúc lệnh này sẽ GCC compiler sẽ dịch ra chương trình chạy có tên là outputfile.
Bước 3: Để chạy chương trình, bạn chỉ cần gõ lệnh sau trên cửa sổ Terminal.
./outputfile

Cơ bản về lập trình Objective-C

Objective-C thực sự không quá khó để học. Khi bạn đã nắm vững những khái niệm và nguyên tắc lập trình cơ bản, bạn có thể tiếp tục tiến xa hơn nữa. Tuy nhiên bạn phải có những khải niệm căn bản về ngôn ngữ lập trình C. Và đó là phần còn lại trong buổi học hôm nay bởi vì những gì cơ bản của C cũng sẽ được sử dụng lại trong Objective-C.
Chúng ta hãy nhìn vào chương trình cơ bản viết bằng C sau đây:
Sau khi chạy chương trình ta sẽ thấy một thông điệp “Hello, World” trên cửa sổ Terminal.
Bạn có thể bắt đầu việc tạo một chương trình Objective-C mới bằng cách khởi động Xcode, sau đó tạo project mới. Tiếp tục bạn chọn MacOS > Application> Terminal Command Tool. Chú ý bạn có thể chọn project type là C (nếu viết theo kiểu của C như ví dụ ở trên) hoặc là Foundation (nếu muốn viết theo kiểu Objective-C và sử dụng những đối tượng có sẵn trong foundation framework của Objective-C).
Bạn thấy đó, chương trình Objective-C viết theo cú pháp của C nhìn rất quen thuộc có phải không? Điều duy nhất bạn phải làm là mau chóng recall lại những kiến thức cơ bản về C như các hàm IO hay khái niệm về biến.

Biến (Variables)

Phần tiếp theo ta sẽ tìm hiểu về biến. Biến được sử dụng cho mục đích lưu trữ các giá trị để chương trinh có thể thao tác trên các giá trị đó. Khi khai báo các biến ta phải chỉ ra tên của biến và kiểu dữ liệu của biến. Nói chung làm việc với các biến có kiểu dữ liệu cơ bản hoàn toàn giống với C. Một số kiểu dữ liệu cơ bản như sau:
int – dùng để chứa các số nguyên
char – dùng để chứa ký tự
float – dùng để chứa các số có giá trị thập phân
double – như kiểu float nhưng có phần thập phân chính xác hơn
Ví dụ:

Khi in giá trị của biến trên màn hình cửa sổ Terminal chúng ta phải chỉ ra định dạng giá trị cần in (bắt đầu bằng ký tự %). Chú ý một số định dạng thông dụng như sau:
%i: int
%f: float
%e: double
%c: char

Câu lệnh điều kiện

Khi một chương trình cần phải đưa ra quyết định lựa chọn các tình huống xử lý, chúng ta sẽ sử dụng một điều kiện. Nếu không có điều kiện, mỗi khi bạn chạy chương trình thì kết quả sẽ là giống hệt nhau (giống như ta xem đi xem lại một bộ phim nhiều lần). Bằng cách đưa ra những quyết định dựa trên điều kiện liên quan đến giá trị của các biến, chúng ta có thể thay đổi sự thực thi của chương trình – điều này gần giống như cuộc sống hàng ngày khi bạn lên một kế hoạch nào đó: nếu như thế này thì làm gì còn không thì làm gì?
Cầu lệnh điều kiện đơn giản nhất là: câu lệnh if. Câu lệnh này sẽ xét xem nếu điều kiện trong câu lệnh if là true thì sẽ thực một thao tác cụ thể nào đó. Ví dụ:
ngoài ra để xử lý điều kiện một cách tường minh và đầy đủ nhất ta có thể sử dụng cấu trúc lệnh if..else. Cấu trúc lệnh này cung cấp cho ta xử lý của cả 2 trường hợp: nếu điều kiện đúng thì làm gì và điều kiện sai thì làm gì.

Câu lệnh lặp

Bây giờ ta tiếp tục tìm hiểu một trường hợp khác mà các chương trình rất hay gặp phải. Đó là khi một thao tác sẽ phải lặp đi lặp lại nhiều lần (tất nhiên ta phải kiểm soát được số lần lặp) thì lập trình viên cần dùng cấu trúc lệnh nào cho phù hợp? Trong trường hợp này chúng ta có thể dùng cấu trúc lệnh lặp để xử lý tình huống nêu trên.
Có 3 loại vòng lặp thông dụng là: forwhile và do..while. Về mục đích thì cả 3 loại vòng lặp này đều có chung một nhiệm vụ là lặp đi lặp lại một đoạn mã n lần (cố gắng tránh vòng lặp vô tận) tuy nhiên cấu trúc của 3 lệnh này có khác nhau chút xíu.
Vòng lặp for:
Vòng lặp while:
Vòng lặp do..while:

Con trỏ (pointer)

Con trỏ là một khái niệm khá trừu tượng và rất khó của ngôn ngữ lập trình C. Do Objective-C dùng lại rất nhiều tính chất và kỹ thuật của C nên không quá ngạc nhiên ta gặp lại con trỏ ở trong Objective-C. Nếu bạn là fresher trong lĩnh vực lập trình thì chúng tôi khuyên bạn nên quay lại đọc kỹ phần con trỏ trong C để có thể có cái nhìn rõ ràng hơn về vấn đề này.
Như các bạn đã đọc phần đầu thì ta đã biết khái niệm về biến. Biến dùng để lưu trữ giá trị cho mục đích tính toán và xử lý dữ liệu. Thực tế, khi ta tạo một biến có nghĩa là ta đã yêu cầu hệ thống cấp phát một ô nhớ nhằm lưu trữ giá trị của biến đó. Tất cả các thao tác liên quan đến dữ liệu trên ô nhớ đó ta sẽ thực hiện thông qua tên biến.
Trong C, ta có thể thực hiện thao tác với dữ liệu trực tiếp trên ô nhớ thông qua con trỏ. Con trỏ là gì? Thực chất, con trỏ là một kiểu dữ liệu đặc biệt vì nó không lưu trữ những giá trị bình thường mà nó dùng để lưu địa chỉ của biến khác. Điều đó có nghĩa là ta có thể thao tác với dữ liệu trên một ô nhớ thông qua con trỏ đang nắm giữ địa chỉ của ô nhớ đó. Ví dụ:
int foo = 123; // This is an integer variable
int *ptr = &foo; // This is a pointer to an integer variable
Lưu ý:Series 6 bài viết về lập trình Objective-C này được sưu tầm từ nguồn trang:http://az4you.wordpress.com. Loạt bài viết nhằm phục vụ cho các bạn những kiến thức cơ bản ban đầu trước khi bắt tay vào học lập trình ứng dụng cho iOS (iPhone/iPad). ICTSharing xin thay mặt những người yêu lập trình Objective C gửi lời cảm ơn tới các tác giả gốc của các bài viết này! Các bạn cần lưu ý, dù là lập trình bằng bất kỳ ngôn ngữ nào, cho thiết bị nào thì nguyên lý cơ bản của nó cũng không có nhiều sự khác biệt, vì thế nếu bạn đã nắm vững một ngôn ngữ thì các ngôn ngữ còn lại sẽ không quá khó khăn nếu bạn thực sự tập trung. Trong thời gian chờ đợi ICTSharing ra mắt các video về hướng dẫn lập trình trên iOS, các bạn hãy tập trung nắm vững các phần cơ bản của ngôn ngữ Objective-C nhé.

«
Bài sau
Newer Post
»
Bài trước
Older Post

Bình luận

No comments :