intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

ĐỀ CƯƠNG BÀI TẬP C++

Chia sẻ: Luong Thanh Binh | Ngày: | Loại File: DOC | Số trang:45

297
lượt xem
71
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bao gồm các bài tập liên quan, từ cơ bản đến phức tạp, tăng theo cấp độ tiếp thu của người học, giúp các bạn học tốt bộ môn lập trình C ++

Chủ đề:
Lưu

Nội dung Text: ĐỀ CƯƠNG BÀI TẬP C++

  1. Đề Cương Bài Tập C++ Đề nghị các bạn học thuộc hết lý thuyết ở trên này rồi mới bắt đầu làm bài tập vì như thế các bạn sẽ hiểu và nhớ lâu hơn!!!. Câu 1: Sự khác biệt giữa một trình xử lý văn bản và một bộ xử lý từ là gì? Một trình xử lý văn bản sẽ tạo ra các file dạng thô chỉ chứa ký tự mã ASCII (plain text) trong chúng. Chúng không có các lệnh định dạng hoặc các biểu tượng nào khác được yêu cầu bởi bộ xử lý từ. Các file văn bản không tự động ngắt từ in đậm, in nghiêng,… Câu 2: Hỏi #include sẽ thực hiện chức năng gì? Đây là một chỉ thị tiền xử lý và nó sẽ hoạt động khi bạn gọi trình biên dịch. Chỉ thị đặc biệt này làm cho file có tên sau từ khóa include được đọc vào giống như nó được nhập vào tại vị trí đó trong mã nguồn của bạn. Câu 3: Hỏi: Sự khác biệt giữa các chú giải kiểu // và các chú giải kiểu /* */ là gì? Dấu chú giải // sẽ hết hiệu lực ở cuối dòng. Các chú giải /* có hiệu lực cho đến khi nào có một chú giải đóng */. Câu 4:Hỏi: Sự khác biệt giữa một chú giải tốt và một chú giải không tốt là gì? Một chú giải tốt sẽ thông báo cho người đọc biết mục đích của một đoạn mã phức tạp. Một chú giải không tốt trình bày lại những gì mà một đoạn mã đang thực hiện. Câu 5: Biến là gì? Trong C++, biến là nơi để lưu trữ thông tin. Câu 6: Lập trình là gì? Lập trình thực chất là điều khiển – bằng một ngôn ngữ lập trình cụ thể - các xử lý thông tin trên máy tính điện tử theo yêu cầu của bài toán đặt ra. Kết quả của lập trình là chương trình được hợp thức hóa. Câu 7: Chương trình là gì? Một chương trình (program) có thể được định nghĩa là một tập hợp lệnh do người lập trình tạo nên hoặc một phần mềm có khả năng thực thi. Câu 8: Con trỏ là gì? Con trỏ là một biến lưu trữ một địa chỉ của bộ nhớ. Câu 9: Toán tử là gì? Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 1
  2. Một toán tử là một ký hiệu yêu cầu trình biên dịch thực hiện một hành động. Các toán tử hoạt động trên các toán hạng, và trong C++ tất cả các toán hạng đều là biểu thức. Trong C++ có nhiều loại toán tử khác nhau. Hai trong các loại này là: • Toán tử gán. • Toán tử toán học. Câu 10: Hãy liệt kê các ký hiệu toán tử trong C++? Toán tử gán (Assignment Operator): Ký hiệu là “=” chuyển kết quả của các toán hạng bên vế phải của toán tử gán sang toán hạng bên trái của toán tử gán. Biểu thức x = a + b; . Biểu thức này sẽ gán kết quả của phép cộng a và b sang toán hạng x. Toán hạng hợp lệ ở vế trái của toán tử gán được gọi là lvlue (left value). Toán hạng ở bên vế phải của toán tử gán được gọi là rvalue (right value). Các hằng số luôn là rvalue. Chúng ko thể là lvalue. Vì thế bạn có thể viết: X = 35; // ok Nhưng bạn ko thể viết 35 = X; // error, not an lvalue! Giải thích: Lvalue là một toán hạng nằm ở bên trái của toán tử gán. Rvalue là một toán hạng nằm ở bên phải của toán tử gán. Toán tử toán học: Có năm toán tử toán học: cộng(+), trừ(-), nhân(*), chia(/) và phép chia lấy dư(%). Phép cộng và phép trừ sẽ thực hiện đúng những gì mà bạn đã biết. Tuy nhiên phép trừ với các số nguyên không dấu (unsigned) có thể sẽ dẫn đến những kết quả đáng ngạc nhiên. Ví dụ: Cho Kq = 105, Bạn hãy use các toán tử làm sao cho kết quả bằng 5. Trả lời: Dùng %= để tính toán ta có: Kq %= 10; Câu lệnh này có nghĩa là lấy Kq / 10 = 10.5 và lấy phần dư, ở đây dư 0.5 thì kết quả sẽ là 5. Lưu ý là Kq phải ở dạng int or unsigned thì mới được. Toán tử quan hệ: Toán tử Ví dụ Kết quả Tên Bằng == 100 == 50; Sai 50 == 50; Đúng Không bằng != 100 != 50; Đúng 50 != 50; Sai Lớn hơn > 100 > 50; Đúng 50 > 50; Sai Lớn hơn hoặc bằng >= 100 >= 50; Đúng Nhỏ hơn < 100 < 50; Sai Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 2
  3. 50 < 50; Sai Nhỏ hơn hoặc bằng
  4. Kết quả phải như sau: Kết hợp toán tử gán và toán tử toán học: Việc cộng một giá trị vào một biến, và sau đó gán kết quả ngược lại biến này là một vấn đề rất phổ biến. Nếu bạn có một biến myAge và bạn muốn tăng giá trị của nó lên hai thì bạn có thể viết int myAge = 5; int temp; temp = myAge + 2; // add 5+2 and put it in temp myAge = temp; // put it back in myAge Tuy nhiên phương pháp này rất phức tạp. Trong C++, bạn có thể đặt cùng một biến trên cả hai vế của toán tử gán, như vậy đoạn mã trên trở thành: int myAge = 5; myAge = myAge + 2; Trong C++, câu lệnh thứ hai được đọc là “ Cộng hai vào giá trị của myAge và gán kết quả vào myAge”. Có một cách viết khác đơn giản hơn nhưng có thể hơi khó đọc: myAge += 2; Toán tử cộng tự gán (+=) sẽ cộng rvalue và lvalue sau đó gán lại kết quả vào lvalue. Toán tử này đọc là “cộng – bằng”. Câu lệnh trên được đọc là myAge cộng bằng 2”. Nếu myAge có giá trị là 4 thì nó sẽ có giá trị là 6 sau câu lệnh này. Ngoài ra chúng ta còn có các toán tử trừ(-=), chia(/=), nhân(*=) và chia lấy số dư(%=) tự gán. Phép tăng và phép giảm: Giá trị phổ biến nhất để tăng (hoặc giảm) và sau đó gán lại vào một biến là 1. Trong C++, việc tăng giá trị lên một được gọi là phép tăng, và việc giảm bớt giá trị đi 1 được gọi là phép giảm. Có những toán tử đặc biệt để thực hiện những thao tác này. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 4
  5. Toán tử tăng sẽ cộng thêm 1 vào giá trị của biến, Và toán tử giảm (--) sẽ trừ giá trị của biến đi 1. Vì thế, nếu bạn có một biến C, và bạn muốn tăng nó bạn có thể thực hiện câu lệnh sau: C++; // Start with C and increment it. Câu lệnh trên tương đương với câu lệnh C = C + 1; Và cũng tương đương với câu lệnh C += 1; Tiền tố và hậu tố: Cả hai toán tử tăng và toán tử giảm đều có hai loại khác nhau là tiền tố và hậu tố. Tiền tố được viết trước tên biến (++myAge) và hậu tố được viết sau tên biến(myAge++). Toán tử tiền tố được thực hiện trước khi gán và toán tử hậu tố được thực hiện sau khi gán. Về ngữ nghĩa thì tiền tố là tăng(or giảm) giá trị của biến rồi sau đó mới sử dụng giá trị này. Còn hậu tố thì sử dụng giá trị này trước rồi sau đó mới tăng(or giảm). Nếu x là một số nguyên có giá trị là 5 và bạn viết int a = ++x; thì trình biên dịch sẽ tăng x (lúc này x = 6) và sau đó sử dụng giá trị gán vào a. Như vậy bây giờ a là 6 và x là 6. Nếu sau khi thực hiện điều này bạn viết int b = x++; thì trình biên dich sử dụng giá trị trong x(6) và gán nó sang b, sau đó tăng x. Như vậy bây giờ b là 6 nhưng x là 7. Nếu bạn sử dụng việc gia tăng hậu tố ví dụ như x++ thì việc gia tăng sẽ xảy ra sau khi in(sau khi bạn sử dụng cout). Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 5
  6. Và kết quả xuất ra màn hình như sau: Thứ tự ưu tiên của các toán tử: Thứ tự Tên toán tử Toán tử Toán tử phân giải phạm vi 1 :: (setiosflags(ios::left)) Toán tử thành viên, toán tử chỉ số, toán tử gọi hàm, toán tử tăng 2 . [] () ++ -- hậu tố(tiền tố), toán tử giảm hậu tố(tiền tố). Toán tử tăng tiền tố, toán tử giảm tiền tố, toán tử lấy phần bù, 3 ++ -- ~ ! + - & () phép đảo, cộng một ngôi, trừ một ngôi, toán tử lấy địa chỉ, toán tử lấy nội dung, toán tử ép kiểu. Phép nhân, chia, chia lấy số dư 4 */% Toán tử cộng, toán tử trừ 5 +- Toán tử dịch chuyển 6 > Các toán tử so sánh không bằng 7 < >= Toán tử bằng, toán tử không bằng 8 == != Phép và từng bit 9 & Phép hoặc loại trừ từng bit 10 ^ Phép hoặc từng bit 11 | Phép và luận lý 12 && Phép hoặc luận lý 13 || Toán tử điều kiện 14 ?: Các toán tử gán 15 = *= /= %= += -= < >= &= |= ^= Toán tử logic: Thông thường bạn muốn hỏi nhiều câu hỏi quan hệ ở cùng một thời điểm. “Có đúng là x lớn hơn y và có đúng là y lớn hơn z hay không?” Một chương trình có thể cần xác định nhiều điều kiện để thực hiện một hoạt động. Có ba toán tử logic trong C++ và chúng được liệt kê trong bảng sau đây. Toán tử Ký hiệu Ví dụ biểuthức_1 && biểuthức_2 AND && Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 6
  7. biểuthức_1 || biểuthức_2 OR || ! biểuthức NOT ! AND: Toán tử logic AND sẽ trả về giá trị là đúng nếu cả hai biểu thức đều đúng. Như vậy biểu thức trong câu lệnh if sau đây: if ((x == 5) && (y == 5)) Sẽ có giá trị là đúng nếu x và y đều bằng 5, và là sai nếu x or y không bằng 5. Chú ý rằng toán tử logic AND được ký hiệu là &&. Còn & là ký hiệu của toán tử lấy địa chỉ (toán tử VÀ tôi trình bày ở bên dưới ). OR: Toán tử logic OR trả về giá trị là đúng nếu một trong hai biểu thức này là đúng. Như vậy biểu thức trong câu lệnh if sau đây: if ((x == 5) || (y == 5)) Có giá trị là True nếu x hoặc y bằng 5 hoặc cả hai đều bằng 5. Ký hiệu của toán tử logic OR là ||. Biểu tượng | là ký hiệu của toán tử hoặc. NOT: Toán tử logic NOT trả về giá trị là đúng nếu biểu thức được kiểm tra là sai. Như vậy: if (!(x == 5) là đúng chỉ khi x không bằng 5. Câu lệnh này hoàn toàn có thể viết lại là: if (x != 5) // Đọc là “Nếu x không bằng 5 thì đúng”. Toán tử != là toán tử không bằng (bạn coi bảng hồng hồng ở trên). Đúng và Sai: Trong C++, 0 là sai và bất kỳ giá trị nào khác đều là đúng(bạn chỉ nên sử dụng 1 là đúng cho đỡ nhầm lẫn). Bởi vì một biểu thức luôn luôn có một giá trị nên nhiều nhà lập trình C++ tận dụng tính năng này trong các câu lệnh if của họ. Một câu lệnh chẳng hạn như: // if x is true (nonzero) nghĩa là x chỉ đúng nếu x khác không if (x) x = 0; câu lệnh trên được đọc như sau: “Nếu x ≠ 0(if(x)), thì gán giá trị cho x là 0(x = 0)”. Sẽ làm cho bạn dễ hiểu hơn nếu nó được viết lại là: if (x != 0) // if x is nonzero x = 0; cả hai câu lệnh trên đều hợp lệ nhưng câu sau rõ ràng hơn vì bạn có thể thấy được là nó khác không(x != 0). Hai lệnh sau tương đương với nhau: // if x is false (zero), bạn có thể hiểu như sau: Nó trái với câu “if(x) hay if(x ! if (!x) = 0)”, ở đây nó nói là “Nếu x = 0, thì câu lệnh này là sai và không được thực thi(không gán cho x một giá trị nào hết). // if x is zero , câu này tương tự câu if(!x) if (x == 0) Ví dụ: Bạn hãy chạy chương trình sau để luyện skill của bạn. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 7
  8. Nếu bạn use file .h thì nó phải viết như sau: bool LaSoNT(int x) { if (x < 2) return false; else { int m = (int)sqrt((double)x); for(int k = 2; k
  9. Kết quả xuất phải như sau: Phân tích code: Ba biến kiểu int được tạo ra là: x, y và z. Hai biến đầu tiên được người sử dụng cung cấp giá trị. Câu lệnh if trên dòng 16 sẽ kiểm tra xem giá trị nào lớn hơn và gán giá trị đó cho z. Giá trị này được in trên dòng 20 . Toán tử điều kiện trên dòng 22 thực hiện phần kiểm tra tương tự và gán cho z giá trị lớn hơn. Dòng 22 có thể đọc theo ngôn ngữ bình thường như sau: “Nếu x lớn hơn y, sẽ gán giá trị của x cho z, ngược lại sẽ gán giá trị của y cho z”. Giá trị của z sẽ được in ra trên dòng 23. Như bạn có thể thấy, câu lệnh sử dụng toán tử điều kiện là một câu lệnh tương đương nhưng ngắn gọn hơn so với câu lệnh if…else. Ví dụ: Bạn hãy chạy chương trình sau để luyện skill của bạn(minh họa cho if…else như nói ở trên). Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 9
  10. Và kết quả xuất phải như sau: Phân tích code: Các dấu ngoặc móc trên dòng 15 và 18 làm cho tất cả các câu lệnh có trong nó trở thành một câu lệnh duy nhất và bây giờ else trên dòng 19 sẽ gắn với if ở dòng 14 như dự định. Nếu bạn nhập vào số 20 thì biểu thức trong câu lệnh if trên dòng 14 là đúng, tuy nhiên, biểu thức trong câu lệnh if trên dòng 16 là sai nên sẽ không có thông báo nào được in. Tốt hơn là bạn hãy tự mình đặt một mệnh đề else khác sau dòng 17 để nắm bắt được các lỗi và in ra một thông báo. Cuối cùng là các toán tử thao tác trên bit: Gồm có 4 toán tử là : Toán tử VÀ, toán tử HOẶC, toán tử HOẶC LOẠI TRỪ, toán tử LẤY PHẦN BÙ. Ký hiệu Toán tử & VÀ Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 10
  11. HOẶC | HOẶC LOẠI TRỪ (XOR) ^ LẤY PHẦN BÙ ~ Toán tử VÀ: Là một dấu &, trái với toán tử logic AND có hai dấu &&. Khi bạn &(VÀ – bạn nhớ là có 1 toán tử và ghi bằng tiếng anh là “AND” nó có đến 2 dấu ngoặc (&&) còn VÀ ở đây ghi theo tiếng việt là “VÀ” và nó có 1 dấu ngoặc(&), bạn nên chú ý kỹ chỗ này) hai bit, kết quả là 1 nếu cả hai bit đều là 1, và là 0 nếu 1 trong 2 bit hoặc cả hai bit là 0. Toán tử HOẶC: Là một dấu | (bạn đừng nhầm nó với toán tử logic OR như tôi đã trình bày ở trên vì nó có tới hai dấu thanh đứng ||, bạn coi nó như cái ống nước cho dễ nhớ, còn toán tử HOẶC bạn coi nó như cái cây là ok cả thôi. Toán tử HOẶC LOẠI TRỪ (còn được gọi là XOR – ko như hai cái ở trên ko được xài tiếng anh) : Toán tử thứ ba là toán tử hoặc loại trừ (^). Khi bạn XOR hai bit, kết quả sẽ là 1 nếu hai bit khác nhau. Toán tử LẤY PHẦN BÙ: Toán tử lấy phần bù (~) sẽ tắt các bit được bật và sẽ bật các bit bị tắt trong một số. Nếu giá trị hiên hành 1010 0011 thì phần bù của số đó là 0101 1100. Câu 11: Biểu thức là gì? Là Bất kỳ câu lệnh nào trả về một giá trị Câu 12: Hàm là gì? Hàm là một chương trình con có thể hoạt động trên dữ liệu và trả về một giá trị. Câu 13: Bạn Hãy in ra ký tự dựa trên số(Từ 32 -> 127)? Bạn dựa vào bài toán này để xác định ký tự đó là số mấy trong bảng mã ASCII(American Standard Code for Information Interchange) mà khỏi mất công dùng Hợp ngữ trong Debug để kiếm từng chữ.Nếu bạn muốn xuất ký tự xuất hiện từ số 1 thì chỉ việc thay đổi i = 1 là ok. Kết quả xuất phải như sau: Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 11
  12. Ký tự in đặc biệt: Trình biên dịch C++ nhận dạng được một số ký tự đặc biệt dùng để định dạng. Bảng 3.2 trình bày các ký tự phổ biến nhất. Bạn sẽ đưa những ký tự này vào mã bằng cách gõ dấu \(còn được gọi là ký tự thoát- Escape character) và một ký tự. Như vậy để đưa một ký tự tab vào mã bạn sẽ gõ dấu \ và ký tự t, tất cả được đặt trong dấu nháy đơn. char tabCharacter = ‘\t’; Ví dụ này khai báo một biến char (tabCharacter) và khởi gán nó với giá trị \t (tab). Các ký tự in đặc biệt được sử dụng khi in ra màn hình hoặc ra một file hay một thiết bị xuất khác. Các ký tự thoát: Ký tự Ý nghĩa Xuống dòng ‘\n’ ‘\t’ Tab Dịch trái ‘\b’ ‘\’’’ Nháy đôi Nháy đơn ‘\’’ Dấu chấm hỏi ‘\?’ Dấu gạch ngược ‘\\’ Kêu một tiếng bíp ‘\a’ Xóa ký tự bên trái ‘\b’ ‘\f’ Sang trang Trở về đầu dòng ‘\r’ ‘\v’ Tab theo hàng Bạn hãy chạy chương trình sau để luyện skill của bạn: Hãy chú ý kỹ những chỗ cần các ký tự đặc biệt và bạn sẽ thấy sự quan trọng của nó khi trình diễn lên màn hình cmd. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 12
  13. Khi đó kết quả xuất sẽ phải như sau: Hằng ký hiệu(Symbolic Constant): Một hằng ký hiệu là một hằng được đại diện bằng một tên gọi giống như một biến. Tuy nhiên không giống như một biến, sau khi hằng được khởi gán, giá trị của nó không thể thay đổi. Nếu chương trình của bạn có hai biến tên là students và classes thì bạn có thể tính được tổng số sinh viên một khi bạn đã biết số lượng lớp và biết rằng có 15 sinh viên trong một lớp: students = classes * 15; Notice: Dấu * biểu thị phép nhân. Trong ví dụ này, 15 là một hằng trực kiện. Mã của bạn sẽ dễ đọc và dễ bảo trì hơn nếu bạn thay giá trị này bằng một hằng ký hiệu: students = classes * studentsPerClass; Nếu sau này bạn quyết định thay đổi số sinh viên trong mỗi lớp, bạn chỉ cần thay đổi nơi bạn đã định nghĩa hằng studentsPerClass mà không cần phải thực hiện thay đổi ở những vị trí mà bạn use nó. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 13
  14. Có hai cách để khai báo một hằng ký hiệu trong C++. Theo phương cách cũ chúng ta use chỉ thị tiền xử lý #define: #define studentsPerClass 15 Chú ý rằng studentsPerClass không thuộc kiểu dữ liệu cụ thể nào. #define chỉ đơn giản thực hiện việc thay thế văn bản, mỗi khi bộ tiền xử lý thấy từ studentsPerClass, nó sẽ thay bằng 15. Bởi vì bộ tiền xử lý hoạt động trước trình biên dịch nên trình biên dịch nên trình biên dịch của bạn sẽ không bao giờ thấy hằng số studentsPerClass, nó chỉ thấy số 15. Mặc dù #define hoạt động tốt nhưng việc định nghĩa hằng số với từ khóa const sẽ thuận lợi hơn: const unsigned short int studentsPerClass = 15; Ví dụ này cũng khai báo một hằng ký hiệu có tên là studentsPerClass, nhưng lần này studentsPerClass được xem là thuộc kiểu dữ liệu unsigned short int. Phương pháp này có nhiều ưu điểm trong việc làm cho mã dễ bảo trì hơn và tránh các lỗi. Sự khác biệt lớn nhất là hằng này có kiểu dữ liệu. Chính vì điều này nên trình biên dịch có thể buộc nó phải sử dụng theo đúng kiểu dữ liệu của nó. Hằng liệt kê: Các hằng liệt kê( enumerated constant ) giúp bạn tạo ra các kiểu dữ liệu mới và sau đó giúp bạn định nghĩa biến của những kiểu dữ liệu này, giá trị của những kiểu dữ liệu này được giới hạn trong một tập hợp giá trị hợp lý. Ví dụ sau đây minh họa cho điều này: Hoặc ví dụ sau đây: Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 14
  15. Và kết quả xuất phải như sau: Phân tích mã nguồn: Trên dòng 9, kiểu dữ liệu Days được định nghĩa với 7 giá trị bắt đầu từ 0. Người dùng được yêu cầu nhập vào một ngày trên dòng 14. Giá trị do người dùng chọn, một số giữa 0 và 6, được so sánh với giá trị của các hằng liệt kê Sunday và Saturday trên dòng 13.(1) Câu lệnh if: Thông thường, chương trình của bạn sẽ thực hiện từng dòng một theo đúng trật tự trong mã nguồn của bạn. Câu lệnh if cho phép bạn kiểm tra điều kiện(chẳng hạn hai biến có bằng hay không) và rẽ đến các đoạn mã khác nhau tùy thuộc vào kết quả của biểu thức điều kiện. Dạng đơn giản nhất của câu lệnh if là: if (biểu thức) Câu lệnh; Biểu thức trong các dấu ngoặc đơn có thể là một biểu thức nào đó bất kỳ nhưng thường thì nó là một biểu thức quan hệ. Nếu biểu thức có giá trị là 0 (sai) thì câu lệnh sẽ được bỏ qua. Nếu nó có một giá trị không phải 0, thì câu lệnh được thực hiện. Hãy chú ý ví dụ sau đây: if (bigNumber > smallNumber) bigNumber = smallNumber; Mã này so sánh bigNumber và smallNumber. Nếu bigNumber lớn hơn, dòng thứ hai sẽ lấy giá trị của smallNumber gán cho nó. Bởi vì khối lệnh chứa trong các dấu ngoặc móc hoàn toàn tương đương với một câu lệnh nên bạn có thể sử dụng cú pháp sau đây: if (biểu thức) { Câu lệnh 1; Câu lệnh 2; Câu lệnh 3; } Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 15
  16. Các toán tử use trong câu lệnh if là: “==”- Bằng, “>”- Lớn hơn, “
  17. Ở đây bạn không nên sài thẳng tên ra như tôi mà nên gọi hai đội bóng chày này là a & b, vì nó quá dài dòng rất bất tiện. Kết quả xuất như sau: Phân tích Code: Chương trình này yêu cầu người dùng nhập điểm cho hai đội bóng chày, điểm được lưu trong các biến số nguyên. Các biến được so sánh với nhau trong câu lệnh if trên dòng 14, 16, 21. Nếu tỉ số của đội này cao hơn đội kia, một thông báo sẽ được in ra. Nếu tỉ số bằng nhau, đoạn mã từ dòng 21 -> 32 sẽ được thực hiện. Chú ý rằng, nếu tỉ số của Yankees ban đầu cao hơn tỉ số của Red Sox thì biểu thức trên câu lệnh if trên dòng 14 sẽ có giá trị là false, và dòng 15 không được thực hiện. Biểu thức kiểm tra trên dòng 16 sẽ có giá trị là true và các câu lệnh trên dòng 18, 19 sẽ được gọi. Sau đó biểu thức trong câu lệnh if trên dòng 21 được kiểm tra, và nó có giá trị là False. Như vậy chương trình sẽ bỏ qua toàn bộ khối lệnh này và chuyển đến dòng 33 để xuất câu lệnh trong này ra màn hình và đi đến dòng 35 để kết thúc. Trong ví dụ này, việc biểu thức trong một câu lệnh if có giá trị là đúng sẽ không làm dừng việc kiểm tra các câu lệnh if khác. Các cách thụt đầu dòng: Mặc dù có rất nhiều cách để canh chỉnh các dấu ngoặc móc ở câu lệnh if nhưng 3 kiểu sau đây là được use phổ biến nhất. Đặt dấu ngoặc đầu tiên sau biểu thức điều kiện và căn chỉnh dấu ngoặc móc đóng bên dưới if để đóng khối lệnh. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 17
  18. If (biểu thức) { Các câu lệnh; } // Khuyến cáo không nên use Canh chỉnh các dấu ngoặc móc dưới if và thụt đầu dòng các câu lệnh. if (biểu thức) { Các câu lệnh; } // Được use phổ biến nhất vì nó được Visual Studio 2005 hỗ trợ. Thụt đầu dòng các dấu ngoặc móc và các câu lệnh. if ( biểu thức) { Các câu lệnh; } Bạn cũng nên use cách này vì nó làm cho vị trí bắt đầu và kết thúc của khối lệnh được rõ ràng. Bây giờ ta quay lại (1) để phân tích mã nguồn tiếp. Bạn không thể nhập “Sunday” vì chương trình không biết cách dịch Sunday thành một giá trị . Câu 14: Câu lệnh là gì? Trong C++, một câu lệnh có thể điều khiển trình tự thực thi, xác định giá trị của một biểu thức, hoặc không làm gì cả (câu lệnh NULL). Tất cả các câu lệnh của C++ đều kết thúc bằng dấu “;” (trừ lệnh tạo ra một hằng số - #define MAX 100 thì không có dấu “;” sau nó) . Câu 15: Khối lệnh là gì? Ở bất kỳ vị trí nào bạn cũng có thể đặt một câu lệnh thì bạn cũng có thể đặt một khối lệnh. Một khối lệnh sẽ bắt đầu bằng một dấu ngoặc móc mở ({) và một dấu ngoặc móc đóng (}). Mặc dù mỗi câu lệnh trong khối lệnh phải được kết thúc bằng một dấu “;”, nhưng bản thân khối đó sẽ không kết thúc bằng một dấu “;”. Ví dụ: { temp = a; a = b; b = temp; } Khối mã này sẽ hoạt động như một câu lệnh và sẽ trao đổi giá trị trong hai biến a và b. Bạn nên sử dụng dấu ngoặc đóng (}) bất cứ khi nào bạn có một dấu ngoặc móc mở ({). Phải nên nhớ kết thúc câu lệnh bằng dấu “;”. Hãy use khoảng trắng để câu lệnh được rõ ràng hơn. Notice: Các ký tự khoảng trắng (khoảng trống, tab và ký tự xuống dòng) không thể nhìn thấy được. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 18
  19. Các biểu thức: Bất kỳ những gì có giá trị đều được xem là giá trị trong C++. Một biểu thức sẽ trả về một giá trị. Vì thế 3+2 sẽ trả về giá trị 5 và nó là một biểu thức. Tất cả các biểu thức đều là các câu lệnh. Có rất nhiều mã được gọi là biểu thức có thể làm bạn ngạc nhiên. Sau đây là hai ví dụ: 3.2 // return the value 3.2 PI // float const that returns the value 3.14 Giả sử rằng PI là một hằng số có giá trị là 3.14, cả hai câu lệnh trên đều là biểu thức. Biểu thức phức tạp: X = a+b; Không chỉ cộng a và b và gán kết quả vào x, mà còn trả về giá trị của phép gán đó (giá trị của x). Như vậy câu lệnh này cũng là một biểu thức. Bởi vì nó là một biểu thức nên nó có thể ở vế bên phải của một toán tử gán: Y = X = a+b; Bạn hãy làm tiếp ví dụ sau để lên skill thêm một chút: Và kết quả xuất phải như sau: Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 19
  20. Phân tích Code: Trên dòng 8, bốn biến được khai báo và được khởi gán, các giá trị của chúng được in trên dòng 9 và 10. Trên dòng 11 a được gán giá trị là 9, còn trên dòng 12 b được gán giá trị là 7. Trên dòng 9, tổng của a và b được gán cho x. Biểu thức này (x = a+b) sẽ trả về một giá trị (tổng của a và b) và gán giá trị cho y. Câu 16: All về else? Thông thường, chương trình của bạn sẽ thực hiện một đoạn mã lệnh nếu biểu thức điều kiện là đúng, và thực hiện một đoạn lệnh khác nếu biểu thức điều kiện có giá trị là sai. Trong bài tập RedSoxScore vs YankeesScore bạn muốn in một thông báo (Go Sox!) nếu biểu thức (RedSoxScore> YankeesScore) có giá trị là True, và một thông báo khác (Go Yanks!) nếu nó có giá trị là False. Từ khóa else có thể làm cho mã dễ đọc hơn: if (biểu thức) Các câu lệnh; else Các câu lệnh; Bài EG dưới đây sẽ chứng minh điều tôi nói ở trên: Phân tích Code: Biểu thức điều kiện trong câu lệnh if trên dòng 13 sẽ được kiểm tra. Nếu biểu thức có giá trị là đúng thì câu lệnh trên dòng 14 sẽ thực hiện. Nếu xóa mệnh đề else trên dòng 13, thì câu lệnh trên dòng 14 sẽ thực hiện bất kể biểu thức có giá trị là True hay False. Nên nhớ rằng câu lệnh if sẽ kết thúc sau dòng 14 . Nếu else ko có ở đó thì dòng 16 sẽ là dòng lệnh kế tiếp được thực thi trong chương trình. Lương Thanh Bình – Khoa Công Nghệ Thông Tin – Đại Học Đà Lạt 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2