Nhóm chúng em chọn đề tài “Ứng dụng python để lập trình cho bài toán giải phương trình” nhằm tìm hiểu sâu hơn về dữ liệu cách khai thác và sử dụng hiệu quả, từ đó viết một ứng dụng cụ th
GIỚI THIỆU VỀ NGÔN NGỮ PYTHON
Python là gì?
Python là ngôn ngữ lập trình tuyệt vời với cú pháp đơn giản và dễ học, rất phù hợp cho người mới bắt đầu Tuy nhiên, đừng nhầm tưởng rằng Python chỉ là ngôn ngữ để "học cho biết"; nhiều ứng dụng và sản phẩm nổi tiếng từ các công ty lớn như Google, Mozilla, Cisco, Microsoft và Instagram đều được phát triển bằng Python.
Python là ngôn ngữ lập trình bậc cao đa năng, được Guido van Rossum phát triển và ra mắt vào năm 1991 Với ưu điểm dễ đọc, dễ học và dễ nhớ, Python có cấu trúc rõ ràng, phù hợp cho người mới bắt đầu lập trình Ngôn ngữ này rất phổ biến trong phát triển trí tuệ nhân tạo nhờ khả năng cho phép người dùng viết mã với số lần gõ phím tối thiểu Vào tháng 7 năm 2018, Van Rossum đã từ chức lãnh đạo cộng đồng Python sau 30 năm cống hiến.
Lịch sử phát triển ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình cấp cao, đa mục đích, được phát triển bởi Guido van Rossum vào năm 1991 và hiện do tổ chức Python Software Foundation duy trì Trong quá trình nghiên cứu các sản phẩm dựa trên ngôn ngữ lập trình ABC, Guido nhận thấy nhiều vấn đề của ABC nhưng vẫn đánh giá cao những tính năng mà nó cung cấp.
Ông đã sáng tạo ra một ngôn ngữ lập trình mới bằng cách kết hợp cú pháp của ngôn ngữ ABC và các tính năng của nó, nhờ sự hỗ trợ từ các cộng sự Tên gọi Python được lấy cảm hứng từ chương trình truyền hình BBC mà ông yêu thích, Monty Python's Flying Circus Guido mong muốn đặt cho phát minh của mình một cái tên ngắn gọn, độc đáo và bí ẩn, vì vậy ông đã chọn cái tên này.
Năm 2020, Python đã có phiên bản 3.9 Bạn có thể đọc thêm tại trang web phát hành chính thức của Python tại http://python.org/
Các đặc trưng của ngôn ngữ lập trình Python
Ngôn ngữ lập trình Python nổi bật với nhiều đặc trưng quan trọng, làm cho nó trở thành một ngôn ngữ cấp cao được ưa chuộng Python có một quá trình phát triển lâu dài, mang lại cho người dùng những tính năng mạnh mẽ và linh hoạt Những đặc điểm nổi bật của Python bao gồm cú pháp rõ ràng, dễ đọc, khả năng mở rộng cao và hỗ trợ mạnh mẽ cho lập trình hướng đối tượng.
Python đã phát triển nhanh chóng trong những năm gần đây, được xếp hạng thứ 7 trong các ngôn ngữ lập trình phổ biến nhất và đứng đầu trong danh sách công nghệ ưa thích theo khảo sát của Stack Overflow năm 2018 Nhiều công ty phần mềm hàng đầu thế giới sử dụng Python cho các dự án hàng ngày.
Theo báo cáo của Dice, Python hiện đang được coi là ngôn ngữ lập trình thiết yếu mà mọi lập trình viên nên nắm vững, đồng thời đứng đầu trong bảng xếp hạng về độ phổ biến của các ngôn ngữ lập trình.
Hình 1.1: Bảng xếp hạng mức độ phổ biến của các ngôn ngữ lập trình theo Popularity of Programming Language Index.
Python là một ngôn ngữ lập trình rất phổ biến và có tính ứng dụng cao, dẫn đến nhu cầu tuyển dụng lớn và mức lương hấp dẫn cho các lập trình viên.
Khi so sánh Python với các ngôn ngữ lập trình cao cấp khác như C++, C#, Javascript, và Java, Python nổi bật với tính dễ học hơn nhờ cú pháp đơn giản và gần gũi với ngôn ngữ giao tiếp hàng ngày Điều này đã khiến nhiều trường học trên thế giới đưa Python vào giảng dạy từ bậc Tiểu học đến Trung học, giúp học sinh dễ dàng tiếp thu kiến thức và khơi dậy niềm đam mê lập trình.
IDE PyCharm có hỗ trợ phiên bản Education
Python không chỉ dành cho học sinh và trẻ nhỏ; với tính đơn giản và dễ học, ngôn ngữ lập trình này trở thành lựa chọn lý tưởng cho những người từ các ngành nghề khác muốn thử sức trong lĩnh vực Công Nghệ Thông Tin Học Python có thể là bước đệm quan trọng giúp họ chinh phục những thách thức phức tạp hơn sau này.
Không tính phí và mã nguồn mở
Trình thông dịch Python được phát triển dưới giấy phép mã nguồn mở, cho phép người dùng tải và cài đặt miễn phí, bao gồm cả việc sử dụng cho các mục đích thương mại.
Chính sách mã nguồn mở của Python đã thu hút nhiều lập trình viên tham gia đóng góp, giúp ngôn ngữ này ngày càng hoàn thiện và phát triển hơn.
Ngôn ngữ hướng đối tượng
Lập trình hướng đối tượng là một đặc trưng quan trọng của ngôn ngữ Python và các ngôn ngữ bậc cao hiện nay, giúp mô tả bài toán thông qua sự tương tác giữa các đối tượng Các đặc điểm nổi bật của ngôn ngữ hướng đối tượng bao gồm tính trừu tượng hóa, tính đóng gói, tính kế thừa và tính đa hình.
Hỗ trợ lập trình giao diện người dùng
Ngôn ngữ Python cung cấp nhiều module hỗ trợ tạo giao diện người dùng, như PyQt5, PyQt4 và Tkinter, giúp chương trình trở nên hấp dẫn và trực quan hơn.
Hầu hết các ngôn ngữ lập trình sử dụng trình biên dịch để chuyển đổi mã nguồn thành mã máy trước khi thực thi Tuy nhiên, ngôn ngữ thông dịch cho phép chạy chương trình trực tiếp thông qua trình thông dịch mà không cần biên dịch trước Điều này giúp đơn giản hóa quy trình phát triển, cho phép lập trình viên chỉ cần viết mã và chạy ngay lập tức mà không phải trải qua bước biên dịch.
Một trong những nhược điểm của ngôn ngữ thông dịch là thời gian thực thi lâu hơn so với ngôn ngữ biên dịch Điều này có thể gây ra hạn chế trong các ứng dụng chuyên sâu về tính toán, chẳng hạn như xử lý đồ họa và xử lý số liệu.
Mặc dù sự khác biệt về tốc độ thực thi giữa các chương trình thường chỉ tính bằng mili giây hoặc giây, nhưng điều này không gây ảnh hưởng lớn đến trải nghiệm người dùng Do đó, hiệu quả của việc viết code bằng ngôn ngữ thông dịch thường được đánh giá cao cho hầu hết các ứng dụng.
Python có tính năng mở rộng mạnh mẽ, cho phép viết mã nguồn trong các ngôn ngữ khác và sử dụng trình biên dịch hoặc thông dịch để thực thi chương trình Ví dụ, người dùng có thể viết mã Python và biên dịch nó trong ngôn ngữ C/C++.
Ngôn ngữ lập trình này cho phép không cần định nghĩa kiểu dữ liệu, nghĩa là bạn không cần chỉ rõ kiểu dữ liệu cho biến Điều này cho phép một biến có thể chứa các đối tượng với kiểu dữ liệu khác nhau, mang lại tính linh hoạt cao trong việc lập trình.
Các lĩnh vực sử dụng ngôn ngữ lập trình Python
Python nổi bật với những đặc trưng giúp nó trở thành ngôn ngữ lập trình phổ biến trong cộng đồng lập trình viên Với hàng ngàn thư viện hỗ trợ có sẵn, người dùng có thể dễ dàng tìm thấy các công cụ phù hợp cho mục đích của mình tại Python Package Index Dưới đây là những ứng dụng quan trọng mà ngôn ngữ lập trình Python có thể mang lại.
Phát triển web và internet (Web and internet development)
Python cung cấp cho người dùng chúng ta rất nhiều công cụ phục vụ cho việc phát triển web, điển hình có thể kể đến như:
Frameworks nổi bật như Django và Pyramid.
Các thư viện như Flask và Bottle.
Các hệ thống quản trị nội dung như Plone và django CMS.
Games và Đồ Họa 3D (Games and 3D Graphics)
Python là ngôn ngữ lập trình phổ biến trong phát triển trò chơi, với các thư viện mạnh mẽ như PySoy, một engine trò chơi 3D hỗ trợ Python 3, và PyGame, cung cấp các chức năng và tài nguyên cần thiết cho việc tạo ra trò chơi.
Civilization-IV, Disney’s Toontown Online, Vega Strike, v.v đã được xây dựng bằng Python.
Hình 1.2: Game rắn săn mồi rất đỗi quen thuộc với chúng ta được viết bằng PyGame
Phục vụ cho khoa học và tính toán (Scientific and numeric)
Việc áp dụng các thuật toán học máy đòi hỏi tính toán toán học phức tạp, nhưng Python hỗ trợ với nhiều thư viện hữu ích cho khoa học dữ liệu như Numpy, Pandas, Scipy và Scikit-learn Dưới đây là một số thư viện nổi bật trong lĩnh vực học máy.
Thư viện Numpy Ứng dụng giao diện người dùng (Desktop GUIs)
Chúng ta có thể sử dụng Python để lập trình các ứng dụng giao diện.
Và điển hình nhất chính là thư viện Tkinter Ngoài ra một số bộ thư viện hữu ích khác như wxWidgets, Kivy, PYQT, v.v
Hình 1.3: Màn hình làm việc với PyQt5
Sử dụng trong lĩnh vực Trí tuệ nhân tạo (Artificial Intelligence)
Triển khai dự án AI thường liên quan đến việc sử dụng hàng tấn thuật toán Để tiết kiệm thời gian và công sức, chúng ta không cần phải viết lại các thuật toán, vì Python cung cấp hơn 100 thư viện sẵn có, giúp thực hiện các thuật toán một cách dễ dàng và hiệu quả.
Khi bạn muốn thực hiện một thuật toán trên một tập dữ liệu, chỉ cần cài đặt và tải các thư viện cần thiết bằng một lệnh đơn giản Một số thư viện nổi bật trong lĩnh vực này bao gồm NumPy, Keras, TensorFlow và PyTorch.
Hình 1.4: Object Detection sử dụng YOLOv3
Một số tính chất của Python
Interpreted: nhờ chức năng thông dịch mà trình thông dịch
Interpreter của Python cho phép xử lý lệnh ngay tại thời điểm chạy chương trình, giúp loại bỏ bước biên dịch trước khi thực hiện, tương tự như cách hoạt động của Perl và PHP.
Python có tính năng tương tác mạnh mẽ, cho phép người dùng giao tiếp trực tiếp với trình thông dịch ngay tại dấu nhắc lệnh Điều này hỗ trợ lập trình hướng đối tượng và kỹ thuật lập trình gói mã trong đối tượng, mang lại sự linh hoạt và tiện lợi cho lập trình viên.
Python là ngôn ngữ lập trình lý tưởng cho người mới bắt đầu, giúp họ dễ dàng làm quen với lập trình máy tính Ngôn ngữ này không chỉ đơn giản mà còn mạnh mẽ, hỗ trợ phát triển đa dạng ứng dụng từ chương trình xử lý văn bản, ứng dụng web cho đến game.
KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
Đặt vấn đề
Môn toán thường gây khó khăn cho học sinh, khiến nhiều bạn cảm thấy mệt mỏi và bối rối khi gặp những bài toán khó giải Để giải quyết vấn đề này, các ứng dụng giải bài tập bằng camera đã ra đời, mang đến sự trợ giúp chính xác và hiệu quả Những ứng dụng này không chỉ giúp học sinh tìm ra lời giải mà còn nâng cao hiệu quả học tập.
Có hai giải pháp cho vấn đề này: Thứ nhất, tổng hợp và xây dựng cơ sở dữ liệu về kiến thức môn toán, bao gồm các hạn chế và khó khăn gặp phải Thứ hai, phát triển một ứng dụng giải toán nhằm hỗ trợ người học.
Cả hai phương án đều khả thi, nhưng phương án thứ hai hiện nay phù hợp hơn Một chương trình “thông minh” sẽ giúp tiết kiệm thời gian và công sức cho người sử dụng Việc xây dựng ứng dụng giải bài tập yêu cầu một kho tri thức và công cụ chuyên dụng, và nguồn thông tin phong phú trên Internet đã đáp ứng được yêu cầu này Nhiều ngôn ngữ lập trình cũng có sẵn để phát triển các ứng dụng trí tuệ nhân tạo Nhóm em sẽ phát triển phần mềm mang tên “Ứng dụng Python để lập trình cho bài toán giải phương trình”, giúp người dùng giải các phương trình bậc 1, bậc 2 và phương trình trùng phương từ dữ kiện đề bài Phần mềm sẽ tích hợp nhiều tính năng đơn giản và hiệu quả Để đạt được điều này, nhóm em đã nghiên cứu kỹ lưỡng cách xử lý từng lỗi nhằm đáp ứng nhu cầu của người dùng.
Nội dung thực hiện
Nội dung thực hiện đề tài:
+ Thu thập các cách giải bài toán phương trình bậc 1,2 và trùng phương , chuẩn bị cho quá trình xây dựng cơ sở của bài toán.
+ Phân tích các tri thức thu thập được, sau đó phân loại và biểu diễn thành các phát biểu
+Chuyển các lời giải thành ngôn ngữ Python
+Sử dụng phần mềm visual studio 2022 để xây dựng ứng dụng
Xác định các yêu cầu của phần mềm
2.3.1.1 Chức năng giải phương trình bậc 1
2.3.1.2 Chức năng giải phương trình bậc 2
2.3.1.3 Chức năng giải phương trình trùng phương
2.3.2 Yêu cầu phi chức năng
2.3.2.1 Yêu cầu bảo mật Điều rất quan trọng cần được chú ý nhất chính là thông tin khi khách hàng đến mua sắm tại cửa hàng Vì đó, là thông tin cá nhân của khách hàng khi chưa được khách hàng cho phép thì không được để lộ ra bên ngoài
2.3.2.2 Yêu cầu về sao lưu
Sao lưu dữ liệu là một yếu tố quan trọng trong quản lý cửa hàng, vì nó bảo vệ thông tin thiết yếu như đơn hàng, thông tin nhân viên, sản phẩm và báo cáo thống kê định kỳ Việc thường xuyên sao lưu giúp tránh mất mát dữ liệu, đặc biệt trong trường hợp xảy ra sự cố như mất điện trong quá trình thanh toán, điều này có thể gây rắc rối cho cả khách hàng và cửa hàng.
2.3.2.3 Yêu cầu tính năng sử dụng
Các tính năng sử dụng chính:
- Sử dụng được đầy đủ các chức năng trên phần mềm
- Cập nhật được thời gian thực.
- Hệ thống cho nhiều người cùng sử dụng mà không bị sập server
- Cung cấp đầy đủ các thông tin cần thiết
2.3.2.4 Yêu cầu ràng buộc thiết kế
- Hệ thống cần các yêu cầu cần thiết như sau:
+ Hệ thống được xây dưng chủ yếu trên Visual Studio 2022 bằng ngôn ngữ python
+ Hệ quản trị cơ sở dữ liệu SQL Server 2019
- Bộ xử lý:CPU lớn hơn hoặc bằng 2.3 GHz
- Ram lớn hơn hoặc bằng 200GB
2.3.2.6 Phần mềm được sử dụng
- Cơ sở dữ liệu SQL Server
2.3.2.7 Yêu cầu khi sử dụng phần mềm
Người dùng sẽ được quản lý phổ biến rõ hơn về các chức năng của phần mềm khi sử dụng
- Giao diện dễ nhìn, dễ sử dụng và thu hút người sử dụng
- Khi mới sử dụng cần có hướng dẫn chi tiết
- Phần mềm này thì mọi lứa tuổi đều sử dụng được( trừ trẻ em dưới 15 tuổi).
THIẾT KẾ GIAO DIỆN
LẬP TRÌNH
Ngôn ngữ lập trình
Python là một ngôn ngữ lập trình thông dịch, hướng đối tượng và bậc cao với ngữ nghĩa động Ngôn ngữ này hỗ trợ các module và gói, khuyến khích việc lập trình module hóa và tái sử dụng mã Trình thông dịch Python cùng với thư viện chuẩn mở rộng có sẵn miễn phí dưới dạng mã nguồn hoặc nhị phân cho tất cả các nền tảng chính và có thể được phân phối tự do.
Sau đây là các đặc điểm của Python:
Ngữ pháp đơn giản, dễ đọc.
Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object- oriented)
Hỗ trợ module và hỗ trợ gói (package)
Xử lý lỗi bằng ngoại lệ (Exception)
Kiểu dữ liệu động ở mức cao.
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
Có khả năng tương tác với các module khác viết trên C/C+
+ (Hoặc Java cho Jython, hoặc Net cho IronPython).
Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).
Python dễ dàng kết nối với các thành phần khác:
Python có thể kết nối với các đối tượng COM NET Ironpython,, (
Python for net), và CORBA, Java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác.
Python hỗ trợ đa dạng hệ điều hành như Windows, Linux, Unix, Mac và nhiều hệ điều hành khác, bao gồm cả các phiên bản chạy trên NET, máy ảo Java và điện thoại di động (Nokia Series 60) Điều đặc biệt là mã nguồn Python có thể chạy đồng nhất trên tất cả các nền tảng này.
Python rất đơn giản và dễ học
Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn, và cả các thư viện mã nguồn mở được chia sẻ trên mạng.
Python là ngôn ngữ mã nguồn mở
Python được cài đặt dưới giấy phép nguồn mở, cho phép người dùng sử dụng và phân phối tự do, bao gồm cả mục đích thương mại Giấy phép này được quản lý bởi Python Software Foundation.
Công cụ hỗ trợ
Visual Studio 2022 là môi trường phát triển tích hợp (IDE) do Microsoft phát hành, cho phép phát triển các chương trình máy tính, ứng dụng, trang web và dịch vụ web trên nền tảng Microsoft Windows Với khả năng hỗ trợ cả ngôn ngữ máy và mã số quản lý, Visual Studio cung cấp trình soạn thảo mã với tính năng IntelliSense và cải tiến mã nguồn Ngoài ra, công cụ này hỗ trợ nhiều ngôn ngữ lập trình khác nhau, cho phép người dùng sử dụng các ngôn ngữ mặc định hoặc cài đặt các gói ngôn ngữ tùy chỉnh theo nhu cầu.
SQL Server Management Studio (SSMS) là ứng dụng phần mềm do Microsoft phát triển, ra mắt lần đầu vào năm 2005 Ứng dụng này hỗ trợ lập trình viên trong việc cấu hình, quản lý và quản trị bộ máy cơ sở dữ liệu SQL Server, và được sử dụng rộng rãi trong cộng đồng lập trình viên cũng như quản trị viên cơ sở dữ liệu nhờ vào những ưu điểm nổi bật của nó.
+ Đáp ứng đủ yêu cầu đặt ra
+ Phù hợp xây dựng hệ thống quản lý vừa và nhỏ
Kết quả
4.3.1 Form giải phương trình bậc 1 from tkinter import * import tkinter.ttk tkas class BPT Frame( ): def init (self, master=None): super(). init (master=master, bg="gray", relief='solid', borderwidth=1) self.setting() self.create_widget() self.pack() defsetting(self): pass defcreate_widget(self): self.input = [] for i in range(2): entry = Entry(self, font=('Times' '12', ), justify='right') self.input.append(entry)
"ax + b ≤ 0" "ax + b ≥ 0", ) self.option = tk.Combobox(self, font=(
'Times' '12', ), values=self.functions_name, state='readonly') self.option.current(0) self.button_select = Button(self, text="Confirm", font=(
The interface includes a label displaying 'x + ' and another label that shows the current function along with a value of '0' A 'Solve' button is also provided for executing the function All elements are styled with a font size of 12 in the 'Times' font, ensuring a cohesive visual presentation.
'Times' '12', ), command=self.solve) self.clear_button = Button(self, text='Clear', font=(
'Times' '12', ), command=self.clear) self.show_result = Label(self, text= , font=(''
'Times' '12', ), justify='right', bg='black', fg='white', relief='solid', borderwidth=1) defset_func(self): option = self.option.get() i = self.functions_name.index(option)
The code snippet defines a function that updates the display based on user selection and positions various UI elements on the screen It includes a method to solve a mathematical equation by evaluating user inputs and performing a calculation with the selected function The result is then returned for display.
The code snippet demonstrates a conditional statement that toggles comparison operators: if 'dau' is less than '', if 'dau' is '>', it changes to '