Professional Documents
Culture Documents
2. C languages :
while |
3. Khai báo biến :
o Vị trí khai báo: Biến thường được khai báo ở đầu chương
trình, đầu hàm hoặc khối lệnh.
o Có 2 loại biến theo vị trí khai báo:
o Biến toàn cục: biến khai báo ở ngoài các hàm, các khối
lệnh. Chu trình sống của chúng từ lúc bắt đầu chương
trình tới khi kết thúc chương trình.
o Biến cục bộ: biến khai báo bên trong các hàm, các khối
lệnh. Chu trình sống từ khi bắt đầu khối lệnh tới khi khối
lệnh được thực hiện xong.
o Cú pháp khai báo biến:
o Cú pháp :
switch (<biểu thức nguyên>) {
case <giá trị 1>: <hành động 1>; break; /*
có thể không có câu lệnh này*/ c
case <giá trị 2>: <hành động 1>; break; /*
có thể không có câu lệnh này*/
....
default: <hành động mặc định>; break; /*
có thể không có câu lệnh này*/
}
Ví dụ :
1. #include < stdio.h >
2. int main() {
3. int chuSo;
4. printf("Nhap chu so: ");
5. scanf("%d", & chuSo);
6. switch (chuSo) {
7. case 0: printf("Khong");
8. break;
9. case 1: printf("Mot");
10.break;
11.case 2: printf("Hai");
12.break;
13.case 3: printf("Ba");
14.break;
15.case 4: printf("Bon");
16.break;
17.case 5: printf("Nam");
18.break;
19.case 6: printf("Sau");
20.break;
21.case 7: printf("Bay");
22.break;
23.case 8: printf("Tam");
24.break;
25.case 9: printf("Chin");
26.break;
27.default: printf("Khong phai chu so!");
28.}
29.return 0;
30.}
Ví dụ :
int main(){
for(int i = 0; i < 3; i++){
printf("BkitSoftware!\n");
} // Continue ...
printf("Ket thuc vong lap!\n");
}
Vòng lặp lại trong khi điều kiện là đúng. Khi điều kiện trở thành
sai, điều khiển chương trình sẽ chuyển đến dòng ngay sau vòng
lặp.
Ví dụ :
int main(){
int number = 1;
while (number <= 10){
if(number % 2 == 1){
printf("%d\t", number);
}
number++; }
}
c. Vòng lặp do…while :
o Cú pháp :
do {
statement(s);
} while( condition );
biểu thức điều kiện xuất hiện ở cuối vòng lặp, do đó (các) câu lệnh
trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm
tra.
Nếu điều kiện là đúng, luồng điều khiển nhảy trở lại để làm, và
(các) câu lệnh trong vòng lặp thực hiện lại. Quá trình này lặp lại
cho đến khi điều kiện đã cho trở thành sai.
Ví dụ :
int main(){
int number;
do{
printf("\nNhap number = ");
scanf("%d", &number);
}while(number < 1);
printf("\nnumber = %d", number);
}
IV. FUNCTIONS
Cú pháp :
kiểu_trả_về tên_hàm(danh_sách_tham_số)
{ nội dung của hàm }
Trong đó :
kiểu_trả_về: xác định kiểu dữ liệu của giá trị trả về bởi
hàm.
tên_hàm: định danh hàm; tên hàm nên được đặt với nội
dung miêu tả hoạt động của hàm
danh_sách_tham_số: là các tham số được truyền vào hàm
để sử dụng bên trong nội dung hàm
Ví dụ :
1. #include <stdio.h>
2. int tinhBinhPhuong(int x) {
3. int ketQua; ketQua = x*x;
4. return ketQua; }
5. int main() {
6. int i;
7. for(i = 1; i <= 10; i++) {
8. printf("Binh phuong cua %d la: %d\n", i, tinhBinhPhuong(i));}
9. return 0; }
Tham số truyền vào hàm
Trong ví dụ trên, giá trị của tham số được truyền vào hàm là i.
Khi đó, i tương đương với x bên trong hàm tinhBinhPhuong
Cũng trong ví dụ trên, câu lệnh để trả về giá trị của hàm
là return ketQua;.
Biểu thức theo sau return chính là giá trị được trả về bởi hàm.
Và một khi hàm được trả về giá trị (gặp return) thì hàm sẽ
dừng ngay lập tức.
Kiểu dữ liệu trả về của hàm có thể là một những kiểu dữ liệu cơ
bản như: int, char, float, double, void, array...
Trong đó, nếu hàm trả về kiểu dữ liệu void, thì hiểu là hàm đó
không trả về giá trị nào cả.
Sau đó, bạn có thể định nghĩa hàm luôn tại vị trí khai báo hoặc ở chỗ
khác (phía dưới phần code gọi hàm)
Ví dụ :
#include <stdio.h>
int i;
return 0; }
int tinhBinhPhuong(int x) {
int ketQua;
ketQua = x*x;
return ketQua;
}
Gọi hàm :
Sau khi khai báo hàm, bạn có thể gọi nó với tham số truyền vào
tương ứng và kết thúc bằng dấu chấm phẩy (;)
Chú ý:
Chỉ có một giá trị duy nhất được trả về bởi hàm
Một chương trình có thể có nhiều hàm
Một hàm có thể được gọi bên trong một hàm khác. Hay nói cách
khác là trong một hàm có thể gọi nhiều hàm con.
Biến toàn cục là biến được khai báo bên ngoài tất cả các hàm.
Nó có thời gian sống là toàn bộ chương trình.
Khi đó, chỉ giá trị của tham số là được truyền vào hàm. Mọi thay đổi ở
trong hàm chỉ có tác dụng với biến tạm dùng để lưu những giá trị đó mà
không làm thay đổi biến gốc truyền vào.
Ví dụ :
int x = 6;
int y = 10;
hàm hoán đổi trên sẽ cho kết quả sai. Bởi vì tham số x, y được truyền
vào theo kiểu giá trị. Bạn có thể hình dung là bên trong hàm sẽ tạo ra
biến x_ là copy của x và biến y_ là copy của y.
Rồi khi hoán đổi, bạn chỉ thực hiện hoán đổi trên những biến tạm x_ và
y_. Biến truyền vào là x, y không bị thay đổi giá trị.
Ví dụ :
#include <stdio.h>
// Khai bao ham truyen tham so kieu con tro
void hoanDoi(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int x = 9;
int y = 6;
// Hoan doi gia tri cua 2 bien
hoanDoi(&x, &y);
printf("x=%d\n", x);
printf("y=%d\n", y);
return 0;
}
a[0] = 2;
a[0] = 3;
int main() {
change3(a);
return 0;
V. POINTER
1. Địa chỉ của biến trong C
Để hiểu và sử dụng được con trỏ trong C, trước tiên bạn cần hiểu về khái
niệm địa chỉ ở trong C. Xem ví dụ :
#include <stdio.h>
int main()
{
int number = 5;
printf("Gia tri cua number = %d", number);
// truy xuất địa chỉ bằng cách thêm & trước tên biến
printf("\nDia chi cua number = %d", &number);
return 0;
}
Giá trị của con trỏ: địa chỉ mà con trỏ trỏ đến.
Địa chỉ của con trỏ: địa chỉ của bản thân biến con trỏ đó.
Giá trị của biến nơi con trỏ đang trỏ tới.
Địa chỉ của biến nơi con trỏ đang trỏ tới = giá trị của con trỏ.
Con trỏ khi khai báo nên được khởi tạo giá trị ngay.
Con trỏ kiểu void là loại biến con trỏ tổng quát, nó có thể nhận
địa chỉ của biến bất kỳ ở bất cứ kiểu dữ liệu nào.
Khởi tạo con trỏ bằng địa chỉ NULL nếu chưa cần dùng theo
cách sau: int *p = NULL. Khi đó con trỏ NULL luôn có giá
trị 0.