Hướng dẫn cơ bản của biến C | Kỹ thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng

Hướng dẫn cơ bản của biến C | Ki thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học

1. Cú pháp
- hiểu đơn giản là nền móng của bài code và luôn #include < stdio.h>
xuất hiện ở mọi bài code.
- cũng là phần không thể thiếu khi thực hành code, sau nó là {…} main ()
và mọi mã trong 2 dấu {} đều được thực thi.
- return 0 để kết thúc main chức năng và thêm } để thực sự kết thúc
chức năng chính.
VD1: #include <stdio.h>
Int main () {
printf(“hello world”);
Return 0;}
*LƯU Ý:
- không viết hoa
-không cần cách máy sẽ tự động bỏ qua khoảng trắng nhưng
nhiều hàng đọc sẽ dễ hơn
2. Đầu ra C
- : printf (“…”,….)in văn bản
- : \n ( có thể hiểu là thoát hàng và chuyển về đầu của hàng xuống hàng
tiếp theo)
- các cú pháp tương tự:\
+ \t : tạo 1 khoảng trống cùng hàng
+ \\ : chèn thêm \
+ \’’ : chèn thêm “
3. Nhận xét C
- : //đây là 1 nhận xét 1 dòngnhận xét 1 hàng
- : /* đây là 1 nhận xét nhiều dòng*/nhận xét nhiều hàng
4. BIẾN C: DÙNG ĐỂ LƯU TRỮ DỮ LIỆU VÀ CÓ THỂ THAY ĐỔI
ĐƯỢC
- có khác nhau: int( số nguyên), char( kí tự), float(‘số thậpnhiều loại biến
phân’),….
- c : <biến> <tênbiến> ; nếu gắn cho biến 1 giá trị thìú pháp khai báo biến
<biến> <tênbiến> = const;
VD: int a=10;
*LƯU Ý: với các ngôn ngữ khác khi gán giá trị cho biến
thì chỉ cần đặt lệnh in ra biến thì sẽ có giá trị NHƯNG với
ngôn ngữ C thì không thể, nếu muốn in ra giá trị của
biến thì ta cần phải “chỉ định định dạng”.
VD: int a=10;
Printf(a); // không có gì xảy ra.
- :Công cụ xác định định dạng
+ cú pháp:” % + 1 ký tự nào đó tuỳ theo biến mà ta sẽ in ra”
+ ta có thể hiểu định dạng là , luôn đi giữ chỗ cho giá trị của biến
kèm với hàm printf(bien) để biên dịch loại giá trị mà biến đang lưu trữ.
VD1: int a=10;
Printf(%d,a); // in ra sẽ là 10.
VD2: int so=10;
Char chu=’a’;
Float thapphan=10,9; // nhập biến và giá trị
Printf(“số cần tìm là: %d”\n,so); // in ra: số cầm tìm là: 10
printf(“%f”\n, thapthan); // in ra: 10,9
- Thay đổi giá trị biến:
+ gán đè: khi gán a=10 sau đó lại gán a bằng 15 thì nó sẽ ghi đè lên giá
trị cũ và trở thành giá trị mới là 15
VD: int a=10;
a=15;
Printf(“%d”, a); // lúc này in biến a ra là 15.
+gán giá trị biến này cho biến khác:
VD: int sodau=10;
Int socuoi=20;
Sodau=socuoi;
// lúc này printf ra sẽ số đầu=20. Biến được gán sẽ ở phía trước.
-cộng các biến:
Int a=10;
Int b=5;
Int sum=a+b;
// in ra sum với định dạng “%d” sẽ là 15.
- khai báo nhiều biến 1 lúc hoặc cùng 1 giá trị cho nhiều biến:
Int x=5,y=10,z=15; or int x=y=z=50;
Printf(%d, x+y+z); // sẽ in ra đáp án là 30 hoặc 150.
*TA THẤY CÓ 2 CÁCH ĐỂ THỰC HIỆN PHÉP TÍNH:
A. GỌI HÀM VÀ CÁCH TÍNH RỒI IN HÀM ĐÓ RA(*)
Int a=10;
Int b=5;
Int sum=a+b;
B. VIẾT CÁCH TÍNH RỒI IN RA, KHÔNG CẦM GỌI HÀM.
int x=5,y=10,z=15; or int x=y=z=50;
Printf(%d, x+y+z);\
+phải xác định bằng tên duy nhất gọi là định danh, có thể ngắn
gọn(x,y,..) hay đầy đủ thông tin ( tên, tuổi, địa chỉ,..)VD: int
tienthuetrothang9=1000; hoặc int t=1000;
-QUY TẮC ĐẶT TÊN CHO BIẾN:
1. Tên có thể chứa chữ cái, số hoặc dấu gạch dưới
2. Phải bắt đầu bằng chữ cái hoặc dấu gạch dưới
3. Máy sẽ phân biệt chữ hoa chữ thường( mymom khác myMom)
4. Tên không được có khoảng trắng hoặc các kí tự đặc biệt
5. Các từ dành riêng hoặc mặc định kh được dùng để đặt tên.
5, Kiểu dữ liệu C
- khái niệm: mỗi biến trong C là , và phải sử dụng 1 kiểu dữ liệu xác định
bộ xác định định dạng bên trong printf () để in ra màn hình.
VD:
#include <stdio.h>
int main () {
int a=10;
printf("so can tim la: %d",a) ;
return 0;
}
- các kí hiệu định dạng cơ bản:
KÍ HIỆU DATA TYPE
%d or %t int
%f Float
%c char
%s String ( text)
- chuyển đổi kiểu dữ liệu C: khi ta muốn chuyển đổi kiểu dữ liệu của của
giá trị kh theo giá trị mà ta đã khai báo thì t cần đổi kiểu dữ liệu.
VD: 2 và 5 là int và sum ra 7 cũng int nhưng khi 5 chia 2 ra 2,5 thì đã
sang float thì t phải đôit kiểu dữ liệu còn không nó sẽ ra only 2.
+ có 2 loại chuyển đổi :
* chuyển đổi ngầm định ( auto)
* chuyển đổi rõ ràng ( thủ công)
A. Chuyển đổi ngầm định
- chuyển đổi ẩn sẽ tự động được com thực hiện khi mình gán giá trị của
loại này cho loại khác.( lưu ý khi in ra thì khai biến loại nào thì định danh
bằng kí hiệu loại đó.)
VD: int a=10,9 => in ra 10
Float a=10 => in ra 10,00000.
B. Chuyển đổi rõ ràng
- chuyển đổi này được làm thủ công bằng cách đặt () trước
giá trị cần thay đổi kiểu dữ liệu.
VD:
intnum1 =5;
intnum2 =2;
floatsum = (float) num1 / num2;
printf("%f",sum);// 2.500000
6, Hằng số C
- để ngkh hay bản thân kh thay đổi được giá trị của biến thì t khai báo
thành hằng số const luôn.
VD: const int a=5; // lúc này in ra sẽ là 5
a=10; // dù ghi đè biến a nhưng in ra sẽ vẫn được 5.
- lưu ý:
+ nên dùng biến chỉ hằng só là in hoa( không bắt buộc nhưng dễ sử
dụng, tránh nhầm lẫn)
+ khi khai báo biến hằng phải luôn có giá trị đi sau đó thể hình biến là
hằng số nào.
VD:
-constintminutesPerHour =60; // good
-constintminutesPerHour;
minutesPerHour =60;// error.
7,Toán tử C
- đơn gia&n là tính toán, VD dùng + để& cộng 2
giá trị hoặc cộng 2 biể4n hoặc 1 biể4n 1 giá trị.
VD:
int sum1=1+2;
Int sum2=sum1+5;
Int sum3=sum2+sum1;
- toán tử& đửợc chia thành 5 loại:
+ toán tử& số4 học
+ toán tử& gán
+ toán tử& so sánh
+ toán tử& logic
+ toán tử& bitwise
A, TOÁN TỬ& SỐ4 HỌC
Dấ4u Tác dụng Cú pháp
+ Cộng X+y
- trừ X-y
* nhấn X*y
/ chia X/y
++ cộng thểm 1 cho giá trị
đó
++x
-- Trừ đi 1 cho giá trị đó --x
% Chia lấ4y phấQn dử X%y
B, TOÁN TỬ& GÁN
- đửợc dùng để& gán giá trị cho biể4n hoặc gán
biể&u thức cho 1 biể4n
VD:
Int x=5; // gán x=5
X +=5; // gán x cộng thểm 5 = 10.
Cú pháp Tác dụng Ví dụ Cách khác tửơng
tự
= Gán giá trị X=5 X=5
+= Cộng thểm 5 X +=5 X=x+5
-= Trừ đi 5 X -=5 X=x-5
*= Nhấn thểm 2 X *=2 X=X*2
/= Chia đi 2 X /=2 X=x/2
%= Chia 3 lấ4y
dử
X %=3 X=x%3
&= Chia lấ4y
thửơng
X &=3
VD: 5/2=2
X=x&3
|=
^=
>>=
<<=
C, TOÁN TỬ& SO SÁNH
Kí hiệu Tác dụng Cú pháp
== Tửơng đửơng với
VD: 3=3 // đúng in ra
1
6=3 // sai thì ra
0
X==y
!= Khống bằng, sẽ in ra
1 nể4u kh bằng( đúng)
và o nể4u bằng ( sai)
X!=y
> Lớn hơn X>y
< Bé hơn X<y
>= Lớn hơn or bằng X>=y
<= Bé hơn or bằng X<=y
* dùng đúng sai cho tất ca phép
toán, so sánh đúng thì in ra 1 còn sai
in ra 0.
D, TOÁN TỬ& LOGIC
hiệu
tển Tác dụng Cú pháp
&& Logic và Tra& đúng nể4u ca& 2
phéo toán đểQu đúng
(Int x=7)
x>5 %% x<10
|| Logic
hoặc
Tra& vểQ đúng nể4u 1
trong 2 đúng
Int x=7
X>5 || x>10
! Logic
khống
E, TOÁN TỬ& SIZEOF
- kích thửớc bộ nhớ cu&a 1 kiể&u dữ liệu hoặc 1
biể4n có thể& tìm thấ4y bằng phép toán size of
8, Boolean
- là 1 kiể&u dữ liệu đúng sai, kiể&u chỉ& có 2
giá trị để& lựa chọn ( đúng sai hay bật tắ4t,….)
- nhửng đấy khống pha&i kiể&u tích hơp nhử int
float hay char mà pha&i nhập tển tiểu đểQ khi sử&
dụng nó( giố4ng io): #include< stdbool.h>( làm bài
nển nhập ca& 2 tển tiểu đểQ io và bool)
- 1 biể4n boolean chỉ& có giá trị true or false
để& lựa chọn:
VD:
Bool fun = true;
Bool sad = false;
// khai báo biể4n bool
Printf(“%d”, fun);// đúng thì in ra 1.
Printf(“%d”, sad);// còn sai thì in ra 0.
- LỬU Ý: giá trị tra& vểQ cu&a biể4n bool là giá
trị nguyển nển ta pha&i định danh nó bằng %d nhử
int.
VD: printf(“%d\n”, fun);
9, IF…ELSE VÀ IF..ELSE
IF..ELSE
- Sử& dụng nhiểQu hành động cùng lúc cho các quyể4t
định khác nhau.
IF Thực hiện hành động nể4u nó là true
ELSE Thực hiện hành động nể4u nó là false
EFSE IF Áp thểm 1 điểQu kiện( if là đk1 thì else
if là đk2) khác nữa để& thực hiện nể4u nó
là true 1 trong 2 điểQu kiện
SWITCH
- if là ghi thửờng, nể4u ghi hoa sẽ gấy ra lốzi
VD1:
intx =20;
inty =18;
if(x > y) { printf("x is greater than y");}
VD2:
inttime =20;
if(time <18) {
 printf("Good day.");
}else{
 printf("Good evening.");
}
// Outputs "Good evening."
VD3:
inttime =22;
if(time <10) {printf("Good morning.");}
elseif(time <20) {printf("Good day.");}
else{printf("Good evening.");}
// Outputs "Good evening."
(*) RÚT GỌN CỦA IF ELSE
VD1:
inttime =20;
if(time <18) {
 printf("Good day.");
}else{
printf("Good evening.");
}
VD2: rút gọn cu&a VD1
inttime =20;
(time <18) ? printf("Good day.") : printf("Good
evening.");
10, Switch LỰA CHỌN KHỐI ĐỂ
THỰC HIỆN
- Thay vì dùng nhiểQu cấu lệnh If else thì ta có
thể& dùng cấu lệnh switch.
- nó có thể& chọn 1 trong nhiểQu khố4i mã để& thực
hiện.
- CÚ PHÁP:
Switch ( tển muố4n đặt) {
Case <điểQu kiện 1>:
Break;
Cáe <điểQu kiện n>;
Break;
}
VD:#include <stdio.h>
int main() {
int day = ;4
switch {(day)
case :1
printf("Monday");
break;
case : 2
printf("Tuesday");
break;
case :3
printf("Wednesday");
break;
case :4
printf("Thursday");
break;
Default: printf(“nothing”);
}
return 0;}
- CÁCH THỨC HOẠT ĐỘNG:
1, Cấu lệnh SWITCH đửợc đánh giá( nểu ra) 1 lấQn.
2, giá trị cu&a biể4n sẽ đửợc so sánh với giá trị ơ&
mốzi CASE. Nể4u khớp thì thực thi.
3, Lệnh BREAK để& thoát và dừng thực thi khố4i case
khống hợp đó.( lệnh này tiể4t kiệm thời gian do
pass khống cấQn kiể&m tra tiể4p trong khố4i đó khi
khống có thoa& mãn)
4, lệnh DEFAULT dùng để& chạy cấu lệnh nể4u khống
có case nào thoa& mãn.( lệnh này là từ khoá mặc
định pha&i đửợc sử& dụng làm cấu lệnh cuố4i trong
chuyể&n đố&i các case và khống cấQn ngắ4t.)
11, Vòng lặp C WHILE CHƯA BIỂT
VÒNG LẶP CỤ THỂ
- vòng lặp sẽ thực hiện đửợc 1 khố4i mã nể4u chúng
đặt 1 điểQu kiện nhấ4t định
- vòng lặp tiện dụng vì tiể4t kiệm thời gian, gia&m
lốzi và code dểz đọc hơn.
- cơ chể4: lặp đi lặp lại 1 khố4i mã miểzn là chúng
thoa& mãn điểQu kiện ta đửa ra.
- cú pháp: while ( điểQu kiện){
hành động yểu cấQu;
}
VD: #include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++; }
return 0;}
// cho i=0 ,miễYn i bé hơn 5 thì in ra, sau đó
cộng thễm 1, sau đó quay lại ban đấau. Lửu ý rằng
nễu không cho I tăng tiễn thì vòng lặp không
kễt thúc vì luôn thoa mãn điễau kiện.
12, C cho vòng lặp cụ thễ FOR
A. Vòng lặp
- khi biể4t chính xác số4 lấQn cấQn lặp lại một khố4i
mã thì dùng FOR thay vì WHILE.
+ FOR thực hiện số4 lấQn lặp cụ thể& ta muố4n
+ WHILE thực hiện n vòng lặp miểzn còn thoa& mãn
điểQu kiện nào đó.
VD:
- CÚ PHÁP: for ( cấu lệnh 1; cấu lệnh 2; cấu lệnh
3;) { hành động}
- cách thực hiện:
+ cấu lệnh 1 đửợc thực thi 1 lấQn trửớc khi thực
thi khố4i mã
+ cấu lệnh 2 để& xác định thực thi khố4i mã.Nếu
điềukiệnđúngthìvònglặpsẽbắtđầulại,
nếusaithìvònglặpsẽkếtthúc.
+ cấu lệnh 3 đửợc thực thi sau khi khối mã đửợc
thực thi.
VD:
Int I; // khai báo I là gì
For ( i=0;I<5; I++;) // khố4i mã thực hiện
{Printf(“%d”,I);} // hành động sau khi work khố4i
mã.
B. VÒNG LẶP LỐaNG NHAỦ
- vòng lặp bển trong sẽ đửợc thực hiện khi lặp
lại vòng lặp bển ngoài.
- vòng ngoài mơ& ra, xoay hể4t vòng trong rốQi mới
đóng vòng ngoài lại. Vòng ngoài lại mơ& ra, xong
tiể4p vòng trong rốQi đóng lại. Miểzn khi vòng ngoài
khống đửợc thực hiện nữa thì vòng trong mới khống
đửợc thực hiện.
VD:
#include <stdio.h>
Main() {
Int I,j;
for ( I=1; I<=2; ++I) {printf(“out1:%d\n”,I);}
For ( j=1; j<=3; ++j) {printf(“out2:%d\n”,j);}0
// in ra sẽ nhử này:
Out1: 1
Out2:1
Out2:2
Out3:3
Out1: 2
Out2:1
Out2:2
Out3:3
13, C NGHI VÀ TIỂP
A, PHÁ VỠ( BREAK)
- ta thấ4y BREAK để& nha&y ra kho&i hộp trửờng
hợp(switch) và nó cũng đửợc dùng để& kể4t thúc vòng
lặp for.
VD:
Int I;
For ( I=0; I<=10; ++I); { If (I==4) {break;}
printf(“%d”,I); }
// in ra: 0123
// khống in ra 4 vì bằng4 là break rốQi.
14.1, Mang 1 chiễau C
- ma&ng đửợc sử& dụng để& lửu trữ nhiểQu giá trị
trong 1 biể4n thay vì khai báo từng biể4n.
- để& tạo 1 ma&ng, xác định kiể&u dữ liệu- tển ma&ng-
cùng với dấ4u [] theo sau. Để& chèn giá trị thì để&
bển trong dấ4u ngoặc nhọn và ngắn cách bằng dấ4u
phấ&y.
VD: int mynum [] = { 1,2,3,4}; //đấy là 1 ma&ng
gốQm 4 số4 nguyển.
A. TRUY CẬP CÁC PHẦN TỬ 1 MA
NG
- để& truy cập 1 ma&ng, hãy xem số4 chỉ& mục cu&a nó.
- số4 chỉ& mục cu&a ma&ng bắ4t đấQu từ [0],[1],[2],…
VD:
Int mynum[] ={1,2,3,4};
Printf(“%d,\n”, mynum[0]);
// output 1.
B. THAY ĐỔI 1 PHẦN TỬ CU
A MA
NG
- để& thay đố&i giá trị cu&a một phấQn tử& cụ thể&, cấQn
tham kha&o số4 chỉ& mục cu&a nó.
VD: int number[]={1,2,3,4};
Number[3]=10;
Printf(‘%d\n”,number[3]);
// thay vì in [3]=4 thì in bằng 10. Do ta đã gán
vị trí thứ[3]=10 và đè lển số4 trửớc.
C. LẶP LẠI 1 MA
NG
VD:
Int number[]={1,2,3};
Int I;
For (I=0, I<3, I++) { printf(“%d\
n”,number[I]);}
// lúc này in ra:
1
2
3.
D. ĐẶT KÍCH THỬỚC 1 MA
NG
-Một cách phố& biể4n khi tạo ma&ng là quy định kích
thửớc cu&a ma&ng sau đó gán từng giá trị vào. Cách
này đửợc sử& dụng để& thay thể4 cho việc khai báo
ma&ng[] rốQi gán từng giá trị vào luốn bơ&i dấ4u {}.
VD:
Int abc[5];
Abc[0]=10;
Abc[1]=20;
Abc[2]=20;
Abc[3]=20;
Abc[4]=20;
* LỬU Ý: khi sử& dung cách này, pha&i biể4t khố4i
lửợng cấQn lửu trữ cho đu& bộ nhớ cho đu&. KHI TẠO
MA
NG RỔI KHỔNG THỂ THAY ĐỔI SAU KHI TẠO.
14.2, Mảng đả chiều C
- thứ ta vừa học ơ& trển là ma&ng 1 chiểQu, chỉ& lửu
đơn thuấQn giá trị cu&a biể4n. Để& linh hoạt khi sử&
dụng ma&ng thì ta sử& dụng ba&ng đa chiểQu, VD nhử
khi lửu dạng hàng và cột sẽ giúp ta tìm ra 2 giá
trị ơ& vị trí đó.
A, KHÁI NIỆM
-MA
&
NG 2D CÒN ĐỬỢ GỌI LÀ MA TRẬN (MATRIX):
VD: int matrix [2][3]={ {1,4,2}, {3,6,8} };
// [2] viể4t trửớc là hàng.
// [3] viể4t sau là cột.
// các giá trị đửợc đặt theo thứ tự hàng.
1 4 2
3 6 8
B, TRUY CẬP PHẦN TỬ 2D
- để& truy cập cấQn biể4t số4 chỉ& mục cu&a phấQn tử& đó.
VD: muố4n truy cập hàng đấQu tiển[0]-cột thứ 3[2]:
Int matrix[2][3]={ {1,4,2}, {3,6,8} };
Printf(“%d”,matrix[0][2]);
// in ra mh: 2.
C, THAY ĐỔI 1 GIÁ TRỊ TRONG MA
NG 2D
VD:
int matrix[2][3]={ {1,4,2}, {3,6,8} };
Matrix[0][1]=10;
// lúc này ơ& hàng 1-ố 2, giá trị đã thay từ 4
sang 10.
D, LẶP QUA 1 MA
NG 2D
VD:
#include<stdio.h>
Main() {
Int matrix[2][3]={ {1,3,5}, {2,4,6} };
Int I,j;
For (I=0, I<3, I++)
{
For (j=0, j<4, j++) {printf(“%d\n”,matrix[I]
[j]);}
}
15. ChuôYi C
I, DẦY
A, khái niệm
- Chuốzi đửợc sử& dụng để& lửu trữ vắn ba&n/kí tự.
VD: “xin chào thể4 giới” là 1 chuốzi kí tự.
- khống nhử nhiểQu ngốn ngữ khác có thể& dùng
string để& tạo chuốzi. Thay vào đó, bạn pha&i dùng
CHAR(hàm vắn ba&n) để& tạo 1 ma&ng kí tự trong chuốzi
C.
VD:
Char abcxyz[]= “hello world”;
// pha&i có dấ4u “…”
// để& xuấ4t chuốzi này cấQn giữ chốz(định danh): %s
| 1/20

Preview text:

1. Cú pháp
- #include < stdio.h> hiểu đơn giản là nền móng của bài code và luôn
xuất hiện ở mọi bài code.
- main () cũng là phần không thể thiếu khi thực hành code, sau nó là {…}
và mọi mã trong 2 dấu {} đều được thực thi.
- return 0 để kết thúc main chức năng và thêm } để thực sự kết thúc chức năng chính. VD1: #include Int main () { printf(“hello world”); Return 0;} *LƯU Ý: - không viết hoa
-không cần cách vì máy sẽ tự động bỏ qua khoảng trắng nhưng
nhiều hàng đọc sẽ dễ hơn 2. Đầu ra C -
: print in văn bản f (“…”,….)
- xuống hàng: \n ( có thể hiểu là thoát hàng và chuyển về đầu của hàng tiếp theo)
- các cú pháp tương tự:\
+ \t : tạo 1 khoảng trống cùng hàng + \\ : chèn thêm \ + \’’ : chèn thêm “ 3. Nhận xét C
- nhận xét 1 hàng: //đây là 1 nhận xét 1 dòng
- nhận xét nhiều hàng: /* đây là 1 nhận xét nhiều dòng*/
4. BIẾN C: DÙNG ĐỂ LƯU TRỮ DỮ LIỆU VÀ CÓ THỂ THAY ĐỔI ĐƯỢC
- có
khác nhau: int( số nguyên), char( kí tự), float(‘số thập nhiều loại biến phân’),….
- cú pháp khai báo biến: ; nếu gắn cho biến 1 giá trị thì = const; VD: int a=10;
*LƯU Ý: với các ngôn ngữ khác khi gán giá trị cho biến
thì chỉ cần đặt lệnh in ra biến thì sẽ có giá trị NHƯNG với
ngôn ngữ C thì không thể, nếu muốn in ra giá trị của
biến thì ta cần phải “chỉ định định dạng”. VD: int a=10;
Printf(a); // không có gì xảy ra.
- Công cụ xác định định dạng:
+ cú pháp:” % + 1 ký tự nào đó tuỳ theo biến mà ta sẽ in ra”
+ ta có thể hiểu định dạng là , luôn đi
giữ chỗ cho giá trị của biến
kèm với hàm printf(bien) để biên dịch loại giá trị mà biến đang lưu trữ. VD1: int a=10;
Printf(%d,a); // in ra sẽ là 10. VD2: int so=10; Char chu=’a’;
Float thapphan=10,9; // nhập biến và giá trị
Printf(“số cần tìm là: %d”\n,so); // in ra: số cầm tìm là: 10
printf(“%f”\n, thapthan); // in ra: 10,9
- Thay đổi giá trị biến:
+ gán đè: khi gán a=10 sau đó lại gán a bằng 15 thì nó sẽ ghi đè lên giá
trị cũ và trở thành giá trị mới là 15 VD: int a=10; a=15;
Printf(“%d”, a); // lúc này in biến a ra là 15.
+gán giá trị biến này cho biến khác: VD: int sodau=10; Int socuoi=20; Sodau=socuoi;
// lúc này printf ra sẽ số đầu=20. Biến được gán sẽ ở phía trước. -cộng các biến: Int a=10; Int b=5; Int sum=a+b;
// in ra sum với định dạng “%d” sẽ là 15.
- khai báo nhiều biến 1 lúc hoặc cùng 1 giá trị cho nhiều biến:
Int x=5,y=10,z=15; or int x=y=z=50;
Printf(%d, x+y+z); // sẽ in ra đáp án là 30 hoặc 150.
*TA THẤY CÓ 2 CÁCH ĐỂ THỰC HIỆN PHÉP TÍNH:
A. GỌI HÀM VÀ CÁCH TÍNH RỒI IN HÀM ĐÓ RA(*) Int a=10; Int b=5; Int sum=a+b;
B. VIẾT CÁCH TÍNH RỒI IN RA, KHÔNG CẦM GỌI HÀM.
int x=5,y=10,z=15; or int x=y=z=50; Printf(%d, x+y+z);\
+phải xác định bằng tên duy nhất gọi là định danh, có thể ngắn
gọn(x,y,..) hay đầy đủ thông tin ( tên, tuổi, địa chỉ,..)VD: int
tienthuetrothang9=1000; hoặc int t=1000;
-QUY TẮC ĐẶT TÊN CHO BIẾN:
1. Tên có thể chứa chữ cái, số hoặc dấu gạch dưới
2. Phải bắt đầu bằng chữ cái hoặc dấu gạch dưới
3. Máy sẽ phân biệt chữ hoa chữ thường( mymom khác myMom)
4. Tên không được có khoảng trắng hoặc các kí tự đặc biệt
5. Các từ dành riêng hoặc mặc định kh được dùng để đặt tên. 5, Kiểu dữ liệu C
- khái niệm: mỗi biến trong C là 1 kiểu dữ liệu xác định, và phải sử dụng
bộ xác định định dạng bên trong printf () để in ra màn hình. VD: #include int main () { int a=10;
printf("so can tim la: %d",a) ; return 0; }
- các kí hiệu định dạng cơ bản: KÍ HIỆU DATA TYPE %d or %t int %f Float %c char %s String ( text)
- chuyển đổi kiểu dữ liệu C: khi ta muốn chuyển đổi kiểu dữ liệu của của
giá trị kh theo giá trị mà ta đã khai báo thì t cần đổi kiểu dữ liệu.
VD: 2 và 5 là int và sum ra 7 cũng int nhưng khi 5 chia 2 ra 2,5 thì đã
sang float thì t phải đôit kiểu dữ liệu còn không nó sẽ ra only 2.
+ có 2 loại chuyển đổi :
* chuyển đổi ngầm định ( auto)
* chuyển đổi rõ ràng ( thủ công)
A. Chuyển đổi ngầm định
- chuyển đổi ẩn sẽ tự động được com thực hiện khi mình gán giá trị của
loại này cho loại khác.( lưu ý khi in ra thì khai biến loại nào thì định danh
bằng kí hiệu loại đó.) VD: int a=10,9 => in ra 10
Float a=10 => in ra 10,00000. B. Chuyển đổi rõ ràng
- chuyển đổi này được làm thủ công bằng cách đặt () trước
giá trị cần thay đổi kiểu dữ liệu. VD: int num1 = 5; int num2 = 2;
float sum = (float) num1 / num2; printf("%f", sum); // 2.500000 6, Hằng số C
- để ngkh hay bản thân kh thay đổi được giá trị của biến thì t khai báo
thành hằng số const luôn. VD:
const int a=5; // lúc này in ra sẽ là 5
a=10; // dù ghi đè biến a nhưng in ra sẽ vẫn được 5. - lưu ý:
+ nên dùng biến chỉ hằng só là in hoa( không bắt buộc nhưng dễ sử dụng, tránh nhầm lẫn)
+ khi khai báo biến hằng phải luôn có giá trị đi sau đó thể hình biến là hằng số nào. VD:
-const int minutesPerHour = 60; // good -const int minutesPerHour; minutesPerHour = 60; // error. 7,Toán tử C - đơn gia
&n là tính toán, VD dùng + để& cộng 2
giá trị hoặc cộng 2 biể4 n hoặc 1 biể4 n 1 giá trị. VD: int sum1=1+2; Int sum2=sum1+5; Int sum3=sum2+sum1; - toán tử&
đửợc chia thành 5 loại: + toán tử& số4 học + toán tử& gán + toán tử& so sánh + toán tử& logic + toán tử& bitwise A, TOÁN TỬ& SỐ4 HỌC Dấ4 u Tác dụng Cú pháp + Cộng X+y - trừ X-y * nhấn X*y / chia X/y ++
cộng thểm 1 cho giá trị ++x đó --
Trừ đi 1 cho giá trị đó --x % Chia lấ4 y phấQ n dử X%y B, TOÁN TỬ& GÁN - đửợc dùng để& gán giá trị cho biể4 n hoặc gán biể& u thức cho 1 biể4 n VD: Int x=5; // gán x=5
X +=5; // gán x cộng thểm 5 = 10. Cú pháp Tác dụng Ví dụ Cách khác tửơng tự = Gán giá trị X=5 X=5 += Cộng thểm 5 X +=5 X=x+5 -= Trừ đi 5 X -=5 X=x-5 *= Nhấn thểm 2 X *=2 X=X*2 /= Chia đi 2 X /=2 X=x/2 %= Chia 3 lấ4 y X %=3 X=x%3 dử &= Chia lấ4 y X &=3 X=x&3 thửơng VD: 5/2=2 |= ^= >>= <<= C, TOÁN TỬ& SO SÁNH Kí hiệu Tác dụng Cú pháp == Tửơng đửơng với X==y VD: 3=3 // đúng in ra 1 6=3 // sai thì ra 0 != Khống bằng, sẽ in ra X!=y 1 nể4 u kh bằng( đúng) và o nể4 u bằng ( sai) > Lớn hơn X>y < Bé hơn X>= Lớn hơn or bằng X>=y <= Bé hơn or bằng X<=y
* dùng đúng sai cho tấ t ca phép
toán, so sánh đúng thì in ra 1 còn sai in ra 0. D, TOÁN TỬ& LOGIC Kí tển Tác dụng Cú pháp hiệu && Logic và Tra & đúng nể4 u ca & 2 (Int x=7) phéo toán đểQ u đúng x>5 %% x<10 || Logic Tra & vểQ đúng nể4 u 1 Int x=7 hoặc trong 2 đúng X>5 || x>10 ! Logic khống E, TOÁN TỬ& SIZEOF
- kích thửớc bộ nhớ cu &a 1 kiể& u dữ liệu hoặc 1 biể4 n có thể& tìm thấ4 y bằng phép toán size of 8, Boolean - là 1 kiể&
u dữ liệu đúng sai, kiể& u chỉ & có 2 giá trị để&
lựa chọn ( đúng sai hay bật tắ4 t,….) - nhửng đấy khống pha &i kiể& u tích hơp nhử int float hay char mà pha
&i nhập tển tiểu đểQ khi sử& dụng nó( giố4
ng io): #include< stdbool.h>( làm bài nển nhập ca & 2 tển tiểu đểQ io và bool) - 1 biể4 n boolean chỉ
& có giá trị true or false để& lựa chọn: VD: Bool fun = true; Bool sad = false; // khai báo biể4 n bool
Printf(“%d”, fun);// đúng thì in ra 1.
Printf(“%d”, sad);// còn sai thì in ra 0. - LỬU Ý: giá trị tra & vểQ cu &a biể4 n bool là giá trị nguyển nển ta pha
&i định danh nó bằng %d nhử int. VD: printf(“%d\n”, fun); 9, IF…ELSE VÀ IF..ELSE IF..ELSE - Sử& dụng nhiểQ
u hành động cùng lúc cho các quyể4 t định khác nhau. IF
Thực hiện hành động nể4 u nó là true ELSE
Thực hiện hành động nể4 u nó là false EFSE IF Áp thểm 1 điểQ
u kiện( if là đk1 thì else
if là đk2) khác nữa để& thực hiện nể4 u nó là true 1 trong 2 điểQ u kiện SWITCH - if là ghi thửờng, nể4 u ghi hoa sẽ gấy ra lốz i VD1: int x = 20; int y = 18;
if (x > y) { printf("x is greater than y");} VD2: int time = 20; if (time < 18) { printf("Good day."); } else { printf("Good evening."); } // Outputs "Good evening." VD3: int time = 22;
if (time < 10) {printf("Good morning.");}
else if (time < 20) { printf("Good day.");}
else {printf("Good evening.");} // Outputs "Good evening." (*) RÚT GỌN CỦ A IF ELSE VD1: int time = 20; if (time < 18) { printf("Good day."); } else { printf("Good evening."); } VD2: rút gọn cu &a VD1 int time = 20;
(time < 18) ? printf("Good day.") : printf("Good evening.");
10, Switch LỰA CHỌN KHỐ I ĐỂ THỰC HIỆN - Thay vì dùng nhiểQ
u cấu lệnh If else thì ta có thể& dùng cấu lệnh switch. - nó có thể& chọn 1 trong nhiểQ u khố4 i mã để& thực hiện. - CÚ PHÁP: Switch ( tển muố4 n đặt) { Case <điểQ u kiện 1>: Break; Cáe <điểQ u kiện n>; Break; } VD:#include int main() { int day = 4; switch (day) { case 1: printf("Monday"); break; case 2: printf("Tuesday"); break; case 3: printf("Wednesday"); break; case 4: printf("Thursday"); break;
Default: printf(“nothing”); } return 0;} - CÁCH THỨC HOẠT ĐỘNG:
1, Cấu lệnh SWITCH đửợc đánh giá( nểu ra) 1 lấQ n. 2, giá trị cu &a biể4
n sẽ đửợc so sánh với giá trị ơ & mốz i CASE. Nể4 u khớp thì thực thi. 3, Lệnh BREAK để&
thoát và dừng thực thi khố4 i case
khống hợp đó.( lệnh này tiể4 t kiệm thời gian do pass khống cấQ n kiể& m tra tiể4 p trong khố4 i đó khi khống có thoa & mãn)
4, lệnh DEFAULT dùng để& chạy cấu lệnh nể4 u khống có case nào thoa
& mãn.( lệnh này là từ khoá mặc định pha &i đửợc sử& dụng làm cấu lệnh cuố4 i trong chuyể& n đố& i các case và khống cấQ n ngắ4 t.)
11, Vòng lặp C WHILE CHƯA BIỂ T VÒNG LẶP CỤ THỂ
- vòng lặp sẽ thực hiện đửợc 1 khố4 i mã nể4 u chúng đặt 1 điểQ u kiện nhấ4 t định
- vòng lặp tiện dụng vì tiể4 t kiệm thời gian, gia &m lốz i và code dểz đọc hơn. - cơ chể4
: lặp đi lặp lại 1 khố4 i mã miểz n là chúng thoa & mãn điểQ u kiện ta đửa ra. - cú pháp: while ( điểQ u kiện){ hành động yểu cấQ u; } VD: #include int main() { int i = 0; while (i < 5) { printf("%d\n", i); i++; } return 0;}
// cho i=0 ,miễYn i bé hơn 5 thì in ra, sau đó
cộng thễm 1, sau đó quay lại ban đấau. Lửu ý rằng
nễ u không cho I tăng tiễ n thì vòng lặp không
kễ t thúc vì luôn thoa mãn điễau kiện.
12, C cho vòng lặp cụ thễ FOR A. Vòng lặp - khi biể4 t chính xác số4 lấQ n cấQ n lặp lại một khố4 i
mã thì dùng FOR thay vì WHILE. + FOR thực hiện số4 lấQ n lặp cụ thể& ta muố4 n
+ WHILE thực hiện n vòng lặp miểz n còn thoa & mãn điểQ u kiện nào đó. VD:
- CÚ PHÁP: for ( cấu lệnh 1; cấu lệnh 2; cấu lệnh 3;) { hành động} - cách thực hiện:
+ cấu lệnh 1 đửợc thực thi 1 lấQ n trửớc khi thực thi khố4 i mã + cấu lệnh 2 để&
xác định thực thi khố4 i mã. Nếu
điều kiện đúng thì vòng lặp sẽ bắt đầu lại,
nếu sai thì vòng lặp sẽ kết thúc.
+ cấu lệnh 3 đửợc thực thi sau khi khối mã đửợc thực thi. VD: Int I; // khai báo I là gì
For ( i=0;I<5; I++;) // khố4 i mã thực hiện
{Printf(“%d”,I);} // hành động sau khi work khố4 i mã. B. VÒNG LẶP LỐaNG NHAỦ
- vòng lặp bển trong sẽ đửợc thực hiện khi lặp
lại vòng lặp bển ngoài. - vòng ngoài mơ & ra, xoay hể4 t vòng trong rốQ i mới
đóng vòng ngoài lại. Vòng ngoài lại mơ & ra, xong tiể4 p vòng trong rốQ i đóng lại. Miểz n khi vòng ngoài
khống đửợc thực hiện nữa thì vòng trong mới khống đửợc thực hiện. VD: #include Main() { Int I,j;
for ( I=1; I<=2; ++I) {printf(“out1:%d\n”,I);}
For ( j=1; j<=3; ++j) {printf(“out2:%d\n”,j);}0 // in ra sẽ nhử này: Out1: 1 Out2:1 Out2:2 Out3:3 Out1: 2 Out2:1 Out2:2 Out3:3 13, C NGHI VÀ TIỂ P A, PHÁ VỠ( BREAK) - ta thấ4 y BREAK để& nha &y ra kho &i hộp trửờng
hợp(switch) và nó cũng đửợc dùng để& kể4 t thúc vòng lặp for. VD: Int I;
For ( I=0; I<=10; ++I); { If (I==4) {break;} printf(“%d”,I); } // in ra: 0123
// khống in ra 4 vì bằng4 là break rốQ i. 14.1, Ma ng 1 chiễau C - ma &ng đửợc sử& dụng để& lửu trữ nhiểQ u giá trị trong 1 biể4
n thay vì khai báo từng biể4 n. - để& tạo 1 ma
&ng, xác định kiể& u dữ liệu- tển ma &ng- cùng với dấ4 u [] theo sau. Để&
chèn giá trị thì để& bển trong dấ4
u ngoặc nhọn và ngắn cách bằng dấ4 u phấ& y.
VD: int mynum [] = { 1,2,3,4}; //đấy là 1 ma &ng gốQ m 4 số4 nguyển.
A. TRUY CẬP CÁC PHẦ N TỬ 1 MA NG - để& truy cập 1 ma &ng, hãy xem số4 chỉ & mục cu &a nó. - số4 chỉ & mục cu &a ma &ng bắ4 t đấQ u từ [0],[1],[2],… VD: Int mynum[] ={1,2,3,4}; Printf(“%d,\n”, mynum[0]); // output 1.
B. THAY ĐỔ I 1 PHẦ N TỬ CU A MANG - để& thay đố& i giá trị cu &a một phấQ n tử& cụ thể& , cấQ n tham kha &o số4 chỉ & mục cu &a nó. VD: int number[]={1,2,3,4}; Number[3]=10; Printf(‘%d\n”,number[3]);
// thay vì in [3]=4 thì in bằng 10. Do ta đã gán
vị trí thứ[3]=10 và đè lển số4 trửớc. C. LẶP LẠI 1 MA NG VD: Int number[]={1,2,3}; Int I;
For (I=0, I<3, I++) { printf(“%d\ n”,number[I]);} // lúc này in ra: 1 2 3. D. ĐẶT KÍCH THỬỚC 1 MA NG -Một cách phố& biể4 n khi tạo ma &ng là quy định kích thửớc cu &a ma
&ng sau đó gán từng giá trị vào. Cách này đửợc sử& dụng để& thay thể4 cho việc khai báo ma &ng[] rốQ
i gán từng giá trị vào luốn bơ &i dấ4 u {}. VD: Int abc[5]; Abc[0]=10; Abc[1]=20; Abc[2]=20; Abc[3]=20; Abc[4]=20; * LỬU Ý: khi sử& dung cách này, pha &i biể4 t khố4 i lửợng cấQ n lửu trữ cho đu & bộ nhớ cho đu &. KHI TẠO
MANG RỔ I KHỔNG THỂ THAY ĐỔ I SAU KHI TẠO. 14.2, Mả ng đả chiề u C - thứ ta vừa học ơ & trển là ma &ng 1 chiểQ u, chỉ & lửu đơn thuấQ n giá trị cu &a biể4 n. Để& linh hoạt khi sử& dụng ma &ng thì ta sử& dụng ba &ng đa chiểQ u, VD nhử
khi lửu dạng hàng và cột sẽ giúp ta tìm ra 2 giá trị ơ & vị trí đó. A, KHÁI NIỆM -MA
&NG 2D CÒN ĐỬỢ GỌI LÀ MA TRẬN (MATRIX):
VD: int matrix [2][3]={ {1,4,2}, {3,6,8} }; // [2] viể4 t trửớc là hàng. // [3] viể4 t sau là cột.
// các giá trị đửợc đặt theo thứ tự hàng. 1 4 2 3 6 8 B, TRUY CẬP PHẦ N TỬ 2D - để& truy cập cấQ n biể4 t số4 chỉ & mục cu &a phấQ n tử& đó. VD: muố4 n truy cập hàng đấQ u tiển[0]-cột thứ 3[2]:
Int matrix[2][3]={ {1,4,2}, {3,6,8} }; Printf(“%d”,matrix[0][2]); // in ra mh: 2.
C, THAY ĐỔ I 1 GIÁ TRỊ TRONG MA NG 2D VD:
int matrix[2][3]={ {1,4,2}, {3,6,8} }; Matrix[0][1]=10; // lúc này ơ
& hàng 1-ố 2, giá trị đã thay từ 4 sang 10. D, LẶP QUA 1 MA NG 2D VD: #include Main() {
Int matrix[2][3]={ {1,3,5}, {2,4,6} }; Int I,j; For (I=0, I<3, I++) {
For (j=0, j<4, j++) {printf(“%d\n”,matrix[I] [j]);} } 15. ChuôYi C I, DẦY A, khái niệm - Chuốz i đửợc sử& dụng để& lửu trữ vắn ba &n/kí tự. VD: “xin chào thể4 giới” là 1 chuốz i kí tự. - khống nhử nhiểQ
u ngốn ngữ khác có thể& dùng string để& tạo chuốz i. Thay vào đó, bạn pha &i dùng CHAR(hàm vắn ba &n) để& tạo 1 ma &ng kí tự trong chuốz i C. VD:
Char abcxyz[]= “hello world”; // pha &i có dấ4 u “…” // để& xuấ4 t chuốz i này cấQ n giữ chốz (định danh): %s