Giải ngắn gọn 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

Giải siêu ngắn bài 30: Thiết lập thư viện cho chương trình sách tin học 11 định hướng Khoa học máy tính kết nối tri thức. Với câu từ ngắn gọn, ý tứ xúc tích, dễ hiểu, học sinh nhanh chóng nắm bắt các ý chính của bài, giúp nhớ nhanh và nhớ lâu. Từ đó, việc chinh phục kiến thức trở nên dễ hơn bao giờ hết.

MỞ ĐẦU

Câu 1: Em hãy tìm thêm các ví dụ thực tế của mô hình danh sách liên kết.

Trả lời:

  • Quản lý danh bạ: lưu trữ danh sách các liên hệ, được biểu diễn là một đối tượng trong danh sách liên kết, trong đó mỗi đối tượng chứa thông tin như tên, số điện thoại, địa chỉ, và liên kết đến liên hệ tiếp theo trong danh sách.

  • Trình quản lý tập tin: duyệt qua các thư mục và tập tin trong hệ thống tập tin, được biểu diễn là một đối tượng trong danh sách liên kết đôi, trong đó mỗi đối tượng chứa thông tin như tên, đường dẫn, kích thước, và liên kết đến thư mục hoặc tập tin trước và sau nó trong danh sách.

  • Quản lý bài đăng trên mạng xã hội: quản lý các bài đăng của người dùng, được biểu diễn là một đối tượng trong danh sách liên kết kép, trong đó mỗi đối tượng chứa thông tin như nội dung, người đăng, thời gian đăng, và liên kết đến bài đăng trước và sau nó trong danh sách.

  • Duyệt web: duyệt qua các trang web đã xem trước đó, được biểu diễn là một đối tượng trong danh sách liên kết kép, trong đó mỗi đối tượng chứa thông tin như URL, tiêu đề, nội dung, và liên kết đến trang web trước và sau nó trong danh sách.

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

Hoạt động 1. Tìm hiểu ý nghĩa của thư viện chương trình

Câu 1: Em hãy đọc, thảo luận và trả lời các câu hỏi sau:

  1. Vì sao lại cần thư viện chương trình?

  2. Ý nghĩa của các hàm trong thư viện chương trình là gì?

Trả lời:

  1. Có thể dùng nhiều lần và có thể cập nhật, nâng cấp bất cứ lúc nào. 

  2. Có chức năng đưa thư viện vào bộ nhớ để sẵn sàng sử dụng.

Câu hỏi 

Câu 1: Những câu nào sau đây là sai về ý nghĩa của việc sử dụng thư viện khi viết chương trình?

A. Chương trình sẽ ngắn hơn.
B. Các hàm thư viện được viết một lần và sử dụng nhiều lần.
C. Chương trình sẵn sàng, dễ hiểu hơn.
D. Chương trình sẽ chạy nhanh hơn.

Trả lời: D

 

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

Hoạt động 2: Tìm hiểu cấu trúc danh sách liên kết

Câu 1: Đọc, trao đổi và thảo luận để biết cấu trúc dữ liệu của danh sách liên kết và các thao tác dữ liệu cơ bản trên danh sách liên kết.

Trả lời:

  • Cấu trúc note: mô tả các phần tử của danh sách, có dữ liệu khóa (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: đầu của mỗi danh sách liên kết, 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.

 

Câu hỏi 

Câu 1: Đoạn hàm sau thực hiện công việc gì?

Trả lời:

Sử dụng thư viện linkedlist và tạo một đối tượng danh sách liên kết mới (gọi là L) bằng cách gọi hàm khởi tạo LL().

Thực hiện hai lần gọi hàm insert(L,10) và insert(L,20) để chèn các giá trị 10 và 20 vào danh sách liên kết L.

Gọi hàm show(L) để hiển thị nội dung của danh sách liên kết L sau khi đã chèn các giá trị 10 và 20 vào trong đó.

Tạo danh sách liên kết mới, chèn các giá trị 10 và 20 vào danh sách, và hiển thị danh sách liên kết đó.

Câu 2: Viết đoạn chương trình ngắn sử dụng thư viện LinkedList đề thiết lập một danh sách liên kết L và bổ sung các tên "Bình", "Hoa", "Hà" vào danh sách này.

Trả lời:

from LinkedList import *

# Tạo danh sách liên kết mới

L = LL()

# Thêm các tên vào danh sách liên kết

insert(L, "Bình")

insert(L, "Hoa")

insert(L, "Hà")

# Hiển thị nội dung của danh sách liên kết

show(L)

 

LUYỆN TẬP

Câu 1: Viết một thư viện bao gồm các hàm nhập dữ liệu là một dãy só và các hàm thư viện bao gồm sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt.

Trả lời:

def nhap_day_so():

   """Hàm nhập dãy số """

   n = int(input("Nhập số lượng phần tử của dãy: "))

   a = []

   for i in range(n):

       a.append(int(input(f"Nhập phần tử thứ {i+1}: ")))

   return a

def sap_xep_chen(a):

   """Hàm sắp xếp dãy số bằng phương pháp sắp xếp chèn"""

   for i in range(1, len(a)):

       key = a[i]

       j = i - 1

       while j >= 0 and key < a[j]:

           a[j+1] = a[j]

           j -= 1

       a[j+1] = key

   return a

def sap_xep_chon(a):

   """Hàm sắp xếp dãy số bằng phương pháp sắp xếp chọn"""

   for i in range(len(a)):

       min_idx = i

       for j in range(i+1, len(a)):

           if a[j] < a[min_idx]:

               min_idx = j

       a[i], a[min_idx] = a[min_idx], a[i]

   return a

def sap_xep_noi_bot(a):

   """Hàm sắp xếp dãy số bằng phương pháp sắp xếp nổi bọt"""

   for i in range(len(a)):

       for j in range(0, len(a)-i-1):

           if a[j] > a[j+1]:

               a[j], a[j+1] = a[j+1], a[j]

   return a

 

Câu 2: Cho trước danh sách liên kết L với cấu trúc như đã mô tả trong bài học, muốn lấy ra khóa của node đầu tiên của danh sách thì dùng lệnh nào?

Trả lời:

Sử dụng thuộc tính key của đối tượng node đầu tiên trong danh sách.

 

VẬN DỤNG

Câu 1: Cho trước một danh sách liên kết L. Viết một hàm đếm số lượng phần tử của danh sách liên kết này.

Trả lời:

class Node:

 def __init__(self, key=None):

  self.key = key

  self.next = None

def dem_so_luong_phan_tu(head):

 count = 0 # Khởi tạo biến đếm số lượng phần tử là 0

 current = head # Đặt con trỏ current đến node đầu tiên của danh sách liên kết

 while current is not None: # Duyệt qua từng node trong danh sách liên kết

  count += 1 # Tăng biến đếm lên 1

  current = current.next # Chuyển con trỏ current sang node kế tiếp trong danh sách liên kết

 return count # Trả về số lượng phần tử đếm được

so_luong_phan_tu = dem_so_luong_phan_tu(L)

Câu 2: Viết hàm delete_Jast(L) có chức năng xóa phần tử cuối cùng của danh sách liên kết L.

Trả lời:

class Node:

 def __init__(self, key=None):

  self.key = key

  self.next = None

def delete_Jast(L):

 if L is None or L.next is None: # Nếu danh sách liên kết rỗng hoặc chỉ có một phần tử

  return None # Không cần xoá, trả về None

 current = L # Đặt con trỏ current đến node đầu tiên của danh sách liên kết

 while current.next.next is not None: # Duyệt đến node trước node cuối cùng

  current = current.next # Chuyển con trỏ current sang node kế tiếp trong danh sách liên kết

 current.next = None # Thay đổi liên kết của node trước node cuối cùng để xóa node cuối cùng

 return L # Trả về đối tượng đầu tiên của danh sách liên kết sau khi xoá

L = delete_Jast(L)

Nội dung quan tâm khác

Thêm kiến thức môn học

Từ khóa tìm kiếm: Giải ngắn gọn Tin học 11 Kết nối tri thức bài bài 30: Thiết lập thư viện cho chương trình, Giải ngắn gọn Tin học 11 KNTT bài 30: 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