-
14-08-2014, 03:28 PM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cả 2 đều làm nhiệm vụ giống nhau nhưng cái code thứ 2 dễ đọc hơn: main() xử lý công việc của main() là nhập dữ liệu và xuất ra kết quả, ptb2() xử lý công việc của ptb2() là giải pt bậc 2.
Code đầu tiên gộp lại vào trong main() thì vd nếu chương trình cho chọn option 1 là giải ptb2, 2 là giải ptb3, 3 là giải pt 2 ẩn bậc 1, ... thì main() sẽ làm thêm 3 công việc là giải 3 loại pt. Y như bồi bàn mà phải vào bếp nấu ăn luôn vậy. Tách ra như code 2 thì main() chỉ là bồi bàn nhận list món ăn (input) và bưng đồ ăn ra (output) cho khách (user), còn phần nấu các món trong list món ăn là do các đầu bếp (các hàm ptb2(), ptb3(), ptb1_2()) đảm nhiệm.
mỗi hàm chỉ nên xử lý duy nhất 1 việc. Nếu 1 hàm nhiều hơn 25 dòng thì nên xem xét tách ra thành nhiều hàm khác... Có khi ngta bắt 1 hàm tối đa chỉ có 10 dòng nữa [IMG]images/smilies/tongue.png[/IMG]View more random threads:
- Trình bày phép nhân 3 số nguyên?
- mọi người giúp em viết code c những bài này với. ^^
- phương pháp quay lui
- tìm số hoàn hảo lớn nhất trong mảng
- Biểu diễn phân số dưới dạng số thập phân
- Cài C
- mệnh đề if ...else trong hàm trùng phương
- Vẽ hình chữ nhật
- Chuyển dữ liệu từ biến về mảng
- Lùi về một vị trí trong linked list
-
14-08-2014, 06:16 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sử dụng đối con trỏ ở đây có hiệu quả gì hơn chương trình bình thường ạ ?
Em đang học đến phần sử dụng đối con trỏ, có ví dụ về giải pt bậc 2 một ẩn, em có viết 2 loại chương trình đều phục vụ mục đích đó(một là dùng đối con trỏ, hai là chương trình bình thường trong hàm main).Cả 2 chương trình đều cho ra kết quả như nhau, điều em thắc mắc là việc sử dụng đối con trỏ trong chương trình 2 mang điều gì đặc biệt hơn là chương trình 1. Em mong các pro giải thích cho em ạ ![IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]
Chương trình cơ bản trong hàm main:
Mã:int main(int argc, char *argv[]) { float a,b,c,x1,x2,delta; printf("Nhap a,b,c:"); scanf("%f%f%f",&a,&b,&c); if(a==0){ printf(" a=0"); }else{ delta=b*b-4*a*c; if(delta<0){ printf(" delta<0"); }else{ x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf(" x1 =%.2f,x2 =%.2f",x1,x2); } } return 0; }
Mã:int ptb2(float a,float b,float c,float *x1,float *x2); int main(int argc, char *argv[]) { int s; float a,b,c,x1,x2; printf("Nhap a,b,c:"); scanf("%f%f%f",&a,&b,&c); s=ptb2(a,b,c,&x1,&x2); if(s==0){ printf(" a=0"); } else if(s==-1){ printf(" delta<0"); }else{ printf(" x1=%0.2f,x2=%0.2f",x1,x2); } } int ptb2(float a,float b,float c,float *x1,float *x2){ float delta; if(a==0){return 0;} delta=b*b-4*a*c; if(delta<0){return -1;} *x1=(-b+sqrt(delta))/(2*a); *x2=(-b-sqrt(delta))/(2*a); }
-
14-08-2014, 07:16 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chủ yếu là nếu bạn cần nghiệm cho việc khác thì bạn dùng tham chiếu thôi [IMG]images/smilies/smile.png[/IMG]
Chứ để tách riêng thì cũng ko cần.
-
15-08-2014, 05:47 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bàn thêm về việc gộp mã thành một hàm hay tách thành nhiều hàm :
Có thể đây không phải là ý hay, nhưng là suy nghĩ riêng của mình. Mình sẽ tách thành các hàm nhỏ hơn khi một đoạn mã trong hàm này có sự tương đồng với một đoạn mã trong hàm khác. Khi số dòng trong một hàm vượt quá chiều cao của khung soạn thảo mã, mình cũng tách ra để xem toàn bộ một hàm mà không phải sử dụng thanh cuộn hay dùng bánh xe chuột.
Với đoạn mã ngắn và đơn giản của bạn chủ thớt, mình sẽ chọn cách viết là 1 hàm.
Mời các bạn ý kiến thêm. Thân.
-
15-08-2014, 06:15 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
^ Mình sẽ phân chia theo chức năng.
-
15-08-2014, 07:54 PM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Rất dễ hiểu, em xin cám ơn !
NGUỒN SỈ ÁO KHOÁC DENIM NỮ TPHCM CHẤT LƯỢNG CAO Bạn muốn nhập sỉ áo khoác denim nữ để bắt đầu việc buôn bán Online phong cách nhưng lại chưa có kinh nghiệm, muốn sắm xưởng sỉ xống áo vừa có thể giải...
Xưởng sỉ áo khoác jeans denim giá...