Bài 31. Thực hành thiết lập thư viện chương trình

Chủ đề 6. Kĩ thuật lập trình – Bài 31. Thực hành thiết lập thư viện chương trình – sách giáo khoa trang 143 lớp 11 Khoa học máy tính – Kết Nối Tri Thức, mời các em tham khảo cùng Bumbii.

Chủ đề 6. Kĩ thuật lập trình – Bài 31. Thực hành thiết lập thư viện chương trình

Luyện tập

Câu 1. Đặt tất cả các tệp thư viện đã định nghĩa ở nhiệm vụ 1, 2 và 3 vào thư mục myLibs rồi viết mã nguồn ở tệp main.py (đặt cùng đường dẫn với thư mục myLibs) để sử dụng các hàm trong các thư viện đó.

Lời giải:

Sau khi đặt các tập thư viện vào thư mục myLibs, để sử dụng thư viện cần viết các lệnh import phù hợp bằng cách chỉ ra đường dẫn đến các tệp thư viện đó. Trong trường hợp tệp main.py đặt cùng đường dẫn với thư mục myLibs, mã nguồn có thể viết như sau:

from myLibs.duongtron import *
from myLibs.congthucly import *
from myLibs.congthuchoa import *

r = float(input("Nhập bán kính hình tròn: "))
p = tinhChuVi(r)

print("Chu vi hình tròn : ", p)

s = tinhDienTich(r)
print("Diện tích hình tròn là: ", s)

dsDienTro= [3, 6, 8]
print("Điện trở tương đương của mạch mắc nối tiếp: ", machNoiTiep(dsDienTro))
print("Điện trở tương đương của mạch mắc song song: ", machSongSong(dsDienTro))

dsNtk = [12,13]
dsTyLe = [98.89, 1.11]
ntkTB= tinhNtkTB (dsNtk, dsTyLe)
print("Nguyên tử khối trung bình của Carbon là: ", ntkTB)

Câu 2. Sửa lại thư viện hinh_tron ở nhiệm vụ 1 bằng cách không sử dụng thư viện chuẩn math mà hãy định nghĩa thư viện my_math trong đó có định nghĩa hằng số Pi.

Lời giải:

Thư viện my_math.py chỉ gồm một dòng định nghĩa số Pi. Lưu ý ngôn ngữ Python không hỗ trợ định nghĩa hằng số, các lập trình viên thường viết hoa các kí tự tên biển để ngầm quy định đây là một biến không nên thay đổi giá trị (ứng với khái niệm hằng số trong các ngôn ngữ lập trình khác).

Tệp my_math.py như sau:

PI = 3.14159265359

from my_math import * #Khai báo sử dụng thư viện my_math
def tinhChuVi(r):
    return 2*PI*r
def tinhDienTich(r):
    return PI*p*r

Vận dụng

Câu 1. Tạo thư viện phuong_trinh gồm hàm phuongTrinhBac2(a, b, c) với a, b, c là các hệ số của phương trình ax2 + bx + c = 0. Tuỳ vào các giá trị của các tham số, hàm sẽ in ra thông báo nghiệm của phương trình.

Lời giải:

Thư viện phuong_trinh.py như sau:

from math import sqrt

def phuongTrinhBac2(a, b, c):
    if a == 0:
        print("Hệ số a = 0, đây không phải là phương trình bậc 2")
    else:
        delta = b*b - 4*a*c
        if delta < 0:
            print("Delta < 0, phương trình vô nghiệm")
        elif delta == 0:
            x1 = -b / (2*a)
            print(f"Phương trình có nghiệm kép x1 = x2 = {x1:.2f}")
        else:
            x1 = (-b + sqrt(delta)) / (2*a)
            x2 = (-b - sqrt(delta)) / (2*a)
            print(f"Phương trình có 2 nghiệm phân biệt x1 = {x1:.2f}, x2 = {x2:.2f}")

Câu 2. Viết chương trình quản lí các bài hát trong một đĩa CD hay mớt play list, sử dụng cấu trúc LinkedList (đã được định nghĩa ở bài trước). Chương trình gồm hai tệp:

– Tệp quan _ly_cd.py gồm ba hàm:

  • Hàm nhapDL(): Yêu cầu người dùng nhập số lượng bài hát, rồi sau đó nhập lần lượt tên các bài hát và bổ sung vào đĩa CD (hay play list), trả lại biến kiểu LinkedList chứa các bài hát.
  • Hàm timBai(): Tham số gồm đối tượng LinkedList và tên bài hát <ten_bai>. Nếu có bài hát cần tìm, hàm in ra vị trí đầu tiền xuất hiện bài hát, nếu không in ra thông báo “Không tìm thấy bài hát <ten_bai>”.
  • Hàm inTT(): tham số là đối tượng LinkedList. thực hiện in mỗi bài hát trên một dòng theo định dạng <Số thứ tự>. <Tên bài hát>.

– Tệp main.py sử dụng thư viện quan_ly_cd.

Lời giải:

Trong thư viện quan_ly_cd, hàm nhapDL cần tự xử lí để các bài hát được chèn vào cuối danh sách nên không thể dùng insert(L,k) của thư viện LinkedList. Tệp quan ly_cd.py như sau:

from LinkedList import *

def nhapDL():
    n = int(input("Hãy nhập số lượng bài hát: "))
    l = LL()
    x = l.head #biến tham chiếu đến bài hát đang xét trong danh sách
    for i in range(n):
        bai_hat = input("Bài " + str(i + 1) + ": ")
        node = Node(bai_hat)
        if i == 0:
            l.head = node
        else:
            x.next = node
        x = node #cập nhật bài hát đang tham chiếu
    return l

def timBai(l, tenBai):
    x = l.head
    i = 1
    while x != None and x.key != tenBai:
        x = x.next
        i += 1
    if x == None:
        print("Không tìm thấy bài hát", tenBai)
    else:
        print("Bài hát", tenBai, "xuất hiện tại vị trí", i)

def inTT(l):
    x = l.head
    i = 1
    print("Danh sách bài hát trong playlist:")
    while x != None:
        print(i, ":", x.key)
        x = x.next
        i += 1

Chương trình chính main.py có dạng như sau:

from quan_ly_cd import *
l = nhapDL()
timBai(1, "Phượng Hồng")

Xem các bài giải khác: Giải bài tập SGK lớp 11 định hướng Khoa học máy tính – NXB Kết nối tri thức với cuộc sống

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x