Bài giảng môn Nhập môn lập trình - Bài 2: Các thành phần cơ bản
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Nhập môn lập trình - Bài 2: Các thành phần cơ bản", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_mon_nhap_mon_lap_trinh_bai_2_cac_thanh_phan_co_ban.pdf
Nội dung text: Bài giảng môn Nhập môn lập trình - Bài 2: Các thành phần cơ bản
- TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Nhập môn lập trình Các thành phần cơ bản TS. Ngô Hữu Dũng
- Nội dung 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 2 Nhập môn lập trình - Cơ bản
- Ngôn ngữ lập trình C Đượ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 Nhập môn lập trình - Cơ bản
- Trình biên dịch/Trình thông dịch Trình Mã máy Mã nguồn Source biên dịch Machine Source code Code Compiler Code Trình thông dịch Interpreter Executable Input Output Program Input Output Trình biên dịch: Phân tích chương Trình thông dịch: Phân tích và trình và biên dịch thành mã máy. thực thi chương trình cùng lúc. 4 Nhập môn lập trình - Cơ bản
- Biên dịch và chạy chương trình IDE – Integrated Editor Development Environment Source code Trình soạn thảo file.c Biên soạn mã nguồn Trình biên dịch Compiler Phân tích và biên dịch mã nguồn Object code thành mã đối tượng file.obj Trình liên kết Kết hợp các mã Libraries Linker đối tượng và thư Executable code IDE viện thành mã file.exe thực thi (Integrated Development Environment) 5 Nhập môn lập trình - Cơ bản
- Sửa lỗi - debug Lỗi cú pháp Semantic Errors Phát hiện bởi trình biên Syntactic dịch Editor Errors Source code Lỗi về từ khóa, cú pháp, file.c ngữ pháp Lỗi ngữ nghĩa Compiler Được phát hiện bởi người sử dụng Object code file.obj Lỗi về kết quả của chương trình Lỗi xuất hiện trong quá Libraries Linker trình thực thi chương Executable code trình file.exe Đúng cú pháp nhưng sai kết quả 6 Nhập môn lập trình - Cơ bản
- Quiz 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 7 Nhập môn lập trình - Cơ bản
- Định dạng trong C 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 Nhập môn lập trình - Cơ bản
- Lời chú thích 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 Nhập môn lập trình - Cơ bản
- Biế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 Nhập môn lập trình - Cơ bản
- Biến (2) Giá trị của biến có thể thay int year; // Khởi tạo đổi year = 2016;// Gán Khởi tạo biến: int year = 2016; year 2016 Phép gán: Biến Vùng nhớ 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 Kiểu dữ Mỗi ô nhớ có một địa chỉ liệu? riêng 11 Nhập môn lập trình - Cơ bản
- Kiểu dữ liệu 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 Độ chính 1 byte, ví dụ: bool kt = true; //C++ xác? 12 Nhập môn lập trình - Cơ bản
- Số chấm động – floating-point numbers Biểu diễn số thực Ví dụ: 12’345 = 1.2345 x 104 Hay 1.2345E+4 exponent Trị số x hệ cơ số số mũ significand x base Float: Độ chính xác đơn Double: Độ chính xác đôi 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 Nhập môn lập trình - Cơ bản
- Tên biế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 Nhập môn lập trình - Cơ bản
- Quiz – Tên biến Những tên biến nào sau đây đúng hay sai? 1. 1ngoi_sao 2. bienDem1 12. _mot_Ngoi_Sao 3. phepNhân 13. T_T 4. donVi$ 14. ^_^ 5. ngoi_nha 15. edthbdl_mbcln2h 6. int 16. dienTich@ 7. kiem-tra 17. Chu-Vi-Hinh-Tron 8. A&T 18. mayViTinh 9. ___dien___tich 19. Tong+Hieu 10. +hai_so 20. 24gio 11. luy thua 15 Nhập môn lập trình - Cơ bản
- Quiz - khai báo biến 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 16 Nhập môn lập trình - Cơ bản
- Quiz - khai báo biến (tham khảo) 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 Nhập môn lập trình - Cơ bản
- Chuyển đổi kiểu Đặ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 Nhập môn lập trình - Cơ bản
- Chuyển đổi kiểu (2) 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! 19 Nhập môn lập trình - Cơ bản
- Quiz – Chuyển đổi kiểu dữ liệu 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); 20 Nhập môn lập trình - Cơ bản
- Quiz – Chuyển đổi kiểu dữ liệu (1) Chuyển đổi kiểu dữ liệu phù hợp (nếu cần) 1. int a = 13 / 2; 1. int a = 13 / 2; 2. float b = a / 4; 2. float b = (float)a / 4; 3. float c = 10 / a; 3. float c = 10.0 / a; 4. float d = 1 / 5; 4. float d = 1.0 / 5; 5. float e = (3 / 5) * a; 5. float e = (3.0 / 5) * a; 6. float f = (7 + 3) / a; 6. float f = (float)(7 + 3) / a; 7. float g = 5.4 * 3 / a; 7. float g = 5.4 * 3 / a; 8. float h = (a + 3) / 2; 8. float h = (a + 3) / 2.0; 9. float i = (5 / 9) * (a – 32); 9. float i = (5 / 9.0) * (a – 32); 10. float j = a / 2 + 10 / (2 * b); 10. float j = a / 2.0 + 10 / (2 * b); 21 Nhập môn lập trình - Cơ bản
- Hằng số trong C Giá trị không đổi #define a 45 // int #define b 125u // unsigned int suốt chương trình #define c 87l // long int Hằng số có kiểu #define d 23ul // unsigned long int #define e 057 // Cơ số 8 dữ liệu #define f 0xfee // Cơ số 16 Số nguyên #define g 3.14159 // float #define h 314159E-5 // float Số thực #define i 'a' // char Ký tự #define j "morning" // string Chuỗi const int k = 2016; const float l = 2.016; Khai báo hằng số const char m = '4'; #define const char n[] = "afternoon"; #define o 048 /* ERROR! Hệ cơ số 8 const không có số 8 */ #define p 59E // ERROR! #define q .E59 // ERROR! 22 Nhập môn lập trình - Cơ bản
- Toán tử Tăng / Giảm Gán Toán học Luận lý So sánh member increment assignment arithmetic logical comparison access decrement +a a = b -a a += b a + b a -= b a - b a == b a *= b a * b a[b] ++a a != b a /= b a / b !a *a a a b a &= b ~a a || b a->b a a = b a ^= b a | b a >= b a > b 23 Nhập môn lập trình - Cơ bản
- Toán tử gán - assignment 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 phải trên bit: a = a >> b a = a>>2 =0001 = 1 24 Nhập môn lập trình - Cơ bản
- Toán tử toán học - arithmetic 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 RIGHT trên bit c = a>>2 =0001 = 1 25 Nhập môn lập trình - Cơ bản
- Toán tử trên bit – bitwise operations Các phép toán trên bit #include int main() A 0 0 1 1 { int a = 52; // 0011 0100 B 0 1 0 1 int b = 29; // 0001 1101 A & B 0 0 0 1 int c; c = a & b; // 0001 0100 A | B 0 1 1 1 printf("%d & %d = %d\n", a, b, c); A ^ B 0 1 1 0 c = a | b; // 0011 1101 printf("%d | %d = %d\n", a, b, c); ~A 1 1 0 0 c = a ^ b; // 0010 1001 ~B 1 0 1 0 printf("%d ^ %d = %d\n", a, b, c); c = ~a; // 1100 1011 > Cho a = 00110100, a>>2= 00001101 c = a > 2; // 0000 1101 printf("%d >> 2 = %d\n", a, c); return 0; } 26 Nhập môn lập trình - Cơ bản
- Toán tử tăng / giảm - increment / decrement Cho a = 7, b = 2 Phép toán Mô tả Kết quả Cộng a lên một đơn vị trước khi tính a = 8 b = ++a Tương đương: a = a + 1; b = a; b = 8 Trừ a đi một đơn vị trước khi tính a = 6 b = a Tương đương: a = a – 1; b = a; b = 6 Cộng a lên một đơn vị sau khi tính a = 8 b = a++ Tương đương: b = a; a = a + 1; b = 7 Trừ a đi một đơn vị sau khi tính a = 6 b = a Tương đương: b = a; a = a - 1; b = 7 a = 8 Ví dụ: Tương đương: b = 6 c = ++a - b a = a + 1; c = a – b; b = b – 1; c = 1 27 Nhập môn lập trình - Cơ bản
- Độ ưu tiê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 Nhập môn lập trình - Cơ bản
- Quiz – Phép toán 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; } 29 Nhập môn lập trình - Cơ bản
- Quiz – Phép toán (1) 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; } 30 Nhập môn lập trình - Cơ bản
- Toán tử luận lý – logical 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 A && B: False toán là đúng 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à A || B: True sai !A: False !B: True ! Toán tử NOT, thực hiện phép phủ định !A || B: False A && !B: True 31 Nhập môn lập trình - Cơ bản
- Toán tử so sánh – comparison Những phép so sánh #include Cho A = 10, B = 20 int main() Toán tử Mô tả Ví dụ { int A=10, B=20; == Bằng nhau (A == B) sai if (A==B) printf("A = B"); != Khác nhau (A != B) đúng if (A!=B) printf("A ≠ B"); > Lớn hơn (A > B) sai if (A>B) printf("A > B"); if (A =B) printf("A ≥ B"); Lớn hơn >= (A >= B) sai if (A<=B) printf("A ≤ B"); hoặc bằng return 0; Nhở hơn <= (A <= B) đúng } hoặc bằng 32 Nhập môn lập trình - Cơ bản
- Các thư việ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 Nhập môn lập trình - Cơ bản
- Các thư viện (2) 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 34 Nhập môn lập trình - Cơ bản
- Hàm thường dùng ở thư viện stdio.h 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); 35 Nhập môn lập trình - Cơ bản
- Hàm thường dùng ở thư viện stdlib.h 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; 36 Nhập môn lập trình - Cơ bản
- Hàm thường dùng ở thư viện math.h 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 37 Nhập môn lập trình - Cơ bản
- Hàm thường dùng ở thư viện string.h 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 38 Nhập môn lập trình - Cơ bản
- Hàm thường dùng ở thư viện ctype.h 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 39 Nhập môn lập trình - Cơ bản
- Quiz – Tính toán 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) 40 Nhập môn lập trình - Cơ bản
- Quiz – Tính toán (tham khảo) 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)); 41 Nhập môn lập trình - Cơ bản
- Nhập dữ liệu #include Chú ý nhập đúng kiểu dữ liệu int main() Nhập số nguyên { int a; scanf(“%d”, &a); int a; Nhập số thực float b; float b; scanf(“%f”, &b); char c; char s[50]; Nhập ký tự char c; scanf(“%c”, &c); scanf("%d", &a); Nhập chuỗi ký tự scanf("%f", &b); char s[50]; scanf("%c", &c); fflush(stdin); // xoá bộ đệm đầu vào fflush(stdin); gets(s); gets(s); scanf(“%s”, &s); // ký tự trắng . . . return 0; scanf(“%[^\n]s”, &s); // enter } 42 Nhập môn lập trình - Cơ bản
- 1. #include Xuất dữ liệu 2. int main() 3. { Chú ý xuất đúng kiểu 4. int a; float b; dữ liệu 5. char c; char s[50]; Xuất số nguyên 6. scanf("%d", &a); printf(“%d”, a); 7. scanf("%f", &b); Xuất số thực 8. scanf("%c", &c); 9. fflush(stdin); printf(“%f”, b); 10. gets(s); Xuất ký tự printf(“%c”, c); 11. printf("a = %d\n", a); 12. printf("b = %f\n", b); Xuất chuỗi ký tự 13. printf("c = %c\n", c); printf(“%s”, s); 14. printf("s = %s\n", s); 15. return 0; 16. } 43 Nhập môn lập trình - Cơ bản
- Định dạng biểu diễn dữ liệu %[flags][width][.precision][length]specifier 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 Nhập môn lập trình - Cơ bản
- Định dạng biểu diễn dữ liệu %[flags][width][.precision][length]specifier flags Mô tả width Số ký tự tối thiểu được in ra – Canh trái trong width .precision Số ký tự sau dấu chấm động + 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 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 Nhập môn lập trình - Cơ bản
- Minh hoạ biểu diễn dữ liệu 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 Nhập môn lập trình - Cơ bản
- Mã escape Mã escape dùng để đại diện Escape Description cho những ký tự đặc biệt hoặc code những chuỗi, thao tác khó \n newline trình bày trực tiếp \r carriage return \t tab Mã escape được đặt trong \v vertical tab chuỗi định dạng của lệnh \b backspace printf \f form feed (page feed) \a alert (beep) \' single quote (') Ví dụ: printf(“A\tB\n”); \" double quote (") \? question mark (?) \\ backslash (\) 47 Nhập môn lập trình - Cơ bản
- Kết thúc Bài 2 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 Nhập môn lập trình - Cơ bản
- Bài tập 2.1: Biến và kiểu biến 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 49 Nhập môn lập trình - Cơ bản
- Bài tập 2.2: Nhập, tính toán, xuất 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) 50 Nhập môn lập trình - Cơ bản
- Bài tập 2.3: Chữ số 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 51 Nhập môn lập trình - Cơ bản
- Bài tập 2.4: Thời gian 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 52 Nhập môn lập trình - Cơ bản
- Bài tập 2.5 – Số ngẫu nhiên 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 53 Nhập môn lập trình - Cơ bản