Bai giang ngon ngu lap trinh C - c N35 Thamưsốưcủaưhàm • Truyền theo tham trị • Hai kiểu tham số: tham số thực và tham số con trỏ... Bai giang ngon ngu lap trinh C - c Nfloat fct1int, fl
Trang 2Chươngư1 Cơưbảnưvềưngônưngữưc
Trang 4PhÇn ch ¬ng tr×nh chÝnh
Trang 6float 3.4e-38 3.4e+38 4 bytes
double 1.7e-308 1.7e+308 8 bytes
Trang 9• C¸c phÐp to¸n sè häc: +, , *, /, %,
-• C¸c phÐp to¸n quan hÖ: >, <, >=, <=, ==, !=
• C¸c phÐp to¸n logic: &&, ||, !
• C¸c phÐp to¸n thao t¸c bit: &, |, ^, <<, >>, ~
Thao t¸c sè häc
Thao t¸c logic
• PhÐp to¸n t¨ng gi¶m: ++,
Ph©n biÖt ++n; vµ n++;
Trang 13<<, >> Tr¸i sang ph¶i
<, <=, >, >= Tr¸i sang ph¶i
&& Tr¸i sang ph¶i
Trang 16case 2 : printf("1 ou 2"); break;
case 3 : printf("3"); break;
Trang 18• Câu lệnh WHILE:
while (<Biểu thức đk>) Lenh;
Ví dụ: đọc một dãy 20 số nguyên từ bàn phím
Trang 19• C©u lÖnh DO WHILE :
do Lenh1;
while (<BiÓu thøc ®k>);
VÝ dô: TÝnh tÝch v« h íng cña hai vect¬ X,Y:
int X[MAXL], Y[MAXL], chiso=0;
Trang 20• Vµo ra qua c¸c kªnh xuÊt/nhËp (I/O streams):
Gi¸ trÞ > Kªnh xuÊt > Khu«n d¹ng > ThiÕt bÞ ra
ThiÕt bÞ vµo > Kªnh vµo > Khu«n d¹ng > BiÕn
• Th viÖn c¸c hµm vµo ra: stdio.h vµ conio.h
#include <stdio.h>
#include <conio.h>
• Hµm printf() vµ scanf()
Trang 22%e, %E float, double Dấu chấm động
%f, %lf float, double Dấu phẩy tĩnh
%g %G float, double Dấu phẩy tĩnh hoặc động
Trang 30VÝ dô 3: Gi¶i ph ¬ng tr×nh bËc nhÊt mét Èn :
#include <conio.h>
#include <stdio.h>
void main(void)
{ float a,b;
/* doc du lieu tu ban phim */
printf("\n Nhap hai so A,B :");
Trang 31Bai giang ngon ngu lap trinh C - (c) N
Trang 32Bai giang ngon ngu 32
Trang 33Bai giang ngon ngu lap trinh C - (c) N
Trang 34Bai giang ngon ngu 34
Trang 35Bai giang ngon ngu lap trinh C - (c) N
35
Thamưsốưcủaưhàm
• Truyền theo tham trị
• Hai kiểu tham số: tham số thực và tham số con trỏ
Làm thế nào đểưsử dụng tham biến? -> sử dụng con trỏ!
Trang 36Bai giang ngon ngu 36
for (i=0; i<argc; i++)
printf("Tham so thu %d la: %s\n",i+1,
argv[i]);
}
Trang 37Bai giang ngon ngu lap trinh C - (c) N
float fct1(int, float);
int fct2(float, char);
int atoi(char*);
void swap(float*, float*);
Trang 38Bai giang ngon ngu 38
Tệpưtiêuưđềư(headerưfile)
• Chứa các khai báo (hằng, biến, kiểu)
• Chứa các nguyên mẫu hàm
• Đ ợc tải vào trong tệp thi hành (implementation file) bằng lệnh: #include < >
Ví dụ: Một số th viện thông dụng
Trang 39Bai giang ngon ngu lap trinh C - (c) N
39
CÊplutr÷vµph¹mvibiÕn
• Ph¹m vi sö dông (scope): local, global
• Thêi gian tån t¹i (life time)
• CÊp l u tr÷ (storage class)
Trang 40Bai giang ngon ngu 40
Trang 41Bai giang ngon ngu lap trinh C - (c) N
Trang 42Bai giang ngon ngu 42
Chươngư3 cácưkiểuưdữưliệuưCóưcấuưtrúc
• Kiểu con trỏ (pointer)
• Kiểu mảng (array)
• Kiểu xâu ký tự (string)
• Kiểu cấu trúc (struct)
• Kiểu hợp (union)
• Kiểu tệp (file)
Trang 43Bai giang ngon ngu lap trinh C - (c) N
43
Kiểuưconưtrỏư(1/6)
• Con trỏ là biến dùng để chứa địa chỉ của biến khác
• Con trỏ trong C đ ợc sử dụng để:
• Tạo các cấu trúc dữ liệu động (từ heap)
• Truyền tham biến trong các hàm
• Truy nhập đến các phần tử của mảng
• Tham chiếu đến biến khác
Trang 44Bai giang ngon ngu 44
Trang 45Bai giang ngon ngu lap trinh C - (c) N
Trang 46Bai giang ngon ngu 46
KiÓucontrá(4/6)
• PhÐp céng con trá víi sè nguyªn:
VÝ dô:
int n = 0x0102, *pi = &n;
char *pc = (char *)pi;
Trang 47Bai giang ngon ngu lap trinh C - (c) N
Trang 48Bai giang ngon ngu 48
KiÓucontrá(6/6)
• Con trá hµm: trá tíi ®iÓm x©m nhËp cña hµm
[KiÓu_tr¶_vÒ] (*con_trá_hµm) [ds_tham_sè]);
Trang 49Bai giang ngon ngu lap trinh C - (c) N
Trang 50Bai giang ngon ngu 50
Trang 51Bai giang ngon ngu lap trinh C - (c) N
int list[SOPHANTU] = {239,241,159} ,i;
printf(“cac dia chi la:”);
for(i=0; i < SOPHANTU; i++)
printf(“%4p”,&list[i]);
printf(“\nchua cac gia tri:”);
for(i=0; i < SOPHANTU; i++)
Trang 52Bai giang ngon ngu 52
char chao[] = "Hello !";
char *pstr = chao; // chØ lµ phÐp g¸n con trá!
• C¸c hµm xö lý x©u n»m trong th viÖn <string.h>
Trang 53Bai giang ngon ngu lap trinh C - (c) N
53
KiÓux©ukýtù(2/3)
Mét sè hµm xö lý x©u th«ng dông:
Trang 54Bai giang ngon ngu 54
Trang 55Bai giang ngon ngu lap trinh C - (c) N
Trang 56Bai giang ngon ngu 56
KiÓucÊutróc(2/5)
• Khai b¸o biÕn cÊu tróc:
struct Tªn_kiÓu tªn_biÕn;
VÝ dô:
struct Address addr1, addr2;
• Khai b¸o cÊu tróc víi typedef:
#typedef struct Tªn_kiÓu Tªn_kiÓu_míi
VÝ dô:
#typedef struct Address TAddress;
TAddress addr1, addr2;
Trang 57Bai giang ngon ngu lap trinh C - (c) N
Trang 58Bai giang ngon ngu 58
Trang 59Bai giang ngon ngu lap trinh C - (c) N
Trang 60Bai giang ngon ngu 60
• Các tr ờng đều có cùng địa chỉ
• Kích th ớc của hợp là kích th ớc của tr ờng dài nhất
• Các thao tác trên hợp cũng giống nh trên cấu trúc
Trang 61Bai giang ngon ngu lap trinh C - (c) N
Trang 62Bai giang ngon ngu 62
KiÓutÖp
• Trong C cã hai lo¹i tÖp: tÖp nhÞ ph©n vµ tÖp v¨n b¶n
• Khai b¸o tÖp: con trá tÖp
Trang 63Bai giang ngon ngu lap trinh C - (c) N
Trang 64Bai giang ngon ngu 64
Trang 65Bai giang ngon ngu lap trinh C - (c) N
FILE *in, *out;
if ((in = fopen("\\AUTOEXEC.BAT", "rt")) == NULL) {
fprintf(stderr, "Cannot open input file.\n"); return 1;
}
Trang 66
Bai giang ngon ngu 66
Trang 67Bai giang ngon ngu lap trinh C - (c) N
Trang 68Bai giang ngon ngu 68
Trang 69Bai giang ngon ngu lap trinh C - (c) N
Trang 70Bai giang ngon ngu 70
END Thank you!