Sunday, September 10, 2017

Bài 1 - Let, var, toán tử, vòng lặp

Bạn vào địa chỉ sau để đăng ký tài khoản Apple miễn phí rồi tải Xcode về: https://appleid.apple.com/account
Hiện tại đang là Xcode 8 nhưng tôi vẫn dùng Xcode 7. Điều đó không ảnh hưởng gì đến code, Swift cơ bản vẫn như vậy.
Nên mua máy Mac màn hình càng to càng tốt. Máy Mac để bàn thường có màn hình to hơn Laptop nhưng nếu muốn mang máy đến lớp bạn thì bạn cần mua Laptop.
Nếu đã từng biết Android hoặc Java rồi, bạn không cần đến lớp nữa, search mạng hoặc học online là đủ. Đọc blog này cũng là cách học tốt. Tôi chỉ ra cho bạn, đặc biệt khi mới học ios, cách đơn giản nhất, mà khi bạn search mạng người ta thường không nói cho người mới học.
Mở Xcode ra, vào File > New > Playground đặt tên tùy ý, màn hình trông như sau

Bên trái là các dòng code, bên phải Xcode tự chạy luôn kết quả ra màn hình chữ “Hello, playground”. Nếu trong lúc làm thấy chương trình chưa chạy, bạn ấn nút tam giác màu xanh ở bên trái phía dưới. Gõ thêm các dòng sau:
let str2="Bài đầu tiên"
var cong=str+str2
Di chuột đến gạch mờ ngăn cách giữa code và chỗ chữ bên ngoài, kéo cho phần chữ rộng ra chút.Trong lập trình các chữ str, str2,cong gọi là biến, dòng var str=”Hello, playground” gọi là khai báo biến.
Bây giờ hãy sửa chữ str thành st, sẽ có một dấu đỏ báo lỗi chỗ chữ str. Chương trình không hiểu str là gì. Một biến không thể sử dụng nếu nó chưa được khai báo.

Lại thêm chữ r vào để nó thành str, lỗi sẽ hết.
Hãy gõ thêm các dòng
str2="tiếp theo"
Một dấu đỏ lại xuất hiện, di chuột nháy vào đó, Xcode báo không thể gán giá trị cho str2 và gợi ý chuyển thành var, nếu bạn nháy đúp vào dòng fix it, let str2 sẽ thành var str2. Let có nghĩa là hằng, bạn không thể gán, đổi giá trị cho biến let, còn var thì có thể thay đổi.
Gõ tiếp
let a=8
let b=10
var tong=a+b
Xcode tự chạy ra kết quả bên phải.
Swift chỉ phân biệt let và var, cái gì không đổi giá trị là let, đổi là var. Điều này rất khác với Java hay các ngôn ngữ khác nơi bạn luôn phải khai báo rõ kiểu dữ liệu.
Bây giờ hãy gạch hai gạch chéo trước dòng var tong=a+b, nó sẽ thành màu xanh mờ, bên phải cũng không hiện kết quả nữa. Ta gọi hai gạch đó là dấu comment.

Khi bạn lập trình, code có thể rất dài, phức tạp, để nhắc mình chỗ này đang làm gì, bạn comment vào đó. Hôm sau làm tiếp xem lại chỗ cũ dễ nhớ ra.
Bất cứ dòng nào không dùng nữa cũng có thể comment, nếu xóa đi lúc sau có thể bạn lại cần, vì thế comment để nó đấy sẽ tiện hơn.
Hãy thêm vào dòng sau
let chu=”8
let tong=b+chu
Xcode báo lỗi vì biến chu là dạng String, không thể đem cộng với b là dạng số nguyên.
Vậy Swift phân biệt số và chữ nhờ cách bạn khai báo biến. Nếu có dấu ngoặc kép, đó là dạng chuỗi, dù trong ngoặc là số.
Để chuyển một biến dạng chuỗi thành số ( tất nhiên nó phải là số viết ở dạng String), ta dùng lệnh:
let number=Int(String)
Sửa dòng cuối thành tong=20, bỏ comment dòng var tong=a+b, ở trên biến tong có giá trị 18, ở dưới tong lại bằng 20 do ta đã gán giá trị mới.
Chương trình đọc các dòng lệnh từ trên xuống dưới, mỗi khi bạn gán giá trị mới cho biến thì giá trị cũ sẽ mất đi.
Gõ tiếp xuống dưới
if(a>b){
  tong=10
 }
   else{
 tong=100
 }
Nếu chưa thấy chạy, nháy chuột vào dấu tam giác xanh bên trái phía dưới, khỏi phải chờ. Ta thấy kết quả là số 100.

Bây giờ xóa đoạn else đi, ghi chữ tong xuống dưới bên ngoài lệnh if, bạn thấy màn hình bên phải vẫn ra số 20.
Đó chính là sự khác nhau của lệnh if có đuôi else và không có đuôi else.
Nếu có đuôi else, khi lệnh if không đúng, tức a không lớn hơn b thì tong sẽ bằng 100. Nếu chỉ có lệnh if thì tong sẽ vẫn là 20.
Ban đầu bạn có thể lúng túng không biết lúc nào cần đuôi else, lúc nào không. Cứ thực hành những code tương tự thế này bạn sẽ tự biết khi nào cần, khi nào không.
Gõ tiếp
var c=0
for i in0..<5 {
c=c+i
}
c

Bên phải chạy ra chữ 5 times và số 10.Vòng lặp for dùng để lặp lại một lệnh nào đó. Ở đây ta cộng các giá trị i từ 0 đến 4. Bạn hãy tự nghĩ sẽ thấy, bắt đầu chạy nó sẽ là i=0, c+i là 0+0 vẫn là 0, tiếp theo i=1,2,3,4 thì c sẽ là 1,3,6,10 cứ thế cộng vào.
Tức là nó chạy từng giá trị i một, nó chỉ là một lệnh nhưng tăng dần i lên để lặp lại nhiều lần.
Bây giờ thêm vào trong for lệnh if
if(i%2==0)
Dấu % có nghĩa là chia lấy phần dư, nếu chia 2 số dư bằng 0 tức là số chẵn, bằng 1 là số lẻ.
Vì ta chỉ cộng các số chẵn nên kết quả là 6, tức 2+4

Sửa if thành if(i%2==1), màn hình in ra số 4, tức tổng của hai số lẻ 1 và 3.
If ở đây không có đuôi else, vì ta không quan tâm những số còn lại, chỉ lấy những số thỏa điều kiện để tính tổng thôi.
Gõ tiếp
var d=1.8
var e=d/7

Màn hình chạy ra số thập phân. Như vậy dù là số nguyên hay thập phân ta cũng chỉ có dùng var hoặc let, Swift tự biết khi nhìn cái số đó.
Dấu nhân là dấu * trên số 8, chia là dấu / bạn tự thực hành thêm
Swift không cần dấu chấm phảy khi kết thúc câu lệnh, tuy tiện hơn Java nhưng Xcode lại có bất tiện khác. Đó là khi khai báo biến, sau chữ let hay var bạn phải ấn hai dấu cách trắng mới đặt tên biến được. Nếu chỉ một dấu cách trắng là lỗi. Xcode còn nhiều hạn chế khác như bạn phải tắt chức năng auto suggestion gợi ý lệnh của nó đi, nếu không nó cứ bung ra rất bất tiện.

Bài tập
Dùng for tính tổng các số chẵn, lẻ từ 1-100

Tạo Strong cacngay=”Thứ hai”, tạo một biến number=0, dùng lệnh if, nếu cacngay là thứ hai, number bằng 2, thứ ba bằng 3, cứ vậy, chủ nhật số 8. Đổi giá trị String cacngay để thấy kết quả hiện ra khác nhau.

No comments:

Post a Comment