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
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