CHUONG 1: LUU DO THUAT TOAN VA LAP TRINH HAM 1.1 Vẽ lưu đồ thuật toán 1.1.1 Sinh ngẫu nhiên các giá trị cho 1 list số thực Chương trình mô tả qua quá trình sinh ngẫu nhiên list số thực
Trang 1—
`,
BAO CAO ĐỎ ÁN (hoặcTIÊU LUẬN, BÀI TẬP LỚN)
Hoc ky Il, nam học 2021 - 2022
Học phân:
Ngôn ngữ lập trình Python
Số phách (Do héi déng cham thi ghi)
Trang 2—_— @-= SK ee = —
DAI HOC HUE
KHOA KY THUAT VA CONG NGHE
sowl ww
NÊN
HUET )]——
Hoc ky Il, nam học 2021 - 2022
Sinh viên thực hiện: Phạm Thanh Thảo
(ký tên và ghi rõ họ tên)
Số phách (Do héi đống chám thi ghi)
— Thừa Thiên Huế,ngày 28 tháng 12 năm 2022 tt
Tông
a
Trang 3LOI CAM ON
Em xin gửi lời cảm ơn trân trọng đén giảng viên bộ môn - thày Nguyễn Dinh Hoa Cương , đã giảng dạy tận tình, chỉ tiết và truyền đạt những kiến thức quý báu, thông tin giúp em tiếp thu và sửa chữa những sai sót để có một bài đồ án hoàn thiện
Tạo cho em cơ hội để học hỏi và phát triển bản thân Cảm ơn Khoa Kỹ Thuật và Công Nghệ, Đại học Huế đã tạo điều kiện, hỗ trợ cơ sở vật chất cũng như môi trường học tập đề em có thẻ học hỏi nâng cao tư duy, kĩ năng của bản thân trong học tập
Trong quá trình hoàn thành đồ án chắc chắn sẽ không tránh khỏi những thiếu sót, cá nhân em rất mong nhận được sự góp ý của Thay Cé dé dé án của em được
hoàn thiện hơn
Cuối cùng em xin kính chúc Thay Cô mạnh khỏe, thành công trong sự nghiệp
và hạnh phúc
Em xin chân thành cám ơn!
Trang 4DANH MUC HINH ANH
Hinh 1: Sinh ngau nhién list $6 2 1
B0 RDu 421i 1 2
Hình 4: Lưu list vào tập ẨỈI ch Ho Ko KH 2
Hình 5: Kết quả viết chương trình chínhh - 2-2 52522 +52 +e+e+Ezz£zEzxeeeeerzezrzeesrxe 4
Hình 6: Tệp tin lưu list câu - - SH HT» nH Ho HE 5
Hình 18: Viết chương trình chính - 7-52 2 +52 ++S+E+#EeE+tet+eEeEeeEeereeeeerreerresrsrecee 15 Hình 19: Kết quả chương trình chính 5-5: 5-2 +22 +££+£+EzE£+EzE+z£zEzeezezzzzrzeeszscse 15
HINN 20: Tap tin ANT PN AN 15 Hình 21: Kiểm tra đạo văn -Ă c1 2E E1 TH TH KH TH TH KH KH Tư rệt 17
Trang 5DANH MUC BANG BIEU
Trang 6MUC LUC
D9) T90 009)000 -THẬHHẬẬẰ|:|Ä ÔỎ i
DANH MỤC HÌNH ẢNH - Gà 1S SE TT TT TT TH TH HT Hàng rếc ii DANH MỤC BẢNG BIÊU - -G-Ă SE SE SH BHYT HT Hàn cưng iii I/1891ã8/92 iv CHƯƠNG I: LƯU ĐỎ THUẬT TOÁN VÀ LẬP TRÌNH HÀM - 1
1.4 VE Tuy d6 thuat COA eee cceeceeeeseecsesceeecsesesesnecesesesescacecasecacesanseeseneseneeeeeeeeaees 1
1.1.1 Sinh ngau nhién cac gia tri cho 1 list “in 1
1.1.4 Lưu list trong tập ÏÏIN - SH HT HH HH HH kh 4
1.1.5 Viết chương trình chính thực hiện theo kịch bản -5-s=-s<s- 4 CHƯƠNG 2: LẬP TRÌNH VỚI CÁC THƯ VIỆN 2-2-2525 +ccc+cszexerexerscee 6
PÄN ¡HÀ 0 00001 6 2.1.1 Phép nhân giữa 1 vector và 1 ma trận - LH ke 6
2.1.2 Phép nhân Hadamard đối với 2 ma trận . -+-+++-+szs+zczszs+zszs+ezzc+ 6
2.1.3 Phép nhân chuyền vị với ma trận . - + + + 2 2xx +£zEeeererkrrerserrs 6
2.1.4 Viết chương trình chính gọi các hàm trên . -5-+ 2s<+<+z+z+zczszsss2 6 2.2 Thur ViGN SYMPY ÈCCaaaaaadđadđaa 8 2.2.1 Giải hệ phương trình - << LH KH to kh k 8
Trang 72.3.1 V8 d6 thi CAC Cap daO NAM cccccccccccsescsscscsscscescesceseeseuceseeseusevsesenceveesensesanees 9 2.3.2 VE dG thi Mat YEN NGWA .cccececcssescscsesscseeeceesesececsesececsesesaeaeeeeesseeessaeeneas 10 2.3.3 Vẽ đồ thị mặt hyperbolic 1 tầng . - 5-2 =+-+s+zxzszszeszseezrzsrsescee 11
2.3.4 Vẽ đồ thị mặt CầU - G2 222222232 32v H nh HT nh ng nga 11
2.3.5 Viết chương trình chính gọi thực hiện các hàm trên . - - 11
CHƯƠNG 3: LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG 5c sex 13 3.1 ThiẾT kế lớpD <2 S13 E215 E1 3 E3E1311 1 1 11133131111 1H11 KH 1n 13 3.2 Nhập dữ liệu cho list đối tượn . -¿- - 22+ S+++ESE£xkvetekkeresererrsesrsreesrs 13 3.3 Hiện thị list đối tượng - - + c1 312 212 12v 1x HH HT ko 13 3.4 Sắp xếp list đối tượng 5+ +-+tsst Sex vn H3 TH nh HH ghen 14
3.5 Lưu list đối tượng vào tập tin nhị phân . - + 2-2 ++s+szs=zczezx+zeeszsezcee 14 3.6 Đọc list đối tượng từ tập tin nhị phân - ¿7-2 2+2 s+s+e+ezzeerzsreezereres 14
3.7 Chương trinh chính << + + xxx xxx Họ aa kh 14
TÀI LIỆU THAM KHÁO -¿-L - - < 2 S33 311 EE E1 1 E111 1k HH ng tưệt 16
Trang 8CHUONG 1: LUU DO THUAT TOAN VA LAP TRINH HAM
1.1 Vẽ lưu đồ thuật toán
1.1.1 Sinh ngẫu nhiên các giá trị cho 1 list số thực
Chương trình mô tả qua quá trình sinh ngẫu nhiên list số thực được biếu diễn ở
Hình 1
Hình 1: Sinh ngáu nhiên list số thực
Mô tả lưu đồ thuật toán sinh ngẫu nhiên các giá trị cho 1 list:
- Bước |: Khai báo thư viện numpy
Mô tả lưu đồ sắp xép list các số thực:
- Bước 1: In list số thực ngẫu nhiên cua bai 1
Trang 1
Trang 9- Bước 2: Có 2 điều kiện nếu điều kiện đúng thì thực hiện theo cú pháp giảm dân (néu tham số reverse= True)
- Bước 3: Nếu sai thì thực hiện theo cú pháp và in ra màn hình list số thực theo chiéu tang dan (néu tham sé reverse= False)
1.1.3 Tìm kiếm số n trong list
Chương trình mô tả qua quá trình tìm kiếm n trong list được biêu diễn ở Hình 3
Hình 3: Tìm kiến sé n trong list
Mô tá lưu đỗ tìm kiếm n trong list:
- Bước 1: Nhập n tử bàn phím
- Buoc 2: Gan index bang newlist.index(n)
- Bước 3: Nếu n nhập từ bàn phím có trong newlist thì sẽ in ra màn hình
VỊ trí
- Bước 4: Nếu không có thì sẽ in ra màn hình không tim thay
1.1.4 Lưu list vào tập tin có tùy chọn tham số
Chương trình mô tả qua quá trình lưu list vào tập tin có tùy chọn tham số được biêu diễn ở Hình 4
Hình 4: Liew ist vdo ráp tin
Trang 2
Trang 10Mô tả lưu đồ lưu list vào tập tin:
- Bước 1: Nhập tùy chọn tham só từ bàn phím
- Bước 2: Nếu type ==”wb” thì tiến hành nhập tên tập tin / đường dẫn tệp
- Bước 3: Mở tệp với đường dẫn tệp và tùy chọn tham số
- Bước 4: Dùng câu lệnh f.write(str(mylisst)) đề ghi tệp dưới dạng tệp
văn bang
- Bước 5: Nếu sai , xét điều kiện type==”w”, nêu đúng thì tiến hành
nhập tập tin /đường dân tệp
- Bước 6: Như bước 3
- Bước 7: Dùng câu lệnh sv=pickle.dump(mylisst,f) để ghi tệp dưới dạng tệp nhị phân
- Bước 8: Kết thúc thuật toán
1.2 Lập trình hàm
1.2.1 Sinh ngẫu nhiên list số thực
Căn cứ vào lưu đồ Hình 1 ta có mã lệnh Python như sau
import numpy as np
import os
import random
def listsothuc (a):
return(x)
1.2.2 Sap xép list sé thyc
Căn cứ vào lưu đồ Hình 2 ta có mã lệnh Python như sau
1.1.3 Tim kiém n trong list
Căn cứ vào lưu đô Hình 3 ta có mã lệnh Python như sau
Trang 3
Trang 11print ("Khéng tim thay "
1.1.4 Lưu list trong tap tin
Căn cứ vào lưu đô Hình 4 ta có mã lệnh Python như sau
1.1.5 Viết chương trình chính thực hiện theo kịch bản
Mã lệnh Python mô tả cho thuật toán viêt chương trình chính
def main():
k = listsothuc (10)
print('List sé thyc duoc sinh ra:',k)
print('List giadm dan: ',newlist)
tim n trong list (newlist)
Trang 12
set (ÍB-99Ê978535030816%, &.192)9%88218722313, 6.79813339/76895424, @.)5717388499611%, @.71S7S9575S150225, 6.4694053882814618%, 6 4570374233831186, 6.10121269948/54114, 6.14
Hình 7: Tép tin sap xếp
Trang 5
Trang 13CHƯƠNG 2: LẬP TRÌNH VỚI CÁC THU VIEN
2.1 Thư viện NumPy
2.1.1 Phép nhân giữa 1 vector và 1 ma trận
Đoạn code mô tả cho thuật toán phép nhân giữa 1 vector và 1 ma trận được trình bay sau day
print ("Phép nhadn vé huéng voi ma tran A:")
print (x@y)
2.1.2 Phép nhân Hadamard doi véi 2 ma trận
Đoạn code mô tả cho thuật toán phép nhân Hadamard được trình bày sau đây
2.1.3 Phép nhân chuyền vị với ma trận
Đoạn code mô tả cho thuật toán phép nhân chuyên vị với ma trận được trình bày
2.1.4 Viết chương trình chính gọi các hàm trên
Đoạn code mô tả cho thuật toán hàm chính gọi các hàm trên
Trang 15Đoạn code mô tả giải hệ phương trình được trình bảy sau đây
print('Két qua giéi han: ', answer)
2.2.3 Tinh dao ham
Doan code mô tả tính đạo hàm được trình bày sau đây
2.2.4 Tinh nguyén ham
Đoạn code mô tả tính nguyên hàm được trình bày sau day
def tinhnguyenham(c,d):
x = symbols('x')
f =x /(x**241)
Trang 8
Trang 16print (answer)
2.2.5 Tinh tich phan
Đoạn code mô tả tính tích phân được trình bảy sau day
Integral((x**2 + x - cos(x)*tan(x))/x, (x, 2"pi/3, pi)) 2.3 Thư viện MatplotLib
2.3.1 Vẽ đồ thị các cấp đạo hàm
Đoạn code khai báo các thư viện được sử dụng ở chương trình
import numpy as np
import matplotlib.pyplot as plt
Đoạn code mô tả hàm vẽ đồ thị hàm số y, y'„yˆˆ vay””’
de£f do thi ham so v(a, b,c ,x):
Trang 17£3 = a3*x
return £3
Vy = đo thi ham so y(1, -2, -3, x)
vi = do thi ham so vi(á4, Ô, —-4, x)
y2 = do thi ham so y2(12, 0, -4, x)
y3 = do thi ham so y3(0,0,24 ,*#)
ax.set_xlabel ("Truc hoành - x")
ax.set_ylabel ("Truc tung - y")
ax.set title("Dd thi ")
from matplotlib import cm
Trang 182.3.3 Vé do thi mat hyperbolic 1 tầng
Doan code m6 ta do thi mat hyperbolic 1 tang được trình bày sau đây
return Z
def ve hyperbolic():
ĐLE show ()
2.3.4 Vẽ đồ thị mặt cầu
Đoạn code mô tả đô thị mặt câu được trình bảy sau đây
đe£f do thi mat cau(x,
2.3.5 Viết chương trình chính gọi thực hiện các hàm trên
Đoạn code mô tả chương trình chính của các hàm trên
Trang 19Sau khi chạy mã lệnh Python dé thi yên ngựa kết Quả ïn ra màn hình như
Hinh 10: De thi 3D mét Hyperbolic 1 tang
Sau khi chạy mã lénh Python dé thị mặt cầu kết qua ín ra màn hình như Hình 11
Hinh 11: Dé thi 3D mat cau
Trang 12
Trang 20CHUONG 3: LAP TRINH HUONG DOI TUQNG
def str (self) -> str:
message = ‘[ho ten: * + self.hoten + ‘; age:* \ + str(seLf.namsinh) + '; money: ' \ + str(self.luong) + ']'
return message
F, other):
nansinh > other.namsinh) other):
.nansinn >= other.namsinn)
def gt (s return ( def ge (s
other):
nansinh < other.namsinh) other):
Namsinn <= other.namsinh)
def _eq Cself, other):
return (self.namsinh == other.namsinh)
Hình 12: Xây dựng lớp NhanVien
3.2 Nhập dữ liệu cho list đối tượng
Doan code mô tả thuật toán hàm nhập dữ liệu cho 1 list các đối tượng được biêu diễn ở Hình 13
from staff import NhanVien import os
import pickle def nhap_du_lieu():
nv1=NhanVien('Quynh Anh ', 2604, 108), nv2=NhanVien('Chau', 2065, 120)
nv3=NhanVien('Chi', 2665, 366)
nv=[nv1,nv2,nv3]
return nv Hình 13: Xây dựng hàm nhép dữ liệu
3.3 Hién thi list đối tượng
Đoạn code mô tả thuật toán hàm hiên thị list các đôi tượng được biêu diễn ở Hình
14
def in_list_nhanvien(content: list[NhanVien]):
for item in content:
print(item) Hinh 14: Hién thi dist cde d6i tong
Trang 13
Trang 213.4 Sắp xếp list đối tượng
Đoạn code được mô tả thuật toán hàm sắp xép list theo chiêu giảm dân của độ tuôi
được biều diễn ở Hình 15
def sap_xep(nv):
nv = sorted(nv, reverse=True) for item in nv:
print(item)
Hình 15: Sếp xếp theo chiều gidm dan
3.5 Lưu list đối tượng vào tập tin nhị phân
Đoạn code được mô tả thuật toán hàm lưu list các đôi tượng vào tập tin nhị phân
được biều diễn qua Hình 16
def ghi_nhanvien(thumuc: str, ten_taptin: str, objs: List[NnanVien]):
try:
with open(os.path.join(thumuc, ten_taptin), ‘wb') as f:
pickle.dump(objs, f) print('Hoan thanh qua trinh ghi du Liev vao tap tin') except Exception as e:
printce) print('Xay ra loi trong qua trinh ghi file’)
Hinh 16: Luu list các đối #ượng
3.6 Đọc list đối tượng từ tập tin nhị phân
Đoạn code mô tả thuật toán hàm đọc list các đôi tượng tử tập tin nhị phân được
Trang 22path= str(input('Nhập đường dẫn tệp: '))
fiLename= str(input('Nhập tên tệp: '))
nv = [NhanVien('Quynh Anh ', 2604, 106),
NhanVien('Chau', 2965, 120), NhanVien('Chi', 2003, 300),]
print('List nhân viên ') nhap_du_lieu() noidung = doc_nhanvien(path, filename) in_list_nhanvien(noidung)
print('List nhân viên sắp xếp giảm dần theo độ tuổi ') sap_xep(nv)
ghi_nhanvien(path, filename, nv) print('ket thuc chuong trinh')
if name ==" main ":
main()
Hinh 18: Viét chương trình chính
Ket quả được trả về:
Nhập đường dẫn tệp: 0://
Nhập tên tệp: Luu.dat List nhân viên
[ho ten: Quynh Anh ; age:2004; money: 100]
[ho ten: Chau; age:2005; money: 120]
[ho ten: Chi; age:2003; money: 300]
List nhân viên sắp xếp giảm dần theo độ tuổi
[ho ten: Chau; age:2005; money: 120]
[ho ten: Quynh Anh ; age:2004; money: 100]
[ho ten: Chi; age:2003; money: 300]
Hoan thanh qua trinh ghi du lieu vao tap tin ket thuc chuong trinh
Hinh 19: Két qué chiong trinh chính
lua - Notepad File Edit Format View Help
Quynh Anh *Œinansinh**MÖKE]luong?Kdubhl)”}”(h[EKhau?rjMÕIh Kxubhi)”}”(hÏŒiChi?njMỚIh M,lube
Hình 20: Táp tin nh phân
Trang 15
Trang 23TÀI LIỆU THAM KHẢO
Trang 16
Trang 24KET QUA KIEM TRA DAO VAN
Hình 21: Kiểm ¿ra đạo văn
Trang 17