Tải bản đầy đủ (.pdf) (13 trang)

LẬP TRÌNH CĂN BẢN - CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ C potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (236.46 KB, 13 trang )

1
LẬP TRÌNH CĂN BẢN
CÁC THÀNH PHẦN CƠ BẢN CỦA
NGÔN NGỮ C
2
Nộidung
l Bộ chữ viếttrongC
lCáctừkhóa
l Cặpdấuchúthích
l Cáckiểudữliệusơcấpchuẩn
l Tênvàhằng
l Biếnvàbiểuthức
l CấutrúccủamộtchươngtrìnhC
3
Bộ chữ viếttrongC
lBộchữ viếttrongCbaogồmcáckýtựsau:
l 26 chữ cáilatinhlớnA,B,C Z
l 26 chữ cáilatinhnhỏ a,b,c z.
l 10 chữ số thậpphân0,1,2 9.
l Cáckýhiệutoán học: +, -, *, /, =, <, >, ( ,)
l Cáckýhiệu đặcbiệt: ., : ;" ' _ @ # $ ! ^ [ ] { }
l Dấucáchhay khoảngtrống.
l Phânbiệtchữ
HOA
HOA vàchữ
thư
thư


ng
ng


4
CáctừkhóatrongC
lTừkhóalàcáctừdànhriêngcủaC: hàm,
lệnh, thư viện,…
l Không được dùngtừkhóa đểđặttêntrong
chương trình.
5
Cặpdấuchúthích (comment)
l Khibiêndịchcácphầnchúthíchbịbỏqua
l Dùng/* và*/: chúthíchdàinhiềudòng
l Dùng//: chúthíchchỉ 1 dòng
#include <stdio.h>
#include<conio.h>
int main (){
char ten[50]; /* khaibaobien ten
kieuchar 50 kytu */
printf(“Xinchobietten cuaban !”);
scanf(“%s”,ten); /*Doc vao1 chuoila ten ban*/
printf(“Xinchaoban %s\n ”,ten);
//Dung chuongtrinh, chogo phim
getch();
return 0;
}
6
Cáckiểudữliệusơcấpchuẩn
l Kiểusốnguyên (integer)
l 1 byte, 2 byte và4 byte
l Códấu hay không dấu
l Kiểusốthực (real)
l Dấu chấm động

l 4 byte, 8 byte và10 byte
l Kiểu rỗng: void
7
Kiểusốnguyên
l Được dùng để lưucác giátrị nguyên hay còngọilà
kiểu đếm được.
8
Kiểusốthực
l Đượcdùng để lưucác số thực hay cácsốcódấu
chấmthậpphân
l Kiểu void
l Cóý nghĩalàkiểu rỗng khôngchứagiátrị gì
l Vídụ: void main(){
….}
9
Hàm sizeof()
l Xác định kích thước 1 kiểu dữ liệu khi
chạy chương trình (runtime)
l Cúpháp: sizeof(tên kiểu dữ liệu)
l Kết quả trả về: số byte kích thước
l Vídụ:
sizeof(int)
sizeof(long double)
10
Kiểu enum (1)
l enum gần giống với tiền xử lý #define.
l Cho phép định nghĩa 1 danh sách các bídanh
(aliase) để trình bày các số nguyên.
l Vídụ:
#define MON 1

#define TUE 2
#define WED 3
cóthể dùng enum:
enum week{ Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days;
l Ưu điểm của enum so với #define lànó cóphạm
vi, nghĩa là1 biến chỉ cótác dụng trong khối nó
được khai báo.
11
Kiểu enum (2)
12
Kiểu enum (3)
13
TênvàhằngtrongC
lTên (identifier)
l Được dùng đểđặtcho chươngtrình, hằng,
kiểu, biến, chươngtrìnhcon,
l Có2 loại:
l Tênchuẩn (từ khóa): làtêndo C đặtsẵnnhư
tênkiểu: int, char, float,…; tênhàm: sin, cos
l Têndo ngườilậptrìnhtựđặt.
14
Chúý khi đặt tên
l Phân biệt HOA và thường
15
Têndo ngườilậptrìnhtựđặt
l Vídụ:
l Tên đặt hợp lệ: Chieu_dai, Chieu_Rong, Chu_Vi
l Tên không hợp lệ: Do Dai, 12A2
l Phảituânthủ quytắc:
l Sử dụng bộ chữ cái, chữ số vàdấu gạch dưới (_)

l Bắt đầubằngmộtchữ cáihoặcdấugạchdưới.
l Khôngcókhoảngtrống ở giữatên.
l Không đượctrùngvớitừkhóa.
l Độ dàitốiđacủatênlà32 kýtự, tuynhiêncầnđặtsao
chorõràng, dễ nhậnbiếtvàdễnhớ.
l Khôngcấmviệc đặttêntrùngvớitênchuẩnnhưngkhi
đóý nghĩacủatênchuẩnkhôngcòngiátrị nữa.
16
Hằng(Constant)
l Là đạilượng không đổi trongsuốtquátrìnhthực
thichương trình
=> không thể gán lạI giátrị cho hằng
l Hằng cóthể là:
l 1 con số, 1kýtự
l1 chuỗikýtự
17
Hằngsốthực
l Giátrị kiểu: float, double, long double
l 2 cáchthể hiện
l Cách1:123.34 -223.333 3.00 -56.0
l Cách2:viếttheosốmũhay số khoahọc
1234.56e-3 = 1.23456 (làsố1234.56*10
-3
)
-123.45E4 = -1234500 ( là-123.45*10
4
)
18
Hằngsốnguyên(1)
l Hằngsốnguyên2 byte (int) hệ thậpphân

l Sử dụng 10 ký số 0 9
l Hằngsốnguyên2 byte (int) hệ bátphân
l Sử dụng 8kýsố0 7
l Cáchbiểudiễn: 0<cáckýsốtừ0 đến7>
19
Hằngsốnguyên(2)
l Hằngsốnguyên2 byte (int) hệ thậplục
phân
l Làkiểusốnguyêndùng:
l 10 kýsố0 9 và
l 6 kýtựA, B, C, D, E ,F
l Cáchbiểudiễn:
0x<cáckýsốtừ0 đến9 và6 kýtựtừA đến
F>
l Số thậplụcphân:
0xd
n
d
n-1
d
n-2
…d
1
d
0
20
Hằng số nguyên (3)
l Vídụ: Kết quả của chương trình sau làgi?
21
Hằngsốnguyên(4)

l Hằngsốnguyên4 byte (long)
l Đượcbiểudiễnnhư số inttronghệthập
phânnhưngkèmtheokýtựlhoặc L.
l Vídụ:
45345L hay 45345l hay 45345
22
Hằngkýtự(char)
l Vídụ: ‘a’, ‘A’, ‘0’, ‘9’
l Là1 kýtựđượcviếttrong
cặpdấunháy đơn(‘).
l Mỗimộtkýtựtương ứngvới
1 giátrị trongbảngmã
ASCII.
l Hằngkýtựcũng đượcxem
như trị số nguyên.
l Chúngtacóthể thựchiện
cácphéptoán số họctrên2
kýtự(dùnggiátrị ASCII của
chúng)
ASCII = American Standard Code for Information Interchange
23
Hằngchuỗikýtự
lVídụ: “Ngon ngu lap trinh C”
l Là1chuỗihay 1 xâukýtựđược đặttrongcặpdấu
nháykép (“).
Chúý:
l “”: chuỗirỗng -không cónội dung
l Khilưutrữ trongbộnhớ, mộtchuỗi đượckếtthúcbằngký
tự NULL (‘\0’: mãAsciilà0).
l Để biểudiễnkýtựđặcbiệtbêntrongchuỗitaphảithêm

dấu\phíatrước.
l Vídụ:
Viết “I\’m a student” cho “I’m a student”
Viết “Day la kytu\“dacbiet\”” cho “Day la kytu“dacbiet””
24
BiếnvàBiểuthức (variable and expression)
l Biếndùng để chứadữliệutrongquátrìnhthựchiện
chươngtrình.
l Giátrị củabiếncóthể bị thay đổi.
l Cúphápkhaibáobiến:
<Kiểudữliệu> Danh sáchcáctênbiếncáchnhau bởidấu
phẩy;
25
Khởi tạo giátrị cho biến lúc khai báo
l Vídụ:
l Cách viết giátrị cho biết luôn kiểu của nó:
l Chúý:8864L cókiểu long, còn 8864 cókiểu int
26
Vị tríkhaibáobiến (1)
l Biếnngoài
l Được đặt bên
ngoài tất cả các
hàm
l Ảnh hưởng đến
toàn bộ chương
trình (biếntoàn
cục)
27
Vị tríkhai báo biến(2)
l Biến trong

l Được đặtbên trong
hàm, chương trình
chính hay một khối
lệnh
l Ảnh hưởng đến hàm,
chương trình hay
khối lệnh chứa nó
(biến cục bộ).
28
Biểu thức (1)
l Vídụ:
(-b +sqrt(Delta))/(2*a)
l Biểu thức làmột sự kết hợp giữa
l Các toán tử (operator) và
l Các toán hạng (operand)
l Các loại toán tử trong C
l Toán tử số học
l Toán tử quan hệ vàlogic
l Toán tử Bitwise
l Toán tử ?
l Toán tử contrỏ &và*
l Toán tử dấu phẩy
29
Các toán tử số học (1)
30
Các toán tử số học (2)
• Tăng vàgiảm(++ & )
++x hay x++ giống x = x + 1
x hay x giống x = x –1
•Tuy nhiên:

x = 10;
y = ++x; //y = 11, x=11
• Còn:
x = 10;
y = x++; //y = 10, x=11
31
Các toán tử số học (3)
l Đâu làsựkhác nhau?
x++ trả về giátrị hiện hành của x và sau đó tăng x
++x tăng x trước và sau đótrả về giátrị mới của x
32
Biểu thức Boolean (boolean expression)
l Chúý! Không cókiểu Boolean rõ ràng trong C.
Thay vào đóC dùng các giátrị nguyên để tượng
trưng cho giátrị Boolean, với qui ước:
l Chúý! C dùng “=” cho phép gán, vàdùng “==“
cho phép so sánh. Nótrả về 1 nếu bằng và 0 nếu
ngược lại
false Giátrị 0
true Bất kỳ giátrị nào ngoại trừ 0
33
Các toán tử quan hệ vàcác toán tử Logic (1)
l Các phép so
sánh sau tạo ra
các biểu thức
logic cógiátrị
kiểu Boolean
34
Các toán tử quan hệ vàcác toán tử Logic (2)
l Vídụ:

lCácbiểu thức logic trả về
0 nếu false(sai)
1 nếu true(đúng)
35
Các toán tử quan hệ vàcác toán tử Logic (3)
l Bảng chân trị cho các toán tử Logic
l Thứ tự ưu tiên
l Vídụ:10>5&&!(10<9)||3<=4 => đúng (1)
36
Các toán tử Bitwise
l Toán tử Bitwise
giúp kiểm tra,gán
hay thay đổi các
bitthật sự trong1
bytecủaword.
l Chỉ dùng cho kiểu
char và int.
37
Toán tử ?
l Toán tử ? thực hiện như lệnhif-else.
l Cúpháp: E1? E2 : E3
l Vídụ: X = (10 > 9) ? 100 : 200;
=>X=100
X = (10 >15 )? 100 : 200;
=>X=200
38
Toán tử contrỏ &và*
lVídụ:
int *p; //con tro so nguyen
int count=5, x;

p= &count;
=>Đặt vào biếnm địa chỉ bộ nhớ của biếncount
l Toán tử * trả về nộidung củaô nhớ màmột
con trỏ đang chỉ vào
l Vídụ:
x= *p;// x=5
39
Toán tử dấu phẩy
l Vídụ:
l x = (y=3,y+1);
l Trước hết gán 3 cho y rồi gán 4 cho x.
l Đượcsửdụng để kết hợp các biểu thức lại với
nhau.
l Bên trái của dấu(,) luôn được xem làkiểu
void.
l Biểu thức bên phải trở thành giátrị của tổng
các biểu thức được phân cách bởi dấu phẩy.
40
Tổng kết về độ ưu tiên
41
Phép gán được viết gọn lại
x= x <phép toán> y;
cóthể được viết gọn lại (short form):
42
Các tậptin thư viện thông dụng
l stdio.h: Định nghĩa các hàm vào/ra chuẩn(standard
input/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(),
fopen(),fclose(),fread(),fwrite(),getchar(),putchar(),getw(),
putw()…
l conio.h: Định nghĩa các hàm vào ra trong chế độ DOS: clrscr(),

getch(),getche(),getpass(),cgets(),cputs(),putch(),clreol(),…
l math.h: Định nghĩa các hàm tính toán: abs(),sqrt(), log(). log10(),
sin(),cos(), tan(),acos(),asin(),atan(),pow(), exp(),…
l alloc.h: Định nghĩa các hàm liên quan đến việc quản lý bộ nhớ:
calloc(),realloc(),malloc(), free(),farmalloc(),farcalloc(),farfree(),

l io.h: Định nghĩa các hàm vào ra cấp thấp: open(), _open(),
read(), _read(), close(), _close(),creat(), _creat(),creatnew(),
eof(),filelength(), lock(),…
l graphics.h: Định nghĩa các hàm liên quan đến đồ họa:
initgraph(), line(), circle(),putpixel(),getpixel(),setcolor(), …
43
Cấu trúc của 1 chương trìnhC (1)
l Cấu trúc một chương trìnhC
l Tiền xử lý vàbiên dịch
l Prototype
l Các tậptin thư viện thông dụng
44
Cấu trúc của 1 chương trình C (2)
Chương
trình
chính
Cài đặt
các
hàm
Các chỉ
thị tiền
xử lý
Định nghĩa
kiểu mới

Prototype
Khai báo
biến
ngoài
45
Tiền xử lý vàbiên dịch (preprocess and
compile)
l Các chỉ thị định hướng (directive):
l #include…, #define…
l Cóthể chứa các lệnh phức tạp như if-else.
l Bộ tiềnxửlý (preprocessor) sẽ thông dịch
các directive vàxóa bỏ nó trước khi cung cấp
cho trình biên dịch C.
46
#define
l #define khai báo một
tên macro (macro
symbol).
l Sau đó, mỗi lần tên
macro này xuất hiện,
nósẽ được thay thế
bởi giátrị của nó.
47
Chia chương trình ra các module
(1)
l 1 chương trình phức tạp cóthể được chia ra vài
module
48
Chia chương trình ra cácmodule
(2)

l Vấn đề: testmodule.c phải
biết cácprototype của foor
và bar.
l Giải pháp 1 (tệ):
l Chèn tay các prototype vào
cácfile .c códùng nó.
l Bất lợi: Mỗi khi prototype bị
thay đổi=> phải chỉnh lại
prototype trong tất cả các file
.c dùng nó.
l Giải pháp 2 (tốt):
l Lưu các prototype vào 1 file
riêng biệt mymodule.h (h:
header).

49
#include
l Với #include, bộ tiền xử lý sẽ thêm vàthay thế
token #include filename bằng nội dung của
filename.
l Các header file sẽ được tìm ởđâu?
l #include <file.h>: tìm file.h trong thư mục đã được
xác định trong INCLUDE DIRECTORIES. Hoặc
trong /usr/include (linux)
l
#include


C:
\

\
TC
\
\
file.h

:

t
ì
m

file.h

trong đư

ng d

n
50
Header file
l Các header file cóthể
chứa:
l Prototype cho các hàm
(function)
l Định nghĩa kiểu (structs,
unions, enums, typedefs)
l (Địnhnghĩacácclass trong
C++)
l #define macro

l #pragma cho compiler
l Các biến toàn cục
l Cài đặt trực tiếp các hàm
51
Hết chương

×