1. Trang chủ
  2. » Trung học cơ sở - phổ thông

BỒI DƯỠNG NĂNG lực GIẢI bài tập PASCAL CHO học SINH lớp 11”

35 69 1

Đ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 35
Dung lượng 135,56 KB

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

Nội dung

Tin học là một môn học không còn mới ở các trường phổ nhưng các em học sinh vẫn còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Nguyên nhân dẫn đến những khó khăn mà học sinh thường gặp là rất phong phú nhưng có thể thấy một số nguyên nhân chính sau đây: + Học sinh thường gặp khó khăn khi xác định bài toán. + Học sinh chưa biết cách sử dụng biến để đưa dữ liệu vào cho bài toán. + Khó liên hệ phương pháp giải một bài toán trong toán học với thuật giải trong tin học. + Học sinh chưa biết cách hiệu chỉnh chương trình khi có lỗi. Tuy nhiên mọi thứ đều có điểm khởi đầu của nó, với học sinh việc học ngôn ngữ lập trình Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt động cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự động…. Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này. Xuất phát từ cơ sở trên, tôi đã chọn đề tài “BỒI DƯỠNG NĂNG LỰC GIẢI BÀI TẬP PASCAL CHO HỌC SINH LỚP 11”. Hy vọng rằng kinh

Trang 1

MỤC LỤC

1 Lời giới thiệu 1

2 Tên sáng kiến: 2

3 Tác giả sáng kiến 2

4 Chủ đầu tư tạo ra sáng kiến: 2

5 Lĩnh vực áp dụng sáng kiến 2

6 Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử 2

7 Mô tả bản chất của sáng kiến 2

7.1 Cở sở lý luận 2

7.2 Cơ sở thực tiễn 3

7.3 Về nội dung của sáng kiến 3

7.3.1 Một số kỹ năng lập trình 3

7.3.2 Một số bài tập tham khảo cho học sinh khá, giỏi (chương trình viết kiểu dữ liệu tệp) 23

7.3.3 Khả năng áp dụng của sáng kiến 31

8 Những thông tin cần được bảo mật : 31

9 Các điều kiện cần thiết để áp dụng sáng kiến 31

10. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến theo ý kiến của tác giả và theo ý kiến của tổ chức, cá nhân đã tham gia áp dụng sáng kiến lần đầu, kể cả áp dụng thử (nếu có) theo các nội dung sau 31 10.1 Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến theo ý kiến của tác giả 31

10.2 Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến theo ý kiến của tổ chức, cá nhân 32

11 Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử hoặc áp dụng sáng kiến lần đầu (nếu có) 33

TÀI LIỆU THAM KHẢO 34

Trang 2

BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN

1 Lời giới thiệu

Chúng ta đang sống trong thời đại công nghệ 4.0 Với sự phát triển mạnh

mẽ như vũ bão của tin học đã làm cho xã hội có nhiều nhận thức mới về cách tổchức các hoạt động Nhiều quốc gia trên thế giới ý thức được rất rõ tầm quantrọng của tin học và có những đầu tư lớn cho lĩnh vực này, đặc biệt trong giáodục nâng cao dân trí về tin học và đào tạo nguồn nhân lực có chất lượng cao.Người Việt Nam có nhiều tố chất thích hợp với ngành khoa học này, vì thếchúng ta hy vọng có thể sớm hoà nhập với khu vực và trên thế giới

Công nghệ thông tin được ứng dụng trong hầu hết các lĩnh vực của xã hội.Nhận thấy tầm quan trọng đó, trong vài năm trở lại đây bộ môn tin học trong nhàtrường nhận được sự quan tâm và đầu tư rất lớn của ngành giáo dục

Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình

tự hoạt động cho máy tính, máy gia dụng là cần thiết Và để làm được việc đócần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đónhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp

Tin học là một môn học không còn mới ở các trường phổ nhưng các emhọc sinh vẫn còn nhiều bỡ ngỡ khi tiếp cận với môn học này Nội dung tin họclập trình lớp 11 là một nội dung mới đối với đa số học sinh với nhiều khái niệm,thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu Chính vì vậy

mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán Nguyên nhândẫn đến những khó khăn mà học sinh thường gặp là rất phong phú nhưng có thểthấy một số nguyên nhân chính sau đây:

+ Học sinh thường gặp khó khăn khi xác định bài toán

+ Học sinh chưa biết cách sử dụng biến để đưa dữ liệu vào cho bài toán.+ Khó liên hệ phương pháp giải một bài toán trong toán học với thuật giải trong tin học

+ Học sinh chưa biết cách hiệu chỉnh chương trình khi có lỗi

Tuy nhiên mọi thứ đều có điểm khởi đầu của nó, với học sinh việc họcngôn ngữ lập trình Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậccao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt động cũng nhưích lợi của các chương trình hoạt động trong máy tính, các máy tự động… Qua

đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghềnghiệp mà các em chọn sau này

Xuất phát từ cơ sở trên, tôi đã chọn đề tài “BỒI DƯỠNG NĂNG LỰC GIẢI BÀI TẬP PASCAL CHO HỌC SINH LỚP 11” Hy vọng rằng kinh

Trang 3

nghiệm này của tôi có thể góp phần giúp các em học sinh hiểu bài hơn và có hứng thú hơn với môn Tin học.

2 Tên sáng kiến: BỒI DƯỠNG NĂNG LỰC GIẢI BÀI TẬP PASCAL CHO HỌC SINH LỚP 11.

3 Tác giả sáng kiến

Họ và tên:

4 Chủ đầu tư tạo ra sáng kiến:

5 Lĩnh vực áp dụng sáng kiến

Đề tài này được đưa vào nhằm áp dụng giảng dạy lập trình cho học sinh khối

11 Với mục tiêu đưa ra một số kinh nghiệm dạy lập trình, giúp các em biết cáchviết chương trình giải bài toán tin, biết cách sửa các lỗi phổ biến trong quá trìnhchạy chương trình mà các em thường mắc phải Từ đó giúp các em yêu thíchhơn bộ môn tin học lập trình khối 11

6 Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử

Lần đầu áp dụng vào tháng 10 năm 2018 và đang tiếp tục thực hiện

7 Mô tả bản chất của sáng kiến

7.1 Cở sở lý luận

Đặc điểm của học sinh là muốn tự mình khám phá, tìm hiểu trong quá trìnhnhận thức Các em có khả năng điều chỉnh hoạt động học tập, sẵn sàng tham giacác hoạt động học tập khác nhau nhưng cần phải có sự hướng dẫn, điều hànhmột cách khoa học và nghệ thuật của thầy cô giáo Hình thành tính tích cực, tựgiác, chủ động và đồng thời phát triển năng lực tự học của học sinh là một quátrình lâu dài, kiên nhẫn và phải có phương pháp

Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phươngpháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt

động học tập Điều 24.2 của Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ

thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” Như vậy, chúng ta có thể thấy định

hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đềtranh luận Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông làgiúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ

Trang 4

động Với một số nội dung trong đề tài này, học sinh có thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể.

7.2 Cơ sở thực tiễn

Qua thực tế giảng dạy bộ môn tin học ở các năm qua, tôi nhận thấy khi họcđến chương trình tin học lớp 11 đa số học sinh đều nhận xét bộ môn này rất khó.Khi dạy lập trình nói chung và Pascal nói riêng, nhiều khi người dạy chỉ chú

ý tới việc dạy ngôn ngữ lập trình mà không nghĩ rằng, ngoài việc học ngôn ngữ lậptrình người dạy cần rèn cho học sinh các kỹ năng: Xác định bài toán, phân biệtđược biến, hằng trong bài, viết thuật toán, đọc hiểu chương trình, sửa lỗi chươngtrình,…

Nhiều học sinh nhớ được các câu lệnh, từ khóa khi khai báo của ngôn ngữlập trình pascal Nhưng lại không biết viết một chương trình giải một bài toánbằng ngôn ngữ pascal Nguyên nhân là do các em không biết cách phân tích bàitoán, không biết cần đưa dữ liệu gì vào và cũng chưa biết cách xác định các biếncần sử dụng trong chương trình Ngoài ra các em học sinh cũng gặp khá nhiềulỗi khi viết một chương trình trong ngôn ngữ lập trình Pascal, thậm chí có nhữnglỗi các em mắc phải nhiều lần do không hiểu nguyên nhân xuất hiện lỗi Vì vậytrong nội dung đề tài này tôi nêu ra các phương pháp cơ bản giúp các em có thểgiải một bài toán bất kì bằng ngôn ngữ lập trình nói chung hay ngôn ngữ pascalnói riêng Tôi cũng chỉ ra một số lỗi phổ biến các em thường mắc phải khi chạychương trình pascal và cách sửa các lỗi này trên phần mềm free pascal Đối vớiđối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc học lập trình,

cụ thể là ngôn ngữ lập trình Pascal Do đó trong đề tài này tôi cũng trình bàythêm một số ví dụ mở rộng, nâng cao với đối tượng học sinh này

Các chú ý khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình freePascal nói riêng là rất nhiều, rât phong phú Tuy nhiên trong phạm vi sáng kiếnkinh nghiệm này tôi không trình bày lại cấu trúc chương trình pascal, và các câulệnh pascal trong sách giáo khoa, tôi xin trình bày một số lưu ý, kinh nghiệm của

cá nhân tôi qua các nội dung cụ thể sau:

 Một số kỹ năng lập trình (minh họa bằng ngôn ngữ free pascal).

 Một số bài tập làm thêm với đối tượng học sinh khá, giỏi.

7.3 Về nội dung của sáng kiến

7.3.1 Một số kỹ năng lập trình

Qua việc dạy bộ môn lập trình tin học lớp 11 nhiều năm Tôi nhận thấy các

em học sinh rất dễ nhớ câu lệnh và cấu trúc chương trình pascal, nhưng lạikhông biết vận dụng các câu lệnh đó vào bài toán cụ thể, có thể các em vẫn bịnhầm lẫn việc lập trình cho máy tính giải với việc trình bày lời giải trên giấy nhưcác em vẫn hay làm

Trang 5

Để các em học sinh có thể viết được chương trình giải một bài toán tinbằng ngôn ngữ lập trình nói chung hay ngôn ngữ pascal nói riêng thì ngoài việccác em nhớ các câu lệnh và cấu trúc chương trình của ngôn ngữ lập trình Các

em cần phải có các kỹ năng sau:

1 Xác định bài toán

Để có thể viết chương trình giải một bài toán bất kì nào đó, các em cần phải

xác định được hai thành phần input và output của bài toán, qua đó chỉ ra được

các biến cần sử dụng trong bài

Xác định bài toán

Input: Là những thông tin đã biết cần đưa vào (giả thiết bài toán) Để từ

những dữ liệu đưa vào này người lập trình đưa ra các thao tác xử lí (phép tínhtoán) giúp tìm ra kết quả của bài toán

Output: Là kết quả cần thông báo ra sau khi chạy xong chương trình Kết

quả có thể ghi ra màn hình hoặc ghi ra tệp tùy vào yêu cầu của từng bài

Ví dụ 1: Viết chương trình tính và thông báo ra màn hình diện tích và chu vi của

tam giác có 3 cạnh lần lượt a, b, c (với a, b,c là các số nguyên dương, 1<a<104,1<b< 104, 1<c<104)?

Hướng dẫn:

Với bài toán trên giả thiết của bài toán (dữ liệu đề bài đã cho) là: Bộ giá trị

3 cạnh tam giác lần lượt là a, b, c, và giới hạn của từng cạnh trong khoảng từ 1đến 104, 3 giá trị đó tương ứng với 3 cạnh a, b, c của tam giác (luôn đảm bảo tổng

2 cạnh bất kì luôn lớn hơn cạnh còn lại)

Kết quả cần thông báo ra là diện tích và chu vi của tam giác Vậy ta xác định được input và output như sau:

Input: Giá trị 3 cạnh a, b, c (thỏa mãn độ dài 3 cạnh của tam giác).

Output: Chu vi, diện tích tam giác đó.

Ví dụ 2: Viết chương trình giải phương trình ax +b =0? (với |a|<=106, |b|<=106)

Hướng dẫn:

Với bài toán trên với mỗi bộ hệ số a, b của phương trình sẽ cho kết quảnghiệm x riêng Vậy giá trị cần đưa vào là hệ số a, b với phạm vi giá trị |a|<=106,

|b|<=106 Kết quả cần thông báo ra là nghiệm x tương ứng với từng bộ hệ số a, b

mà ta đưa vào Đây là dạng bài biện luận nghiệm phương trình bậc nhất 1 ẩn ởdạng tổng quát

Ta xác định input và output như sau:

Trang 6

Output: Giá trị nghiệm x thỏa mãn phương trình.

Ví dụ 3 Cho N và dãy số a1, a2,…, an Hãy cho biết có bao nhiêu số hạng trong

dãy có giá trị bằng 0

Hướng dẫn:

Input là những thông tin đã biết cần đưa vào (giả thiết của bài toán): N, dãy

a1, a2,…,an

Output là kết quả cần thông báo ra: Số số hạng có giá trị bằng 0

Ta xác định được input và output như sau:

Input: Giá trị N, dãy giá trị a1, a2,…, an.

Output: Số số hạng có giá trị bằng 0

2 Xác định các biến, hằng, kiểu dữ liệu phù hợp cho biến

Khái niệm biến: Là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể

được thay đổi trong quá trình thực hiện chương trình.

Trước khi giải một bài toán tin bằng bất kì một ngôn ngữ lập trình nào, thìcác em cần phải xác định được bài toán cần sử dụng đến biến nào và kiểu dữ liệucủa từng biến là gì cho phù hợp Nếu công việc này học sinh làm tốt sẽ giúp tối

ưu bài toán, tránh lãng phí bộ nhớ hoặc thiếu bộ nhớ

Biến: Là những đại lượng để đưa input vào chương trình là những giá trị

ngẫu nhiên đưa vào từ bàn phím, hoặc là đại lượng lưu giá trị ngẫu nhiên trong

quá trình thực hiện chương trình

Hằng: Là đại lượng cần đưa vào chương trình, nhưng giá trị đã xác định cụ

thể, giá trị của hằng là không đổi trong quá trình thực hiện chương trình

Dựa vào giới hạn vào của biến trong từng bài để chọn kiểu dữ liệu cho phù hợp.Tránh việc chọn kiểu dữ liệu không lưu được hết giá trị vào của biến, hay chọn kiểu

dữ liệu quá lớn so với giá trị cần đưa vào cho biến gây lãng phí bộ nhớ

Xác định bài toán.

Input: Giá trị các hệ số a=2, b=5, c=2

Output: Nghiệm x thỏa mãn phương trình

Biến và hằng cần sử dụng khi viết chương trình 5

Trang 7

Thông thường để xác định các biến cần sử dụng trong chương trình, chúng

ta nên dựa vào input và output của bài toán Thật vậy input là những dữ liệu cầnđưa vào, nếu dữ liệu đưa vào đã có giá trị cụ thể thì chúng ta sẽ đưa vào ở dạnghằng, trong ví dụ 1 các hệ số 2, 5, 2 là các hằng số cần đưa vào

Ta có:

- Hằng số: Là hệ số 2, 5, 2 (do a, b, c có giá trị xác định không đổi là: a=2, b=5,

c=2)

- Biến

Để xác định biến chúng ta dựa vào input và output Nếu input cần đưa vào

là các giá trị ngẫu nhiên chưa xác định cụ thể thì chúng ta sử dụng biến để lưucác giá trị đó nhập vào từ bàn phím, nhưng trong ví dụ 1 input là các hằng đãxác định giá trị cụ thể nên không cần sử dụng biến

Dựa vào output ta thấy cần thông báo ra nghiệm x thỏa mãn phương trình,nên ta sẽ sử dụng biến tên x1, x2 để lưu nghiệm trong trường hợp nếu có cả 2nghiệm xẩy ra Để tính 2 nghiệm của phương trình trên chúng ta phải tính giá trịdelta vậy để thuận tiện chúng ta khai báo thêm biến delta để lưu giá trị biểu thức

b2 -4ac

Ta có:

Biến tên x1, x2, để lưu lần lượt 2 giá trị nghiệm của phương

trình Biến tên delta để lưu giá trị biểu thức delta:= b*b -4*a*c=

5*5-4*2*2;

Kiểu dữ liệu biến

delta Nguyên (do a, b, c nguyên) Integer, longint,int64

x1, x2 Thực (do thực hiện phép /) real

Code tham khảo

Var

x1, x2: real;

delta: integer;

BEGIN

Trang 8

If delta =0 then write(‘phuong trinh co nghiem kep x=’,x1); {do x1=x2}

If delta <0 then write(‘phuong trinh vo nghiem’);

Output: Nghiệm x thỏa mãn phương trình

- Biến

Tên a, b, c để nhập vào giá trị ngẫu nhiên các hệ số a, b, c (do hệ số a, b, c không cho giá trị cụ thể)

Tên x1, x2, để lưu lần lượt 2 giá trị nghiệm của phương trình

Biến tên delta để lưu giá trị biểu thức delta:= b*b -4*a*c;

Kiểu dữ liệu biến

delta Thực (do a, b, c thực) real

x1, x2 Thực (do a, b, c thực và do real

thực hiện phép /)

Code tham khảo

Var a, b, c, delta, x1, x2: real;

BEGIN

Trang 9

If delta =0 then write(‘phuong trinh co nghiem kep x=’,x1); {do x1=x2}

If delta <0 then write(‘phuong trinh vo nghiem’);

Readln;

END

Ví dụ 3 Viết chương trình tính và thông báo ra màn hình diện tích và chu vi của

tam giác có 3 cạnh lần lượt a, b, c (với a, b,c là các số nguyên dương, 1<a<104,1<b< 104, 1<c<104)?

Xác định bài toán

Input: Giá trị 3 cạnh a, b, c (thỏa mãn độ dài 3 cạnh của tam giác)

Output: Chu vi, diện tích tam giác đó

Các biến cần phải sử dụng

- Tên biến a, b, c để lưu giá trị độ dài 3 cạnh tam giác (do giá trị của 3 cạnh

a, b, c của tam giác là bất kì không phải giá trị cố định nên a, b, c sẽ là 3 biếncủa bài toán)

- Tên biến p lưu chu vi tam giác: p:= a+b+c;

- Tên biến s lưu diện tích tam giác s:=sqrt(p/2*(p/2-a)*(p/2-b)*(p/2-c));

Kiểu dữ liêu của biến

Kiểu dữ liệu 3 biến a, b, c: Dựa vào giới hạn giá trị của 3 biến a, b, c trong

để bài, a, b,c là các số nguyên dương, 1<a<104, 1<b< 104, 1<c<104 Chúng ta cóthể nghĩ đến các kiểu dữ liệu sau:

a, b, c 1 104 ( nguyên dương) word

Trang 10

s Khoảng 2 200000000 real

(giá trị kiểu thực do có phép /)

Code tham khảo

Var a,b,c,p: word;

Writeln(‘chu vi tam giac p=’,p);

Writeln(‘dien tich tam gia s=’, s);

Readln;

END

3 Viết thuật toán

Theo định nghĩa trong sách giáo khoa Tin học 10, thuật toán là một dãyhữu hạn các thao tác được sắp xếp theo một trình tự xác định, sao cho sau khithực hiện dãy thao tác ấy từ INPUT ta nhận được OUTPUT Nói cách khác,trình bày thuật toán tức là chỉ ra các bước cần thực hiện để đi đến kết quả

Việc trình bày thuật toán trước khi viết chương trình là hết sức quan trọng.Thuật toán đúng thì chương trình mới có khả năng đúng, còn một thuật toán saichắc chắn là cho một chương trình sai Tuy nhiên đối với phần lớn học sinh lớp

11 thường bỏ qua bước này do tâm lý học sinh không thích các loại bài tập như thế

Trong nhiều trường hợp tưởng như không cần thuật toán cụ thể học sinhvẫn viết được chương trình Thực tế thuật toán đó không được viết ra nhưng đãhình thành sẵn trong đầu người viết

Với đa số học sinh hiện nay, cần phải dành một lượng thời gian thích hợp

để rèn luỵên loại bài tập này Phải làm sao cho việc viết thuật toán trở thành kỹnăng để khi các em lập trình trên máy, tuy không cần viết thuật toán ra song các

em có thể hình dung được thuật toán đó trong đầu Cần phải tạo cho các em có ýthức khi viết một chương trình Pascal là phải tuân thủ theo trình tự sau:

Viết chương trình

Trang 11

Một bài toán có thể có nhiều thuật toán đề giải, người lập trình cần phải lựachọn thuật toán tối ưu nhất Thuật toán tối ưu là thuật toán đảm bảo các yếu tốsau:

+ Chương trình ngắn gọn, ít câu lệnh

+ Thời gian chạy nhanh nhất

+ Tốn ít tài nguyên bộ nhớ nhất

+ Đưa ra được output đúng

Để viết được thuật toán trước hết các em cần có ý tưởng (cách giải) giải bàitoán đó, từ ý tưởng đó chúng ta trình bày thành thuật toán

Thực chất việc viết thuật toán tương tự như việc các em trình bày lời giải tìm

ra kết quả cho bài toán ở trên giấy như các em vẫn thường làm Chỉ khác 1 chút làcác em cần tách các bước rõ ràng, với mỗi bước cần thực hiện một thao tác cụ thể.Khi lập trình thì chúng ta sẽ thay các thao tác trong mỗi bước bằng câu lệnh tươngứng trong ngôn ngữ lập trình pascal, trình tự máy thực hiện các thao tác đó lần lượt

từ bước đầu cho đến bước cuối là đưa ra kết quả rồi kết thúc thuật toán

Có 2 cách viết thuật toán:

Cách 1: Viết thuật toán bằng cách liệt kê các bước

Cách 2: Viết thuật toán bằng sơ đồ khối

Tùy vào tư duy các em có thể chọn 1 trong 2 cách để trình bày thuật toánđều được Trong phạm vi sáng kiến tôi xin trình bày theo cách liệt kê các bước

Ví dụ 1: Có m hộp có khối lượng khác nhau và một cái cân dĩa Hãy chỉ ra cách

Xây dựng ý tưởng giải bài toán: Ta thực hiện cần lần lượt các hộp từ 1 đến m

hộp, mỗi lần cân 2 hộp giữ lại hộp nặng hơn bỏ hộp nhẹ đi, hộp giữ lại sau cùng

là hộp nặng nhất

Ta có thể trình bày thuật toán theo cách liệt kê các bước như sau:

Bước 1 Nhập vào giá trị số hộp m

Bước 2 Nếu m= 1 hộp thì đó chính là hộp nặng nhất và kết thúc

Trang 12

Bước 3 Nếu số hộp m>1 thì

Chọn 2 hộp bất kì và đặt lên bàn cân

Giữ lại hộp nặng hơn và cất hộp nhẹ đi chỗ khác

Bước 4 Nếu không còn hộp chưa được cân thì chuyển sang bước 5, ngoài ra:Chọn một hộp bất kì và để lên dĩa cân còn trống

Giữ lại hộp nặng hơn, cất hộp nhẹ sang chỗ khác

Bước 5 Trở lại bước 3

Bước 6 Hộp còn lại trên cân là hộp nặng nhất và kết thúc

Mô phỏng cho thuật toán trên với m=8

nhất)

Ví dụ 2: Viết thuật toán tính tổng sau:

T = 1 + 3+ 5+…+ n (với n là số nguyên dương lẻ, 1<n<=109)

Hướng dẫn

Bài toán trên thực chất là bài toán tính tổng các số tự nhiên lẻ từ 1 đến n

Xây dựng ý tưởng giải

Cách 1: Sử dụng biến t lưu giá trị tổng cần tìm, t ban đầu nhận giá trị bằng

1 Cho giá trị i chạy từ 1 đến n, nếu i mod 2 <> 0 thì cộng vào tổng t giá trị i đótức t:= t + i; -> Cách này phải kiểm tra n lần giá trị i mod 2 <>0 hay không n lớnnhất bằng 109 nên thời gian chạy lâu, không tối ưu

Cách 2: Do chỉ cộng các số lẻ trong dãy số tự nhiên từ 1 đến n nên ta cócông thức

Trang 13

Ta có thể trình bày thuật toán cách 2 theo cách liệt kê các bước như sau

Bước 1 Nhập giá trị n lẻ

Bước 2 T:= (n+1)*((n-1) div 2 +1) div 2

Bước 3 Thông báo ra t rồi kết thúc

4 Đọc hiểu chương trình

Kỹ năng này rất quan trọng, nó giúp các em hiểu rõ quá trình chạy 1chương trình bất kì là: Các lệnh luôn được thực hiện lần lượt từ đầu chươngtrình đến cuối chương trình, câu lệnh viết trước được thực hiện trước

Loại bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất làkhi dạy các cấu trúc lệnh Đối với dạng bài tập này, giáo viên nên hướng dẫn các

em thực hiện tuần tự từng lệnh theo từng câu lệnh cụ thể

Ví dụ: Cho biết kết quả khi thực hiện chương trình sau:

If (i mod 2)<>0 then i:=i*3+1

Else i:=i div 2;

Trang 14

Uses crt; Tên thư viện crt

Var i:integer; Khai báo biến i kiểu số nguyên

If (i mod 2)<>0 then i:=i*3+1 3 mod 2 =1 thì i:= 3*3+1=10

Else i:=i div 2; In ra màn hình 10

In ra màn hình 5Lần 3: i=5<11

5 mod 2 =1 thì i:= 5*3+1=16

In ra màn hình 16Lần 4: i=16 >11Câu lệnh sau do không được thựchiện-> kết thúc vòng lặp

Trang 15

Để làm tốt việc này thì chúng ta cần thử chạy chương trình với các bộ dữliệu vào tiêu biểu Chúng ta có thể mô phỏng quá trình chạy chương trình vớicác bộ dữ liệu vào đó để phát hiện lỗi.

Ví dụ: Để tìm số lớn nhất trong 3 số a,b,c được nhập vào từ bàn phím, có người

đã viết chương trình như sau:

If a<c then a:=c;

Write(‘So lon nhat la:’,a);

Trang 16

5 4 7 False (5<4) True (5<7)

Ghi ra màn hình số lớnnhất là 7

If a<c then a:=c;

Write(‘So lon nhat la:’,a);

Readln;

End

6 Kiểm soát các biến trong chương trình

Giúp học sinh quan sát hết các biến cần dùng trong chương trình, tránh việc

sử dụng biến mà chưa được khai báo

Ví dụ: Trong một chương trình đã chạy tốt, khi thực hiện không có lỗi có một số

lệnh như sau:

Trang 17

7 Viết chương trình theo đúng thuật toán đã đưa ra

Một bài toán có thể có nhiều cách giải khác nhau ứng với mỗi cách giải ta

có một thuật toán Để giúp học sinh có khả năng nhanh chóng nắm được ý tưởngcủa người khác cần luyện cho các em biết giải bài toán theo một thuật toán đãđược trao đổi Khả năng hiểu được nhanh ý tưởng của người khác cũng chính làyêu cầu trong hoạt động nhóm Phát triển khả năng này là phát triển một phẩmchất tư duy quý báu để các em biết hợp tác trong công việc, một trong nhữngyêu cầu của người lao động, sáng tạo trong thời đại mới, thời đại mà một sảnphẩm là sự kết tinh lao động của nhiều người

Ví dụ: Lập chương trình cắt bỏ các kí tự trống thừa của một xâu cho trước Hãy

viết chương trình theo thuật toán sau:

Ngày đăng: 03/02/2021, 10:04

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