Học lập trình với các cấu trúc điều khiển if-else, while, và do-while là một trong những bước đầu tiên và quan trọng nhất. Hãy cùng khám phá chúng qua các ví dụ quen thuộc từ thế giới Dragon Ball nhé!
1. Cấu trúc if-else (Nếu thì - Ngược lại)
Cấu trúc if-else dùng để đưa ra quyết định dựa trên một điều kiện. Nếu điều kiện đúng, một khối lệnh sẽ được thực thi; nếu không, một khối lệnh khác (trong phần else) sẽ được thực thi.
Ví dụ từ Dragon Ball: Goku biến hình Super Saiyan
Giả sử Goku đang chiến đấu và cần biến hình Super Saiyan khi đối thủ quá mạnh.
suc_manh_doi_thu = 8000 # Giả sử sức mạnh của Frieza
suc_manh_goku = 1000 # Sức mạnh hiện tại của Goku
if suc_manh_doi_thu > suc_manh_goku * 5: # Nếu sức mạnh đối thủ lớn hơn 5 lần sức mạnh của Goku
print("Goku: 'Khá lắm! Ta sẽ cho ngươi thấy sức mạnh của Super Saiyan!'")
print("Goku biến hình Super Saiyan!")
suc_manh_goku *= 50 # Sức mạnh Goku tăng lên 50 lần khi biến hình
print(f"Sức mạnh hiện tại của Goku: {suc_manh_goku}")
else:
print("Goku: 'Ngươi chưa đủ trình để ta biến hình!'")
print(f"Sức mạnh hiện tại của Goku: {suc_manh_goku}")
Giải thích chi tiết:
* if suc_manh_doi_thu > suc_manh_goku * 5:: Đây là điều kiện. Chương trình sẽ kiểm tra xem sức mạnh của đối thủ có lớn hơn 5 lần sức mạnh hiện tại của Goku không.
* Khối lệnh trong if: Nếu điều kiện trên đúng (true), tức là đối thủ quá mạnh, các câu lệnh bên trong khối if sẽ được thực thi: Goku sẽ nói và biến hình.
* Khối lệnh trong else: Nếu điều kiện trên sai (false), tức là đối thủ chưa đủ mạnh, các câu lệnh bên trong khối else sẽ được thực thi: Goku sẽ nói rằng đối thủ chưa đủ trình.
2. Cấu trúc while (Trong khi)
Cấu trúc while dùng để lặp đi lặp lại một khối lệnh miễn là một điều kiện vẫn còn đúng. Vòng lặp sẽ tiếp tục cho đến khi điều kiện trở thành sai.
Ví dụ từ Dragon Ball: Goku tập luyện trên hành tinh Yardrat
Goku cần tập luyện để thành thạo dịch chuyển tức thời. Anh ấy sẽ tiếp tục tập luyện cho đến khi thành thạo kỹ năng này.
thao_thao_dich_chuyen = False # Ban đầu Goku chưa thành thạo
so_lan_tap_luyen = 0
print("Goku bắt đầu tập luyện dịch chuyển tức thời trên hành tinh Yardrat...")
while not thao_thao_dich_chuyen and so_lan_tap_luyen < 10: # Miễn là chưa thành thạo VÀ số lần tập luyện chưa quá 10
so_lan_tap_luyen += 1
print(f"Lần tập luyện thứ {so_lan_tap_luyen}: Goku cố gắng dịch chuyển...")
if so_lan_tap_luyen >= 5: # Giả sử sau 5 lần tập luyện, Goku có thể thành thạo
thao_thao_dich_chuyen = True
print("Goku: 'Tuyệt vời! Cuối cùng mình cũng thành thạo Dịch Chuyển Tức Thời!'")
else:
print("Goku: 'Khó quá! Mình vẫn chưa làm được.'")
if not thao_thao_dich_chuyen:
print("Goku: 'Ôi không, mình vẫn chưa thành thạo Dịch Chuyển Tức Thời sau nhiều lần tập luyện.'")
print("Kết thúc quá trình tập luyện.")
Giải thích chi tiết:
* while not thao_thao_dich_chuyen and so_lan_tap_luyen < 10:: Đây là điều kiện lặp. Vòng lặp sẽ tiếp tục chừng nào thao_thao_dich_chuyen còn là False (chưa thành thạo) VÀ so_lan_tap_luyen còn nhỏ hơn 10.
* Khối lệnh trong while: Mỗi lần điều kiện lặp đúng, các câu lệnh bên trong vòng lặp sẽ được thực thi: số lần tập luyện tăng lên, Goku cố gắng dịch chuyển, và kiểm tra xem đã thành thạo hay chưa.
* Khi thao_thao_dich_chuyen trở thành True (do so_lan_tap_luyen >= 5) hoặc so_lan_tap_luyen đạt 10, điều kiện lặp sẽ trở thành False, và vòng lặp sẽ kết thúc.
3. Cấu trúc do-while (Làm rồi - trong khi)
Cấu trúc do-while tương tự như while, nhưng có một điểm khác biệt quan trọng: khối lệnh bên trong do-while sẽ luôn được thực thi ít nhất một lần, trước khi điều kiện được kiểm tra. Sau đó, nó sẽ tiếp tục lặp lại nếu điều kiện vẫn đúng.
Lưu ý: Trong Python, không có cấu trúc do-while trực tiếp. Để mô phỏng do-while, chúng ta thường sử dụng một vòng lặp while True kết hợp với câu lệnh break để thoát khỏi vòng lặp khi điều kiện mong muốn được đáp ứng.
Ví dụ từ Dragon Ball: Vegeta luyện tập để vượt qua giới hạn
Vegeta quyết tâm luyện tập để đạt được sức mạnh cao hơn, ngay cả khi anh ấy đã rất mệt mỏi. Anh ấy sẽ tiếp tục cho đến khi vượt qua giới hạn của mình.
nang_luong_vegeta = 100 # Năng lượng ban đầu
suc_manh_hien_tai = 50000
muc_tieu_suc_manh = 100000 # Mục tiêu sức mạnh
print("Vegeta bắt đầu luyện tập điên cuồng để vượt qua giới hạn...")
while True: # Vòng lặp vô hạn, sẽ thoát bằng break
print(f"Vegeta đang luyện tập với năng lượng: {nang_luong_vegeta}. Sức mạnh hiện tại: {suc_manh_hien_tai}")
nang_luong_vegeta -= 10 # Mỗi lần luyện tập năng lượng giảm
suc_manh_hien_tai += 5000 # Sức mạnh tăng lên
if nang_luong_vegeta <= 0:
print("Vegeta: 'Cơ thể ta đã kiệt sức, nhưng ý chí thì không!'")
print("Vegeta sử dụng Senzu Bean để hồi phục!")
nang_luong_vegeta = 100 # Hồi phục năng lượng
break # Thoát khỏi vòng lặp nếu không có Senzu Bean để tiếp tục
if suc_manh_hien_tai >= muc_tieu_suc_manh:
print("Vegeta: 'Cuối cùng! Ta đã vượt qua giới hạn của mình!'")
break # Thoát khỏi vòng lặp khi đạt mục tiêu
Giải thích chi tiết (mô phỏng do-while):
* while True:: Tạo ra một vòng lặp vô hạn, đảm bảo khối lệnh bên trong sẽ được thực thi ít nhất một lần.
* Khối lệnh bên trong while True: Các hành động luyện tập, giảm năng lượng và tăng sức mạnh của Vegeta diễn ra.
* if nang_luong_vegeta <= 0:: Kiểm tra điều kiện "kiệt sức". Nếu kiệt sức, Vegeta sẽ hồi phục năng lượng và sau đó có thể thoát khỏi vòng lặp (nếu không có Senzu Bean để tiếp tục) hoặc tiếp tục nếu có Senzu Bean.
* if suc_manh_hien_tai >= muc_tieu_suc_manh:: Kiểm tra điều kiện "đạt mục tiêu sức mạnh". Nếu đã đạt, break sẽ kết thúc vòng lặp.
Các cấu trúc if-else, while, và do-while là những công cụ cơ bản và mạnh mẽ giúp bạn điều khiển luồng chương trình, tạo ra các hành vi phức tạp và linh hoạt. Việc hiểu rõ cách hoạt động của chúng là nền tảng vững chắc cho việc học lập trình của bạn!
Bạn muốn tìm hiểu thêm về ví dụ nào khác trong Dragon Ball không?
0 Reviews