Cấu trúc của chương trình C
Biến
Kiểu dữ liệu
Các toán tử số học, luận lý, so sánh
Phương pháp chạy thử bằng tay
Ngôn ngữ lập trình C
•Tập lệnh phù hợp lập trình cấu trúc
•Kiểu dữ liệu phong phú
•Cú pháp linh động
Với C:
có thể đọc và viết mã
chương trình trên
hầu hết các hệ thống
chuyển lên C++ và có
thể viết các kịch bản
CGI (CGI script) cho
các Website
C là ngôn ngữ biên
dịch (complied
language)
38 trang |
Chia sẻ: candy98 | Lượt xem: 760 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở kỹ thuật lập trình - Chương 2: Biến, hằng, kiểu dữ liệu và toán tử - Trương Vĩnh Trường Duy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 2: Biến, hằng,
kiểu dữ liệu và toán tử
Biên soạn: Trương Vĩnh Trường Duy
(duytvt@ptithcm.edu.vn)
Từ tài liệu trên Internet và các nguồn khác
CƠ SỞ KỸ THUẬT LẬP TRÌNH
Nội dung
Cấu trúc của chương trình C
Biến
Kiểu dữ liệu
Các toán tử số học, luận lý, so sánh
Phương pháp chạy thử bằng tay
Ngôn ngữ lập trình C
•Tập lệnh phù hợp lập trình cấu trúc
•Kiểu dữ liệu phong phú
•Cú pháp linh động
Với C:
có thể đọc và viết mã
chương trình trên
hầu hết các hệ thống
chuyển lên C++ và có
thể viết các kịch bản
CGI (CGI script) cho
các Website
C là ngôn ngữ biên
dịch (complied
language) Hello
Ngôn ngữ lập trình C
Chương trình C
Chương trình C
Một chương trình phải có hàm void main()
Dấu { và } chỉ ra vị trí bắt đầu và kết thúc
của chương trình
Các câu lệnh ban đầu được dùng để khai
báo biến
Các câu lệnh sau phần khai báo là các câu
lệnh xử lý
Tất cả các câu lệnh đều kết thúc bằng dấu
chấm phẩy
Biến
Tham chiếu đến vùng nhớ mà tại đó có
lưu trữ giá trị
Kiểu dữ liệu quyết định kích thước của
vùng nhớ được cấp phát cho các biến
Dùng toán tử & để nhận địa chỉ của biến
&tên_biến;
Tên biến giúp chúng ta khôi phục dữ liệu
khi cần thiết
Biến (Ví dụ)
Diện tích của hình chữ nhật được tính bởi
công thức:
Diện tích = A = Dài x Rộng = D x R
Lãi suất được tính theo công thức:
Lãi suất = I = Vốn vay x Thời gian x Tỉ lệ lải
suất / 100
Tổng điểm của 5 sinh viên được tính bằng
công thức sau:
Sum = 24 + 56 + 72 + 36 + 82
Để tính điểm trung bình, ta có thể sử dụng
biến Sum trong công thức sau:
Avg = Sum / 5
Hướng dẫn đặt tên biến
Phải bắt đầu bằng một ký tự alphabet
Sau kí tự đầu tiên là một chuỗi các chữ cái
hoặc số hoặc ký tự ‘dấu gạch dưới’
Tránh dùng ký tự O do dễ nhầm lần với số
0 và chữ thường l có thể nhầm lẩn với số
1
Phân biệt chữ hoa và chữ thường
Tên của biến phải mô tả giá trị mà nó đang
lưu trữ
Biến đếm
Lưu lại số lần vòng lặp được thực hiện
Lúc đầu nó được khởi gán giá trị zero, sau
đó sẽ tăng dần lên khi vòng lặp được thực
hiện
Thường có tên là cnt
Biến đếm (Ví dụ)
Đúng
Đếm Sai
odd = odd+1 even = even+1
cnt=5?
Sai
Bắt đầu
cnt=0, odd=0, even=0
Nhập một số
Dừng
Là số lẻ?
cnt = cnt+1
Hiển thị số lẻ và số chẳn
Kiểu dữ liệu
Quyết định kích thước vùng nhớ được cấp phát
cho một biến để lưu trữ dữ liệu
Khai báo một biến
Cấp phát vùng nhớ
Vùng nhớ được tham chiếu bằng tên biến
Cú pháp tổng quát để khai báo một biến
Kiểu_dữ_liệu danh_sách_tên_biến;
Những kiểu dữ liệu cơ sở
Kiểu ký tự (char)
Kiểu số nguyên (int)
Kiểu số thực dấu chấm động chính xác đơn (float),
chính xác kép (double)
Kiểu void
Kiểu dữ liệu
Kiểu ký tự (char)
Chiếm 1 byte và biểu diễn một ký tự ASCII đặt
trong dấu nháy đơn. VD: 48 cho ‘0’, 65 cho ‘A’, 97
cho ‘a’
Có hai kiểu: char biểu diễn -128 127 và unsigned
char biểu diễn 0 255
Khai báo: char ch1; unsigned char ch2;
Kiểu số nguyên (int)
int: 2 byte, biểu diễn -32768 32767
unsiged int biểu diễn 0 65535
long (int): 4 byte, -2147483648 2147483647
usigned long (int): 0 4294967295
Kiểu dữ liệu
Kiểu số thực dấu chấm động
float: 4 byte, biểu diễn 3.4E-38 3.4E+38
double: 8 byte, 1.7E-308 1.7E+308
long double: 10 byte, 3.4E-4932
1.1E+4932
Số con số chính xác được lưu trữ bằng kiểu
dữ liệu float và double phụ thuộc vào từng
hệ thống cụ thể
Kiểu void
Kiểu không có giá trị
Biểu diễn kết quả của hàm hay của con trỏ
Kiểu dữ liệu
Kiểu dữ liệu Date bao gồm
Ngày (Day)
Tháng (Month)
Năm (Year)
Kiểu dữ liệu Time bao gồm
Giờ (Hour)
Phút (Minute)
Giây (Second)
Kiểu dữ liệu
Kiểu dữ liệu luận lý (boolean)
Chỉ có thể có hai giá trị - True hoặc
False
Trong C, kiểu dữ liệu luận lý được thực
hiện bằng các giá trị 1 và 0 tương ứng
của kiểu dữ liệu số nguyên
Không phải công cụ lập trình nào cũng
hỗ trợ kiểu này
Các kiểu dữ liệu đặc biệt
Vài công cụ lập trình hỗ trợ các kiểu dữ liệu đặc
biệt để lưu trữ dữ liệu:
Kích thước lớn
Âm thanh
Hình ảnh
Các kiểu dữ liệu đặc biệt thường dùng:
Blob
Memo
Long Binary
Kích thước các kiểu dữ liệu này phụ thuộc vào
dữ liệu được chứa , chúng có thể chứa 1.2
Gigabyte dữ liệu
Từ khoá
Các tên dành riêng cho một mục đích nào
đó và lập trình viên không thể dùng những
tên đó để đặt tên cho tên biến
Tất cả các kiểu dữ liệu đều được xem như
là từ khoá
auto break case char
const continue default do
double else enum extern
float for goto if
int long register return
short signed sizeof static
struct switch typedef union
unsigned void volatile while
Từ khóa của C
Biểu thức và toán tử
Biểu thức là sự kết hợp hợp lệ của những
phép toán (toán tử) thực hiện trên các
biến, hằng hoặc các giá trị của hàm (toán
hạng)
Các loại toán tử
Các toán tử số học
Các toán tử so sánh
Các toán tử luận lý
Các toán tử tăng giảm
Câu lệnh gán
Toán tử điều kiện – biểu thức điều kiện
Các toán tử số học
Toaùn töû Chöùc naêng Ví duï Keát quaû
+ Coäng 9+2 11
- Tröø 9-2 7
/ Chia 9/2 4.5
* Nhaân 9*2 18
^ Soá muõ 9^2 81
- Phuû ñònh -9 -9
% Modulus 9%2 1
Độ ưu tiên các toán tử số học
Các toán tử có cùng độ ưu tiên thì thứ tự
thực hiện sẽ là từ trái sang phải
Độ ưu tiên Toán tử
1 -
2 ^
3 *,/
4 +, -
5 %
Độ ưu tiên các toán tử số học
4 + 3 * 6 / 2 - 5 + 5
Được giải quyết như sau:
4 + [3 * 6 / 2] - 5 + 5
4 + [18 / 2] - 5 + 5
[4 + 9] - 5 + 5
[13 - 5] + 5
8 + 5
13
Các toán tử so sánh
Toaùn töû Chöùc naêng Ví duï Keát
quaû
2<9 True
9<2 False < Nhoû hôn
2<2 False
2<=9 True
9<=2 False <= Nhoû hôn hoaëc baèng
2<=2 True
2>9 False
9>2 True > Lôùn hôn
2>2 False
Các toán tử so sánh
Toaùn töû Chöùc naêng Ví duï Keát
quaû
2>=9 False
9>=2 True >= Lôùn hôn hoaëc baèng
2>=2 True
2=9 False
9=2 False = Baèng
2=2 True
2!=9 True
9!=2 True != Khaùc
2!=2 False
Độ ưu tiên toán tử so sánh
Có cùng độ ưu tiên
Được sử dụng trong các trường hợp ra
quyết định: hành động sau đó có được
thực thi hay không tùy vào kết quả của
phép toán so sánh
Các toán tử luận lý
Được sử dụng trong các trường hợp:
Nhiều điều kiện cần được thỏa mãn
Một trong những điều kiện cần được thỏa
mãn
Trả về các giá trị 1 (‘True’) hoặc 0 (‘False’)
Các toán tử luận lý
Toaùn töû Chöùc naêng
AND (&&) Keát quaû laø ‘True’ chæ khi caû
hai laø ‘True’
OR (||)
Keát quaû laø ‘True’ khi moät
trong hai laø ‘True’
NOT (!)
Caùc toaùn töû coù moät giaù trò vaø
chuyeån töø ‘True’ sang
‘False’ vaø ngöôïc laïi
Độ ưu tiên toán tử luận lý
Nếu nhiều toán tử luận lý xuất hiện trong
một điều kiện thì thứ tự thực hiện sẽ từ
phải sang trái
Ñoä öu tieân Toaùn töû
1 NOT
2 AND
3 OR
Các toán tử tăng giảm
Đó là các toán tử ++ và -- dùng để tăng
hoặc giảm một giá trị đối với các biến
nguyên hoặc thực
Các toán tử này có hai dạng: ++biến và --
biến sẽ thực hiện phép toán tăng hay giảm
trước còn biến++ và biến-- thì ngược lại
Nếu x=3 thì tong=++x sẽ gán 4 cho tong,
còn tong=x++ sẽ gán 3 cho tong, trong cả
hai trường hợp x đều trở thành 4
Câu lệnh gán
Biến = biểu thức
int c,a=3,b=4;
c=a+b
biến toán_tử_số_học = biểu thức
int so=10
so +=5 tương đương so = so+5
Toán tử và biểu thức điều kiện
điều_kiện ? biểu_thức_1 : biểu_thức_2
Kết quả của biểu thức điều kiện bằng biểu
thức 1 nếu điều kiện có kết quả khác 0,
ngược lại bằng biểu thức 2
Ví dụ:
a = 1>=5 ? 1:-1 cho kết quả a = -1
char c,t;
t=’D’;
c=(t>=’A’) &&(t<=’Z’)? t:’A’; cho kết quả
c=‘D’
Chuyển đổi kiểu dữ liệu
Khi hai toán hạng trong một phép toán
khác kiểu dữ liệu thì kiểu dữ liệu thấp
được nâng thành kiểu dữ liệu cao trước
khi tính toán
Nếu f có kiểu float, i có kiểu int thì trong
biểu thức f +i , i sẽ tạm thời được chuyển
sang kiểu float để thực hiện phép cộng
Nếu f có kiểu float, i1 và i2 có kiểu int và có
giá trị 10 và 3 thì biểu thức f=i1/i2 sẽ gán
vào f giá trị 3.0. Trong trường hợp này, để
thu được kết quả chính xác, cần sử dụng
phép ép kiểu: f=(float) i1/i2
Độ ưu tiên toán tử khác nhau
Ñ oä öu t ieân L oaïi toaùn töû
1 Soá hoïc
2 So saùnh
3 L uaän l yù
Độ ưu tiên toán tử khác nhau
Xác định giá trị True hoặc False cho phương trình sau:
2 * 3 + 4 / 2 > 3 AND 3 < 5 OR 10 < 9
[2 * 3 + 4 / 2] >3 AND 3 < 5 OR 10 < 9
[[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]
[ True AND True ] OR False
True OR False
True
Dấu ngoặc đơn
Thay đổi độ ưu tiên của các toán tử
Phép toán trong dấu ngoặc đơn bên trong
được thực hiện trước khi có nhiều dấu
ngoặc đơn lồng nhau
Một phương trình gồm nhiều cặp dấu
ngoặc đơn thì thứ tự xác định giá trị từ
trái sang phải
Dấu ngoặc đơn
Xác định các giá trị True hoặc False:
5+9*3^2-4>10 AND (2+2^4-8/4>6 OR (211))
5+9*3^2-4>10 AND (2+2^4-8/4>6) OR (True AND False))
5+9*3^2-4>10 AND (2+2^4-8/4>6 OR False)
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)
5+9*3^2-4>10 AND (16>6 OR False)
5+9*3^2-4>10 AND (True OR False)
5+9*3^2-4>10 AND True
5+9*9-4>10 AND True
5+81-4>10 AND True
86-4>10 AND True
82>10 AND True
True AND True
True
Phương pháp chạy thử bằng tay
Bước 1. Bắt đầu
Bước 2. X=10
Bước 3. Y=5
Bước 4. M=0
Bước 5. M=X+Y+(X*Y)
Bước 6. Y=Y+4
Bước 7. M=M+Y
Bước 8. Hiển thị X,Y,M
Bước 9. Dừng
DRY RUN TABLE
X Y M
Initial values 10 5 0
After Step 5 10 5 65
After Step 6 10 9 65
After Step 7 10 9 74