1. Trang chủ
  2. » Giáo án - Bài giảng

SKKN Môn Tin học năm học 2009-2010

13 1,4K 29
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 81 KB

Nội dung

Sáng kiến kinh nghiệm các bớc giải bài toán cho lớp bài toán trên máy vi tính trong chơng trình tin học thcs A Đặt vấn đề 1. Lý do Những năm qua, Bộ GD&ĐT đã rất quan tâm đến việc ứng dụng công nghệ thông tin (CNTT) trong lĩnh vực GD-ĐT. Đã chọn năm học 2008 - 2009 là năm học ứng dụng CNTT, các trờng học, các Sở GD&ĐT đợc kết nối mạng Internet tốc độ cao, đó là những thuận lợi quan trọng mà những năm học trớc không thể có đợc. Giờ đây, phần lớn giáo viên, học sinh, nhà quản lý giáo dục có cơ hội đợc sử dụng CNTT, đợc khai thác những chơng trình, phần mềm phục vụ cho công tác quản lý, giảng dạy, học tập, nghiên cứu . Là một giáo viên tin học, một trong các mục tiêu khi dạy môn tin học trong nhà trờng là nhằm giúp học sinh không chỉ biết soạn thảo mà còn phải có khả năng phân tích, tổng hợp, trừu tợng hoá, khái quát hoá vấn đề và đặc biệt là phát triển t duy, sáng tạo. Từ năm học 2006-2007 đến nay đã có bộ sách giáo khoa Tin Học dành cho trung học cơ sở ở bậc THCS. Vì thế mà trong bài viết này tôi sẽ hớng cho học sinh lớp 8 cách để trở thành một nhà lập trình thì cần phải nắm các bớc cơ bản nào? 2. Cơ sở thực tiễn Trong quá trình dạy tôi nhận thấy ở các em học sinh. Mới đầu các em cũng rất sợ khi thấy giải một bài toán ở ngoài thì đơn giản và chỉ trong vòng vài giây có thể nhẩm ra kết quả. Còn ở trong lập trình cũng bài toán đó mà phải làm đến hàng chục phút mà lại có thể cho kết quả sai. Song bằng những tâm huyết của mình và cũng nh sự yêu thích của học sinh. Nhất là hai năm nay nghành giáo dục có phát động phong trào giải toán trên mạng (Violympic) cũng nh thành lập đội tuyển tham dự các kì thi Tin học trẻ Tỉnh Nghệ An đợc tổ chức quy mô hàng năm. Điều đó đã thúc đẩy tôi rất nhiều trong việc dạy học là làm sao giúp cho các em có sự đam mê học tập bộ môn tin học và phát triển tài năng của học sinh trong việc đào tạo nhân tài cho đất nớc. Ngôn ngữ lập trình PASCAL là một phần mềm có cấu trúc và rất đợc nhiều độc giả quan tâm và cũng chính đó cũng có nhiều cuốn sách do nhiều tác giả viết. Song với bản thân tôi khi lựa chọn viết đề tài này là muốn đa ra: các bớc giải bài toán cho lớp bài toán trên máy vi tính trong chơng trình tin học thcs 1 Sáng kiến kinh nghiệm B- Giải quyết các vấn đề Phơng pháp cơ bản giải các bài toán trong tin học không chỉ dùng để giải một bài toán cụ thể mà còn giải 1 lớp các bài toán cụ thể thuộc cùng một loại. Bài toán đợc cấu tạo từ hai yếu tố cơ bản: Thông tin vào (Input) và thông tin ra (Output). Phơng pháp tổng quát để giải một bài toán bằng máy vi tính dựa trên ngôn ngữ pascal thì cần các bớc : 1. Xác định các bài toán. 2. Tìm thuật toán 3. Viết chơng trình 4. Chạy thử, sửa đổi chơng trình I- Xác định bài toán 1. Khái niệm bài toán Trong quá trình học ngời học sinh hay bất kỳ một cá nhân nào 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 mà nhiều lúc phải bực mình. Song đối với học sinh lớp 8 do chơng trình học toán của các em chỉ mới đến giải phơng trình bậc nhất là cao nhất. Nên việc đa các lớp 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ế. Nhng 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. - 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 chuỗi các thao tác thực hiện từ A đến B. 2. Bài toán trên máy vi tính Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quát trên, nhng 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 Sáng kiến kinh nghiệm 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: Chiều dài là cạnh a, chiều rộng là cạnh b + Thông tin ra: Kết quả diện tích khi đa a,b vào + Các thông tin cần chế biến thông tin 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 các định bài toán: + Xác định thông tin vào: hai số tự nhiên a, b + Xác định thông tin ra: 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 Ví dụ 3: Tìm tất cả các số nguyên tố trong các số nguyên N đợc nhập vào từ bàn phím: + Xác định thông tin vào: Nhập số nguyên N +Xácđịnh thông tin ra: Các số nguyên tố ( chia hết cho nó và số 1) II- Tìm thuật toán Thuật toán là một quá trình gồm một dãy hữu hạn các thao tác đơn giản đợc sắp xếp theo một trình tự xác định sao cho theo đó từ Input của bài toán sẽ tìm ra đ- ợc Output bài toán . Một bài toán ta có 4 cách thể hiện thuật toán: Các bớc xác định bằng lời, lập sơ đồ khối, ngôn ngữ phỏng trình, dùng một ngôn ngữ lập trình (Pascal). Ví dụ: Tìm ớc số chung lớn nhất của 2 số nguyên dơng a,b . ta có thể giải bằng các cách trên Cách 1: Các bớc xác định bài toán bằng lời: - Bớc 1: Nhập 2 số nguyên dơng là a,b - Bớc 2: So sánh giá trị a và b . Nếu a bằng b thì sang bớc 3, ngợc lại a khác b thì sang bớc 4 3 Sáng kiến kinh nghiệm - Bớc 3: Tìm đợc ớc số chung là a và kết thúc chơng trình - Bớc 4: Nếu a lớn hơn b thì ớc số chung lớn nhất là a và quay trở lại bớc 2. Ngợc lại ớc số chung là b và quay trở lại bớc 2 Cách 2: Giải bài toán bằng sơ đồ - Có hình thoi thể hiện các thao tác so sánh - Hình chữ nhật thể hiện các phép tính toán, các câu lệnh - Hình ôvan thể hiện bắt đầu và kết thúc - Các mũi tên quy định trình tự các thao tác a=b đúng sai Đúng Sai a<>b Cách 3: Dùng ngôn ngữ phỏng trình Bắt đầu Nhập a, b While a khác b IF a>b then thay a :=a -b Else thay b:=b-a; Kết thúc in ra USCLN (a,b) . 4 Begin a, b UCLN là a EN D b:= b - a a:= b - a Sáng kiến kinh nghiệm Cách 4: Viết chơng trình hoàn chỉnh (dùng ngôn ngữ pascal) PROGRAM USCLN; USES CRT; VAR a,b, :integer; BEGIN CLRSCR; WRITE('nhap 2 gia tri m,n=');READLN(a,b); WHILE m<>n DO IF a>b THEN a:=a b else b:=b-a; WRITELN('uoc so chung lon nhat cua 2 so ,a:5); READLN END. III- Viết chơng trình Lập trình là dùng ngôn ngữ máy vi tính cụ thể nào (ngôn ngữ Pascal) để diễn tả thuật toán, cấu trúc dữ liệu thành câu lệnh để máy tính có thể thực hiện đợc và giải quyết đúng bài toán mà ngời lập trình mong muốn. 1. Kỹ năng lập trình - Rèn luyện đợc cho học sinh kỹ năng cài đặt thành công các thuật toán bằng một ngôn ngữ lập trình. - Đã gọi là kỹ năng thì chỉ có thể có đợc thông qua rèn luyện tích cực. - Kinh nghiệm cho thấy một thuật toán do sắp đặt vụng về, lộn xộn thì khi chạy trên máy tính có thể cho kết qủa tồi tệ. 2. Phát triển chơng trình bằng cách tinh chế từng bớc Một bài toán ta có thể đa ra nhiều cách giải khác nhau, song là một giáo viên thì chúng ta cần giúp học sinh viết chơng trình làm sao ngời xem nhìn vào có thể dễ hiểu đợc bài toán đó là gì ? Do đó việc tinh chỉnh các bớc cho bài toán trong máy tính là phơng pháp khoa học, có hệ thống giúp ta phân tích các thuật toán và cấu trúc dữ liệu từ đó thành một chơng trình . Muốn lập trình giỏi không phải chỉ cần nắm ngôn ngữ lập trình là đủ. Mà vấn đề cốt yếu là biết phơng pháp phát triển dần dần để chuyển các ý tởng ra thành chơng trình hoàn chỉnh. 3. Phơng pháp tinh chế từng bớc Một chơng trình bắt đầu đợc viết bằng lời tự nhiên (tiếng Việt) thể hiện sự phân tích tổng thể của ngời lập trình đợc thể hiện 5 Sáng kiến kinh nghiệm ở từng bớc sau các câu lệnh đợc phân tích chi tiết hơn, bằng những lời khác nhau tơng ứng với sự phân tích công việc thành các việc nhỏ chi tiết hơn dễ hiểu và chính xác hơn. Song ngôn ngữ lập trình pascal ngời lập trình có thể đa ra phơng pháp tinh chỉnh từng bớc là thể hiện t duy giải quyết vấn đề bài toán từ trên xuống trong đó các bớc là hớng về ngôn ngữ lập trình làm sao cho bài toán đa ra đợc phơng pháp lập trình tối u, sáng sủa. 4. Ví dụ Tìm tất cả các số nguyên tố trong các số nguyên N đợc nhập vào từ bàn phím a a. Tinh chế lần 1 - Lấy 2 tập NT= [ ] (để chứa các số nguyên tố tìm đợc) S = [2, N] (tập các số cần xét ) - Tìm số đầu tiên trong S đa vào NT - Loại bỏ khỏi S các bội số của số nguyên tố vừa tìm đợc - Số đầu tiên còn lại của S là số nguyên tố. Tiếp tục quá trình cho đến khi S=[] - Xuất NT b. Tinh chế lần 2 Bắt đầu NT: = [ ] S = [2, N] Repeat Tìm số đầu tiên trong S NT:= NT+ [S 0 ] Loại khỏi S các bội số của S 0 Until S=[ ]; Xuất NT; Kết thúc; c. Tinh chế lấn 3 ( chơng trình hoàn chỉnh) Program nguyen_to; Const N=100; Type nguyen=1 N; var 6 Sáng kiến kinh nghiệm NT, S:set of nguyen; S0,I:integer; begin NT:=[]; S:=[2 N];S0:=2; repeat while not (S0 in S) do S0:=S0+1; NT:=NT+[S0];I:=S0; While I<=N do Begin s:=S-[i];I:=I+S0; End; until S=[]; for I:= 1 to n do If I in Nt then Write(I:4); readln end. d. Tinh chế lần 4. Rõ ràng cấu trúc dữ liệu tập hợp Set of nguyen tuy dễ hiểu nh- ng rất cồng kềnh và làm máy chạy chậm chạp, ta có thể dùng mảng Boolean linh hoạt hơn nh sau: Program nguyen_to; Const N=100; var a:array[1 N] of boolean; i,j:integer; begin a[1]:=false; for i:=2 to N do a[i]:=true; for i:= 2 to N div 2 do for j:= 2 to N div i do a[i*j]:=false; for i:= 1 to N do if a[i] then write(i:3); readln end. e. Tinh chế lần 5 7 Sáng kiến kinh nghiệm Trong ngôn ngữ pascal nếu dùng mảng boolean thì ta bị giới hạn N<10000. Để có thể chạy với số lớn hơn ta không dùng mảng , tập hợp mà dùng nh sau: Program nguyen_to; uses crt; var i,j,k,n:integer; begin repeat write('nhap n=');readln(n); until n>= 2; for i:= 2 to n do begin k:=0; for j:= 2 to trunc(sqrt(i)) do if i mod j=0 then k:= 1; if k=0 then write(i:3); end; readln end. Nh vậy. Là kỹ năng lập trình, ngời lập trình có thể tinh chỉnh chơng trình từng bớc làm sao đa ra một phơng án tối u cho ngời xem dễ tiếp thu và đạt đợc tốc độ tính toán cao nhất cũng nh chiếm bộ nhớ của máy tính càng ít càng tốt. IV- Chạy Thử, thay đổi, kiểm tra chơng trình 1. Chạy thử Một chơng trình đã viết xong cha chắc đã chạy đợc trên máy vi tính để cho kết quả mong muốn. Ví dụ: Tìm số lớn nhất trong 3 số a,b,c nguyên dơng đợc nhập vào từ bàn phím. Lần 1: Program tim_so; uses crt; var a,b,c:integer; begin clrscr; write('nhap 3 so=');readln(a,b,c); if a<b then a:=b else if a<c then a:=c; write('so lon nhat la ',a); readln 8 Sáng kiến kinh nghiệm End. Với chơng trình này cũng chạy đợc song đáp số có lúc đúng, có lúc sai tuỳ thuộc vào lúc nhập giá trị a,b,c {nếu ta nhập thứ tự a=5,b=7,c=9. Thì sẽ cho ta kết quả số lớn nhất là 7 . Vậy thì sai hoàn toàn} Do đó ngời lập trình cần phải biết cách tìm lỗi. Sữa lỗi, điều chỉnh viết lại ch- ơng trình cũng là kỹ năng quan trọng của ngời lập trình. Vậy với dụ trên để kết quả luôn đúng thì ta có thể viết lại chơng trình Lần 2: Program tim_so; uses crt; var a,b,c,t:integer; begin clrscr; write('nhap 3 so=');readln(a,b,c); t:=a; if t<b then t:=b; if t<c then t:=c; write('so lon nhat la ',t); readln End. Nếu nhập: Lần nhập A B C Kết quả 1 5 4 7 7 2 5 7 9 9 3 9 3 5 9 2. Phân loại lỗi và cách sửa lỗi - Lỗi về thuật toán: Điều chỉnh lại thuật toán, thêm vị trí có thể, loại bỏ thuật toán sai, tìm thuật toán khác nghĩa là làm lại từ đầu. Ví dụ 1: viết chơng trình tính tổng S= n 1 3 1 2 1 1 ++++ (n đợc nhập vào từ bàn phím) Học sinh viết chơng trình khai báo biến S thuộc kiểu dữ liệu nguyên (Integer) thì chơng trình sẽ không thực hiện đợc phép toán tính tổng. Do vậy để thực hiện đợc phép toán thì khai báo biến S là thuộc kiểu dữ liệu thực (Real). 9 Sáng kiến kinh nghiệm - Lỗi về trình tự: Phải xem lại thuật toán, phân tích lại từ trên xuống dới để đặt lại cho đúng với thuật toán. Ví dụ 2: Viết chơng trình giải phơng trình bậc nhất ax+b=0 với a,b đợc nhập vào từ bàn phím. program ptb1; var a,b:real; begin write('nhap cac he so=');readln(a,b); if a<>0 then writeln('moi so deu la nghiem'); else if b=0 then writeln('phuong trinh co nghiem',-b/a:4:2) else writeln('phuong trinh vo nghiem') readln end. Với chơng trình trên hoàn toàn có thể chạy đợc song kết quả sẽ không đúng khi nhập dữ liệu a, b vào . Do vậy ta phải sắp xếp lại thuật toán để cho một kết quả đúng nh yêu cầu : program ptb1; var a,b:real; begin write('nhap cac he so=');readln(a,b); if a<>0 then if b=0 then writeln('phuong trinh vo nghiem') else writeln('phuong trinh co nghiem',-b/a:4:2) else writeln('moi so deu la nghiem'); readln end. 10 [...]... dạy học tin ở các trờng phổ thông và là một giáo viên tin học tôi muốn nói rằng chúng ta không chỉ dạy lý thuyết suông mà cần phải biết kết hợp thực hành Để từ đó học sinh mới nhận thấy đợc u điểm của việc học chơng trình này có lợi hơn ở điểm nào Kết quả áp dụng thực hiện cho thấy năm học Cha đa vào 2002-2003 1/1 HS giỏi tỉnh ( giải 2 kỳ thi tin học trẻ) 2003-2004 1/1 HS giỏi tỉnh ( giải 2 kỳ thi tin. .. giải 2 kỳ thi tin học trẻ) 2007-2008 đa vào 2/2 HS giỏi tỉnh ( giải 2 kỳ thi tin học trẻ) Tóm lại đây là chơng trình học khá mới mẻ, các bài toán đa ra để xây dựng một chơng trình cha có gì lạ phức tạp Bởi có nhiều bài hay thì học sinh lớp 8 cha học đến Cho nên giáo viên cần phải nắm chắc các phơng pháp để truyền đạt Đồng 12 Sáng kiến kinh nghiệm thời cũng phối hợp chơng trình toán đã học đến những phần... đến những phần nào để từ đó đa ra các ví dụ, bài tập để học sinh có thể nắm chắc lý thuyết cũng nh thực hành trên máy tính dễ tiếp thu Và để từ đó các em rút ra đợc u điểm của các chơng trình này so với cách tính tay ở chỗ nào Bản thân tôi mong muốn góp một phần nhỏ bé của mình vào sự nghiệp giáo dục Bởi đây là môn học khá mới mẻ với tất cả các học sinh THCS Tuy đã đợc đúc rút từ kinh nghiệm giảng dạy... cộng cho dãy số - Nhập vào mảng của dãy số từ bàn phím Từ đó ta có thể tìm giá trị lớn, nhỏ của mảng, trung bình độ dài của mảng, điểm của học sinh Vậy là một ngời lập trình bạn cần nắm đợc các tiêu chuẩn của một chơng trình từ giúp bài toán có một kết quả tốt - Tính tin cậy: có một giải thuật đúng - Tính uyển chuyển: chơng trình có thể sửa đổi - Tính trong sáng: dễ đọc, dễ hiểu 11 Sáng kiến kinh nghiệm... sáng: dễ đọc, dễ hiểu 11 Sáng kiến kinh nghiệm - Tính hữu hiệu: chạy chơng trình nhanh và tốn ít dung lợng bộ nhớ về không gian và thời gian Tóm lại: Quá trình xây dựng chơng trình là một chuỗi các bớc tinh chế ở mỗi bớc đợc phân ra nhiều công việc con để từ đó đa ra đợc phơng pháp tối u Song ngời lập trình cần rèn luyện để có ý thức về các quyết định liên quan và biết khảo sát nghiêm túc cũng nh từ... đúng bài toán mà ta mong muốn nhng cha có nghĩa là quá trình lập trình đã xong Mà ngời lập trình muốn nó ở đây ta có thể sửa đổi nó theo một hớng khác mà nó có thể đáp ứng đợc một yêu cầu mới Nh phần tinh chế một chơng trình là rất quan trọng cho việc sửa chữa chơng trình cũ sang chơng trình mới Ví dụ: - Nhập 3 số a,b,c kiểm tra xem 3 số đó có thể là độ dài của các cạnh một tam giác hay không Từ đó... quá trình thực hiện bài viết này sẽ không tránh khỏi những thiếu sót Rất mong nhận đợc sự góp ý bổ ích của các thầy cô giáo và các bạn đồng nghiệp để bài viết đợc hoàn thiện hơn./ Xin cảm ơn! Tháng 5 năm 2010 Ngời viết nguyễn lê thông lê thị thanh hoàn 13 . lý, giảng dạy, học tập, nghiên cứu . Là một giáo viên tin học, một trong các mục tiêu khi dạy môn tin học trong nhà trờng là nhằm giúp học sinh không. tạo. Từ năm học 2006-2007 đến nay đã có bộ sách giáo khoa Tin Học dành cho trung học cơ sở ở bậc THCS. Vì thế mà trong bài viết này tôi sẽ hớng cho học sinh

Ngày đăng: 26/09/2013, 19:10

HÌNH ẢNH LIÊN QUAN

- Có hình thoi  thể hiện các thao tác so sánh - SKKN  Môn Tin học năm học 2009-2010
h ình thoi  thể hiện các thao tác so sánh (Trang 4)

TỪ KHÓA LIÊN QUAN

w