Thứ Hai, 3 tháng 6, 2024

Bài 10: Swich-case

 


SWITCH- CASE


  1. GIỚI THIỆU

Lệnh switch case là một cấu trúc điều khiển & rẽ nhánh hoàn toàn có thể được thay thế bằng cấu trúc if else. Tuy nhiên, việc sử dụng switch case sẽ giúp code của chúng ta dễ viết và dễ đọc hơn. Một điều nữa là sử dụng switch case có vẻ như cho hiệu năng tốt hơn so với sử dụng if else trong trường hợp có nhiều điều kiện có thể xảy ra.

  1. CÚ PHÁP

switch (expression)

​{

   case constant1:

     // statements

     break;

   case constant2:

     // statements

     break;

   .

   .

   default:

     // default statements

}

expression phải bắt buộc là giá trị hằng, có thể là biểu thức nhưng kết quả cần là hằng số. Trong đó, expression sẽ được so sánh với các giá trị của các case.

Nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽ được thực hiện cho tới khi gặp lệnh break. Do đó, nếu chúng ta không sử dụng break thì tất cả các case kể từ case khớp giá trị đều được thực hiện.

Case default sẽ được thực hiện nếu không có case nào khớp giá trị với expression. Sơ đồ khối mô tả hoạt động:

Lưu ý: Nếu bỏ từ khoá break ở cuối mỗi case thì chương trình sẽ chạy tiếp xuống các case ngay bên dưới dẫn đến chương trình có thể thực hiện sai mong muốn của người code.

  1. VÍ DỤ MẪU

Ví dụ 1: https://wokwi.com/projects/393762073103574017

Code mẫu


const int sensorMin=0;

const int sensorMax=1023;


void setup() {

Serial.begin(9600);


}


void loop() {

  int sensorReading=analogRead(A0);

  int range=map(sensorReading,sensorMin,sensorMax,0,3);


switch (range) {

case 0

Serial.println("Nhan");

break;

case 1:

Serial.println("Nguyen");

break;

case 2

Serial.println("Tri");

break;

case 3

Serial.println("Dung");

break;


}


delay(100); 

}



Sử dụng hàm map() trong Arduino để quy đổi giá trị đo được từ 0-1023 sang 0 đến 3

Tìm hiểu thêm: https://wokwi.com/projects/393762638138223617





Tìm hiểu thêm read Serial: https://wokwi.com/projects/393762833425024001

Ví dụ : Câu lệnh switch-case  sử dụng trong việc điều khiển  đèn LED từ ô cửa sổ Serial Monitor. Gửi 1 từ cửa sổ màn hình nối tiếp tới Arduino sẽ bật đèn LED trên bo mạch và gửi 2 sẽ tắt đèn LED. Gửi 3 sẽ hiển thị menu các tùy chọn mà bản phác thảo hoạt động. Gửi bất kỳ ký tự nào khác sẽ xuất hiện một thông báo mặc định cho biết tùy chọn đã chọn không hợp lệ.

Code: https://wokwi.com/projects/393763843121973249

Code mẫu:

void setup() {

  Serial.begin(9600);

  pinMode(13, OUTPUT); 

  Serial.println("hello"); 

}


char rx_byte = 0;


void loop() {

  if (Serial.available() > 0) { 

    rx_byte = Serial.read();

  

    switch (rx_byte) {

      case '1':

        digitalWrite(13, HIGH);

        Serial.println("LED is ON");

      break;

      

      case '2':

        digitalWrite(13, LOW);

        Serial.println("LED is OFF");

      break;

      

      case '3':

        Serial.println("------- MENU -------");

        Serial.println("1. LED on.");

        Serial.println("2. LED off.");

        Serial.println("3. Menu.");

        Serial.println("--------------------");

      break;

      

      default:

        Serial.println("Error");

      break;

    } // end: switch (rx_byte)

  } // end: if (Serial.available() > 0)

}



  1. LUYỆN TẬP

Bài 1: Kiểm tra thân nhiệt trẻ 

Sốt là tình trạng thường gặp ở trẻ nhỏ, nếu không được xử lý kịp thời có thể gây ảnh hưởng nghiêm trọng đến sức khỏe của trẻ. Sốt là khi thân nhiệt cơ thể tăng cao hơn mức bình thường (37 - 37.5 độ C), sốt là một trong những triệu chứng thường gặp của nhiều bệnh. Sốt thường gặp ở trẻ em, nguyên nhân có thể do nhiễm virus cảm lạnh, cảm cúm hay các bệnh lý nghiêm trọng khác, hoặc khi trẻ mọc răng, sau khi tiêm ngừa vắc xin. Nhiệt độ của trẻ được đo trên 37.5 độ C thì được xác định là bị sốt. Thân nhiệt ở trẻ nhỏ thường cao hơn người lớn 0.5 độ C và dao động trong khoảng từ 37 độ C đến 37.5 độ C. Khi nhiệt độ của trẻ được đo trên 37.5 độ C thì được xác định là bị sốt. Lưu ý, sự khác biệt về nhiệt độ khi sốt ở trẻ em: nhiệt độ của trẻ trên 38 độ C khi đo ở miệng hoặc trực tràng, trên 37.5 độ C khi đo ở nách hoặc trán.

Nhận biết mức độ sốt ở trẻ em:

1.     Nhiệt độ từ 37.5 – 38.5 độ C là sốt nhẹ.

2.     Nhiệt độ từ 38.5 – 39 độ C là sốt vừa.

3.     Nhiệt độ từ 39 – 40 độ C là sốt cao.

4.     Nhiệt độ trên 40 độ C là sốt rất cao.

Yêu cầu em hãy viết chương trình nhập nhiệt độ từ bàn phím sử dụng Serial monitor và cấu trúc SWICH-CASE để viết chương trình và in ra dòng thông báo trên màn hình về trạng thái sốt của trẻ nhỏ

Test mẫu:

INPUT

OUTPUT

37.5 – 38.5

sốt nhẹ

38.5 – 39

sốt vừa

39 – 40

sốt cao

>40

sốt rất cao

 


Không có nhận xét nào:

Đăng nhận xét