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

Tổng quan về ngôn ngữ lập trình 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 (946.95 KB, 48 trang )

Bài 1: Tổng quan về
ngôn ngữ lập trình C

Ngôn ngữ lập trình C

2

I. Sử dụng phần mềm lập trình
1. Borland C
2. Dev-C++
3. Visual studio: C#

Ngôn ngữ lập trình C

3


II. Giới thiệu ngôn ngữ lập trình C

1. Các thành phần của NNLT C


Tập các ký tự











Chữ cái: A .. Z, a .. z
Chữ số : 0..9
Ký hiệu toán học :
+-*/=()
Ký tự gạch nối: _
Các ký hiệu đặc biệt khác như : . , ; : [ ] { } ? ! \ & | % # $,…

Từ khoá



Là những từ có một ý nghĩa hoàn toàn xác định
Asm, char, do, int, float, for, do, While,…

Tên




Dùng để xác định các đại lượng khác nhau trong một chương trình
Bắt đầu bằng chữ cái hoặc gạch nối
Độ dài cực đại mặc định là 32
Ngôn ngữ lập trình C

4

2. Các kiểu dữ liệu cơ sở trong C
 Kiểu số ký tự (char)

 Kiểu số nguyên (int)
 Kiểu dấu phẩy động (chính xác đơn (float),
chính xác kép (double))
 Kiểu void

Ngôn ngữ lập trình C

5


2.1 Kiểu ký tự (char)
 Một giá trị kiểu ký tự (char) chiếm 1 byte trong bộ
nhớ và biểu diễn một ký tự thông qua bảng mã ASCII.
 Ví dụ
Ký tự

Mã ASCII

1

49

0

48

2

50


a

97

A

65
6

Ngôn ngữ lập trình C



Trong ngôn ngữ C cung cấp hai kiểu ký tự (char) là
signed char và unsigned char
Phạm vi
signed char

unsigned char

Ví dụ :

Số ký tự
-128..127
0..255

Kích thước
1 byte
1 byte


char ch, ch1;

ch= ‘a’ ; ch1= 97;

Ngôn ngữ lập trình C

7


2.2 Kiểu số nguyên (int)
Kiểu số nguyên trong C gồm các kiểu sau:
Kiểu
int

Phạm vi biểu diễn Kích thước

Unsigned int

-32768 -> 32767
0 -> 65535

2 byte

2 byte

Ngôn ngữ lập trình C

8

2.3 Kiểu số thực hay còn gọi là kiểu dấu phẩy động

Kiểu

Phạm vi biểu diễn

float

3.4-38E -> 3.4E+38

double
long
double

1.7E-308 -> 1.7E+308

3.4E-4932 -> 1.1E+4932

Ngôn ngữ lập trình C

Số chữ số Kích
có nghĩa thước

7-8

4 byte

17-18

10 byte

15-16


8 byte

9


3 Hằng và biến
3.1 Hằng:
 Khái niệm: hằng là giá trị bất biến trong chương
trình không thay đổi, không biến đổi về mặt giá trị.
Các loại hằng được sử dụng trong C tương ứng với
các kiểu dữ liệu nhất định
 Trong C có ba loại hằng :




Hằng số
Hằng chuỗi
Hằng ký tự

Ngôn ngữ lập trình C

10

Hằng số: là các giá trị số đã xác định, có thể là kiểu
nguyên hay kiểu thực
 Hằng nguyên: Giá trị chỉ bao gồm các chữ số, dấu +,
- được lưu trữ theo kiểu int. Ví dụ: 12,-12
 Nếu giá trị vượt quá miền giá trị của int hoặc có ký

tự l (hay L ) theo sau giá trị thì lưu theo kiểu long int.
Ví dụ: 43L hoặc 43l là hằng nguyên lưu theo kiểu
long int.
 Hằng thực: Trong giá trị có dấu chấm thập phân,
hoặc ghi dưới dạng số có mũ, và được lưu theo kiểu
float, double, long double. Ví dụ: 1.2 , 2.1E -3 (2.1E3=0.0021) hoặc 3.1e-2 (3.1e-2=0.031).
Ngôn ngữ lập trình C

11


Hằng ký tự
 Một hằng kiểu ký tự được viết trong dấu ngoặc đơn (' )
như 'A' hoặc 'z'.
 Hằng ký tự 'A' thực sự đồng nghĩa với giá trị nguyên
65, là giá trị trong bảng mã ASCII của chữ hoa 'A' (Như
vậy giá trị của hằng chính là mã ASCII của nó). Ðối với
một vài hằng ký tự đặc biệt, ta cần sử dụng cách viết
thêm dấu \ , như '\t' tương ứng với phím tab:
 Hằng ký tự có thể tham gia vào phép toán như mọi số
nguyên khác:
VD:
'8' - '1'= 56-49=7.
Ngôn ngữ lập trình C

‘\n’
‘\t’
‘\o’
‘\b’
‘\r’

‘\f ’
‘\\’
‘ \” ’
‘ \’ ’

Cách viết

Ký tự
Xuống hàng
Tab
“nul” tương ứng với giá trị
nguyên 0 trong bảng mã
ASCII
Backspacse
Về đầu dòng
Sang trái
\



Ngôn ngữ lập trình C

12

13


Hằng chuỗi
 Là chuỗi ký tự nằm trong cặp dấu nháy kép " ". Các ký
tự này cũng có thể là các ký tự được biểu diễn bằng

chuỗi thoát.
 Ví dụ: "Turbo C", "Ngôn ngữ C++ \n\r"
 Một hằng chuỗi được lưu trữ tận cùng bằng một ký tự
Nul (\0), ví dụ chuỗi "Turbo C" được lưu trữ trong bộ
nhớ như sau:
T u

r

b

o

Ngôn ngữ lập trình C

C

\0

14

Cách định nghĩa hằng sử dụng trong chương trình
 Với các giá trị hằng thường được dùng trong một
chương trình ta nên định nghĩa ở đầu chương trình
(sau các dòng khai báo những thư viện chuẩn) theo cú
pháp:
#define <tên hằng> <giá trị>
Ví dụ: #define PI 3.1415

Ngôn ngữ lập trình C


15


3.2 Biến
- Cách khai báo: Mỗi biến trong chương trình đều phải
được khai báo trước khi sử dụng với cú pháp khai:
Kiểu dữ liệu <danh_sách_tên_biến>;
 Lưu ý: nếu có nhiều tên biến thì giữa các tên biến
phải có dấu , để ngăn cách
Ví dụ: int a,b; float x;
- Khởi đầu cho các biến
Ngay trên dòng khai báo ta có thể gán cho biến
một giá trị. Việc làm này gọi là khởi đầu cho biến.
Ví dụ: int a,b=6,d=1;
Ngôn ngữ lập trình C




16

Cách truy xuất đến địa chỉ của biến
Một số hàm của C dùng đến địa chỉ của biến ví dụ
như hàm scanf. Ðể nhận địa chỉ của biến dùng
toán tử: &
Ví dụ: &tên_biến - &a : địa chỉ của biến a

Ngôn ngữ lập trình C


17


3.3 Cấu trúc tổng quát của chương trình C

Một chương trình C chuẩn gồm có các thành
phần sau:
1. Các chỉ thị tiền biên dịch
2. Khai báo các kiểu dữ liệu mới
3. Khai báo hằng, khai báo biến
4. Khai báo hàm
5. Chương trình chính

Ngôn ngữ lập trình C

18

1. Chỉ thị tiền biên dịch (xử lý): giúp trình biên dịch thực
hiện một số công việc trước khi thực hiện một số công
việc trước khi thực hiện biên dịch chính thức
VD:
#include <stdio.h>;
#include <conio.h>;
2. Khai báo kiểu dữ liệu mới: dung từ khoá typedef.
VD:
typedef
int songuyen;
typedef
float mang[10];
3. Khai báo hằng và biến: khai báo các hằng số và biến

dùng trong chương trình
4. Khai báo hàm: khai báo các hàm tự viết
5. Chương trình chính: hàm main là hàm bắt buộc trong
chương trình. Hàm main có thể trả về giá trị kiểu nguyên
(int) hoặc không trả về giá trị nào (void)
Ngôn ngữ lập trình C

19


/* Chương trình in ra dòng chữ ngôn ngữ lập trình trên
màn hình */
# include <stdio.h>
main () /* Ham chinh */
{
printf(" \n ngon ngu lap trinh");
/*xuong dong in chu ngon ngu lap trinh*/
}

Ngôn ngữ lập trình C

20

/* Chương trình tính chu vi và diện tích hình tròn, biết bán kính r
là một hằng số có giá trị =3.1 */
# include <stdio.h> /* khai báo thư viện hàm nhập xuất chuẩn */
# include <math.h> /* khai báo thư viện hàm toán học */
#include <conio.h>
#define r 3.1
main ()

{
float cv,dt; /* khai bao bien chu vi va dien tich kieu so thuc */
cv=2*r*M_PI; /* tinh chu vi */
dt=M_PI*r*r; /* Tinh dien tich */
printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt);
/* In ket qua len man hinh */
getch(); /* Tam dung chuong trinh */
}
Ngôn ngữ lập trình C

21


*Chương trình này minh họa cách vừa khai báo, vừa khởi
đầu một biến trong C */
#include <stdio.h>
main()
{
char ki_tu = 'a'; /* Khai báo/khởi đầu kí tự. */
int so_nguyen = 15; /* Khai báo khởi đầu số nguyên */
float so_thuc = 27.62; /* Khai báo/khởi đầu số thực*/
printf("%c la mot ki tu.\n",ki_tu);
printf("%d la mot so nguyen.\n",so_nguyen);
printf("%f la mot so thuc.\n",so_thuc);
}
Ngôn ngữ lập trình C

22

Bài 2

Các hàm vào ra dữ liệu

I. Hàm xuất nhập chuẩn trong thư viện <stdio.h>
Hàm đưa kết quả ra màn hình (có định dạng)

Cú pháp: printf(<dòng điểu khiển>, đối số 1, đối số 2,...);
Ý nghĩa:
đối số 1, đối số 2 : là biểu thức cần in kết quả ra màn hình
<dòng điểu khiển> là một hằng xâu ký tự bao gồm 3 loại:
Ký tự diều khiển việc xuống dòng tiếp theo ‘\n’
Ký tự hiển thị: là ký tự được in ra màn hình
Ký tự mô tả cách đưa ra màn hình của các biến (đặc tả
của kiểu). Mỗi biểu thức có đặc tả tương ứng
Ngôn ngữ lập trình C

23






Đặc tả kiểu nguyên đối với biểu thức có giá trị kiểu số
nguyên %[n]d .
Trong đó n là số nguyên xác định độ rộng tối thiểu dành
cho giá trị biểu thức in ra màn hình
Đặc tả kiểu số thực %[n][.m]f.
Trong đó m là số chữ số sau dấu phẩy, n là một số
nguyên xác định độ rộng tối thiểu trên màn hình cho giá
trị của biểu thức:


Ngôn ngữ lập trình C

24

VD:
%c : in một ký tự có mã ASCII tương ứng
%[n]d : in một số nguyên với chiều dài tối thiểu là n
%[n]ld: in một số nguyên (long int)
%[n.m]f : in một số thực vối chiều dài n và lấy m số thập
phân
%s : in ra chuỗi ký tự
%c : ký tự đơn
%d : in số ra kiểu int
%f : in số ra kiểu float
%e : Số chấm động (ký hiệu có số mũ)
%g : Số chấm động
%u : Số nguyên thập phân không dấu(unsigned)
Ngôn ngữ lập trình C

25


VD:
%x : in ra số ở dạng cơ số 16
%o : in ra số ở dạng cơ số 8
l : Tiền tố dùng kèm với %d, %u, %x, %o để chỉ số nguyên
dài (ví dụ%ld)
Các ký tự điều khiển và ký tự đặc biệt
\n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên.

\t : Canh cột tab ngang.
\r : Nhảy về đầu hàng, không xuống hàng.
\a : Tiếng kêu bip.
\\ : In ra dấu \
\" : In ra dấu "
\' : In ra dấu '
%%: In ra dấu %
Ngôn ngữ lập trình C

26

/* Chương trình ví dụ hàm printf : số nguyên */
# include <stdio.h>
int a=99;
main () /* Ham chinh */
{
printf(" in ra man hinh so nguyen %d",a);
}

Ngôn ngữ lập trình C

27


/* Chương trình ví dụ hàm printf : số thực */
# include <stdio.h>
float a=99.9;
main () /* Ham chinh */
{
printf(" in ra man hinh so thuc %4.2f",a);

}

Ngôn ngữ lập trình C

28

/* Chương trình ví dụ hàm printf : xuất 1 chuỗi ký tự*/
# include <stdio.h>
char chuoi[]="mon ngon ngu lap trinh";
main () /* Ham chinh */
{
printf(" Ngay hom nay hoc %s ",chuoi);
}

Ngôn ngữ lập trình C

29


/* Chương trình ví dụ hàm printf : xuất kết quả 1 phép tính*/
# include <stdio.h>
float a=90.9,b=9.1;
main () /* Ham chinh */
{

printf(" ket qua cua so %4.2f + so %4.2f = %4.2f ",a,b,a+b);
// ket qua cua so 90,90 + so 9,10=100,00

}


Ngôn ngữ lập trình C

30

Hàm nhận dữ liệu từ bàn phím (có định dạng)
Cú pháp:



scanf(<dòng điểu khiển>, &đối số 1, &đối số 2,...);

Ý nghĩa:
Dòng điều khiển: tương tự như lệnh printf
&đối số 1, &đối số 2: là địa chỉ của biến trong bộ nhớ

Ngôn ngữ lập trình C

31


/* Chương trình ví dụ hàm scanf : nhập 1 số bất kỳ*/
# include <stdio.h>
int a;
main ()
{
printf("Nhap vao 1 so nguyen bat ky ",a);
scanf("%d",&a);
printf("Gia tri vua nhap duoc la %d",a);
}


Ngôn ngữ lập trình C

32

Ví dụ


Viết chương trình nhập vào 2 số thập phân a
và b, sau đó xuất ra màn hình kết quả phép
toán:a + b, a x b.

Ngôn ngữ lập trình C

33


Hàm nhận từ bàn phím một ký tự
Cú pháp:
getchar();
Ý nghĩa:
Hàm nhận 1 ký tự từ bàn phím vào cho đến khi
gặp ký tự ‘\n’ (enter) thì dừng lại
 Hàm đưa một ký tự ra màn hình
Cú pháp:
putchar();
Ý nghĩa:
Hàm sẽ in 1 ký tự ra màn hình


Ngôn ngữ lập trình C


34

Hàm nhận từ bàn phím một chuỗi ký tự
Cú pháp:
gets(char *s);
Ý nghĩa:
Hàm nhận 1 chuỗi ký tự từ bàn phím vào cho đến khi gặp
ký tự ‘\n’ (enter) thì dừng lại
 Hàm hiển thị một chuỗi ký tự ra màn hình
Cú pháp:
puts(char *s);
Ý nghĩa:
Hiển thị một xâu ký tự s lên màn hình, sau khi in xong thì
con trỏ sẽ được chuyển xuống dòng.


Ngôn ngữ lập trình C

35


II. Hàm xuất nhập chuẩn trong thư viện <conio.h>
 Hàm getch() và getche
Cú pháp :
getch( )
getche( )
- Hai hàm trên chờ nhận một ký tự trực tiếp từ bộ đệm
bàn phím. Nếu bộ đệm rỗng thì chờ. Khi một phím
được ấn thì nhận ngay ký tự đó mà không cần phải

enter như các hàm nhập từ stdio.h
- Hàm getche() cho hiện ký tự lên màn hình còn getch()
thì không
- Kết quả trả về của hàm là ký tự được ấn trên bàn phím.
Ngôn ngữ lập trình C

36

Xuất ký tự có màu
Cú pháp :
cprintf giống hàm printf
Ý nghĩa: in ra ký tự có màu được ấn định bởi hàm
textcolor.
 Nhập ký tự có màu
Cú pháp:
cscanf giống hàm scanf
Ý nghĩa:
+ Nội dung nhập có màu được ấn định bởi hàm
textcolor
+ Nhận nội dung trực tiếp từ bộ đệm bàn phím. Vì
vậy với hàm cscanf ta cũng phải khử ký tự \n trong
bộ đệm bằng %*c hoặc bằng hàm getch()


Ngôn ngữ lập trình C

37


III.Một số hàm thao tác trên màn hình (không có trong

DEV C)
 Hàm xóa màn hình:
clrscr();
Có tác dụng xóa toàn bộ m àn hình và sau khi xóa con trỏ
sẽ ở vị trí góc phía bên trái.
Tương đương hàm: system(“cls”); (thư viện windows.h)
 Hàm đặt tọa độ con trỏ: gotoxy(int x, int y);
Đặt con trỏ tại vị trí x, y


Hàm đặt mầu nền textbackground

void textbackground(int color);
Đặt mầu nền Color là một biểu thức nguyên có giá trị
từ 0 đến 7 tương ứng với một trong 8 hằng số màu đầu
tiên của bảng mầu văn bản.
Ngôn ngữ lập trình C



38

Hàm đặt mầu chữ textcolor
void textcolor(int newColor);
Lựa chọn màu ký tự mới newColor.Trong đó newColor
là một biểu thức nguyên có giá trị từ 0 đến 15 tương ứng
với một trong các hằng số màu của bảng mầu văn bản.

Ngôn ngữ lập trình C


39


/*Chương trình minh họa hàm Hàm cprintf() và Hàm cscanf() * Borland c
/
# include <stdio.h>
# include <conio.h>
void main() /* Ham chinh */
{
char a,b;/*Khai báo hai biến a,b */
clrscr();/*Xóa màn hình */
textcolor(YELLOW);/*Ðặt mầu chữ*/
textbackground(BLUE);/*Ðặt mầu nền*/
cprintf("\nNhap mot so: ");
cscanf("%d%*c",&a);/*Nhập số a, nếu không có %*c sẽ trôi lệnh cscanf
dưới*/
cprintf("\nNhap mot ky tu : ");
cscanf("%c",&b);/*Nhập ký tự b*/
cprintf("\n%d %c",a,b);/*in số a và ký tự b*/
getch();/*Dừng màn hình để xem kết quả*/
40
}



Bài 3:
Biểu thức và các phép toán

I. Biểu thức


Là sự kết hợp các phép toán và các toán hạng để
diễn đạt một công thức toán học nào đó.
 Biểu thức trong C gồm có biểu thức toán học và
biểu thức logic


Biểu thức toán học bao gồm các phép toán số học và các
hằng, các biến, các hàm
 Biểu thức logic bao gồm các biến, hằng, hàm và phép
toán logic (!: phép phủ định, &&: phép và, || : phép
hoặc)


Ngôn ngữ lập trình C

41




II. Các phép toán

Phép toán số học
Phép toán
Ý nghĩa
+
Cộng
Trừ
*
Nhân

/
Chia
%
Lấy phần dư
Chú ý:
-Phép toán chia 2 số nguyên sẽ lấy kết quả phần
nguyên
-Phép toán lấy phần dư không áp dụng cho các giá
trị float và double
Ngôn ngữ lập trình C



42

II. Các phép toán

Phép toán quan hệ

Phép toán Ý nghĩa
Ví dụ
>
Có lớn hơn không?
a>b
>=
Có lớn hơn hay bằng không? a>=b
<
Có nhỏ hơn không? a<=
Có nhỏ hơn hay bằng không? a<=b

==
Có bằng hay không? a==b
!=
Có khác nhau không? a!=b
Các phép toán quan hệ có độ ưu tiên thấp hơn so với các phép
toán số học
Ví dụ: iNgôn ngữ lập trình C

43


II. Các phép toán




Phép toán logic

Phép phủ định !
 Phép và (AND) &&
 Phép hoặc (OR) ||


Các phép toán quan hệ có độ ưu tiên nhỏ hơn
so với ! nhưng lớn hơn so với phép && và ||
Ví dụ: (a<b)&&(c>d)  a<b&&c>d
Ngôn ngữ lập trình C




44

Câu lệnh gán và biểu thức
Cú pháp của lệnh gán: <tên biến> = <biểu thức>;
VD:
x = -10;
m = y + 2 – m;
Trong C cho phép người sử dụng được gộp lệnh gán
theo cú pháp :
a = b = c = 7;

Ngôn ngữ lập trình C

45








Phép toán tăng giảm
Toán tử + + : dùng để tăng giá trị của các biến nguyên
hay biến thực
Toán tử - - dùng để giảm giá trị của biến nguyên hay
biến thực
Toán tử + + và -- đều có thể đứng trước hoặc sau toán
hạng

VD: + + n ; n+ +; --m ; m--;
Khi các toán tử + +, -- đứng trước toán hạng thì giá trị
của toán hạng được tăng hoặc giảm trước khi sử dụng và
ngược lại nếu toán tử ++, -- đứng sau toán hạng thì toán
hạng được tăng hay giảm sau khi thực hiện
Ví dụ: n=5
x=++n
Cho ta x=6 và n=6
46
x=n++
Cho ta x=5 và n=6

Chuyển đổi kiểu giá trị

Việc chuyển đổi kiểu giá trị trong C thường diễn ra tự
động trong trường hợp sau:
 Trong biểu thức có các toán hạng khác kiểu
 Khi gán một giá trị kiểu này cho một giá trị kiểu khác
 Ngoài ra ta có thể dùng phép chuyển kiểu để ép kiểu dữ
liệu sang kiểu khác
(type) biểu_thức
Ví dụ: (float) (a+b)
Muốn có kết quả chính xác trong phép chia:
int a=10,b=3
((float)a/b)=3.33333
Ngôn ngữ lập trình C

47



Chú ý:
- Khi chuyển đổi kiểu trong biểu thức thì đối với toán
hạng có kiểu thấp hơn sẽ được nâng thành kiểu cao hơn
trước khi thực hiện phép toán và kết quả thu được sẽ có
kết quả theo kiểu cao hơn
 Kiểu int và kiểu long thì int ----> long
 int và float thì int ---> float
 Float và double thì float -----> double
 Kiểu int có thể chuyển thành float và ngược lại

Ví dụ:

1.5*(11/3)=4.5
1.5*11/3=5.5
(11/3)*1.5=4.5

Ngôn ngữ lập trình C

48

Chú ý:
- Chuyển đổi kiểu thông qua phép gán :Giá trị của vế
phải được chuyển sang kiểu vế trái đó là kiểu của kết
quả.
 Kiểu int <----> float
 Kiểu double ---> float
 Kiểu Long-----> int

Ví dụ:


int n;
n=15.6 ; //giá trị của n là 15

Ngôn ngữ lập trình C

49


Bài tập
Bài 1: Viết chương trình nhập dữ liệu cho các
biến kiểu int, long int, float, chuỗi, sau đó hiển
thị ra màn hình.
Bài 2:Viết chương trình tìm xy
Hàm luỹ thừa: pow(x,y);
Bài 3: Viết chương trình tính c = a/b, với a và
b là hai số nguyên, c số thực. Nếu ta ép kiểu a
sang thực thì kết quả thế nào?
Ngôn ngữ lập trình C



50

Bài 4: Cấu trúc điều khiển

Câu lệnh, khối lệnh

Câu lệnh: mỗi câu lệnh thực hiện một công việc và
được kết thúc bởi dấu ;
 Khối lệnh: là tập hợp các câu lệnh bắt đầu bằng dấu

“{“ và kết thúc bằng dấu “}”


Ngôn ngữ lập trình C

51


×