Bài giảng Nhập môn lập trình - Bài 3: Kiểu dữ liệu cơ bản

Bộ từ vựng của C Tên/Định danh (Identifier) ─Một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu dữ liệu, một hàm. ─Không được trùng với các từ khóa, được tạo thành từ các chữ cái và các chữ số nhưng bắt buộc chữ đầu phải là chữ cái hoặc _. ─Số ký tự tối đa trong một tên là 255 ký tự và được dùng ký tự _ chen trong tên nhưng không cho phép chen giữa các khoảng trắng. 9Bộ từ vựng của C ─ Phân biệt chữ hoa chữ thường, do đó các tên sau đây khác nhau: • A, a • BaiTap, baitap, BAITAP, bAItaP, ─ Ví dụ tên/định danh: • Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1 • Các tên không hợp lệ: 1A, Giai Phuong Trinh

pdf45 trang | Chia sẻ: thanhle95 | Lượt xem: 469 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn lập trình - Bài 3: Kiểu dữ liệu cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHẬP MÔN LẬP TRÌNH BUỔI 3: KIỂU DỮ LIỆU CƠ BẢN 1. Mục tiêu • Hiểu được cấu trúc của một chương trình • Hiểu và vận dụng được các kiểu dữ liệu cơ bản • Hiểu và vận dụng được các câu lệnh nhập và xuất ra màn hình 2 2. Các thuật ngữ ─Tên/Định danh ─Kiểu dữ liệu ─Biến ─Hằng số ─Biểu thức ─Toán tử ─Câu lệnh ─Mã ASCII 3 3. Nội dung Cấu trúc một chương trình Chương trình đơn giản Bộ từ vựng của C Quy tắc soạn thảo mã nguồn Các kiểu dữ liệu cơ bản và phép toán Các câu lệnh nhập, xuất ra màn hình 4 Cấu trúc chương trình C/C++ 5 Chương trình đơn giản 6 #include #define PI 3.1415 //khai báo hằng số PI void main () { float cv,dt, r = 3.1; cv=2*r*PI; dt=PI*r*r; printf("\nChu vi = %10.2f”,cv); printf(“\nDien tich =%10.2f",dt); } Bộ từ vựng của C  Các ký tự được sử dụng ─Bộ chữ cái 26 ký tự Latinh A, B, C, , Z, a, b, c, , z ─Bộ chữ số thập phân : 0, 1, 2, , 9 ─Các ký hiệu toán học : + – * / = ( ) ─Các ký tự đặc biệt : . , : ; [ ] % \ # $ ‘ ─Ký tự gạch nối _ và khoảng trắng ‘ ’ 7 Bộ từ vựng của C Từ khóa (keyword) ─Các từ dành riêng trong ngôn ngữ. ─Không thể sử dụng từ khóa để đặt tên cho biến, hàm, tên chương trình con. ─Một số từ khóa thông dụng: • const, enum, signed, struct, typedef, unsigned • char, double, float, int, long, short, void • case, default, else, if, switch • do, for, while • break, continue, goto, return 8 Bộ từ vựng của C Tên/Định danh (Identifier) ─Một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu dữ liệu, một hàm. ─Không được trùng với các từ khóa, được tạo thành từ các chữ cái và các chữ số nhưng bắt buộc chữ đầu phải là chữ cái hoặc _. ─Số ký tự tối đa trong một tên là 255 ký tự và được dùng ký tự _ chen trong tên nhưng không cho phép chen giữa các khoảng trắng. 9 Bộ từ vựng của C ─ Phân biệt chữ hoa chữ thường, do đó các tên sau đây khác nhau: • A, a • BaiTap, baitap, BAITAP, bAItaP, ─ Ví dụ tên/định danh: • Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1 • Các tên không hợp lệ: 1A, Giai Phuong Trinh 10 Qui tắc soạn thảo mã nguồn 1. Đặt tên/định danh ─ Theo quy ước ─ Ngắn nhưng đủ khả năng phân biệt, gợi nhớ để nhận biết ─ Sử dụng tiếng Anh hoặc tiếng Việt không dấu (kể cả dòng chú thích) 11 Qui tắc soạn thảo mã nguồn 2. Sau mỗi câu lệnh có chấm phẩy ; 3. Đoạn { } được coi là nhóm lệnh 4. Cấu trúc mã nguồn theo kiểu phân cấp 5. Bổ sung chú thích đầy đủ, hợp lý 6. Chia một chương trình lớn thành nhiều phần (hàm) nhỏ 12 Qui tắc soạn thảo mã nguồn  Dấu chấm phẩy ; ─Dùng để phân cách các câu lệnh. ─Ví dụ: printf(“Hello World!”); printf(“\n”);  Câu chú thích ─Đặt giữa cặp dấu /* */ hoặc // ─Ví dụ: /*Ho & Ten: Nguyen Van A*/, // MSSV: 15512078 13 Các kiểu dữ liệu cơ sở Turbo C có 4 kiểu cơ sở sau: ─Kiểu số nguyên: giá trị của nó là các số nguyên như 2912, -1706, ─Kiểu số thực: giá trị của nó là các số thực như 3.1415, 29.12, -17.06, ─Kiểu luận lý: giá trị đúng hoặc sai. ─Kiểu ký tự: 256 ký tự trong bảng mã ASCII. 14 Kiểu số nguyên Các kiểu số nguyên (có dấu) ─n bit có dấu: –2n – 1 +2n – 1 – 1 ─Lưu ý: tùy vào hệ điều hành, kiểu int thông thường có độ dài 16 bit (2 byte) hoặc 32 bit (4 byte) Kiểu (Type) Độ lớn (Byte) Miền giá trị (Range) char 1 –128 +127 int 2 –32.768 +32.767 short 2 –32.768 +32.767 long 4 –2.147.483.648 +2.147.483.647 15 Kiểu số nguyên Các kiểu số nguyên (không dấu) ─n bit không dấu: 0 2n – 1 ─Lưu ý: tùy vào hệ điều hành, kiểu unsigned int thông thường có độ dài 16 bit (2 byte) hoặc 32 bit (4 byte) Kiểu (Type) Độ lớn (Byte) Miền giá trị (Range) unsigned char 1 0 255 unsigned int 2 0 65.535 unsigned short 2 0 65.535 unsigned long 4 0 4.294.967.295 16 Kiểu số nguyên Ví dụ chương trình xem kích thước kiểu số nguyên có dấu: #include using namespace std; void main() { cout << "Kich thuoc kieu char:" << sizeof(char) << " bytes" << endl; cout << "Kich thuoc kieu int:" << sizeof(int) << " bytes" << endl; cout << "Kich thuoc kieu short:" << sizeof(short) << " bytes" << endl; cout << "Kich thuoc kieu long:" << sizeof(long) << " bytes" << endl; } 17 Kiểu số thực Các kiểu số thực (floating-point) ─Ví dụ • 17.06 = 1.706*10 = 1.706*101 • (*) Độ chính xác đơn (Single-precision) chính xác đến 7 số lẻ. • (**) Độ chính xác kép (Double-precision) chính xác đến 19 số lẻ. Kiểu (Type) Độ lớn (Byte) Miền giá trị (Range) float (*) 4 3.4*10–38 3.4*1038 double (**) 8 1.7*10–308 1.7*10308 18 Kiểu luận lý Đặc điểm ─C ngầm định một cách không tường minh: • false (sai): giá trị 0. • true (đúng): giá trị khác 0, thường là 1. ─C++: bool Ví dụ ─0 (false), 1 (true), 2 (true), 2.5 (true) ─1 > 2 (0, false), 1 < 2 (1, true) 19 Kiểu ký tự Đặc điểm ─ Tên kiểu: char ─ Miền giá trị: 256 ký tự trong bảng mã ASCII. ─ Chính là kiểu số nguyên do: • Lưu tất cả dữ liệu ở dạng số. • Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó. Ví dụ ─ Lưu số 65 tương đương với ký tự ‘A’ ─ Lưu số 97 tương đương với ký tự ‘a’. 20 Biến (variable) Biến là gì ? ─Biến dùng để nhận giá trị do người dùng nhập vào khi chạy chương trình hoặc dùng để chứa giá trị của một biểu thức Cú pháp khai báo biến: ─ ; ─ , ; Ví dụ 1: int x; float y, z; 21 Biến (variable) Ví dụ 2: Viết chương trình nhập vào 3 số a,b và c. Cho biết a, b ,c có tạo thành 3 cạnh của tam giác không ?  Cần khai báo 3 biến a, b, c. Chẳng hạn: ─int a; ─int b; ─int c; Hoặc có thể khai báo chung: ─int a,b,c; 22 Hằng số là gì ? Giá trị không thay đổi trong các lần chạy chương trình Cú pháp khai báo #define hoặc sử dụng từ khóa const Ví dụ #define MAX 100 // Không có ; #define PI 3.14 // Không có ; const int MAX = 100; const float PI = 3.14; Hằng số 23 BIỂU THỨC ─Tạo thành từ các toán tử (Operator) và các toán hạng (Operand). ─Toán tử tác động lên các giá trị của toán hạng và cho giá trị có kiểu nhất định. ─Toán tử: +, –, *, /, %. ─Toán hạng: hằng, biến, lời gọi hàm... ─Ví dụ: 2 + 3, a / 5, (a + b) * 5, 24 Toán tử gán • Khái niệm ─Gán giá trị cho biến. • Cú pháp ─ = ; ─ = ; ─ = ; ─Có thể thực hiện liên tiếp phép gán. 25 Toán tử gán void main() { int a, b, c, d, e, thuong; a = 10; b = a; thuong = a / b; a = b = c = d = e = 156; e = 156; d = e; c = d; b = c; a = b; } • Ví dụ: 26 Các toán tử toán học • Toán tử 1 ngôi ─Chỉ có một toán hạng trong biểu thức. ─ ++ (tăng 1 đơn vị), -- (giảm 1 đơn vị) ─Đặt trước toán hạng • Ví dụ ++x hay --x: thực hiện tăng/giảm trước. ─Đặt sau toán hạng • Ví dụ x++ hay x--: thực hiện tăng/giảm sau. • Ví dụ ─x = 10; y = x++; // y = 10 và x = 11 ─x = 10; y = ++x; // x = 11 và y = 11 27 Các toán tử toán học • Toán tử 2 ngôi ─Có hai toán hạng trong biểu thức. ─ +, –, *, /, % (chia lấy phần dư) ─ x = x + y  x += y; • Ví dụ ─a = 1 + 2; b = 1 – 2; c = 1 * 2; d = 1 / 2; ─e = 1*1.0 / 2; f = float(1) / 2; g = float(1 / 2); ─h = 1 % 2; ─ x = x * (2 + 3*5);  x *= 2 + 3*5; 28 Các toán tử trên bit • Các toán tử trên bit ─Tác động lên các bit của toán hạng (nguyên). ─ & (and), | (or), ^ (xor), ~ (not hay lấy số bù 1) ─ >> (shift right), << (shift left) ─Toán tử gộp: &=, |=, ^=, ~=, >>=, <<= & 0 1 0 0 0 1 0 1 | 0 1 0 0 1 1 1 1 ^ 0 1 0 0 1 1 1 0 ~ 0 1 1 0 29 Các toán tử trên bit void main() { int a = 5; // 0000 0000 0000 0101 int b = 6; // 0000 0000 0000 0110 int z1, z2, z3, z4, z5, z6; z1 = a & b; // 0000 0000 0000 0100 z2 = a | b; // 0000 0000 0000 0111 z3 = a ^ b; // 0000 0000 0000 0011 z4 = ~a; // 1111 1111 1111 1010 z5 = a >> 2;// 0000 0000 0000 0001 z6 = a << 2;// 0000 0000 0001 0100 } • Ví dụ: 30 Các toán tử quan hệ • Các toán tử quan hệ ─So sánh 2 biểu thức với nhau ─Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng) ─ ==, >, =, <, <=, != • Ví dụ: ─s1 = (1 == 2); s2 = (1 != 2); ─s3 = (1 > 2); s4 = (1 >= 2); ─s5 = (1 < 2); s6 = (1 <= 2); 31 Các toán tử luận lý • Các toán tử luận lý ─ Tổ hợp nhiều biểu thức quan hệ với nhau. ─ && (and), || (or), ! (not) • Ví dụ ─ s1 = (1 > 2) && (3 > 4); ─ s2 = (1 > 2) || (3 > 4); ─ s3 = !(1 > 2); && 0 1 0 0 0 1 0 1 || 0 1 0 0 1 1 1 1 32 Toán tử điều kiện • Toán tử điều kiện ─ Đây là toán tử 3 ngôi (gồm có 3 toán hạng) ─ ? : o đúng thì giá trị là . o sai thì giá trị là . • Ví dụ ─ s1 = (1 > 2) ? 2912 : 1706; ─ int s2 = 0; ─ 1 < 2 ? s2 = 2912 : s2 = 1706; 33 Toán tử phẩy • Toán tử phẩy ─ Các biểu thức đặt cách nhau bằng dấu , ─ Các biểu thức con lần lượt được tính từ trái sang phải. ─ Biểu thức mới nhận được là giá trị của biểu thức bên phải cùng. • Ví dụ ─ x = (a++, b = b + 2); ─ a++; b = b + 2; x = b; 34 Độ ưu tiên của các toán tử • Quy tắc thực hiện ─ Thực hiện biểu thức trong ( ) sâu nhất trước. ─ Thực hiện theo thứ tự ưu tiên các toán tử. => Tự chủ động thêm ( ) • Ví dụ ─ n = 2 + 3 * 5; => n = 2 + (3 * 5); ─ a > 1 && b < 2 => (a > 1) && (b < 2) 35 Độ ưu tiên của các toán tử Toán tử Độ ưu tiên () [] -> . ! ++ -- - + * (cast) & sizeof * / % + - > >= == != & | ^ && || ?: = += -= *= /= %= &= ,                36 Viết biểu thức cho các mệnh đề ─x lớn hơn hay bằng 3 x >= 3 ─a và b cùng dấu ((a>0) && (b>0)) || ((a<0) && (b<0)) (a>0 && b>0) || (a<0 && b<0) ─p bằng q bằng r (p == q) && (q == r) hoặc (p == q && q == r) ─–5 < x < 5 (x > –5) && (x –5 && x < 5) 37 4. Bài tập minh họa 1. Cho biết năm sinh của một người và tính tuổi của người đó. 2. Cho 2 số a, b. Tính tổng, hiệu, tính và thương của hai số đó. 3. Cho biết tên sản phẩm, số lượng và đơn giá. Tính tiền và thuế giá trị gia tăng phải trả, biết: a. tiền = số lượng * đơn giá b. thuế giá trị gia tăng = 10% tiền 38 4. Bài tập minh họa 4. Cho biết điểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên. Tính điểm trung bình của sinh viên đó. 5. Cho biết bán kính của đường tròn. Tính chu vi và diện tích của hình tròn đó. 39 Bài tập 1 40 #include using namespace std; int main() { int namsinh = 1998; int tuoi = 0; tuoi = 2016-namsinh; cout<<tuoi; return 0; } Bài tập 2 41 #include using namespace std; int main() { int a = 10; int b = 3; int tong = 0; int hieu = 0; int tich = 0; float thuong = 0; tong = a + b; hieu = a - b; tich = a * b; thuong = (float)a / b; return 0; } Bài tập 3 42 #include using namespace std; int main() { int Soluong = 10; int Dongia = 500; int Tien = 0; float Vat = 0; Tien = Soluong * Dongia; Vat = Tien * 0.1; return 0; } Bài tập 4 43 #include using namespace std; int main() { float toan = 6.5; float hstoan = 2.0; float ly = 7.0; float hsly = 1.0; float hoa = 7.5; float hshoa = 1.0; float Dtb = 0; Dtb = (toan * hstoan + ly * hsly + hoa * hshoa) / (hstoan + hsly + hshoa); return 0; } Bài tập 5 44 #include #define PI 3.14 using namespace std; int main() { float r = 6.5; float chuvi = 0; float dientich = 0; chuvi = 2 * PI * r; dientich = PI * r * r; return 0; } 5. Bài tập về nhà 1. Cho số xe (gồm 4 chữ số) của bạn. Cho biết số xe của bạn được mấy nút? 2. Cho 1 ký tự chữ thường. In ra ký tự chữ hoa tương ứng. 3. Cho 3 số nguyên. Cho biết số lớn nhất và nhỏ nhất? 4. Cho số thực x. Tính giá trị các biểu thức sau: a) b) 5. Viết chương trình cho 2 giờ (giờ, phút, giây) và thực hiện cộng, trừ 2 giờ này. 2 1 4(x 10 3x 1)y x x    2 2 2 2 sin( x ) 1 cos 4 x x y e x             45