1. Trang chủ
  2. » Giáo Dục - Đào Tạo

SKKN biện pháp dạy học cấu trúc rẽ nhánh trong chương trình tin học lớp 11 thông qua một số bài tập tiêu biểu

21 80 0
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 21
Dung lượng 174 KB

Nội dung

Cấu trúc Lặp với sốlần biết trước là một cấu trúc quan trọng nhất trong các cấu trúc cơ bản của ngônngữ lập trình Pascal mà học sinh bắt buộc phải nắm được nếu muốn làm bài tập về lập tr

Trang 1

MỤC LỤC

Trang

I MỞ ĐẦU

1 Lý do chọn đề tài: 1

2 Mục đích nghiên cứu: 1

3 Đối tượng nghiên cứu 1

4 Phương pháp nghiên cứu 2

5 Những điểm mới của SKKN 2

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

2 Thực trạng của vấn đề nghiên cứu 4

3 Các giải pháp 6

4 Hiệu quả của sáng kiến kinh nghiệm 17

III KẾT LUẬN, ĐỀ XUẤT 1 Kết luận 19

2 Kiến nghị 19

Tài liệu tham khảo 20

Trang 2

I MỞ ĐẦU

1 Lý do chọn đề tài

Công nghệ thông tin là một nghành khoa học phát triển rất mạnh mẽ và cónhiều ứng dụng trong hầu hết các lĩnh vực của cuộc sống Môn Tin học mớiđược đưa vào giảng dạy chính thức trong các trường học nên còn khá mới mẻvới học sinh nói chung và học sinh THPT nói riêng

Trong quá trình giảng dạy môn Tin học cho các em học về ngôn ngữ lậptrình cụ thể là ngôn ngữ lập trình Pascal, là một phần nội dung có thể nói là khónhất trong chương trình tin học THPT Thực tế khi giảng dạy cho các em về câulệnh Lặp với số lần biết trước cụ thể là câu lệnh Lặp với số lần biết trước tôithấy các em còn gặp nhiều khó khăn trong việc xác định các câu lệnh (cú phápcâu lệnh, hoạt động của câu lệnh) cần dùng để giải bài tập Cấu trúc Lặp với sốlần biết trước là một cấu trúc quan trọng nhất trong các cấu trúc cơ bản của ngônngữ lập trình Pascal mà học sinh bắt buộc phải nắm được nếu muốn làm bài tập

về lập trình Pascal Nên ngoài việc dạy cho các em về câu lệnh Lặp với số lầnbiết trước bằng những lý thuyết trong sách giáo khoa tôi còn giảng dạy câu lệnhnày cho các em thông qua một số bài tập tiêu biểu có sử dụng câu lệnh Lặp với

số lần biết trước, nhằm giúp các em nắm vững câu lệnh và hoạt động của câulệnh Lặp với số lần biết trước, qua đó giúp các em yêu thích và hứng thú học tậpmôn Tin học hơn

Trong quá trình giảng dạy câu lệnh Lặp với số lần biết trước ở các lớp tôi đãrút ra được một số bài tập hay khi dạy về câu lệnh này Dưới đây tôi xin trình

bày về sáng kiến: “Biện pháp Dạy học Cấu trúc Rẽ nhánh trong chương trình Tin học lớp 11 thông qua một số bài tập tiêu biểu” Rất mong được sự

tham khảo góp ý của các giáo viên và học sinh về sáng kiến kinh nghiệm này đểgiúp tôi có những bài giảng hay giúp học sinh học tốt môn Tin học hơn

2 Mục đích nghiên cứu

Mục đích nghiên cứu nhằm giúp các em hứng thú hơn với môn Tin học nóichung và lập trình Pascal nói riêng Nhằm giúp cho các em nắm được hoạt động,cấu trúc của câu lện Lặp với số lần biết trước để giải quyết các bài tập liên quan.Qua đó giúp các em giải quyết tốt các bài tập lập trình yêu thích môn học hơn

3 Đối tượng nghiên cứu

Đối tượng học sinh mà tôi trực tiếp giảng dạy là học sinh khối 11 với các lớp11A, 11B, 11C, 11D năm học 2018 – 2019 trường THPH Lê Viết Tạo, huyệnHoằng Hóa, tỉnh Thanh Hóa Là một trường mới được chuyển sang mô hìnhcông lập nên phần lớn các em có lực học trung bình và yếu, cơ sở vật chất cònnhiều thiếu thốn nên việc giảng dạy và học tập còn gặp không ít khó khăn

Trang 3

4 Phương pháp nghiên cứu

Phương pháp nghiên cứu là chỉ ra hoạt động của các loại câu lệnh Lặp với sốlần biết trước thông qua các bài tập tiêu biểu Đưa ra bài tập cho học sinh nghiêncứu hướng dẫn cụ thể từng phần để làm bài tập đó Lập trình giải bài toán trênmáy tính cho học sinh quan sát và thực hành chỉ ra những điểm quan trọng trongbài lập trình Học sinh ghi nhớ những câu lệnh đặc biệt là các câu lệnh Lặp với

số lần biết trước trong chương trình Yêu cầu học sinh chỉ ra cú pháp, hoạt độngcủa các câu lệnh Lặp với số lần biết trước được sử dụng trong chương trình

5 Những điểm mới của SKKN:

Trong sáng kiến này tôi đã vận dụng những kiến thức đã học lý thuyết ở trênlớp vào các bài tập mà tôi lựa chọn là tiêu biểu cho những phần lý thuyết đã họccác bài tập gần gủi với cuộc sống hằng ngày của học sinh, những tính toán suyluận logic gần gủi với môn học của học sinh (môn toán), và các môn học tư duykhác Các bài tập này đã được kiểm nghiệm bằng chương trình thực hành và họcsinh rút ra được những kiến thức bổ ích cho bài học và các chương trình saunày Học sinh tự mình tìm ra thuật toán nào là tối ưu nhất cho bài toán và sau đóthực hiện trên máy từ đó giúp học sinh nâng cao được tư duy lập trình nói chung

và cấu trúc Lặp với số lần biết trước nói riêng

Trang 4

II NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM

1 Cơ sở lý luận của sáng kiến kinh nghiệm

1.1 Một số khái niệm

a Khái niệm lập trình:

Lập trình (programming): Là nghệ thuật cài đặt một hoặc nhiều thuật toántrừu tượng có liên quan với nhau bằng một ngôn ngữ lập trình để tạo ra mộtchương trình máy tính

b Khái niệm ngôn ngữ lập trình:

Ngôn ngữ lập trình (programming language): Là một hệ thống các kí hiệu tuân theo các quy ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng các chươngtrình cho máy tính

 Ngữ pháp (syntax): Quy ước về quan hệ giữa các ký hiệu Ví dụ trongngôn ngữ Pascal: các ký hiệu Begin, end phải đi thành từng cặp, sau if sẽ là mộtbiểu thức điều kiện, sau đó là kí hiệu then

 Ngữ nghĩa (sematics): Quy ước về ý nghĩa của kí hiệu Ví dụ trong

ngôn ngữ Pascal: dấu + biểu thị cho phép cộng, dấu - biểu thị cho dấu trừ …

Phát biểu if … then … có nghĩa là “nếu … thì làm …”

 Chương trình (program): Là một tập hợp các mô tả, các phát biểu, nằmtrong một hệ thống quy ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển máy tính làm việc

c Khái niệm Lặp với số lần biết trước:

Để giải một số bài tập trên máy tính ta thường sử dụng một số cấu trúc điều khiển việc thực hiện lặp lạ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

1.2 Các loại câu lệnh Lặp với số lần biết trước trong ngôn ngữ lập trình pascal

a Câu lệnh Lặp với số lần biết trước dạng tiến:

Cú pháp:

For <biến đếm>:= <Giá trị đầu> to <Giá trị cuối> do <lệnh cần lặp>;

Trong đó:

Biến đếm: Là biến có kiểu nguyên, kí tự hoặc miền con

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

b Câu lệnh Lặp với số lần biết trước dạng lùi:

Trang 5

For <biến đếm>:= <Giá trị cuối> Downto <Giá trị đầu> do <lệnh cần lặp>;

Trong đó:

Biến đếm: Là biến có kiểu nguyên, kí tự hoặc miền con

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

1.3 Sơ đồ khối

a Sơ đồ khối của câu lệnh Lặp với số lần biết trước dạng tiến:

Biến đếm:=Giá trị đầu

Biến đếm <=Giá trị

cuốiĐúng

Lệnh cần lặpBiến đếm tăng 1

Hoạt động:

Sai

Bước 1: Tính giá trị đầu, gán cho biến đếm

Bước 2: - Nếu biến đếm <= giá trị cuối thì thực hiện lệnh cần lặp,tăng biến đếm lên 1 đơn vị, quay lại Bước 2

- Nếu biến đếm > giá trị cuối thì thoát khỏi vòng lặp và chuyển đến câu lệnh tiếp theo

Trang 6

b Sơ đồ khối của câu lệnh Lặp với số lần biết trước dạng lùi:

Biến đếm:=Giá trị cuối

SaiBiến đếm < Giá trị đầu

Đúng

Lệnh cần lặpGiảm biến đếm đi 1

Hoạt động:

Bước 1: Tính giá trị cuối, gán cho biến đếm

Bước 2: - Nếu biến đếm >= giá trị đầu thì thực hiện lệnh cần lặp, giảm biến đếm lên 1 đơn vị, quay lại Bước 2

- Nếu biến đếm < giá trị đầu thì thoát khỏi vòng lặp và chuyển đến câu lệnh tiếp theo

2 Thực trạng của vấn đề nghiên cứu

2.1 Thực trạng chung:

Có thể nói chương trình tin học lớp 11 là một phần nội dung mới và khó nhấttrong chương trình tin học THPT Vì nó đề cập tới nhiều khái niệm mới mẽ đốivới học sinh Học sinh phải kết hợp nhiều kiến thức, kỹ năng ở nhiều lĩnh vựckhác nhau vào để giải bài toán tin học, mặt khác do là trường mới được chuyểnsang mô hình công lập trước đây là trường Bán công nên chất lượng đầu vào củahọc sinh không cao hầu hết lực học ở mức trung bình và yếu, cở sở vật chất cònthiếu thốn nên việc giảng dạy còn gặp nhiều khó khăn Tuy nhiên mọi thứ đềuphải có điểm khởi đầu của nó, với việc học lập trình Pascal nó là điểm khởi đầugiúp học sinh bước đầu tiếp cận với ngôn ngữ lập trình bậc cao qua đó giúp các

em có thêm định hướng trong học tập, nghề nghiệp sau này và yêu thích học tinhọc hơn Pascal là ngôn ngữ lập trình có cấu trúc và cấu trúc Lặp với số lần biếttrước là một cấu trúc quan trọng giúp các em học tốt lập trình Pascal

2.2 Thực trạng giáo viên:

Là một giáo viên trẻ mới ra trường năng động nhiệt tình trong giảng dạy.Nhưng kinh nghiệm giảng dạy còn ít, cở sở vật chất còn thiếu nên ảnh hưởngkhông nhỏ tới chất lượng giảng dạy

Trang 7

2.3 Thực trạng học sinh:

Là một trường mới chuyển sang mô hình công lập, học lực của học sinh chủyếu ở mức trung bình, yếu Tin học là một môn học còn khá mới mẻ đối với họcsinh nên việc tiếp cận còn nhiều bỡ ngỡ Do cơ sở vật chất còn thiếu nên họcsinh chưa được thực hành trên máy Việc dạy và học chủ yếu là học lí thuyếtnên việc tiếp thu kiến thức còn hạn chế Đối với câu lệnh Lặp với số lần biếttrước là một cấu trúc khó và rất cần thiết khi giải bài tập pascal nhưng khả năngtiếp thu của học sinh còn thấp còn gặp nhiều khó khăn khi làm các bài tập vềcâu lệnh Lặp với số lần biết trước Các em không có điều kiện được thực hànhviết chương trình nên việc các em hiểu được và làm được các bài tập về ngônngữ lập trình Pascal nói chung và bài tập có sử dụng cấu trúc Lặp với số lần biếttrước là rất khó khăn

3 Các giải pháp nâng cao hiệu quả dạy học hoạt động của câu lệnh Lặp

với số lần biết trước trong chương trình Tin học lớp 11 bằng một số bài tập

tiêu biểu.

3.1 Dạy học hoạt động câu lệnh Lặp với số lần biết trước thông qua một số bài tập tiêu biểu.

Đưa ra một số bài tập tiêu biểu có sử dụng cấu trúc Lặp với số lần biết trước

để học sinh thảo luận và viết câu lệnh, nêu hoạt động, viết chương trình qua đógiúp các em nắm vững kiến thức về cấu trúc Lặp với số lần biết trước và vậndụng nó linh hoạt, khoa học trong các chương trình

Cũng cố kiến thức lập trình nói chung và cấu trúc Lặp với số lần biết trướcnói riêng Qua đó tạo hứng thú trong học tập cho học sinh đối với ngôn ngữ lậptrình Pascal

Hình thành ở học sinh kỹ năng phân tích, xử lý các vấn đề áp dụng các kiếnthức liên quan về cấu trúc Lặp với số lần biết trước trong quá trình lập trình cácchương trình sau này

Ở trong khuôn khổ này tôi chỉ trình bày nội dung thực hành ứng với thực tế ởtrường THPT Lê Viết Tạo

3.2 Một số bài tập về câu lệnh Lặp với số lần biết trước:

Bài 1: Hãy cho biết giá trị của biến S là bao nhiêu sau đoạn chương trình sa:

Trang 8

- Biến đếm i ban đầu nhận giá trị là bao nhiêu?

- Sau mỗi lần thực hiện lệnh lặp thì biến đếm i được tăng tự đông lên 1 đơn vị vàvòng lặp kết thúc khi biến đếm i lớn hơn giá trị cuối Vậy thì khi nào thì vònglặp này kết thúc (biến đếm i tăng đến bao nhiêu)?

- Câu lênh lặp s:=s+1 được thực hiện bao nhiêu lần?

Học sinh trả lời được ba câu hỏi trên thì sẽ tìm được giá trị của s

Chương trình được giáo viên viết sẵn và trình chiếu lên bảng, học sinh quan sát giáo viên chạy chương trình và ghi nhớ

Bài 2: Viết câu lệnh Lặp với số lần biết trước dạng thiếu thực hiện việc tìm giá

trị S = 1+2+3+…+100

Hướng dẫn – lời giải:

Trường hợp 1: có thể sử dụng câu lệnh Lặp với số lần biết trước dạng tiến tính giá trị s

Ở câu lệnh For i:=1 to 100 do S:=S+i Đầu tiên máy tính giá trị đầu và gán cho

biến đếm i (i=1) sẽ kiểm tra điều kiện i<=100 nếu đúng thì câu lệnh lặp s:=s+i

được thực hiện sau đó tăng biến đếm i lên 1 đơn vị và quay lại quá trình kiểm tra điều kiện i<=100 chừng nào điều kiện còn đúng thì thực hiện câu lệnh lặp

và cứ như vậy đến khi i >100 thì thoát khỏi vòng lặp và chuyển đến câu lệnh tiệp theo.

Trường hợp 2: có thể sử dụng câu lệnh Lặp với số lần biết trước dạng lùi để tínhgiá trị s

Bài 3: Viết chương trình tính S =1+1/2 +1/3+ … +1/100;

- Học sinh dựa vào cách làm bài 2 để thực hiện viết chương trình cho bài 3

Trang 9

Bài 4: Viết chương trình tính s=n! với 1<=n<10

- Cho học sinh phân tích bài toán:

+ input: n ; output: s

Để tính được s ta cần sử dụng câu lệnh lặp với số lần biết trước

? Với các bài tính tổng ở trên ta sử dụng câu lệnh khởi tạo ban đầu cho s là s:=0 đối với bài này ta có thể gán như vậy được không?

- Hướng dẫn: trước đây ta thường làm các bài tập quen thuộc là trong

vòng lặp giá trị đầu thường là 1 giá trị cuối là N nhưng với bài toán này thì giátrị đầu là N1 và giá trị cuối là N2 Từ hướng dẫn này học sinh có thể dễ dàngviết chương trình cho bài toán này

Trang 10

Bài 6: Viết chương trình sắp xếp dãy số nguyên tăng dần.

- Hướng dẫn:

+ Đối với bài toán này giáo viên cần hướng dẫn về thuật toán để sắp xếpđược một dãy số theo thứ tự tăng dần từ đó mới hướng dẫn chuyển sang câulệnh trong Pascal tương ứng với thuật toán đó

+ Ý tưởng xây dựng thuật toán: Ta sẽ đưa lần lượt từng từng số hạng vàođúng vị trí của nó bằng cách so sánh giá trị của từng số hạng với các số còn lại

và đổi giá trị chúng cho nhau nếu giá trị trước lớn hơn giá trị đứng sau Sau mỗilần như vậy thì ta sẽ giảm được một giá trị cần thực hiện (thuật toán học sinhxem lại trong SGK tin học 10 và giáo viên chiếu thuật toán cho học sinh xem vàghi nhớ)

+ Vậy tới giáo viên hướng dẫn cho học sinh chuyển sang câu lệnh tương ứng trong pascal

Writeln(‘nhap vao so luong phan tu n=’); readln(n);

Writeln(‘nhap vao cac phan tu’);

Begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; end;

{đoạn chương trình in dãy số sau khi sắp xếp}

For i:=1 to n do write(a[i]:5); Readln;

END

Trang 11

- Sau khi dạy xong bài này giáo viên có thể yêu cầu học sinh giải thích tạisao phải dung 2 vòng lặp và ở vòng lặp thứ nhất tại sao giá trị cuối lại là n-1.

- Yêu cầu học sinh về nhà dựa vào chương trình trên viết chương trình sắpxếp dãy số trên nhưng theo thứ tự giảm dần

Bài 7: Dãy số Fibonaci được định nghĩa như sau F1=1, F2=1, F3=2,….

Số đứng sau bằng tổng hai số đứng trước yêu cầu nhập vào từ bàn phím một số hạng n và tìm giá trị của số Fibonaci thứ n đó

- Hướng dẫn:

+ Với bài toán này muốn tìm được số fibonaci thứ n thì ta phải nắm đượcquy luật sinh ra số đứng sau là bằng tổng hai số đứng trước tức là Fn = Fn-1 +Fn-2 Vậy ta dùng một vòng lặp với biến đếm nhận các giá trị từ 2 tới n vì ta đãbiết trước 2 giá trị đầu có giá trị là 1

+ Trường hợp đăc biệt là N=1, và N=2 thì ta thông báo kết quả ngay là 1

và không cần sử dụng vòng lặp nữa vậy ta chỉ tìm các số fibonaci khi n>2 trở đivới vòng lặp được mô tả như trên

Trang 12

- Học sinh có thể thắc mắc tại sao trong lại sử dụng 3 câu lệnh Fn:=F1+F2;F1:=F2; F2:=Fn; giáo viên có thể giải thích qua chương trình hoặc ví dụ minhhọa để học sinh hiểu.

Bài 8: Cho mảng A gồm n phần tử Viết chương trình tạo mảng B gồm n

phần tử trong đó B[i] là tổng giá trị của i phần tử đầu tiên của mảng A

For i:=1 to n doWrite (a[i]:5);

Writeln ;

For i:=1 to n doBegin

Writeln ;

Trang 13

For i:=1 to n doWrite (a[i]:5);

Writeln ;b[1]:=a[1];

For i:=2 to n do

b[i]:=b[i-1]+a[i];

For i:=1 to n doWrite(a[i]:7);

Writeln ;Readln;

END

- Nhận xét: trong hai cách trên thì ở cách 2 thời gian thực hiện chương trình

sẽ nhanh hơn cách 1 vì vậy khi viết chương trình thì học sinh cần lưu ý tới mộtyếu tố là thời gian thực hiện của chương trình Điều này đặc biệt quan trọng vớinhững bài toán mà dữ liệu lớn nếu với những bài toán với dữ liệu lớn mà takhông lựa chọn cách phù hợp thì chương trình có thể thực hiện rất lâu và có thểsảy ra tình trạng máy tình bị “treo”, “đơ” như ta đã từng gặp

Trang 14

Bài 9: Viết chương trình nhập từ bàn phím số nguyên dương N (N 100) và

dãy A gồm N số nguyên A1, A 2, , AN có giá trị tuyệt đối không lớn hơn 1000.Hãy cho biết dãy A có phải là cấp số cộng hay không và thông báo kết quả ramàn hình

- Hướng dẫn: Như trong toán học ta đã biết dãy số là cấp số cộng thì sốđứng sau bằng số trước cộng với một lượng nhất định gọi là công sai (d) Bàinày cũng có nhiều cách để thực hiện với học sinh đại trà thì ta có thể sử dụngchương trình sau:

Writeln('Nhap gia tri cua cac phan tu trong day

A:'); For i:=1 to N do

If A[i]-A[i-1]<>d then dem:=dem+1;

If (dem=0) then Writeln('Day A la cap so

cong.') Else Writeln('Day A khong la cap so

Ngày đăng: 24/07/2020, 14:45

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w