C là ngôn ngữ lập trình cấp cao, được sử dụng phổ
biến để lập trình hệ thống và phát triển các ứng dụng
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của
thế kỷ 20, Dennish Ritchie phát triển ngôn ngữ lập trình
C dựa trên ngôn ngữ BCPL và ngôn ngữ B
29 trang |
Chia sẻ: lylyngoc | Lượt xem: 2072 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Chương 4 Các thành phần cơ bản của ngôn ngữ lập trình C, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4
CÁC THÀNH PHẦN CƠ BẢN
CỦA NGÔN NGỮ LẬP TRÌNH C
Lý thuyết ngôn ngữ lập trình
Nội dung
Tổng quan
Bộ chữ viết
Từ khóa
Định danh
Thư viện chuẩn C
Các hàm toán học cơ bản trong C
Cấu trúc một chương trình C
Tổng quan
C là ngôn ngữ lập trình cấp cao, được sử dụng phổ
biến để lập trình hệ thống và phát triển các ứng dụng
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của
thế kỷ 20, Dennish Ritchie phát triển ngôn ngữ lập trình
C dựa trên ngôn ngữ BCPL và ngôn ngữ B
Ban đầu, C được thiết kế nhằm lập trình trong môi
trường của hệ điều hành Unix nhằm hỗ trợ cho các
công việc lập trình phức tạp.
Nhưng về sau, với những nhu cầu phát triển ngày một
tăng của công việc lập trình, C đã vượt qua khuôn khổ
của phòng thí nghiệm Bell và nhanh chóng hội nhập
vào thế giới lập trình
Tổng quan
C là ngôn ngữ lập trình hệ thống rất mạnh và “mềm dẻo”
C có một thư viện gồm rất nhiều các hàm đã được tạo sẵn,
người lập trình có thể tận dụng các hàm này để giải quyết
các bài toán mà không cần phải tạo mới.
C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải
quyết các bài toán kỹ thuật có nhiều công thức phức tạp.
C cũng cho phép người lập trình tự định nghĩa thêm các
kiểu dữ liệu trừu tượng khác.
C được phổ biến khá rộng rãi và đã trở thành một công cụ
lập trình khá mạnh, được sử dụng như là một ngôn ngữ
lập trình chủ yếu trong việc xây dựng những phần mềm
hiện nay.
Tổng quan
Ngôn ngữ C có những đặc điểm cơ bản sau:
Tính cô đọng (compact)
Tính cấu trúc (structured)
Tính tương thích (compatible)
Tính linh động (flexible)
Biên dịch (compile)
Bộ chữ viết
Bộ chữ viết trong ngôn ngữ C bao gồm những ký tự,
ký hiệu sau (phân biệt chữ hoa và chữ thường):
26 chữ cái in hoa A,B,C...Z
26 chữ cái in thường a,b,c ...z.
10 chữ số thập phân 0,1,2...9.
Các ký hiệu toán học: +, -, *, /, =, , (, )
Các ký hiệu đặc biệt: :. , ; " ' _ @ # $ ! ^ [ ] { } ...
Dấu cách hay khoảng trống
Từ khóa
Từ khóa là từ dành riêng cho ngôn ngữ
C cung cấp một thư viện các từ khóa để hỗ trợ cho
công việc lập trình
Ví dụ: break, char, continue, case, do, double, default,
else, float, for, goto, int,if, long, return, struct, switch,
unsigned, while, typedef, union voi, volatile,...
Lưu ý:
Không được dùng từ khóa đặt tên cho các định danh
do người lập trình khai báo (biến, hằng, mảng,… ).
Từ khóa phải được viết bằng chữ thường
Từ khóa
Ví dụ:
#include
#include
int main ()
{
char ten[50];
printf(“Xin cho biet ten cua ban !”);
scanf(“%s”,ten);
printf(“Xin chao ban %s\n ”,ten);
printf(“Chao mung ban den voi Ngon ngu lap trinh C”);
getch();
return 0;
}
Định danh
Định danh (tên) được dùng để đặt cho chương trình,
hằng, kiểu, biến, chương trình con...
Tên có hai loại là tên chuẩn và tên do người lập trình
đặt.
Tên chuẩn là tên do C đặt sẵn như:
tên kiểu: int, char, float,…
tên hàm: sin, cos...
Định danh
Tên do người lập trình tự đặt sử dụng bộ chữ cái,
chữ số và dấu gạch dưới (_) để đặt tên
Quy tắc đặt tên:
Bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
Không có khoảng trống ở giữa tên.
Không được trùng với từ khóa.
Độ dài tối đa của tên là không giới hạn, tuy nhiên chỉ
có 31 ký tự đầu tiên là có ý nghĩa.
Ví dụ:
Tên hợp lệ: a, i, ho_ten, do_dai
Tên không hợp lệ: do dai, 01A
Thư viện chuẩn C
Thư viện chuẩn C là một tập hợp các tập tin tiêu đề và
thư viện các thủ tục được tiêu chuẩn hóa
Thư viện chuẩn cung cấp tập hợp cơ bản các hàm
toán, điều chỉnh dãy kí tự, chuyển đổi kiểu, và các
vào/ra cơ sở
Mọi chương trình C khi hoạt động gần như phải phụ
thuộc vào thư viện chuẩn
Lưu ý: Không được viết hoa tên thư viện chuẩn khi
lập trình
Thư viện chuẩn C
Thư viện chuẩn C bao gồm:
: hổ trợ phát hiện các lỗi lô-gíc và
các kiểu lỗi khác trong các phiên bản dùng để
tìm lỗi của một chương trình.
: tập hợp các hàm dùng để điều
chỉnh các số phức.
: phân lớp các kí tự bởi các kiểu hay
dùng để chuyển đổi giữa chữ viết hoa và viết
thường.
: thử (hay hiển thị) các lỗi được báo
cáo từ các hàm thư viện.
Thư viện chuẩn C
: kiểm soát môi trường chấm động.
: gồm định nghĩa các hằng nêu ra các
đặc tính xây dựng của thư viện chấm động.
: Dùng cho việc chuỷen đổi kiểu
chính xác giữa các kiểu nguyên.
: Để lập trình trong ISO 646 cho cho
các bộ kí tự khác nhau.
: Chứa định nghĩa các hằng có đặc
tính đặc biệt của các kiểu nguyên
: Dùng cho setlocale() và các hằng
có liên quan
Thư viện chuẩn C
: tính các hàm số thông dụng.
: dùng trong việc thoát ra nơi không
có tính địa phương.
: kiểm soát các điều kiện ngoại lệ.
: truy cập số lượng khác nhau của
các đối số được chuyển vào hàm.
: Dùng cho kiểu dữ liệu Bool.
: Dùng trong việc định nghĩa các
kiểu nguyên khác nhau.
: Cung cấp nhiều kiểu và macro hữu
dụng.
Thư viện chuẩn C
: Cung cấp khả năng nhập trong C.
: Dùng để xúc tiến nhiều phép toán, bao
gồm sự chuyển đổi, các số giả ngầu nhiên, cấp phát
vùng nhớ, kiểm soát quá trình, môi trường, tín hiệu,
tìm kiếm, và xếp thứ tự.
: Để điều chỉnh nhiều loại dãy kí tự.
: Dùng cho các hàm toán kiểu thông dụng.
: Để chuyển đổi giữa các định dạng khác
nhau về thì giờ và ngày tháng.
: Để điều chỉnh độ rộng của các dòng và
nhiều loại dãy kí tự sử dụng nhiều kí tự có độ lớn
: Để phân lớp các kí tự có độ lớn.
Thư viện chuẩn C
Các tập tin thư viện thông dụng:
stdio.h
conio.h
math.h
alloc.h
io.h
graphics.h
Các hàm toán học cơ bản trong C
abs(int x): tính trị tuyệt đối của số nguyên x
fabs(double x): tính trị tuyệt đối của số thực x
random(int n): lấy số ngẫu nhiên từ 0 đến n-1
randomize(): khởi đầu bộ tạo số ngẫu nhiên, nên chạy
hàm này trước khi dùng hàm random
cos(double x), sin(double x), tan(double x): tính cos, sin
và tang của x (đơn vị của x là radian chứ không phải là
độ, 1 radian bằng khoảng 57 độ, cụ thể là bằng
180/3.14 )
exp(double x): tính e mũ x
Các hàm toán học cơ bản trong C
log(double x): tính logarit tự nhiên của x (ln(x))
pow(double y,double x): tính y mũ x.
Chú ý: y mũ x có thể tính theo công thức:
y mũ x = exp(y*log(x))
sqrt(double x): tính căn bậc 2 của x.
Chú ý: căn bậc n của x có thể tính theo công thức:
pow(x, 1/n)
floor(double x): cho số nguyên lớn nhất dưới x.
Ví dụ: floor(8.6) là 8
ceil(double x): cho số nguyên bé nhất trên x.
Ví dụ: ceil(8.6) là 9
Cấu trúc một chương trình C
Một chương trình C có thể bao gồm các phần:
Các chỉ thị tiền xử lý
Khai báo biến ngoài
Các hàm tự tạo
Chương trình chính (hàm main)
Các chỉ thị tiền xử lý
Sử dụng chỉ thị #include để khai báo tập tin thư viện sẽ dùng:
Cú pháp:
#include
Hoặc #include “Tên đường dẫn”
Ví dụ:
#include
Hoặc #include”C:\\TC\\math.h”
Sử dụng chỉ thị #define để định nghĩa hằng số:
Cú pháp: #define
Ví dụ: #define MAXINT 32767
Định nghĩa kiểu dữ liệu
Là phần không bắt buộc
Dùng để đặt tên lại cho một kiểu dữ liệu nào đó hay
đặt 1 kiểu dữ liệu riêng dựa trên các kiểu dữ liệu đã có
Cú pháp:
typedef
Ví dụ:
typedef int SoNguyen; // Kiểu SoNguyen là kiểu int
Khai báo các prototype
Khai báo tên hàm, các tham số, kiểu kết quả trả về,…
của các hàm sẽ cài đặt trong phần sau
Là phần không bắt buộc
Chỉ là các khai báo đầu hàm, không phải là phần định
nghĩa hàm
Cú pháp:
Tên hàm (danh sách đối số)
Ví dụ:
long giaithua (int n); // tính giai thừa của số nguyên n
double x_mu_y(float x, float y); /*Hàm tính x mũ y*/
Khai báo các biến ngoài
Khai báo các biến toàn cục được sử dụng trong cả
chương trình
Là phần không bắt buộc
Ví dụ: int i;
char ten[50];
Chương trình chính
Là phần bắt buộc phải có
Cú pháp:
main()
{
Các khai báo cục bộ trong hàm main: Các khai báo này
chỉ tồn tại trong hàm mà thôi, có thể là khai báo biến
hay khai báo kiểu.
Các câu lệnh dùng để định nghĩa hàm main
return ; // Hàm phải trả về kết quả
}
Cài đặt các hàm tự tạo
Cú pháp:
function1( các tham số)
{
Các khai báo cục bộ trong hàm.
Các câu lệnh dùng để định nghĩa hàm
return ;
}
Ví dụ
#include
#include
#include
void main()
{
clrscr();
float a,b,c,delta;
printf("Cho biet he so a = "); scanf("%f", &a);
printf("Cho biet he so b = "); scanf("%f", &b);
printf("Cho biet he so c = "); scanf("%f", &c);
delta = b*b - 4*a*c;
Ví dụ (tt)
if (delta < 0)
printf("Phuong trinh vo nghiem");
else if (delta == 0)
printf("Phuong trinh co nghiem kep x1 = x2 = %0.2f", -b/(2*a));
else
{
printf ("Phuong trinh co 2 nghiem phan biet:\n x1 = %0.2f", (-b
+ sqrt(delta))/(2*a));
printf ("\nx1 = %0.2f", (-b - sqrt(delta))/(2*a));
}
getch();
}
Cấu trúc một chương trình C
Ngoài ra, khi viết chương trình đôi lúc cần phải có vài
lời ghi chú về 1 đoạn chương trình nào đó để dễ nhớ
và dễ điều chỉnh sau này
Phần nội dung ghi chú không thuộc về chương trình
(khi biên dịch phần này bị bỏ qua).
Trong C, nội dung chú thích được viết trong cặp dấu /*
và */ nếu nội dung ghi chú gồm nhiều hàng; hoặc dấu //
nếu nội dung ghi chú chỉ có một hàng
CÂU HỎI ÔN TẬP CHƯƠNG 4
1. Tìm hiểu và liệt kê (mô tả và cho ví dụ) các
hàm thường sử dụng trong ngôn ngữ C.
2. Hãy viết một chương trình C cơ bản để hiển
thị ra màn hình câu thông báo: Đây là môn học
về lập trình C cơ bản.
3. Hãy viết một chương trình C cơ bản để nhập
và xuất ra màn hình họ và tên, ngày tháng năm
sinh của một sinh viên bất kỳ.
4. Tìm hiểu các hàm (lệnh) nhập/xuất cơ bản
trong C. Liệt kê và cho ví dụ