BÀI 1 : LÀM QUEN VỚI C
I. Cấu trúc chương trình C
Để học lập trình C bạn không cần biết trước 1 ngôn ngữ lập trình nào cả,bài đầu tiên chúng ta sẽ chỉ học cấu trúc của 1 chương trình C
Để học lập trình C bạn không cần biết trước 1 ngôn ngữ lập trình nào cả,bài đầu tiên chúng ta sẽ chỉ học cấu trúc của 1 chương trình C
1 Chương trình C thông thường sẽ gồm 2 phần chính, hàm main và bên ngoài hàm main. Hàm main có nhiệm vụ xử lý để thực hiện tính toán và xử lý, ngoài hàm main bao gồm các hàm phục vụ quá trình xử lý, các thư viện....
Ví dụ : stdio.h là thư viện chứa các hàm printf, scanf phục vụ quá trình nhập xuất dữ liệu.
II. Cách xác định biến đầu vào đâu ra
Để xử lý 1 chương trình ta phải xác định được các biến đầu vào đầu ra. Cái này rất cơ bản nhưng rất cần có tư duy khi bạn viết các hàm ngoài hàm main.
Ví dụ 1 hàm xử lý a+b = c. biến đầu vào là 2 biến a, b và biến kết quả là biến c. Hàm này được C định nghĩa là 1 hàm có giá trị trả về. 1 hàm chỉ để in ra chuỗi "Hello word!" không có đầu vào cũng như đầu ra, hàm này được C định nghĩa là 1 hàm kiểu void tức là k có giá trị trả về.
Ví dụ : stdio.h là thư viện chứa các hàm printf, scanf phục vụ quá trình nhập xuất dữ liệu.
II. Cách xác định biến đầu vào đâu ra
Để xử lý 1 chương trình ta phải xác định được các biến đầu vào đầu ra. Cái này rất cơ bản nhưng rất cần có tư duy khi bạn viết các hàm ngoài hàm main.
Ví dụ 1 hàm xử lý a+b = c. biến đầu vào là 2 biến a, b và biến kết quả là biến c. Hàm này được C định nghĩa là 1 hàm có giá trị trả về. 1 hàm chỉ để in ra chuỗi "Hello word!" không có đầu vào cũng như đầu ra, hàm này được C định nghĩa là 1 hàm kiểu void tức là k có giá trị trả về.
Nhìn vào phần mũi tên bạn hãy tự rút ra được kết luận của 2 hàm này, các hàm được khai báo ngoài hàm main.
Bài tập : Hãy code lại 2 ví dụ trên.
Bài tập : Hãy code lại 2 ví dụ trên.
BÀI 2 : CÁC KHÁI NIỆM CƠ BẢN TRONG C
Trong bài này chúng ta sẽ làm quen với 1 số khái niệm biến, mệnh đề, biểu thức...
I. Biến
Biến số có thể hiểu là đầu vào, đầu ra hoặc các biến trung gian, biến được định nghĩa bởi kiểu dữ liệu.
Ví dụ int a; định nghĩa 1 biến a có kiểu dữ liệu là int
Một số kiểu dữ liệu thông dụng int, float, double, string, char...
Trong biến ta sẽ có 1 số khái niệm về biến toàn cục, biến cục bộ, biến hằng số, biến static.
I. Biến
Biến số có thể hiểu là đầu vào, đầu ra hoặc các biến trung gian, biến được định nghĩa bởi kiểu dữ liệu.
Ví dụ int a; định nghĩa 1 biến a có kiểu dữ liệu là int
Một số kiểu dữ liệu thông dụng int, float, double, string, char...
Trong biến ta sẽ có 1 số khái niệm về biến toàn cục, biến cục bộ, biến hằng số, biến static.
Hình 1 : biến a là biến toàn cục được sử dụng trong tất cả các hàm mà không cần khai báo.
Hình 2: biến a là biến cục bộ của các hàm thành phần.
Hình 3: biến a là biến hằng, biến b là biến static.
Chú ý : Biến static là biến lưu giá trị sau mỗi lần gọi hàm. biến const không thể thay đổi giá trị.
II. Mệnh đề
Mệnh đề trong C là biểu thức có giá trị TRUE hoặc FALSE.
Một số toán tử liên quan đến mệnh đề là ==, &&, ||, !=...
Ví dụ : a==0 là mệnh đề, nếu a=0 thì nó trả về TRUE và ngược lại.
((a==0)&&(b==0)) mệnh đề này là AND MỆNH ĐỀ trả về TRUE khi cả 2 mệnh đề nhỏ được thỏa mãn.
((a==0)||(b==0)) OR MỆNH ĐỀ trả về TRUE khi 1 trong 2 đúng.
Chú ý : Cần phân biệt rõ giữa AND OR MỆNH ĐỀ và AND OR SỐ HỌC.
Ví dụ 1&2 = 0, vì 1 hệ nhị phân là 01, 2 hệ nhị phân là 10, toán tử & là AND BIT nên kết quả sẽ là 00.
1&&2 = 1, bất kì số nào khác 0 thì mệnh đề có giá trị TRUE, TRUE AND TRUE là TRUE, tức là 1.
III. Biểu thức
Biểu thức là trong C đơn giản là các phép cộng, trừ, nhân, chia, dịch bit... +, -, *, /, >>, <<.
Bài tập : Nhập vào 1 số kiểm tra số đó chẵn hay lẻ, và in ra, sử dụng phép and để kiểm tra.
Gợi ý: số 6 là số chẵn có mã nhị phân là 110 khi and với 1 sẽ ra 0, số lẻ 7 có mã nhị phân 111 and với 1 sẽ ra 1.
Hình 2: biến a là biến cục bộ của các hàm thành phần.
Hình 3: biến a là biến hằng, biến b là biến static.
Chú ý : Biến static là biến lưu giá trị sau mỗi lần gọi hàm. biến const không thể thay đổi giá trị.
II. Mệnh đề
Mệnh đề trong C là biểu thức có giá trị TRUE hoặc FALSE.
Một số toán tử liên quan đến mệnh đề là ==, &&, ||, !=...
Ví dụ : a==0 là mệnh đề, nếu a=0 thì nó trả về TRUE và ngược lại.
((a==0)&&(b==0)) mệnh đề này là AND MỆNH ĐỀ trả về TRUE khi cả 2 mệnh đề nhỏ được thỏa mãn.
((a==0)||(b==0)) OR MỆNH ĐỀ trả về TRUE khi 1 trong 2 đúng.
Chú ý : Cần phân biệt rõ giữa AND OR MỆNH ĐỀ và AND OR SỐ HỌC.
Ví dụ 1&2 = 0, vì 1 hệ nhị phân là 01, 2 hệ nhị phân là 10, toán tử & là AND BIT nên kết quả sẽ là 00.
1&&2 = 1, bất kì số nào khác 0 thì mệnh đề có giá trị TRUE, TRUE AND TRUE là TRUE, tức là 1.
III. Biểu thức
Biểu thức là trong C đơn giản là các phép cộng, trừ, nhân, chia, dịch bit... +, -, *, /, >>, <<.
Bài tập : Nhập vào 1 số kiểm tra số đó chẵn hay lẻ, và in ra, sử dụng phép and để kiểm tra.
Gợi ý: số 6 là số chẵn có mã nhị phân là 110 khi and với 1 sẽ ra 0, số lẻ 7 có mã nhị phân 111 and với 1 sẽ ra 1.
BÀI 3 : NHẬP XUẤT DỮ LIỆU
Bài này chúng ta sẽ học các hàm nhập xuất dữ liệu trong C. Khi sử dụng ta phải khai báo thư viện stdio.h
1, Hàm printf.
hàm printf dùng để hiển thị ra cửa sổ console.
printf("chuỗi định dạng",tham số 1, tham số 2,... , tham số n);
Một số chuỗi định dạng đơn giản :
%c : Ký tự đơn
%s : Chuỗi
%d : Số nguyên thập phân có dấu
%f : Số chấm động (ký hiệu thập phân)
Một số kí tự đặc biệt
\n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên.
\t : Canh cột tab ngang.
\r : Nhảy về đầu hàng, không xuống hàng.
\a : Tiếng kêu bip.
Ví dụ printf("Developer tizen \n C programing languages");
Kết quả :
Developer tizen
C programing languages
Kí tự \n sẽ làm cho đoạn sau xuống dòng, kể cả dấu cách sau nó.
2, Hàm scanf
Hàm scanf cho phép chúng ta nhập dữ liệu từ bàn phím.
scanf("Chuỗi định dạng", &tham số 1, &tham số 2, ...., &tham số n);
Ví dụ scanf("%d",&number); cho phép nhập vào biến number kiểu int.
scanf("%f%f",&number1, &number2); cho phép nhập vào biến number1, number2 kiểu float.
Ngoài ra còn 1 số hàm nhập xuất chuỗi như gets, puts, cin.getline... sẽ giới thiệu sau.
Bài tập :
1, Viết chương trình nhập vào 2 số nguyên và phép toán +, -, *, / và in ra kết quả
Ví dụ : nhap vao so 1 : 1
nhap vao so 2 : 2
nhap vao phep toan: +
1+2=3
2, Viết chương trình in ra hệ nhị phân của 1 số hệ 10.
1, Hàm printf.
hàm printf dùng để hiển thị ra cửa sổ console.
printf("chuỗi định dạng",tham số 1, tham số 2,... , tham số n);
Một số chuỗi định dạng đơn giản :
%c : Ký tự đơn
%s : Chuỗi
%d : Số nguyên thập phân có dấu
%f : Số chấm động (ký hiệu thập phân)
Một số kí tự đặc biệt
\n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên.
\t : Canh cột tab ngang.
\r : Nhảy về đầu hàng, không xuống hàng.
\a : Tiếng kêu bip.
Ví dụ printf("Developer tizen \n C programing languages");
Kết quả :
Developer tizen
C programing languages
Kí tự \n sẽ làm cho đoạn sau xuống dòng, kể cả dấu cách sau nó.
2, Hàm scanf
Hàm scanf cho phép chúng ta nhập dữ liệu từ bàn phím.
scanf("Chuỗi định dạng", &tham số 1, &tham số 2, ...., &tham số n);
Ví dụ scanf("%d",&number); cho phép nhập vào biến number kiểu int.
scanf("%f%f",&number1, &number2); cho phép nhập vào biến number1, number2 kiểu float.
Ngoài ra còn 1 số hàm nhập xuất chuỗi như gets, puts, cin.getline... sẽ giới thiệu sau.
Bài tập :
1, Viết chương trình nhập vào 2 số nguyên và phép toán +, -, *, / và in ra kết quả
Ví dụ : nhap vao so 1 : 1
nhap vao so 2 : 2
nhap vao phep toan: +
1+2=3
2, Viết chương trình in ra hệ nhị phân của 1 số hệ 10.
BÀI 4 : VÒNG LẶP FOR, WHILE, DO ... WHILE
Bài này chúng ta sẽ tìm hiểu về các cấu trúc vòng lặp được hỗi trợ trong C.
1, For
Câu lệnh for ( biểu thức 1 ; biểu thức 2; biểu thức 3)
{ Khối lệnh;}
Biểu thức 1 : gán giá trị ban đầu cho biến điều khiển
Biểu thức 2 : biểu thức kiểm tra vòng lặp chỉ được thực hiện khi giá trị biểu thức 2 là TRUE.
Biểu thức 3 : thay đổi giá trị của biến điều khiển
Ví dụ: for(i=0; i<10; i++) vòng lặp chạy từ 0 - 9.
for(i=0; i<10; i=2) ? sẽ là vòng lặp thế nào ( gõ thử để kiểm tra ).
2, While và do while
while(biểu thức) do{Khối lệnh}
{ Khối lệnh} while(biểu thức);
Bản chất while và do while là giống nhau đều thực hiện cho đến khi biểu thức có giá trị là FALSE. Nhưng vòng lặp while kiểm tra biểu thức trước khi thực hiện khối lệnh, trong khi do...while thì thực hiện khối lệnh trước khi kiểm tra biểu thức.
Chú ý : 1 số từ khóa thường gặp trong vòng lặp:
break : khi gặp từ khóa này thì lập tức thoát khỏi vòng lặp.
continue : khi gặp từ khóa này thì lập tức quay trở lại đầu vòng lặp bỏ qua các lệnh còn lại trong thân hàm.
1, For
Câu lệnh for ( biểu thức 1 ; biểu thức 2; biểu thức 3)
{ Khối lệnh;}
Biểu thức 1 : gán giá trị ban đầu cho biến điều khiển
Biểu thức 2 : biểu thức kiểm tra vòng lặp chỉ được thực hiện khi giá trị biểu thức 2 là TRUE.
Biểu thức 3 : thay đổi giá trị của biến điều khiển
Ví dụ: for(i=0; i<10; i++) vòng lặp chạy từ 0 - 9.
for(i=0; i<10; i=2) ? sẽ là vòng lặp thế nào ( gõ thử để kiểm tra ).
2, While và do while
while(biểu thức) do{Khối lệnh}
{ Khối lệnh} while(biểu thức);
Bản chất while và do while là giống nhau đều thực hiện cho đến khi biểu thức có giá trị là FALSE. Nhưng vòng lặp while kiểm tra biểu thức trước khi thực hiện khối lệnh, trong khi do...while thì thực hiện khối lệnh trước khi kiểm tra biểu thức.
Chú ý : 1 số từ khóa thường gặp trong vòng lặp:
break : khi gặp từ khóa này thì lập tức thoát khỏi vòng lặp.
continue : khi gặp từ khóa này thì lập tức quay trở lại đầu vòng lặp bỏ qua các lệnh còn lại trong thân hàm.
Kết quả của hàm bên trái là 1
Kết quả của hàm bên phải là 1345678910. ( Tự code lại và giải thích )
Ngoài ra còn return và go to sẽ nói ở các bài tiếp theo.
Kết quả của hàm bên phải là 1345678910. ( Tự code lại và giải thích )
Ngoài ra còn return và go to sẽ nói ở các bài tiếp theo.