Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: [C++] Không biết có lệnh nhảy không?

  1. #1
    No Avatar
    jofenquan Khách

    Mặc định [C++] Không biết có lệnh nhảy không?

    Lập trình trên Borland C++: thí dụ mình có nhiều hàm điều kiện:
    if(...){
    .............
    }
    if(...){
    .............
    }
    if(...){
    .............
    }
    if(...){
    .............
    }
    Làm sao để nhảy sang hàm if 2 nếu hàm if 1 ko thoả, nhảy sang if 3 nếu if 2 ko thoả,... Cứ như vậy đến khi thoả thì dừng.

  2. #2
    No Avatar
    tuanna Khách

    Bạn nên tìm hiểu cụ thể mục đích của đoạn mã bạn làm để sử dụng lệnh điều khiển rẽ nhánh có điều kiện được hiệu quả.

    Có hai cấu trúc có thể dùng tùy vào biểu thức điều kiện, dùng if (linh hoạt) hoặc dùng switch case.

    Có thể sử dụng thêm một số từ khóa điều khiển như break, continue, hoặc goto
    Đã được chỉnh sửa lần cuối bởi tuanna : 25-12-2006 lúc 10:36 AM.

  3. #3
    No Avatar
    namleb Khách

    Trích dẫn Nguyên bản được gửi bởi jofenquan
    Lập trình trên Borland C++: thí dụ mình có nhiều hàm điều kiện:
    if(...){
    .............
    }
    if(...){
    .............
    }
    if(...){
    .............
    }
    if(...){
    .............
    }
    Làm sao để nhảy sang hàm if 2 nếu hàm if 1 ko thoả, nhảy sang if 3 nếu if 2 ko thoả,... Cứ như vậy đến khi thoả thì dừng.
    if (điều kiện)
    {
    //thực hiện
    }

    "if ko thỏa" <=> "điều kiện" ko thỏa, tức là điều kiện = false hoặc 0. Và tất nhiên if 1 ko thỏa thì sẽ nhảy sang if 2?!!!

    Quả thật ko hiểu ý bạn lắm, nhưng trong C++ có lệnh nhảy là goto
    Vd:

    Code:
    #include <conio.h>
    #include <iostream.h>
    main()
    {
          if1:
          if (1) //if1
          {
                cout<<"lenh f1";
                goto if2; //ko can dung lenh nay cung duoc!
          };
          if2:
          if (1) //if2
          {
                cout <<"lenh f2";
          };
          if (1) //if3
          {
                // goto if1; nhay den if1
          } 
          return 0;
          
     }
    Có phải ý bạn là vậy ko?
    Đã được chỉnh sửa lần cuối bởi namleb : 25-12-2006 lúc 11:15 AM.

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Cấu trúc thực thi chương trình là cấu trúc tuần tự, bạn ko cần phải lo lắng là nó nhảy đi đâu, chắc bạn mới học Assembly nên còn bị ảnh hưởng của nó
    Code:
    if (dk1) <câu lenh 1>;
    if (dk2) <câu lenh 2>;
    if (dk3) <câu lenh 3>;
    Nếu ko thỏa dk1 thì câu lệnh 1 sẽ ko được thực thi, trình biên dịch sẽ chuyển sang câu lệnh kế tiếp và cứ như thế.
    Lời khuyên: Đừng bao giờ dùng goto, cố gắng viết chương trình thật mạch lạc, viết sao cho 10 năm sau thì vẫn còn có thể sửa chữa được

  5. #5
    No Avatar
    jofenquan Khách

    có thật là nó tự động làm tuần tự từ trên xuống không? tại sao mỗi lần như vậy nó chỉ thực hiện có lệnh if đầu tiên thôi (mặc cho điều kiện đúng hay sai đi nữa) và làm lơ các hàm sau nó:
    hàm của mình đây, ko biết đúng hay sai nữa:
    if (VIETNAM.color==RED){
    ...
    }
    if (SINGAPORE.color==RED){
    ...
    }
    như thế đấy, mặc cho VIETNAM.color là WHITE thì nó vẫn thực hiện lệnh đầu tiên

  6. #6
    No Avatar
    namleb Khách

    Mặc định [C++] Không biết có lệnh nhảy không?

    nếu color trong VIETNAM và SINGAPORE là số thì RED và WHITE phải là số (vd 0xFF0000) mới dùng toán tử so sánh "==", nếu định nghĩa là chuỗi thì dùng strcmp

    Thông tin bạn đưa ra chưa rõ ràng lắm..

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    if (VIETNAM.color==RED){
    ...
    }
    if (SINGAPORE.color==RED){
    ...
    }
    như thế đấy, mặc cho VIETNAM.color là WHITE thì nó vẫn thực hiện lệnh đầu tiên
    Điểm mấu chốt chính là dấu ==, bạn đang so sánh 2 giá trị cùng kiểu hay khác kiểu, nếu khác kiểu nó sẽ tự quy đổi về cùng kiểu (có trời mới biết) và sẽ cho ra kết quả ko như bạn mong muốn. Bạn cần kiểm soát sự thực thi của chương trình thì nó mới chạy theo đúng cấu trúc tuần tự được.

  8. #8
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    viết như mẫu code đầu tiên của bạn là đã thỏa mãn được yêu cầu của bạn rồi

    còn nếu viết như thế này thì mới đúng là chỉ thực hiện khối đầu tiên nếu điều kiện đầu tiên đúng

    if(...) {...}
    else if (...) {}
    else if (...) {}
    ...
    else {...}

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

  1. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  2. Con trỏ trên C++ chỉ là hàm nhập xuất DSLK: ko biết mình sai chỗ nào mà F5 nhập xong nó ko in ra,giúp mình khắc phục với
    Gửi bởi langtuhl trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 16-11-2011, 09:51 PM
  3. Lỗi chương trình không nhận biến(không return được biến từ public sang main)
    Gửi bởi nang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 02-10-2011, 06:04 PM
  4. bài tập nhập xuất bằng hàm print,scanf,biến luôn nhận giá trị bằng 0,giải thích dùm??
    Gửi bởi khoaitayran2012 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 12-09-2011, 11:16 AM

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