TRƯỜNG THPT DTNT HUỲNH CƯƠNG TỔ TOÁN TIN CHUYÊN ĐỀ 2 “SỬ DỤNG SƠ ĐỒ KHỐI ĐỂ XÂY DỰNG THUẬT TOÁN TRONG CHƯƠNG TRÌNH TIN HỌC 10” 1 MỞ ĐẦU Lý do chọn chuyên đề Việc lựa chọn và thiết kế thuật toán để giả[.]
Trang 1TRƯỜNG THPT DTNT HUỲNH CƯƠNG
TỔ: TOÁN - TIN
CHUYÊN ĐỀ 2
“SỬ DỤNG SƠ ĐỒ KHỐI ĐỂ XÂY DỰNG THUẬT TOÁN TRONG
CHƯƠNG TRÌNH TIN HỌC 10”
1 MỞ ĐẦU
Lý do chọn chuyên đề:
- Việc lựa chọn và thiết kế thuật toán để giải bài toán trên máy tính là một bước rất quan trọng Bởi vì nếu bỏ qua bước này thì đôi khi việc lập trình cho ra kết quả không tối ưu Cũng giống như khi giải một bài tập toán, vật lý, để tìm ra kết quả chính xác thì buộc học sinh phải xác định công thức cần áp dụng là công thức nào
- Khi nắm vững cách lựa chọn và thiết kế thuật toán, các em có thể dễ dàng viết chương trình để giải bài toán trên máy tính bằng bất kỳ ngôn ngữ bậc cao nào Làm được việc này sẽ kích thích sự hứng thú học môn Tin học hơn
- Điều quan trọng hơn, việc lựa chọn và thiết kế thuật toán để giải bài toán trên máy tính giúp rèn luyện cho học sinh khả năng tư duy, sáng tạo Đây là những kỹ năng rất cần thiết để sau này các em hoà nhập vào thực tế cuộc sống
- Từ những lý do nêu trên, qua thực tế giảng dạy chúng tôi thấy cần đưa ra một số kinh nghiệm nhằm giúp học sinh bước đầu viết được thuật toán để giải bài toán lập trình đạt kết quả tốt hơn Do đó “sử dụng sơ đồ khối để xây dựng thuật toán trong chương trình tin học 10 ” là thực sự cần thiết giúp các em học tập tích cực, góp phần nâng cao chất lượng giảng dạy
2 NỘI DUNG
2.1 Xác định bài toán
2.1.1 Phân tích bài toán
Trong quá trình học tập người học sinh luôn phải liên tục giải quyết các bài toán Trong cuộc sống là 1 chuỗi các bài toán mà ta phải đối đầu giải quyết không một chút đơn giản Nên việc đưa các bài toán vào giải cho các em đang còn một phần nào bị hạn chế Nhưng bất kỳ một bài toán nào thì chúng ta cũng đọc đề rồi xác định nó: A->B
Trong đó:
- A là giải thiết: điều kiện ban đầu hoặc cái đã cho khi bắt đầu giải bài toán
1
Trang 2- B là kết luận: Mục tiêu cần đạt được hay cái phải tìm, phải làm ra khi kết thúc bài toán
Là suy luận: giải pháp cần xác định hay một chuỗi thao tác thực hiện từ A để cho kết quả B
2.1.2Bài toán trên máy vi tính
Bài toán trên máy tính cũng mang đầy đủ các tính chất của bài toán tổng quát trên, nhưng nó lại được diễn đạt theo một cách khác
- A: là đưa thông tin vào (Input )
- B: là đưa thông tin ra (Output)
là chương trình tạo từ các lệnh cơ bản của máy tính cho phép biến đổi từ A đến B
2.1.3 Một số ví dụ
Ví dụ 1: Tính diện tích hình chữ nhật.
Ta cần xác định cho bài toán:
- Thông tin vào (Input): Chiều dài là cạnh a, chiều rộng là cạnh b
- Thông tin ra (Output): Kết quả diện tích của hình chữ nhật khi đưa a,b vàocác thông tin cần thiết như:
- Lần lượt đưa a,b vào (cho a=3,b=4)
- Áp dụng công thức tính diện tích hình chữ nhật: a*b
- Kết quả in ra là 12
Ví dụ 2: Cho 2 số tự nhiên a, b.Tìm ước số chung lớn nhất của chúng.Các bước
xác định bài toán:
- Xác định thông tin vào (Input): hai số tự nhiên a,b
- Xác định thông tin ra (Output): số tự nhiên d thoả mãn:
d là ước của a và d là ước của b
d là số lớn nhất trong tập các ước chung của a, b
- Xác định các thao tác chế biến thông tin
Xây dựng hữu hạn các thao tác cho phép tính được d từ a và b
Nhập a =16 b= 24 -> d =8
2.2.Giúp học sinh xây dựng thuật toán
2.2.1 Định nghĩa thuật toán:
2
Trang 3Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từInput của bài toán, ta nhận được Output cần tìm.
Những đặc trưng cơ bản của thuật toán:
- Tính dừng: Thuật toán phải kết thúc sau mội số hữu hạn lần thực hiện các thao tác.
- Tính xác định: Sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng một thao tác xác điịnh để được thực hiện tiếp theo;
- Tính đúng đắn: Sau khi thuật toán kết thúc, ta phải nhận được Output cần tìm.
* Các kí hiệu để diễn tả thuật toán bằng sơ đồ khối.
Thể hiện thao tác so sánh
Thể hiện các phép tính toán
Thể hiện các thao tác nhập, xuất dữ liệu Quy định trình tự thực hiện các phép toán
* Lưu ý:
- Với hình ô van thì chỉ có một hướng mũi tên đi ra cho trường hợp thao tác nhập
dữ liệu và chỉ có một hướng đi vào cho thao tác xuất dữ liệu
- Với hình chữ nhật thì có một hướng mũi tên vào và một hướng mũi tên ra
- Với hình thoi thì có một hướng mũi tên vào và hai hướng mũi tên ra
3
Trang 42.2.2 Các loại thuật toán:
Thuật toán không phân nhánh là thuật toán đơn giản nhất Trong thực tế thường gặp thuật toán phân nhánh theo các điều kiện so sánh đúng hoặc sai Phổ biến nhất trong các bài toán thực tế là thuật toán gồm nhiều chu trình, theo nhiều nhánh, đó là đặc trưng của thuật toán giải các bài toán khoa học kỹ thuật.
2.2.2.1Thuật toán không phân nhánh
VD1 :
Cho A=x2+y2; B=x+y+3A;
C=xy+A-2B2;
x,y R Hãy mô tảthuật toán giải bài toán
bằng sơ đồ khối để tính C
* Xác định bài toán
Input: x,y
Output: C
Lưu ý: Muốn tính được C thì đầu tiên
ta phải tính A và B
4
Nhập x, y
Ax*x+y*y
Bx+y+3*A Cx*y+A-2*B*B
Thông báo C rồi kết thúc
Trang 5Sơ đồ khối
VD2: Tính chu vi, diện tích hình chữ nhật với chiều dài là a, chiều rộng là b Hãy mô
tảthuật toán giải bài toán bằng sơ đồ khối.
* Xác định bài toán
- Input:hình chữ nhật có chiều dài = a, chiều rộng = b
- Output:chu vi, diện tích của hình chữ nhật
- Sử dụng các công thức:
Chu vi: C=2*(a+b)
Diện tích: S=a*b
Sơ đồ khối
BÀI TẬP ÁP DỤNG Hãy mô tảthuật toán giải các bài toán sau bằng sơ đồ khối:
Bài 1:Nhập từ bàn phím độ dài 3 cạnh của tam giác ABC, rồi tính chu vi, diện
tích và các đường cao của tam giác
Hướng dẫn:
- Input: độ dài 3 cạnh a,b,c
- Output: chu vi, diện tích, các đường cao ha,hb,hc
- Sử dụng các công thức:
5
Nhập a, b
Sa*b
Thông báo kết quả S, C rồi kết thúc C2*(a+b)
Trang 6Chu vi: p=a+b+c
Các đường cao: ha= ; hb= ; hc= ;
Bài 2: Một cửa hàng cung cấp dịch vụ bán hàng thanh toán tại nhà Khách hàng
chỉ cần đăng kí số lượng mặt hàng cần mua, nhân viên cửa hàng sẽ giao hàng và nhận tiền thanh toán tại nhà khách hàng Ngoài giá trị hàng hóa, khách hàng còn trả thêm phí dịch vụ Hãy tính tiền thanh toán trong trường hợp khách hàng chỉ mua một mặt hàng duy nhất
Hướng dẫn:
- Input: Đơn giá, số lượng, phí dịch vụ
- Output: Số tiền phải thanh toán
- Sử dụng các công thức:TT = soluong * dongia + phi
2.2.2.2.Thuật toán có phân nhánh
Sơ đồ:
a) Dạng thiếu
Chú ý:
Ta có thể sử dụng cấu trúc rẽ nhánh lồng nhau
6
Sai
Đúng
ĐK
Câu lệnh
Sai Đúng
ĐK
Câu lệnh 1
Câu lệnh 2
b) Dạng đủ
Trang 7VD3: Tìm số lớn nhất trong hai số thực A và B
Hãy mô tả thuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
Input: A,B
Output: Số lớn nhất trong hai số
Sơ đồ khối
VD4: Cho phương trình bậc nhất ax+b=0
Hãy mô tảthuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
- Input: a, b
- Output: Nghiệm của phương trình bậc nhất
Sơ đồ khối
7
Đ
S
Nhập A,B
A>=B Lớn nhất là B
và kết thúc
Lớn nhất là A và kết thúc
Trang 8nếu nếu nếu
2 2
2 2
x y ; x y 1
z x y; x y 1 và y x
0.5; x y 1 và y x
VD5: Cho bài toán
Hãy mô tảthuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
- Input: x, y;
- Output: z
Sơ đồ khối
8
S Đ
S Đ
Nhập a, b
a=0 Thông báo PT có nghiệm x=
-b/a
b <>0 Thông báo PT có vô số
nghiệm
Thông báo PT
vô nghiệm
Trang 9BÀI TẬP ÁP DỤNG Hãy mô tảthuật toán giải các bài toán sau bằng sơ đồ khối:
Bài 1: Nhập dữ liệu là tháng trong năm
Hướng dẫn
- Tháng trong năm phải từ 1 đến 12
- Nếu thoả thì thông báo là tháng, ngược lại thì thông báo không phải là tháng trong năm
Bài 2: Nhập vào một năm cho ra số ngày của năm đó
Hướng dẫn
Có hai loại ngày là 365 ngày và 366 ngày
- Năm nhuần là 365 ngày, không nhuần là 366 ngày
- Năm nhuần là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100
Bài 3: Tính căn bậc hai của một số
Hướng dẫn
- Sử dụng hàm Sqrt(x)
- Nếu nhập vào số âm thì thông báo số đó không có căn bậc hai
9
S
S
Nhập x, y
x*x+y*y<=
1
Thông báo z
rồi kết thúc
z x*x+y*y
y>=x
z x+y
z 0.5
Trang 102.2.2.3 Thuật toán theo chu trình lặp
a) Thuật toán theo chu trình lặp với số lần xác định (dạng tiến).
Sơ đồ:
VD6: Tính tổng S= 1 + 2 + 3 + ……… + n (với n là số nguyên dương bất
kì nhập từ bàn phím)
Hãy mô tả thuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
Input: Dãy n số tự nhiên đầu tiên: 1, 2, …, n
Output: S là giá trị của tổng 1 + 2 + …+ n
Sơ đồ khối
VD7: Tính giai thừa của một số nguyên dương n (n!=1.2 (n-1).n.
10
S Đ
Nhập n
S0 i1
SS+i ii+1
S rồi kết thúc
S
S
Biến đếm giá trị đầu
Câu lệnh;
Biến đếmbiến đếm+1;
Biến đếm<= giá
Đ
Trang 11Hãy mô tảthuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
Input: Số nguyên dương n;
Output: Giai thừa của n (GT)
Sơ đồ khối
BÀI TẬP ÁP DỤNG
Hãy mô tảthuật toán giải các bài toán sau bằng sơ đồ khối: Bài 1: Tính tổng
* Xác định bài toán
Input: Số nguyên dương n và x1,x2,…,xn;
Output: Tổng S
Bài 2: Tính tổng
với n nhập từ bàn phím
Bài 3: Tính tổngS= 12 + 22 + 32 + ……… + n2 với n nhập từ bàn phím
11
Đ
S
Nhập n
GT1 i1
GTGT*i ii+1
GT rồi kết thúc
Trang 12Bài 4:Tính tổng
với n nhập từ bàn phím
Hướng dẫn
Các bài trên làm tương tự như ví dụ 6, 7
b Thuật toán theo chu trình lặp với số lần không biết trước.
Sơ đồ:
VD8: Tính tổng n số tự nhiên đầu tiên sao cho n là số tự nhiên nhỏ nhất và tổng S
nhỏ nhất lớn hơn 1000
Hãy mô tả thuật toán giải bài toán bằng sơ đồ khối
* Xác định bài toán
1000
12
Sai
Đúng
Điều kiện
Câu lệnh
nn + 1
S S +n
Đ
S
S 0 n0
S<=100
0 Thông báo S, n và kết
thúc
Trang 13BÀI TẬP ÁP DỤNG Hãy mô tảthuật toán giải các bài toán sau bằng sơ đồ khối:
Bài 1: Tính cho đến khi với e là đại lượng nhập khá nhỏ
* Xác định bài toán
- Input: Số thực dương e;
- Output: Tổng S;
Bài 2:
Tính tổng các số dương và trung bình cộng các số âm của các số nhập vào từ bàn phím cho đến khi số nhập vào bằng 0
Hướng dẫn
Công việc lặp phải có sử dụng cấu trúc If để tính tổng các số dương và trung bình các số âm
Bài 3: Kiểm tra xem khi nhập một số tự nhiên vào có phải là số nguyên tố hay
không
Hướng dẫn
- Nhập vào số tự nhiên N
- Chú ý: N<=1 thì thông báo “Không xét”
- Lấy N chia cho các số tự nhiên lớn hơn 1 và nhỏ hơn nó Nếu N là số nguyên tố thì các phép chia có số dư khác 0 Nếu N không là số nguyên tố thì sẽ có một phép chia có dư bằng 0
Bài 4: Tìm ước số chung lớn nhất của hai số nguyên dương a và b
Hãy mô tả thuật toán giải bài toán bằng sơ đồ khối
13
Trang 14* Xác định bài toán
Input: Số nguyên dương a,b;
Output: UCLN(a,b)
3 KẾT LUẬN
Nói chung, thông qua mỗi môn học, giáo viên không chỉ truyền đạt cho học sinh những kiến thức tối thiểu mà còn kích thích cho các em sự hứng thú học tập,
sự tìm tòi sáng tạo Từ đó các em sẽ mang những điều đã học vận dụng vào thực tế cuộc sống Riêng bộ môn Tin học, người giáo viên càng có nhiều thuận lợi để thực hiện điều đó Sau khi thực hiện chuyên đề chúng tôi rút ra những kinh nghiệm sau:
- Học sinh được rèn luyện kỹ năng tư duy, sáng tạo
- Các em có thể tự viết được những chương trình để giải các bài tập Toán,
Lý, Hoá của bậc cơ sở
- Vì nhận thấy được những ứng dụng rất hữu ích của môn Tin học thông qua việc lựa chọn và thiết kế thuật toán để viết một chương trình nên các em học sinh càng yêu thích và say mê học hơn, kết quả học tập của các em tốt hơn
- Trong quá trình dạy luôn phát huy tính tích cực, chủ động của học sinh
- Tổ chức hoạt động nhóm để các em thảo luận và xây dựng ý tưởng trước khi thiết kế thuật toán
- Hướng dẫn để giúp các em học sinh biết lựa chọn thuật toán tối ưu nhất
- Tạo không khí học tập thân thiện.Tóm lại để đạt được kết quả tốt trong môn tin học 11 đặc biệt là trong phần lập trình Pascal, một trong những yếu tố quan trọng là người học phải nắm được cách viết thuật toán để từ đó lập trình dễ dàng, muốn đạt được điều đó đòi hỏi người giáo viên phải luôn tìm tòi, nghiên cứu, lựa chọn các phương pháp dạy học phù hợp với đặc trưng của bộ môn, phù hợp với kiểu bài lên lớp, không ngừng học tập nâng cao kiến thức bản thân, có phương pháp giảng dạy theo tinh thần đổi mới
Trên đây là vài kinh nghiệm được đúc kết trong quá trình giảng dạy, chắc chắn sẽ còn nhiều thiếu sót và hạn chế Để nội dung đề tài thêm phong phú và đầy
đủ hơn, rất mong được sự góp ý của quý đồng nghiệp
Sóc Trăng, ngày 11 tháng 01 năm 2021
Nhóm Tin học
14