Tổng quan về ngôn ngữ C

Chia sẻ bởi Phạm Thị Thơm | Ngày 19/03/2024 | 14

Chia sẻ tài liệu: Tổng quan về ngôn ngữ C thuộc Công nghệ thông tin

Nội dung tài liệu:

NGÔN NGỮ LẬP TRÌNH C
Chương 1
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C
Mục tiêu của bài giảng
Phân biệt sự khác nhau giữa Câu lệnh, Chương trình và Phần mềm
Biết được quá trình hình thành ngôn ngữ C
Lựa chọn được một số trình biên dịch và công cụ hỗ trợ lập trình C.
Nắm được các thành phần cơ bản của C.
Biết cách viết, biên dịch và chạy một chương tình C đơn giản.
Phần mềm, chương trình, câu lệnh
Lịch sử ngôn ngữ C
Lịch sử ngôn ngữ C
Ra đời vào đầu những năm 70 của thế kỉ XX, do Dennish Ritchie phát triển dựa trên ngôn ngữ BCPL của Martin Richards.
Mục đích ban đầu của C là để viết hệ điều hành Unix.
Được đặt tên C vì trước đó đã có ngôn ngữ B tại Bell.
C có nhiều ưu điểm đặc biệt là tính mềm dẻo cao nên nhanh chóng trở thành ngôn ngữ chính thống.
Có nhiều phiên bản và tình dịch C khác nhau:
ANSI C.
ISO C
Turbo C
Một số ưu điểm của C
Là ngôn ngữ lập trình đa năng, mạnh và mềm dẻo.
Chương trình viết bằng C chạy nhanh hơn so với chương tình viết bằng Pascal.
Thường được sử dụng để lập trình hệ thống (hệ điều hành ..)
Là ngôn ngữ dễ thích nghi với nhiều môi trường khác nhau.
Là ngôn ngữ có cấu trúc module (chương trình = các hàm).
Ngôn ngữ cấp trung
Ngôn ngữ cấp cao
Ngôn ngữ hợp ngữ
C
Các bộ trình biên dịch C
Turbo C  Borland C  Borland C++  Borland C builder
Microsoft C  Visual C++
C Free
Ngoài ra còn có các IDE (intergrated Development Eniroment): Visual Studio, Eclipse, …
Mở tệp mới (FileNew)
Viết chương trình
Lưu tệp và dịch
Nếu có lỗi thì
Sửa lỗi chính tả, cú pháp
Quay lại bước 3
Chạy thử
Nếu có lỗi thì
Dò và sửa lỗi
Quay lại bước 3
Kết thúc
Các bước cần thực hiện khi viết 1 Chương trình C
Chương trình Hello
Lập chương trình có chức năng viết lên màn hình câu chào “Hello, world!”
NGÔN NGỮ LẬP TRÌNH C
Các thành phần cơ bản của ngôn ngữ lập trình C
Bộ ký 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ữ in hoa và in thường):
26 chữ cái latinh lớn A,B,C...Z
26 chữ cái latinh nhỏ 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.
Các từ khóa
C có 32 từ khóa chuẩn và các từ khóa mở rộng bao gồm:
Cặp dấu ghi chú thích /*…*/
Trong chương trình C, nội dung chú thích phải được viết trong cặp dấu /* …. */
Ví dụ:
Dấu chấm phẩy và cặp { }
Câu lệnh và dấu chấm phẩy:
Nói chung, mỗi câu lệnh đơn nên viết trên một dòng.
Kết thúc câu lệnh bằng dấu chấm phẩy ;
Một số chỉ dẫn (không phải câu lệnh) không cần dấu ;
#include “stdio.h”
#include “conio.h”
Cặp { } có giá trị bắt đầu và kết thúc một khối lệnh
Kiểu dữ liệu
Các kiểu dữ liệu khác nhau được lưu trữ trong biến là:
Số (Numbers)
Số nguyên.
Ví dụ : 10 hay 178993455
Số thực.
Ví dụ, 15.22 hay 15463452.25
Số dương
Số âm
Tên. Ví dụ : John
Giá trị logic :
Ví dụ : Y hay N hoặc T hay F
Kiểu dữ liệu (tt.)
kiểu dữ liệu tên biến
int varName
Kiểu dữ liệu mô tả loại dữ liệu sẽ được lưu trong biến
Tên biến đặt sau kiểu dữ liệu
Ví dụ : tên biến “varName” đứng sau kiểu dữ liệu “int”
void
char
double
Kiểu dữ liệu cơ bản
Kiểu dữ liệu cơ bản
float
int
Kiểu số nguyên (int)
Lưu trữ dữ liệu số
int num;
Không thể lưu trữ bất cứ kiểu dữ liệu nào khác như “Alan” hoặc “abc”
Chiếm 16 bits (2 bytes) bộ nhớ
Biểu diễn các số nguyên trong phạm vi
-32768 tới 32767
Ví dụ : 12322, 0, -232
Kiểu số thực (float)
Lưu trữ dữ liệu số chứa phần thập phân
float num;
Có độ chính xác tới 6 con số
Chiếm 32 bits (4 bytes) bộ nhớ
3.4E-38 đến 3.4E+38 (10 mũ dương 38)
Ví dụ : 23.05, 56.5, 32
Kiểu số thực (double)
Lưu trữ dữ liệu số chứa phần thập phân
double num;
Có độ chính xác tới 10 con số
Chiếm 64 bits (8 bytes) bộ nhớ
1.7E-308 đến 1.7E+308
Ví dụ : 23.05, 56.5, 32
Kiểu ký tự (char )
Lưu trữ một ký tự đơn
char gender;
gender=`M`;
Chiếm 8 bits (1 byte) bộ nhớ
Ví dụ: ‘a’, ‘m’, ‘$’ ‘%’ , ‘1’, ’5’
Kiểu void
Không lưu bất cứ dữ liệu gì
Báo cho trình biên dịch không có giá trị trả về
Những kiểu dữ liệu dẫn xuất
Các kiểu dữ liệu signed và unsigned
Kiểu unsigned chỉ rõ rằng một biến chỉ có thể nhận giá trị dương
unsigned int varNum;
varNum=23123;
varNum được cấp phát 2 bytes
Bổ từ unsigned có thể được dùng với kiểu dữ liệu int và float
Kiểu unsigned int hỗ trợ dữ liệu trong phạm vi từ 0 đến 65535
Những kiểu dữ liệu long (dài)
và short (ngắn)
short int chiếm giữ 8 bits (1 byte)
Cho phép số có phạm vi từ -128 tới 127
long int chiếm giữ 32 bits (4 bytes)
-2,147,483,648 và 2,147,483,647
long double chiếm 128 bits (16 bytes)
Kiểu dữ liệu & phạm vi giá trị
Kiểu dữ liệu & phạm vi giá trị (tt.)
Tên và hằng trong C
Tên (danh biểu): Tên hay còn gọi là danh biểu (identifier) đượ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...
Tên do người lập trình tự đặt để dùng trong chương trình của mình. Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) để đặt tên, nhưng phải tuân thủ quy tắc:
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.
Không cấm việc đặt tên trùng với tên chuẩn nhưng khi đó ý nghĩa của tên chuẩn không còn giá trị nữa.
Ví dụ: tên do người lập trình đặt: Chieu_dai, Chieu_Rong, Chu_Vi, Dien_Tich
Tên không hợp lệ: Do Dai, 12A2,…
Hằng
Một hằng (constant) là một giá trị không bao giờ thay đổi trong thời gian tồn tại của nó.

Định nghĩa hằng: sử dụng từ khóa const

const =
Hằng
Các ví dụ
const int a= 5; hằng số nguyên
const float x = 5.3; hằng số thực
const char c = ‘1’; hằng ký tự
Hằng trong hệ 16 được bắt đầu bằng 0x.
Ví dụ: 0xa5 = 10*16 + 5 =165.
Hằng trong hệ 8 bắt đầu bằng 0.
Ví dụ: 0345 = 3*64+4*16+5=229
Biến và biểu thức
Biến là một đại lượng được người lập trình định nghĩa và được đặt tên thông qua việc khai báo biến.
Biến dùng để chứa dữ liệu trong quá trình thực hiện chương trình và giá trị của biến có thể bị thay đổi trong quá trình này.
Cách đặt tên biến giống như cách đặt tên đã nói trong phần trên.
Mỗi biến thuộc về một kiểu dữ liệu xác định và có giá trị thuộc kiểu đó.
Biến
Dữ liệu
Bộ nhớ
Mỗi vị trí trong bộ nhớ là duy nhất
Biến cho phép cung cấp một tên có ý nghĩa cho mỗi vị trí nhớ
15
Dữ liệu trong bộ nhớ
15
Khai báo biến
[=]

Ví dụ:
int a = 3;
int b;
int a=3, b=4;
char c = ‘A’;
Ví dụ về cách khai báo biến
#include stdio.h
#include math.h
Int template; /* bien toan cuc*/
main ()
{
char abc; /*bien cuc bo */
………………
}
Biểu thức trong C
Biểu thức là một sự kết hợp giữa các toán tử (operator) và các toán hạng (operand) theo đúng một trật tự nhất định.
Mỗi toán hạng có thể là một hằng, một biến hoặc một biểu thức khác.
Trong trường hợp, biểu thức có nhiều toán tử, ta dùng cặp dấu ngoặc đơn () để chỉ định toán tử nào được thực hiện trước
Biểu thức (Expressions)
Sự kết hợp các toán tử và các toán hạng
Ví dụ: 2 * y + 5
Toán tử gán
variable_name = expression;
Toán tử gán (=) có thể được dùng với bất kỳ biểu thức C hợp lệ nào
(Giá trị trái)
(Giá trị phải)
(Toán tử gán)
(Tên biến)
(Biểu thức)
Gán liên tiếp
a = b = c = 10;

Tuy nhiên, không thể áp dụng quy tắc trên khi khai báo biến
int a = int b = int b = int c = 10
X
Nhiều biến có thể được gán với cùng một giá trị trong một câu lệnh đơn
Bốn Kiểu Toán Tử
Số học
(Arithmetic)
Quan hệ
(Relational)
Luận Lý
(Logical)
Nhị phân
(Bitwise)
Biểu thức số học
Biểu thức số học có thể được biểu diễn trong C bằng cách sử dụng các toán tử số học
Ví dụ :
a * (b + c/d) - 22
++i % 7
5 + (c = 3 + 8)
Toán tử số học
Toán tử quan hệ và luận lý
Ðược dùng để :
Kiểm tra mối quan hệ giữa hai biến hay giữa một biến và một hằng
Toán tử quan hệ
Toán tử luận lý là những ký hiệu dùng để kết hợp hay phủ định biểu thức chứa các toán tử quan hệ
Toán tử quan hệ và luận lý (tt.)
Những biểu thức dùng toán tử luận lý trả về
0 thay cho false và 1 thay cho true
Ví dụ: if (a>10) && (a<20)
Toán tử luận lý nhị phân
Dữ liệu chỉ được xử lý sau khi đã chuyển đổi giá trị SỐ thành giá trị NHỊ PHÂN
Toán tử luận lý nhị phân (tt.)
Ví dụ
10 & 15 1010 & 11111010  10
10 | 15 1010 | 11111111  15
10 ^ 15 1010 ^ 11110101  5
~ 10  ~1010 1…11110101  -11
Chuyển đổi kiểu
Qui tắc chuyển đổi kiểu tự động trình bày dưới đây nhằm xác định giá trị biểu thức:
char và short được chuyển thành int và float được chuyển thành double.
Nếu có một toán hạng là double, toán hạng còn lại sẽ được chuyển thành double, và kết quả là double.
Nếu có một toán hạng là long, toán hạng còn lại sẽ được chuyển thành long, và kết quả là long.
Nếu có một toán hạng là unsigned, toán hạng còn lại sẽ được chuyển thành unsigned và kết quả cũng là unsigned.
Nếu tất cả toán hạng kiểu int, kết quả là int.
Ví dụ
Ép kiểu
Một biểu thức được ép thành một kiểu nhất định bằng cách dùng kỹ thuật ép kiểu (cast).
Cú pháp :
(kiểu dữ liệu) cast
Kiểu  Bất cứ kiểu dữ liệu hợp lệ trong C
Ví dụ:
float x,f;
f = 3.14159;
x = (int) f;
Giá trị của x sẽ là 3 (số nguyên)
Giá trị số nguyên trả về bởi (int) f được chuyển thành số thực khi nó được toán tử GÁN xử lý. Song, giá trị của f vẫn không đổi.
Độ ưu tiên của toán tử
Độ ưu tiên tạo nên cấu trúc phân cấp của loại toán tử này so với loại toán tử khác khi tính giá trị một biểu thức số học
Nó đề cập đến thứ tự thực thi các toán tử trong C
Độ ưu tiên của các toán tử này được thay đổi bởi các dấu ngoặc đơn trong biểu thức
Độ ưu tiên của toán tử (tt.)
Ví dụ
-8 * 4 % 2 - 3
Độ ưu tiên của toán tử so sánh
Độ ưu tiên của toán tử so sánh (quan hệ) luôn được tính từ trái sang phải
Độ ưu tiên của toán tử luận lý
Khi có nhiều toán tử luận lý trong một điều kiện, ta áp dụng quy tắc tính từ phải sang trái
Xét biểu thức sau:
False OR True AND NOT False AND True
Ðiều kiện này được tính như sau:
False OR True AND [NOT False] AND True
NOT có độ ưu tiên cao nhất.
False OR True AND [True AND True]
Ở đây, AND có độ ưu tiên cao nhất, những toán tử có cùng ưu tiên được tính từ phải sang trái.
False OR [True AND True]
[False OR True]
Độ ưu tiên của toán tử luận lý (tt.)
True
Khi một biểu thức có nhiều loại toán tử thì độ ưu tiên giữa chúng phải được thiết lập.
Độ ưu tiên giữa các toán tử
Độ ưu tiên giữa các toán tử (tt.)
Ví dụ :
2*3+4/2 > 3 AND 3<5 or 10<9
Việc tính toán như sau :
[2*3+4/2] > 3 AND 3<5 or 10<9
Toán tử số học sẽ được tính trước
[[2*3]+[4/2]] > 3 AND 3<5 or 10<9
[6+2] >3 AND 3<5 or 10<9
[8 >3] AND [3<5] OR [10<9]
Kế đến là toán tử so sánh có cùng độ ưu tiên. Ta áp dụng quy tắc tính từ trái sang phải.
True AND True OR False
Cuối cùng là toán tử kiểu luận lý. AND sẽ có độ ưu tiên cao hơn OR
[True AND True] OR False
True OR False
True
Độ ưu tiên giữa các toán tử (tt.)
Thay đổi độ ưu tiên
Dấu ngoặc đơn ( ) có độ ưu tiên cao nhất
Độ ưu tiên của các toán tử có thể được thay đổi bởi dấu ngoặc đơn
Toán tử có độ ưu tiên thấp hơn nếu đặt trong dấu ngoặc đơn sẽ được thực thi trước
Khi các cặp ngoặc đơn lồng nhau ( ( ( ) ) ), cặp ngoặc đơn trong cùng nhất sẽ được thực thi trước
Nếu trong biểu thức có nhiều cặp ngoặc đơn thì việc thực thi sẽ theo thứ tự từ trái sang phải
Ví dụ :

5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (2<6 and 10>11))

Cách tính :
1) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (True AND False))

Dấu ngoặc đơn bên trong sẽ được tính trước
2) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR False)

Thay đổi độ ưu tiên (tt.)
3) 5+9*3^2-4 >10 AND (2+16-8/4 > 6 OR False)
Kế đến dấu ngoặc đơn ở ngoài được tính đến
5+9*3^2-4 > 10 AND (2+16-2 > 6 OR False)

5+9*3^2-4 > 10 AND (18-2 > 6 OR False)

6) 5+9*3^2-4 > 10 AND (16 > 6 OR False)

7) 5+9*3^2-4 > 10 AND (True OR False)

8) 5+9*3^2-4 > 10 AND True
Thay đổi độ ưu tiên (tt.)
5+9*9-4>10 AND True

Biểu thức bên trái được tính trước
5+81-4>10 AND True

11) 86-4>10 AND True

12) 82>10 AND True

13) True AND True

14) True
Thay đổi độ ưu tiên (tt.)
Cấu trúc của một chương trình trong C
Biên dịch và thi hành chương trình
Một số ví dụ đơn giản
Ví dụ chương trình C đơn giản
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Phạm Thị Thơm
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)