Đánh giá, nhận xét, review các công ty tuyển dụng
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ố 13 kết quả

Đề tài: while(1) trong lập trình C có ý nghĩa là gì?

  1. #1
    Ngày gia nhập
    09 2010
    Bài viết
    38

    Mặc định while(1) trong lập trình C có ý nghĩa là gì?

    em có viết đoạn code như thế này,nhưng không hiểu tại sao khi bấm 0 lại không dừng chương trình
    mong anh chi giúp đỡ
    C Code:
    1. #include<stdio.h>
    2.  #include<conio.h>
    3.  #include<dos.h>
    4.  #include<stdlib.h>
    5.  #include<process.h>
    6.  #include<string.h>
    7.  #define MAX 100
    8.  typedef struct nhanvien
    9.     {
    10.         char manv[5];
    11.         char hoten[20];
    12.         char phai[4];
    13.     };
    14. typedef struct list1
    15.     {
    16.         int n;
    17.         nhanvien nodes[MAX];
    18.     };
    19.  
    20.  
    21.  
    22. typedef struct vattu
    23.     {
    24.         char mavl[15];
    25.         char tenvl[20];
    26.     };
    27.  typedef struct list2
    28.  {
    29.    int n;
    30.    vattu nodes[MAX];
    31.  };
    32. typedef struct ngay
    33.     {
    34.         int ngay;
    35.         int thang;
    36.         int nam;
    37.     }NGAY;
    38. void nhapnv(nhanvien x)
    39. {
    40.     printf("nhap ma nhan vien:");
    41.     fflush(stdin);
    42.     gets(x.manv);
    43.     printf("nhap ho ten:");
    44.     fflush(stdin);
    45.     gets(x.hoten);
    46.     printf("nhap phai:");
    47.     fflush(stdin);
    48.     gets(x.phai);
    49. }
    50. void xuatnv(nhanvien x)
    51. {
    52.  
    53.     printf("Ma nhan vien:%s\n",x.manv);
    54.     printf("ho ten nhan vien:%s\n",x.hoten);
    55.     printf("phai:%s\n",x.phai);
    56. }
    57. void nhapmangnv(list1 &ds)
    58. {
    59.   clrscr();
    60.   textcolor(0);
    61.   textbackground(15);
    62.   printf("\nnhap so nhan vien:");
    63.   scanf("%d",&ds.n);
    64.   for(int i=0;i<ds.n;i++)
    65.    {
    66.        printf("nhap nhan vien  thu %d:\n\t",i+1);
    67.        fflush(stdin);
    68.        printf("\n\tnhap ma nhan vien:");
    69.        fflush(stdin);
    70.        gets(ds.nodes[i].manv);
    71.        printf("\n\tnhap ho ten:");
    72.        fflush(stdin);
    73.        gets(ds.nodes[i].hoten);
    74.        printf("\n\tphai:");
    75.        fflush(stdin);
    76.        gets(ds.nodes[i].phai);
    77.  
    78.    }
    79.  
    80. }
    81. void xuatmangnv(list1 &ds)
    82. {
    83.    clrscr();
    84.    textcolor(0);
    85.    textbackground(15);
    86.    for(int i=0;i<ds.n;i++)
    87.    {
    88.     printf("manv:%s\n",ds.nodes[i].manv);
    89.     printf("hoten:%s\n",ds.nodes[i].hoten);
    90.     printf("phai:%s \n",ds.nodes[i].phai);
    91.    }
    92.  
    93. }
    94. void nhapvt(list2 &dsvt)
    95. {
    96.   clrscr();
    97.   textcolor(0);
    98.   textbackground(15);
    99.   printf("nhap so loai vat tu:");
    100.   scanf("%d",&dsvt.n);
    101.   for(int i=0;i<dsvt.n;i++)
    102.   {
    103.       printf("nhap vat lieu thu %d\n\t",i+1);
    104.       printf("nhap ma vat lieu:");
    105.       fflush(stdin);
    106.       gets(dsvt.nodes[i].mavl);
    107.       fflush(stdin);
    108.       printf("\n\tnhap ten vat lieu:");
    109.        gets(dsvt.nodes[i].tenvl);
    110.  
    111.  
    112.  
    113.  
    114.        }
    115. }
    116. void xuatvt(list2 &dsvt)
    117. {
    118.   clrscr();
    119.   textcolor(0);
    120.   textbackground(15);
    121.   for(int i=0;i<dsvt.n;i++)
    122.   {
    123.      printf("ma vat lieu:%s\n",dsvt.nodes[i].mavl);
    124.      fflush(stdin);
    125.      printf("ten vat lieu:%s",dsvt.nodes[i].tenvl);
    126.      printf("\n");
    127.   }
    128. }
    129. /**********************************************************************/
    130.   int namnhuan(NGAY &x)
    131.   {
    132.     if(x.nam%400==0 ||  (x.nam%4==0&&x.nam%100!=0))
    133.     return 1;
    134.     return 0;
    135.   }
    136.   int ktngay(NGAY x)
    137.   {
    138.       switch(x.thang)
    139.       {
    140.  
    141.     case 1:
    142.     case 3:
    143.     case 5:
    144.     case 7:
    145.     case 8:
    146.     case 10:
    147.     case 12:
    148.         {
    149.         return 31;
    150.  
    151.         }
    152.     case 4:
    153.     case 6:
    154.     case 9:
    155.     case 11:
    156.     {
    157.          return 30;
    158.  
    159.          }
    160.  
    161.     case 2:
    162.     {
    163.     if(namnhuan(x)==1)
    164.               return 29;
    165.               else
    166.               return 28;
    167.               }
    168.  
    169.  
    170.       }
    171.  
    172.   }
    173.   int kt(NGAY x)
    174.   {
    175.     if(x.thang>=1 && x.thang<=12 && x.nam>=2000)
    176.     {
    177.       if(x.ngay>=1 && x.ngay<=ktngay(x))
    178.       return 1;
    179.       else
    180.       return 0;
    181.     }
    182.     return 0;
    183.   }
    184.   void nhapngay(NGAY x)
    185.   {
    186.     do
    187.     {
    188.       printf("ngay:");
    189.       scanf("%d",&x.ngay);
    190.       printf(" thang:");
    191.       scanf("%d",&x.thang);
    192.       printf(" nam:");
    193.       scanf("%d",&x.nam);
    194.     }while(kt(x)!=1);
    195.   }
    196.   void xuatngay(NGAY x)
    197.   {
    198.    printf("ngay %d thang %d nam %d",x.ngay,x.thang,x.nam);
    199.   }
    200. /**********
    201. ************************************************************/
    202.   typedef struct hoadon
    203.   {
    204.     char sohd[5];
    205.     NGAY ngay;
    206.     char loai[5];
    207.     nhanvien manv;
    208.   };
    209.   typedef struct node
    210.   {
    211.    hoadon info;
    212.    struct node*next;
    213.   };
    214.     typedef struct node* PTR;
    215.  
    216.     void khoitao(PTR &First)
    217.     {
    218.      First=NULL;
    219.     }
    220.     PTR new_node()
    221.     {
    222.      PTR p;
    223.      p=(PTR)malloc(sizeof(struct node));
    224.      return (p);
    225.     }
    226.     void khoitao1(PTR &First)
    227.     {
    228.      First=NULL;
    229.     }
    230.  
    231.     int ktloai(char *s)
    232.     {
    233.      char *loai=strdup(s);
    234.      int n=strlen(loai);
    235.      for(int i=0;i<n;i++)
    236.        if(loai[i]=='N'|| loai[i]=='X')
    237.      return 1;
    238.      return 0;
    239.     }
    240.     void insert_last(PTR &First,hoadon x)
    241.     {
    242.     PTR p=new_node();
    243.     p->info=x;
    244.     p->next=NULL;
    245.     if(First==NULL)
    246.       First=p;
    247.       else
    248.       {
    249.         for(PTR last=First;last->next!=NULL;last=last->next);
    250.         last->next=p;
    251.       }
    252.  
    253.     }
    254.     void nhaphd(hoadon x)
    255.     {
    256.  
    257.       printf("nhap so hoa don:");
    258.       fflush(stdin);
    259.       gets(x.sohd);
    260.  
    261.       nhapngay(x.ngay);
    262.       do
    263.       {
    264.        printf("nhap loai hoa don:");
    265.        scanf("%s",&x.loai);
    266.       }while(ktloai(x.loai)!=1);
    267.        nhapnv(x.manv);
    268.  
    269.        }
    270.        void xuathd(hoadon x)
    271.        {
    272.     printf("so hoa don:%s",x.sohd);
    273.     printf("ngay lap hoa don:");
    274.     xuatngay(x.ngay);
    275.     printf("loai hoa don:%s",x.loai);
    276.     printf("nhan vien lap hoa don:");
    277.     xuatnv(x.manv);
    278.  
    279.        }
    280.        void nhapdshd(PTR & First)
    281.        {
    282.      clrscr();
    283.      textcolor(0);
    284.      textbackground(15);
    285.      printf("lap hoa don(nhan 0 ket thuc)");
    286.     int  stt=1;
    287.      hoadon x;
    288.       //     x.sohd=0;
    289.      while(1)
    290.      {
    291.      printf("nhap hoa don thu %d",stt);
    292.      printf("nhap so hoa don:");
    293.      fflush(stdin);
    294.      gets(x.sohd);
    295.      nhapngay(x.ngay);
    296.      do
    297.      {
    298.      printf("nhap loai hoa don:");
    299.      scanf("%s",&x.loai);
    300.      }while(ktloai(x.loai)!=1);
    301.  
    302.      nhapnv(x.manv);
    303.      insert_last(First,x);
    304.      stt++;
    305.      }
    306.      
    307.        }
    308.  
    309.  
    310.  
    311.  
    312.  
    313. /*************************************************************************/
    314. void main()
    315. {
    316. NGAY x;
    317.  list1 ds;
    318.  list2 dsvt;
    319. // nhapmangnv(ds);
    320. // xuatmangnv(ds);
    321. //nhapvt(dsvt);
    322. //xuatvt(dsvt);
    323. //nhapngay(x);
    324.    PTR dshd;
    325.    khoitao1(dshd);
    326.    nhapdshd(dshd);
    327.  getch();
    328. }

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    Nơi nào đó trong vũ trụ
    Bài viết
    550

    Code của bạn trong hàm nhapdshd(dshd); chỉ có while(1) mà không có break hay return thì sao mà dừng được.
    Gió thu lạnh lẽo hắt hiu lòng!

  3. #3
    Ngày gia nhập
    01 2010
    Nơi ở
    до свидания!
    Bài viết
    1,766

    while(1)==while(2)==...while(n) với mọi n!=0.

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

    Trích dẫn Nguyên bản được gửi bởi peterdrew Xem bài viết
    while(1)==while(2)==...while(n) với mọi n!=0.
    = while ("xxx") = while (*ptr) = while ('y') ... = while (true) = while (!false) = ...
    Mời các bạn ghé thăm blog cá nhân của tôi

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,685

    Trong các ứng dụng thực tế, người ta rất hạn chế sử dụng các câu lệnh lặp dạng: while(1), while(true), do {}while(1), .... Chỉ sử dụng nó trong một trường hợp bất đắc dĩ.

    Hạn chế sử dụng câu lệnh if, while(1), ... là một trong các tiêu chí của một lập trình viên chuyên nghiệp ở nhiều nơi và nhiều công ty. Tuy nhiên nó sẽ là vấn đề cực kỳ khó đối với người ít kinh nghiệm, khi yêu cầu xử lý một vấn đề mà hạn chế mức tối đa các câu lệnh if, hay giới hạn độ sâu của block chẳng hạn. Nó trở thành một tiêu chí đánh giá mức độ chuyên nghiệp và kinh nghiệm của một người lập trình. Vì thế các bạn nên chú ý, mặc dù không ai nói cho các bạn biết
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 13-01-2011 lúc 06:05 PM. Lý do: Lỗi chính tả
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    HN
    Bài viết
    7

    Mặc định while(1) trong lập trình C có ý nghĩa là gì?

    tks các bác nhìu lắm

  7. #7
    Ngày gia nhập
    01 2010
    Nơi ở
    Cần Thơ
    Bài viết
    83

    Tui nghĩ đã làm lập trình rồi, cách giải quết bài toán như thế nào là tối ưu là được, còn hạn chế nên dùng cấu trúc hay câu lệnh thì rất là khó, tuy nhiên mình có thể thay đổi các câu lệnh với nhau được trong một số trường hợp
    ví dụ như while và for có thể thay đổi được nhưng rất ít trường hợp thỏa mản yêu câu. Tốt nhất là chương trình chạy nhanh và tốt là ok

  8. #8
    Ngày gia nhập
    11 2007
    Bài viết
    16

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Trong các ứng dụng thực tế, người ta rất hạn chế sử dụng các câu lệnh lặp dạng: while(1), while(true), do {}while(1), .... Chỉ sử dụng nó trong một trường hợp bất đắc dĩ.

    Hạn chế sử dụng câu lệnh if, while(1), ... là một trong các tiêu chí của một lập trình viên chuyên nghiệp ở nhiều nơi và nhiều công ty. Tuy nhiên nó sẽ là vấn đề cực kỳ khó đối với người ít kinh nghiệm, khi yêu cầu xử lý một vấn đề mà hạn chế mức tối đa các câu lệnh if, hay giới hạn độ sâu của block chẳng hạn. Nó trở thành một tiêu chí đánh giá mức độ chuyên nghiệp và kinh nghiệm của một người lập trình. Vì thế các bạn nên chú ý, mặc dù không ai nói cho các bạn biết


    Mình giải thích rõ thêm chỗ này một chút:
    Vì sao programmer nên hạn chế việc sử dụng các hàm if, while,..???
    Trong programming có một thông số của source code gọi là complexity. Bạn có thể tham khảo về một loại complexity ở đây (http://en.wikipedia.org/wiki/Cyclomatic_complexity)
    Khi lập trình viên sử dụng các câu lệnh if, while, for sẽ làm tăng CC(Cyclomatic complexity) lên 1, khi sử dụng cấu trúc switch... case sẽ làm tăng CC lên nhiều (phụ thuộc vào số lượng cases).
    Khi độ phức tạp của source code nâng lên, sẽ gây ra nhiều hậu quả ( như về performance chẳng hạn), nhưng một hậu quả dễ nhìn thấy nhất là sẽ làm tăng số lượng test cases cho source code đó.
    Trong khi lập trình, các programmner nên cố gắng viết code làm sao cho độ CC của mỗi module <10( trong trường hợp đặc biệt, có thể chấp nhận là <15)

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

    Mặc định Tại sao lại hạn chế dùng IF

    Trích dẫn Nguyên bản được gửi bởi giacmoquydu Xem bài viết
    Mình giải thích rõ thêm chỗ này một chút:
    Vì sao programmer nên hạn chế việc sử dụng các hàm if, while,..???
    Trong programming có một thông số của source code gọi là complexity. Bạn có thể tham khảo về một loại complexity ở đây (http://en.wikipedia.org/wiki/Cyclomatic_complexity)
    Khi lập trình viên sử dụng các câu lệnh if, while, for sẽ làm tăng CC(Cyclomatic complexity) lên 1, khi sử dụng cấu trúc switch... case sẽ làm tăng CC lên nhiều (phụ thuộc vào số lượng cases).
    Khi độ phức tạp của source code nâng lên, sẽ gây ra nhiều hậu quả ( như về performance chẳng hạn), nhưng một hậu quả dễ nhìn thấy nhất là sẽ làm tăng số lượng test cases cho source code đó.
    Trong khi lập trình, các programmner nên cố gắng viết code làm sao cho độ CC của mỗi module <10( trong trường hợp đặc biệt, có thể chấp nhận là <15)
    ==>Hạn chê dùng while(1)... thì okei. Em thắc mắc tại sao lại hạn chế dùng if nhĩ, code em toàn if else :(
    Bán Sim ngày sinh cho ace nào sinh ngày 9/2/889 nè, viettel nha 09.72.76.9.2.89 cần thì liên hệ 01263.599.866 nhé!

  10. #10
    Ngày gia nhập
    06 2012
    Bài viết
    10

    Mặc định Mình cũng có suy nghĩ giống bạn vậy

    ==>Hạn chê dùng while(1)... thì okei. Em thắc mắc tại sao lại hạn chế dùng if nhĩ, code em toàn if else


    tại sao chứ,hàm nào cũng if else để so sanh hết,ngừoi lập trình chuyên nghiệp có cách khác ak,

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

  1. Xu thế thay đổi nghành công nghệ thông tin trong nước
    Gửi bởi anhduongtalents trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 1
    Bài viết cuối: 11-06-2012, 09:06 AM
  2. Đề xuất Đề nghị xóa bài viết "Suy nghĩ của 1 lập trình viên" trong mục KN
    Gửi bởi Trinh_lam93 trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 9
    Bài viết cuối: 28-01-2012, 12:23 AM
  3. Công nghệ mới giúp ứng dụng tinh nghệ trong ngăn ngừa và điều trị ung thư
    Gửi bởi vesim trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-08-2011, 02:39 PM
  4. Tuổi nghề của người trong ngành công nghệ phần mềm???
    Gửi bởi vuduykhanh trong diễn đàn Kinh nghiệm CNTT
    Trả lời: 19
    Bài viết cuối: 11-03-2010, 04:58 PM
  5. Các nghề trong lĩnh vực Công nghệ Thông tin.
    Gửi bởi tinlouis trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 3
    Bài viết cuối: 25-05-2009, 02:22 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