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.. 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 tr
Trang 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
Trang 2Mộ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:
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
Trang 350 < 50; Sai
Chia số nguyên và chia lấy số dư (Modulus):
Phép chia số nguyên hơi khác với phép chia thông thường Khi bạn chia 21 với 4, kết quả sẽ là
một số thực có phần thập phân (các kiểu như float, double, long double) Do đó số nguyên ko
có phần thập phân nên phần thập phân sẽ bị bỏ đi Kết quả sẽ là 5.Để lấy số dư, bạn phải thực hiện phép chia lấy dư 21 cho 4 (21 % 4) Kết quả sẽ là 1 Toán tử % cho bạn biết số dư sau một phép chia số nguyên
Ví dụ: Bạn hãy chạy chương trình sau để luyện skill của bạn(nếu ko hiểu đề nghị bạn coi cái bảng
hồng hồng ở dưới)
Trang 4Kế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ếtint 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:
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
Trang 5Toá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
Trang 6Và kết quả xuất ra màn hình như sau:
Thứ tự ưu tiên của các toán tử:
1 Toán tử phân giải phạm vi
(setiosflags(ios::left))
::
2 Toán tử thành viên, toán tử chỉ số, toán tử gọi hàm, toán tử tăng hậu
tố(tiền tố), toán tử giảm hậu tố(tiền tố) [] () ++
3 Toán tử tăng tiền tố, toán tử giảm tiền tố, toán tử lấy phần bù, 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
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
Trang 7Toán tử Ký hiệu Ví dụ
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:
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) // if x is true (nonzero) nghĩa là x chỉ đúng nếu x khác không
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) // 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 != 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 == 0) // if x is zero , câu này tương tự câu if(!x)
Ví dụ: Bạn hãy chạy chương trình sau để luyện skill của bạn.
Trang 8Nếu bạn use file h thì nó phải viết như sau:
bool LaSoNT(int x)
{
if (x < 2)
return false; else
}
}
Toán tử điều kiện: Toán tử điều kiện (?:) là toán tử duy nhất của C++ có ba toán hạng.
Toán tử điều kiện có dạng:
(biểu thức 1) ? (biểu thức 2) : (biểu thức 3)
Bạn có thể đọc lại theo ngôn ngữ bình thường như sau: “Nếu biểu thức 1 là đúng , sẽ trả về giá trị của biểu thức 2, ngược lại sẽ trả về giá trị của biểu thức 3” Giá trị này sẽ được gán vào một biến
Ví dụ: Bạn hãy chạy chương trình sau để luyện skill của bạn.
Trang 9Kế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)
Trang 10Và 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Ù
Trang 11| HOẶC
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ẶCbạ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:
Trang 12Ký 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
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
Trang 13Khi đó kết quả xuất sẽ phải như sau:
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ó
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:
Trang 14Mặ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:
Và kết quả xuất phải như sau:
Trang 15Phâ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:
Trang 16Các toán tử use trong câu lệnh if là: “==”- Bằng, “>”- Lớn hơn, “<”- Nhỏ hơn, “<=”- Nhỏ hơn hoặc bằng, “>=”- Lớn hơn hoặc bằng.
Ví dụ: Bạn Hãy chạy chương trình sau để luyện skill của bạn:
Kết quả xuất phải như sau:
Phân tích code: Tương tự như ở trên tôi đã giải thích
Bạn hãy làm thêm một bài nữa cho skill lên cao hơn:
Trang 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:
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
Trang 18If (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
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ụ:
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.
Trang 19Cá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:
Trang 20Phâ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:
Trang 21sẽ 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.
Câu 17: Phát biểu về câu lệnh if nâng cao?
Bất kỳ câu lệnh nào cũng có thể đc use trong mệnh đề if or else cho dù nó là một câu lệnh if khác Vì thế bạn có thể gặp các câu lệnh if phức tạp có dạng sau đây:
Câu lệnh if cồng kềnh này phát biểu rằng: “ Nếu biểu thức 1 đúng và biểu thức 2 đúng thì câu lệnh 1 sẽ được thực thi Nếu biểu thức 1 đúng nhưng biểu thức 2 ko đúng và nếu biểu thức 3 đúng thì câu lệnh 2 sẽ được thực thi Nếu biểu thức 1 đúng nhưng biểu thức 2 và biểu thức 3 sai thì câu lệnh 3 sẽ được thực thi Cuối cùng nếu biểu thức 1 không đúng thì biểu thức 4 sẽ được thực thi”.Như bạn thấy đấy, các câu lệnh if phức tạp rất dễ gây nhầm lẫn
Bài ví dụ sau đây sẽ cm điều tôi nói ở trên:
Trang 22Và kết quả xuất phải như sau:
Câu 18: Mảng là gì?
Một mảng là một tập hợp các vị trí lưu trữ dữ liệu, mỗi một vị trí lưu trữ dữ liệu thuộc cùng kiểu Mỗi vị trí lưu trữ được gọi là một phần tử của mảng Bạn khai báo một mảng bằng cách viết kiểu
dữ liệu, theo sau là tên mảng và chỉ số Chỉ số sẽ cho biết số lượng các phần tử trong mảng, và
nó được đặt trong dấu ngoặc vuông Ví dụ:
long longArray[25];
Khai báo một mảng có 25 số thuộc kiểu long được đặt tên là longArray Khi trình biên dịch đọc thấy khai báo này, nó sẽ cấp phát bộ nhớ để chứa 25 phần tử Bởi vì mỗi số nguyên kiểu long chiếm 4 byte nên trình biên dịch sẽ cấp 100 byte kế tiếp nhau trong bộ nhớ
Các phần tử của mảng:
Bạn truy cập các phần tử của mảng bằng cách dùng tên mảng và chỉ số Chỉ số của các phần tử trong mảng được đánh số bắt đầu từ 0 Vì vậy, phần tử đầu tiên của mảng sẽ là arrayName[0] Trong ví dụ về mảng longArray của chúng ta ở trên thì longArray[0] là phần tử đầu tiên của mảng, longArray[1] là phần tử thứ 2 và cứ tiếp tục như thế.Bạn có thể bị “Hụt chân” ở phần tử