Cấu trúc rẽ nhánh If else trong C#

Khóa học lập trình C# căn bản

5.0 (10 đánh giá)
Tạo bởi Trần Thành Vi Thanh Cập nhật lần cuối 22:06 22-03-2019 68.093 lượt xem 140 bình luận
Học nhanh

Danh sách bài học

Cấu trúc rẽ nhánh If else trong C#

Dẫn nhập

Ở bài TOÁN TỬ TRONG C# chúng ta đã tìm hiểu về toán tử 3 ngôi (? :). Đó có thể xem là một cấu trúc rẽ nhánh đơn giản. Vậy “cấu trúc rẽ nhánh” là gì? Sử dụng chúng như thế nào? Bài học hôm nay sẽ giúp chúng ta trả lời những câu hỏi này – Cấu trúc rẽ nhánh If else trong C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

 Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Cấu trúc rẽ nhánh là gì? Có mấy loại cấu trúc rẽ nhánh?
  • Cấu trúc If else dạng thiếu và dạng đủ.
  • Ví dụ chương trình sử dụng cấu trúc If else.

Cấu trúc rẽ nhánh là gì? Có mấy loại cấu trúc rẽ nhánh

Xét 2 mệnh đề sau:

  • Mệnh đề 1: “Nếu trời mưa thì đường trơn”.
  • Mệnh đề 2: “Nếu bạn rảnh thì đi chơi ngược lại thì thôi”

Các bạn để ý những chữ in đậm trong 2 mệnh đề trên. Cấu trúc Nếu. . . thì. . . hoặc Nếu. . . thì. . . ngược lại thì. . . được gọi là cấu trúc rẽ nhánh.

Trong hầu hết các ngôn ngữ lập trình đều có loại cấu trúc rẽ nhánh:

Cấu trúc rẽ nhánh If. . . else. . . còn có tên gọi khác là “câu lệnh điều kiện”.


Cấu trúc If else dạng thiếu và dạng đủ

Dạng thiếu

Cú pháp:

If ([Biểu thức điều kiện]) <Câu lệnh thực hiện>

  • If là từ khóa bắt buộc.
  • <Biểu thức điều kiện> là biểu trức dạng boolean (trả về true hoặc false).
  • <Câu lệnh thực hiện> là câu lệnh muốn thực hiện nếu <Biểu thức điều kiện> là đúng.

Ý nghĩa:

Nếu <Biểu thức điều kiện> trả về true thì thực hiện <Câu lệnh thực hiện> ngược lại thì không làm gì cả.

Ví dụ:

string K = "Kteam";
if (K == "Kteam") 
// Biểu thức điều kiện sử dụng toán tử == đề so sánh xem giá trị biến K có bằng “Kteam” hay không. Nếu bằng trả thì trả về true ngược lại thì trả về false.
 Console.WriteLine("Free Education"); // In ra màn hình chữ “Free Education” nếu biểu thức trên đúng.

Kết quả khi chạy chương trình trên là:

Kteam


Dạng đủ

Cú pháp:

If <Biểu thức điều kiện>

              <Câu lệnh thực hiện 1>

else

              <Câu lệnh thực hiện 2>

  • If, else là từ khóa bắt buộc.
  • <Biểu thức điều kiện> là biểu trức dạng boolean (trả về true hoặc false).
  • <Câu lệnh thực hiện 1> là câu lệnh muốn thực hiện nếu <Biểu thức điều kiện> là đúng.
  • <Câu lệnh thực hiện 2> là câu lệnh muốn thực hiện nếu <Biểu thức điều kiện> là sai.

Ý nghĩa:

Nếu <Biểu thức điều kiện> trả về true thì thực hiện <Câu lệnh thực hiện 1> ngược lại thì thực hiện <Câu lệnh thực hiện 2>.

Ví dụ:

string K = "Kteam";

if (K == "Kteam") // Nếu giá trị K bằng “Kteam” thì
    Console.WriteLine("Free Education"); // In ra màn hình “Free Education”
else // Ngược lại thì
                Console.WriteLine("Connecting to HowKteam. . ."); // In ra màn hình “Connecting to HowKteam. . .”

 Kết quả khi chạy chương trình trên là:

Kteam

  • Vì biểu thức điều kiện K == “Kteam” là đúng nên màn hình vẫn in ra “Free Education”.

Một số lưu ý khi sử dụng câu lệnh điều kiện

<Biểu thức điều kiện> có thể chứa nhiều biểu thức con bên trong và các biểu thức con liên kết với nhau bằng các toán tử quan hệ (toán tử quan hệ đã được trình bày trong bài  TOÁN TỬ TRONG C#) nhưng tất cả phải trả về kiểu boolean (true hoặc false).

Nếu muốn thực hiện nhiều câu lệnh thì ta có thể nhóm chúng vào trong cặp ngoặc nhọn { }.

Ví dụ:

If <Biểu thức điều kiện>
{
             <Câu lệnh thực hiện>
}

Hoặc

If <Biểu thức điều kiện>
{
             <Câu lệnh thực hiện 1>
}

Else
{
             <Câu lệnh thực hiện 2>
}

Lời khuyên là cho dù chỉ thực hiện 1 câu lệnh vẫn để trong cặp ngoặc nhọn { } để code rõ ràng, dễ đọc, dễ nâng cấp sữa chữa.

Trong câu lệnh có thể chứa một câu lệnh điều kiện con nữa. Bạn có thể vận dụng điều này để làm giải quyết những vấn đề phức tạp.

Ví dụ:

If <Biểu thức điều kiện 1>
{
           If <Biểu thức điều kiện 2>
           {
                       <Câu lệnh thực hiện 1>
            }

            else
           {
                        <Câu lệnh thực hiện 2>
            } 
            <Câu lệnh thực hiện 3>
}

Else
{
            If <Biểu thức điều kiện 3>
           {
                        <Câu lệnh thực hiện 4>
           }            
           If <Biểu thức điều kiện 4>
          {
                        <Câu lệnh thực hiện 5>
          } 
          <Câu lệnh thực hiện 6>
}

Ngoài cấu trúc If. . . else. . . cơ bản trên còn có cấu trúc nhỏ khác là If. . . else if. . . else. Ví dụ:I

If <Biểu thức điều kiện 1>
{
           <Câu lệnh thực hiện 1> //Thực hiện khi <biểu thức điều kiện 1> đúng
}

ezlse if <Biểu thức điều kiện 2>
{
            <Câu lệnh thực hiện 2> // Thực hiện khi <biểu thức điều kiện 1> sai và <biểu thức điều kiện 2> đúng
}

else
{
            <Câu lệnh thực hiện 3> //Thực hiện khi cả 2 biểu thức điều kiện trên đều sai (các trường hợp còn lại)
}
  • Có thể hiểu ngắn gọn là “Nếu. . . thì. . . Ngược lại, nếu. . . thì. . . Trường hợp khác. . .”.
  • Các biểu thức điều kiện được kiểm tra từ trên xuống dưới và không kiểm tra lại.
  • Nếu biểu thức điều kiện đang kiểm tra trả về true thì
    • Thực hiện khối lệnh bên trong nó.
    • Thoát ra khỏi cấu trúc.
    • Không kiểm tra các biểu thức điều kiện còn lại.

So với toán tử 3 ngôi thì:

  • Câu lệnh điều kiện nhìn trực quan hơn và có thể thực hiện nhiều câu lệnh hơn.
  • Nhưng nếu chỉ thực hiện 1 câu lệnh điều kiện đơn giản thì dùng toán tử 3 ngôi sẽ làm cho code ngắn gọn và viết nhanh hơn.

Ví dụ chương trình sử dụng cấu trúc If else

Ví dụ: Viết chương trình giải phương trình bậc 1: Ax + B = 0.

string strA, strB;
            int A, B;
            double Nghiem;

            Console.WriteLine("         ***************************************************");
            Console.WriteLine("         *                                        			        *");
            Console.WriteLine("         *    Chuong trinh giai phuong trinh Ax + B = 0 *");
            Console.WriteLine("         *                                                 		        *");
            Console.WriteLine("         ***************************************************");

            Console.Write(" Moi nhap so A: ");
            strA = Console.ReadLine();
            Console.Write(" Moi nhap so B: ");
            strB = Console.ReadLine();

            if (int.TryParse(strA, out A) == false || int.TryParse(strB, out B) == false) // kiểm tra người dùng có thực sự nhập số nguyên vào hay không. Nếu ép kiểu thành công sẽ trả về true, ngược lại trả về false
            {
                Console.WriteLine(" Du lieu nhap sai !"); 
                return; // Lệnh này tạm hiểu là dừng và thoát chương trình mà không thực hiện những câu lệnh sau nó nữa. Sẽ được tìm hiểu chi tiết trong bài 16 Hàm
            }
            else
            {
                Console.WriteLine("\n Phuong trinh cua ban vua nhap la: {0}x + {1} = 0", A, B);

                if (A == 0)
                {
                    Console.WriteLine("\n Phuong trinh co vo so nghiem !");
                }
                else if (B == 0)
                {
                    Console.WriteLine("\n Phuong trinh co nghiem x = 0");
                }
                else
                {
                    Nghiem = (double)-B / A; // Ép kiểu để cho ra kết quả chính xác
                    Console.WriteLine("\n Phuong trinh co nghiem x = {0}", Nghiem);
                }
            }

 

Trong ví dụ mình đã sử dụng cả 2 dạng câu lệnh điều kiện là:

  • . . else. . .
  • . . else if. . . else. . .

Kết quả khi chạy chương trình trên là:

kteam

  • Các bạn thử test khi nhập dữ liệu sai chương trình sẽ như thế nào nhé !

Bài tập tự luyện

  1. Viết chương trình nhập vào một số tương ứng là năm. Xuất ra màn hình năm vừa nhập và tuổi của một người tương ứng với năm vừa nhập đó.
  2. Từ câu 1. Thêm chức năng:

- Nếu tuổi người đó < 16 thì hiện thông báo theo format: Bạn <Tuổi>, tuổi vị thành niên.

- Nếu tuổi người đó >= 16 và <18 thì hiện thông báo theo format: Bạn <Tuổi>, tuổi trưởng thành.

Nếu tuổi người đó >= 18 thì hiện thông báo theo format: Bạn <Tuổi>, già rồi.

  1. Viết trò chơi Kéo Búa Bao với cách chơi: Người dùng sẽ nhập vào các số 1 hoặc 2 hoặc 3 tương ứng với kéo hoặc búa hoặc bao. Máy sẽ ngẫu nhiên sinh ra một số trong 3 số và tính toán máy hoặc người chiến thắng. Nhớ phải in kết quả ra màn hình.

Hãy khoe thành quả của bạn vào fanpage hoặc phần bình luận nhé!


Kết luận

Nội dung bài này giúp các bạn nắm được:

  • Khái niệm về cấu trúc rẽ nhánh. Các loại cấu trúc rẽ nhánh.
  • Cấu trúc If else dạng thiếu và dạng đủ.
  • Viết chương trình sử dụng cấu trúc If else.

Bài học sau chúng ta sẽ cùng tìm hiểu một khái niệm tiếp theo đó là CẤU TRÚC RẼ NHÀNH SWITCH - CASE TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Cấu trúc rẽ nhánh If else trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Mỗi buổi sáng thức dậy, bạn có 2 lựa chọn, tiếp tục ngủ để mơ những giấc mơ hoặc thức dậy và theo đuổi chúng!

Khóa học

Khóa học lập trình C# căn bản

Bạn mới bắt đầu học lập trình? Bạn đang muốn học thêm ngôn ngữ lập trình mới? C# là lựa chọn hoàn hảo để đáp ứng các nhu cầu trên.

Ngôn ngữ C# là một ngôn ngữ mới, cấu trúc rõ ràng, dễ hiểu và dễ học. C# thừa hưởng những ưu việt từ ngôn ngữ Java, C, C++ cũng như khắc phục được những hạn chế của các ngôn ngữ này. C# là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, được xây dựng dựa trên C++ và Java.

Khoá học lần này sẽ mang đến toàn bộ những kiến thức cơ bản về C#. Chào mừng các bạn đã đến với khoá học LẬP TRÌNH C# CƠ BẢN của Kteam.

Đánh giá

cosinguyen93 đã đánh giá 14:13 21-06-2020

Kiểm tra lại tính đúng đắn của phương trình demo. 0.5 là sai phải là -0.5

Lê Thanh Sang đã đánh giá 19:14 14-05-2020

Mon Võ đã đánh giá 16:48 25-02-2020

Rose' đã đánh giá 19:28 05-02-2020

Hay

L.Đ.Long đã đánh giá 15:09 13-11-2019

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
nghia3196 đã bình luận 16:25 06-07-2020
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuaKeoBao
{
    class Program
    {
        static void Main(string[] args)
        {
            string you, computer="";
            Random random = new Random();
            int num = random.Next(3);

            start:
            Console.WriteLine("Ban chon: ");
            you = Console.ReadLine();
            if ((you != "Bua") && (you != "Keo") && (you != "La"))
            {
                Console.WriteLine("Nhap sai, moi nhap lai");
                goto start;
            }
            if (num == 0)
            {
                computer = "Bua";
            }
            if (num == 1)
            {
                computer = "La";
            }
            if (num == 2)
            {
                computer = "Keo";
            }
            Console.WriteLine("May chon: {0}", computer);
            if (you==computer)
            {
                Console.WriteLine("Hoa");
            }
            else if (computer == "Bua")
                {
                if (you == "Keo")
                {
                    Console.WriteLine("ban thua");
                }
                else
                {
                    Console.WriteLine("Ban thang");
                }
                }
            else if (computer == "La")
            {
                if (you == "Keo")
                {
                    Console.WriteLine("ban thang");
                }
                else
                {
                    Console.WriteLine("Ban thua");
                }
            }
            else if (computer == "Keo")
            {
                if (you == "La")
                {
                    Console.WriteLine("ban thua");
                }
                else
                {
                    Console.WriteLine("Ban thang");
                }
            }
            Console.ReadKey();
        }
    }
}

 

cosinguyen93 đã bình luận 14:13 21-06-2020

2x0.5 + 1 = 2, giải phương trình sai rồi. Mình vẫn chưa hiểu tại sao ép kiểu âmB lại ra dương để hiện ra 0.5 vậy. Kiểm tra lại chỗ này.

it.22.10.99 đã bình luận 23:28 29-05-2020

using System;

 

namespace Fork_Structure

{

    class Program

    {

        static void Main(string[] args)

        {

            DateTime now =DateTime.Now;

            //Console.Write("Moi Ban Nhap Nam: ");

            //int year =int.Parse(Console.ReadLine());

            //int age= now.Year-year;

            #region Bai_1

            //Console.WriteLine("Year: {0}, {1} age",year,age);

            #endregion

            #region Bai_2

            // if(age<16){

            //     Console.WriteLine("{0} tuoi, tuoi vi thanh nien",age);

            // }

            // else if(age>=16 && age<18){

            //     Console.WriteLine("{0} tuoi, tuoi truong thanh",age);

            // }

            // else{

            //     Console.WriteLine("{0} tuoi, gia roi",age);

            // }

            #endregion

            #region Bai_3

            Random r=new Random();

            int random=r.Next(1,4);

            Console.WriteLine("**************************************************************************");

            Console.WriteLine("*                                                                        *");

            Console.WriteLine("*                Welcome to the game of pulling hammer                   *");

            Console.WriteLine("*                                                                        *");

            Console.WriteLine("**************************************************************************");

            int n;

            do

            {   

                Console.WriteLine("Moi cac ban chon: {0} - Keo, {1} - Búa, {2} - Bao",1,2,3);

                n=int.Parse(Console.ReadLine());

                if(n<0 || n>3){

                    Console.WriteLine("Ban nhap sai");

                    Console.WriteLine("Moi cac ban chon: {0} - Keo, {1} - Búa, {2} - Bao",1,2,3);

                    n=int.Parse(Console.ReadLine());

                }

                else{

                      

                    if(n==1){

                        Console.WriteLine("Nguoi ra keo");

                        break;

                    }

                    else if(n==2){

                        Console.WriteLine("Nguoi ra bua");

                        break;

                    }

                    else{

                        Console.WriteLine("Nguoi ra bao");

                        break;

                    }

                }    

            } while (n!=0);

             if(random==1){

                    Console.WriteLine("May ra keo");

                }

                else if(random==2){

                    Console.WriteLine("May ra bua");

                }

                else{

                    Console.WriteLine("May ra bao");

                }

                if((n==1 && random==1) || (n==2 && random==2) || (n==3 && random==3)){

                    Console.WriteLine("May va nguoi hoa");

                }

                if((n==1 && random==2) || (n==2 && random==3) || (n==3 && random==1)){

                    Console.WriteLine("May thang");                    

                }

                if((n==1 && random==3) || (n==2 && random==1) || (n==3 && random==2)){

                    Console.WriteLine("Nguoi thang"); 

                }

            #endregion

        }

    }

}

 

Lê Thanh Sang đã bình luận 19:11 14-05-2020

Chương Trình Giải Phương Trình Bậc Nhất Hoàn Thiện =)) : 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Review_Bai_9_Cau_Truc_Re_Nhanh
{
    class Program
    {
        static void Main(string[] args)
        {
            //Ví dụ: Viết chương trình giải phương trình bậc 1: Ax + B = 0.
            double A, B;
            double Result;
            string strA, strB, strC;
            bool tryA, tryB;
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("                   ******************************************************************************");
            Console.WriteLine("                   *                                                                            *");
            Console.WriteLine("                   *                                                                            *");
            Console.WriteLine("                   *                  Program solves the order equation: Ax + B = 0             *");
            Console.WriteLine("                   *                                                                            *");
            Console.WriteLine("                   *                                                                            *");
            Console.WriteLine("                   ******************************************************************************");
            Console.Write(Environment.NewLine);
        BeginLoop:
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("Please! Provide a value for 'A': ");
            strA = Console.ReadLine();
            tryA = double.TryParse(strA, out A);
            Console.Write("Please! Provide a value for 'B': ");
            strB = Console.ReadLine();
            tryB = double.TryParse(strB, out B);
            if (tryA == true && tryB == true && A == 0)
            {
                Console.WriteLine("countless equation!");
            }
            else if (tryA == true && tryB == true && A != 0 && B != 0)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("The equation you just entered is: {0}x + {1} = 0", A, B);
                Result = (double)-B / A;
                Console.WriteLine("Your equation have one result!");
                Console.WriteLine("x = {0}", Result);
            }
            else if (tryA == true && tryB == true && A != 0 && B == 0)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("The equation you just entered is: {0}x + {1} = 0", A, B);
                Console.WriteLine("Equation null!");
            }
            else if (tryA == false || tryB == false)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Wrong Data, Please Try Again!");
                goto BeginLoop2;
            }
        BeginLoop2:
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("Do you want to continues? (Y/N): ");
            strC = Console.ReadLine();
            if (strC == "Y" || strC == "y")
            {
                goto BeginLoop;
            }
            else if (strC == "N" || strC == "n")
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("Press 'any' button to quit!");
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Wrong Type Of Char, Please Press (Y/N) Only!");
                goto BeginLoop2;
            }
            Console.ReadKey();
        }
    }
}

vungoctu9981 đã bình luận 00:11 09-03-2020

BÀI SỐ 2 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string strNam;
            int Tuoi, Nam;

            Console.WriteLine("Nhap so nam:");
            strNam = Console.ReadLine();

            if (int.TryParse(strNam, out Nam) == false)
            {
                Console.WriteLine("Nhap sai roi");

            }
            else
            {
                Tuoi = 2020 - Nam;
                Console.WriteLine("So nam ban nhap la:" + Nam);
                Console.WriteLine("Tuoi cua ban la:" + Tuoi);
                if (Tuoi < 16)
                {
                    Console.WriteLine("Tuoi vi thanh nien");
                }
                else if (Tuoi >= 16 && Tuoi < 18)
                {
                    Console.WriteLine("Tuoi truong thanh");
                }
                else
                {
                    Console.WriteLine("Ban gia roi");
                }
            }
            Console.ReadKey();
         }
           
       
           
        }
    }

Không có video.