Hotline: 024.62511017

024.62511081

  Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (726 bài viết)
  • Hỗ trợ khách hàng (498 bài viết)
  • Thông tin tuyển dụng (57 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Sản phẩm mới (216 bài viết)
  • Dành cho Giáo viên (549 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (156 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (127 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (183 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (70 bài viết)
  • Cùng học (92 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (78 bài viết)
  • School@net 15 năm (154 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (124 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (363 bài viết)
  • Các vấn đề giáo dục (1210 bài viết)
  • Bài học trực tuyến (1037 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (275 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (180 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8223 bài viết)
  •  
    Đăng nhập/Đăng ký
    Bí danh
    Mật khẩu
    Mã kiểm traMã kiểm tra
    Lặp lại mã kiểm tra
    Ghi nhớ
     
    Quên mật khẩu | Đăng ký mới
     
    Thành viên có mặt
    Khách: 4
    Thành viên: 0
    Tổng cộng: 4
     
    Số người truy cập
    Hiện đã có 89516102 lượt người đến thăm trang Web của chúng tôi.

    Từ việc giải quyết các bài toán thi đại học bằng phương pháp lập trình đến đôi điều suy nghĩ về chương trình giáo dục môn toán ở bậc phổ thông hiện nay

    Ngày gửi bài: 26/02/2009
    Số lượt đọc: 3720

    Kể từ khi máy tính điện tử ra đời, nhân loại đã bước vào một kỷ nguyên mới - Kỷ nguyên công nghệ thông tin. Sự ra đời của máy tính điện tử đã giúp đỡ cho chúng ta rất nhiều về mọi lĩnh vực khoa học và đời sống. Bất cứ lĩnh vực nào liên quan đến tính toán, thì máy tính có thể làm thay ta được. Đặc biệt trong đó có thể kể đến toán học. Toán học đã và đang đóng vai trò cơ bản cho sự hình thành và phát triển của ngành tin học. Thì ngày nay ngược lại, tin học cũng đóng vai trò rất quan trọng cho sự phát triển của toán học.

    Với sự kiểm chứng thực nghiệm của máy tính nhiều định lý toán học đã được chứng minh, điển hình trong số đó là bài toán 4 màu (Mọi bản đồ phẳng đều có thể tô được bởi 4 màu sao cho hai vùng có chung biên giới được tô bởi hai màu khác nhau). Chứng minh bài toán này lúc ra đời là một chứng minh hoàn toàn độc đáo đã gây biết bao ngạc nhiên cho rất nhiều người. Bởi một điều đáng lưu ý, chúng ta không thể hiểu được bằng những tư duy và lập luận logic thông thường.

    Như vậy, giải quyết các bài toán nhờ vào sự trợ giúp của máy tính là một điều không có gì là mới lạ. Kể từ năm 1976 - 1977, khi bài toán 4 màu hoàn toàn được chứng minh nhờ vào sự giúp đỡ của máy tính đến nay đã trải quađược 30 năm. Tuy nhiên chương trình giáo dục môn toán của chúng ta, đặc biêt là ở bậc phổ thông lại hoàn toàn chưa chú ý đến dạng tư duy cực kỳ quan trọng này. Những điều bất cập đó, sẽ được tôi trình bày kỹ qua bài toán thi đại học sau đây:

    Bài toán 1

    Tìm số nguyên dương n sao cho:

    Cn0+ 2Cn1 + 4Cn2 + … + 2n Cnn= 243.

    (Đề thi tuyển sinh đại học, cao đẳng năm 2002)

    Lời giải bằng tư duy toán học của bài toán này đã được đăng nhiều trên các phương tiện thông tin đại chúng, tôi sẽ không trình bày lại nữa. Ở đây tôi xin đưa ra cách hoàn toàn khác, cách giải bằng phương pháp lập trình.

    Đặt T =Cn0 + 2Cn1+ 4Cn2 + … + 2nCnn

    Ta thấy rằng: 2n Cnn= 2n, mà với n ³ 8 thì tổng T =Cn0+ 2Cn1 + 4Cn2 + … + 2n Cnn> 2nCnn = 2n ³ 28 = 256 > 243. Vậy chắc chắn n sẽ là số nguyên dương bé hơn 8. Từ đây ta đi tới thuật toán:

    1.n = 1

    2.Trong khi n < 8 thì

    2.1. s = 0

    2.2. Cho i chạy từ 0 đến n

    2.3. s = s + 2i * Cni

    2.4. Nếu s = 243 thì

    Số cần tìm là n.

    2.5. Ngược lại

    Đây không phải là số cần tìm.

    2.6 Tăng n lên 1.

    3.Quay lại bước 2.

    4.Kết thúc thuật toán .

    Bây giờ, ta sẽ viết chương trình hoàn chỉnh cho nó. Bạn đọc hoàn toàn có thể sử dụng các ngôn ngữ lập trình như PASCAL, VISUAL BASIC,… riêng ở đây tôi sử dụng ngôn ngữ lập trình C++, môt ngôn ngữ đang rất được ưa dùng trên thế giới hiện nay.

    Chương trình 1

    #include

    #include

    #include

    const k=243;

    int TH(int m, int k);

    void main()

    {clrscr();

    int n=1;

    cout<<"CHUONG TRINH GIAI TOAN THI DAI HOC BANG PHUONG PHAPLAP TRINH" ;

    cout<<"
    Nguoi lap trinh: Nguyen Ngoc Giang
    ";

    cout<<"
    DE TOAN:
    ";

    cout<<"
    Tim so nguyen duong n sao cho: C(n,0)+2C(n,1)+...+pow(2,n)*C(n,n)= 243
    ";

    cout<<"
    LOI GIAI:
    ";

    while(n<8)

    {int s=0;

    cout<<"
    so n la: "<

    for(int i=0; i<=n;i++)

    s+=pow(2,i)*TH(n,i);

    cout<<"
    Tong sau khi tinh la: "<

    if (s==k)

    cout<<"
    SO CAN TIM CHINH LA SO NAY
    ";

    elsecout<<"
    Day khong phai la so duong can tim.
    ";

    n++;

    }

    getch();

    }

    int TH(int m, int k)

    {

    if (k<0||k>m) return 0;

    if(k==0 || k==m)

    return 1;

    else

    return TH(m-1,k-1)+TH(m-1,k);

    }

    Và đây là kết quả sau khi chạy chương trình trên máy:

    ------------------------------------------------------------------------------------------------------------

    CHUONG TRINH GIAI TOAN THI DAI HOC BANG PHUONG PHAP LAP TRINH

    Nguoi lap trinh: Nguyen Ngoc Giang

    DE TOAN:

    Tim so nguyen duong n sao cho: C(n,0)+2C(n,1)+...+pow(2,n)*C(n,n)= 243

    LOI GIAI:

    so n la: 1

    Tong sau khi tinh la: 3

    Day khong phai la so duong can tim.

    so n la: 2

    Tong sau khi tinh la: 9

    Day khong phai la so duong can tim.

    so n la: 3

    Tong sau khi tinh la: 27

    Day khong phai la so duong can tim.

    so n la: 4

    Tong sau khi tinh la: 81

    Day khong phai la so duong can tim.

    so n la: 5

    Tong sau khi tinh la: 243

    SO CAN TIM CHINH LA SO NAY

    so n la: 6

    Tong sau khi tinh la: 729

    Day khong phai la so duong can tim.

    so n la: 7

    Tong sau khi tinh la: 2187

    Day khong phai la so duong can tim.

    ------------------------------------------------------------------------------------------------------------

    Trên đây là chương trình và lời giải khi chạy trên máy. Còn khi đi thi, ta sẽ phải làm bài trên giấy. Lẽ dĩ nhiên, cũng giống nhưcách ta giải toán thông thường, ta cũng cần phải đưa ra được lập luận và kết quả mà bài toán yêu cầu để hoàn toàn thuyết phục được mọi người. Do đó, ta giải bài toán 1 bằng phương pháp lập trình viết trên giấy như sau:

    ------------------------------------------------------------------------------------------------------------

    . Ta giải bài toán bằng phương pháp lập trình

    #include

    #include

    #include

    const k=243;

    int TH(int m, int k);

    void main()

    {clrscr();

    int n=1;

    cout<<"CHUONG TRINH GIAI TOAN THI DAI HOC BANG PHUONG PHAPLAP TRINH" ;

    cout<<"
    DE TOAN:
    ";

    cout<<"
    Tim so nguyen duong n sao cho: C(n,0)+2C(n,1)+...+pow(2,n)*C(n,n)= 243
    ";

    cout<<"
    LOI GIAI:
    ";

    while(n<8)

    {int s=0;

    cout<<"
    so n la: "<

    for(int i=0; i<=n;i++)

    s+=pow(2,i)*TH(n,i);

    cout<<"
    Tong sau khi tinh la: "<

    if (s==k)

    cout<<"
    SO CAN TIM CHINH LA SO NAY
    ";

    elsecout<<"
    Day khong phai la so duong can tim.
    ";

    n++;

    }

    getch();

    }

    int TH(int m, int k)

    {

    if (k<0||k>m) return 0;

    if(k==0 || k==m)

    return 1;

    else

    return TH(m-1,k-1)+TH(m-1,k);

    }

    Kết luận :

    Sau khi chạy chương trình trên máy, ta sẽ biết được số cần tìm là 5.

    ----------------------------------------------------------------------------------------------------------

    Việc lập trình đúng chắc chắn sẽ tìm ra nghiệm nếu chạy chương trình trên máy, nhưng làm thế nào để tìm đúng được nghiệm bằng 5 nếu chỉ viết chương trình trên giấy? Như vậy, cái khó khăn tiếp theo của việc viết chương trình trên giấy ngoài phần lập luận ra, đó là tìm ra kết quả.

    Thật vậy, ta hoàn toàn có thể tìm được nghiệm nguyên dương n = 5 chỉ bằng không quá 3 phép thử. Cách tìm nghiệm nguyên dương n dưới đây sẽ được làm giống như cách làm của phương pháp tìm số gà và số chó hay cũng giống như cách tìm kiếm nhị phân trong tin học (Xem [1]). Ta biết rằng, vì 0 £n < 8 nên ta chia khoảng trên ra làm hai phần 0 £ n£ 4 và 4 < n < 8. Nếu tại n = 4 ta thu được tổng T < 243 thì chắc chắn 4 < n < 8, ngược lại thì 0 £ n £ 4. Và ta lặp lại quá trình này cho đến khi tìm ra nghiệm. Sau đây là các phép thử:

    Lần 1n = 4

    T(n=4): T = C40+ 2C41 + 4C42 + 8 C43+ 16C44= 1 + 8 + 24 +

    + 32 + 16 = 81 < 243.

    Do đó nghiệm n sẽ nằm trong khoảng 4 < n < 8.

    Lần 2n = 6

    T(n = 6): T = C60+ 2C61 + 4C62 + 8C63+16C64 + 32C65 +64C66> 16 C64

    + 64C66= 16*15 + 64 = 304 > 243. Vậy 4 < n < 6.

    Do đó, nếu có nghiệm thì nghiệm đó chính là n =5.

    Lần 3n = 5

    T(n=5): T = C50+ 2C51 + 4 C52 + 8C53+ 16C54 + 32C55 = 1 + 10 + 40 +

    80 +80 + 32= 243

    Đây chỉ là một cách tìm ra nghiệm nguyên dương n. Bạn đọc có thể làm bất cứ cách nào, miễn là thu được kết quả n = 5 để ghi vào phần kết luận của cách giải ở trên là được.

    Tôi đã trình bày với các bạn hoàn chỉnh lời giải của bài toán 1 bằng phương pháp lập trình (Cả lập luận cũng như kết quả). Sau đây tôi xin có đôi điều cần bàn:

    1. Phương pháp lập trình từ lâu đã được coi như là một phương pháp hữu hiệu giúp giải quyết các bài toán toán học. Có những bài toán toán học chỉ có thể nhờ vào phương pháp lập trình mới có thể giải quyết được. Điển hình nhất trong số đó là bài toán 4 màu mà ta đã nhắc ở trên. Một bài toán khó đến mức mà trước khi giải được hoàn toàn nhờ chạy chương trình trên máy thì không có bất cứ người nào thành công trong việc chứng minh nó.

    2. Sự kết hợp hài hòa giữa người và máy làm cho toán học có thêm một tư duy mới và tư duy này đã được thời gian công nhận coi như là một tư duy không thể thiếu trong cách tiếp cận toán học ngày nay. Mặc dù, những nhà toán học mà chưa từng được tiếp xúc với lập trình sẽ có một số nghi ngại. Bởi lẽ, tư duy toán học theo phương pháp lập trình là một tư duy hoàn toàn mới lạ so với những tư duy toán học thông thường khác. Để hiểu và công nhận nó cũng cần những hiểu biết cơ bản về lĩnh vực lập trình cũng như khả năng đánh giá chúng.

    3. Một điều đáng chú ý là, ở bậc phổ thông có nhiều em học sinh có khả năng lập trình rất tốt. Liệu kì thi đại học sắp tới đây, khi có một bài toán có khả năng lập trình được như bài toán 1 thì việc chấm điểm cho những cách giải này sẽ như thế nào? Đâu là thang điểm cho những cách giải như thế này?

    4. Thêm một thực tế nữa là, có rất nhiều thầy cô giáo dạy toán vì điều kiện không cho phép nên chưa được tiếp xúc với lập trình. Do đó, nếu xảy ra việc giải toán bằng phương pháp lập trình như trường hợp tương tự nói trên thì việc chấm thi sẽ vô cùng khó khăn đối với họ.

    5. Chương trình sách giáo khoa toán hiện nay không hề có bất cứ một trang viết nào viết về dạng tư duy phi toán (tư duy lập trình chỉ là một dạng tư duy của tư duy phi toán) áp dụng vào việc giải các bài toán toán học. Liệu đây có phải là một vấn đề thiếu sót cần xem xét hay không?

    6. Tư duy toán học ngày nay rõ ràng có sự khác biệt với tư duy toán học của 100 năm về trước. Sự phát triển như vũ bão của khoa học công nghệ kéo theo những luồng tư duy mới xuất hiện. Cho nên chương trình giáo dục toán ở bậc phổ thông của chúng ta cũng cần phải có những thay đổi để phù hợp hơn với thực tế.

    7. Những câu hỏi cũng như những nhận xét trên không hề đơn giản để có thể trả lời được trong ngày một ngày hai. Chúng ta cần phải xem xét kỹ hơn về vấn đề này để có được câu trả lời xác đáng nhất. Hy vọng sẽ nhận được những lời chia sẻ của các bạn.

    Sau cùng là một số bài tập:

    Bài toán 2:

    a. Giải bài toán thi đại học sau bằng phương pháp lập trình:

    Tính giá trị của biểu thức M = (An+14+ 3An3)(n+1)! , biết rằng Cn+22 + 2Cn+22 + 2Cn+32+ Cn+42 = 149

    (n là số nguyên dương, Anklà số chỉnh hợp chập k của n phần tử và Cnk là số tổ hợp chập k của n phần tử).

    (Đề thi tuyển sinh đại học,cao đẳng năm 2005)

    b. Lập trình giải bài toán 1 bằng các phương pháp khác .

    Chúc các bạn thành công./.

    (Nguyễn Ngọc Giang - Cử Nhân Sư Phạm Toán -Sinh viên lớp 04 B - Khoa Ngữ Văn Anh- Đại Học Khoa Học Xã Hội Và Nhân Văn Thành Phố Hồ chí Minh)

    School@net (Theo THNT)



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 804 - Nhà 17T1 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Phone: 024.62511017 - 024.62511081
    Email: kinhdoanh@schoolnet.vn


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.