Câu lệnh điều khiển trong C#

Sharing is caring!

Đặt một câu hỏi như thế này nhé. Nếu có sẳn chương trình “Giải Phương trình Bậc 2”, vậy ta có thể giải luôn “Phương Trình Bặc 1” trong đây luôn được không? Hay muốn in ra màn hình 1000 lần câu “I Love You” mà không cần phải viết 1000 lần cầu lệnh in màn hình không? Câu trả lời là có, và câu lệnh điều khiển sẽ giúp các bạn.

Vậy câu lênh điều khiển là gì? Đơn giản, câu lệnh điều khiển là các câu lệnh giúp lập trình viên “bẻ lái” chương trình của mình sao cho thích hợp với các giá trị của dữ liệu đầu vào hoặc giá trị dữ liệu phát sinh trong quá trình một chương trình nó đang chạy. C# cho chúng ta các loại câu lệnh điều khiển như sau:

  • Câu lệnh rẽ nhánh – If
  • Câu lệnh lựa chọn – switch … case
  • Câu lệnh vòng lặp
  • Câu lệnh break và continue

1. Câu lệnh rẽ nhánh – if:

Trong câu lệnh rẽ nhánh, ta có các loại như sau:

if

Nếu điền kiện trả về (sử dụng toán tử logic) là:

true: chương trình sẽ thực hiện các lệnh trong khối ngoặc { }

false: bỏ qua, không thực hiện.

Chú ý: Nếu trong khối lệnh if chỉ có một câu lệnh thì ta không cần dấu ngoặc { } (như dòng 2, 3 trong ví dụ trên)

if … else

Khác với khối if, true thì thực hiện, false thì bỏ qua. Thì với if … else nếu điền kiện logic là:

true: thực hiện các lệnh trong đấu ngoặc { } của if, cụ thể là Statement-1

false: thực hiện các lệnh trong đấu ngoặc { } của else, cụ thể là Statement-2

if … else if [… else if] … else

Nếu chúng ta có nhiều hơn 2 lựa chọn thì sử dụng khối lệnh if … else if [… else if] … else

Tới đây thì đã có bài tập cho các bạn làm rồi đấy  Overjoy

 

2. Câu lệnh lựa chọn switch … case:

 

Cách dùng switch … case cũng giống như if … else if [… else if] … else nhưng khác một điểm là: các bạn để ý nhé, cứ mỗi một value của từng case mà thỏa cái expression của switch thì nó thực hiện các lệnh bên trong nó và cuối cùng phải có lệnh break để kết thúc cái case đó và thoát ra khối lệnh switch … case.

Nếu như không có lệnh break thì nó sẽ nhảy xuống trường hợp kế tiếp để thực hiện. Nếu không có value nào thỏa expression thì nó nhảy vào default luôn sau đó mới thoát khối lệnh switch … case

 

3. Câu lệnh vòng lặp

Chúng ta thường sử dụng các vòng lặp sau: for, while, do … while

for:

Nếu condition còn là true thì Statement sẽ còn được thực hiện. Vòng lặp sẽ dừng nếu Condition là false hoặc dùng lệnh break;

Đơn giản

Với đoạn code trên thì:

Initializer là int i = 0; Condition là i < 10; IterationExpr là i++. Theo như hình vẽ thì:

  1. Đầu tiên vòng lặp for sẽ kiểm tra xem i có nhỏ hơn 10 hay không, lúc này i=0 nhỏ hơn 1000.
  2. Tiếp theo là nó sẽ thực hiện câu lệnh Console.Writeline(“I Love You”);
  3. Sau đó nó sẽ tăng giá trị i lên 1 bằng lệnh i++, rồi quay lên bước 1 để kiểm tra i tiếp và cứ như thế cho đến khi i có giá trị là 1000 thì lúc này điều kiện i < 1000 là false, khi đó vòng lặp for kết thúc.

Cho đếp phức tạp:

lồng if trong for:

lồng switch … case trong for:

while:

  • Trong khi condition còn là true thì Statement được thực hiện. Nếu condition là false hoặc gặp câu lệnh break; thì dừng và thoát khỏi vòng lặp.
  • Đối với vòng lặp while thì nó kiểm tra condition trước khi thực hiện.

Condition là z > 0. Nếu i vẫn còn lớn hơn 0 thì thực hiện vòng lặp.

Đoạn code trên thực hiện như sau:

  1. Đầu tiên z có giá trị là 5, kế tiếp vòng lặp while sẽ kiểm tra xem z có lớn hơn 0 hay không, lúc này z=5 lớn hơn 0.
  2. Thực hiện lệnh Console.WriteLine(z); Sau đó thực hiện lệnh z -= 1 để giảm giá trị z xuống còn 4.
  3. Tiếp tục quay lên bước 1 kiểm tra tiếp z có lớn hơn 0 hay không cho đến khi lệnh z -= 1 giảm giá trị xuống còn 0 thì lúc này condition z > 0 là false, khi đó vòng lặp while dừng lại và giá trị z in ra mằn hình là từ 5 4 3 2 1.

Một ví vụ khác, Secret Number:

do … while:

 

  • Thực hiện Statement trong khi Condition là true. Nếu condition là false hoặc gặp lệnh break; thì dừng.
  • do … while thì ngược với while là nó thực hiện Statement ít nhất 1 lần rồi mới kiểm tra condition.
  • Các bạn chú ý cái dấu ; màu đỏ sau đóng ngoặc của condition nhé, không có là nó báo lỗi đấy.

Condition là k < 10.

Đoạn code này nó chạy như vậy nè các bạn:

  1. Đầu tiên nó thực hiện câu lệnh Console.WriteLine(k++); và đồng thời tăng giá tri k thêm 1 bằng lệnh k++.
  2. Rồi sau đó nó mới kiểm tra k xem có nhỏ hơn 10 hay không, lúc này k=1 vẫn nhỏ hơn 10.
  3. Tiếp tục quay lên bước 1 thực hiện câu lệnh Console.WriteLine(k++); và lại tăng k thêm 1 cho đến khi k có giá trị là 10 thì vòng lặp dừng.

Viết lại ví dụ Secret Number:

4. Break và Continue:

  • Break: dùng để thoát khỏi vòng lặp hoặc kết thúc một case của switch.
  • Continue: dùng để bỏ qua những dòng lệnh sau nó và tiếp tục vòng lặp.

Break:

Continue:

Để tiện cho việc viết code, tui giới thiệu các bạn một số hàm tính toán và hàm nhập xuất console:

Nhập xuất màn hình:

Sử dụng lớp Console trong namespace System

Console.Write() In một chuỗi ra màn hình
Console.WriteLine() In một chuỗi ra màn hình, kết thúc chuỗi là ký tự xuống dòng
Console.Read() Đọc một ký tự được nhập từ bàn phím
Console.ReadLine() Đọc một chuỗi ký tự được nhập từ bàn phím

 

Để Convert các giá trị nhập vào từ bàn phím. Chúng ta dùng lớp Convert:

Convert.ToInt16() Convert.ToDouble()
Convert.ToInt32() Convert.ToBoolean()
Convert.ToInt64() Convert.ToString()
Convert.ToFloat() Convert.ToChar()

 

Tính toán:

Sử dụng lớp Math cũng trong namespace System:

Math.Abs(x) Lấy trị tuyệt đối của x
Math.Max(x, y) Trả về giá trị lớn hơn
Math.Min(x, y) Trả về giá trị nhỏ hơn
Math.Sqrt(x) Lấy căn bậc 2 của x
Math.Pow(x, n) Lũy thừa bậc n của x
Math.Round() Làm tròn số
Math.Floor(x) Làm tròn dưới
Math.Ceiling(x) Làm tròn trên

BÀI TẬP:

Bài 01: Viết chương trình tìm số lớn nhất giữa 3 số thực x, y, z được nhập từ bàn phím.

Bài 02: Nhập 2 số thực x, y. Kiểm tra xem chúng cùng dấu hay trái dấu.

Bài 03: Giải phương trình bậc 1 ax + b = 0 với a, b là các số thực được nhập từ bàn phím.

Bài 04: Giải phương trình bậc 2 ax2 + bx + c = 0 với a, b, c là các số thực được nhập từ bàn phím. Xét luôn cả trường hợp phương trình bậc 1.

Bài 05: Nhập một tháng có giá trị từ 1 – 12. Cho biết tháng đó thuộc quý mấy.

Bài 06: Viết chương trình nhập ngày, tháng, năm. In ra màn hình ngày kế tiếp (ngày, tháng, năm)

Bài 07: Viết chương trình nhập ngày, tháng, năm. In ra màn hình ngày trước đó (ngày, tháng, năm)

Bài 08: Viết chương trình nhập ngày, tháng, năm. Tính xem ngày đó là ngày thứ bao nhiêu trong năm.

Bài 09: Nhập vào một số nguyên có giá trị từ 10 – 99999. In ra màn hình cách đọc số này.

Bài 10: Nhập số n > 0. Tính S(n) = 1 + 2 + 3 + … + n.

Bài 11: Nhập số n > 0. Tính S(n) = 12 + 22 + 32 + … + n2.

Bài 12: Nhập số n > 0. Tính S(n) = 1 + 1/2 + 1/3 + … + 1/n.

Bài 13: Nhập số n > 0. Tính S(n) = 1/2 + 1/4 + … + 1/2n.

Bài 14: Nhập số n > 0. Tính S(n) = 1+ 1/3 + 1/5 + … + 1/(2n+1).

Bài 15: Nhập số n > 0. Tính S(n) = 1/(1*2) + 1/(2*3) + … + 1/(n*(2n+1)).

Bài 16: Nhập số n > 0. Tính S(n) = 1/2 + 2/3 + 3/4 + … + n/(n+1)

Bài 17: Nhập số n > 0. Tính S(n) = 1 * 2 * 3 * … * n

Bài 18: Nhập số n > 0, x > 1. Tính F(x,n) = xn

Bài 19: Nhập số n > 0. Tính S(n) = 1 + (1 * 2) + (1 * 2 * 3)  + … + (1 * 2 * 3  … * n)

Bài 20: Nhập số n > 0, x > 1. Tính S(n) = x + x2/2! + x3/3! + … + xn/n!

Bài 21: Nhập số n > 0, x > 1. Tính S(n) = 1 + x2/2! + x4/4! + … + x2n/(2n)!

Bài 22: Nhập số n > 0, x > 1. Tính S(n) = 1 + x + x3/3! + x5/5! + … + x2n+1/(2n+1)!

Bài 23: Liệt kê tất cả “ước số” của số nguyên dương n.

Bài 24: Tính tổng tất cả “ước số” của số nguyên dương n.

Bài 25: Tính tích tất cả “ước số” của số nguyên dương n.

Bài 26: Liệt kê các “ước số lẻ” và “ước số chẳn” của số nguyên dương n.

Bài 27: Nhập số nguyên dương n > 0. Tính tổng các “ước số” của nó nhưng nhỏ hơn chính nó.

Bài 28: Tìm “ước số” lẻ lớn nhất của số nguyên dương n.

Bài 29:  Số hoàn thiện (hay còn gọi là số hoàn chỉnh, số hoàn hảo) là số nguyên dương có tổng các ước số nguyên dương(ko kể chính nó) bằng chính nó. Nhập một số nguyên dương n. Kiểm tra xem n có là số hoàn thiện hay không

Bài 30: Số nguyên tố là số chỉ chia hết cho 1 và chính nó. Nhập một số nguyên dương n. Kiểm tra xem n có là số nguyên tố hay không.

Bài 31: Số amstrong là số mà tổng lũy thừa bậc n của các chữ số bằng chính nó với n là số chữ số (153 = 1^3 + 5^3 + 3^3). Nhập một số nguyên dương n. Kiểm tra xem n có là số amstrong hay không

Bài 32: Số chính phương hay còn gọi là số hình vuông là số tự nhiên có căn bậc 2 là một số tự nhiên. Nhập một số nguyên dương n. Kiểm tra xem n có là số chính phương hay không.

Bài 33: Tìm USCLN, BSCNN của 2 số a và b.

Bài 34: Tính S(n) = √(2 + √(2 + √(2 + … + √(2 + √2)))), có n dấu căn

Bài 35: Tính S(n) = √(n + √(n-1 + √(n-2 + … + √(2 + √1)))), có n dấu căn

Bài 36: Tính S(n) = √(1 + √(2 + √(3 + … + √(n-1 + √n)))), có n dấu căn

Bài 37: Tính S(n) = √(n! + √((n-1)! + √((n-2)! + … + √(2! + √1!)))), có n dấu căn

Bài 38: nhập số nguyên dương n > 1. Tìm giá trị nguyên k lớn nhất sao cho S(k) < n, với S(k) = 1 + 2 + 3 + .. + k.

Bài 39: Đếm số lượng chữ số của một số nguyên dương n.

Bài 40: Tính tổng/tích các chữ số của một số nguyên dương n.

Bài 41: Đếm số lượng chữ số chẳn/lẻ của một số nguyên dương n.

Bài 42: Tính tổng lẻ và tích chẳn các chữ số của một số nguyên dương n.

Bài 43: tìm số đảo ngược của một số nguyên dương n. Ví dụ: 12 => 21, 1123 => 3211, 56435 => 53465

Bài 44: Tìm chữ số nhỏ nhất/lớn nhất của một số nguyên dương n.

Bài 45: Kiểm tra số nguyên dương n có phải là số đối xứng. Vi dụ: 131, 1221, 14341, 4566654

Bài 46: Viết chương trình in bảng cửu chương từ 1 – 9

Bài 47: Kiểm tra năm nhuận: Biết năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100

Bài 48: In dãy fibonacci. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13….

Bài 49: tính Pi bằng phương pháp Monte Carlo.

Bài 50: Nhập số nguyên dương n. Liệt kê các số chính phương, số nguyên tố, số hoàn thiện, số amstrong nhỏ hơn n

Sharing is caring!

Kiểu dữ liệu - Biến - Toán tử trong C#
Function trong C#

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares