GIỚI THIỆU NGÔN NGỮ C I Các ngôn ngữ lập trình bậc cao: Các ngôn ngữ bậc cao đều đòi hỏi một trình biên dịch Compiler hoặc thông dịch Interpreter để dịch các lệnh của ngôn ngữ lập t
Trang 1CHƯƠNG I
GIỚI THIỆU NGÔN
NGỮ C
Trang 2GIỚI THIỆU NGÔN NGỮ C
I Các ngôn ngữ lập trình bậc cao:
Các ngôn ngữ bậc cao đều đòi hỏi một
trình biên dịch (Compiler) hoặc thông dịch
(Interpreter) để dịch các lệnh của ngôn ngữ lập trình bậc cao sang các lệnh ở mức
thấp để máy có thể thực hiện được
Một trình biên dịch giống như một trình hợp dịch (Assembler), nhưng lại phúc tạp hơn nhiều Trình biên dịch có sự tương
ứng 1-1 giữa các lệnh của hợp ngữ và các lệnh máy Ngược lại, một lệnh đơn giản của ngôn ngữ bậc cao có thể đưa ra nhiều lệnh máy
Việc tách một ngôn ngữ lập trình xa khỏi ngôn ngữ máy là rất khó khăn để trình
biên dịch biểu diễn các tác vụ của nó
Nhưng các ngôn ngữ bậc cao càng tách xa cấu trúc máy tính thì mang đến cho ta hai điều thuận lợi:
Trang 3Các ngôn ngữ bậc cao tách lập trình viên khỏi các đặc tính cụ thể của mỗi cấu trúc máy tính.
Các chương trình viết bằng ngôn ngữ bậc cao thì dễ đọc và dễ bảo trì.
Trang 4MOV AX, bMOV BX, cADD AX, BXSUB AX, 2MOV a, AX
Trang 5II Lịch sử phát triển của ngôn ngữ C:
thí nghiệm AT&Bell năm 1972
để viết các hệ điều hành và các tiện ích về hệ thống
National Satndards Institute) chính thức công nhận
Năm 1989 thì Tổ Chức Tiêu Chuẩn Quốc Tế (International StandardS Organization) chính thức công nhân
Năm 1990 thì phiên bản chuẩn được thông qua lần cuối cùng, được hiểu một cách đơn giản như là “C chuẩn” (Standard C
Kể từ đó ngôn ngữ C được hiểu là
“K&R C”
Trang 6CHƯƠNG II
CÁC KHÁI NIỆM CƠ BẢN
I Tập ký tự dùng trong ngôn ngữ C:
Mọi ngôn ngữ lập trình đều được xây dựng lên từ một bộ ký tự nào đó Các ký tự được nhóm theo nhiều cách khác nhau tạo thành các từ Các từ được liên kết theo một quy tắc
ngữ pháp nào đó để tạo thành các câu lệnh
Một chương trình bao gồm nhiều câu lệnh và
diển đạt một thuận toán để giải một bài
toán nào đó.
Ngôn ngữ C được xây dựng trên bộ ký tự sau:
Trang 7 Ký tự gạch nối _ (Chú ý phân biệt với
Trang 8II Tên
Tên là khái niệm rất quan trọng, nó
dùng để xác định các đại lượng khác nhau trong một chương trình Chúng ta
co tên hằng, biến, mảng, hàm, con trỏ, tên tệp, tên cấu trúc, tên nhãn,
Tên được đặt theo quy tắc:
Tên là một dãy các ký tự chữ và số trong đó ký tự đầu tiên phải là chữ Khi viết tên cho phép sử dụng dấu _ như một chữ
Tên không được trùng với các từ khoá cuả C
Tên có độ dài tuỳ ý, tuy nhiên chỉ có 8 ký tự đầu có nghĩa
Trang 9Chú ý:
Trong C có sự phân biệt chữ hoa và chữ thường
Thông thường sử dụng chữ hoa để đặt tên các hằng, dùng
chữ thường để đặt tên các đại lượng khác.(Không bắt buộc)
Trang 10III Từ khoá
Từ khoá là những từ có ý nghĩa hoàn toàn xác định, chúng thường được sử dụng để khai báo các kiểu dữ liệu, để viết các
toán tử và các câu lệnh.
Các từ khoá mà chúng ta thường gặp khi
làm việc với C:
Trang 11IV Một số chương trình ví dụ:
Trang 12V. Một số quy tắc cần nhớ khi viết chương
trình:
Quy tắc đầu tiên cần nhớ là:
Mỗi câu lệnh có thể viết trên một hay nhiều dòng nhưng phải được kết thúc bằng dấu;
Quy tắc thứ hai là quy tắc về lời giải thích:
Các lời giải thích phải đặt giữa dấu /* và dấu
*/
Quy tắc thứ 3 là quy tắc sử dụng các hàm
chuẩn.
Khi sử dụng mộ hàm cần biết nó nằm trên
tập Header (*.h) và phải dùng toán tử #include để gắn tệp đó vào chương trình.
Quy tắc thứ tư nói về cấu trúc của một chương trình.
Một chương trình có thể chỉ có một hàm chính
- main(), hoặc có thể thêm nhiều hàm khác.
Trang 13VI. Khai báo và toán tử gán
Mọi biến trước khi sử dụng đều phải khai báo để xác định kiểu của nó Để khai báo các biến nguyên (Kiểu int) ta dùng từ kháo int Đối với các biến thực (Kiểu float) ta
dùng từ khoá float.
Ví dụ:
int a, b, c; /* Khai báo các biến a, b, c
thuộc kiểu int */
float x, y, z; /* Khai báo các biến x, y, z
thuộc kiểu float */
Toán tử gán có dạng:
v=e
trong đó v là biến còn e có thể là biến
hay một biểu thức toán học nào đó Tác dụng của lệnh này là: trước tiên xác định giá trị trong biến e và sau đó giá giá trị đó cho biến v.
Trang 14VII Đưa kết quả lên màn hình
Để đưa kết quả ra màn hình ta dùng câu lệnh:
printf(dòng điều khiển,v1,v2,v3,v4)
Trong đó:
v1,v2,v3, là các biến mà giá trị của chúng
cần được đưa ra màn hình.
Dòng điều khiển là một hằng xâu ký tự
(dãy ký tự đặt trong dấu hai đấu nháy kép “ “) bao gồm ba loại:
- Các ký tự cần đưa nguyên xi ra màn
hình
- Ký tự điều khiển việc chuyển xuống đầu dòng tiếp theo
- Các ký tự dùng để mô tả kiểu cách đưa
ra của các biến, gọi chúng là các đặc tả.
Trang 15Các đặc tả:
- \n: ký tự điều khiển việc chuyển dòng.
- Đặc tả đối với biến số nguyên:
%[fw]d
• Trong đó: fw là một số nguyên xác định độ rộng tối thiểu dành cho trường ra (số vị trí tối thiểu trần màn hình dành cho một biến kiểu int
• Khi fw lớn hơn độ dài thực tế của trường ra thì một số khoảng tróng sẽ được bổ sung vào bên trái.
Trang 16• Khi không có fw hoặc fw nhỏ hơn hay bằng độ dài thực tế của trường ra, thì độ rộng trên màn hình dành cho trường ra sẽ bằn độ dài thực tế của nó.
- Đối với biến thực cố thể dùng đặc tả:
%[fw][.pp]f
• Trong đó pp là độ chính xác Nói một cách cụ thể hơn: trên màn hình sẽhiện lên một giá trị thực pp chữ số sau dấu chấm thập phân.
• Nếu pp=0, biến thực được đưa ra như một số nguyên (không có dấu phân cách thập phân)
• Nếu không có pp thì máy sẽ ngầm hiểu là pp=6
• fw là số nguyên xác định độ rộng tối thiểu trên màn hình dành cho trường ra
• Độ dài thực tế của một biến thực:
L v = L fw + pp +1(vị trí dành cho dấu chấm phân cách thập phân + 1 (vị trí dành cho dấu - nếu có)
Trang 17Ví dụ minh hoạ
Đặc tả Giá trị của
biến Dạng đưa ra màn hình
45.78 -45.78 0.345 -0.345
-456 456 456 -456 45 45.780000 -45.78000 45.780 -45.789 45.780 -45.780 0.35
-0.35
Trang 18Chú ý:
Sau khi đọc những điều nói trên một
câu hỏi đặt ra là làm thế nào để đưa
ra các ký tự: % ‘ “ \
Câu trả lời như sau:
Khi dấu % đứng ngoài kết cấu
đặc tả thì nó được xem như ký tự
thông thường nghĩa là bản thân nó
được đưa ra màn hình (máy in hoặc
đĩa)
Đối với các ký tự khác ta dùng
thêm dấu \ đặt trước nó Nói một cách cụ thể hơn:
Khi viết \’ thì dấu ‘ được đưa ra.
Khi viết \” thì dấu “ được đưa ra
Khi viết \\ thì dấu \ được đưa ra
Trang 19VIII Đưa kết quả ra máy in:
Cách thức đưa kết qua ra máy in hoàn toàn tương tự như cách đưa ra màn hình Sự
khác nhau chỉ ở một vài chi tiết nhỏ nhơ sau:
- Dùng lệnh:
fprintf thay cho lệnh printf
Đưa thêm tham số stdprn vào dòng điều
khiển Như vậy để đưa kết quả ra máy in ta dùng câu lệnh:
fprintf(stdprn, dòng điều khiển, v1,v2,
v3, ,vk)
Trang 20IX Vào số liệu từ bàn phím:
Để đưa số liệu vào từ bàn phím hai giá trị kiểu int và ba giá trị kiểu float có thể dùng các câu lệnh sau:
- Không dùng tến biến như trong câu
lệnh frinf mà dùng địa chỉ của biến Phép toán:
&biến
cho địa chỉ của biến
- Mỗi biến ứng với một đặc tả Như vậy số đặc tả bằng số biến.
- Dùng đặc tả %d đối với biến nguyên
- Dùng đặc tả %f đối với biến thực.
Trang 21Một cách tổng quát câu lệnh scanf có dạng:
phím
Trang 22X Mäüt vaìi chæång trçnh âån giaín
}
Trang 23}