Bài giảng Kỹ thuật lập trình – Chương 5: Phong cách lập trình
lượt xem 7
download
Bài giảng Kỹ thuật lập trình – Chương 5: Phong cách lập trình trang bị cho người học những kiến thức cơ bản về: Khái niệm phong cách lập trình, một số quy tắc cơ bản về phong cách lập trình, viết tài liệu chương trình. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình – Chương 5: Phong cách lập trình
- om .c Chương 5: ng Phong cách lập trình co an th o ng du u cu 31/03/2020 SangDV 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Nội dung 1. Khái niệm phong cách lập trình om 2. Một số quy tắc cơ bản về phong cách lập .c trình ng 3. Viết tài liệu chương trình co an th o ng du u cu 31/03/2020 SangDV 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- om .c Khái niệm ng phong cách lập trình co an th o ng du u cu 31/03/2020 SangDV 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Tại sao cần phong cách lập trình? • Ai đọc chương trình của chúng ta? • Trình dịch om • Các lập trình viên khác và… bản thân chúng ta .c ng typedef struct{double x,y,z}vec;vec U,black,amb={.02,.02,.02};struct sphere{ vec cen,color;double rad,kd,ks,kt,kl,ir}*s,*best,sph[]={0.,6.,.5,1.,1.,1.,.9, co .05,.2,.85,0.,1.7,-1.,8.,-.5,1.,.5,.2,1.,.7,.3,0.,.05,1.2,1.,8.,-.5,.1,.8,.8, 1.,.3,.7,0.,0.,1.2,3.,-6.,15.,1.,.8,1.,7.,0.,0.,0.,.6,1.5,-3.,-3.,12.,.8,1., 1.,5.,0.,0.,0.,.5,1.5,};yx;double u,b,tmin,sqrt(),tan();double vdot(A,B)vec A an ,B;{return A.x*B.x+A.y*B.y+A.z*B.z;}vec vcomb(a,A,B)double a;vec A,B;{B.x+=a* A.x;B.y+=a*A.y;B.z+=a*A.z;return B;}vec vunit(A)vec A;{return vcomb(1./sqrt( th vdot(A,A)),A,black);}struct sphere*intersect(P,D)vec P,D;{best=0;tmin=1e30;s= sph+5;while(s--sph)b=vdot(D,U=vcomb(-1.,P,s-cen)),u=b*b-vdot(U,U)+s-rad*s - ng rad,u=u0?sqrt(u):1e31,u=b-u1e-7?b-u:b+u,tmin=u=1e-7&&u
- Tại sao cần phong cách lập trình? • Chương trình thường phải chỉnh sửa vì những lí do: om • Chưa hoàn thiện hoặc bị lỗi: phải bảo trì .c ng • Thêm chức năng mới: mở rộng co an • Phong cách lập trình có ảnh hưởng rất lớn tới th nguồn lực cần thiết để đọc hiểu và chỉnh sửa o ng chương trình. du u cu 31/03/2020 SangDV 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Tại sao cần phong cách lập trình? • “Programming is an art of telling another human what one wants om the computer to do.” .c Donald Knuth. ng • “Programming is 10% writing co code, and 90% reading code. an Reading your own code and th reading other code.” ng • “Taking that extra time to write a o proper description of what you du worked on will save huge u amounts of time in the future.” cu Tomer Ben Rachel, a full stack developer. 31/03/2020 SangDV 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Thế nào là một phong cách lập trình? • Là một tập hợp các quy tắc và hướng dẫn được sử dụng khi viết mã nguồn chương trình om .c ng co an th o ng du u cu 31/03/2020 SangDV 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chọn phong cách lập trình nào? • Có nhiều phong cách lập trình khác nhau. Thường mỗi công ty hoặc tổ chức có phong cách lập trình riêng. om • Ví dụ: .c • Google: ng https://google.github.io/styleguide/cppguide.html co • Linux kernel: an https://slurm.schedmd.com/coding_style.pdf th • GNU: ng https://www.gnu.org/prep/standards/standards.html o du u cu 31/03/2020 SangDV 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- om .c ng Một số quy tắc cơ bản co an th o ng du u cu 31/03/2020 SangDV 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các quy tắc cơ bản • Chúng ta sẽ đề cập một số quy tắc đơn giản của một phong cách lập trình tốt: om • Định dạng (format) .c • Cách đặt tên (naming conventions) ng • Viết đặc tả hàm (specification) co • Chú thích (comments) an th ng • Chúng ta tập trung chủ yếu vào làm cách nào để viết o một chương trình dễ đọc. du • Chúng ta sẽ minh họa các quy tắc bằng cách ví dụ. u cu • Phong cách lập trình thật có thể bao gồm hàng trăm quy tắc. 31/03/2020 SangDV 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định dạng: thụt đầu dòng và dấu ngoặc om .c int gcd(int a, int b) int gcd(int a, int b) { ng { while (a != b) { co while (a != b) if (a > b) a = a – b; an { else b = b – a; th if (a > b) a = a – b; } else b = b – a; ng return a; o } } du return a;} u cu • Thụt đầu dòng bằng 2 hoặc 4 dấu cách (phải nhất quán!). Tránh dùng • Đóng mở ngoặc nhất quán (ví dụ mở ngoặc ở cuối dòng) 31/03/2020 SangDV 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ thụt đầu dòng om .c ng if (month == FEB) { if (month == FEB) { co if (year % 4 == 0) if (year % 4 == 0) { if (day > 29) if (day > 29) an legal = FALSE; legal = FALSE; th else } if (day > 28) else { ng legal = FALSE; if (day > 28) o du } legal = FALSE; } u } cu (else matches “if day > 29”) 31/03/2020 SangDV 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ thụt đầu dòng • Use “else-if” cho cấu trúc đa lựa chọn • Ví dụ: Tìm kiếm nhị phân om .c ng co an th if (x < v[mid]) if (x < v[mid]) high = mid – 1; high = mid – 1; ng else else if (x > v[mid]) o if (x > v[mid]) low = mid + 1; du low = mid + 1; else else return mid; u cu return mid; 31/03/2020 SangDV 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đây có phải là một phong cách lập trình tốt? • Lập trình viên Python sử dụng Java om .c ng co an th o ng du u cu 31/03/2020 SangDV 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định dạng: dòng trống và dấu cách • Dùng dòng trống ngăn các phần khác nhau trong chương trình: om • Giữa các hàm khác nhau .c • Giữa các phần khác nhau của cùng một hàm (khởi ng tạo, vòng lặp chính, return…) co an • Dùng khoảng cách để chương trình dễ đọc hơn: th ng • Trong các biểu thức phức tạp (nhấn mạnh thứ tự o ưu tiên các phép toán) du • Phân tách các phần tử trong một danh sách u cu 31/03/2020 SangDV 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ dấu cách om .c // Dense code // Spaced declarations ng int numCars=0,time=0; int numCars = 0, time = 0; co // Confusing expression an // Emphasize precedences a = b c+d 2; a = b*c + d*2; th ng // No space after if/while while(a!=0) {…} // Space after if/while o while (a != 0) {…} du // Space after function name u // No space after function name cu x = power (y,2); // but space between parameters x = power(y, 2); 31/03/2020 SangDV 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ dòng trống • Dùng dòng trống để chia code thành các phần chính om #include #include .c ng /* Read a circle's radius from stdin, and compute and write its diameter and circumference to stdout. Return 0 if successful. */ co int main() { an const double PI = 3.14159; th int radius; ng int diam; double circum; o du printf("Enter the circle's radius:\n"); if (scanf("%d", &radius) != 1) u cu { fprintf(stderr, "Error: Not a number\n"); exit(EXIT_FAILURE); } … 31/03/2020 SangDV 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ dòng trống • Dùng dòng trống để chia code thành các phần chính om .c diam = 2 * radius; ng circum = PI * (double)diam; co printf("A circle with radius %d has diameter %d\n", radius, diam); an printf("and circumference %f.\n", circum); return 0; th ng } o du u cu 31/03/2020 SangDV 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Định dạng biểu thức • Nên dùng các biểu thức dạng nguyên bản om • Ví dụ: Kiểm tra nếu n thỏa mãn j < n < k .c ng if (!(n >= k) && !(n
- Định dạng biểu thức • Dùng () để tránh nhầm lẫn • Ví dụ: Kiểm tra nếu n thỏa mãn j < n < k om .c ng if (j < n && n < k) co an th if ((j < n) && (n < k))ng o du • Nên nhóm các nhóm một cách rõ ràng u cu • Toán tử quan hệ (ví dụ “>”) có độ ưu tiên cao hơn các toán tử logic (ví dụ “&&”), nhưng không phải ai cũng nhớ điều đó. 31/03/2020 SangDV 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình - Phạm Thế Bảo
0 p | 220 | 32
-
Bài giảng Kỹ thuật lập trình: Chương I - Lưu Hồng Việt
48 p | 194 | 23
-
Bài giảng Kỹ thuật lập trình: Chương IV - Lưu Hồng Việt
32 p | 151 | 17
-
Bài giảng Kỹ thuật lập trình: Chương III - Lưu Hồng Việt
51 p | 147 | 15
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 127 | 15
-
Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT
37 p | 114 | 10
-
Bài giảng Kỹ thuật lập trình - Bài 1: Tổng quan về kỹ thuật lập trình
65 p | 165 | 8
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 129 | 7
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - ThS. Dương Thành Phết
26 p | 92 | 7
-
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 p | 15 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 6 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 4 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn