Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Thắc mắc giữa IF và SWITCH

  1. #1
    Ngày gia nhập
    02 2012
    Bài viết
    0

    Mặc định Thắc mắc giữa IF và SWITCH

    Em có một câu hỏi mong cả nhà tư vấn hộ!
    If và switch đều là cấu trúc rẻ nhánh, và theo em biết, một bài toán nếu dùng được IF thì chắc chắn dùng được SWITCH, tuy nhiên còn trường hợp ngược lại thì còn phụ thuộc vào giải thuật của bài toán.
    Anh (chị) có thể giải thích rõ hơn giúp em tại sao như vậy?
    Có ví dụ nào mà mình chỉ có thể dùng SWITCH mà không thể dùng IF không?

    Em xin cảm ơn!
    Đã được chỉnh sửa lần cuối bởi tranlongpc325 : 19-03-2012 lúc 08:30 PM.

  2. #2
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi tranlongpc325 Xem bài viết
    If và switch đều là cấu trúc rẻ nhánh, và theo em biết, một bài toán nếu dùng được switch thì chắc chắn dùng được if, tuy nhiên còn trường hợp ngược lại thì còn phụ thuộc vào giải thuật của bài toán.
    Anh (chị) có thể giải thích rõ hơn giúp em tại sao như vậy?
    Có ví dụ nào mà mình chỉ có thể dùng if mà không thể dùng switch không?
    Sai.
    Điều kiện của if chỉ là một trị quy ra 0 (false) hoặc khác 0 (true).
    switch xét trị ở kiểu int hoặc kiểu có thể quy ra dạng int

    Bất cứ
    if (điều kiện) { ..... }
    else { ...... }

    đều cũng có thể thay được bằng
    switch (điều kiện)
    {
    case 0: /* trường hợp else ở đây, nếu không có else thì để trống; */ break;
    default: /* trường hợp if ở đây */
    }

    Vấn đề là chỉ nhìn vô duyên thôi!

    Phân biệt giữa IF và SWITCH cho đúng lý thuyết và áp dụng của ngôn ngữ C là trình độ trên trung bình. Nếu bạn đã đến trình độ này rồi thì bạn có thể tự tìm hiểu lấy. Nếu bạn chưa đến trình độ này thì chịu khó code thêm một thời gian nữa tự động hiểu.

  3. #3
    Ngày gia nhập
    02 2012
    Bài viết
    0

    Chết!
    Em nhầm! Nếu dùng được IF thì chắc chắn dùng được SWITCH, còn ngược lại thì còn tùy bài toán!
    Hic!
    Em xin lỗi! Anh (chị) giúp em với!

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Tầm xàm quá sức. Thế những ngôn ngữ không có switch thì chúng làm cái gì?

  5. #5
    Ngày gia nhập
    08 2010
    Nơi ở
    Moscow, Russia Federation
    Bài viết
    913

    Em thấy cái bác gì hỏi đầu tiên đó nói gì tầm phào thôi. switch hay if gì mà chẳng rẽ nhánh được cơ chứ!
    Chẳng hạn như em muốn đưa cái xxx vào if, thì em cũng có thể đặt nó vào case được, tức là vào switch được.
    Ngược lại, cái gì nằm trong case mà em chả convert được thành cái mà nhét vào if được chứ.
    Các bác thử chỉ ra trường hợp mà không dùng cái này thay cái kia được đi!
    Mời các bạn ghé thăm blog cá nhân của tôi

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định Thắc mắc giữa IF và SWITCH

    Trích dẫn Nguyên bản được gửi bởi mp121209 Xem bài viết
    Em thấy cái bác gì hỏi đầu tiên đó nói gì tầm phào thôi. switch hay if gì mà chẳng rẽ nhánh được cơ chứ!
    Chẳng hạn như em muốn đưa cái xxx vào if, thì em cũng có thể đặt nó vào case được, tức là vào switch được.
    Ngược lại, cái gì nằm trong case mà em chả convert được thành cái mà nhét vào if được chứ.
    Các bác thử chỉ ra trường hợp mà không dùng cái này thay cái kia được đi!
    Bạn xem lại cho kỹ. Tôi bực mình là vì chủ lại chơi trò sửa câu hỏi ban đầu của mình khiến câu trả lời của tôi bị hụt hẫng!

    So sánh với phần tôi quote lại trước đó thì sẽ rõ.

  7. #7
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    tốt nhất là ko nên dùng switch, lúc nào cũng phải dùng break, dùng break cả continue thì chẳng khác gì goto, nếu tránh dc thì nên tránh.

    hơn nữa dùng switch thì mất đi một lần break vòng lặp
    vd:

    while(1)
    {
    switch(c)
    {
    case 1:
    ...
    }
    }

    muốn trong switch mà thoát khỏi vòng lặp thì khó lắm

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Câu hỏi về lý thuyết chứ có phải thực hành đâu mà nên dùng với chẳng nên dùng.

  9. #9
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Tại sao nhiều ngôn ngữ không có câu lệnh switch...case. Đây là 1 ví dụ đơn giản để bạn hiểu rõ hơn:
    Đề bài: Nhập vào 1 tháng và in ra tên tháng đó

    sử dụng switch...case:
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    void main()
    {
     int n;
     printf("Nhap n=");
     scanf("%d",&n);
     switch(n)
      {
    	case 1: printf("thang gieng");
    		   break;
    	case 2: printf("thang hai");
    		   break;
    	case 3: printf("thang ba");
    		   break;
    	case 4: printf("thang tu");
    		   break;
    	case 5: printf("thang nam");
    		   break;
    	case 6: printf("thang sau");
    		   break;
    	case 7: printf("thang bay");
    		   break;
    	case 8: printf("thang tam");
    		   break;
    	case 9: printf("thang chin");
    		   break;
    	case 10: printf("thang muoi");
    		     break;
    	case 11: printf("thang muoi mot");
    		     break;
    	case 12: printf("thang muoi hai");
    		     break;
      }
    }
    sử dụng if:
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    void main()
    {
     int n;
     printf("Nhap n= ");
     scanf("%d",&n);
     if(n==1) printf("Thang gieng");
     else if (n==2) printf("Thang hai");
     else if (n==3) printf("Thang ba");
     else if (n==4) printf("Thang tu");
     else if (n==5) printf("Thang nam");
     else if (n==6) printf("Thang sau");
     else if (n==7) printf("Thang bay");
     else if (n==8) printf("Thang tam");
     else if (n==9) printf("Thang chin");
     else if (n==10) printf("Thang muoi");
     else if (n==11) printf("Thang muoi mot");
     else if (n==12) printf("Thang muoi hai");
     getch();
    }

  10. #10
    Ngày gia nhập
    03 2010
    Nơi ở
    My Home
    Bài viết
    772

    Chắc là cũng chẳng cần đến switch ... case hay thậm chí cả if...else (just kidding)

    C Code:
    1. #include <stdio.h>
    2. #define ERROR_NOTIFY()  printf("thang nay khong co trong nam\n")
    3. char     m[] =        {0x67, 0x69, 0x65, 0x6e, 0x67, 0x00, 0x11, 0x32, 0xff, 0xdd,
    4.                        0x68, 0x61, 0x69, 0x00, 0x2f, 0xbc, 0xaa, 0xfd, 0x13, 0x12,
    5.                        0x62, 0x61, 0x00, 0xae, 0xbf, 0x1f, 0x43, 0x56, 0x78, 0x93,
    6.                        0x74, 0x75, 0x00, 0x25, 0x67, 0xff, 0x53, 0x1d, 0xf2, 0xd2,
    7.                        0x6e, 0x61, 0x6d, 0x00, 0x92, 0xed, 0x13, 0x18, 0x28, 0x43,
    8.                        0x73, 0x61, 0x75, 0x00, 0x65, 0x4f, 0x11, 0x45, 0x29, 0x8d,
    9.                        0x62, 0x61, 0x79, 0x00, 0xdf, 0xad, 0x63, 0x34, 0x16, 0xf6,
    10.                        0x74, 0x62, 0x6d, 0x00, 0xfd, 0x32, 0x1d, 0x43, 0x52, 0x36,
    11.                        0x63, 0x68, 0x69, 0x6e, 0x00, 0x49, 0xee, 0xaa, 0x99, 0x12,
    12.                        0x6d, 0x75, 0x6f, 0x69, 0x00, 0x92, 0x46, 0x24, 0x2a, 0x3f,
    13.                        0x6d, 0x75, 0x6f, 0x69, 0x20, 0x6d, 0x6f, 0x74, 0x00, 0x92,
    14.                        0x63, 0x68, 0x61, 0x70, 0x00, 0x1a, 0x68, 0x87, 0x43, 0x55};
    15. int main()
    16. {
    17.     int month;
    18.     printf("nhap thang: ");
    19.     scanf("%d", &month);
    20.     month < 1 ? ERROR_NOTIFY() : month > 12 ? ERROR_NOTIFY() : printf("thang %s\n", m + (month - 1) * sizeof(m) / 12);
    21.     return 0;
    22. }

Các đề tài tương tự

  1. Bài tập C sử dụng switch để kiểm tra năm nhuận như thế nào?
    Gửi bởi vochanhtin trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 06-11-2013, 08:20 PM
  2. Sử dụng lệnh switch trong lập trình C như thế nào?
    Gửi bởi quan_pc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 16-08-2013, 03:52 PM
  3. Dùng câu lệnh if/if…else và switch như thế nào?
    Gửi bởi nhoxonl trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 01-10-2010, 12:17 AM
  4. Lập trình C Thắc mắc về câu lệnh switch... case
    Gửi bởi lankute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 32
    Bài viết cuối: 24-09-2010, 05:30 PM
  5. Thắc mắc về cách xét ký tự trong câu lệch switch case
    Gửi bởi nquangkhai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 23-03-2010, 10:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn