1. Trang chủ
  2. » Tất cả

Báo cáo chuyên đề học phần ngôn ngữ lập trình python đề tài xây dựng ứng dụng game xếp hình, xếp gạch

27 171 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Ứng Dụng Game Xếp Hình, Xếp Gạch
Tác giả Nguyễn Duy Bá Huy, Trần Bảo Khanh, Trần Văn Đức
Người hướng dẫn Lê Mạnh Hùng
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo chuyên đề học phần
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 27
Dung lượng 1,44 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

động liên kết muộn, cho phép liên kết các tên biến và phương thức trong quátrình thực thi chương trình.Thiết kế của Python cung cấp một số tính năng cho lập trình hàm giống nhưtrong ngôn

Trang 1

BÁO CÁO CHUYÊN ĐỀ HỌC PHẦNNGÔN NGỮ LẬP TRÌNH PYTHON

ĐỀ TÀI:

XÂY DỰNG ỨNG DỤNG GAME XẾP HÌNH, XẾP GẠCH

Sinh viên thực hiện : NGUYỄN DUY BÁ HUY

TRẦN BẢO KHANHTRẦN VĂN ĐỨCGiảng viên hướng dẫn : LÊ MẠNH HÙNGNgành : CÔNG NGHỆ THÔNG TINChuyên ngành : CÔNG NGHỆ PHẦN MỀM

Khóa : 2019 – 2024

Trang 2

PHIẾU CHẤM ĐIỂM

STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký

1  Nguyễn Duy Bá Huy Xây dựng chương trình và

Trang 3

MỤC LỤC

MỤC LỤC 1

LỜI CẢM ƠN 4

LỜI NÓI ĐẦU 5

CHƯƠNG 1: NGÔN NGỮ LẬP TRÌNH PYTHON 9

2.1 Khái niệm 9

2.2 Lịch sử 10

2.3 Triết lý thiết kế và tính năng 10

2.4 Cú pháp 13

2.4.1 Thụt lề 13

2.4.2 Câu lệnh và luồng điều khiển 13

2.4.3 Biểu thức 14

3.1 Python được sử dụng như thế nào? 16

3.1.1 Phát triển web phía máy chủ 17

3.1.2 Tự động hóa bằng các tập lệnh Python 17

3.1.3 Phát triển phần mềm 18

3.1.4 Tự động hóa kiểm thử phần mềm 19

3.1.5 Thư viện Python là gì? 19

3.1.6 Thư viện Python nào phổ biến nhất? , 19

3.2 Khung Python là gì? 20

3.2.1 Khung Python nào phổ biến nhất? 21

3.2.2 Python IDE là gì? 22

3.2.2 Python IDE nào phổ biến nhất? 22

CHƯƠNG 2: ỨNG DỤNG GAME CỜ CARO 25

KẾT LUẬN , 26

TÀI LIỆU THAM KHẢO ,, 27

Trang 4

LỜI CẢM ƠN

Trong quá trình thực hiện báo cáo môn học ngôn ngữ lập trình python nàyXin chân thành cảm ơn các anh, các chị và các bạn học lớp trường Đại HọcĐiện Lực đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với tôi những kinhnghiệm học tập, công tác trong suốt khoá học

Và lời cuối cùng, tôi xin bày tỏ lòng chân thành và biết ơn tới cha mẹ, anh chị,những người trong gia đình và bạn bè đã luôn ở bên cạnh tôi những lúc khó khănnhất, giúp tôi vượt qua khó khăn trong học tập cũng như trong cuộc sống

 Hà nội, ngày 19 tháng 12 năm 2022

Sinh viên thực hiện

Trang 5

LỜI NÓI ĐẦU

 Ngày nay, khoa học kỹ thuật phát triển trên mọi lĩnh vực, đặc biệt là lĩnh vựccông nghệ thông tin Chúng ta đã hòa nhập vào thị trường toàn cầu Do vậy, lĩnhvực công nghệ thông tin sẽ là một lĩnh vực quan trọng thúc đẩy các lĩnh vực kháccùng phát triển

Công nghệ thông tin được ứng dụng trong nhiều lĩnh vực của đời sống nhưkinh tế, chính trị, xã hội, văn hóa… cũng như trong lĩnh vực nghiên cứu khoa họckhác Do vậy, dung lượng dữ liệu đã được các cơ quan thu thập và lưu trữ ngàymột tích lũy nhiều lên Họ lưu trữ các dữ liệu này vì cho rằng trong nó ẩn chứanhững giá trị nhất định nào đó

Kỹ thuật khai phá tri thức và khai phá dữ liệu đã và đang được nghiên cứu,ứng dụng trong nhiều lĩnh vực khác nhau ở các nước trên thế giới, tại Việt Nam kỹthuật này tương đối còn mới mẻ tuy nhiên cũng đang được nghiên cứu và dần đưavào ứng dụng

Mỗi lĩnh vực hoạt động cần có một hệ thống để hỗ trợ tư vấn trong quá trìnhhoạt động Việc sử dụng ngôn ngữ lập trình là một việc rất quan trọng, chúng ta cóthể tạo ra chuyên gia thật sự trên một lĩnh vực nào đó Từ đó chúng ta có thể xâydựng nhiều chuyên gia khác nhau trên tất cả các lĩnh vực để phục vụ đời sống xãhội

Vậy nên trong tiểu luận này, em trình bày về “Xây dựng game xếphình, xếp gạch ” Báo cáo gồm 2 chương:

CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PYTHON CHƯƠNG 2: GAME CỜ CARO BẰNG NGÔN NGỮ LẬP TRÌNH PYTHON 

Trang 6

CHƯƠNG 1: NGÔN NGỮ LẬP TRÌNH PYTHON

1.1 Khái niệm

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đanăng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python đượcthiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hìnhthức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và làngôn ngữ lập trình dễ học được dùng rộng rãi trong phát triển trí tuệ nhân tạo hoặc

AI Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh 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 trongcộng đồng ngôn ngữ Python sau 30 năm làm việc

 Hình 2 1: Logo của Python

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; dovậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được phát triểntrong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundationquản lý

Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thờigian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2,Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển củaPython có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nayvẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết địnhhướng phát triển của Python

Python luôn được xếp vào hạng những ngôn ngữ lập trình phổ biến nhất.1.2 Lịch sử 

Python đã được Guido van Rossum thai nghén vào những năm 1980 tạiTrung tâm Toán học – Tin học (Centrum Wiskunde & Informatica, CWI) ở Hà Lan

Trang 7

như là một ngôn ngữ kế tục ngôn ngữ ABC – một ngôn ngữ được lấy cảm hứng từSETL, có khả năng xử lí ngoại lệ và giao tiếp với hệ điều hành Amoeba Nó bấtđầu được triển khai vào tháng Mười Hai năm 1989 Van Rossum đã tự mình gánhvác trách nhiệm cho dự án, với vai trò là nhà phát triển chính, cho đến ngày 12tháng Bảy năm 2018, khi ông thông báo rằng ông sẽ rời bỏ trách nhiệm của ông và

cả danh hiệu "Nhà độc tài nhân từ cho cuộc sống" của Python, một danh hiệu màcộng đồng Python đã trao tặng cho ông vì sự tận tuỵ lâu dài của ông với vai trò làngười ra quyết định chính cho dự án Vào tháng Một năm 2019, các nhà phát triển phần lõi Python đã bầu ra một "Hội đồng Chèo lài" gồm năm thành viên để dẫn dắt

dự án

Python 2.0 được ra mắt vào ngày 16 tháng Mười năm 2000, với nhiều tính năngmới mẻ, bao gồm một bộ don rác phát hiện theo chu kỳ và khả năng hỗ trợ Unicode.Python 3.0 được ra mắt vào ngày mùng 3 tháng Mười Hai năm 2008 Đây là một phiên bản lớn của Python không tương thích ngược hoàn toàn Nhiều tính năng lớn của

nó đã được chuyển mã ngược (backport) về loạt phiên bản Python 2.6.x và 2.7.x Các bản phát hành của Python 3 có đi kèm với công cụ 2to3, có tác dụng tự động hoá việcdịch mã Python 2 sang Python 3

Python 3.9.2 và 3.8.8 được xúc tiến vì tất cả các phiên bản trước của Python(bao gồm cả 2.7) gặp một số vấn đề bảo mật, có thể dẫn đến thực thị mã từ xa và

"đầu độc" bộ nhớ đệm

1.3 Triết lý thiết kế và tính năng

Python là một ngôn ngữ lập trình đa mẫu hình Lập trình hướng đối tượng vàlập trình cấu trúc được hỗ trợ hoàn toàn, và nhiều tính năng của nó cũng hỗ trợ lậptrình hàm và lập trình hướng khía cạnh (bao gồm siêu lập trình và siêu đối tượng(phương thức thần kì)) Các mẫu hình khác cũng được hỗ trợ thông qua các phần

mở rộng, bao gồm thiết kế theo hợp đồng và lập trình logic

Python sử dụng kiểu động và một dạng kết hợp giữa đếm tham chiếu và bộdọn rác kiểm tra theo chu kì để quản lí bộ nhớ Nó cũng có tính năng phân giải tên

Trang 8

động (liên kết muộn), cho phép liên kết các tên biến và phương thức trong quátrình thực thi chương trình.

Thiết kế của Python cung cấp một số tính năng cho lập trình hàm giống nhưtrong ngôn ngữ Lisp Python có các hàm filter, map và reduce; thông hiểu danhsách (list comprehension), từ điển (dictionary), tập hợp (set), và các biểu thức bộsinh

(generator) Thư viện chuẩn cũng có hai mô-đun (itertools và functools) triển khaicác công cụ hàm được vay mượn từ Haskell và Standard ML

Triết lý căn bản của ngôn ngữ Python được trình bày trong tài liệu The Zen

of Python (PEP 20), có dạng thơ Haiku, tóm gọn như sau:

• Đẹp đẽ tốt hơn xấu xí

• Minh bạch tốt hơn ngầm định

• Đơn giản tốt hơn phức tạp

• Phức tạp tốt hơn rắc rối Tính dễ đọc rất quan trọng

Thay vì tích hợp hết tất cả các tính năng vào phần cốt lõi, Python được thiết

kế để dễ dàng mở rộng (bằng các mô-đun) Tính mô-đun cô động này đã làm choPython trở nên phổ biến như là một cách thêm các giao diện lập trình được vào cácứng dụng hiện có Tầm nhìn của Van Rossum về một ngôn ngữ có phần lõi nhỏ vớimột thứ viện chuẩn rộng lớn và một trình thông dịch dễ dàng mở rộng bắt nguồn từviệc ông nản lòng trước ABC, một ngôn ngữ lập trình tán thành hướng tiếp cậnngược lại Python thường được mô tả là một ngôn ngữ "tặng kèm pin" nhờ vào thưviện chuẩn bao quát của nó

Python nỗ lực hướng đến một cú pháp đơn giản hơn, gọn gàng hơn trong khivẫn cho các nhà phát triển lựa chọn phương pháp viết mã của họ Đối lập với khẩuhiệu "có nhiều hơn một cách để làm việc này", triết lý thiết kể của Python lại nằmtrong châm ngôn "chỉ nên có một— và tốt nhất là chỉ một—cách rõ ràng để làm

Trang 9

việc này" Alex Martelli, một Viện sĩ (Fellow) tại Tổ chức Phần mềm Python(Python Software Foundation) và là một tác giả viết sách Python, viết rằng "Mô tảmột thứ gì đó là "tài tình" không được coi là một lời khen ngợi trong văn hoáPython."

Các nhà phát triển Python nỗ lực tránh xa việc tối ưu hoá quá sớm và khôngchấp nhận các bản vá không cải thiện đáng kể tốc độ mà lại làm mất đi tính rõ rànglên những phần không thiết yếu của bản thực hiện tham khảo CPython Khi cầnđến tốc độ, một lập trình viên Python có thể di chuyển các hàm bị giới hạn về thờigian sang các mô-đun mở rộng được viết bằng những ngôn ngữ như C, hoặc sửdụng PyPy, một trình biên dịch tức thời Cython cũng có thể được dùng để phiêndịch một tập lệnh Python sang C và tạo ra các lệnh gọi API ở cấp độ của C trực tiếpvào trình thông dịch Python

Mục tiêu mà các nhà phát triển Python hướng đến là đem đến niềm vui khi

sử dụng ngôn ngữ này Điều này được thể hiện qua bản thân cái tên – một sự tônvinh dành cho nhóm hài người Anh Monty Python – và trong một số cách tiếp cậnthi thoảng vui tươi trong hướng dẫn và các tài liệu tham khảo, chẳng hạn như một

vi dụ có đề cập đến trứng và spam (gợi nhắc đến một tiểu phẩm trong MontyPython) thay cho foo và bar tiêu chuẩn

Một từ ngữ mới phổ biến trong cộng đồng Python là pythonic (đậm chấtPython), một từ có thể có nhiều ý nghĩa liên quan đến phong cách lập trình Nóirằng một phần mã nào đó là đậm chất Python tức là phần mã đó sử dụng tốt cácthành ngữ Python, trông tự nhiên hoặc trôi chảy về ngôn ngữ, phù hợp với triết lýtối giản của Python và nhấn mạnh vào tính dễ đọc Ngược lại, những phần mã khóhiểu hoặc trông như một bản dịch thô từ một ngôn ngữ lập trình khác được gọi làunpythonic (không đậm chất Python)

 Những người sử dụng và say mê Python, nhất là những người được cho là

am hiểu hay có nhiều kinh nghiệm, thường được gọi là các Pythonista

Trang 10

2.2 Cú pháp

Python là một ngôn ngữ dễ đọc, dễ hiểu Định dạng của nó rất gọn gàng vềmặt trực quan, và nó thường sử dụng các từ khoá tiếng Anh trong khi các ngôn ngữkhác lại sử dụng các dấu câu Khác với nhiều ngôn ngữ khác, nó không sử dụngcác dấu ngoặc nhọn để giới hạn các khối lệnh, và dấu chấm phẩy cuối câu lệnh rất

ít khi được sử dụng dù không bị cấm Nó có ít ngoại lệ cú pháp và trường hợp đặc biệt hơn C và Pascal

2.4.1 Thụt lề 

Python sử dụng thụt lề bằng khoảng trắng thay vì dùng ngoặc nhọn hay các

từ khoá để giới hạn khối lệnh Lề thường được thụt vào sau một câu lệnh và thụt ra

để đánh dấu kết thúc khối lệnh hiện tại Cho nên, cấu trúc trực quan của chươngtrình sẽ thể hiện một cách chính xác cấu trúc ngữ nghĩa của chương trình đó Tínhnăng này thỉnh thoảng cũng được gọi là "quy tắc việt vị", mà cũng xuất hiện ở một

số ngôn ngữ, những trong phần lớn ngôn ngữ thì thụt lề không phụ thuộc vào cú pháp Cỡ thụt lề được khuyến cáo là bốn dấu cách

2.4.2 Câu lệnh và luồng điều khiển

Một số câu lệnh trong Python gồm có:

• Câu lệnh while: thực thi một khối lệnh chừng nào điều kiện còn đúng

• Câu lệnh try: cho phép bắt ngoại lệ được nâng lên (raise) trong khối lệnh vàdùng vế except để xử lý; câu lệnh cũng đảm bảo rằng phần mã dọn dẹp trongkhối finally sẽ được chạy dù có lỗi hay không

• Câu lệnh raise: được dùng để nâng một ngoại lệ hoặc nâng lại một ngoại lệ

đã được bắt từ trước

Trang 11

• Câu lệnh class: thực thi một khối lệnh và gắn không gian tên cục bộ của nóvào một lớp, để dùng trong lập trình hướng đối tượng.

• Câu lệnh def: định nghĩa một hàm hoặc phương thức

• Câu lệnh with: bao bọc một khối lệnh bằng một bộ quản lí ngữ cảnh (contextmanager) (ví dụ như khoá luồng lại trước khi chạy mã rồi mở khoả, hoặc mở một tệp rồi đóng tệp lại), cho phép các hành vi kiểu RAII (sự đạt được tàinguyên là sự khởi tạo) và thay thể cho các câu lệnh try/finally thường thấy

• Câu lệnh break: thoát ra khỏi vòng lặp

• Câu lệnh continue: bỏ qua lần lặp này và tiếp tục với mục kế tiếp

• Câu lệnh del: loại bỏ một biến, tức là tham chiếu từ tên đến giá trị sẽ bị xoá

và cố gắng sử dụng biến đó sẽ gây lỗi Một biến đã bị xoá có thể được gánlại

• Câu lệnh pass: đóng vai trò như là một dạng NOP Câu lệnh này được dùng

để tạo các khối lệnh rỗng

• Câu lệnh assert: được dùng trong khi gỡ lỗi để kiểm tra điều kiện nên đúng

• Câu lệnh yield: trả lại giá trị từ một hàm bộ sinh; bản thân yield cũng là mộttoán tử Dạng này được dùng để triển khai các đồng thường trình

• Câu lệnh return: trả lại một giá trị từ một hàm hay phương thức

• Câu lệnh import: được dùng để nhập các mô-đun co các hàm và biến được

sử dụng trong chương trình hiện tại

Câu lệnh gán (=) hoạt động bằng cách liên kết một tên dưới dạng một thamchiếu với một đối tượng được cấp phát động riêng lẻ Các biến có thể được dùng lại bất cứ lúc nào với bất cứ đối tượng nào Trong Python, một tên biến chỉ giữ thamchiếu một cách chung chung và không có kiểu dữ liệu cố định đi kèm Tuy nhiên,tại một thời điểm nhất định, một biến sẽ tham chiếu đến một vài đối tượng có kiểu

 Nó được gọi là kiểu động, ngược lại với các ngôn ngữ lập trình kiểu tĩnh với mỗi biến chỉ có thể chứa giá trị của một kiểu nhất định

Trang 12

Từ Python 3.5, toán tử trung tố @ mới đã được giới thiệu Nó được thiết kể

để được sử dụng các thư viện như NumPy để nhân ma trận

Từ Python 3.8, cú pháp :=, hay "toán tử moóc" đã được giới thiệu Nó gángiá trị vào biến trong một phần của một biểu thức lớn hơn

Trong Python, == so sánh theo giá trị, khác với Java, vốn so sánh các số theogiá trị và các đối tượng theo tham chiếu (So sánh giá trị trong Java có thể đượcthực hiện bằng phương thức equals().) Toán tử is của Python có thể được dùng để

so sánh danh tính của đối tượng (so sánh theo tham chiếu) Trong Python, các phép

so sánh có thể được xâu chuỗi lại với nhau, thi dụ như a <= b <= c

Python sử dụng các từ khoá and, or, not để so sánh luân lý (boolean) thay vìdùng các loại biểu tượng &&, ||, ! được dùng trong Java và C

Python có một loại biểu thức được gọi là thông hiểu danh sách (listcomprehension) cũng như một loại biểu thức chung được gọi là biểu thức bộ sinh(generator expression)

Các hàm vô danh được triển khai thông qua các biểu thức lambda; tuy nhiên, phần thân của hàm vô danh chỉ có thể là đúng một biểu thức

Biểu thức điều kiện trong Python được viết dưới dạng x if c else y[75] (có sựkhác biệt về trật tự của các toán hạng so với toán tửc ? x : y thường có trong nhữngngôn ngữ khác)

Trang 13

Có sự phân biệt giữa danh sách và bộ trong Python Danh sách được viếtdưới dạng [1, 2, 3], biển đổi được, và không thể được dùng như khoá cho từ điển(các khoá từ điển phải là bất biến trong Python) Bộ được viết dưới dạng (1, 2, 3),không biến đổi được nên có thể được dùng làm khoá của từ điển, với điều kiện làtất cả các phần tử trong bộ cũng phải là bất biến Toán tử + có thể được sử dụng đểnối liền hai bộ lại với nhau, như không trực tiếp thay đổi nội dụng của chúng, mà

sẽ tạo ra một bộ mới chứa các phần tử của cả hai bộ ban đầu Vì vậy, cho một biến

t ban đầu bằng (1, 2, 3), chạy lệnh t = t + (4, 5) sẽ thực thì t + (4, 5) đầu tiên, tạo ra(1, 2, 3, 4,

5), rồi mới được gán lại cho t, bằng cách đó đã "chỉnh sửa nội dung" của t một cáchhiệu quả, trong khi vẫn tuân theo bản chất bất biến của đối tượng bộ Trong cácngữ cảnh không mơ hồ thì dấu ngoặc đơn là không cần thiết.[76]

Python có một tính năng là tháo tách chuỗi (sequence unpacking) trong đócác biểu thức, mà mỗi biểu thức được đánh giá thành bất kì thứ gì có thể được gánvào (một biến, một thuộc tính viết được v.v.), được liên kết theo cùng một cáchvới các bộ ban đầu đó và được đặt vào vế bên trái dấu bằng trong một câu lệnh gán.Câu lệnh này mong đợi một một đối tượng lặp được (iterable) ở vế bên phải dấu bằng tạo ra cùng một số lượng giá trị giống như ở các biểu thức trước đó khi đã và

sẽ lặp qua, rồi gán mỗi giá trị được tạo ra bằng các biểu thức tương ứng ở vế bếntrái.[77]

Python có một toán tử "định dạng xâu" là % Chức năng này tương tự nhưđịnh dạng xâu printf trong C, thí dụ như "spam=%s eggs=%d" % ("blah", 2) đượcđánh giá thành "spam=blah eggs=2" Trong Python 3 và 2.6+, chức năng này được

 bổ sung bằng phương thức format() của lớp str, ví dụ như "spam={0}eggs={1}".format("blah", 2) Python 3.6 đã bổ sung thêm "f-string": blah = "blah";eggs = 2; f'spam={blah} eggs={eggs}'.[78]

2.4.4 Toán tử 

• + - * / // (phép chia số nguyên) % (chia lấy dư) ** (lũy thừa)

Ngày đăng: 16/01/2023, 15:48

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm