Giáo án Tin học Lớp 11 - Bài tập và thực hành 8: Dữ liệu kiểu danh sách (Tiếp theo) - Trường THPT Thăng Long

I. MỤC TIÊU
1. Kiến thức
- Củng cố kiến thức về dữ liệu kiểu danh sách.
- Xây dựng cấu trúc dữ liệu, thuật toán giải bài toán đơn giản.
2. Năng lực
- Năng lực giải quyết vấn đề, sáng tạo.
- Năng lực tự học, đọc hiểu.
- Năng lực hợp tác nhóm: trao đổi thảo luận, trình bày kết quả.
- Năng lực tính toán, Năng lực thực hành .
3. Phẩm chất
- Phẩm chất: Giúp học sinh rèn luyện bản thân phát triển các phẩm chất tốt đẹp: yêu nước, nhân ái, chăm chỉ, trung thực, trách nhiệm
II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU
Giáo viên: Sách giáo khoa, máy tính điện tử.
Học sinh: đồ dùng học tập, SGK, vở ghi, máy tính
III. TIẾN TRÌNH DẠY HỌC
A. HOẠT ĐỘNG KHỞI ĐỘNG (MỞ ĐẦU)
a) Mục tiêu: Tạo tình huống khơi gợi tinh thần cho học sinh
b) Nội dung: Hs dựa vào hiểu biết để trả lời câu hỏi.
c) Sản phẩm: Từ yêu cầu HS vận dụng kiến thức để trả lời câu hỏi GV đưa ra.
d) Tổ chức thực hiện: GV giới thiệu và dẫn dắt vào bài:
B. HÌNH THÀNH KIẾN THỨC MỚI
Hoạt động 1: Tìm hiểu dãy số Fibonacci.
a) Mục tiêu: Nhắc lại kiến thức đã học liên quan bài thực hành.
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV.
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức
Trường: THPT THĂNG LONG
Tổ: LÝ - CN
Họ và tên giáo viên
Hoàng Thị Thanh Tâm
Bài tập và thực hành 8
DỮ LIỆU KIỂU DANH SÁCH (tiếp) 
Môn học: Tin Học; Lớp: 11
Thời gian thực hiện: 2 tiết
I. MỤC TIÊU 
1. Kiến thức  
- Củng cố kiến thức về dữ liệu kiểu danh sách. 
- Xây dựng cấu trúc dữ liệu, thuật toán giải bài toán đơn giản. 
2. Năng lực  
- Năng lực giải quyết vấn đề, sáng tạo. 
- Năng lực tự học, đọc hiểu. 
- Năng lực hợp tác nhóm: trao đổi thảo luận, trình bày kết quả. 
- Năng lực tính toán, Năng lực thực hành . 
3. Phẩm chất 
- Phẩm chất: Giúp học sinh rèn luyện bản thân phát triển các phẩm chất tốt đẹp: yêu nước, nhân ái, chăm chỉ, trung thực, trách nhiệm  
II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU  
Giáo viên:  Sách giáo khoa, máy tính điện tử. 
Học sinh:  đồ dùng học tập, SGK, vở ghi, máy tính 
III. TIẾN TRÌNH DẠY HỌC 
A. HOẠT ĐỘNG KHỞI ĐỘNG (MỞ ĐẦU) 
a) Mục tiêu: Tạo tình huống khơi gợi tinh thần cho học sinh 
b) Nội dung: Hs dựa vào hiểu biết để trả lời câu hỏi. 
c) Sản phẩm: Từ yêu cầu HS vận dụng kiến thức để trả lời câu hỏi GV đưa ra. 
d) Tổ chức thực hiện: GV giới thiệu và dẫn dắt vào bài: 
B. HÌNH THÀNH KIẾN THỨC MỚI 
Hoạt động 1: Tìm hiểu dãy số Fibonacci. 
a) Mục tiêu: Nhắc lại kiến thức đã học liên quan bài thực hành. 
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức 
d) Tổ chức thực hiện: 
Hoạt động của GV và HS 
Sản phẩm dự kiến 
* Bước 1: Chuyển giao nhiệm vụ: 
Nêu cách khai báo kiểu mảng 1 chiều. 
 
Nhập từ bàn phím xây dựng mảng một chiều A có 6 phần tử. 
* Bước 2: Thực hiện nhiệm vụ:  
 + HS: Suy nghĩ, tham khảo sgk trả lời câu hỏi 
+ GV: quan sát và trợ giúp các cặp.  
* Bước 3: Báo cáo, thảo luận:  
+ HS: Lắng nghe, ghi chú, một HS phát biểu lại các tính chất.  
+ Các nhóm nhận xét, bổ sung cho nhau.  
* Bước 4: Kết luận, nhận định: GV chính xác hóa và gọi 1 học sinh nhắc lại kiến thức 
Bài 1:
Dãy Fibonacci là dãy số nguyên dương được định nghĩa như sau: f1 = f2 = 1, " i : 3 ≤ i : fi = fi-1 + fi-2 
Viết chương trình tìm phần tử thứ n (n <= 100) của dãy Fibonacci có sử dụng mảng 
Input
Output
4
3
10
55
30
832040
100
354224848179261915075
n=int(input("Nhập n = "))
f=[1,1]
for x in range(1,n-1):
	f.append(f[x]+f[x-1])
print("Phần tử thứ ",n,"=",f[n-1])
Bài 2: Nhập vào số nguyên dương n <= 105 và dãy các số nguyên dương a1, a2, , an.
Đếm số lượng các số nguyên tố trong dãy trên có sử dụng hàm kiểm tra một số là số nguyên tố
Tìm ước chung lớn nhất của a1, a2, , an.
import math
def nt(k):
	if k==1:
	return False
	else:
	i=2
	while (i<=math.trunc(k**0.5))&(k%i!=0):
	i=i+1
	if i>math.trunc(k**0.5):
	return True
	else:
	return False
n=int(input("Nhập n = "))
a=[]
for x in range(n):
	a.append(int(input()))
dem=0
for x in range(0,n):
	if nt(a[x]):
	dem=dem+1
print("Số lượng số nguyên tố =",dem)
# câu b
def ucln(x,y):
	r=x%y
	while r!=0:
	x=y; y=r; r=x%y
	return y
for i in range(0,n-1):
	u=ucln(a[i+1],a[i])
print("UCLN=",u)
Hoạt động 2: Tìm hiểu và giải bài toán 3. 
a) Mục tiêu: Xác định bài toán và tìm hiểu chương trình. 
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức 
d) Tổ chức thực hiện: 
Hoạt động của GV và HS 
Sản phẩm dự kiến 
* Bước 1: Chuyển giao nhiệm vụ: 
1. Chiếu đề bài lên bảng. 
2. Xác định bài toán 
Y/cầu hs xác định dữ liệu vào/ra của bài toán? 
Tìm hiểu chương trình 
* Bước 2: Thực hiện nhiệm vụ:  
 + HS: Suy nghĩ, tham khảo sgk trả lời câu hỏi 
+ GV: quan sát và trợ giúp các cặp.  
* Bước 3: Báo cáo, thảo luận:  
+ HS: Lắng nghe, ghi chú, một HS phát biểu lại các tính chất.  
+ Các nhóm nhận xét, bổ sung cho nhau.  
* Bước 4: Kết luận, nhận định: GV chính xác hóa và gọi 1 học sinh nhắc lại kiến thức 
Bài 3: Nhập vào số nguyên dương n <= 1018, chuyển đổi số nguyên dương n sang hệ nhị phân có sử dụng mảng
n=int(input("Nhập n = "))
a=[]
while n//2!=0:
	a.append(n%2)
	n=n//2
a.append(n%2)
print("Dãy nhị phân là:")
for x in range(len(a)-1,-1,-1):
	print(a[x],end='')
Bài 4: Viết chương trình nhập số nguyên dương n, số nguyên dương v (n <= 105, v ≠ 0) và dãy các số nguyên A = {a1, a2, , an}. Cho biết v có xuất hiện trong dãy A không? Nếu có cho biết vị trí xuất hiện đầu tiên của v trong A
n=int(input("Nhập n = "))
v=int(input("Nhập v = "))
print("Nhập dãy a gồm",n,"số:")
a=[]
for x in range(0,n):
	a.append(int(input()))
i=0
while i <len(a):
	if a[i]==v:
	print("YES","vị trí",i+1)
	break
	else:
	i=i+1
if i>len(a)-1:
	print("NO")
Hoạt động 3: Tìm hiểu Chạy CT bài 5  
a) Mục tiêu: Chạy CT 
b) Nội dung: HS quan sát SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức 
d) Tổ chức thực hiện: 
Hoạt động của GV và HS 
Sản phẩm dự kiến 
* Bước 1: Chuyển giao nhiệm vụ: 
Yêu cầu hs tự nhập dữ liệu với CT có sẵn. 
Xác định bài toán. 
- Y/cầu hs xác I/O bài toán? 
- Yêu cầu hs sửa lại CT theo gợi ý đã nêu 
* Bước 2: Thực hiện nhiệm vụ:  
 + HS: Suy nghĩ, tham khảo sgk trả lời câu hỏi 
+ GV: quan sát và trợ giúp các cặp.  
* Bước 3: Báo cáo, thảo luận:  
+ HS: Lắng nghe, ghi chú, một HS phát biểu lại các tính chất.  
+ Các nhóm nhận xét, bổ sung cho nhau.  
* Bước 4: Kết luận, nhận định: GV chính xác hóa và gọi 1 học sinh nhắc lại kiến thức 
Bài 5: Cho dãy A = {a0, a1, , an}và số nguyên i (n <= 105, 0 ≤ i ≤ n). Tìm cách xóa các phần tử ai sao cho dãy số sau khi xóa các phần tử còn lại vẫn giữ nguyên thứ tự
n=int(input("Nhập n = "))
i=int(input("Nhập i = "))
print("Nhập dãy a[0..n] gồm",n+1,"số:")
a=[]
for x in range(0,n+1):
	a.append(float(input()))
# cách 1
b=[]
for x in range(len(a)):
	if a[x]!=a[i]:
	b.append(a[x])
print(b)
Cách 2:
n=int(input("Nhập n = "))
i=int(input("Nhập i = "))
print("Nhập dãy a[0..n] gồm",n+1,"số:")
a=[]
for x in range(0,n+1):
	a.append(float(input()))
# cách 2
a.pop(i) # lấy p.tử a[i] ra khỏi list rồi xóa nó tại vị trí i
print(a)
Bài 6: Cho dãy số nguyên A = {a0, a1, , an}và chỉ số i, giá trị v (n <= 105, 0 ≤ i ≤ n). Tìm cách chèn phần tử v vào trước ai sao cho vẫn giữ nguyên thứ tự các phần tử còn lại
n=int(input("Nhập n = "))
i=int(input("Nhập chỉ số i = "))
v=int(input("Nhập v = "))
print("Nhập dãy a[0..n] gồm",n+1,"số:")
a=[]
for x in range(0,n+1):
	a.append(int(input()))
a.insert(i,v) # chèn v vào vị trí i trong danh sách a
print(a)
C. HOẠT ĐỘNG LUYỆN TẬP 
a. Mục tiêu: Củng cố, luyện tập kiến thức vừa học. 
b. Nội dung: HS đọc SGK làm các bài tập. 
c. Sản phẩm: Bài làm của học sinh, kĩ năng giải quyết nhiệm vụ học tập. 
d. Tổ chức thực hiện:  
Bài 7:
Cho mảng A gồm các số nguyên a0, a1, , an (n <= 1000). Hãy sắp xếp lại mảng A sao cho a0 ≤ a1 ≤ ≤ an 
D. HOẠT ĐỘNG VẬN DỤNG 
a. Mục tiêu: Vận dụng các kiến thức vừa học quyết các vấn đề học tập và thực tiễn. 
b. Nội dung: HS sử dụng SGK và vận dụng kiến thức để trả lời câu hỏi. 
c. Sản phẩm: HS vận dụng các kiến thức vào giải quyết các nhiệm vụ đặt ra. 
d. Tổ chức thực hiện: 
GV chia lớp thành nhiều nhóm và giao các nhiệm vụ: thảo luận trả lời các câu hỏi và bài tập vận dụng. 
* HƯỚNG DẪN VỀ NHÀ: 
- Ôn lại bài học hôm nay;  
- Chuẩn bị trước cho tiết sau. 
* RÚT KINH NGHIỆM 
.....................................................................................................................................
..................... 
Tài liệu đính kèm:
 giao_an_tin_hoc_lop_11_bai_tap_va_thuc_hanh_8_du_lieu_kieu_d.docx giao_an_tin_hoc_lop_11_bai_tap_va_thuc_hanh_8_du_lieu_kieu_d.docx








