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

Bài giảng ngôn ngữ lập trình C/C++

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 (324.25 KB, 26 trang )

BÀI GIẢNG
NGÔN NG

L

P TRÌNH C/C++
TS. T
r
ần Đăn
g
Hưn
g
NGÔN NG

L

P TRÌNH C/C++
g
g
Khoa Công Nghệ Thông Tin
Email:
N

i Dung
N

i Dung
 Chương 1: Giới thiệu
 Chương 2: Các cấu trúc điều khiển
 Chương 3: Hàm (functions)
 Chương 4: Mảng (arrays)


 Chương 5: Con t
r
ỏ (pointers)
 Chương 6: Kí tự và xâu (characters and strings)
Ch
ươ
ng 7: C

u trúc và file (structures and files)

Ch
ươ
ng 7: C

u trúc và file (structures and files)
 Chương 8: Tiền xử lý (preprocessors)
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Hình thức đánh giá
 Dự lớp 30 %
 Bài thi cuối khóa 70%
 Trắc nghiệm 40%
 Thực hành trên máy 60%
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Tài liệu tham khảo và trình biên dịch
 Sách
 Ngôn ngữ lập trình C – Quách Tuấn Ngọc

 Kỹ thuật lập trình C – Phạm Văn

t

 />
Trình biên d

ch

Trình biên d

ch
 TC 3.0 (giao diện giống Pascal)
 Visual C++ (windows)
(li )
 gcc
(li
nux
)
 Dev-C++ (windows)
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Chương 1: Giới thiệu
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
L

ch s

ngôn ng

l

p trình C
L


ch s

ngôn ng

l

p trình C
 Ra đời vào khoảng năm 1970, viết bởi Dennis Ritchie
tại phòng thí nghiệm Bell.
 Ra đời dưới sựảnh hưởng của các ngôn ngữ t
r
ước
đó: BCPL (1967) và B (1970).

Đ
ượ
c dùng đ

vi
ế
t h

đi

u hành Unix

Đ
ượ
c dùng đ


vi
ế
t h

đi

u hành Unix
 Độc lập với phần cứng (khả chuyển)
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Chu

n C (standard C)
Chu

n C (standard C)
 Có rất nhiều phiên bản C
 ANSI C (American National Standards Institute): 1989
 Các phiên bản update vào năm 1995 (C95), 1999 (C99)
 C và C++
C là b






C đ

h


l

ìh h

đ

i

C
++
là b

n

m

r

ng

c

a
C đ

h

t
r


l

p

tr
ì
n
h h
ư

ng
đ

i
tượng và thiết kế các phần mềm lớn.
 C không hẳn là một phần của C++, nhưng có thể sử dụng cả C
à C h

hi
ế
k
ế
h
ìh lih h
v
à C
++

n
h


m

t
hi
ế
t
k
ế
c
h
ương

tr
ì
n
h li
n
h h
ọat.
 Nên thành thạo C trước khi học C++.
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Th
ư
vi

n chu

n C
Th

ư
vi

n chu

n C
 Chương trình C chỉ bao gồm các modules được gọi là
hàm (function)

ế
 Có th

tự vi
ế
t các hàm
 Sử dụng các hàm trong thư viện chuẩn
Tránh phát minh l

i bánh xe
(avoid re
inventing the wheel)


Tránh phát minh l

i bánh xe
(avoid re
-
inventing the wheel)


 Tránh việc tự viết các hàm đã có trong thư viện
 Các hàm trong thư viện chuẩn thường được viết cẩn thận và
hiệu quả
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Các pha của
chương trình C
 Soạn thảo chương trình (edit)
 Đặt tên file có đuôi là .c (vidu.c,
bi1 )
b
a
i1
.c,…
)
 Tiền xử lý (preprocess)

Biên d

ch (compile)

Biên d

ch (compile)
 Link
 Load
 Excute
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Một chương trình C đơn giản
-Ví dụ 1: In một dòng chữ ra màn hình-
 Lời giải thích

 Đặt trong cặp dấu /* …. */
Trình biên d

ch s

b

qua

Trình biên d

ch s

b

qua
 Được dùng để chú thích cho các dòng lệnh
 Chỉ dẫn tiền biên dịch

#include <stdio h>
-
s

d

ng các hàm vào/ra
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

#include <stdio
.

h>
s

d

ng các hàm vào/ra
.
 Cần biết hàm nào nằm trong thư viện chuẩn nào
M

t ch
ươ
ng trình C đ
ơ
n gi

n
M

t ch
ươ
ng trình C đ
ơ
n gi

n
-Ví dụ 1: In một dòng chữ ra màn hình-
 Một chương trình C có thể có 1 hoặc nhiều hàm, nhưng
buộc phải có hàm main()




 Cặp d

u {} th

hiện các kh

i (block) chương trình,
thân các hàm luôn được đặt trong cặp {}

L

nh printf() đ
ư
a n

i dung ra màn hình

L

nh printf() đ
ư
a n

i dung ra màn hình
 Kí tự \n đưa con trỏ xuống 1 dòng mới
 Hàm int main
(),
nên

p
hải có l

nh return t
r
ả về m

t số
(), p


nguyên, return 0; - hàm kết thúc bình thường.
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Hàm printf() và các kí tự điều khiển
 Hàm printf(s): đưa nội dung của s ra màn hình, s có
thể là hằng xâu kí tự, biến, hoặc biểu thức.


 Một s

h

ng kí tự đặc biệt:
 \n – đưa con trỏ xuống dòng

\
r

đ
ư

a con tr

v

đ

u dòng

\
r
đ
ư
a con tr

v

đ

u dòng
 \t – đưa con trỏ đến vị trí tab tiếp theo
 \a – bật 1 tiếng chuông
\
\
đ
kí t
\

\
\
-

đ
ưa

ra
kí t

\
 \” – đưa ra kí tự “
 Ví d

: tha
y
đổi hàm
p
rintf
()
tron
g
ví d

1.
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

y
p() g

Ví dụ 2: Cộng hai số
Wednesday, April 04, 2012Ngôn ngữ lậptrìnhC © T.Đ.Hưng – ĐHSPHN
Nhập dữ liệu – scanf()
 scanf(“%d”, &integer1)

 Đợi người dùng nhập giá trị, rồi gõ phím Enter
ế
 Lưu giá t
r
ị vào bi
ế
n ở bên phải toán tử
 Đổi giá trị được nhập sang kiểu dữ liệu của biến
 = (toán tử gán)
 Gán giá trị cho biến
Tá t

hi ôi
Bi t

T
o
á
n
t

h
a
i
ng
ôi
-
Bi
nary


opera
t
o
r
 Ví dụ:
 sum = variable1 + variable2;
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Biến và cách đặt tên biến
 Biến (variables)
 Tương ứng với các vùng trong bộ nhớ máy tính

ế

 M

i bi
ế
n có tên, ki

u, kích thước, và giá t
r

 Khi biến được gán một giá trị mới, giá trị cũ bị ghi đè
 Đọc
g
iá t
r
ị của các biến tron
g
bộ nhớ khôn

g
làm tha
y
đổi các
g
g
gy
biến trong bộ nhớ
 Quy tắc đặt tên biến

Chu

i ký t

(ch

cái a z A Z

Chu

i ký t

(ch

cái a

z
,
A


Z
,

chữ số 0 9, dấu gạch dưới _ )
 Không được bắt đầu bằng chữ số
Phâ bi

t h

h h

th

Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

Phâ
n
bi

t
c
h

h
oa

c
h

th

ư

ng.
Khai báo biến
 Trước khi sử dụng các biến thì phải khai báo nó.
 Cách khai báo:
 Kiểu_dữ_liệu tên_biến;
hoặc

Ki

ud

li

u tên bi
ế
n
=
giá tr

đ

u;

Ki

u
_
d


li

u tên
_
bi
ế
n giá
_
tr



u;
 Khai báo nhiều biến cùng kiểu thì các biến cách nhau
bởi dấu phẩy
 Ví dụ:
int a;
double n = 10;
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
float m = 10, p = 20;
Các kiểu dữ liệu chuẩn
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Các phép toán
 Các phép toán số học
 Cộng/trừ: + -
Phép nhân: *
Ví dụ
x = x + 2;


Phép nhân: *
 Phép chia: /
 Phép chia lấy dư: %
Q t


tiê
y = x / 4;
x = x % 10;

Q
uy
t

c

ưu
tiê
n
 Các phép toán trong ngoặc được tính trước
 Các ngoặc lồng nhau, các phép toán ở bên trong nhất được tính
t

h

t
tr
ư

c


n
h

t
 Tiếp theo là các phép nhân, chia, và phép lấy số dư
 Các phép toán được tính từ trái sang phải
à
í

ù
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
 Cộng v
à
t
r
ừ được t
í
nh cu

i c
ù
ng
 Các phép toán được tính từ trái sang phải
Ví dụ: thứ tự
ưu tiên các
p

p
toán

pp
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Các phép toán logic
 Toán tử “và”: &&
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
 Toán tử “hoặc”: ||
Các phép toán trên bit
 Toán tử: & -phép toán AND
 Toán tử: | - phép toán OR
 Toán tử: ~ - phép đảo ngược bit
 Toán tử: << - dịch bit sang trái
á
 To
á
n tử: >> - dịch bit sang phải
 Ví dụ:
x = 10; y = x << 2; => y = 24
x = 14; y = x >> 2; => y = 3
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
x = 9; y = 7; z = x % y; => z = 2
Các phép toán rút gọn
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
Các phép toán rút gọn
 Ví dụ
x = 10; y = 20; x += y; => x = 30
x = 4; x
*
= 2;
=>
x = 8

x = 4; x = 2;
=>
x = 8
 Sự khác nhau giữa ++x và x++
 ++x: giá trị của x sẽ tăng lên 1 đơn vị TRƯỚC khi thực hiện
b

h
ó



b
i

u

t
h
ức

c
ó
mặt

c

a

x.

 x++: giá trị của x sẽ tăng lên 1 đơn vị SAU khi thực hiện biểu
thức có mặt của x.
 Ví dụ:
x = 10; y = ++x + 2; => x = 11; y = 13
x = 10; y = x++ + 2;
=>
x = 11
;
y = 12
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
x = 10; y = x++ + 2;
=>
x = 11
;
y = 12
x = 10; y = 20; z = 2 * (++x – y++); => x = 11; y = 21; z = -18
Các đặc tả của hàm printf()
 Để đưa nội dung của các biến (hoặc biểu thức) ra màn
hình phải có các chỉ dẫn cụ thể cho từng loại dữ liệu.
 Ví dụ:
 int x = 20; printf(“x = %d”, x);

float x
=
15.5; printf(

x
=

%f


, x);

float x 15.5; printf( x
%f
, x);
 float x = 10; printf(“x = %6.2f”, x);
 int x = 10; y = 15.5; printf(“x = %6d, y = %6.2f”,x,y);
Cá kí
đ





c

tự
đ

c

t

%d (hoặc %i) int %c char
%f
float
%lf
double
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

%f
float
%lf
double
%s string %x hexadecimal
Các đặc tả của hàm scanf()
 Để nhập các giá trị vào cho các biến cần phải có chỉ dẫn kiểu dữ
liệu cho từng biến.
 Ví dụ:

ê
àí
 Nhập hai s

nguy
ê
n int từ b
à
n ph
í
m
printf(“Cho hai so nguyen a,b: “); scanf(“%d%d”,&a,&b);
 Nhập một số int và một số float từ bàn phím
p
rintf
(
“Cho so n
g
u
y

en a va so thuc b: ”
);
scanf
(
“%d%f”
,
&a
,
&b
);
p( gy ); ( ,
,
);
 Chú ý: Khi nhập xâu kí tự thì không có dấu & trước biến, vì bản thân
tên xâu đã là con trỏ.
printf(“Cho mot xau ki tu: “); scanf(“%s”,st);

Các kí t

đ

c t

cho t

ng ki

u d

li


u gi

ng trong hàm printf()

Các kí t

đ

c t

cho t

ng ki

u d

li

u gi

ng trong hàm printf()
 Chú ý: Hàm printf() và scanf() đều nằm trong thư viện <stdio.h>,
nên đầu chương trình phải khai báo thư viện bằng lệnh:
#include <stdio.h>
Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN

×