Chào mừng các bạn học viên trẻ! Hôm nay chúng ta sẽ tìm hiểu về các cấu trúc điều khiển trong lập trình máy tính. Các cấu trúc điều khiển giống như các biển báo giao thông cho một chương trình máy tính. Chúng cho biết hướng đi và việc cần làm tiếp theo. Giống như bạn tuân theo các quy tắc ở nhà hoặc trường học, máy tính tuân theo các cấu trúc điều khiển khi chạy một chương trình.
Cấu trúc điều khiển là một tập hợp các hướng dẫn cho máy tính biết cách lựa chọn giữa các bước khác nhau khi thực hiện một chương trình. Nó quyết định xem máy tính có nên tiếp tục theo cùng một thứ tự hay đưa ra quyết định làm điều gì đó khác.
Hãy tưởng tượng bạn đang làm theo một công thức. Công thức sẽ cho bạn biết từng bước: đầu tiên, trộn bột và nước; sau đó, thêm một quả trứng; tiếp theo, khuấy; và cuối cùng, nướng hỗn hợp. Trong máy tính, các cấu trúc điều khiển hoạt động theo cách tương tự. Chúng giúp máy tính biết lệnh nào sẽ đến tiếp theo và quyết định nào cần đưa ra khi có các lựa chọn.
Có ba loại cấu trúc điều khiển chính mà bạn sẽ tìm hiểu hôm nay. Đó là:
Cấu trúc điều khiển tuần tự yêu cầu máy tính thực hiện theo các hướng dẫn lần lượt theo một thứ tự cố định. Không có quyết định nào được đưa ra trong điều khiển tuần tự. Mỗi bước diễn ra theo một hàng, giống như khi bạn thực hiện theo một tập hợp các hướng dẫn đơn giản.
Ví dụ, hãy nghĩ về thói quen buổi sáng hàng ngày của bạn:
Mỗi hoạt động diễn ra lần lượt theo một thứ tự rõ ràng. Trong lập trình, điều này được gọi là thực thi tuần tự . Máy tính đọc lệnh đầu tiên, sau đó là lệnh thứ hai và sau đó là lệnh thứ ba.
Nếu chúng ta nghĩ đến một chương trình giả đơn giản để làm bánh sandwich, nó có thể trông như thế này:
Bước 1: Lấy hai lát bánh mì.
Bước 2: Phết bơ lên một lát bánh mì.
Bước 3: Đặt phô mai lên trên bơ.
Bước 4: Ghép hai lát bánh lại với nhau. Thưởng thức bánh sandwich của bạn nhé!
Giống như chiếc bánh sandwich bạn làm, máy tính thực hiện từng hướng dẫn một.
Cấu trúc điều khiển lựa chọn cho phép máy tính đưa ra lựa chọn. Chúng hoạt động như một ngã ba đường hoặc một cuốn sách "tự chọn cuộc phiêu lưu". Máy tính xem xét một điều kiện hoặc một quy tắc, sau đó quyết định con đường nào để đi theo.
Ví dụ, hãy nghĩ về việc lựa chọn mặc gì vào buổi sáng. Bạn có thể quyết định: "Nếu trời mưa, tôi sẽ mặc áo mưa. Nếu trời nắng, tôi sẽ mặc áo phông". Đây là quyết định giúp bạn chuẩn bị cho thời tiết. Trong lập trình, máy tính sử dụng các câu lệnh if , else if và else để đưa ra quyết định.
Một ví dụ mã đơn giản bằng ngôn ngữ dễ hiểu trông như thế này:
Nếu trời mưa thì in "Mang theo ô".
Nếu không , hãy in ra "Không cần ô".
Điều này có nghĩa là: nếu điều kiện (mưa) là đúng, thì thực hiện hành động (mang ô). Nếu không, hãy thực hiện hành động khác.
Hãy sử dụng một ví dụ khác. Hãy tưởng tượng bạn đang chơi một trò chơi và có một quy tắc nói rằng, "Nếu bạn ghi được 10 điểm, bạn thắng!" Quy tắc này giống như một cấu trúc kiểm soát lựa chọn. Trò chơi kiểm tra xem điểm của bạn có bằng 10 không. Nếu có, nó tuyên bố bạn là người chiến thắng. Nếu không, nó tiếp tục chơi.
Cấu trúc lựa chọn giúp máy tính xử lý các quyết định chỉ có một vài câu trả lời khả thi. Chúng nói với máy tính, "Làm điều này nếu nó đúng, và nếu không, hãy làm điều khác."
Cấu trúc điều khiển lặp lại yêu cầu máy tính thực hiện một việc gì đó lặp đi lặp lại. Điều này được gọi là hành động lặp lại hoặc lặp lại. Khi bạn cần lặp lại một tác vụ nhiều lần, lặp lại được sử dụng.
Hãy nghĩ đến lúc bạn đếm số quả táo trong một giỏ. Bạn có thể đếm: 1, 2, 3, 4, 5, v.v. Bạn bắt đầu bằng một số và tiếp tục đếm cho đến khi đến số cuối. Điều này tương tự như cách máy tính sử dụng vòng lặp.
Có hai loại vòng lặp phổ biến trong lập trình:
Vòng lặp for được sử dụng khi bạn biết bạn muốn lặp lại điều gì đó bao nhiêu lần. Ví dụ, nếu bạn muốn hát cùng một câu trong một bài hát 5 lần, bạn có thể sử dụng vòng lặp for:
Đối với (đếm từ 1 đến 5), hãy hát câu: "Chúc mừng sinh nhật!"
Máy tính sẽ hiển thị "Chúc mừng sinh nhật!" năm lần vì nó lặp lại bước này 5 lần.
Vòng lặp while được sử dụng khi máy tính phải tiếp tục lặp lại một điều gì đó miễn là điều kiện là đúng. Ví dụ, nếu bạn đang thổi một quả bóng bay, bạn có thể tiếp tục thổi cho đến khi quả bóng đủ lớn. Quy tắc có thể là: "Trong khi quả bóng chưa lớn, hãy tiếp tục thổi không khí vào nó."
Câu này tương tự như câu: While (quả bóng nhỏ), tiếp tục thổi. Khi quả bóng đủ lớn, dừng vòng lặp.
Đây là một ví dụ đơn giản khác sử dụng ý tưởng vòng lặp: Hãy tưởng tượng bạn thích vỗ tay. Bạn quyết định vỗ tay cho đến khi bạn vỗ tay 10 lần. Bạn có thể nói: Lặp lại "Vỗ tay" 10 lần. Trong một chương trình, máy tính sẽ đếm từng lần vỗ tay và sẽ dừng lại khi đạt đến 10 lần vỗ tay.
Cấu trúc điều khiển rất quan trọng trong lập trình. Chúng giúp tổ chức các tác vụ trong chương trình để chương trình hoạt động chính xác. Nếu không có chúng, máy tính sẽ không biết cách đưa ra quyết định hoặc lặp lại hành động.
Sau đây là một số lý do tại sao cấu trúc kiểm soát lại đóng vai trò quan trọng:
Chúng ta hãy xem xét một số ví dụ từ cuộc sống hàng ngày phản ánh cấu trúc điều khiển trong lập trình.
Ví dụ về điều khiển tuần tự:
Hãy tưởng tượng bạn đang chuẩn bị đi học. Đầu tiên, bạn thức dậy. Sau đó, bạn rửa mặt. Tiếp theo, bạn mặc quần áo. Cuối cùng, bạn ăn sáng. Đây là một chuỗi các hành động mà bạn thực hiện lần lượt. Trong lập trình máy tính, điều khiển tuần tự được sử dụng khi mỗi lệnh được thực hiện mà không có điều kiện.
Ví dụ về Kiểm soát lựa chọn:
Hãy xem xét quyết định bạn đưa ra khi chọn quần áo. Nếu thời tiết lạnh, bạn mặc áo len ấm. Nếu thời tiết nóng, bạn mặc áo phông. Quá trình ra quyết định này tương tự như cách máy tính sử dụng câu lệnh "nếu". Máy tính kiểm tra thời tiết (điều kiện) rồi chọn lựa trang phục phù hợp (hành động).
Ví dụ về Kiểm soát lặp lại:
Hãy tưởng tượng bạn đang làm một việc vặt, như cất đồ chơi. Bạn có thể có nhiều đồ chơi để nhặt. Thay vì nghĩ về từng món đồ chơi một, bạn chỉ cần lặp lại cùng một hành động: nhặt một món đồ chơi, bỏ vào hộp đồ chơi và chuyển sang món đồ chơi tiếp theo cho đến khi tất cả được nhặt. Đây là một hành động lặp lại, giống như một vòng lặp trong lập trình.
Đôi khi, các cấu trúc điều khiển có thể được đặt bên trong nhau. Đây được gọi là cấu trúc điều khiển lồng nhau . Điều này xảy ra khi một quyết định hoặc vòng lặp nằm bên trong một quyết định hoặc vòng lặp khác. Hãy tưởng tượng một trò chơi mà bạn đưa ra lựa chọn ở nhiều bước. Ví dụ, trước tiên bạn có thể quyết định đi sang trái hay sang phải. Nếu bạn chọn sang trái, sau đó bạn có thể phải đối mặt với một lựa chọn khác: "Bạn sẽ leo lên đồi hay đi vòng qua đồi?" Mỗi lựa chọn là một quyết định nhỏ và chúng được lồng vào nhau.
Trong mã hóa, lồng nhau cho phép máy tính xử lý các tác vụ phức tạp hơn. Ngay cả một trò chơi hoặc ứng dụng đơn giản cũng có thể có nhiều lớp quyết định và vòng lặp. Khi các lớp này hoạt động cùng nhau, chương trình có thể đưa ra quyết định thông minh hơn và làm những điều thú vị hơn.
Ví dụ, hãy tưởng tượng một chương trình giúp bạn lập kế hoạch cho một buổi dã ngoại. Đầu tiên, chương trình có thể hỏi, "Thời tiết có đẹp không?" Nếu câu trả lời là có, chương trình sẽ hỏi, "Bạn có đủ thức ăn không?" Nếu bạn trả lời có lần nữa, chương trình sẽ nói, "Tuyệt! Đến giờ đi dã ngoại rồi!" Nếu bất kỳ câu trả lời nào là không, chương trình sẽ gợi ý một kế hoạch khác. Việc ra quyết định lồng nhau này giúp máy tính hiểu rõ hơn về các lựa chọn của bạn.
Khi một chương trình máy tính chạy, nó sẽ tuân theo các hướng dẫn bạn đã đưa ra theo một thứ tự cụ thể. Hãy nghĩ đến một chương trình đơn giản hiển thị lời chào trên màn hình máy tính. Chương trình có thể thực hiện các thao tác sau:
Bước 1: Khởi động chương trình.
Bước 2: Kiểm tra thời gian trong ngày.
Bước 3: Nếu thời gian là buổi sáng, hãy hiển thị "Chào buổi sáng!"
Bước 4: Nếu lúc đó là buổi chiều, hãy hiển thị "Chào buổi chiều!"
Bước 5: Nếu lúc đó là buổi tối, hãy hiển thị "Chào buổi tối!"
Bước 6: Kết thúc chương trình.
Trong chương trình này, có một trình tự rõ ràng. Cũng có một quyết định về việc hiển thị gì trên màn hình. Máy tính sử dụng cấu trúc điều khiển lựa chọn (các câu lệnh if-else ) để đưa ra quyết định đó.
Tiếp theo, hãy tưởng tượng bạn đang chơi một trò chơi máy tính đơn giản, trong đó bạn cần thu thập tiền xu. Chương trình có thể sử dụng một vòng lặp để kiểm tra mỗi lần bạn thu thập một đồng xu. Nó sẽ đếm tiền xu của bạn khi bạn thu thập chúng. Khi bạn thu thập tất cả các đồng xu, trò chơi kết thúc. Ở đây, vòng lặp là cấu trúc điều khiển lặp lại quá trình đếm.
Cấu trúc điều khiển không chỉ được sử dụng trong các bài tập ở trường hoặc các chương trình nhỏ. Chúng được sử dụng trong nhiều ứng dụng thực tế mà chúng ta thấy hàng ngày. Sau đây là một số ví dụ thú vị:
Những ví dụ này cho thấy cấu trúc điều khiển có ở khắp mọi nơi! Chúng giúp các thiết bị và chương trình hiện đại hoạt động trơn tru nhất có thể, giúp cuộc sống của chúng ta dễ dàng và thú vị hơn.
Hãy cùng viết một ví dụ mã giả đơn giản. Mã giả là một cách lập kế hoạch cho các chương trình bằng những từ ngữ đơn giản trông giống như mã.
Ví dụ: Một công cụ ra quyết định đơn giản cho đồ ăn nhẹ
Hãy tưởng tượng bạn muốn quyết định xem nên ăn táo hay chuối làm đồ ăn nhẹ. Bạn có thể viết các quy tắc như thế này:
Nếu bạn đói và muốn ăn thứ gì đó ngọt thì hãy chọn một quả táo.
Còn nếu bạn đói và muốn ăn thứ gì đó mềm thì hãy chọn chuối.
Nếu không , hãy ngồi xuống và suy nghĩ về điều bạn muốn.
Mã giả này cho máy tính biết: Trước tiên hãy kiểm tra xem bạn có muốn thứ gì đó ngọt không. Nếu đúng, hãy chọn một quả táo. Nếu không, hãy kiểm tra thứ gì đó khác, như chuối chẳng hạn. Nếu không có lựa chọn nào khớp, hãy dành chút thời gian để quyết định.
Có thể hữu ích khi nghĩ về các cấu trúc kiểm soát như một bản đồ. Hãy tưởng tượng một bản đồ kho báu đơn giản. Bản đồ có một con đường được đánh dấu với các bước được viết theo thứ tự. Khi bạn đến một ngã ba đường, bản đồ sẽ cho bạn biết phải đi theo hướng nào dựa trên một manh mối từ kho báu. Đôi khi, bản đồ sẽ cho bạn biết đi theo cùng một con đường nhiều lần cho đến khi bạn đến được kho báu. Tất cả các hướng dẫn này giúp bạn tìm đúng đường.
Tương tự như vậy, máy tính sử dụng các bước tuần tự để theo dõi bản đồ, lựa chọn để chọn đúng đường đi tại ngã ba và lặp lại để lặp lại các tác vụ cho đến khi đạt được mục tiêu. Bằng cách sử dụng các cấu trúc điều khiển, chúng ta có thể cho máy tính biết chính xác cách tiếp cận "kho báu" của nó - kết quả chính xác.
Chúng ta hãy cùng xem lại những ý tưởng quan trọng đã học hôm nay: