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

 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)

pdf38 trang | Chia sẻ: candy98 | Lượt xem: 760 | Lượt tải: 0download
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