Lý thuyết trọng tâm tin học 11 - Định hướng Khoa học máy tính kết nối bài 30: Thiết lập thư viện cho chương trình

Tổng hợp kiến thức trọng tâm Tin học 11 - Định hướng Khoa học máy tính kết nối tri thức bài 30: Thiết lập thư viện cho chương trình. Tài liệu nhằm củng cố, ôn tập lại nội dung kiến thức bài học cho học sinh dễ nhớ, dễ ôn luyện. Kéo xuống để tham khảo

1. THIẾT LẬP THƯ VIỆN CHO CHƯƠNG TRÌNH

a) Một số hàm của thư viện math

  • math là một thư viện các hàm chuẩn của Python liên quan đến các tính toán toán học.

Ví dụ: 

    • sqrt() - hàm tính căn bậc hai
    • floor() - làm tròn xuống
    • ceil() - làm tròn lên.
  • Để đưa thư viện vào bộ nhớ có thể dùng lệnh import hoặc from <thư viện> import <các hàm> như sau:

import math # đưa toàn bộ thư viện math vào bộ nhớ

hoặc

from  math import sqrt, floor, ceil # chỉ đưa vào bộ nhớ ba hàm

Ví dụ:

>>> from  math import sqrt, floor, ceil

>>> sqrt(5)

2.23606797749979

>>> floor(8.7)

8

>>> ceil(7.1)

8

b) Tự thiết lập thư viện

  •  Cách thiết lập: Đưa các hàm chuẩn vào một tệp chương trình và đặt tên của tệp này chính là tên thư viện muốn lưu trữ.
  • Ví dụ: Tệp chương trình lib.py đóng vai trò như một thư viện. Thư viện này có hai hàm như sau:

lib.py

1 def NhapDL():

2     S = input("Nhập dãy số nguyên cách nhau bởi dấu cách")

3     A = [int(x) for x in S.split()]

4     return A

5 def InsertionSort(A):

6     n = len(A)

7     for i in range(1,n):

8       value = A[i]

9       j = i-1

10     while j >= 0 and A[j] > value:

11          A[j+1] = A[j]

12          j = j-1

13      A[j+1] = value

Chương trình sử dụng thư viện có thể như sau (đặt tệp chương trình này cùng thư mục với tệp thư viện lib.py 

1 from lib import *# Đưa tất cả các hàm của thư viện lib vào bộ nhớ

2 A = NhapDL()

3 InsertionSort(A)

4 print(A)

Kết luận: Thư viện chương trình là tập hợp các hàm được đặt trong các mô đun độc lập để dùng chung cho nhiều chương trình khác nhau. Các thư viện này có thể được dùng nhiều lần và có thể cập nhật, nâng cấp bất cứ lúc nào. Trong Python, lệnh import có chức năng đưa thư viện vào bộ nhớ để sẵn sàng sử dụng.

2. CẤU TRÚC DANH SÁCH LIÊN KẾT

2. Cấu trúc danh sách liên kết

  • Mỗi danh sách liên kết sẽ bao gồm hai cấu trúc dữ liệu:
    • Cấu trúc Node mô tả các phần tử độc lập của danh sách. Tối thiểu mỗi node cần có thông tin dữ liệu key (khóa) và thuộc tính next dùng để kết nối sang phần tử tiếp theo trong danh sách.
    • Cấu trúc LL (Linked list) sẽ có thông tin head (đầu) sẽ luôn chỉ vào node đầu tiên của danh sách liên kết.

1. Cấu trúc danh sách liên kết

  • Một số lệnh, thao tác chính với kiểu dữ liệu danh sách liên kết:
    • Khởi tạo một danh sách liên kết mới.
    • Bổ sung một phần tử với khóa k cho trước vào danh sách.
    • Tìm kiếm phần tử có khóa k trong danh sách cho trước.
    • Xóa phần tử có khóa k trong danh sách.
  • Thiết lập một số hàm là các thao tác chuẩn trên dữ liệu danh sách liên kết.

1. Hàm insert(L,k) sẽ bổ sung (chèn) node với khóa k vào đầu của danh sách L.

2. Cấu trúc danh sách liên kết

Chương trình như sau:

1 def insert(L,k):

2     node = Node(k)

3     node.next = L.head

4     L.head = node

2. Hàm delete_first(L) sẽ xóa node đầu tiên của danh sách (nếu danh sách không rỗng).

Hàm delete_first(L) sẽ xóa node đầu tiên của danh sách (nếu danh sách không rỗng).

Chương trình như sau:

1 def delete_first(L,k):

2     if L.head != None:

3        L.head = L.head.next

3. Hàm tìm kiếm phần tử có khóa k trong danh sách L. Nếu tìm thấy sẽ trả về phần tử (node) tương ứng, nếu không tìm thấy trả về None.

Việc tìm kiếm bắt đầu từ node đầu tiên của danh sách (dòng 2). Lần lượt duyệt theo từng phàn tử của danh sách cho đến khi nào tìm thấy phần tử có khóa k hoặc đi đến cuối danh sách thì dừng (các lệnh dòng 3,4).

1 def search(L,k):

2     x = L.head

3     while x != None and x.key != k:

4         x = x.next

5     return x

4. Hàm xóa phần tử có khóa k trong danh sách L.

  • Nếu phần tử cần tìm là node đầu tiên của danh sách thì cách xóa giống hàm delete_first().
  • Trong trường hợp tổng quát cần duyệt để tìm phần tử của danh sách có khóa k. Trong quá trình tìm luôn lưu trữ biến z là node trước của biến y cần xóa (lệnh x.next = y.next).

4. Hàm xóa phần tử có khóa k trong danh sách L.

5. Hàm show(L) có tính năng hiển thị toàn bộ thông tin của danh sách liên kết.

1 def show(L):

2     x = L.head

3     while x != None:

4         print(x.key, end = " ")

5         x = x.next

6     print()

  • Toàn bộ thư viện chuẩn của cấu trúc danh sách liên kết (Đính kèm dưới hoạt động)
  • Một số ví dụ thiết lập cấu trúc dữ liệu Linked List:

a) Thiết lập một danh sách rỗng

L = LL()

b) Thiết lập một danh sách bao gồm hai node có khóa là 5, 2.

L = LL()

insert(L,5)

insert(L,2)

c) Thiết lập một danh sách bao gồm các phần tử lấy từ dãy A cho trước

A = [5,2,8,10,0,3]

L = LL()

for k in A:

     insert(L,k)

Kết luận: 

  • Danh sách liên kết là cấu trúc dữ liệu bao gồm:
    • Cấu trúc node mô tả các phần tử của danh sách. Mỗi node sẽ có dữ liệu khoá (key) là thông tin chính và thông tin next để kết nối sang phần tử tiếp theo của danh sách.
    • Cấu trúc head là đầu của mỗi danh sách liên kết. Head luôn chỉ vào node đầu tiên của danh sách.
    • Node cuối cùng của danh sách sẽ có thông tin next = None (dữ liệu rỗng).
  • Có thể thiết lập các hàm tìm kiếm, bổ sung hoặc xóa thông tin trên danh sách liên kết.

Nội dung quan tâm khác

Từ khóa tìm kiếm: Tóm tắt kiến thức tin học 11 định hướng KHMT KNTT bài 30 Thiết lập thư viện cho chương trình, kiến thức trọng tâm tin học 11 định hướng KHMT kết nối bài 30: Thiết lập thư viện cho chương trình, Ôn tập tin học 11 định hướng KHMT kết nối bài Thiết lập thư viện cho chương trình

Bình luận

Giải bài tập những môn khác