1. Trang chủ
  2. » Luận Văn - Báo Cáo

SKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặp

25 6 0

Đ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

Tiêu đề Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặp
Trường học Trường Trung học phổ thông Lạng Giang số 1
Chuyên ngành Môn Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2019
Thành phố Lạng Giang
Định dạng
Số trang 25
Dung lượng 107,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặpSKKN Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấu trúc rẽ nhánh và cấu trúc lặp

Trang 1

Độc lập- Tự do- Hạnh phúc

THUYẾT MINH MÔ TẢ GIẢI PHÁP

VÀ KẾT QUẢ THỰC HIỆN SÁNG KIẾN

1 Tên sáng kiến: Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh quacấu trúc rẽ nhánh và cấu trúc lặp

2 Ngày sáng kiến được áp dụng lần đầu: 09/2019

3 Các thông tin cần bảo mật (nếu có): Không

4 Mô tả các giải pháp cũ thường làm: Trước khi áp dụng giải pháp này thì bản thân tôi chưa xây dựng được hệ thống bài tập phù hợp với nhiều đối tượng học sinh Hạn chế khi chưa áp dụng giải pháp là học sinh tiếp cận với việc lập trình chậm, mất nhiều thời gian hơn trong việc làm các bài tập và giải quyết các bài toán 1 cách khó khăn, học sinh không hứng thú khi học Tin học

Khi chưa áp dụng giải pháp học sinh thường lúng túng trong việc tìm kiếm các thuật toán phù hợp với bài toán cơ bản.

5 Sự cần thiết phải áp dụng giải pháp sáng kiến: Sau một thời gian áp dụng giảipháp này tôi nhận thấy kỹ năng lập trình của các em tăng lên đáng kể, có hứng thúhọc tập hơn Nhiều học sinh đã biết vận dụng các thuật toán của các bài toán cơ bản

đã biết để giải quyết các bài toán mở rộng Học sinh thấy yêu thích môn Tin học hơn

6 Mục đích của giải pháp sáng kiến: Sáng kiến này giúp học sinh có hứng thú trong học tập môn Tin học, đặc biệt là đối với việc rèn luyện kỹ năng lập trình để giải quyết các bài toán trong Tin học Ngoài ra khi được rèn luyện kỹ năng lập trình với các bài toán cơ bản, học sinh sẽ có hứng thú tiếp tục tìm hiểu và giải quyết các bài toán khác khó hơn.

Trang 2

- Sáng kiến giúp cho giáo viên, cũng như học sinh có tư duy linh hoạt trong việc lựa chọn, tìm kiếm và rèn luyện kỹ năng lập trình để phát triển năng lực tư duy Sáng kiến còn giúp cho học sinh thấy yêu thích môn Tin học.

- Sáng kiến giúp cho giáo viên, học sinh có thêm hệ thống bài tập ở các chủ đề

về cấu trúc rẽ nhánh, cấu trúc lặp.

- Việc học sinh được rèn luyện kỹ năng lập trình ở các bài toán cơ bản sẽ phát triển được phẩm chất, năng lực của học sinh, giúp các em có tư duy tốt hơn khi học tập các môn khác như Toán học, khoa học tự nhiên Và giúp các em có được những kết quả cao hơn trong các kỳ kiểm tra, kỳ thi.

7 Nội dung:

7.1 Thuyết minh giải pháp mới hoặc cải tiến

Môn Tin học đã được đưa vào các trường THPT trong phạm vi cả nước là mộtmôn học bắt buộc Khi mới làm quen với môn Tin học, học sinh tỏ ra rất hào hứng vìđây là môn học rất bổ ích, hiện đại và mang tính thực tế cao Tuy nhiên, khi họcsang Tin học 11 thì học sinh lại có thái độ thờ ơ trong việc học cũng như vận dụngTin học vào cuôc sống hằng ngày vì khi làm quen với việc lập trình học sinh thấykhó khăn Xuất phát từ thực tế giảng dạy bộ môn Tin học ở trường THPT LạngGiang số 1 tôi luôn đặt ra câu hỏi tại sao một môn học có tính tư duy cao, mới mẻ,hấp dẫn vậy mà không thu hút được học sinh tiếp thu bài và vận dụng vào cuộcsống Tuy nhiên trong cùng một trường với các đối tượng học sinh khác nhau giáoviên có thể áp dụng nhiều biện pháp khác nhau để rèn luyện kỹ năng lập trình để đạtkết quả tốt Các giáo viên đều hướng dẫn cho học sinh biết một bài toán có thể giảiđược với nhiều thuật toán khác nhau và mỗi thuật toán chỉ giải được một bài toánhoặc một lớp bài toán, nhưng thực tế cho thấy đứng trước một bài toán tin học họcsinh thường lúng túng khi xác định thuật toán hoặc không xác định đươc thuật toán,việc này có thể do nhiều nguyên nhân … Tuy nhiên khi cho một bài toán tin học códạng cơ bản nào đó trong sách giáo khoa, hoặc bài toán cơ bản nào đó mà các em

Trang 3

biết thì các em có thể xây dựng vàg hứng thú để xây dựng thuật toán cho bài toán đặt

ra Vì vậy giáo viên có thể chọn các bài toán cơ bản để học sinh hứng thú, phát triển

để rèn luyện kỹ năng lập trình cho học sinh Dĩ nhiên cách làm này không mới vớigiáo viên nhưng cách chọn các bài toán cơ bản như thế nào để học sinh có thể vậndụng và rèn luyện kỹ năng lập trình đó lại là điều đáng quan tâm

Giải pháp “Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinh qua cấutrúc rẽ nhánh và cấu trúc lặp” tôi muốn trình bày kinh nghiệm trong việc rèn luyện

kỹ năng lập trình cơ bản cho học sinh khi học môn Tin học 11

7.2 Giải pháp:

- Tên giải pháp: Rèn luyện kỹ năng lập trình Môn Tin học 11 cho học sinhqua cấu trúc rẽ nhánh và cấu trúc lặp

- Nội dung:

A Các bước tiến hành thực hiện giải pháp

1 Xây dựng hệ thống bài tập để rèn luyện kỹ năng lập trình thông qua các buổi học,mỗi buổi học nên chọn một số bài toán cơ bản để học sinh tiếp xúc và làm quen vớiviệc lập trình

Bước 1: Chọn bài toán cơ bản hoặc bài toán quen thuộc với học sinh

Bước 2: Xây dựng thuật toán cơ bản (Chỉ cần học sinh lập trình được mà chưa cầnquan tâm đến các yếu tố như dữ liệu, phạm vi giá trị của biến, thời gian chạy chươngtrình …)

Bước 3: Xây dựng thuật toán ở mức cao hơn (Quan tâm đến các yếu tố như: Dữ liệu,phạm vi giá trị của biến, thời gian chạy chương trình …)

2 Tổ chức cho học sinh hình thành kỹ năng lập trình thông qua các buổi thực hành có

sự hướng dẫn của giáo viên tại phòng máy

3 Tổ chức kiểm tra để thu thập thông tin về khả năng rèn luyện kỹ năng lập trình củahọc sinh

Trang 4

B Nội dung của sáng kiến này được triển khai thông qua các buổi học trực tiếp trên lớp

Trong chương trình Tin học lớp 11, chúng ta có thể sử dụng một số hệ thốngbài tập cơ bản sau để rèn luyện kỹ năng lập trình cho học sinh:

1 Các bài toán làm quen với câu lệnh gán

Cú pháp câu lệnh gán trong Pascal:

<tên biến>:= <Biểu thức>;

Trong đó: tên biến là tên của biến đơn, kiểu của giá trị biểu thức phải phù hợp với

kiểu của biến

Chức năng: đặt cho biến có tên ở vế trái dấu “:=” giá trị mới bằng giá trị của biểu

thức ở về phải

VD: x1:=(-b-sqrt(b*b-4*a*c))/(2*a);

Chú ý: biến kiểu thực có thể nhận giá trị kiểu nguyên và biến kiểu xâu có thể nhận

kiểu kí tự, ngược lại thì không.

Trước tiên cho học sinh thấy được cái hay trong phép gán của tin học, qua một số bài tập này chắc chắn ta sẽ phát huy được tính kích thích, hăng say của các học sinh mà chưa từng được học về tin lập trình:

Bài toán 1 Viết chương trình tráo đổi giá trị giữa hai biến a và b.

Trang 5

Đoạn chương trình không dùng biến trung gian sau là sai vì giá trị ban đầu củabiến a bị mất, khi đó a = b và nhận giá trị ban đầu của b:

Trang 6

b := a;

a := a*a; { ta có a2 }

a := a*a; { ta có a4 }

b := b*a; { ta có a5 }writeln(‘a mu 5= ’, b);

a := a*a*b; { ta có a13 }writeln(‘a mu 13= ’, a);

Bài toán 4 Cho a, viết chương trình tính a4 , a12 và a28 với yêu cầu không đượcdùng quá sáu phép toán

Trang 7

Dạng thiếu

if <điều kiện> then <Câu lệnh1>;…

Nếu điều kiện đúng thì thực hiện <câu lệnh 1>;

Dạng đủ

if <điều kiện> then <Câu lệnh1> Else <Câu lệnh2>;

Nếu điều kiện đúng thì thực hiện <câu lệnh1> ngược lại thực hiện <câu lệnh2> ;

* Cú pháp câu lệnh lặp

· Trong lập trình, có những thao tác phải lặp lại nhiều lần, khi đó ta gọi là cấu trúc lặp.Lặp thường có 2 loại:

- Lặp với số lần biết trước

- Lặp với số lần chưa biết trước

Cấu trúc lặp với số lần biết trước và câu lệnh for-do.

· Lặp dạng tiến:

for <biến đếm> := <giá trị đầu>

to <giá trị cuối> do <câu lệnh> ;

· Lặp dạng lùi:

for <biến đếm> := <giá trị cuối>

downto <giá trị đầu> do <câu lệnh> ;

Trang 8

Trong đó:

+ Biến đếm thường là biến kiểu nguyên.

+ Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm Giá trị đầu phải nhỏ hơn hay bằng giá trị cuối.

+ Ở dạng lặp tiến: biến đếm tự tăng dần từ giá trị đầu đến giá trị cuối

+ Ở dạng lặp lùi: biến đếm tự giảm dần từ giá trị cuối đến giá trị đầu

+ Tương ứng với mỗi giá trị của biến đếm, câu lệnh sau do thực hiện 1 lần.

Cấu trúc lặp với số lần chưa biết trước và câu lệnh while-do.

Cú pháp:

while <điều kiện> do <câu lệnh> ;

Trong đó:

- Điều kiện là biểu thức quan hệ hoặc logic.

- Câu lệnh là một câu lệnh trong Pascal.

- Ý nghĩa: Khi điều kiện còn đúng thì còn thực hiện câu lệnh sau do, sau đó lại quay

lại kiểm tra điều kiện.

Qua nội dung lý thuyết về cấu trúc rẽ nhánh và cấu trúc lặp Giới thiệu với

học sinh định lí Bohn Jacopini: Mọi quá trình tính toán đều có thể mô tả và thực

hiện dựa trên ba cấu trúc cơ bản là cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp Vậy qua đó học sinh sẽ cần nắm chắc việc sử dụng cấu trúc tuần tự, cấu trúc rẽ

nhánh và cấu trúc lặp để giải quyết các bài toán trong Tin học

Sau khi học sinh hiểu ý nghĩa và vận dụng thành thạo lệnh gán ta hình thành cho học sinh biết cách tư duy để giải và tối ưu các bài toán chỉ sử dụng hai cấu trúc cơ bản là: cấu trúc rẽ nhánh và lặp.

Bài toán 5 Cho hai số a, b Viết chương trình tìm số lớn nhất.

Phương pháp giải:

Cách 1: Sử dụng câu lệnh If Then dạng thiếu

Trang 9

If a> b then writeln(‘a la so lon nhat’);

If b>a then writeln(‘b la so lon nhat’);

Cách 2: Sử dụng câu lệnh If then dạng đủ

If a>b then writeln(‘a la so lon nhat’)

Else writeln(‘b la so lon nhat’);

Khi sử dụng 2 cách trên học sinh sẽ biết được cách sử dụng cấu trúc lệnh rẽnhánh ở 2 dạng cơ bản: dạng thiếu và dạng đủ

Bài toán 6 Cho ba số a, b, c Viết chương trình tìm số lớn nhất và nhỏ nhất

trong ba số

Phương pháp giải:

Cách 1: Sẽ sử dụng các thông thường mà học sinh hay làm

If (a>b)and(a>c) then writeln(‘a la so lon nhat’);

If (a<b)and(a<c) then writeln(‘a la so nho nhat’);

If (b>a)and(b>c) then writeln(‘b la so lon nhat’);

If (b<a)and(b<c) then writeln(‘b la so nho nhat’);

If (c>b)and(c>a) then writeln(‘c la so lon nhat’);

If (c<b)and(c<a) then writeln(‘c la so nho nhat’);

Ở cách này học sinh sẽ hiểu về cấu trúc rẽ nhánh trong lập trình

Cách 2: Sử dụng thuật toán tối ưu hơn dùng biến Min và biến Max

Max: = a; Min:=a;

If b>Max then Max:= b;

Trang 10

If c>Max then Max:=c;

If b<Min then Min:=b;

If c<Min then Min:=c;

Sau khi thực hiện cách 2 học sinh sẽ hiểu hơn về cách sử dụng cấu trúc rẽnhanh trong lập trình

Bài toán 7 Viết chương trình giải bất phương trình bậc 1 (ax + b >0)

Phương pháp giải: Dựa vào kiến thức giải phương trình bậc 1 trong toán học.

Học sinh có thể đưa ra thuật toán biện luận giải bài toán Bài toán này là bài toán cơbản giúp học sinh làm quen với cấu trúc rẽ nhánh

Bài toán 8 Viết chương trình giải phương trình (ax2 + bx + c =0)

Phương pháp giải: Sau khi học sinh rèn luyện khả năng lập trình với bài toán

giải phương trình bậc 1 Bài toán này sẽ là bài toán cơ bản phát triển khả năng lậptrình của học sinh với mức độ khó hơn Học sinh sẽ dùng câu lệnh rẽ nhánh dạng đủ

để giải quyết

If a=0 then

If b=0 then

If c=0 then

Trang 11

Writeln('Phuong trinh co vo so nghiem')

Else Writeln('Phuong trinh vo nghiem')

Else Writeln('Phuong trinh co mot nghiem: x=',-c/b: 4: 2)

Else

Begin

d:=b*b-4*a*c;

If d=0 then Writeln('Phuong trinh co nghiem kep: x=',-b/(2*a): 4: 2) Else

if d<0 then Writeln(‘phuong trinh vo nghiem’)Else

Bài toán 9 Viết chương trình nhập ba số dương bất kỳ, kiểm tra ba số vừa nhập có

phải là ba cạnh của tam giác không? Nêu phải thì tính chu vi và diện tích của tam giácđó

Phương pháp giải: Trong Toán học học sinh đã biết điều kiện cần và đủ để ba

số là chiều dài ba cạnh của một tam giác, biết cách tính chu vi và diện tích của tamgiác khi biết chiều dài ba cạnh Qua bài toán này học sinh sẽ thực hiện tốt cấu trúc rẽnhánh vào lập trình

If(a+b>c) And(a+c>b) And(b+c>a) then

Trang 12

Begin

Cv:=a+b+c; p:=c/2; s:=sqrt(p*(p-a)*(p-b)*(p-c));

Writeln(‘ba so vua nhap la ba canh cua tam giac’);

Writeln(‘ chu vi cua tam gia la’, cv: 4: 2, ‘ dien tich cua tam giac la’,s:6:2);

End

Else Writeln(‘ba so vua nhap khong phai la ba canh cua tam giac’);

Bài toán 10 Viết chương trình nhập vào số nguyên dương N từ bàn phím Sử dụng

câu lệnh lặp FOR tính tổng sau: S= 1+

Phương pháp giải: Đây là bài toán có trong sách giáo khoa và học sinh cũng

đã được làm quen thông qua các ví dụ nên dễ dàng lập trình được:

S:=0;

For i:=1 to N do S:=S + 1/i;

Writeln(‘Tong = ‘, S:10:2);

Từ bài toán này ta yêu cầu học sinh làm bài tập 2 như sau:

Bài tập 11: Sửa lại chương trình ở bài tập 1 nhưng sử dụng câu lệnh lặp WHILE tính

Trang 13

biến không dùng đến (cách làm này rất tiết kiệm thời gian vì chương trình bài 2 mởrộng từ bài 1).

+ Ở bài này với học sinh khá, giỏi ở một số trường có chất lượng điểm đầu vào cao cóthể giải quyết đơn giản, còn học sinh ở một số trường có điểm đầu vào thấp thì họcsinh có thể băn khoăn ở việc tìm điều kiện của vòng lặp WHILE, đến đây giáo viên cóthể hướng dẫn cách chuyển đổi từ vòng lặp For–To-Do (Bài tập 1) sang vòng lặpWHILE , chẳng hạn:

For i:= <GTđầu> To <Gtcuối> Do

Học sinh sẽ tự mình hoàn thành được chương trình

Bài tập 12: Viết chương trình nhập từ bàn phím số nguyên dương N, tính tổng các

ước thực sự của N và in ra màn hình Ví dụ: N=6 thì tổng các ước là 1+2+3 =6; N=9thì tổng các ước là 1+ 3 =4

Phương pháp giải: Học sinh biết để kiểm tra xem số i có phải là ước của số N

hay không thì dùng phép toán Mod (N mod i = 0), giáo viên chỉ cần hướng dẫn họcsinh duyệt các số i đó trong khoảng từ 1 đến (N div 2) là học sinh có thể làm đượcnhanh chóng, ta sẽ có đáp án của bài này có thể như sau:

Tg:=0;

For i:=1 to N div 2 do

If n mod i =0 then tg:=tg+i;

Trang 14

Writeln(‘Tong cac uoc la= ‘, tg:5);

Giáo viên có thể yêu cầu học sinh nhập một vài giá trị N để xem kết quả Sau đó yêucầu học sinh làm bài tập 13 như sau:

Bài tập 13: Số N được gọi là số hoàn hảo nếu tổng các ước thực sự của N bằng chính

nó Viết chương trình nhập từ bàn phím số nguyên dương N, thông báo ra màn hìnhDUNG nếu N là số hoàn hảo, ngược lại thì thông báo KHONG

Phương pháp giải: Học sinh dễ dàng nhận thấy cách làm bài 2 sẽ tương tự cách

làm bài 1, chỉ thêm một công việc đó là kiểm tra xem tổng các ước đó có bằng N haykhông? Học sinh sẽ nhanh chóng sao chép chương trình bài 12 và sửa lại để đượcchương trình bài 13 như sau:

Tg:=0;

For i:=1 to N div 2 do

If n mod i =0 then tg:=tg+i;

If tg=N then Writeln(‘DUNG’) else writeln(‘KHONG’);

Tương tự như vậy ta sẽ yêu cầu học sinh làm bài tập 14 như sau:

Bài tập 14: Viết chương trình in ra màn hình các số hoàn hảo trong khoảng từ a đến b

(với 1<a<b) Với a, b được nhập từ bàn phím

Phương pháp giải: Giáo viên để cho học sinh tự làm, nếu còn học sinh nào

còn lúng túng thì mới hướng dẫn Tuy nhiên thì với bài 2 đã biết cách làm thì học sinhcũng có thể nhanh chóng hoàn thiện được bài 3 có thể chưa kiểm tra được điều kiệnnhập a,b như sau:

For k:=a to b do

Begin

Trang 15

For i:=1 to K div 2 do

If K mod i =0 then tg:=tg+i;

If tg=K then Writeln(k);

End;

Giáo viên yêu cầu học sinh test với một số bộ dữ liệu tương ứng với các giá trị của a,b

Bài tập 15: Viết chương trình nhập vào hai số nguyên dương a, b bất kỳ, hiển thị ước

chung lớn nhất của hai số và bội chung nhỏ nhất của hai số đó

Phương pháp giải: Học sinh dựa vào kiến thức ước chung lớn nhất và bội

chung nhỏ nhất của 2 số được học trong Toán học để giải bài toán

While (a<>b) do Begin

If a>b then a:=a-b else b:=b-a;

End;

uc:=a; bc:=(a*b)/uc;

Writeln(‘uoc chung lon nhat cua ‘,a,’ va ’,b,’ la ‘,uc);

Writeln(‘boi chung nho nhat cua ‘,a,’va ’,b,’ la ‘,bc);

Bài tập 16: Tính hàm lũy thừa an ở đây a thực và n tự nhiên được nhập vào từ bànphím

Phương pháp giải:

i:=1; giatri:=1;

While i <= n Do Begin

Ngày đăng: 20/12/2022, 11:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w