Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Còn nhớ bài trước chúng ta cùng nói về khái niệm và cách thức sử dụng Mảng trong Java, khi đó mình cũng có nói đến cách thức hiệu quả nhất để duyệt qua các phần tử trong Mảng là dùng vòng lặp for. Hôm nay chúng ta tìm hiểu một “biến thể” khác của for dành riêng cho Mảng, giúp bạn có thể duyệt qua Mảng nhanh hơn, đó là foreach. Và còn một phần nâng cao của Mảng nữa cũng sẽ được nói đến ở bài hôm nay, đó là Mảng nhiều chiều.
Như lời mở đầu mình có nói, foreach là một biến thể của for, vậy tại sao mình không nói về foreach ở bài học về for? Câu trả lời là, đúng là foreach cũng là for – Vì nó là sự kết hợp giữa for và each. Cú pháp của foreach cũng kế thừa từ for, và cách thức hoạt động của foreach dĩ nhiên cũng sẽ giống for rồi. Nhưng foreach lại sinh ra để làm việc chung với Mảng, foreach giúp thi triển các dòng code để duyệt trên mảng được dễ dàng hơn. Chính vì vậy mà foreach luôn được nói kèm với khái niệm về Mảng.
Vậy foreach có quan trọng không? Câu trả lời là, không quan trọng, nên sẽ không bắt buộc bạn phải dùng foreach đâu nhé. Như nói ở câu trả lời trên thì foreach chỉ giúp cho việc thi triển code trên vòng lặp được dễ dàng hơn thôi, bạn hoàn toàn có thể dùng for truyền thống để duyệt qua Mảng mà không cần đến foreach.
Trước hết chúng ta nói về cú pháp của foreach.
for (khai_báo_phần_tử_lặp : mảng) {
các_câu_lệnh;
}
Bạn có thấy giống với for không nào, uhm mình đồng ý, chỉ giống mỗi chữ for. Mặc dù được gọi với cái tên foreach nhưng khi khai báo chúng ta vẫn chỉ cần đến một chữ for.
Nhớ lại một tí, với for bạn cần đưa vào 3 thành phần để định nghĩa các quy luật lặp cho nó, đồng thời giúp bạn kiểm soát chỉ số (index) mà vòng lặp đang thực hiện đến. Còn với foreach, vòng lặp này sẽ tự động biết nó phải đi qua lần lượt các phần tử trong mảng rồi, bạn cũng không cần khai báo hay quan tâm đến chỉ số mà vòng lặp đang thực hiện, nên việc tham số cho vòng lặp này lại trở nên đơn giản hơn for nhiều. Mời bạn làm quen từng thành phần trong cú pháp foreach này.
Chúng ta cùng làm lại Bài thực hành số 1 ở bài Mảng hôm trước và thực hiện lại với foreach ở bài hôm nay. Mình copy lại nội dung bài thực hành hôm trước như sau.
Bạn hãy tạo MẢNG CÁC SỐ NGUYÊN và khởi tạo giá trị cho mảng như sau {3, 5, 7, 30, 10, 5, 8, 23, 0, -5}. Hãy in ra console TỔNG và TRUNG BÌNH CỘNG của các giá trị phần tử trong mảng.
Và đây là code của bài thực hành.
Mặc dù foreach khá hay, mình cũng thích dùng nó, nhưng nên nhớ không phải lúc nào bạn cũng dùng foreach được đâu nhé, và sau đây là các trường hợp ngoại lệ đó.
Đến bước này chắc chắn bạn đã hiểu về khái niệm Mảng. Khi người ta nói tới Mảng, thì có nghĩa họ đang nói đến “Mảng một chiều”. Như bạn biết thì Mảng được xem như một danh sách (cố định) các phần tử trải dài theo một chiều duy nhất. Như minh họa bài trước thì Mảng (một chiều) nó như thế này.
https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Array-Sample-1-1-1.png?resize=300%2C107&ssl=1 300w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Array-Sample-1-1-1.png?resize=1024%2C366&ssl=1 1024w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Array-Sample-1-1-1.png?resize=768%2C275&ssl=1 768w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Array-Sample-1-1-1.png?resize=1536%2C549&ssl=1 1536w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Array-Sample-1-1-1.png?resize=1140%2C408&ssl=1 1140w" data-lazy-loaded="1" sizes="(max-width: 1000px) 100vw, 1000px" loading="eager" style="box-sizing: border-box; height: auto; max-width: 100%; border-style: none; margin: 0px; vertical-align: bottom;">Bạn nghĩ sao nếu có một biểu diễn Mảng theo một chiều mới, khi này Mảng của bạn được gọi là Mảng hai chiều, mà người ta còn gọi là Ma trận. Biểu diễn của Mảng hai chiều sẽ trông như sau.
https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-1-1.png?resize=300%2C268&ssl=1 300w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-1-1.png?resize=1024%2C915&ssl=1 1024w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-1-1.png?resize=768%2C686&ssl=1 768w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-1-1.png?resize=957%2C855&ssl=1 957w" data-lazy-loaded="1" sizes="(max-width: 1000px) 100vw, 1000px" loading="eager" style="box-sizing: border-box; height: auto; max-width: 100%; border-style: none; margin: 0px; vertical-align: bottom;">Tương tự như khai báo Mảng, khai báo một Mảng hai chiều tương tự như vậy nhưng sẽ cần đến hai cặp ngoặc vuông [ ][ ].
kiểu_dữ_liệu[][] tên_mảng;
hoặc
kiểu_dữ_liệu tên_mảng[][];
Chúng ta thử khai báo Mảng hai chiều cho minh họa trên đây.
Cũng như Mảng. Cú pháp cấp phát cho Mảng hai chiều như sau.
tên_mảng = new kiểu_dữ_liệu[số_lượng_dòng][số_lượng_cột];
Vậy với ví dụ khai báo cho Mảng hai chiều ở trên, chúng ta tiến hình cấp phát như sau.
Lại cũng giống như Mảng, Mảng hai chiều cũng có nhiều hình thức khởi tạo. Giả sử mình muốn tạo ra một Mảng hai chiều như hình minh họa trên kia.
Dùng khi bạn biết trước dữ liệu cần khởi tạo cho Mảng hai chiều, như là dữ liệu mình đưa ra trên đây, bạn khởi tạo như sau.
Dùng cách này khi không biết dữ liệu ban đầu như thế nào, về sau tùy logic chương trình mà Mảng hai chiều sẽ được điền dữ liệu từ từ, khi đó bạn phải làm việc với chỉ số của nó. Một lưu ý là với Mảng hai chiều, chỉ số của nó được thể hiện như sau.
https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-2-1.png?resize=300%2C261&ssl=1 300w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-2-1.png?resize=1024%2C891&ssl=1 1024w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-2-1.png?resize=768%2C668&ssl=1 768w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-2-1.png?resize=983%2C855&ssl=1 983w" data-lazy-loaded="1" sizes="(max-width: 1000px) 100vw, 1000px" loading="eager" style="box-sizing: border-box; height: auto; max-width: 100%; border-style: none; margin: 0px; vertical-align: bottom;">Và để làm việc với chỉ số, thì bạn chú ý cách sử dụng chỉ số như khai báo sau nhé.
Cũng giống như Mảng, Mảng hai chiều cũng có thể được khởi tạo bằng vòng lặp for, tất nhiên là bằng cách lồng hai for vào nhau rồi. Dùng cách này cho việc khởi tạo các giá trị cho Mảng hai chiều theo một trật tự nào đó. Bạn hãy xem ví dụ sau.
Bạn có biết code trên đây sẽ tạo ra một Ma trận như thế nào không. Ma trận bạn tạo ra chính là hình minh họa bên dưới.
https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-3-1.png?resize=300%2C268&ssl=1 300w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-3-1.png?resize=1024%2C915&ssl=1 1024w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-3-1.png?resize=768%2C686&ssl=1 768w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Matrix-Sample-3-1.png?resize=957%2C855&ssl=1 957w" data-lazy-loaded="1" sizes="(max-width: 1000px) 100vw, 1000px" loading="eager" style="box-sizing: border-box; height: auto; max-width: 100%; border-style: none; margin: 0px; vertical-align: bottom;">Chắc chắn đến đây bạn đã hiểu rõ Mảng hai chiều hay Ma trận rồi, tuy nhiên nếu có thắc mắc thì hãy để lại bình luận bên dưới bài học này cho mình nhé. Bây giờ chúng ta qua phần thực hành cho Ma trận.
Bài này chúng ta sẽ thử thao tác với Ma trận. Nhưng thay vì khai báo và khởi tạo sẵn một Ma trận, bạn hãy thử nhập chúng từ console xem sao, sẽ rất thú vị đấy, nội dung của bài thực hành này như sau.
Tạo một Ma trận các số nguyên bằng cách.
Với Ma trận do người dùng nhập vào ở trên, thực hiện thao tác sau.
Nếu bạn đã hiểu yêu cầu bài thực hành thì tiến hành code nhé, code xong rồi thì mời bạn so sánh với kết quả của mình bên dưới. Hoan nghênh các bạn chia sẻ những suy nghĩ hoặc những giải thuật của bạn về bài thực hành này ở phần bên dưới bài học.
Đại loại của chương trình khi chạy, và khi tương tác với user sẽ như sau.
https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Screenshot-2022-12-09-at-10.38-1.png?resize=300%2C292&ssl=1 300w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Screenshot-2022-12-09-at-10.38-1.png?resize=1024%2C996&ssl=1 1024w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Screenshot-2022-12-09-at-10.38-1.png?resize=768%2C747&ssl=1 768w, https://i0.wp.com/yellowcodebooks.com/wp-content/uploads/2022/12/Screenshot-2022-12-09-at-10.38-1.png?resize=879%2C855&ssl=1 879w" data-lazy-loaded="1" sizes="(max-width: 1000px) 100vw, 1000px" loading="eager" style="box-sizing: border-box; height: auto; max-width: 100%; border-style: none; margin: 0px; vertical-align: bottom;">Phần râu ria còn lại của bài học hôm nay mình xin gom hết vào đây, mình chỉ nói qua một lượt mà không có thực hành, cũng không cần các bạn phải hiểu rõ, vì phần này nói về các thể loại Mảng còn lại trong Java mà hầu như chúng ta sẽ không dùng đến nó. Sự thật là mình chưa bao giờ dùng đến các thể loại này, nhưng biết đâu được ở đâu đó bạn sẽ chạm trán với nó, vậy thì hãy thử xem qua nó là gì nhé.
Vâng Mảng hai chiều đã đủ làm bạn chóng mặt, nay còn có cái thể loại Mảng ba chiều, thậm chí Mảng bốn chiều,… nhưng khoan khoan… bạn không cần phải dùng đến Mảng nhiều chiều quá vậy đâu, hãy thử xem với Mảng ba chiều thì thao tác trên mảng sẽ như sau, đủ để bạn nản lòng rồi đấy.
Ặc cái thể loại mảng này, mình cũng tránh xa. Cơ bản là mảng này được biểu diễn không “đều”, chẳng hạn như bạn có một Ma trận có m dòng, mà mỗi dòng lại có n cột khác nhau.
Chưa có câu hỏi nào cho bài này.