Xây Dựng Phần Mềm Ứng Dụng Máy Tính Khoa Học cho Điện Thoại Cầm Tay Thông Minh chạy trên hệ điều hành Android.

52 406 1
Xây Dựng Phần Mềm Ứng Dụng Máy Tính Khoa Học cho Điện Thoại Cầm Tay Thông Minh chạy trên hệ điều hành Android.

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HOA SEN KHOA HỌC VÀ CÔNG NGHỆ Tên đề tài: Xây Dựng Phần Mềm Ứng Dụng Máy Tính Khoa Học cho Điện Thoại Cầm Tay Thông Minh chạy hệ điều hành Android Giảng viên hướng dẫn Lớp Thời gian thực Nhóm sinh viên thực : Nguyễn Anh Tuấn : QL091A : Tuần đến tuần 15 học kỳ 10.2A : Nguyễn Hải Triều - 093602 : Trần Thị Kim Hiền - 091544 : Dương Xuân Phúc - THÁNG 07 / NĂM 2011 TRÍCH YẾU Tên đề tài: Xây Dựng Phần Mềm Ứng Dụng Máy Tính Khoa Học (Scientific Calculator) cho Điện Thoại Cầm Tay Thông Minh (Smart Phone) chạy hệ điều hành Android Mục tiêu chính: Phân tích xây dựng thành công phần mềm ứng dụng máy tính khoa học cho điện thoại cầm tay thông minh chạy giả lập Android SDK Yêu cầu sinh viên: - Học môn lập trình hướng đối tượng, cấu trúc liệu, giải tích - Chịu khó học hỏi - Khả làm việc nhóm Phương pháp nguyên cứu: Nghiên cứu công việc hướng dẫn giám sát giảng viên trường đại học Hoa Sen, phép nghiên cứu tài liệu liên quan trình thực đồ án Kết đạt được: Tập thể nhóm: + Phân tích rõ module chức máy tính khoa học + Xây dựng thành công phần mềm ứng dụng máy tính khoa học chạy điện thoại cầm tay thông minh + Update lên điện thoại thông minh thật có giả lập Android SDK chạy thành công Cá nhân: + Nâng cao khả viết code + Nâng cao khả phân tích giải pháp giải vấn đề + Nâng cao khả làm việc nhóm thành viên LỜI CẢM ƠN Trong trình thực đồ án giúp nhóm có kiến thức thực tế cần thiết Chúng xin chân thành cảm ơn thầy cô khoa Khoa Học Công Nghệ đặc biệt thầy cô ngành Công Nghệ Thông Tin trường Đại Học Hoa Sen tạo hội cho thực đồ án Qua đây, xin cảm ơn thầy, cô khoa Khoa Học Công Nghệ tận tình giảng dạy cho biết kiến thức chủ yếu, để có tảng tốt cho công việc sau Cuối cùng, cảm ơn thầy Nguyễn Anh Tuấn suốt trình thực đồ án giúp đỡ tận tình giảng dạy cho kiến thức Khi hoàn thành báo cáo trải qua khoảng thời gian làm việc với thành viên nhóm.Thật sự, khoảng thời gian ngắn để thể tinh thần làm việc nhóm, vận dụng kiến thức học để hoàn thành công việc cách tốt Xin chân thành cảm ơn Khoa Khoa Học Công Nghệ NHẬP ĐỀ Sau thời gian học tập trau dồi kiến thức giai đoạn tốt để người nhóm áp dụng kiến thức học để vận dụng vào đề tài mà trường giao cho làm Đây giai đoạn để thấy rõ khả tiếp thu, nắm vững kiến thức mức độ Mục tiêu giảng viên đặt cho là:  Làm quen với cách thức làm việc theo nhóm  Nắm vững lập trình thành thạo với Java Android  Dùng Java Android thiết kế “Scientific Calculator” Bên cạnh mục tiêu nhóm đặt là:  Từ đề tài mở rộng ứng dụng cho đề tài khác có liên quan MỤC LỤC BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HOA SEN LỜI CẢM ƠN NHẬP ĐỀ .4 MỤC LỤC MÔ TẢ YÊU CẦU ĐỀ TÀI YÊU CẦU ĐỒ ÁN NỘI DUNG BÁO CÁO THUẬT TOÁN CHUYÊN DỤNG Calculator: Smartphone: .9 Sơ lược hệ điều hành Android: .9 PHÂN TÍCH CHƯƠNG TRÌNH .10 Mô tả chức 10 LƯU ĐỒ KÍ PHÁP BALAN 13 LƯU ĐỒ THUẬT TOÁN ĐỘ ƯU TIÊN 19 LƯU ĐỒ GIẢI THUẬT CỘNG, TRỪ 24 Lưu đồ giải thuật đưa trường hợp đặc biệt cộng trừ thành dạng đơn giản 24 Lưu đồ giải thuật phép cộng .26 Đánh giá kết 48 NHỮNG KỶ THUẬT VÀ HƯỚNG MỞ RỘNG CỦA CHƯƠNG TRÌNH 50 Những kĩ thuật công nghệ áp dụng chương trình 50 Hướng mở rộng chương trình .50 KẾT LUẬN 51 TÀI LIÊU THAM KHẢO 52 MÔ TẢ YÊU CẦU ĐỀ TÀI Gần điện thoại cầm tay thông minh trở thành vật “cần phải có” sống ngày giới làm việc “trí thức” Viết phần mềm tiện ích nâng cao giá trị sử dụng cho chúng trở nên trào lưu cho công ty phát triển phần mềm, giới lập trình viên chuyên nghiệp không chuyên.Đặc biệt ứng dụng cho máy chạy hệ điều hành Android Điểm cần lưu ý phần cứng (hardware) đa số điện thoại cầm tay xử lý tính dấu phẩy động (floating-point processor) Điều làm việc phát triển phần mềm cho chúng trở nên phức tạp lý thú Cũng nên biết nhiều ứng dụng phần mềm đòi hỏi phép tính dấu phẩy động (bề tưởng không cần thiết), ví dụ tính toán phần cong (curves) cho phong chữ DGOPSWY… Để xử lý số thực SV tìm hiểu áp dụng fixed-point vào tất phép tính toán Phần mềm máy tính cài đặt sẵn điện thoại cầm tay dừng lại mức độ cộng trừ nhân chia, mức nhu cầu sử dụng giới làm việc “trí thức” cao hơn, mức độ máy tính khoa học Đề tài “Xây Dựng Phần Mềm Ứng Dụng Máy Tính Khoa Học cho Điện Thoại Cầm Tay Thông Minh chạy hệ điều hành Android” nhằm nâng cao kỹ lập trình, phân tích, thiết kế xây dựng ứng dụng thực tiển cho sinh viên từ yêu cầu phân tích Xây dựng phần mềm ứng dụng máy tính khoa học thực thụ không đơn giản Cho nên mức độ yêu cầu đề tài bao gồm phép toán hàm đơn giản Đồng thời ứng dụng giới hạn cho máy điện thoại cầm tay thông minh hình (lớn, cảm ứng, …) chúng cho phép thiết kế xây dựng giao diện phức tạp đa năng, xử lý chúng đủ mạnh để tính toán toán phức tạp (phát sinh từ việc xử lý tính dấu phẩy động) nhằm đáp ứng yêu cầu đề tài YÊU CẦU ĐỒ ÁN Xây dựng giao diện (graphics interface) cho ứng dụng tảng Android tương tự hình sau: Nhập xử lý biểu thức: a Cho phép nhập biểu thức dùng dạng mẩu (inputting expression using standard format) máy tính khoa học thực Ví dụ nhập biểu thức: 2*(3.6 + log(5 + 3÷4.1) – sin(29.7)) – e2.7 b Nhập hàm: tự động thêm dấu ngoặc mở nhập hàm Ví dụ nhấn hàm sin thể sin( biểu thức c Cho phép bỏ dấu nhân (*) trường hợp sau: i Trước dấu ngoặc mở ‘(‘ Ví dụ: 2*(3.6 + 5.6) → 2(3.6 + 5.6) ii Trước hàm có dấu ngoặc mở: 2.0*sin(30) → 2.0sin(30) iii Trước biến số, số: 2A, 2y, 2π, … d Sửa chửa biểu thức: di chuyển trỏ (cursor) để xóa/thêm biểu thức Các phép tính cộng +, trừ -, nhân *, chia ÷ Các phép tính với hàm: x , x , 1/x, n!, ln (log số e), log (log số 10), 10x, ex, sin, cos, tan, Abs, xy, sinh, cosh, -1 -1 -1 -1 -1 -1 Các phép tính với hàm: sin , cos , tan , sinh , cosh , Có thể dùng degree hay radians cho hàm lượng giác (trigonometry) Các phép tính dựa sáu mươi (sexagesminal) độ, phút, giây Các phép tính cho Base-N (hex, dec, oct, bin) Giải phương trình: a Ax + B = b Ax + Bx + C = 10 Giải hệ hai phương trình với hai ẩn số 11 Gọi dùng lại nội dung (ít năm) biểu thức tính toán cũ 12 Biểu thị kết quả: a Dạng số thập phân (decimal number), ví dụ 100÷7 = 14.2857142857142857142 Có thể xác định số chữ số thập phân (decimal place) kết quả, ví dụ 100÷7 = 14.286 với chữ số thập phân b Dạng số khoa học (scientific number) ví dụ 100÷7 = 1.42857142857142857142E+01 Đồng thời xác định số chữ số có nghĩa (significant digits) kết quả, ví dụ 100÷7 = 1.4286E+01 với số chữ số có nghĩa 13 Hướng dẫn sử dụng NỘI DUNG BÁO CÁO THUẬT TOÁN CHUYÊN DỤNG Calculator: Microsoft Calculator, hay gọi Calculatortheo tiêu đề mà chương trình hiển thị, ứng dụng tính toán kèm tất phiên hệ điều hành Microsoft Windows Chương trình kích hoạt lệnh "calc" phần lớn hệ thống Windows Smartphone: Smartphone, hay gọi điện thoại thông minh, kết hợp điện thoại PDA Smartphone ưu việt điện thoại thông thường chỗ tích hợp thêm tính văn phòng hỗ trợ người dùng Ngoài ra, so với PDA phone smartphone lại có tính ổn định chức thoại kết nối mạng tốt Sơ lược hệ điều hành Android: Android hệ điều hành điện thoại di động (và số đầu phát HD, HD Player) phát triển Google dựa tảng Linux Trước đây, Android phát triển công ty liên hợp Android ( sau Google mua lại vào năm 2005) Theo NPD, thiết bị di động sử dụng hệ điều hành android bán Mỹ quý II năm 2010 xếp vị trí với 33%, thứ BB os với 28% iOS vị trí thứ với 22% Android có cộng đồng nhà phát triển lớn viết ứng dụng cho hệ điều hành mình.Hiện có khoảng 70,000 ứng dụng cho Android os vào khoảng 100,000 ứng dụng đệ trình, điều khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ Các nhà phát triển viết ứng dụng cho Android dựa ngôn ngữ Java Sự mắt Android vào ngày tháng 11 năm 2007 gắn với thành lập liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm viễn thông nhằm mục đính tạo nên chuẩn mở cho điện thoại di động tương lai Google công bố hầu hết mã nguồn Android theo cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng mã; triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã Java 1.75 triệu dòng mã C++ PHÂN TÍCH CHƯƠNG TRÌNH Mô tả chức Chức xử lý biểu thức: Giới thiệu Bình thường, để viết biểu thức tổng số, ta viết a + b Cách viết gọi trung tố (infix) Bởi dấu + (ta gọi toán tử) nằm a, b (toán hạng) Một biểu thức phức tạp dạng (a + b) * c Ký pháp Nghịch đảo Ba Lan (Reversed Polish Notation - RPN) dạng biểu thức hậu tố (postfix), nghĩa toán tử nằm sau toán hạng Theo đó, biểu thức a + b viết thành a b +; biểu thức (a + b) * c viết thành a b + c * Phương pháp giúp loại bỏ dấu ngoặc biểu thức, lưu ý tới mức ưu tiên toán tử (operator precedence) RPN phương tiện tốt giúp máy tính "đọc" biểu thức toán học, từ tính giá trị Vậy, ta nhập biểu thức toán vào chương trình tính giá trị biểu thức, chuyển biểu thức dạng RPN, sau tính toán Toán tử nhị phân & Toán tử đơn phân: Một toán tử gọi nhị phân tác động lên toán hạng, cộng (+), trừ (-), nhân ( *), chia (/) lũy thừa (^) toán tử nhị phân Một toán tử gọi đơn phân tác động lên toán hạng, dấu âm (-) dương (+) toán tử đơn phân Trình tự chuyển đổi Trước hết tạo ba mảng chuỗi, đặt tên number, queueChar Stack Number chứa toán tử,queueChar chứa toán tử và vị trí toán hạng sau lúc chuyển đổi Stack tạm thời chứa toán tử lúc chờ đưa vào queueChar Ta theo vòng lặp từ đầu cuối biểu thức, sau: Nếu gặp toán hạng, push vào number push vị trí toán hạng vào queueChar Nếu gặp dấu "(", push vào Stack Nếu gặp dấu ")", pop toán tử Stack vào queueChar gặp dấu "(", pop dấu "(" bỏ 10 LƯU ĐỒ GIẢI THUẬT PHÉP CHIA START char *chia(c tam tam1 de ultoa(t c[tam]=NULL; return c; for(tam1=0;tam1 END 38 Chức hàm yêu cầu Lũy thứa, bình phương, lập phương, giai thừa, ex: Với phép toán giai thừa: áp dụng công thức Code: private int gt(String a) { int n = Integer.parseInt(a); int kq = 1; while(n != 1) { kq = kq * n; n ; } return kq; } Với phép toán bình phương: áp dụng công thức Code: public final double sqr(String x) { double t = nhan(x, x); return t; } Với phép toán lập phương: áp dụng công thức Code: public final double cube(String x) { double t = nhan(new Double(nhan(x, x)).toString(), x); return t; } Với phép toán lũy thừa số mũ nguyên dương: áp dụng công thức Code: public final double lt(String x, String n) { 39 int i, j; double t = 1; double y; y = Double.parseDouble(x); j = Short.parseShort(n); for (i = 0; i < j; i++) { t = nhan(new Double(t).toString(), new Double(y).toString()); } return t; } Với phép toán ex: áp dụng công thức Code: private double powe(String a) { double kq = 1, tu, mau, ps; for (int i = 1; i < 20; i++) { tu = lt(a, new Integer(i).toString()); mau = gt(new Integer(i).toString()); ps = chia(new Double(tu).toString(), new Double(mau).toString()); kq = cong(new Double(kq).toString(),new Double(ps).toString()) ; } return kq; } Căn bậc 2, bậc 3, bậc y, trị tuyệt đối Với phép toán trị tuyệt đối: áp dụng công thức Code: private double abs(String a) { double x = Double.parseDouble(a); if (x < 0) { x = nhan(a, "-1"); } return x; } Với phép toán bậc 2: áp dụng công thức 40 Ví dụ: Tính , đến số đáng kể Do đó, Code: public final double sqrt(String a) { double x = Double.parseDouble(a); if (x < 0) { return 0; } if (x == 0) return 0; double xn, ketqua, tam; xn = chia(new Double(cong(a, "1")).toString(), "2"); { ketqua = xn; xn = nhan("0.5", new Double(chia(new Double(cong(new Double(xn).toString(), a)).toString(), new Double(xn).toString())).toString()); tam = tru(new Double(xn).toString(), new Double(ketqua).toString()); 41 if (tam < 0) tam = -tam; } while (tam > eps); return xn; } Với phép toán bậc 3: áp dụng công thức o ln, log: Với phép toán lnx: áp dụng công thức Code: private double ln(String a) { double x = Double.parseDouble(a); double ps = chia(new Double(tru(a, "1")).toString(), new Double(cong(a, "1")).toString()); double kq = ps, t1, t2, t; if (x > 0) { for (int i = 1; i < 20; i++) { t1 = 1/i; t2 = lt(new Double(ps).toString(), new Double(t1).toString()); t = nhan(new Double(t1).toString(), new Double(t2).toString()); kq = cong(new Double(kq).toString(), new Double(t).toString()); i++; } } kq = nhan(new Double(kq).toString(), "2"); return kq; } Với phép toán logx: áp dụng công thức Code: private double log(String a) { double kq = 0; double x = Double.parseDouble(a); String ln10; if (x  phương trình có hai nghiệm phân biệt Code: private String PTB2(String a, String b, String c) { double result, soa, sob, soc, x1 = 0, x2 = 0; soa = Double.parseDouble(a); sob = Double.parseDouble(b); soc = Double.parseDouble(c); if (soa == 0) { if (sob == 0) { if (soc == 0) return "Phương trình có vô số nghiệm"; else return "Phương trình vô nghiệm"; } else { result = chia("-" + c, b); return new Double(result).toString(); } } else { double t = nhan("4", new Double(nhan(a, c)).toString()); 46 double delta = tru(new Double(sqr(b)).toString(), new Double(t).toString()); if (delta < 0.0) ; else if (delta == 0) { result = chia("-" + b, new Double(nhan("2", a)).toString()); } else { double ds = lt(new Double(delta).toString(), "0.5"); double mau = nhan("2", a); x1 = chia(new Double(cong(new Double(sqr(b)).toString(), new Double(ds).toString())).toString(), new Double(mau).toString()); x2 = chia(new Double(tru(new Double(sqr(b)).toString(), new Double(ds).toString())).toString(), new Double(mau).toString()); } } return "Phương trình có nghiệm phân biệt:\n" + "x1 = " + new Double(x1).toString() + "\n" + "x2 =" + new Double(x2).toString(); } Các form chương trình hướng dẫn sử dụng Các nút sin, cos, tan, sinh, cosh, click vào hiển thị thêm dấu “(“, ket thúc nên them dấu “)” để chương trình hiểu thực thi 47 Đối với hàm khác gần giống Calculator Windows • x : sqr( y • x:^ • x : cube( • n!: ! y • √x: yroot • √x: cuberoot( x • 10 : 10^ • Π: PI • Ln: ln • Log: log •  9:  • +, - , *, /: +, -, *, / • √x: sqrt( • ±: • %: % • 1/x: 1/ • Sin, cos, tan: sin(, cos(, tan( • Sinh, cosh, tanh: sinh(, cosh(, tanh( Ví dụ: Ta muốn nhập biểu thức 2*(3.6 + log(5 + 3÷4.1) – sin(29.7)) – e2.7 * 82 Lần lượt click nút * ( + log ( + / 1) – sin( ) ) – e^ * sqr(8) Click vào nút “=” chương trình trả kết xoá biểu thức ta vừa nhập để nhập biểu thức khác Đánh giá kết Nhóm thực yêu cầu • Tính toán phép tính dạng biểu thức đưa vào • Tính toán bốn phép tính có dấu chấm động cộng, trừ, nhân, chia • Một số hàm yêu cầu thực - Hàm sin - Hàm cos - Hàm tan - Hàm sinh - Hàm cosh - Hàm - Hàm ln - Hàm log x - Hàm e - Hàm bình phương - Hàm lập phương y - Hàm x với số mũ nguyên dương 48 - Giải phương trình bậc - Giai phương trình bậc - Hàm bậc hai phục vụ cho giải phương trinh bậc Chất lượng: Các phép tính cộng, trừ, nhân, chia hoàn thiện ko gây lỗi nhỏ làm sai số lớn Tuy nhiên chưa thể thực việc thay đổi nút sin, cos,… nên chưa thể thực thi hàm sin-1, cos-1, … Và hàm xy áp dụng cho số mũ nguyên dương Chưa thể tạo activity thực thi hàm giải phương trình bậc 1, bậc 49 NHỮNG KỶ THUẬT VÀ HƯỚNG MỞ RỘNG CỦA CHƯƠNG TRÌNH Những kĩ thuật công nghệ áp dụng chương trình Đối với chương trình xây dựng ngôn ngữ lập trình Java, Eclipse kĩ thuật sử dụng phổ biến hướng đối tượng, gọi thông qua đối tượng Ngoài ra, để giúp cho chương trình hoàn thiện sử dụng thêm phần xử lý luồng chương trình.Đây thật công việc sức chúng tôi, từ tinh thần tâm chịu khó nhóm cuối công việc hoàn tất Hướng mở rộng chương trình Do độ khó yêu cầu đặt nên vài yêu cầu chưa thực được, nhóm tâm giải vấn đề lại tương lai: Các phép tính dựa sáu mươi (sexagesminal) độ, phút, giây; Các phép tính cho Base-N (hex, dec, oct, bin); Giải hệ hai phương trình với hai ẩn số;Các phép tính với hàm: xy với số mũ thực, sin-1, cos-1, tan-1, sinh, cosh, tanh, sinh-1, cosh-1, tanh-1 50 KẾT LUẬN Sau xây dựng xong chương trình nhìn chung tự nhận thấy hoàn thành tốt phần yêu cầu đề tài đặt ra, mục tiêu mà nhóm tự đặt cho Nhưng bên cạnh trình làm mục tiêu mà tự nhận thấy chưa thực tốt thiếu sót trình thực Bài học mà rút đợt làm đề tài theo nhóm điều đòan kết - trí nhóm thực hành đòi hỏi phải có linh hoạt cao nhiều so với học lý thuyết Qua khả tự tìm hiểu sáng tạo nâng cao khả làm việc theo nhóm Không dừng lại mà hiểu rõ hơn, sâu công nghệ Java nói riêng, tảng Eclipse nói chung quan trọng việc xử lý luồng cho chương trình, giúp cho chương trình linh hoạt nhiều, việc sử dụng tiện ích, phần mềm hỗ trợ khác để giúp cho chương trình hoàn thiện hơn, chuyên nghiệp 51 TÀI LIÊU THAM KHẢO Lập trình hướng đối tượng Java, Nguyễn Tiến – Nguyễn Văn Hoài – Đặng Xuân Hường, Nhà xuất Thống Kê Wikipedia.org tư liệu tham khảo tư liệu mạng 52 [...]... *chia(char a[],char b[]); Chuyển dạng 2 chuỗi a và b thành 2 số nguyên kiểu unsigned long int Ta được 2 số x y sau và thực hiện phép chia : 65200/3456 = 18 dư 2992 -> chèn 18 vào mảng kq[] Chèn dấu chấm động vào mảng kq[] Tiếp tục lấy phần du chia cho số hạng b, nếu số chia cho b nhỏ hơn b thì nhân số chia cho 10 cứ tiếp tục thực hiện công việc đó cho đến khi dư = 0 đối với phép chia có hạn: 29920 /... kiểm tra toán hạng, Priority (char x) với giá trị return =2 cho toán tử ‘+’ và ‘-‘ giá trị return = 1 cho toán tử ‘*’ và ‘/’ để so sánh độ ưu tiên toán tử cuối cùng chuyển sang dạng hậu tố bằng hàm Convert () và tính kết quả bằng hàm tinhtoan() 18 LƯU ĐỒ THUẬT TOÁN ĐỘ ƯU TIÊN START Priority (char x) strchr ("!~SCTPELaA",touppe No 19  Cộng, trừ: Cho biểu thức: 2 – (3.1 + 2) Sau khi chuyển sang hậu tố bằng... vào +/ Stack (Ghi 5 vào + / number (Pop cho đến khi lấy được (, ghi +/ các toán tử pop được ra number Pop tất cả các toán tử ra khỏi Stack và ghi vào queueChar Trình tự tính toán Tạo một ngăn xếp nữa gọi là StackTinh Xét từng phần tử của queueChar, từ thấp lên cao (từ đầu về cuối) 11 Nếu gặp toán hạng thì push vào StackTinh Nếu gặp toán tử nhị phân, pop hai phần tử từ StackTinh, thực hiện phép toán,... kết quả sau) -a * -b  a * b (bỏ dấu trừ ) Sau đó thực hiện phép loại bỏ dấu chấm động ở mảng a và b với hàm char * check_balance1() để tính số kí tự cần lùi sau dấu phẩy là 2n khi có kết quả 65.2 * 3.456 65200 * 3456 Sau đó lần lượt vừa nhân từng phần tử từ mảng b[] cho mảng a[] vừa cộng dồn vào chuỗi kết quả một cách lần lượt ta có các mảng kq sau: 391200 326000 29 3651200 260800 29731200 195300 225331200... StackTinh Nếu gặp toán tử nhị phân, pop hai phần tử từ StackTinh, thực hiện phép toán, push kết quả trở lại StackTinh Nếu gặp toán tử đơn phân, pop một phần tử từ StackTinh, thực hiện phép toán, push kết quả trở lại StackTinh Kết quả cuối cùng là phần tử trên cùng của StackTinh 12 LƯU ĐỒ KÍ PHÁP BALAN START void Convert( switch(priority(x1)) Yes case 0 j=i+1; 13 (isdigit(st[j]) || st[j]==' 1 Yes case... hàm check_balance(); nhàm cân bằng hai mảng 03.45 65.20 21 Sau đó lần lượt cộng hay trừ từng phần tử tùy thuộc vào trường hợp từ 2 mảng vào mảng kq[] bằng hàm char *cong(char x[],char y[]) hoặc char *tru(char x[],char y[]) trong trường hợp này dùng char *tru(char x[],char y[]) Tại Hàm Char * tru, so Sánh từng phần tử [i] ở 2 mảng a và b nếu a[i] so duong if (st1.charAt(0) == '-') { st1 =

Ngày đăng: 11/04/2016, 12:02

Từ khóa liên quan

Mục lục

  • LỜI CẢM ƠN

  • NHẬP ĐỀ

  • MỤC LỤC

  • MÔ TẢ YÊU CẦU ĐỀ TÀI

  • YÊU CẦU ĐỒ ÁN

  • NỘI DUNG BÁO CÁO

    • THUẬT TOÁN CHUYÊN DỤNG

      • Calculator:

      • Smartphone:

      • Sơ lược hệ điều hành Android:

      • PHÂN TÍCH CHƯƠNG TRÌNH

        • Mô tả chức năng

          • Chức năng xử lý biểu thức:

          • LƯU ĐỒ KÍ PHÁP BALAN

            • Chức năng cộng, trừ , nhân, chia:

            • LƯU ĐỒ THUẬT TOÁN ĐỘ ƯU TIÊN

            • LƯU ĐỒ GIẢI THUẬT CỘNG, TRỪ

              • Lưu đồ giải thuật đưa các trường hợp đặc biệt của cộng trừ thành dạng đơn giản

              • Lưu đồ giải thuật phép cộng

                • Chức năng các hàm được yêu cầu

                  • Lũy thứa, bình phương, lập phương, giai thừa, ex:

                  • Căn bậc 2, bậc 3, bậc y, trị tuyệt đối

                  • Các hàm lượng giác

                  • Phương trình bậc 1, bậc 2

                  • Các form chính của chương trình và hướng dẫn sử dụng

                  • Đánh giá kết quả

                  • NHỮNG KỶ THUẬT VÀ HƯỚNG MỞ RỘNG CỦA CHƯƠNG TRÌNH

                    • Những kĩ thuật và công nghệ đã áp dụng trong chương trình

                    • Hướng mở rộng chương trình

Tài liệu cùng người dùng

Tài liệu liên quan