Tải bản đầy đủ (.doc) (33 trang)

skkn cấp tỉnh xây dựng hệ thống bài tập có tính phân bậc khi sử dụng câu lệnh rẽ nhánh và tổ chức lặp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (201.03 KB, 33 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>--- </b>

<b>---XÂY DỰNG HỆ THỐNG BÀI TẬP CĨ TÍNH PHÂN BẬC KHI SỬ DỤNG CÂU LỆNH RẼ NHÁNH VÀ TỔ CHỨC LẶP</b>

<b>Người thực hiện: Nguyễn Quang ThạchChức vụ: Giáo viên</b>

<b>Đơn vị công tác: Trường THCS Chu Văn AnSKKN thuộc lĩnh vực (mơn): Tin học</b>

THANH HĨA NĂM 2024****************

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

1. MỞ ĐẦU 1

2.2. Thực trạng của vấn đề trước khi áp dụng sáng kiến

2.3. Các giải pháp đã sử dụng để giải quyết vấn đề <sub>5->18</sub>

TÀI LIỆU THAM KHẢO

Danh mục đề tài SKKN đã được xếp loại

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I – MỞ ĐẦU1.1. Lý do chọn đề tài: </b>

Hoạt động dạy học là một dạng hoạt động đặc trưng của loài ngườinhằm truyền thụ lại những kinh nghiệm, những vốn kiến thức của xã hội lồingười đã tích luỹ được từ thế hệ này cho thế hệ khác, biến chúng thành vốnliếng, kinh nghiệm, phẩm chất và năng lực tư duy sáng tạo của người học.Hoạt động dạy học gồm hai hoạt động: hoạt động dạy của giáo viên và hoạtđộng học của học sinh. Hai hoạt động này liên quan mật thiết với nhau, tácđộng qua lại lẫn nhau và có chung một mục đích cuối cùng là giúp cho ngườihọc lĩnh hội được nội dung học đồng thời phát triển được phẩm chất, nhâncách và năng lực tư duy sáng tạo của người học.

Nói như vậy trong dạy học nói chung và dạy học mơn Tin nói riêngkhơng phải chỉ cần người học phát huy tính tích cực, tự giác chủ động sángtạo của họ trong hoạt động học là đã đạt được mục tiêu của hoạt động dạy họcmà người dạy cũng cần phải biết phân tích nội dung của hoạt động dạy thànhnhững hoạt động thành phần rồi căn cứ vào mục tiêu của tiết học, trình độ củahọc sinh, trang thiết bị hiện có của nhà trường mà lựa chọn phương phápgiảng dạy, thời điểm đưa ra nội dung kiến thức của tiết học một cách phù hợpnhằm thực hiện những hoạt động tiềm tàng trong nội dung cần dạy để đạtđược mục tiêu đặt ra một cách cao nhất, hiệu quả nhất.

Ngày nay với sự phát triển như vũ bão của khoa học kỹ thuật, đặc biệtlà công nghệ thơng tin thì sự hiểu biết về tin học là không thể thiếu. Bởi tinhọc ngày nay đã xâm nhập vào rất nhiều ngành khoa học khác nhau với vaitrị là một cơng cụ hữu ích để học tập, ứng dụng, nghiên cứu và phát minh.

Trong nhà trường phổ thơng, một trong những nội dung chương trìnhTin học khó cả cho người dạy lẫn người học, đó là chủ đề F “Giải quyết vấnđề với sự trợ giúp của máy tính”; riêng với khối lớp 8: Câu lệnh rẽ nhánh vàtổ chức lặp, nếu làm cho các em nắm vững được hay cũng như nâng cao hơn,đảm bảo kiến thức cho các em tham gia được các kỳ thi, thì địi hỏi giáo viêncần phải nghiên cứu, đào sâu hơn nữa. Một trong những giải pháp đó chính là“ Xây dựng hệ thống bài tập có tính phân bậc”

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

- Biết tư duy thuật toán theo cấp độ từ đơn giản đến phức tạp.

<b>1.3. Đối tượng nghiên cứu.</b>

Nghiên cứu các giải pháp nhằm nâng cao hiệu quả giáo dục HS lớp 8 đặcbiệt là các em tham gia trong Câu lạc bộ Tin học (những em có nhu cầu tìmhiểu sâu hơn về lập trình) ở trường THCS Chu Văn An một cách khoa học, phùhợp với đặc điểm tình hình nhà trường, địa phương<small>.</small>

<b>1.4. Phương pháp nghiên cứu.</b>

Trong phạm vi đề tài này tôi đã lựa chọn một số phương pháp sau:- Phương pháp nghiên cứu xây dựng cơ sở lý thuyết:

Nghiên cứu các Cơng văn, Thơng tư, Nghị quyết, Nghị định… có tínhcấp thiết về việc giáo dục trong các nhà trường phổ thơng.

- Điều tra, khảo sát tình hình thực tế

- Nghiên cứu tổng kết kinh nghiệm giáo dục:

Lắng nghe, trao đổi, rút kinh nghiệm từ những nhận xét, góp ý của đồngnghiệp để trau rồi, nâng cao trình độ nghiệp vụ sư phạm của bản thân.

- Thống kê, xử lý số liệu:

Để đảm bảo tính chính xác của thực trạng, hiệu quả vấn đề nghiên cứu,tôi đã sử dụng thống kê toán học, xử lý số liệu để rút ra những kết luận quantrọng.

<b>1.5. Những điểm mới của sáng kiến kinh nghiệm.</b>

Sáng kiến này được làm và áp dụng lần đầu tại trường THCS Chu VănAn năm học 2011-2012 và đã đem lại hiệu quả cao.

Năm học 2023-2024, với chương trình Giáo dục phổ thơng mới, Sángkiến đã có những thay đổi: Khơng sử dụng ngơn ngữ lập trình Pascal mà thayvào đó là ngơn ngữ lập trình C++.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>II. NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM2.1. Cơ sở lí luận của sáng kiến kinh nghiệm</b>

Việc lựa chọn và nghiên cứu đề tài này tôi dựa vào hai nguyên tắc cơ bảntrong dạy học đó là: nguyên tắc đảm bảo sự thống nhất giữa tính vừa sứcchung và vừa sức riêng và nguyên tắc đảm bảo sự thống nhất giữa tính tập thểvà cá nhân .

Phương pháp dạy học Tin học có liên quan mật thiết đến nhiều bộ mônkhoa học như: Triết học duy vật biện chứng, Toán học, Giáo dục học, Tâm lýhọc, Lôgic học và những khoa học khác.

Cơ sở Tốn học: Đó là tính chính xác, chặt chẽ và logic, tuần tự vàkhoa học trong dạy học.

Cơ sở Giáo dục học: Căn cứ vào nguyên tắc đảm bảo sự thống nhấtgiữa tính vừa sức chung và vừa sức riêng trong dạy học, giữa tính tập thể vàcá nhân trong dạy học.

Cơ sở Triết học: Mâu thuẫn là động lực thúc đẩy quá trình phát triển.Một vấn đề được gợi ra cho học sinh học tập chính là một mâu thuẫn giữa yêucầu nhiệm vụ nhận thức với tri thức và kinh nghiệm sẵn có.

Cơ sở Tâm lý học: Sự nảy sinh, hình thành tâm lý về phương diện cáthể là quá trình chuyển đổi liên tục từ cấp độ này sang cấp độ khác đạt tới mộtchất lượng mới và diễn ra một quy luật đặc thù.

Quy luật của quá trình nhận thức là từ trực quan sinh động đến tư duytrừu tượng, từ tư duy trừu tượng về thực tiễn. Trong q trình nhận thức cóđạt được hiệu quả hay khơng, có bền vững hay khơng cịn phụ thuộc vào qtrình tích cực của hoạt động, sáng tạo của chủ thể.

Trong các mơn học nói chung và mơn Tin học nói riêng, sự thống nhấtgiữa điều khiển của thầy và hoạt động học của trị có thực hiện bằng cáchquán triệt, kích thích quan điểm hoạt động thực hiện dạy học trong hoạt độngvà bằng hoạt động.

Dạy học theo phương pháp mới phải làm cho học sinh chủ động tư duynhiều hơn, làm nhiều hơn, tham gia hoạt động nhiều hơn trong quá trìnhchiếm lĩnh tri thức, cịn thầy đóng vai trị là người hướng dẫn.

Dạy học là dạy cho học sinh phương pháp tư duy sáng tạo, dạy tin họclà phải dạy suy nghĩ, dạy cho học sinh thành thạo các phương pháp tư duy, từphân tích tổng hợp trừu tượng hóa, khái qt hóa… phải dạy cho học sinh cósự tìm tịi tự mình phát hiện và phát biểu vấn đề, dự đoán kết quả, tìm đượchướng giải của bài tốn khi làm bài tập tin học nói chung và bài tập C++,hướng viết giải thuật về một bài tốn. Hình thành và phát triển tư duy tíchcực, độc lập sáng tạo, có óc hồi nghi khoa học trong dạy học tin học cho họcsinh là q trình lâu dài, thơng qua bài học và từng tiết học.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>2.2. Thực trạng của vấn đề trước khi áp dụng sáng kiến kinhnghiệm.</b>

<b>2.2.1. Thực trạng chung:</b>

Đối với bộ môn Tin học ở trường THCS với tư cách là một môn học chínhthức và đã có vị thế nhất định. Tuy nhiên nó lại là một mơn học rất mới mẻ vàtrừu tượng; nhất là phần hướng dẫn các em giải quyết một bài tốn cụ thểthơng qua một ngơn ngữ lập trình cụ thể. Đặc biệt, đối với học sinh khối 8,các em đã phải tham gia các kì thi học sinh giỏi môn Tin các cấp; Muốn vậycác em cần phải được trang bị ít nhất một ngơn ngữ lập trình phổ biến như C++, Python...Nhưng nội dung và thời lượng chương trình rất ít, nếu chỉ dạymcho cá em theo SGK thì các em khơng thể tham gia được các kỳ thi; Vì vậycần phải bồi dưỡng thêm cho các em về kiến thức lập trình, ngơn ngữ lậptrình. Trong chương trình giáo dục mơn Tin lớp 8, chủ đề F là là mảng kiếnthức về Câu lệnh rẽ nhánh và câu lệnh lặp đối. Đây cũng là một nội dung khóvới cả người dạy và người học.

Mặt khác, như chúng ta đã biết, phân bậc hoạt động làm một căn cứ choviệc điều khiển quá trình dạy học. Vì vậy giáo viên phải xác định được nhữngmức độ yêu cầu thể hiện những hành động mà học sinh phải đạt được hoặc cóthể đạt được vào lúc cuối cùng hay ở những thời điểm trung gian. “Mức độ”,“Phân bậc” có thể hiểu theo nghĩa : Mức độ của một hoạt động trong nhữnggiai đoạn khác nhau của toàn bộ thời gian học ở trường phổ thông hoặc củamột cấp học hoặc của một lớp học nào đó. Cũng có thể hiểu theo nghĩa làmức độ khó khăn, mức độ yêu cầu trong một khoảng thời gian ngắn, một tiếthọc. Hiện nay việc phân bậc hoạt động cịn q chung chung, có khi cịn chưađược chú ý, nhìn chung chưa đáp ứng về nhu cầu của thực tế dạy học ngàycàng phát triển. Việc phân bậc hoạt động chưa được giải quyết tốt trongchương trình cũng như sách giáo khoa, vì vậy người giáo viên cần phải thựchiện sự phân bậc hoạt động một cách linh hoạt và phù hợp với từng điều kiệncụ thể của từng địa phương nơi công tác, từng đối tượng học sinh, từng bàihọc, tiết học…

<b>2.2.2. Đối với giáo viên.</b>

Bản thân tôi là một giáo viên đang giảng dạy bộ môn Tin học ở bậc THCS,qua tham khảo SGK Tin học 8 và các kiến thức đã được học tôi mạnh dạn

<b>chọn đề tài: “Xây dựng hệ thống bài tập có tính phân bậc khi sử dụng câulệnh rẽ nhánh và tổ chức lặp”. Với đề tài này tôi hy vọng sẽ giúp cho bản</b>

thân vững vàng hơn, hiểu thêm về ngơn ngữ lập trình C++, để dạy học sinhcủa mình tiếp cận với ngơn ngữ lập trình C++, làm cho các em hiểu và thấyđược ứng dụng rộng rãi của ngơn ngữ lập trình C++ trong khoa học và trongđời sống.

<b>2.2.3. Đối với học sinh</b>

Với đặc thù trường THCS Chu Văn An là một trường chất lượng cao củahuyện, do vậy các em cần phải được học và được rèn luyện, trang bị nhiềuhơn trên mọi phương diện. Không những kỹ lưỡng về cơ bản mà còn phải

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

nâng cao hơn u cầu SGK. Chính vì thế mơn Tin học cũng đóng vai trị nhưmột mơn học chính thức và hướng tới mục tiêu đó.

<b>2.3. Các giải pháp đã sử dụng để giải quyết vấn đề2.3.1 – Phân tích những căn cứ để phân bậc hoạt động.</b>

<i><b>2.3.1.1- Sự phức tạp của đối tượng hoạt động.</b></i>

Đối tượng hoạt động càng phức tạp thì hoạt động càng khó thực hiện. Vìvậy có thể dựa vào sự phức tạp của đối tượng để phân bậc hoạt động.

<b>Ví dụ 1: Khi cho học sinh luyện tập về câu lệnh rẽ nhánh có thể phân bậc dựa</b>

vào sự phức tạp của biến số.

Chẳng hạn: Viết chương trình cho máy nhận vào 3 số thực bất kỳ. Xét xem 3số đó có làm thành 3 cạnh của một tam giác không?

Ở ví dụ này học sinh có thể dễ dàng đưa ra thuật tốn để viết được chươngtrình. Hay nói cách khác học sinh có thể dễ dàng xét tổng 2 cạnh của một tamgiác bao giờ cũng lớn hơn cạnh cịn lại.

Bước 3: Thơng báo 3 số vừa nhập là ba cạnh của một tam giác;

Bước 4: Thông báo 3 số vừa nhập không phải là ba cạnh của một tam giác;Bước 5 : Kết thúc.

Dựa vào thuật tốn trên học sinh dễ dàng viết được chương trình.cout<< “Hay nhap 3 so thuc tuy y”;

if( (a < b + c) && (b < a + c) && (c < a + b) )

cout<<”Ba so vua nhap la ba canh cua mot tam giac”;else

cout<<”<small>Ba so vua nhap khong phai la ba canh cua mot tam giac”;</small> Nhưng nếu như thêm yêu cầu nữa vào bài trên như: Nếu là tam giác thìtam giác đó là tam giác nhọn, tam giác vng hay tam giác tù thì độ phức tạplại càng tăng thêm rất nhiều. Các em không những phải so sánh tổng 2 haicạnh với một cạnh mà các em không những lại phải so sánh một lần nữa mà

<i><b>còn phải sử dụng vòng if... lồng nhau mới giải quyết được, do vậy giáo viên</b></i>

cần hướng dẫn cho các em thuật toán để giải quyết vấn đề này .

<b>Thuật toán :</b>

Bước 1: Nhập 3 số a, b, c tương ứng với ba cạnh của tam giác;

Bước 2: Nếu (a < b + c) và (b < a + c) và (c < a + b) thì tiếp đến bước 3; Nếu không thỏa mãn điều kiên trên thì chuyển đến bước 10;

Bước 3: Thơng báo có là tam giác ; Bước 4: Đưa số lớn về c;

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Bước 5: a := a*a; b := b*b; c := c*c

Bước 6: Nếu c < a + b thì chuyển đến bước 8; Nếu c = a + b thì chuyển sang bước 9; Nếu khơng thì chuyển đến bước 7;

Bước 7: Thông báo là tam giác tù ; chuyển đến bước 11; Bước 8: Thông báo là tam giác nhọn ; chuyển đến bước 11; Bước 9: Thông báo là tam giác vuông ; chuyển đến bước 11; Bước 10: Thông báo không là tam giác ;

Bước 11: Kết thúc.

<b>Giáo viên cần gợi ý cho các em khi đưa số lớn về c các em nên dùng một biến</b>

gọi là biến trung gian (tg).

int main(){

cout<< “Hay nhap 3 so thuc tuy y”; cin>>a>>b>>c;

if( (a < b + c) && (b < a + c) && (c < a + b) ){

cout<<”Ba so vua nhap la ba canh cua mot tam giac”;//Dua so lon nhat ve c

if (a > c) { int tg = a; a = c; c = tg; }if (b > c) {int tg = b; b= c; c = tg; } //Moi so la binh phuong cua no

a= a*a; b= b*b; c= c*c;

if (c < a + b) cout<<”Day la tam giac nhon”; else if (c ==a + b) cout<<”Day la tam giac vuông “; else cout<<”Day la tam giac tu”;

}

else cout<small><<”Ba so vua nhap không phai la ba canh cua mot tam giac”;</small>}

<b>Tóm lại: Đối tượng hoạt động càng phức tạp thì hoạt động càng khó thực</b>

hiện khi gặp những bài toán dạng này, người giáo viên phải từ từ hướng dẫnhọc sinh đưa về dạng đơn giản nhất như khi có ít đối tượng tham gia hoạtđộng, từ đó học sinh dễ dàng lần lượt giải quyết được yêu cầu của bài tập.

<i><b>2.3.1.2- Sự trừu tượng, khái quát của đối tượng hoạt động.</b></i>

Như chúng ta đã biết, tính chất của giải thuật là khơng giải một bài tốnriêng lẻ nào cả mà giải cho một lớp bài tốn có cùng cấu trúc nhưng khácnhau về mặt dữ liệu vào. Vì vậy, đối tượng hoạt động càng trừu tượng, kháiquát có nghĩa là yêu cầu hoạt động càng cao. Do đó có thể coi mức độ trừutượng, khái quát của đối tượng là căn cứ để phân bậc hoạt động.

<b>Ví dụ2: Viết chương trình nhập vào một dãy số ngun sau đó tính tổng các</b>

số âm và tính trung bình cộng của các số dương.a) Dãy đó có 10 phần tử.

b) Số phần tử của dãyđược nhận vào từ bàn phím trước khi vào từng phần tửcủa dãy.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

c) Số phần tử của dãy khơng được biết chính xác trước khi vào từng phần tửcủa dãy mà chỉ biết trong khoảng đó. Nó hồn tồn xác định khi người ta vàodấu hiệu kết thúc dãy đó là nhận được số 0.

Ở bậc a số phần tử của dãy là một hằng số, các em chỉ cần bố trí vịng lặp

<i><b>For... là có thể thực hiện được, đoạn chương trình như sau:</b></i>

for (int i = 1; i<=10; i++) {

cout<<”Nhap so thu: “<<i<<”=”; cin>>a;

if (a < 0) ta = ta + a

else { td = td + a; sd ++; } }

cout<<”Tong cac so am la: “ ta<<endl;cout<<”Trung binh cong cua cac so duong la:’’<<fixed<<setprecision(2)<<(float)td*1.0/sd;

Chuyển sang b) hoạt động này được khái quát, giáo viên có thể gợi ý đểhọc sinh có thể phát hiện ra và biết viết chương trình trong đó, ta cần một biếnđể nhận vào số phần tử của dãy trước khi thực hiện vòng lặp, biến đếm nàyphải chạy từ 1 đến n.

Đoạn chương trình như sau:

cout<<”Cho biet so phan tu cua day”;cin>>n;

for (int i=1; i<=n; i++){

cout<<”Nhap so thu: “<<i<< “=”;cin>>a;

if (a < 0) ta= ta + a ;else { td = td + a; sd++;}

cout<<”Tong cac so am la: “<< ta<<endl;cout<<”Trung binh cong cua cac so duong la:’<<fixed<<setprecision(2)<<(float)td*1.0/sd; }

Tới bậc c) hoạt động lại được khái quát một mức nữa bằng các thay mộtbiến cụ thể bằng một điều kiện kết thúc của dãy số. Trong trường hợp nàygiáo viên có thể gợi ý cho các em để các em có thể tự đặt ra xem với u cầunày có gì khác với hai yêu cầu trước như: Dãy số có bao nhiêu phần tử? Đếnlúc khơng muốn nhập nữa thì ta phải làm thế nào? Có thể dùng điều kiện gì đểkết thúc dãy đó? Nên dùng vịng lặp như thế nào để nhập các số nguyên đó?Học sinh phải tìm cách trả lời được các câu hỏi đó. Giáo viên có thể gợi ý:Dùng một biến để xác định chỉ số phần tử của dãy và dùng vòng lặp với điềukiện sau để nhận vào phần tử của dãy số và điều kiện để kết thúc là nhận vàomột số 0.

#include <bits/stdc++.h>using namespace std;

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

int main() { int i = 1;

double a, ta = 0, td = 0, sd = 0; do {

cout << "Nhap so thu " << i << "="; cin >> a;

if (a < 0) ta += a;

else { td += a; sd++; } i++;

Như vậy: Hoạt động nhập vào một dãy số nguyên có thể được tiến hành ởba bình diện khác nhau, trong đó tính trừu tượng và khái quát của đối tượnghoạt động ngày càng gia tăng. Vì vậy có thể coi đây là cách phân bậc hoạtđộng này.

<b>Ví dụ 3: Tính giá trị của biểu thức P như sau:</b>

a) P= <sub>5</sub><sub></sub> <sub>4</sub><sub></sub> <sub>3</sub><sub></sub> <sub>2</sub><sub></sub> <sub>1</sub>b) P= <sub>5</sub><small></small> <sub>15</sub><small></small><sub>...</sub><small></small> <i><sub>n</sub></i>c) P=<small>m</small>5<small>m</small>15...<small>m</small>5n

Với m là một số nguyên lớn hơn 1

<i><b>Ta thấy ở bậc a) học sinh dễ dàng sử dụng vịng lặp For... để tính giá trị</b></i>

của P như sau:int main() { double P = 0;

for (int k = 1; k <= 5; k++) { P += sqrt(k + P);

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

đến 1 để tính dần giá trị của P từ trong ra ngồi, cịn nếu đi theo chiều từ 1

<b>đến n sẽ khơng giải quyết được bài tốn.</b>

#include <bits/stdc++.h>using namespace std;int main() {

int n; do {

cout << "Nhap gia tri cua n: "; cin >> n;

} while (n <= 0); double P = 0;

for (int k = n; k >= 1; k--) { P = sqrt(5 * k + P); }

cout << "Gia tri cua bieu thuc P la: " << fixed << P << endl; return 0;

Nhưng khi chuyển sang bậc c) sự trừu tượng càng cao hơn, nhưng với ýthức khái quát hoá, học sinh sẽ đặt vấn đề n dấu căn bậc bất kỳ thì máy tính sẽgiải quyết bài tốn như thế nào. Bây giờ các em suy nghĩ đến tính giá trị củabiểu thức P có n dấu căn m. Để giúp học sinh khơng nản khi cảm thấy bài qkhó, nhiệm vụ của người thầy giáo nhắc lại cho học sinh biết căn bậc m củamột số nào đó có số mũ là1/m và để nhập được P lớn hơn 1 và n khơng âm thìphải tổ chức vịng lặp…để học sinh tính được P như sau:

#include <bits/stdc++.h>using namespace std;int main() {

int n, m; do {

cout << "Nhap gia tri cua n va m: "; cin >> n >> m;

} while (n <= 0 || m <= 1); double P = 0;

for (int k = n; k >= 1; k--) {

P = exp(1.0 / m * log(5 * k + P)); }

cout << "Gia tri cua bieu thuc P la: " << fixed << P << endl; return 0;

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Nội dung của hoạt động chủ yếu là những tri thức liên quan đến hoạt độngvà những điều kiện khác của hoạt động. Nội dung hoạt động càng gia tăng thìhoạt động càng khó thực hiện cho nên nội dung hoạt đơng cũng là một căn cứđể phân bậc hoạt động.

<b>Ví dụ 4: Nhận vào m phần tử của một dãy số, in ra các số chia hết 5 và cho 9,</b>

tính tổng các số chia hết cho 9. Có thể phân bậc dựa vào sự phân bậc, dựa vàosự phức tạp của nội dung bằng những mức sau:

a) Nhập vào m phần tử là số nguyên dương và in ra màn hình dãy vừa nhập.b) Nhập vào m phần tử là số nguyên, in ra màn hình các phần tử là số chia hếtcho 9 và chia hết cho 5. Tính tổng các số chia hết cho 9.

c) Nhập vào m phần tử là số nguyên lớn hơn 3 và nhỏ hơn 3000, in ra mànhình các phần tử là số chia hết cho 9 và chia hết cho 5. Tính tổng các số chiahết cho 9.

Ở nội dung a) học sinh dễ dàng độc lập viết chương trình nhận vào số m vàbố trí vịng lặp để nhận vào các số nguyên không âm như sau:

#include <bits/stdc++.h>using namespace std;int main() {

int m;

cout << "Nhap vao bao nhieu phan tu la nguyen duong? "; cin >> m;

int So[m + 1]; int i = 0;

do { i++;

cout << "Nhap so thu " << i << " = "; cin >> So[i];

cout << "Day vua nhap la: ";

for (i = 1; i <= m; i++) cout << So[i] << " "; cout << endl;

return 0;}

<b> Chuyển sang nội dung b) thêm nội dung in ra các số hết cho 9 và chia hết</b>

cho 5, sau đó tính tổng các số chia hết cho 9, rất có thể các em sẽ lúng túng,các em có thể chưa nghĩ ra được ngay, Vì vậy, giáo viên cần hướng dẫn cho

<i><b>các em chỉ cần thêm điều kiện nhập được ở số sau while như vậy học sinh sẽ</b></i>

dễ dàng viết được lệnh đó:

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

#include <bits/stdc++.h>using namespace std;int main() {

int m;

cout << "Nhap vao bao nhieu phan tu la nguyen duong? "; cin >> m;

int So[m + 1]; int i = 0;

do { i++;

cout << "Nhap so thu " << i << " = "; cin >> So[i];

cout << endl; int s = 0;

for (i = 1; i <= m; i++) { if (So[i] % 9 == 0) { s += So[i];

} }

cout << "Tong cac so chia het cho 9 la: " << s << endl; return 0;

}

<b>Khi đến yêu cầu c) mặc dù thêm nội dung là các số đó lớn hơn 3 và nhỏ hơn 3000 nhưng đã được hướng dẫn theo tư duy ở ý b) các em dễ dàng làm được.</b>

#include <bits/stdc++.h>using namespace std;int main() {

int m;

cout << "Nhap vao bao nhieu phan tu la nguyen duong? "; cin >> m;

int So[m + 1]; int i = 0, s = 0;

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

do { i++;

cout << "Nhap so thu " << i << " = "; cin >> So[i];

<i><b>2.3.1.4 - Sự phức hợp của hoạt động</b></i>

Ta biết rằng một hoạt động phức hợp bao gồm nhiều hoạt động thànhphần, Gia tăng những phần này cũng có nghĩa là nâng cao yêu cầu đối vớihoạt động.

<b>Ví dụ 5: Trong đợt thi tin học khối 9 có n bạn tham gia</b>

a) Viết chương trình cho máy nhận vào điểm của từng bạn và tính điểmtrung bình của hội đồng thi.

b) Tính xem có bao nhiêu bạn đạt điểm từ mức điểm trung bình của hộiđồng thi trở lên.

Ở phần a) ở yêu cầu này các em dễ dàng viết trương trình nhập điểmcủa từng bạn và các em có thể hiểu được muốn tính điểm trung bình của hộiđồng thi thì các em phải tính được tổng điểm số chia cho tổng số học sinh dựthi.

#include <bits/stdc++.h>using namespace std;int main() {

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

cout << "Nhap diem cua tung thi sinh" << endl; for (int k = 1; k <= n; k++) {

cout << "M[" << k << "] = "; cin >> M[k];

t += M[k]; cout << endl; }

t /= n;

cout << "Diem trung binh cua hoat dong thi la: " << fixed << t <<endl;

return 0;}

Nhưng khi chuyển sang yêu cầu b) các em sẽ lúng túng do vậy giáo viên cầngợi ý do yêu cầu có bao nhiêu bạn đạt điểm từ mức trung bình trở lên do vậycần phải lưu N điểm vào mảng để duyệt lại vì điểm trung bình của hội đồngthi chỉ biết được sau khi đã nhập N điểm. N có thể là số học sinh lớp 9 dự thitức là số lớn.

#include <bits/stdc++.h>using namespace std;int main() {

int n, d = 0; double t = 0;

cout << "Nhap so luong thi sinh: "; cin >> n;

double M[n + 1];

cout << "Nhap diem cua tung thi sinh" << endl; for (int k = 1; k <= n; k++) {

cout << "M[" << k << "] = "; cin >> M[k];

t += M[k]; cout << endl; }

t /= n;

for (int k = 1; k <= n; k++) { if (M[k] >= t) d++;

}

<small>cout<<"Co "<<d<<"ban dat diem tu trung binh cua hoi dong thi tro len"<<endl;</small>

return 0;}

Như vậy gia tăng thành phần hoạt động thì mức độ yêu cầu đối với học sinhcàng cao, giáo viên cũng có thể coi đây là một căn cứ để phân bậc hoạt động.

<i><b>2.3.1.5 - Chất lượng của hoạt động.</b></i>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Chất lượng của hoạt động thường là tính độc lập hoặc độ thành thạo, cũngcó thể lấy làm căn cứ để phân bậc hoạt động.

<b>Ví dụ 6: Xây dựng chương trình, có thể phân bậc hoạt động theo 3 mức độ</b>

a) Hiểu chương trình.

b) Trình bày lại dược việc xây dựng chương trình.c) Độc lập xây dựng chương trình.

Ví dụ cụ thể như sau: Viết chương trình tính:

S = 1 + 2 + 3 + … + n với n nhập từ bàn phím khi chạy chương trình.Trong ví dụ này học sinh phải hiểu được đây là phép tính tổng của mộtdãy số, vì vậy sẽ phải dùng vịng lặp có số lần định trước để viết thuật giải, đólà mức độ hiểu chương trình.

Ở mức độ trình bày lại được việc xây dựng chương trình là bước đầu tiên

<i><b>nhập n, dùng vòng lặp For… cho biến chạy từ 1 đến n, sau đó cho cộng dồn,</b></i>

thốt khỏi vịng lặp thì in giá trị của tổng.

Ở mức độ độc lập xây dựng chương trình người giáo viên phải dẫn dắt đểhọc sinh biết xác định số biến phải dùng là 2 biến, một biến đếm thuộc kiểusố nguyên, một biến chứa giá trị của tổng thuộc kiểu số thực. Trước khi vàovòng lặp thì phải khởi tạo gán cho biến chứa tổng bằng 0. Xác định trong

<i><b>vịng lặp For… Thì phép tính cộng dồn phải là s = s + i, khi thông báo kết</b></i>

quả phải dùng lệnh cout và định dạng cho tổng s là số thực.#include <bits/stdc++.h>

using namespace std;int main() {

#include <bits/stdc++.h>using namespace std;

</div>

×