Tìm hiểu ký pháp ba lan và xây dựng ứng dụng calculator

30 1.4K 4
Tìm hiểu ký pháp ba lan và xây dựng ứng dụng calculator

Đ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

Tài liệu báo cáo thực tập cơ sở Tìm hiểu ký pháp ba lan và xây dựng ứng dụng calculator trên thiết bị di động trường đại học công nghệ thông tin và truyền thông Thái Nguyên.Tài liệu gồm 3 phần: Tìm hiểu ký pháp Ba Lan, Tìm hiểu về Android, Xây dựng ứng dụng máy tính Calculator

MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: TÌM HIỂU PHÁP BA LAN 1.1 Giới thiệu pháp Ba Lan .4 1.2 Ý tưởng toán 1.3 Thuật toán chuyển đổi từ trung tố sang hậu tố 1.3.1 Độ ưu tiên toán tử 1.3.2 Kiểm tra toán tử toán hạng 1.3.3 Chuẩn hóa biểu thức Infix 1.3.4 Chuyển biểu thức Infix sang Postfix 1.3.5 Thuật tốn tính giá trị biểu thức tiền tố .9 1.3.6 Thuật tốn tính giá trị biểu thức hậu tố 10 CHƯƠNG 2: TÌM HIỂU VỀ ANDROID 13 2.1 Giới thiệu Anroid 13 2.2 Ưu nhược điểm hệ điều hành Android 13 2.3 Các thành phần ứng dụng Android 14 2.4 Các thành phần giao diện Android 14 2.3.1 View 14 2.3.2 ViewGroup 15 2.5 Các control Android .16 2.6 Cách tạo ứng dụng Android 17 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ANDROID .20 3.1 Ý tưởng xây dựng ứng dụng “Calculator” .20 3.2 Công cụ 20 3.3 Giao diện chương trình 21 3.4 Source code .23 KẾT LUẬN 29 TÀI LIỆU THAM KHẢO 30 LỜI NÓI ĐẦU Mạng điện thoại di động xuất Việt Nam từ đầu năm 1990 theo thời gian số lượng thuê bao nhà cung cấp dịch vụ động Việt Nam ngày tăng Do nhu cầu trao đổi thông tin ngày tăng nhu cầu sử dụng sản phẩm cơng nghệ cao nhiều tính năng, cấu hình cao, chất lượng tốt, kiểu dáng mẫu mà đẹp, phong phú nên nhà cung cấp phải luôn cải thiện, nâng cao sản phẩm Do việc xây dựng ứng dụng cho điện thoại di động ngành công nghiệp đầy tiềm hứa hẹn nhiều phát triển vượt bậc ngành khoa học kĩ thuật Cùng với phát triển thị trường điện thoại di động phát triển mạnh mẽ xu hướng lập trình phần mềm ứng dụng cho thiết bị di động Phần mềm, ứng dụng cho điện thoại di động đa dạng phong phú hệ điều hành di động phát triển mạnh mẽ thay đổi từ ngày Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile Application có phát triển thị trường truyền thông di động Trong vài năm trở lại đây, hệ điều hành Android đời với kế thừa ưu việt hệ điều hành đời trước kết hợp nhiều công nghệ tiên tiến nay, nhà phát triển công nghệ tiếng Google Android nhanh chóng đối thủ cạnh tranh mạnh mẽ với hệ điều hành trước hệ điều hành di động tương lai nhiều người ưa chuộng Ngày nay, với phát triển nhanh chóng xã hội, tiện ích smartphone nhu cầu tình tốn, em chọn đề tài “Tìm hiểu pháp Ba Lan xây dựng ứng dụng Calculator” với mục đích nghiên cứu,tìm hiểu pháp Ba Lan xây dựng ứng dụng Calculator để đáp ứng nhu cầu tính tốn cách nhanh chóng tiện lợi CHƯƠNG 1: TÌM HIỂU PHÁP BA LAN 1.1 Giới thiệu pháp Ba Lan pháp Ba Lan nhà logic toán Jan Łukasiewicz đề xuất khoảng năm 1920 Jan Łukasiewicz nhà toán học người Ba Lan Ông sinh Lwów, Galicia (nay Lviv, Ukraina) Lĩnh vực nghiên cứu ơng logic tốn Các biểu thức đại số sử dụng ngày biểu diễn dạng trung tố (Infix) Cách biểu diễn dễ hiểu với người hầu hết toán tử (+, -, *, /) tốn tử hai ngơi chúng phân cách hai toán hạng với Tuy nhiên máy tính, để tính giá trị biểu thức đại số theo dạng không đơn giản ta làm Để khắc phục điều đó, máy tính cần chuyển cách biểu diễn biểu thức đại số từ trung tố sang dạng khác tiền tố hậu tố Thế biểu thức tiền tố, trung tố hậu tố ? Biểu thức tiền tố (Prefix) - Biểu thức tiền tố biểu diễn cách đặt toán tử lên trước toán hạng Cách biểu diễn biết đến với tên gọi “ký pháp Ba Lan” nhà toán học Ba Lan Jan Łukasiewicz phát minh năm 1920 Với cách biểu diễn này, thay viết x+y dạng trung tố, ta viết +xy Tùy theo độ ưu tiên toán tử mà chúng xếp khác nhau, bạn xem số ví dụ phía sau phần giới thiệu Biểu thức hậu tố (Posfix) - Ngược lại với cách Prefix, tức toán tử đặt sau toán hạng Cách biểu diễn gọi “ký pháp nghịch đảo Ba Lan” viết tắt RPN (Reverse Polish notation), phát minh vào khoảng thập kỷ 1950 triết học gia nhà khoa học máy tính Charles Hamblin người Úc Một số ví dụ: Infix a+b a+b–c a+b*c a + (b – c) 1.2 Prefix +ab -+abc +a*bc +x-yz Ý tưởng toán Posfix ab+ ab+cabc*+ abc-+ - Đọc biểu thức từ trái sang phải, gặp mơt tốn hạng (con số biến) lush tốn hạng vào ngăn xếp, gặp toán tử, lấy hai tốn hạng khỏi ngăn - xếp (stack), tính kết Đẩy kết trở lại ngăn xếp Khi trình kết thúc số cuối lại ngăn xếp giá trị biểu thức Thuật toán: - Nếu gặp toán hạng (con số biến) ghi vào chuỗi kết (chuỗi - kết biểu thức trung tố) Nếu gặp dấu mở ngoặc, đưa vào Stack Nếu gặp toán tử (01) thực bước sau:  Nếu có tốn tử 02 đỉnh ngăn xếp độ ưu tiên 01 nhỏ - độ ưu tiên 02 lấy 02 khỏi ngăn xếp ghi vào kết  Push 01 vào ngăn xếp Nếu gặp dấu đóng ngoặc lấy toán tử ngăn xếp ghi kết - đến lấy dấu mở ngoặc khỏi ngăn xếp Khi duyệt biểu thức trung tố, lấy tất tốn hạng (nếu có) từ ngăn xếp ghi vào chuỗi kết 1.3 Thuật toán chuyển đổi từ trung tố sang hậu tố 1.3.1 Độ ưu tiên toán tử Một điều quan trọng trước bắt đầu phải tính tốn độ ưu tiên toán tử biểu thức nhập vào Để đơn giản ta xét tốn tử hai ngơi thường dùng bao gồm: multiply (+),subtract (-), multiply (*), divide (/) Theo tốn tử “*, /” có độ ưu tiên cao hai toán tử “+, -” public int priority(char c) { if (c == '+' || c == '-') { return 1; } else if (c == '*' || c == '/') { return 2; } else { return 0; } } 1.3.2 Kiểm tra toán tử toán hạng Trong thuật tốn chuyển đổi ta cần có phương thức kiểm tra xem thành phần chuỗi có phải tốn tử tốn hạng khơng Thay sử dụng cấu trúc if switch dài dòng bất tiện phát triển, ta dùng Regex để kiểm tra Ngồi chuỗi nhập vào biểu thức đại số, nên toán hạng ta xét không chữ số mà có chữ từ a-z A-Z Có quy tắc dùng chữ cho phép chữ đại diện cho tốn hạng, dùng chữ số nhiều chữ số ghép thành toán hạng public boolean isOperator(char c) { char operator[] = {'+', '-', '*', '/', ')', '(', '~'}; Arrays.sort(operator); if (Arrays.binarySearch(operator, c) > -1) { return true; } else { return false; } } 1.3.3 Chuẩn hóa biểu thức Infix Các biểu thức Infix nhập vào dư thừa khoảng trắng, kí tự khơng phù hợp viết sai cú pháp Ngồi bạn phải ghép chữ số liền thành số (toán hạng), tách toán tử, phân cách với khoảng trắng Các phần tử gọi token public String[] processString(String sMath) { String s1 = "", elementMath[] = null; InfixToPostfix IFP = new InfixToPostfix(); sMath = sMath.trim(); sMath = sMath.replaceAll("\\s+", " "); for (int i = 0; i < sMath.length(); i++) { char c = sMath.charAt(i); if (!IFP.isOperator(c)) { s1 = s1 + c; } else { s1 = s1 + " " + c + " "; } } s1 = s1.trim(); s1 = s1.replaceAll("\\s+", " "); elementMath = s1.split(" "); return elementMath; } 1.3.4 Chuyển biểu thức Infix sang Postfix Lý em trình bày thuật tốn chuyển sang postfix trước thuật tốn phổ biến dễ cài đặt dạng prefix Thuật toán để chuyển biểu thức Infix sang dạn Prefix: Đọc token biểu thức infix từ trái qua phải, với token ta thực bước sau: - Nếu toán hạng: cho output Nếu dấu mở ngoặc “(“: cho vào stack Nếu dấu đóng ngoặc “)”: lấy toán tử stack cho vào output gặp dấu mở ngoặc “(“ (Dấu mở ngoặc phải đưa khỏi - stack) Nếu toán tử:  Chừng đỉnh stack tốn tử tốn tử có độ ưu tiên lớn toán tử lấy tốn tử khỏi stack cho output  Đưa toán tử vào stack Sau duyệt hết biểu thức infix, stack phần tử lấy token cho vào output Ví dụ: Chuyển biểu thức A*B+C*((D-E)+F)/G từ dạng Infix sang dạng Postfix Tocken A * B + C Stack {Empty} * * + + Output A A AB AB* AB*C * ( ) D E ) + F ) / G +* AB*C +*( AB*C +*(( AB*C +*(( AB*CD +*((AB*CD +*((AB*CDE +*( AB*CDE+*(+ AB*CDE+*(+ AB*CDEF-F +* AB*CDE-F+ +/ AB*CDE-F+* +/ AB*CDE-F+*G {Empty} AB*CDE-F+*G/+ Dựa theo thuật toán trên, ta cài đặt phương thức tương ứng Java public String[] postfix(String[] elementMath) { String s1 = "", E[]; Stack S = new Stack(); for (int i = 0; i < elementMath.length; i++) { char c = elementMath[i].charAt(0); if (!isOperator(c)) { s1 = s1 + elementMath[i] + " "; } else { if (c == '(') { S.push(elementMath[i]); } else { if (c == ')') { char c1; { c1 = S.peek().charAt(0); if (c1 != '(') { s1 = s1 + S.peek() + " "; } S.pop(); } while (c1 != '('); } else { while (!S.isEmpty() && priority(S.peek().charAt(0)) >= priority(c)) { s1 = s1 + S.peek() + " "; S.pop(); } S.push(elementMath[i]); } } } } while (!S.isEmpty()) { s1 = s1 + S.peek() + " "; S.pop(); } E = s1.split(" "); return E; } 1.3.5 Thuật tốn tính giá trị biểu thức tiền tố Khơng có nhiều khác biệt việc chuyển từ Infix sang Prefix với Infix sang Postfix, chủ yếu thay đổi thứ tự duyệt từ phải sang trái thay từ trái sang phải thay duyệt theo hướng ngược lại, thực chuyển đổi nhỏ để đảo ngược biểu thức nhập vào Sử dụng “đảo ngược biểu thức” thay ”đảo ngược chuỗi”, việc đảo ngược phải giữ ngun giá trị tốn hạng, ví dụ bạn đảo ngược 12 thành 21 Hơn chuỗi đảo ngược nên dấu ngoặc đơn phải hiểu ngược lại Ví dụ: Chuyển biểu thức Infix A*B+C*((D-E)+F)/G sang dạng Prefix Đầu tiên ta đảo ngược biểu thức thành G/)F+)E-D((*C+B*A, sau ta thực bước thuật toán sau: Đọc token biểu thức infix từ trái qua phải, với token ta thực bước sau: - Nếu tốn hạng: cho output Nếu dấu đóng ngoặc “)“: cho vào stack Nếu dấu mở ngoặc “(”: lấy toán tử stack cho vào output gặp dấu đóng ngoặc “)“ (Dấu đóng ngoặc phải đưa khỏi stack) Nếu toán tử:  Chừng đỉnh stack tốn tử tốn tử có độ ưu tiên lớn - tốn tử lấy tốn tử khỏi stack cho output  Đưa toán tử vào stack Sau duyệt hết biểu thức infix, stack phần tử lấy token cho vào output Cuối đảo ngược biểu thức lần ta thu kết 1.3.6 Thuật tốn tính giá trị biểu thức hậu tố Việc tính giá trị biểu thức tốn học dạng trung tố máy tính thơng thường chuyển sang dạng pháp nghịch đảo Ba Lan (hậu tố) để việc tính tốn dễ dàng Trong phương pháp tính giá trị biểu thức hậu tố Stack Lặp qua token của biểu thức postfix từ trái qua phải: – Nếu toán hạng: push vào stack – Nếu toán tử: pop hai tốn hạng stack tính giá trị chúng dựa vào toán tử Push kết lại vào stack Phần tử sót lại stack sau vòng lặp kết biểu thức Với elementMath mảng phần tử biểu thức hậu tố public String valueMath(String[] elementMath) { Stack S = new Stack(); for (int i = 0; i < elementMath.length; i++) { char c = elementMath[i].charAt(0); if (!isOperator(c)) { S.push(elementMath[i]); } else { double num = 0f; double num1 = Float.parseFloat(S.pop()); double num2 = Float.parseFloat(S.pop()); switch (c) { case '~' : num = -num1; break; case '+': num = num2 + num1; break; case '-': num = num2 - num1; break; case '*': num = num2 * num1; break; case '/': num = num2 / num1; break; default: break; } S.push(Double.toString(num)); } } return S.pop(); } Nhấn next để tiếp tục Chọn phiên SDK minium phiên Android chạy ứng dụng chọn lựa chọn cho Wear, TV Nhấn next để tiếp tục Nhấn next để cấu hình Activy Name Chọn finish chờ Android Studio tạo project CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ANDROID 3.1 Ý tưởng xây dựng ứng dụng “Calculator” Sử dụng pháp Ba Lan ngược sử dụng công cụ Android Studio để tạo ứng dụng Calculator Tại nên dùng thuật toán Ba Lan ngược để biểu diễn biểu thức muốn tính giá trị biểu thức lập trình máy tính? Khi lập trình, việc máy tính tính giá trị biểu thức tốn học điều đỗi bình thường, để trình bày cho máy tính đọc hiểu quy trình tính tốn khơng phải điều đơn giản Trong nhiều ứng dụng (như chương trình vẽ đồ thị hàm số chẳng hạn, chương trình cho phép người dùng nhập vào hàm số), ta cần phải tính giá trị biểu thức nhập vào từ bàn phím dạng chuỗi Với biểu thức tốn học đơn giản (như a+b) bạn tự làm phương pháp tách chuỗi “thủ cơng” Nhưng để “giải quyết” biểu thức có dấu ngoặc, ví dụ (a+b)*c + (d+e)*f , phương pháp tách chuỗi đơn giản không khả thi Trong tình này, ta phải dùng đến Pháp Nghịch Đảo Ba Lan (Reserve Polish Notation – RPN), thuật tốn “kinh điển” lĩnh vực trình biên dịch Tại phương pháp nghịch đảo Ba Lan lại giúp cho máy tính hiểu biểu thức? Máy tính máy, trình lập trình ta cần trừu tượng quy trình xử lý cách rõ ràng (trong người bỏ qua bước này, giống bạn đọc biểu thức lần biết cặp số hạng cần tính trước phải tính sau Nhưng máy tính muốn biết điều ta phải trừu tượng q trình kết hợp ngăn xếp hàng đợi) Chính kết hợp cách khéo léo lập trình viên việc sử dụng thuật toán nghịch đảo Ba Lan, kiến thức tính biểu thức, kĩ thao tác với hàng đợi ngăn xếp, điều mà giúp cho máy tính hiểu phải làm với biểu thức 3.2 Công cụ Để xây dựng ứng dụng “Calculator” em có sử dụng cơng cụ Android Studio Lý em chọn cơng cụ vì: Android Studio mơi trường phát triển tích hợp (IDE Integrated Development Environment) , dựa tên tuổi tiếng IntelliJ IDE Android Studio môi trường thiết kế phát triển ứng dụng cho tảng Android Môi trường phát triển dễ cài đặt, thiết lập tạo dự án (project) sau vài giây Với Android Studio có nhiều ưu điểm nhờ yếu tố sau: - Giao diện chỉnh sửa WYSIWYG Editor hỗ trợ Live-layout dựng ứng - dụng xem trước theo thời gian thực Có tùy chọn để xem trước giao diện với nhiều thiết lập nhiều hình - viết ứng dụng Cho phép tạo file cài đặt APK (file cài đặt ứng dụng Android) hàng loạt Hỗ trợ cơng cụ Lint để kiểm tra tính tương thích, hiệu ứng dụng khả - hoạt động nhiều phiên Android Hỗ trợ phát triển ứng dụng cho Android Wear, Android TV Android Auto Có thể tích hợp với tảng đám mây Google Cloud Platform (App Engine Google Cloud Messaging) 3.3 Giao diện chương trình Giao diện chạy ứng dụng Calculator sử dụng LineLayout, Button TextView để thiết kế Giao diện gồm Button số từ – 9, dấu ngoặc (), dấu bằng, dấu chấm tốn tử tính tốn Giao diện ứng dụng sau tính biểu thức 3.4 Source code Source file InfixToPostfix package ictu.ttcs.tuanictu97.calplus; import java.util.Arrays; import java.util.Stack; public class InfixToPostfix { public int priority(char c) { tu uu tien if (c == '+' || c == '-') { // thiet lap thu return 1; } else if (c == '*' || c == '/') { return 2; } else { return 0; } } public boolean isSoAm(char c){ boolean check = false; try { Float num = Float.parseFloat(String.valueOf(c)); if (num < 0){ check = true; }else check = false; }catch (Exception e){ System.out.println("Lỗi"); } return check; } public boolean isOperator(char c) { // kiem tra xem co phai toan tu char operator[] = {'+', '-', '*', '/', ')', '(', '~'}; Arrays.sort(operator); if (Arrays.binarySearch(operator, c) > -1) { return true; } else { return false; } } public String[] processString(String sMath) { // xu ly bieu thuc nhap vao cac phan tu String s1 = "", elementMath[] = null; InfixToPostfix IFP = new InfixToPostfix(); sMath = sMath.trim(); sMath = sMath.replaceAll("\\s+", " "); // chuan hoa sMath for (int i = 0; i < sMath.length(); i++) { char c = sMath.charAt(i);//sMath.substring(i,1); if (!IFP.isOperator(c)) { s1 = s1 + c; } else { s1 = s1 + " " + c + " "; } } s1 = s1.trim(); s1 = s1.replaceAll("\\s+", " "); // chuan hoa s1 elementMath = s1.split(" "); //tach s1 cac phan tu //System.out.println(s1); return elementMath; } public String reverseArrayString(String[] elementMath) { String string = ""; for (int i = elementMath.length; i day phan tu vao Stack } else { if (c == ')') { // c la ")" char c1; //duyet lai cac phan tu Stack { c1 = S.peek().charAt(0); // c1 la ky tu dau tien cua phan tu if (c1 != '(') { s1 = s1 + S.peek() + " "; // c1 != "(" } S.pop(); } while (c1 != '('); } else { while (!S.isEmpty() && priority(S.peek().charAt(0)) >= priority(c)) { // Stack khong rong va phan tu Stack co uu tien >= phan tu hien tai s1 = s1 + S.peek() + " "; // xuat phan tu Stack s1 S.pop(); } S.push(elementMath[i]); // dua phan tu hien tai vao Stack } } } } while (!S.isEmpty()) { // Neu Stack phan tu thi day het vao s1 s1 = s1 + S.peek() + " "; S.pop(); } E = s1.split(" "); // tach s1 cac phan tu return E; } public String valueMath(String[] elementMath) { Stack S = new Stack(); for (int i = 0; i < elementMath.length; i++) { char c = elementMath[i].charAt(0); if (!isOperator(c)) { S.push(elementMath[i]); } else { double num = 0f; double num1 = Float.parseFloat(S.pop()); double num2 = Float.parseFloat(S.pop()); switch (c) { case '~' : num = -num1; break; case '+': num = num2 + num1; break; case '-': num = num2 - num1; break; case '*': num = num2 * num1; break; case '/': num = num2 / num1; break; default: break; } S.push(Double.toString(num)); } } return S.pop(); } } KẾT LUẬN Việc nghiên cứu đề tài “Tìm hiểu pháp Ba Lan xây dựng máy tính Calculator” tìm hiểu sau ngơn ngữ phân tích thuật tốn ngành lập trình Qua đợt thực tập sở lần em cảm ơn thầy cô tạo điều kiện cho em làm đề tài nghiên cứu để hiểu sâu sắc toán Thơng qua việc phân tích đề tài “Tìm hiểu pháp Ba Lan xây dựng ứng dụng máy tính Calculator” cho em thấy cách thức để làm đề tài thực tập với ngành học mà theo đuổi Ngồi giúp cho em hiểu phần cách phân tích xử lý tốn, trau dồi kiến thức cho thân lập trình, biết kết hợp kết nối phân tích giải thuật thiết kế ứng dụng Android Tuy nhiên lần đầu làm đề tài thực tập sở dựa quan điểm cá nhân nên em tránh sai sót : Ứng dụng nhiều chỗ chưa tối tưu, tính tốn phép tính bản…Vì em mong nhận góp thầy em có học kinh nghiệm kĩ để em hồn thành tốt đợt báo cáo thực tập chuyên ngành năm TÀI LIỆU THAM KHẢO Sách Android Programming for Beginners Sách Android Programming: The Big Nerd Ranch Guide (2nd Edition) Head First Android Development Advanced Android Application Development (4th Edition) Android Programming: Pushing the Limits NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Thái Nguyên, ngày tháng Giáo viên hướng dẫn năm 2018 ... tình tốn, em chọn đề tài Tìm hiểu ký pháp Ba Lan xây dựng ứng dụng Calculator với mục đích nghiên cứu ,tìm hiểu ký pháp Ba Lan xây dựng ứng dụng Calculator để đáp ứng nhu cầu tính tốn cách nhanh... CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ANDROID 3.1 Ý tưởng xây dựng ứng dụng Calculator Sử dụng ký pháp Ba Lan ngược sử dụng công cụ Android Studio để tạo ứng dụng Calculator Tại nên dùng thuật toán Ba Lan. .. lợi CHƯƠNG 1: TÌM HIỂU KÝ PHÁP BA LAN 1.1 Giới thiệu ký pháp Ba Lan Ký pháp Ba Lan nhà logic toán Jan Łukasiewicz đề xuất khoảng năm 1920 Jan Łukasiewicz nhà tốn học người Ba Lan Ơng sinh Lwów,

Ngày đăng: 17/03/2018, 17:19

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1: TÌM HIỂU KÝ PHÁP BA LAN

    • 1.1. Giới thiệu ký pháp Ba Lan

    • 1.2. Ý tưởng của bài toán

    • 1.3. Thuật toán chuyển đổi từ trung tố sang hậu tố

      • 1.3.1. Độ ưu tiên của toán tử

      • 1.3.2. Kiểm tra toán tử và toán hạng

      • 1.3.3. Chuẩn hóa biểu thức Infix

      • 1.3.4. Chuyển biểu thức Infix sang Postfix

      • 1.3.5. Thuật toán tính giá trị của biểu thức tiền tố.

      • 1.3.6. Thuật toán tính giá trị của biểu thức hậu tố.

      • CHƯƠNG 2: TÌM HIỂU VỀ ANDROID

        • 2.1. Giới thiệu về Anroid

        • 2.2. Ưu và nhược điểm hệ điều hành Android

        • 2.3. Các thành phần trong ứng dụng Android

        • 2.4. Các thành phần giao diện trong Android

          • 2.3.1. View

          • 2.3.2. ViewGroup

          • 2.5. Các control trong Android

          • 2.6. Cách tạo ra ứng dụng Android

          • CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ANDROID

            • 3.1. Ý tưởng xây dựng ứng dụng “Calculator”.

            • 3.2. Công cụ.

            • 3.3. Giao diện chương trình

            • 3.4. Source code

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

Tài liệu liên quan