-
14-08-2014, 03:28 PM #1Junior 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:
- Phải chăng Dev C++ bị lỗi
- var a: array[1..20] of 0..1
- [Hỏi C++] Sửa lỗi giúp mình bài này
- sử dụng mảng
- ứng dụng cây 2-3-4 cho bài toán quản lý?
- thuật toán
- ai jup minh lam phan sua~ voi Xoa voi
- viết ct mảng 1 chiều gồm n cán bộ,gồm 3 trường hoten, hệ số lương,lương
- Thắc mắc bài tập C về chuỗi
- Giá trị trung bình trong mảng
-
14-08-2014, 06:16 PM #2Junior 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 #3Junior 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 #4Junior 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 #5Junior 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 #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Rất dễ hiểu, em xin cám ơn !
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...