Bài giảng Nhập môn lập trình - Chương 2: Các thành phần cơ bản - Ngô Hữu Dũng

Nội dung

2 Nhập môn lập trình - Cơ bản

 Giới thiệu ngôn ngữ lập trình C

 Trình biên dịch/thông dịch

 Cấu trúc chương trình

 Định dạng trong C

 Biến, kiểu dữ liệu

 Hằng số, từ khóa, toán tử

 Thư viện

 stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h

 Nhập xuất căn bản

 Nhập: scanf, cin, gets

 Xuất: printf, cout, puts

pdf53 trang | Chia sẻ: phuongt97 | Lượt xem: 402 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Nhập môn lập trình - Chương 2: Các thành phần cơ bản - Ngô Hữu Dũng, để 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 Các thành phần cơ bản TS. Ngô Hữu Dũng TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Nội dung Nhập môn lập trình - Cơ bản2  Giới thiệu ngôn ngữ lập trình C  Trình biên dịch/thông dịch  Cấu trúc chương trình  Định dạng trong C  Biến, kiểu dữ liệu  Hằng số, từ khóa, toán tử  Thư viện  stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h  Nhập xuất căn bản  Nhập: scanf, cin, gets  Xuất: printf, cout, puts Ngôn ngữ lập trình C Nhập môn lập trình - Cơ bản  Được phát triển bởi Dennis Ritchie tại phòng thí nghiệm AT&T Bell vào đầu thập niên 1970  C được dùng trong hệ điều hành UNIX và phát triển cùng với hệ điều hành này  C đã lan rộng ra nhiều hệ điều hành khác và trở thành ngôn ngữ phổ dụng nhất 3 Trình biên dịch/Trình thông dịch Nhập môn lập trình - Cơ bản Trình biên dịch Compiler Mã nguồn Source code Mã máy Machine Code Executable Program Input Output Trình biên dịch: Phân tích chương trình và biên dịch thành mã máy. Trình thông dịch Interpreter Source Code Input Output Trình thông dịch: Phân tích và thực thi chương trình cùng lúc. 4 Biên dịch và chạy chương trình Nhập môn lập trình - Cơ bản  IDE – Integrated Development Environment  Trình soạn thảo  Biên soạn mã nguồn  Trình biên dịch  Phân tích và biên dịch mã nguồn thành mã đối tượng  Trình liên kết  Kết hợp các mã đối tượng và thư viện thành mã thực thi Editor Compiler Linker Source code file.c Object code file.obj Executable code file.exe Libraries IDE (Integrated Development Environment) 5 Sửa lỗi - debug Nhập môn lập trình - Cơ bản  Lỗi cú pháp  Phát hiện bởi trình biên dịch  Lỗi về từ khóa, cú pháp, ngữ pháp  Lỗi ngữ nghĩa  Được phát hiện bởi người sử dụng  Lỗi về kết quả của chương trình  Lỗi xuất hiện trong quá trình thực thi chương trình  Đúng cú pháp nhưng sai kết quả Editor Compiler Linker Source code file.c Object code file.obj Executable code file.exe Libraries Syntactic Errors Semantic Errors 6 Quiz Nhập môn lập trình - Cơ bản7  Mục đích của việc “biên dịch” là chuyển đổi  A. Ngôn ngữ bậc thấp sang bậc cao  B. Chương trình thành mã nguồn  C. Mã nguồn sang mã máy  D. Mã máy sang mã nguồn  Trường hợp nào sau đây là “lỗi ngữ nghĩa”?  A. Lỗi khi biên dịch chương trình  B. Chương trình tính sai kết quả  C. Lỗi do gõ sai một câu lệnh  D. Lời chú thích không có nghĩa Định dạng trong C Nhập môn lập trình - Cơ bản  Có phân biệt giữa chữ in HOA và chữ in thường!  Các dòng trống, khoảng trắng, lời chú thích đều được trình biên dịch bỏ qua  Các dấu thụt dòng giúp chương trình dễ đọc, rõ ràng.  Có thể dùng tab hoặc dấu cách  Câu lệnh được kết thúc bằng dấu chấm phẩy ;  Chuỗi ký tự được đặt giữa hai dấu hai nháy "Chuỗi"  Một ký tự được đặt giữa hai dấu một nháy 's' 8 Lời chú thích Nhập môn lập trình - Cơ bản  Hai cách ghi chú thích  // chú thích dòng  /* chú thích khối*/  Ví dụ 1. /* Chương trình C 2. ** In ra màn hình dòng chữ Hello 2017!*/ 3. #include //Khai báo thư viện 9 Biến Nhập môn lập trình - Cơ bản  Biến được dùng để lưu trữ dữ liệu và kết quả tính toán  Kiểu dữ liệu: Nguyên, thực, ký tự, chuỗi, mảng, cấu trúc, con trỏ  Tên biến: Do người lập trình tự đặt  Biến phải được khai báo trước khi sử dụng  Cú pháp: ;  int year;  float score;  char kyTu;  char name[50]; 10 Biến (2) Nhập môn lập trình - Cơ bản  Giá trị của biến có thể thay đổi  Khởi tạo biến:  int year = 2016;  Phép gán:  year = last_year + 1;  Một vùng nhớ sẽ được cấp phát tương ứng với kích cỡ của biến  Mỗi ô nhớ có một địa chỉ riêng 2016year Biến Vùng nhớ int year; // Khởi tạo year = 2016;// Gán Kiểu dữ liệu? 11 Kiểu dữ liệu Nhập môn lập trình - Cơ bản  int: Kiểu số nguyên  2 hoặc 4 bytes (16 hoặc 32 bits)  -32,768 → 32,767 hoặc -2,147,483,648 → 2,147,483,647  float: Kiểu số thực  4 bytes (32 bits): 1.2E-38 → 3.4E+38, độ chính xác 24 bits  double: Kiểu số thực có độ chính xác cao hơn float  8 bytes (64 bits): 2.3E-308 → 1.7E+308, độ chính xác 53 bits  char: Kiểu ký tự  1 byte, ví dụ: char exit = 'e';  char []: Kiểu chuỗi  ví dụ: char name[10] = "Quang";  bool: Kiểu luận lý, có giá trị true hoặc false  1 byte, ví dụ: bool kt = true; //C++ Độ chính xác? 12 Số chấm động – floating-point numbers Nhập môn lập trình - Cơ bản  Biểu diễn số thực  Ví dụ: 12’345 = 1.2345 x 104  Hay 1.2345E+4  Trị số x hệ cơ số số mũ  Float: Độ chính xác đơn  Double: Độ chính xác đôi significand x base exponent Kiểu dữ liệu Dấu Mũ Trị số Tổng số bit Độ chính xác Float 1 bit 8 bits 23 bits 32 bits (4 bytes) 24 bits (Dấu + trị số) Double 1 bit 11 bits 52 bits 64 bits (8 bytes) 53 bits (Dấu + trị số) 13 Tên biến Nhập môn lập trình - Cơ bản  Phải bắt đầu bằng một chữ hoặc dấu gạch dưới (_), tiếp sau đó có thể kết hợp giữa chữ, số và dấu gạch dưới.  Không được trùng với từ khóa có sẵn của C  Hai biến không được trùng tên nhau  Có phân biệt giữa chữ hoa và chữ thường  Độ dài tùy thích, tuy nhiên không nên đặt tên quá dài  Nên đặt tên có nghĩa, dễ hiểu  Keywords  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 14 Quiz – Tên biến Nhập môn lập trình - Cơ bản  Những tên biến nào sau đây đúng hay sai? 1. 1ngoi_sao 2. bienDem1 3. phepNhân 4. donVi$ 5. ngoi_nha 6. int 7. kiem-tra 8. A&T 9. ____dien___tich 10. +hai_so 11. luy thua 15 12. _mot_Ngoi_Sao 13. T_T 14. ^_^ 15. edthbdl_mbcln2h 16. dienTich@ 17. Chu-Vi-Hinh-Tron 18. mayViTinh 19. Tong+Hieu 20. 24gio Quiz - khai báo biến Nhập môn lập trình - Cơ bản16  Hãy khai báo các biến phù hợp cho các nội dung sau 1. Mã ID 2. Năm sinh 3. Họ và tên 4. Chiều cao 5. Cân nặng 6. Giới tính: Chỉ cần lưu giá trị ‘F’ (female) hoặc ‘M’ (male) 7. Tuổi 8. Đã lập gia đình? Chỉ cần lưu có (true) hoặc không (false) 9. Địa chỉ email 10. Nghề nghiệp Quiz - khai báo biến (tham khảo) Nhập môn lập trình - Cơ bản 1. #include // Khai báo thư viện 2. int main() // Chương trình chính 3. { 4. int ID; // ID kiểu số nguyên 5. char ID_s[20]; // Hoặc ID kiểu chuỗi 6. int namSinh; // Ví dụ: 1999 7. char hoVaTen[100]; // Tên kiểu chuỗi 8. float chieuCao; // Kiểu số thực 9. float canNang; // Kiểu số thực 10. char gioiTinh; // Kiểu ký tự: ‘F’, ‘M’ 11. int tuoiTac; // Tuổi kiểu số nguyên 12. bool giaDinh; // Có: True, Chưa: False 13. char email[100]; // Email kiểu chuỗi 14. char ngheNghiep[50]; // Ví dụ: “Ky su CNTT” 15. // 16. return 0; 17.} 17 Chuyển đổi kiểu Nhập môn lập trình - Cơ bản  Đặt (Kiểu dữ liệu) phía trước biểu thức để chuyển đổi kiểu dữ liệu cho kết quả của biểu thức  f = (float) i1 / i2; i = (int)f;  Chia một số nguyên cho một số nguyên: Kết quả là số nguyên  i1=5; i2=10; f=i1/i2; //Cảnh báo, f=0.00  f=(float)i1/i2; // OK, f=0.50  Chia một số thực cho một số nguyên hoặc chia một số nguyên cho một số thực: Kết quả là số thực  i=5; f=10; i1 = i/f; // Cảnh báo, i1 = 0  f1=i/f; f2=i/10.0; // OK! f1=f2=0.50 18 Chuyển đổi kiểu (2) Nhập môn lập trình - Cơ bản19  Gán một số nguyên vào một biến kiểu thực  f = i; // Cảnh báo việc chuyển đổi  f1 = 10; // OK! f1 = 10.000000  f2 = (float)i; // OK!  Gán một số thực vào một biến kiểu nguyên: Mất phần thập phân (sau dấu chấm)  i1 = 9.5; i2 = f;//Cảnh báo, i1 = 9  i1 = (int)9.5; i2 = (int)f; // OK! Quiz – Chuyển đổi kiểu dữ liệu Nhập môn lập trình - Cơ bản20  Chuyển đổi kiểu dữ liệu phù hợp (nếu cần) 1. int a = 13 / 2; 2. float b = a / 4; 3. float c = 10 / a; 4. float d = 1 / 5; 5. float e = (3 / 5) * a; 6. float f = (7 + 3) / a; 7. float g = 5.4 * 3 / a; 8. float h = (a + 3) / 2; 9. float i = (5 / 9) * (a – 32); 10. float j = a / 2 + 10 / (2 * b); Quiz – Chuyển đổi kiểu dữ liệu (1) Nhập môn lập trình - Cơ bản21  Chuyển đổi kiểu dữ liệu phù hợp (nếu cần) 1. int a = 13 / 2; 2. float b = a / 4; 3. float c = 10 / a; 4. float d = 1 / 5; 5. float e = (3 / 5) * a; 6. float f = (7 + 3) / a; 7. float g = 5.4 * 3 / a; 8. float h = (a + 3) / 2; 9. float i = (5 / 9) * (a – 32); 10. float j = a / 2 + 10 / (2 * b); 1. int a = 13 / 2; 2. float b = (float)a / 4; 3. float c = 10.0 / a; 4. float d = 1.0 / 5; 5. float e = (3.0 / 5) * a; 6. float f = (float)(7 + 3) / a; 7. float g = 5.4 * 3 / a; 8. float h = (a + 3) / 2.0; 9. float i = (5 / 9.0) * (a – 32); 10. float j = a / 2.0 + 10 / (2 * b); Hằng số trong C Nhập môn lập trình - Cơ bản  Giá trị không đổi suốt chương trình  Hằng số có kiểu dữ liệu  Số nguyên  Số thực  Ký tự  Chuỗi  Khai báo hằng số  #define  const #define a 45 // int #define b 125u // unsigned int #define c 87l // long int #define d 23ul // unsigned long int #define e 057 // Cơ số 8 #define f 0xfee // Cơ số 16 #define g 3.14159 // float #define h 314159E-5 // float #define i 'a' // char #define j "morning" // string const int k = 2016; const float l = 2.016; const char m = '4'; const char n[] = "afternoon"; #define o 048 /* ERROR! Hệ cơ số 8 không có số 8 */ #define p 59E // ERROR! #define q .E59 // ERROR! 22 Toán tử Nhập môn lập trình - Cơ bản23 Gán assignment Tăng / Giảm increment decrement Toán học arithmetic Luận lý logical So sánh comparison member access a = b a += b a -= b a *= b a /= b a %= b a &= b a |= b a ^= b a <<= b a >>= b ++a --a a++ a-- +a -a a + b a - b a * b a / b a % b ~a a & b a | b a ^ b a << b a >> b !a a && b a || b a == b a != b a < b a > b a <= b a >= b a[b] *a &a a->b a.b Toán tử gán - assignment Nhập môn lập trình - Cơ bản  Cho a = 7, b = 2. Số trên bit: a = 00000111, b = 00000010 Toán tử Mô tả Kết quả a = b Gán giá trị của b cho biến a a = 2 a += b Phép cộng: a = a + b a = 7 + 2 = 9 a -= b Phép trừ: a = a – b a = 7 – 2 = 5 a *= b Phép nhân: a = a * b a = 7 * 2 = 14 a /= b Phép chia lấy nguyên: a = a / b a = 7 / 2 = 3 a %= b Phép chia lấy dư: a = a % b a = 7 % 2 = 1 a &= b Phép AND trên bit: a = a & b a = 0111&0010 = 2 a |= b Phép OR trên bit: a = a | b a = 0111|0010 = 7 a ^= b Phép XOR trên bit: a = a ^ b a = 0111^0010 = 5 a <<= b Phép dịch trái trên bit: a = a << b a = a<<2 =11100=28 a >>= b Phép dịch phải trên bit: a = a >> b a = a>>2 =0001 = 1 24 Toán tử toán học - arithmetic Nhập môn lập trình - Cơ bản  Cho a = 7, b = 2. Số trên bit: a = 00000111, b = 00000010 c = -a Trừ a c = -7 c = a + b Phép cộng c = 7 + 2 = 9 c = a - b Phép trừ c = 7 – 2 = 5 c = a * b Phép nhân c = 7 * 2 = 14 c = a / b Phép chia lấy nguyên c = 7 / 2 = 3 c = a % b Phép chia lấy dư c = 7 % 2 = 1 c = ~a Phép NOT trên bit c = 11111000 = –8 c = a & b Phép AND trên bit c = 0111&0010 = 2 c = a | b Phép OR trên bit c = 0111|0010 = 7 c = a ^ b Phép XOR trên bit c = 0111^0010 = 5 c = a << b Phép SHIFT LEFT trên bit c = a<<2 =11100=28 c = a >> b Phép SHIFT RIGHT trên bit c = a>>2 =0001 = 1 25 Toán tử trên bit – bitwise operations Nhập môn lập trình - Cơ bản  Các phép toán trên bit A 0 0 1 1 B 0 1 0 1 A & B 0 0 0 1 A | B 0 1 1 1 A ^ B 0 1 1 0 ~A 1 1 0 0 ~B 1 0 1 0 << Cho a = 00110100, a<<2= 11010000 >> Cho a = 00110100, a>>2= 00001101 #include int main() { int a = 52; // 0011 0100 int b = 29; // 0001 1101 int c; c = a & b; // 0001 0100 printf("%d & %d = %d\n", a, b, c); c = a | b; // 0011 1101 printf("%d | %d = %d\n", a, b, c); c = a ^ b; // 0010 1001 printf("%d ^ %d = %d\n", a, b, c); c = ~a; // 1100 1011 printf("~%d = %d\n", a, c); c = a << 2; // 1101 0000 printf("%d << 2 = %d\n", a, c); c = a >> 2; // 0000 1101 printf("%d >> 2 = %d\n", a, c); return 0; } 26 Toán tử tăng / giảm - increment / decrement Nhập môn lập trình - Cơ bản  Cho a = 7, b = 2 Phép toán Mô tả Kết quả b = ++a Cộng a lên một đơn vị trước khi tính Tương đương: a = a + 1; b = a; a = 8 b = 8 b = --a Trừ a đi một đơn vị trước khi tính Tương đương: a = a – 1; b = a; a = 6 b = 6 b = a++ Cộng a lên một đơn vị sau khi tính Tương đương: b = a; a = a + 1; a = 8 b = 7 b = a-- Trừ a đi một đơn vị sau khi tính Tương đương: b = a; a = a - 1; a = 6 b = 7 Ví dụ: c = ++a - b-- Tương đương: a = a + 1; c = a – b; b = b – 1; a = 8 b = 6 c = 1 27 Độ ưu tiên Nhập môn lập trình - Cơ bản Category Toán tử Postfix () [] -> . ++ --  Unary + - ! ~ ++ - - (type)* & sizeof  Multiplicative * / %  Additive + - Shift > Relational >= Equality == != Bitwise AND & Bitwise XOR ^ Bitwise OR | Logical AND && Logical OR || Conditional ?:  Assignment = += -= *= /= %=>>= <<= &= ^= |= Comma ,  28 Quiz – Phép toán Nhập môn lập trình - Cơ bản29  Hãy cho biết kết quả của các phép toán sau int main() { int a = 7, b = 2, c, d, e, f, g, h, i, j, k; b += 2; c = ++a; d = a--; e = a/2; f = a%2; g = a++ - 7%3; h = 11%3 + ++a; i = (a / 3) % 4; j = --a % 2; k = a/4*3 ; return 0; } Quiz – Phép toán (1) Nhập môn lập trình - Cơ bản30  Hãy cho biết kết quả của các phép toán sau int main() { int a = 7, b = 2, c, d, e, f, g, h, i, j, k; b += 2; // b = b + 2 = 4 c = ++a; // ++a = 8, c = a = 8 d = a--; // d = a = 8, a-- = 7 e = a/2; // e = 7 / 2 = 3 f = a%2; // f = 7 % 2 = 1 g = a++ - 7%3; // 7%3 = 1, g = a – 1 = 6, a++ = 8 h = 11%3 + ++a; // ++a = 9, 11%3 = 2, h = 2 + 9 = 11 i = (a / 3) % 4; // a / 3 = 3, i = 3 % 4 = 3 j = --a % 2; // --a = 8, j = 8 % 2 = 0 k = a/4*3 ; // a/4 = 2, k = 2 * 3 = 6 return 0; } Toán tử luận lý – logical Nhập môn lập trình - Cơ bản  Những phép toán luận lý Cho A = True, B = False Toán tử Mô tả Ví dụ && Toán tử AND, nếu và chỉ nếu cả hai toán hạng điều đúng thì kết quả phép toán là đúng A && B: False || Toán tử OR, nếu và chỉ nếu cả hai toán hạng đều sai thì kết quả phép toán là sai A || B: True ! Toán tử NOT, thực hiện phép phủ định !A: False !B: True !A || B: False A && !B: True 31 Toán tử so sánh – comparison Nhập môn lập trình - Cơ bản  Những phép so sánh Cho A = 10, B = 20 Toán tử Mô tả Ví dụ == Bằng nhau (A == B) sai != Khác nhau (A != B) đúng > Lớn hơn (A > B) sai < Nhở hơn (A < B) đúng >= Lớn hơn hoặc bằng (A >= B) sai <= Nhở hơn hoặc bằng (A <= B) đúng #include int main() { int A=10, B=20; if (A==B) printf("A = B"); if (A!=B) printf("A ≠ B"); if (A>B) printf("A > B"); if (A<B) printf("A < B"); if (A>=B) printf("A ≥ B"); if (A<=B) printf("A ≤ B"); return 0; } 32 Các thư viện Nhập môn lập trình - Cơ bản  Các thư viện định nghĩa sẵn các hàm hay kiểu dữ liệu  Cú pháp khai báo: #include  các hàm nhập xuất chuẩn, các thao tác với tập tin  getchar, putchar, printf, scanf, gets, fopen, fclose, remove,  các hàm chuyển đổi kiểu dữ liệu, cấp phát bộ nhớ  atof, atoi, atol, strtol, free, malloc, abs, rand, srand  các hàm về toán học  sqrt, pow, ceil, floor, trunc, abs, sin, cos 33 Các thư viện (2) Nhập môn lập trình - Cơ bản34  các hàm xử lý chuỗi ký tự  strcpy, strcat, strlen, strstr, strcmp, strchr, memset  các hàm xử lý ký tự  toupper, tolower  các hàm nhập xuất  gets, puts, cin, cout  các hàm xử lý về thời gian  time, clock, localtime, difftime, time_t, struct tm Hàm thường dùng ở thư viện stdio.h Nhập môn lập trình - Cơ bản35  Khai báo: #include  Hàm printf: Xuất ra màn hình  Nguyên mẫu hàm: int printf(const char * format, ... );  printf(“Hello world!”);  printf(“a = %d.\n”, so_nguyen);  Hàm scanf: Nhập dữ liệu từ bàn phím  Nguyên mẫu hàm: int scanf( const char * format, ... );  scanf("%d", &so_nguyen);  scanf("%f", &so_thuc);  scanf("%c", &ky_tu);  Hàm gets: Nhập chuỗi từ bàn phím  char name[50]; gets(name); Hàm thường dùng ở thư viện stdlib.h Nhập môn lập trình - Cơ bản36  Khai báo: #include  Hàm rand: Tạo số nguyên ngẫu nhiên  Nguyên mẫu hàm: int rand (void);  a = rand(); // a có giá trị từ 0 đến 32767  b = rand()%90; // b có giá trị từ 0 đến 89  c = rand()%90 + 10; // c có giá trị từ 10 đến 99  Hàm srand: Khởi tạo số ngẫu nhiên  Nguyên mẫu hàm: void srand (unsigned int seed);  Ví dụ:  srand(time(NULL));  d = rand() % 101 – 50; Hàm thường dùng ở thư viện math.h Nhập môn lập trình - Cơ bản37  Khai báo: #include  Hàm sqrt: Tính căn bậc hai  Nguyên mẫu hàm: double sqrt (double x);  x = sqrt(9); // Căn bậc hai của 9  y = sqrt(x + 1); // Căn bậc hai của x + 1  Hàm pow: Tính lũy thừa  Nguyên mẫu hàm: double pow (double base, double exponent);  x = pow(3, 2); // ba mũ hai  y = pow(x, 4); // x mũ bốn  Hàm floor, ceil: Làm tròn  z = floor(4.3); // z = 4.0  w = ceil(4.3); // w = 5.0 Hàm thường dùng ở thư viện string.h Nhập môn lập trình - Cơ bản38  Khai báo: #include  Hàm strlen: Tính chiều dài của chuỗi  Nguyên mẫu hàm: size_t strlen(const char * str)  a = strlen(“hello”); // a = 5  Hàm strcpy: Sao chép chuỗi  Nguyên mẫu hàm: char * strcpy(char * dest, const char * src)  char hello[50]; // Khai báo chuỗi  strcpy(hello, “Hello ”); // hello = “Hello ”  Hàm strcat: Nối chuỗi  Nguyên mẫu hàm: char * strcat( char * dest, const char * src)  char name[50] = “Tuan”;  strcat(hello, name); // hello = “Hello Tuan!”  Hàm strcmp: So sánh chuỗi  Nguyên mẫu hàm: int strcmp( const char * str1, const char * str2 )  a = strcmp(name, “Tuan”); // a = 0 Hàm thường dùng ở thư viện ctype.h Nhập môn lập trình - Cơ bản39  Khai báo: #include  Hàm tolower: Chuyển ký tự sang chữ thường  Nguyên mẫu int tolower ( int c );  char c = ‘N’; tolower(c); // c = ‘n’  Hàm toupper: Chuyển ký tự sang chữ in  Nguyên mẫu int toupper ( int c );  char c = ‘n’; toupper(c); // c = ‘N’  Các hàm kiểm tra ký tự  isalnum(c): Trả về true (khác 0) nếu c là số hoặc chữ  isalpha(c): Trả về true nếu c là chữ  islower(c): Trả về true nếu c là chữ thường  isupper(c): Trả về true nếu c là chữ in Quiz – Tính toán Nhập môn lập trình - Cơ bản40  Cho một biến số nguyên x, viết biểu thức tính:  a = ()  b = ()  c = ( 3)( + 1)  d = + 2  e = +  = ( + 2) ( 2)  g = + ( + 1) Quiz – Tính toán (tham khảo) Nhập môn lập trình - Cơ bản41  Cho một biến số nguyên x, viết biểu thức tính:  a = () a = (x+1)/2.0;  b = () b = 4*(x+2)/3.0;  c = ( 3)( + 1) c = (1/3.0)*(x-3)*(x+1);  d = + 2 d = sqrt(pow(x,2)+2);  e = + e = sqrt((x+4)/4.0 + (x-3)/2.0);  = ( + 2) ( 2) f = (x+2)*sqrt((5/3.0)*(pow(x,4)-2));  g = ( + 2) g = (x+1)/3.0*sqrt(pow(x+2,4)); Nhập dữ liệu Nhập môn lập trình - Cơ bản42  Chú ý nhập đúng kiểu dữ liệu  Nhập số nguyên  int a; scanf(“%d”, &a);  Nhập số thực  float b; scanf(“%f”, &b);  Nhập ký tự  char c; scanf(“%c”, &c);  Nhập chuỗi ký tự  char s[50];  fflush(stdin); // xoá bộ đệm đầu vào  gets(s);  scanf(“%s”, &s); // ký tự trắng  scanf(“%[^\n]s”, &s); // enter #include int main() { int a; float b; char c; char s[50]; scanf("%d", &a); scanf("%f", &b); scanf("%c", &c); fflush(stdin); gets(s); . . . return 0; } Xuất dữ liệu Nhập môn lập trình - Cơ bản43  Chú ý xuất đúng kiểu dữ liệu  Xuất số nguyên  printf(“%d”, a);  Xuất số thực  printf(“%f”, b);  Xuất ký tự  printf(“%c”, c);  Xuất chuỗi ký tự  printf(“%s”, s); 1. #include 2. int main() 3. { 4. int a; float b; 5. char c; char s[50]; 6. scanf("%d", &a); 7. scanf("%f", &b); 8. scanf("%c", &c); 9. fflush(stdin); 10. gets(s); 11. printf("a = %d\n", a); 12. printf("b = %f\n", b); 13. printf("c = %c\n", c); 14. printf("s = %s\n", s); 15. return 0; 16. } Định dạng biểu diễn dữ liệu Nhập môn lập trình - Cơ bản specifier Kết quả Ví dụ %d, %i Số nguyên có dấu -95, 23 %u Số nguyên không dấu 7235 %o Số bát phân không dấu 610 %x, %X Số thập lục phân không dấu 7fa, 7FA %f, %F Số thực 392.65 %e, %E Ký hiệu khoa học 3.92e+2, 3.92E+2 %c Ký tự a %s Chuỗi ký tự laptrinh %p Địa chỉ con trỏ b8000000 %% In dấu % % %a, %A Số thập lục phân kiểu thực 0xb.f3p-2, 0XB.F3P-2 %g, %G Dạng ngắn của %e, %E hoặc %f,%F 392.65 44  %[flags][width][.precision][length]specifier Định dạng biểu diễn dữ liệu Nhập môn lập trình - Cơ bản  %[flags][width][.precision][length]specifier flags Mô tả – Canh trái trong width + Buộc in dấu + hoặc – (space) Ký tự trống trước dữ liệu 0 In số 0 trước dữ liệu width Số ký tự tối thiểu được in ra .precision Số ký tự sau dấu chấm động length d i u o x (none) int unsigned int hh signed char unsigned char h short int unsigned short int l long int unsigned long int 45 Minh hoạ biểu diễn dữ liệu Nhập môn lập trình - Cơ bản 1. #include 2. int main() 3. { 4. printf("Char: %c %c \n", 'a', 65);//Char: a A 5. printf("Integer: %d \n", 1999); //Integer: 1999 6. printf("Space: %7d \n", 1999); //Space: 1999 7. printf("Zero: %07d \n", 1999); //Zero: 0001999 8. printf("Float: %.2f\n", 3.1416); //Float: 3.14 9. printf("Float: %6.2f\n", 3.1416); //Float: 3.14 10. printf("String: %s\n", "Chuoi"); //String: Chuoi 11. printf("Hexa: %x\n", 100); //Hexa: 64 12. printf("Octo: %o\n", 100); //Octo: 144 13. printf("Hexa: %#x\n", 100); //Hexa: 0x64 14. printf("Octo: %#o\n", 100); //Octo: 0144 15. return 0; 16.} 46 Mã escape Nhập môn lập trình - Cơ bản Escape code Description \n newline \r carriage return \t tab \v vertical tab \b backspace \f form feed (page feed) \a alert (beep) \' single quote (') \" double quote (") \? question mark (?) \\ backslash (\)  Mã escape dùng để đại diện cho những ký tự đặc biệt hoặc những chuỗi, thao tác khó trình bày trực tiếp  Mã escape được đặt trong chuỗi định dạng của lệnh printf  Ví dụ: printf(“A\tB\n”); 47 Kết thúc Bài 2 Nhập môn lập trình - Cơ bản  Giới thiệu ngôn ngữ lập trình C  Trình biên dịch/thông dịch  Cấu trúc chương trình  Định dạng trong C  Biến, kiểu dữ liệu  Hằng số, từ khóa, toán tử  Thư viện  stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h  Nhập xuất căn bản  Nhập: scanf, cin, gets  Xuất: printf, cout, puts 48 Bài tập 2.1: Biến và kiểu biến Nhập môn lập trình - Cơ bản49  Viết chương trình nhập vào từ bàn phím và xuất ra màn hình các thông tin sau 1. Mã ID 2. Năm sinh 3. Họ và tên 4. Chiều cao 5. Cân nặng 6. Giới tính: Chỉ cần lưu giá trị ‘F’ (female) hoặc ‘M’ (male) 7. Tuổi 8. Đã lập gia đình? Chỉ cần lưu có (true) hoặc không (false) 9. Địa chỉ email 10. Nghề nghiệp Bài tập 2.2: Nhập, tính toán, xuất Nhập môn lập trình - Cơ bản50  Viết chương trình nhập vào một số nguyên x, tính toán và xuất ra màn hình giá trị các biểu thức sau:  a = ()  b = ()  c = ( 3)( + 1)  d = + 2  e = +  = ( + 2) ( 2)  g = + ( + 1) Bài tập 2.3: Chữ số Nhập môn lập trình - Cơ bản51  Viết chương trình tạo ra một số nguyên ngẫu nhiên gồm 3 chữ số, hãy xác định các chữ số hàng đơn vị, hàng chục và hàng trăm của số nguyên ấy.  Ví dụ: Nhập vào 365  Xuất ra: 3 tram, 6 chuc, 5 don vi.  Gợi ý:  Số hàng đơn vị: a % 10  Số hàng chục: (a % 100) / 10  Số hàng trăm: (a % 1000) / 100  Số hàng ngàn: (a % 10000) / 1000  Số hàng chục ngàn: (a % 100000) / 10000  Số hàng trăm ngàn: (a % 1000000) / 100000 Bài tập 2.4: Thời gian Nhập môn lập trình - Cơ bản52  Viết chương trình nhập vào tổng số giây, quy đổi và xuất ra màn hình ngày, giờ, phút, giây tương ứng.  Ví dụ:  Nhập vào tổng số giây là 90061  Xuất ra: 1 ngày, 1 giờ, 1 phút, 1 giây  Gợi ý:  Tương tự bài 2.3 Bài tập 2.5 – Số ngẫu nhiên Nhập môn lập trình - Cơ bản53  Viết chương trình xuất ra màn hình các số ngẫu nhiên sau  a có giá trị trong khoảng từ 0 đến 89  b có giá trị trong khoảng từ 10 đến 99  c có giá trị trong khoảng từ -30 đến 30  d có giá trị giữa a và b bất kỳ nhập từ bàn phím  Gợi ý:  rand()%10 tạo ra số có giá trị từ 0 đến 9

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_nhap_mon_lap_trinh_chuong_2_cac_thanh_phan_co_ban.pdf
Tài liệu liên quan