Bài tập này yêu cầu viết đoạn mã chophép nhập vào một ma trận hai chiều và chọn các chức năng thực hiện trong menu.Do kiến thức và kĩ năng còn hạn chế nên chúng em không tránh khỏi những
Trang 1TRƯỜNG ĐẠI HỌC VĂN LANG KHOA KỸ THUẬT CƠ – ĐIỆN VÀ MÁY TÍNH
BỘ MÔN CƠ SỞ LẬP TRÌNH
- -
BÁO CÁO CUỐI KỲ
Giáo viên hướng dẫn: Huỳnh Phước Danh Sinh viên thực hiện :
Nguyễn Băng Tâm- 2274601080014
Võ Xuân Phát- 2274601080022
TP.Hồ Chí Minh- 2023
LỜI MỞ ĐẦU
0
Trang 2Môn cơ sở lập trình (hoặc còn được gọi là Introduction to Programming) là một môn
học cốt lõi trong lĩnh vực Khoa học Máy tính và Công nghệ Thông tin
Cung cấp cho sinh viên những kiến thức và kỹ năng căn bản về lập trình, giúp sinh
viên hiểu về thuật toán, tức là quá trình giải quyết vấn đề thông qua các bước xử lý
được sắp xếp logic
Python có một cộng đồng lớn và sôi động trong ngành khoa học dữ liệu Có nhiều thư
viện và công cụ phong phú hỗ trợ việc xử lý, phân tích và trực quan hóa dữ liệu như
NumPy, Pandas, Matplotlib, Seaborn và Scikit-learn Sự phát triển mạnh mẽ của cộng
đồng Python đảm bảo rằng bạn có thể tìm thấy giải pháp và tài liệu hữu ích cho hầu
hết các vấn đề trong lĩnh vực này Python có cú pháp đơn giản, gần gũi với ngôn ngữ
tự nhiên, có thể kết nối dữ liệu dễ dàng từ nhiều nguồn khác nhau, bao gồm cơ sở dữ
liệu, tệp tin CSV, Excel, SQL, API và nhiều hệ thống lưu trữ dữ liệu khác
Trong bài đồ án môn học Cơ sở Lập Trình, chúng tôi được giao nhiệm vụ thực hiện
một bài tập lập trình bằng ngôn ngữ Python Bài tập này yêu cầu viết đoạn mã cho
phép nhập vào một ma trận hai chiều và chọn các chức năng thực hiện trong menu
Do kiến thức và kĩ năng còn hạn chế nên chúng em không tránh khỏi những sai lầm,
thiếu sót trong cách hiểu và quá trình viết chương trình Chúng em rất mong được sự
đóng góp ý kiến của Thầy để bài báo cáo đạt được kết quả tốt hơn
MỤC LỤC
LỜI MỞ ĐẦU 1
1
Trang 3I MÔ TẢ BÀI TOÁN 3
II PHÂN CÔNG CÔNG VIỆC 4
III PHÂN TÍCH THUẬT TOÁN 4
1 Phân tích 4
2 Thuật toán 5
Sơ đồ khối 5
Chương trình hoàn chỉnh 13
PHỤ LỤC HÌNH ẢNH Hình 1: Sơ đồ khởi tạo ma trận 6
Hình 2: Sơ đồ khởi tạo menu 7
Hình 3: Sơ đồ xuất ma trận 8
Hình 4: Lựa chọn 1(tính tổng các số chẵn có trong ma trận) 9
Hình 5: Lựa chọn 2(tìm phần tử chẵn dương nhỏ nhất) 10
Hình 6: Lựa chọn 3( đếm các giá trị nhỏ hơn x) 11
Hình 7: Lựa chọn 4( tạo tập tin văn bản tên output1.txt câu 2) 12
2
Trang 4I MÔ TẢ BÀI TOÁN
Bài toán yêu cầu viết một chương trình Python để nhập một ma trận các số nguyên
dương từ người dùng Sau đó, chương trình phải hiển thị một menu cho phép người
dùng lựa chọn các chức năng sau:
Tính tổng các phần tử chẵn trong ma trận
Tìm phần tử chẵn dương nhỏ nhất trong ma trận
Đếm số lượng giá trị nhỏ hơn một giá trị x trong ma trận
Tạo một tệp văn bản có tên là "output1.txt" và ghi kết quả của chức năng số 2 vào tệp
này
Khi người dùng chọn một chức năng từ menu, chương trình sẽ thực hiện chức năng
tương ứng và hiển thị kết quả cho người dùng
Nếu người dùng chọn chức năng 1, chương trình sẽ tính tổng của tất cả các phần tử
chẵn trong ma trận và hiển thị kết quả
Nếu người dùng chọn chức năng 2, chương trình sẽ tìm phần tử chẵn dương nhỏ nhất
trong ma trận và hiển thị kết quả Nếu không có phần tử chẵn dương nào trong ma
trận, chương trình sẽ thông báo cho người dùng
Nếu người dùng chọn chức năng 3, chương trình sẽ yêu cầu người dùng nhập một giá
trị x, sau đó đếm số lượng phần tử trong ma trận mà nhỏ hơn giá trị x và hiển thị kết
quả
Nếu người dùng chọn chức năng 4, chương trình sẽ tạo một tệp văn bản có tên
"output1.txt" và ghi kết quả của chức năng số 2 vào tệp này Nếu không có phần tử
chẵn dương nào trong ma trận, tệp văn bản sẽ chứa thông báo tương ứng
Người dùng có thể tiếp tục chọn các chức năng từ menu cho đến khi chọn thoát
chương trình
Phần code và sơ đồ khối đều được cả 2 thành viên đóng góp và phát triển
3
Trang 5 Sau khi có dữ liệu và nội dung cần thiết:
o Tâm đảm nhận việc đưa thông tin vào PowerPoint, hoàn thiện các slide và tạo ra
sản phẩm thuyết trình hoàn thiện
o Phát phụ trách viết đồ án bằng Word bằng việc sử dụng các thông tin cả hai đã thu
thập ở trên
1 Phân tích
Dữ liệu đầu vào:
Nhập vào ma trận dưới dạng 2D chứa các số nguyên dương và chọn menu để thực hiện
các chức năng
Ví dụ: Ma trận nhập vào là:
1. Tính tổng các phần tử chẵn có trong ma trận
Kết quả: Máy in ra kết quả là 20 (tổng các số chẵn gồm các số 2,4,6,8)
2. Tìm phần tử chẵn dương và nhỏ nhất trong ma trận
Kết quả: Máy in ra giá trị là 2 (2 là số chẫn dương nhỏ nhất trong ma trận)
3. Đếm các giá trị nhỏ hơn x trong ma trận(x được nhập từ người dùng)
Kết quả: x nhập vào là 5 thì kết quả nhận được là 4 (gồm những số 1,2,3,4 vì các số
trên đều nhỏ hơn 5)
4. Tạo tập tên văn bản tên output1.txt chứa kết quả câu 2
Kết quả: Một file văn bản có miền txt tên output1 sẽ được khởi tạo và trong đó
chứa kết quả của câu 2
4
Trang 62 Thuật toán
Sơ đồ khối
5
Trang 76
Trang 8Hình 1: Sơ đồ khởi tạo ma trận
Hình 2: Sơ đồ khởi tạo menu
Trang 9Hình 3: Sơ đồ xuất ma trận
Trang 10Hình 5: Lựa chọn 2(tìm phần tử chẵn dương nhỏ nhất)
Trang 11Hình 6: Lựa chọn 3( đếm các giá trị nhỏ hơn x)
Trang 12Hình 7: Lựa chọn 4( tạo tập tin văn bản tên output1.txt câu 2)
Trang 13Chương trình hoàn chỉnh
import numpy as np
def tao_matran(dong, cot):
while True:
if dong <= 0 or cot <= 0:
print('Vui lòng nhập lại số dòng và số cột')
dong = int(input('Nhập số dòng của ma trận: '))
cot = int(input('Nhập số cột của ma trận: '))
else:
a = []
for i in range(dong):
a1 = []
for j in range(cot):
elements = int(input('Nhập giá trị {}, {}: '.format(i + 1, j + 1)))
a1 = a1 + [elements]
a = a + [a1]
return a
def xuatmang2D(matran):
for row in matran:
for element in row:
print(element, end='\t')
print()
def cau1(matran):
tong = 0
for row in matran:
for element in row:
if element % 2 == 0:
tong += element
return tong
12
Trang 14def cau2(matran):
max_num = None
for row in matran:
for element in row:
if element > 0 and element % 2 == 0:
if max_num is None or element < max_num:
max_num = element
if max_num is None:
print("Không có phần tử chẵn dương trong ma trận.")
else:
print(f"Phần tử chẵn dương và nhỏ nhất trong ma trận là: {max_num}")
def cau3(matran):
count = 0
x = int(input('Nhập x: '))
for row in matran:
for element in row:
if element < x:
count += 1
print('x vừa nhập là:', x)
print('Số giá trị nhỏ hơn x là:', count)
def cau4(matran):
max_num = None
for row in matran:
for element in row:
if element > 0 and element % 2 == 0:
if max_num is None or element < max_num:
max_num = element
with open("output1.txt", "w", encoding='utf-8') as f:
f.write(str(matran))
13
Trang 15f.write("\n")
if max_num is None:
f.write("Không có phần tử chẵn dương trong ma trận.")
else:
f.write(f"Phần tử chẵn dương và nhỏ nhất trong ma trận là: {max_num}")
print('Thông tin câu 2 đã được thêm vào file output1.txt')
def menu(matran):
print("Menu:")
print("1 Tính tổng các phần tử chẵn có trong ma trận")
print("2 Tìm phần tử chẵn dương và nhỏ nhất trong ma trận")
print("3 Đếm các giá trị nhỏ hơn x trong ma trận")
print("4 Tạo tập tin văn bản tên output1.txt câu 2")
print("5 Thoát")
while True:
luachon = int(input('Sự lựa chọn của bạn là: '))
while luachon < 1 or luachon > 5:
print('Lựa chọn không hợp lệ, vui lòng nhập lại')
luachon = int(input('Sự lựa chọn của bạn là: '))
else:
if luachon == 1:
tong_chan = cau1(matran)
print("Tổng các số chẵn trong ma trận:", tong_chan)
elif luachon == 2:
cau2(matran)
elif luachon == 3:
cau3(matran)
elif luachon == 4:
cau4(matran)
elif luachon == 5:
print('Bạn đã thoát chương trình!')
break
14
Trang 16dong = int(input('Nhập số dòng của ma trận: '))
cot = int(input('Nhập số cột của ma trận: '))
matran = np.array(tao_matran(dong, cot))
print("Ma trận vừa nhập là:")
xuatmang2D(matran)
menu(matran)
Ở trên là một đoạn mã Python đơn giản để làm việc với ma trận Chương trình cho
phép người dùng nhập số dòng và số cột của ma trận, sau đó tạo ma trận dựa trên các
giá trị nhập vào Chương trình cung cấp một menu cho người dùng lựa chọn các tùy
chọn để thực hiện các phép tính trên ma trận
Mã này sử dụng module NumPy để xử lý ma trận và thực hiện các phép tính liên quan
Các phép tính bao gồm:
1 Tính tổng các phần tử chẵn có trong ma trận
2 Tìm phần tử chẵn dương và nhỏ nhất trong ma trận
3 Đếm các giá trị nhỏ hơn một giá trị x trong ma trận
4 Tạo một tệp văn bản và ghi kết quả tìm được ở phần 2 vào tệp đó
Mã cung cấp một menu trực quan để người dùng chọn các tùy chọn và thực hiện các
phép tính tương ứng trên ma trận Người dùng có thể lựa chọn thực hiện các phép tính
nhiều lần hoặc thoát khỏi chương trình khi cần thiết
Đoạn mã này có thể được mở rộng và tùy chỉnh để thực hiện các phép tính khác trên
ma trận hoặc thực hiện các tác vụ khác liên quan đến ma trận Sử dụng module NumPy
cung cấp nhiều chức năng mạnh mẽ để làm việc với ma trận và dữ liệu số học
15