SKKN Xây dựng một số thuật toán cơ bản nhằm giúp học sinh từng bước cải thiện kỹ năng lập trình trong chương trình Tin học 11
Trong chương trình Tin học bậc THPT, các em lớp 11 được tìm hiểu với ngôn ngữ lập trình (NNLT) để trang bị cho các em những kiến thức, kỹ năng cơ bản về lập trình, biết vận dụng chúng để giải một số bài tập cơ bản hình thành những loại hình tư duy như tư duy thuật giải, tư duy điều khiển.
Trong lập trình ngoài việc vận dụng ngôn ngữ lập trình để viết thành chương trình cụ thể các em còn phải giải được bài toán. Vì vậy kiến thức toán học là một phần quyết định trong môn học, nhưng đa phần các em còn hạn chế về tư duy toán học nên còn gặp nhiều khó khăn khi lập trình một bài toán
Môn học có những khái niệm trừu tượng nên các em gặp nhiều khó khăn trong quá trình tiếp thu bài. Bởi khi học phần lập trình đòi hỏi học sinh phải tư duy, mà khó khăn nhất đối với các em là bước “Lựa chọn và thiết kế thuật toán”.
Khi nắm vững cách lựa chọn và thiết kế thuật toán, học sinh sẽ 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. Từ đó, các em có hứng thú với bộ môn Tin học hơn.
Hơn nữa, 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, biết phân tích và giải quyết tình huống. Đây là những kỹ năng cần thiết để sau này các em hoà nhập vào thực tế cuộc sống.
Xuất phát từ thực tiễn giảng dạy tại Trường THCS&THPT Như Thanh, nhằm giúp học sinh bước đầu hiểu rõ và tiếp cận với thuật toán giải bài toán để việc lập trình đạt kết quả tốt hơn, tôi lựa chọn đề tài “ Xây dựng một số thuật toán cơ bản nhằm giúp học sinh từng bước cải thiện kỹ năng lập trình trong chương trình Tin học 11”.
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THCS&THPT NHƯ THANH SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI: “ XÂY DỰNG MỘT SỐ THUẬT TOÁN CƠ BẢN NHẰM GIÚP HỌC SINH TỪNG BƯỚC CẢI THIỆN KỸ NĂNG LẬP TRÌNH TRONG CHƯƠNG TRÌNH TIN HỌC 11” Người thực hiện: Trần Văn Quyền Chức vụ: Giáo viên Sáng kiến kinh nghiệm môn: Tin học THANH HOÁ NĂM 2018 MỤC LỤC PHẦN I – MỞ ĐẦU 1.1. Lý do chọn đề tài: Trong chương trình Tin học bậc THPT, các em lớp 11 được tìm hiểu với ngôn ngữ lập trình (NNLT) để trang bị cho các em những kiến thức, kỹ năng cơ bản về lập trình, biết vận dụng chúng để giải một số bài tập cơ bản hình thành những loại hình tư duy như tư duy thuật giải, tư duy điều khiển... Trong lập trình ngoài việc vận dụng ngôn ngữ lập trình để viết thành chương trình cụ thể các em còn phải giải được bài toán. Vì vậy kiến thức toán học là một phần quyết định trong môn học, nhưng đa phần các em còn hạn chế về tư duy toán học nên còn gặp nhiều khó khăn khi lập trình một bài toán Môn học có những khái niệm trừu tượng nên các em gặp nhiều khó khăn trong quá trình tiếp thu bài. Bởi khi học phần lập trình đòi hỏi học sinh phải tư duy, mà khó khăn nhất đối với các em là bước “Lựa chọn và thiết kế thuật toán”. Khi nắm vững cách lựa chọn và thiết kế thuật toán, học sinh sẽ 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. Từ đó, các em có hứng thú với bộ môn Tin học hơn. Hơn nữa, 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, biết phân tích và giải quyết tình huống. Đây là những kỹ năng cần thiết để sau này các em hoà nhập vào thực tế cuộc sống. Xuất phát từ thực tiễn giảng dạy tại Trường THCS&THPT Như Thanh, nhằm giúp học sinh bước đầu hiểu rõ và tiếp cận với thuật toán giải bài toán để việc lập trình đạt kết quả tốt hơn, tôi lựa chọn đề tài “ Xây dựng một số thuật toán cơ bản nhằm giúp học sinh từng bước cải thiện kỹ năng lập trình trong chương trình Tin học 11”. 1.2. Mục đích nghiên cứu: Giúp học sinh hiểu được thuật toán của các bài toán cơ bản. Vận dụng linh hoạt các dạng thuật toán với các dạng lệnh khi viết chương trình. Từ đó, các em có thể hình thành tư duy lập trình cho các bài toán khác một cách chủ động và sáng tạo hơn. 1.3. Đối tượng và phạm vi nghiên cứu: + Đối tượng nghiên cứu: Học sinh khối 11 Trường THCS&THPT Như Thanh, bộ môn Tin học để rèn luyện kỹ năng tư duy thuật toán từ đó nâng cao hiệu quả lập trình. + Phạm vi nghiên cứu: - Bài 4: Bài toán và thuật toán tin học 10. - Chương II, III tin học 11 - Bài tập chương II, III trong sách giáo khoa (SGK) Tin học 11. 1.4. Phương pháp nghiên cứu: Để thực hiện đề tài này tôi sử dụng một số phương pháp sau: - Phương pháp nghiên cứu tài liệu: sưu tầm và nghiên cứu các tài liệu có liên quan (sách giáo khoa, sách giáo viên, sách tham khảo,...) - Phương pháp thực hành, kiểm tra: Thực nghiệm soạn giáo án, lồng ghép các bài toán có liên quan trong các tiết bài tập để học sinh thực hành PHẦN II - NỘI DUNG 2.1. Cơ sở lý luận: Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đã đưa môn học này vào nhà trường phổ thông như những môn khoa học khác bắt đầu từ năm học 2006-2007. Chỉ thị số 55/2008/CT- BGTĐT ngày 30/9/2008 của Bộ trưởng Bộ GDĐT về tăng cường giảng dạy, đào tạo và ứng dụng công nghệ thông tin trong ngành giáo dục giai đoạn 2008-2012. Quyết định 1215/QĐ-BGDĐT năm 2013 về chương trình hành động của ngành giáo dục thực hiện chiến lược phát triển giáo dục Việt Nam 2011-2020, kết luận 51-KL/TW và chỉ thị 02/CT-TTg về đổi mới căn bản, toàn diện giáo dục và đào tạo do Bộ trưởng Bộ Giáo dục và Đào tạo ban hành. Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập. Điều 24.2 của Luật giáo dục đã nêu rõ: “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh”. Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động. Là một người giáo viên giảng dạy bộ môn Tin học, tôi nhận thức được nhiệm vụ cơ bản của mình: - Cung cấp cho học sinh kiến thức phổ thông cơ bản có hệ thống và toàn diện về môn Tin học. - Rèn luyện cho học sinh những kỹ năng chủ yếu sau: + Giải được một số bài toán đơn giản trên máy tính bằng cách vận dụng các kiến thức của thuật toán. + Tư duy thuật toán, từ đó rèn luyện tư duy logic. + Củng cố kiến thức các môn học như Toán, Lý... Đề tài này phần nào sẽ hình tượng hóa các thuật toán cơ bản trong chương trình lớp 11, góp phần giúp học sinh có thể nắm bắt một cách tổng quan hơn về thuật toán trong lập trình, từ đó nâng cao chất lượng dạy học môn Tin học ở Trường THCS&THPT Như Thanh. 2.2 Thực trạng vấn đề. * Thuận lợi: - Toàn ngành, toàn xã hội đang đề cao việc ứng dụng công nghệ thông tin vào tất cả các lĩnh vực. - Môn Tin học là môn chính khoá trong trường phổ thông. - Các em học sinh thích được thực hành trên máy tính để nghiên cứu tìm tòi. * Khó khăn: Trong quá trình giảng dạy ở Trường THCS&THPT Như Thanh bản thân tôi nhận thấy đa số học sinh Trường THCS&THPT Như Thanh là học sinh vùng núi cao có điều kiện kinh tế đặc biệt khó khăn, điều kiện kinh tế gia đình thấp nên các em không có thiết bị máy tính thực hành tại nhà. Vì vậy mà vấn đề áp dụng công nghệ thông tin (đặc biệt là Internet) cho học tập là không có. Hơn nữa những khó khăn mà học sinh gặp phải trong quá trình giảng dạy môn Tin học là: - Phần lập trình còn xa lạ với học sinh. - Học sinh chưa thực sự hiểu rõ như thế nào là một bài toán trong Tin học - Học sinh lớp 11 vẫn còn gặp khó khăn trong việc xác định thuật toán để lập trình cho bài toán. - Máy vi tính và các thiết bị hỗ trợ còn hạn chế. - Qua tình hình lớp đang dạy, khi học đến phần lập trình Pascal đa số các em còn lúng túng khi viết một chương trình. Đặc biệt là lựa chọn và thiết kế thuật toán, hoặc là khi thiết kê được thuật toán lại không biết sử dụng cấu trúc lệnh nào để viết chương trình. Do đó khi viết chương trình, sản phẩm thu được chưa đảm bảo tính tối ưu. BẢNG KHẢO SÁT KHI CHƯA ÁP DỤNG ĐỀ TÀI Tổng số Học sinh 11 Kết quả Giỏi Khá Trung bình Yếu, kém SL TL SL TL SL TL SL TL 143 3 2.1% 45 31.5% 82 57.3% 13 9.1% Nắm bắt được những khó khăn mà học sinh găp phải bản thân tôi đã mạnh dạn đề xuất một sáng kiến nhỏ với đề tài: “ Xây dựng một số thuật toán cơ bản nhằm giúp học sinh từng bước cải thiện kỹ năng lập trình trong chương trình Tin học 11”. 2.3 Giải pháp và tổ chức thực hiện Trong chương trình tin học 11 để lập trình được một bài toán, ngoài việc sử dụng ngôn ngữ lập trình và tổ chức dữ liệu để viết thành một chương trình hoàn chỉnh học sinh bắt buộc phải giải được bài toán đó (viết được thuật toán). Vì vậy bắt buộc học sinh phải hiểu rõ về bài toán và thuật toán trong tin học, do đó giáo viên phải yêu cầu học sinh nhớ lại hoặc nhắc lại cho học sinh một số kiến thức cơ bản về bài toán và thuật toán. Vấn đề ở đây là khi các em viết được thuật toán cho bài toán cần giải quyết thì rất nhiều học sinh còn lúng túng không biết thuật toán đó sẽ sử dụng cấu trúc lệnh nào để viết được chương trình. Trong khi đó trong chương trình tin học 11 có 2 dạng cấu trúc lệnh cơ bản mà cũng là câu lệnh sẽ được áp dụng hầu như ở tất cả các bài toán trong chương trình 11 đó là cấu trúc rẽ nhánh và lặp. Chính vì vậy để học sinh có thể giải quyết tốt các bài tập ở chương 2, chương 3 và là tiền đề để các em học tốt hơn các chương còn lại tôi đã xây dựng 4 dạng thuật toán cơ bản đồng thời đưa ra cấu trúc lệnh tương ứng cùng các ví dụ cơ bản liên quan và bài tập áp dụng, giúp các em dễ dàng xác định bài toán nào sẽ phải sử dụng cấu trúc lệnh nào khi viết chương trình. 2.3.1 Tìm hiểu về thuật toán của bài toán a. Bài toán Trong tin học, người ta quan niệm bài toán là một việc nào đó ta muốn máy tính thực hiện. Những việc như đưa một dòng chữ ra màn hình, giải phương trình bậc hai, quản lý cán bộ của một cơ quan... là những ví dụ về bài toán. Khi dùng máy tính giải toán, ta cần quan tâm đến hai yếu tố: Đưa vào máy thông tin gì (Input) và lấy ra thông tin gì (Output). Do đó để phát biểu một bài toán, ta cần phải trình bày rõ Input và Output của bài toán và mối quan hệ giữa Input và Output. b. Các bước để giải bài toán trên máy tính Bước 1: Xác định bài toán: Xác định Input/Output và mối liên hệ giữa chúng. Bước 2: Lựa chọn hoặc xây dựng thuật toán: Thiết kế hoặc lựa chọn thuật toán đã có đề giải bài toán. Bước 3: Viết chương trình: Lựa chọn cách tổ chức dữ liệu và sử dụng NNLT để diễn tả đúng thuật toán . Bước 4: Hiệu chỉnh. Bước 5: Viết tài liệu. 2.3.2. Thuật toán a. Khái niệm: Thuậ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. b. Tính chất của thuật toán + Tính tổng quát: thuật toán không chỉ đề cập một bài toán riêng lẻ mà bao hàm một lớp bài toán cùng kiểu + Tính dừng: Thuật toán phải kết thúc sau một 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 đị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. Thuật toán có thể phân loại như sau: - Thuật toán không phân nhánh. - Thuật toán có phân nhánh. - Thuật toán theo chu trình có bước lặp xác định và có bước lặp không xác định. d. Cách thể hiện thuật toán: + Liệt kê: Thể hiện thuật toán thông qua các bước. + Sơ đồ khối: Sử dụng các kí hiệu để thể hiện. Các kí hiệu để diễn tả thuật toán bằng sơ đồ khối. Thể hiện các thao tác nhập, xuất dữ liệu Thể hiện các phép tính toán Thể hiện thao tác so sánh Quy định trình tự thực hiện các phép toán 2.3.3 Cách thức viết chương trình đối với các dạng thuật toán a. Cấu trúc của chương trình sử dụng ngôn ngữ lập trình Pascal Bao gồm 2 phần: [ ] * Phần khai báo: - Khai báo tên chương trình program ; - Khai báo thư viện Uses crt; - Khai báo hằng const = ; - Khai báo biến var: ; * Phần thân: Begin []; End. b. Các dạng thuật toán cơ bản. * Thuật toán không phân nhánh: đây là dạng thuật toán đơn giản, sau khi học sinh xác định bài toán, vận dụng các kiến thức liên quan, sử dụng một số hàm học chuẩn đã học để giải quyết bài toán. * Thuật toán có phân nhánh: sử dụng câu lệnh if...then để viết chương trình Cấu trúc của câu lệnh if...then: + Dạng thiếu: if then ; + Dạng đủ: if then else; * Thuật toán theo chu trình có bước lặp xác định và có bước lặp không xác định. - Thuật toán theo chu trình có bước lặp xác định: Cấu trúc câu lệnh For-do: + Dạng lặp tiến: for := to do ; + Dạng lặp lùi: for := downto do ; + Kết hợp với câu lệnh if... then để giải quyết bài toán. - Thuật toán theo chu trình có bước lặp không xác định. + Cấu trúc câu lệnh While-do: While do ; + Cấu trúc lệnh Repeat-until : Repeat until; 2.3.4 Ví dụ và bài tập áp dụng a.Thuật toán không phân nhánh Ví dụ: Nhập vào bán kính của hình tròn. In ra màn hình diện tích và chu vi của nó. * Xác định bài toán: - Input: bán kinh r - Output: chuvi, dientich *Thuật toán (liệt kê). Bước 1: Nhập bán kính hình tròn Bước 2:Tính Dtßpi*r*r; Cvß2*pi*r; Bước 3:Đưa ra màn hình cv và dt. * Chương trình: Program HINHTRON; Uses Crt; Var r,dt,cv:real; Begin Clrscr; Writeln('TINH DIEN TICH & CHU VI HINH TRON:'); Writeln('------------------------------------------------------'); Write ('Nhap ban kinh R=');readln(r); dt:=pi*r*r; cv:=2*pi*r; Writeln('Dien tich hinh tron la:',dt:6:2); Writeln('Chu vi hinh tron la:',cv:6:2); Readln; End. Bài tập áp dụng: 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 của tam giác. Giáo viên yêu cầu học sinh xác định bài toán và trình bày thuật toán * Xác định bài toán: - Input: độ dài 3 cạnh a,b,c - Output: chuvi, dientich * Thuật toán: Bước 1: nhập độ dài 3 cạnh a,b,c; Bước 2: Pß(a+b+c)/2; s ß ; Bước 3: Đưa ra màn hình chuvi, dientich * Chương trình: Program tinhdt_cv; Var a,b,c,p,s : real; Begin Writeln (‘ nhap do dai 3 canh:’); Readln (a,b,c); P:=(a+b+c)/2; S:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(‘chu vi dien tich tam giac’, p*2:5:2,s:5:2); Readln; End. Bài tâp 9 SGK_tr36: * Xác định bài toán: - Input: Số a (a>0) - Output: Diện tích gạch chéo * Thuật toán: Nhập a s ¬ pi*sqr(a)/2 Thông báo s rồi kết thúc Sơ đồ khối * Chương trình Program Dtgachcheo; Const pi=3.14; Var a,s:real Begin Writeln(‘nhap so a:’); Readln(a); S:=pi*sqr(a)/2; Writeln (‘ dien tich phan gach cheo la:’,s:8:4); Readln; End. Bài tập 10 SGK_tr36: *Xác định bài toán: - Input: h - Output: v * Thuật toán Bước 1: Nhập h Bước 2: v ¬ Bước 3: thông báo v và kết thúc *Chương trình Program tinhvantoc; const g=9.8; var v,h:real; Begin writeln( ‘nhap do cao h:’); readln(h); v:=sqrt(2*g*h); writeln(‘van toc la:’,v:6:3); readln; End. b. Thuật toán có phân nhánh Sơ đồ hoạt động: Sai Đúng ĐK Câu lệnh Dạng thiếu: Đúng Sai ĐK Câu lệnh 1 Câu lệnh 2 Dạng đủ: Chú ý: - Ta có thể sử dụng cấu trúc rẽ nhánh lồng nhau Ví dụ1: Viết chương trình thực hiện phép chia số a cho số b, với điều kiện b 0 và a, b được nhập từ bàn phím. * Xác định bài toán: - Input: a,b - Output: Thương của a chia b * Thuật toán: - Bước 1: Nhập a,b; - Bước 2: Nếu b0 thì tßa/b; - Bước 3: In kết quả; * Chương trình Var a, b: integer; T:real; Begin Write ('Nhap 2 so a, b: '); Readln (a, b); If b 0 then t:=a/b; write ('Thuong cua 2 so la: ', t : 5 : 2); Readln; End. Ví dụ 2: Viết chương trình nhập vào một số nguyên bất kỳ, thông báo ra màn hình số đó là số chẵn hay lẻ * Xác định bài toán: - Input: Số n - Output: Số chẵn hoặc số lẻ * Thuật toán: - Bước 1: Nhập vào n; - Bước 2: Nếu n chia hết cho 2 thì thông báo “ số đó là số chẵn” rồi chuyển đến bước 4; - Bước 3: Thông báo “ số đó là số lẻ” - Bước 4: Kết thúc. * Chương trình: Program sochanle; Uses crt; Var n:integer; Begin clrscr; Write(‘ Nhap vao so n:’); readln(n); If n mod 2 =0 then writeln(n,’ la so chan’) Else write( n,’la so le’); Readln; End. Bài tập áp dụng: Bài 1: Viết chương trình giải phương trình bậc hai ax2+bx+c=0 * Xác định bài toán - Input: a,b,c (a0) - Output: Nghiệm x thoả phương trình ax2+bx+c=0 * Thuật toán Liệt kê - Bước 1: Nhập a,b,c (a0); - Bước 2: Tính D¬b*b-4*a*c; - Bước 3: Nếu D<0 thì PTVN rồi kết thúc; - Bước 4: Nếu D>0 thì PT có nghiệm x1¬(-b+sqrt(D))/(2*a) x2¬(-b-sqrt(D))/(2*a) rồi kết thúc; - Bước 5: Nếu D= 0 thì PT có nghiệm kép x¬-b/(2*a) rồi kết thúc; - Bước 6: Kết thúc. *Chương trình: Program giaiphuongtrinhbac2; Uses Crt; Var a , b, c : real; d, x1, x2 : real; Begin Clrscr; Write (‘a, b, c: ’); Readln (a, b, c) ; D: = b * b – 4 * a * c ; if delta< 0 then Writeln (‘Phuong trinh vo nghiem’) Else Begin x1 = ( - b – sqrt (D))/(2 * a); x1 = ( - b + sqrt (D))/(2 * a); Witeln ( ‘x1 =’, x1 : 8:3 , ‘x2 = ’ , x2 : 8:3); End; Readln; End. c. Thuật toán theo chu trình có bước lặp xác định. Sai Đúng ĐK Câu lệnh Sơ đồ hoạt động: Ví dụ 1: Tính giai thừa của một số nguyên dương n (n!=1.2.......(n-1).n) *Xác định bài toán Đ S Nhập n GT¬1 i¬1 GT¬GT*i i¬i+1 i £ n Thông báo GT rồi kết thúc - Input: Số nguyên dương n; - Output: Giai thừa của n (GT) Sơ đồ khối *Chương trình: Program tinhgiaithua; Var i,n,gt: integer; Begin Writeln(‘ nhap n:’); Readln(n); For :=1 to n do Gt:=gt*i; Writeln(‘giai thua cua n la:’,gt); Readln; End. Bài tập áp dụng: Bài 1: Tính tổng S= 1 + 2 + 3 + ..+ n với n nhập từ bàn phím Hướng dẫn: * Xác định bài toán - Input: N - Output: Tổng S * Thuật toán: - Bước 1: Nhập N - Bước 2: Sß0; iß1; - Bước 3:Nếu i>N thì sang bước 4; - Bước 4: SßS+i ; ißi+1 quay lại bước 3; - Bước 5: Thông báo S rồi kết thúc; * Chương Trình Program tinhtong; Uses crt; Var N,s :longint; Begin Clrscr; Write(‘ nhap n:’); readln(n); S:=0; i:=1; For i:=1 to n do s:=s+i ; Write(‘ tong can tinh la:’,s); Readln; End. Bài 2: Tính tổng (làm tương tự) với n nhập từ bàn phím Bài 3: Tính tổng (làm tương tự) S= 12 + 22 + 32 + ..+ n2 với n nhập từ bàn phím * Giáo viên hướng dẫn và yêu cầu học sinh áp dụng làm các bài tâp trong SGK Bài tập 5a SGK-trang 51 *Thuật toán Liệt kê: - Bước 1: iß1; sß0; - Bước 2: Nếu i>50 thì sang bước 4; - Bước 3: sßs+i/(i+1); ißi+1; quay lại bước 2; - Bước 4: Thông báo s và kết thúc. *Chương trình Program tinhtong; Var i: integer; S: real; Begin S:=0; For i:=1 to 50 do S:=s+i/(i+1); Writeln(‘ tong la:’,s:8:2); Readln; End. Bài tập 6/SGK tr51: tương tự d. Thuật toán theo chu trình có bước lặp không xác định. Sai Đúng ĐK Câu lệnh Sơ đồ câu lệnh while -do Sai Đúng ĐK Câu lệnh Sơ đồ câu lệnh Repeat-Until VD1: Tính Tổng sau: S= 1+3+5+7+.+ (2n-1), cho đến khi S>500 *Thuật toán: - Bước 1: sß0;iß1; - Bước 2: Nếu S>500 thì chuyển tới bước 4; - Bước 3: ißi+1; sßs+(2*i-1); Quay lại bước 2; - Bước 4: Thông báo s rồi kết thúc * Chương trình: Program tinhtong; Uses crt; Var i ,s:integer; Begin clrscr; Write(‘ CHUONG TRINH TINH TONG’); S:=0; i:=1; While s<=500 do Begin i :=i+1; s:=s+(2*i-1); end; write(‘ tong can tinh la:’,s); readln; End. VD2: Nhập vào số nguyên dương n. có kiểm tra điều kiện nhập. * Thuật toán: - Bước 1: Nhập n - Bước 2 : Nếu n<0 thì quay lại bước 1 - Bước 3 : Kết thúc * Chương trình: Program nhapn; Var n:integer; Begin Repeat Write(‘Nhap n:’); Readln(n); If n<0 then Writeln(‘nhap sai! Nhap lai !’); Until (n>0); End. Bài tập áp dụng: Bài 1: Tính tổng sau cho đến khi <0.001 * Thuật toán: - Bước 1: Sß1; nß1; - Bước 2: Nếu <0.001 thì chuyển suống bước 4; - Bước 3: nßn+1; Sßs+; quay lại bước 2; - Bước 4: Thông báo s rồi kết thúc; * Chương trình: Program tinhtong; Uses crt; Var n:integer; S:real; Begin clrscr; Write(‘CT TINH TONG’); S:=1; n:=1; While 1/n>=0.001 do Begin N:=n+1; S:=s+1/n; End; Write(‘tong can tinh la:’); Readln; End. Bài 2: Tìm ước số chung lớn nhất của hai số nguyên dương a và b * Xác định bài toán - Input: Số nguyên dương a,b; - Output: UCLN(a,b) * Thuật toán: - Bước 1: Nhập a,b; - Bước 2: Nếu a=b thì lấy giá trị chung này làm UCLN rồi kết thúc; - Bước 3: Nếu a>b thì a¬a – b rồi quay lại bước 2; - Bước 4: b¬b – a rồi quay lại bước 2; - Bước 5: Đưa ra kết quả UCLN rồ kết thúc. * Chương trình; Program UCLN; Var a,b,ucln:integer; Begin Writeln(‘nhap a,b’); Readln(a,b); While ab do If a>b then a:=a-b else b:= b-a; If a=b then ucln:=a; Writeln(‘ uoc chung lon nhat la: ‘, ucln); Readln; End. Bài tập 7 SGK/tr51 ( Sử dụng cấu trúc Whlie-do) *Xác định bài toán: - Input: nhập tuổi cha, tuổi con; - Output: số năm tuổi cha gấp đôi tuổi con *Thuật toán: - Bước 1: nhập tuoicha, tuoicon (điều kiện tuoicha >2*tuoicon và tuoicha-tuoicon>=25) - Bước 2: namß0; - Bước 3: nếu tuoicha= 2*tuoicon thì đến bước 5; - Bước 4: tuoichaßtuoicha+1; Tuoiconßtuoicon + 1; Namßnam+1; - Bước 5: thông báo số năm và kết thúc. *Chương trình Program tuoichacon; Var ch, c , n : word; Begin Writeln (‘ nhap tuoi cha va con’); Writeln (‘tuoi cha >2*tuoicon va tuoicha-tuoicon>=25’); Readln(ch, c); N:=0; While ch2*c do Begin ch:= ch + 1; c:=c+1; N:=n+1; End; Writeln(‘vay sau:’,n,’nam tuoi cha gap doi tuoi con’); Readln; End. Bài tập 7 SGK/tr51 ( Sử dụng cấu trúc Repe
Tài liệu đính kèm:
- skkn_xay_dung_mot_so_thuat_toan_co_ban_nham_giup_hoc_sinh_tu.doc