Bài giảng Ngôn ngữ lập trình C/C++ - Trần Đăng Hưng - Chương 1: Giới thiệu
Chương trình C chỉ bao gồm các modules được gọi là hàm (Function)
Có thể tự viết các hàm
Sử dụng các hàm trong thư viện chuẩn
Tránh phát minh lại bánh xe (avoid re-inventing the whell)
Tránh việc tự viết các hàm đã có trong thư viện
Các hàm trong thư viện chuẩn thường được viết cẩn thận và hiệu quả
BÀI GIẢNG NGÔN NGỮ LẬP TRÌNH C/C++ TS. Trần Đăng Hưng Khoa Công Nghệ Thông Tin Email: hungtd@hnue.edu.vn Nội Dung Chương 1: Giới thiệu Chương 2: Các cấu trúc điều khiển Chương 3: Hàm (functions) Chương 4: Mảng (arrays) Chương 5: Con trỏ (pointers) Chương 6: Kí tự và xâu (characters and strings) Chương 7: Cấu trúc và file (structures and files) Chương 8: Tiền xử lý (preprocessors) Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Hình thức đánh giá Dự lớp 30 % Bài thi cuối khóa 70% Trắc nghiệm 40% Thực hành trên máy 60% Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Tài liệu tham khảo và trình biên dịch Sách Ngôn ngữ lập trình C – Quách Tuấn Ngọc Ấ Kỹ thuật lập trình C – Phạm Văn t Trình biên dịch TC 3.0 (giao diện giống Pascal) Visual C++ (windows) (li ) gcc nux Dev-C++ (windows) Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Chương 1: Giới thiệu Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Lịch sử ngôn ngữ lập trình C Ra đời vào khoảng năm 1970, viết bởi Dennis Ritchie tại phòng thí nghiệm Bell. Ra đời dưới sự ảnh hưởng của các ngôn ngữ trước đó: BCPL (1967) và B (1970). Được dùng để viết hệ điều hành Unix Độc lập với phần cứng (khả chuyển) Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Chuẩn C (standard C) Có rất nhiều phiên bản C ANSI C (American National Standards Institute): 1989 Các phiên bản update vào năm 1995 (C95), 1999 (C99) C và C++ C là bả ở ộ ủ C để hỗ lậ ì h h ớ đối ++ n m r ng c a trợ p tr n ư ng tượng và thiết kế các phần mềm lớn. C không hẳn là một phần của C++, nhưng có thể sử dụng cả C à C hằ hiế kế h ì h li h hv ++ n m t t c ương tr n n ọat. Nên thành thạo C trước khi học C++. Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Thư viện chuẩn C Chương trình C chỉ bao gồm các modules được gọi là hàm (function) ể ế Có th tự vi t các hàm Sử dụng các hàm trong thư viện chuẩn Tránh phát minh lại bánh xe (avoid re inventing the wheel) ☺ - Tránh việc tự viết các hàm đã có trong thư viện Các hàm trong thư viện chuẩn thường được viết cẩn thận và hiệu quả Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Các pha của chương trình C Soạn thảo chương trình (edit) Đặt tên file có đuôi là .c (vidu.c, b i1 )a .c,… Tiền xử lý (preprocess) Biên dịch (compile) Link Load Excute Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Một chương trình C đơn giản -Ví dụ 1: In một dòng chữ ra màn hình- Lời giải thích Đặt trong cặp dấu /* …. */ Trình biên dịch sẽ bỏ qua Được dùng để chú thích cho các dòng lệnh Chỉ dẫn tiền biên dịch #include - sử dụng các hàm vào/ra Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN . . Cần biết hàm nào nằm trong thư viện chuẩn nào Một chương trình C đơn giản -Ví dụ 1: In một dòng chữ ra màn hình- Một chương trình C có thể có 1 hoặc nhiều hàm, nhưng buộc phải có hàm main() ấ ể ố Cặp d u {} th hiện các kh i (block) chương trình, thân các hàm luôn được đặt trong cặp {} Lệnh printf() đưa nội dung ra màn hình Kí tự \n đưa con trỏ xuống 1 dòng mới Hàm int main(), nên phải có lệnh return trả về một số nguyên, return 0; - hàm kết thúc bình thường. Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Hàm printf() và các kí tự điều khiển Hàm printf(s): đưa nội dung của s ra màn hình, s có thể là hằng xâu kí tự, biến, hoặc biểu thức. ố ằ Một s h ng kí tự đặc biệt: \n – đưa con trỏ xuống dòng \r – đưa con trỏ về đầu dòng \t – đưa con trỏ đến vị trí tab tiếp theo \a – bật 1 tiếng chuông \\ đ kí t \ - ưa ra ự \” – đưa ra kí tự “ Ví dụ: thay đổi hàm printf() trong ví dụ 1. Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Ví dụ 2: Cộng hai số Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Nhập dữ liệu – scanf() scanf(“%d”, &integer1) Đợi người dùng nhập giá trị, rồi gõ phím Enter ế Lưu giá trị vào bi n ở bên phải toán tử Đổi giá trị được nhập sang kiểu dữ liệu của biến = (toán tử gán) Gán giá trị cho biến T á tử h i ôi Bi t o n a ng - nary opera or Ví dụ: sum = variable1 + variable2; Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Biến và cách đặt tên biến Biến (variables) Tương ứng với các vùng trong bộ nhớ máy tính ỗ ế ể M i bi n có tên, ki u, kích thước, và giá trị Khi biến được gán một giá trị mới, giá trị cũ bị ghi đè Đọc giá trị của các biến trong bộ nhớ không làm thay đổi các biến trong bộ nhớ Quy tắc đặt tên biến Chuỗi ký tự (chữ cái a z A Z .. , .. , chữ số 0..9, dấu gạch dưới _ ) Không được bắt đầu bằng chữ số Phâ biệt hữ h hữ th ờ Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN n c oa c ư ng. Khai báo biến Trước khi sử dụng các biến thì phải khai báo nó. Cách khai báo: Kiểu_dữ_liệu tên_biến; hoặc Kiểu dữ liệu tên biến = giá trị đầu;_ _ _ _ Khai báo nhiều biến cùng kiểu thì các biến cách nhau bởi dấu phẩy Ví dụ: int a; double n = 10; Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN float m = 10, p = 20; Các kiểu dữ liệu chuẩn Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Các phép toán Các phép toán số học Cộng/trừ: + - Phép nhân: * Ví dụ x = x + 2; Phép chia: / Phép chia lấy dư: % Q tắ tiê y = x / 4; x = x % 10; uy c ưu n Các phép toán trong ngoặc được tính trước Các ngoặc lồng nhau, các phép toán ở bên trong nhất được tính t ớ hấtrư c n Tiếp theo là các phép nhân, chia, và phép lấy số dư Các phép toán được tính từ trái sang phải à í ố ù Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Cộng v trừ được t nh cu i c ng Các phép toán được tính từ trái sang phải Ví dụ: thứ tự ưu tiên các phép toán Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Các phép toán logic Toán tử “và”: && Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Toán tử “hoặc”: || Các phép toán trên bit Toán tử: & - phép toán AND Toán tử: | - phép toán OR Toán tử: ~ - phép đảo ngược bit Toán tử: << - dịch bit sang trái á To n tử: >> - dịch bit sang phải Ví dụ: x = 10; y = x y = 24 x = 14; y = x >> 2; => y = 3 Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN x = 9; y = 7; z = x % y; => z = 2 Các phép toán rút gọn Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Các phép toán rút gọn Ví dụ x = 10; y = 20; x += y; => x = 30 x = 4; x *= 2; => x = 8 Sự khác nhau giữa ++x và x++ ++x: giá trị của x sẽ tăng lên 1 đơn vị TRƯỚC khi thực hiện b ể h ó ủ i u t ức c mặt c a x. x++: giá trị của x sẽ tăng lên 1 đơn vị SAU khi thực hiện biểu thức có mặt của x. Ví dụ: x = 10; y = ++x + 2; => x = 11; y = 13 x = 10; y = x++ + 2; => x = 11; y = 12 Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN x = 10; y = 20; z = 2 * (++x – y++); => x = 11; y = 21; z = -18 Các đặc tả của hàm printf() Để đưa nội dung của các biến (hoặc biểu thức) ra màn hình phải có các chỉ dẫn cụ thể cho từng loại dữ liệu. Ví dụ: int x = 20; printf(“x = %d”, x); float x = 15.5; printf(“x = %f”, x); float x = 10; printf(“x = %6.2f”, x); int x = 10; y = 15.5; printf(“x = %6d, y = %6.2f”,x,y); Cá kí đặ ả c tự c t %d (hoặc %i) int %c char %f float %lf double Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN %s string %x hexadecimal Các đặc tả của hàm scanf() Để nhập các giá trị vào cho các biến cần phải có chỉ dẫn kiểu dữ liệu cho từng biến. Ví dụ: ố ê à í Nhập hai s nguy n int từ b n ph m printf(“Cho hai so nguyen a,b: “); scanf(“%d%d”,&a,&b); Nhập một số int và một số float từ bàn phím printf(“Cho so nguyen a va so thuc b: ”); scanf(“%d%f”,&a,&b); Chú ý: Khi nhập xâu kí tự thì không có dấu & trước biến, vì bản thân tên xâu đã là con trỏ. printf(“Cho mot xau ki tu: “); scanf(“%s”,st); Các kí tự đặc tả cho từng kiểu dữ liệu giống trong hàm printf() Chú ý: Hàm printf() và scanf() đều nằm trong thư viện , nên đầu chương trình phải khai báo thư viện bằng lệnh: #include Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN Bài tập tại lớp Bài 1.1: Viết chương trình in ra màn hình các câu chào khác nhau, mỗi câu trên một dòng. ế ố Bài 1.2: Vi t chương trình nhập vào 2 s nguyên dương rồi đưa ra: tổng, tích, hiệu của 2 số đó. Bài 1 3: Giả sử ta có x = 10; y = 20; z = 30; Hãy cho . biết giá trị các biểu thức sau Bt1 = 2*(x – y++) + z*(++z – x*y); Bt2 = (--x + --y + z--) * 2 + ++y*2; Bt3 = (x << 2) + (y | 3 + z | 8) + 2; Bt4 = ((x == y) && (x != z)) Wednesday, April 04, 2012Ngôn ngữ lập trình C © T.Đ.Hưng – ĐHSPHN
File đính kèm:
- Bài giảng Ngôn ngữ lập trình CC++ - Trần Đăng Hưng - Chương 1 Giới thiệu.pdf