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

tin 11 tu 12-47

79 185 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

Tiêu đề Cấu trúc rẽ nhánh
Tác giả Lại Thanh Trà
Trường học Trường T.H.P.T Lê Hồng Phong
Chuyên ngành Tin học
Thể loại Giáo án
Năm xuất bản 2009
Thành phố Hồ Chí Minh
Định dạng
Số trang 79
Dung lượng 793 KB

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

Nội dung

Kĩ năng - Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản - Viết đợc câu lệnh rẽ nhánh dạng thiếu, rẽ nhánh dạng đủ và áp dụng để thể hiện đợc thuật toán củ

Trang 1

- Hiểu nhu cầu của cấu trúc rẽ nhánh trong biểu diễn thuật toán.

- Hiểu câu lệnh rẽ nhánh Hiểu câu lệnh ghép

2 Kĩ năng

- Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản

- Viết đợc câu lệnh rẽ nhánh dạng thiếu, rẽ nhánh dạng đủ và áp dụng để thể hiện đợc thuật toán của một số bài toán đơn giản

3 Thái độ

- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính

- Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình

II Chuẩn bị của Giáo viên và học sinh:

1 Giáo viên: SGK, giáo án, STK (máy chiếu nếu có)

2 Học sinh: SGK, chuẩn bị trớc bài ở nhà

III Ph ơng pháp giảng dạy

Trang 2

3 Bài mới:

ĐVĐ: Bây giờ cô có 1 ví dụ nh sau: Giải phơng trình bậc 2 ax2+ bx + c =0 (a# 0) trớc tiên, ta tính biệt số delta D= b2- 4ac

Nếu D không âm, ta sẽ đa ra các nghiệm Trong trờng hợp ngợc lại, ta phải thông báo

là phơng trình vô nghiệm Với bài toán này trong lập trình chúng ta đã làm đợc các

b-ớc nh nhập hệ số a, b, c (a ≠ 0) tính đợc D, còn xét các trờng hợp của D thì trong lập trình làm nh thế nào, thì trong chơng này chúng ta sẽ nghiên cứu 1 vấn đề mới đó là cấu trúc rẽ nhánh

* Hoạt động 1: Giới thiệu cho HS biết rẽ nhánh là gì?

Ghi đầu bài và phần 1.

- HS: Dựa vào phần kiến thức đã

đọc trả lời câu hỏi

+ VD2: “Nếu Châu không học bài thì sẽ bị điểm

kém, nếu học bài thì sẽ có điểm cao”

Ta nói cách diễn đạt nh vậy thuộc dạng đủ:

Nếu thì , nếu không thì

* Vậy cấu trúc rẽ nhánh là thể hiện sự lựa

chọn công việc phù hợp với điều kiện.

* Hoạt động 2: Giới thiệu và hớng dẫn cách viết và thực hiện câu lệnh If – Then.

- HS: Chú ý nghe giảng và ghi bài.

2 Câu lệnh If- then

Trong đó: + Điều kiện là biểu thức lôgic

+ Câu lệnh, câu lệnh 1, câu lệnh 2 là

Trang 3

- GV: Treo bảng phụ 2 về sơ đồ

khối để sau đó giải thích hoạt động

của câu lệnh If- then ở hai dạng

thiếu và đủ

- HS: Chú ý và tự giác ghi bài.

- GV: Lấy ví dụ 3 để HS hiểu rõ và

so sánh giữa hai cách làm Gọi HS

so sánh giữa hai cách làm trên

- HS: So sánh về cách thực hiện

của hai cau lệnh trong VD 3

- GV: Nhận xét.

một câu lệnh của Pascal

+ VD3: Để tìm số lớn nhất Max trong 2 số a,b

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

+ ở dạng thiếu: điều kiện sẽ đợc tính và kiểm tra Nếu điều kiện đúng (có giá trị True) thì câu lệnh sẽ đợc thực hiện, ngợc lại thì câu lệnh sẽ bị

bỏ qua

+ ở dạng đủ: điều kiện cũng đợc tính và kiểm tra Nếu điều kiện đúng (có giá trị True) thì câu lệnh 1 sẽ đợc thực hiện, ngợc lại thì câu lệnh 2

sẽ đợc thực hiện

* Hoạt động 3: Giới thiệu và hớng dẫn cách viết và thực hiện câu lệnh If – Then

- GV: Trong câu lệnh if - then muốn thực

hiện nhiều lệnh sau then hay nhiều lệnh

sau else thì ta phải làm thế nào ?

- GV: Khi đó ta cần gộp nhiều lệnh đó lại

là một câu lệnh trong chơng trình Các

NNLT thờng có cấu trúc để giúp ta thực

hiện điều này

- GV: Giải thích cho học sinh thấy tại sao

lại cần có câu lệnh ghép và câu lệnh ghép

có ý nghĩa gì? sau đó giáo viên đa ra cấu

trúc câu lệnh ghép trong Pascal

- GV: đa ra VD (quay lại bài toán giải

3 Câu lệnh ghép

* Cú pháp:

Begin <các câu lệnh>;

Trang 4

writeln ('x1 = ', x1:8:3, 'x2 = ',x2:8:3);

end ;

* Hoạt động 4: Lấy một số ví dụ để làm sáng tỏ câu lệnh rẽ nhánh và câu lệnh ghép.

- HS: xác định Input, Output của bài, xác

định kiểu dữ liệu của a,b,c,d

- Thảo luận theo nhóm (4 hs/1 nhóm- 2

bàn liền nhau) để viết bài toán bằng ngôn

Biết rằng năm nhuận là năm chia hết cho

400 hoặc chia hết cho 4 nhng không chia hết cho 100

Trang 5

- Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.

- Hiểu cấu trúc lặp với số lần biết trớc, cấu trúc lặp kiểm tra điều kiện trớc

2 Kĩ năng

- Biết vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể

- Biết mô tả đợc thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp

- Viết đúng lệnh lặp với số lần biết trớc, lệnh lặp kiểm tra điều kiện trớc

- Viết đợc thuật toán của một số bài toán đơn giản

3 Thái độ

- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính

- Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình

II Chuẩn bị của Giáo viên và học sinh:

1 Giáo viên: SGK, giáo án, STK (máy chiếu nếu có)

2 Học sinh: SGK, chuẩn bị trớc bài ở nhà

III Ph ơng pháp giảng dạy

2 Kiểm tra bài cũ:

Trang 6

Em hãy cho biết sự giống và khác

nhau của hai dạng lệnh If – Then

Câu lệnh If – then có hai dạng:

+ ở dạng thiếu: điều kiện sẽ đợc tính và kiểm tra Nếu điều kiện đúng (có giá trị True) thì câu lệnh sẽ đợc thực hiện, ngợc lại thì câu lệnh sẽ bị bỏ qua

+ ở dạng đủ: điều kiện cũng đợc tính và kiểm tra Nếu điều kiện đúng (có giá trị True) thì câu lệnh 1 sẽ đợc thực hiện, ng-

ợc lại thì câu lệnh 2 sẽ đợc thực hiện

3 Bài mới:

Tiết 12

GVĐVĐ: Ở bài trước chỳng ta đó học về lệnh rẽ nhỏnh nhưng khụng phải lỳc nào

chỳng ta cũng cú thể sử dụng được cấu trỳc rẽ nhỏnh Nhiều bài toỏn cũn phức tạp hơn

mà cấu trỳc rẽ nhỏnh khụng đỏp ứng được Hụm nay chỳng ta làm quen với một dạng cấu trỳc khỏc đú là cấu trỳc lặp

* Hoạt động 1: Giới thiệu cho HS biết rẽ nhánh là gì?

- GV: Đưa ra hai bài toỏn, yờu cầu HS

tỡm cỏch để giải bài toỏn này

- HS: Đưa ra cỏch giải bài toỏn của mỡnh,

cú thể cú nhiều cỏch giải khỏc nhau

- GV: Trỡnh bày cỏch giải bài toỏn từng

Sau đú gọi học sinh nhận xột về cỏch giải

bài toỏn này

1 Lặp

- Xột 2 bài toỏn với a là số nguyờn và a>2

Bài toỏn 1: Tớnh và đưa ra kết quả màn

hỡnh tổng:

100

1

2

1 1

1 1

a a

S

+ + + +

+ + +

2

1 1

1 1 2

cho đến khi 1 < 0 , 0001

+N a

Cỏch giải:

- B1: Khởi tạo S:=1/a;

Trang 7

- HS: Nếu giải theo cách này thì ta phải

viết 100 lần câu lệnh nếu như N=100,

Nêu N>100 thì số lần phải viết chưa biết

trước Nếu áp dụng cho cả hai bài toán thì

đều quá dài

- GVDD: Vậy ta có thể giải bài toán này

theo cách nào ngắn nhất mà vẫn chính

xác

- GV: Lấy 1 ví dụ thực tế về việc tính

toán lặp đi lặp lại nhiều lần để học sinh

hiểu được khái niệm lặp

- B2: Tiếp theo mỗi lần thì cộng thêm vào

S là 1/(a+N) với N=1,2,3,

- Với bài toán 1 thì việc cộng thêm dừng khi N=100 có nghĩa là đã biết được số lần lặp biết trước

- Với bài toán 2 thì việc cộng thêm dừng khi 1/(1+N)<0,0001 Có nghĩa là số lần lặp chưa biết trước

Vậy: Trong lập trình có những thao tác

phải lặp đi lặp lại nhiều lần, khi đó gọi là cấu trúc lặp.

Trong lập trình thường có hai loại cấu trúc lặp:

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

+ Lặp với số lần không biết trước

Ý nghĩa của cấu trúc lặp: Cấu trúc lặp

là điều khiển thực hiện công việc lặp đi lặp lại khi chưa đủ số lần lặp hoặc một điều kiện nào đó còn đúng.

* Hoạt động 2: Trình bày cho HS biết Lặp với số lần biết trước và cấu trúc lệnh lặp

For-do trong ngôn ngữ lập trình Pascal

GV dẫn dắt vào vấn đề: Trong lập trình

có hai loại cấu trúc lặp, đó là lặp với số

lần biết trước và lặp với số lần không biết

trước Chúng ta đi tìm hiểu lần lượt từng

cấu trúc lặp

GV: Gọi 2 HS lên bảng biểu diễn 2 thuật

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

câu lệnh for-do

- Dạng lặp với số lần biết trước dùng để thực hiện câu lệnh một số lần xác định Dạng này dùng biến điều khiển để điều khiển vòng lặp

Trang 8

toỏn trờn bảng phụ bằng phương phỏp vẽ

sơ đồ khối

HS: Lờn bảng biểu diễn sơ đồ khối của

hai thuật toỏn trờn

GV: Thuật toỏn trờn cú lặp khụng?

HSTL: Thuật toỏn trờn lặp

GV: Hai thuật toỏn trờn giống và khỏc

nhau như thế nào?

HS: Trả lời theo sự hiểu biết của mỡnh

GV: Nhận xột tổng họp những ý kiến của

HS và dẫn dắt đưa HS biết dạng lặp với

số lần biết trước và sau đú đưa ra hai

dạng cấu trỳc lặp với số lần biết trước

trong Pascal

GV: Núi rừ cho HS biết khi nào dựng

dạng lặp tiến và khi nào dựng dạng lặp

lựi

- Để mụ tả cấu trỳc lặp với số lần biết trước, Pascal dựng cõu lệnh lặp for-do với hai dạng tiến lự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

* Chỳ ý: Trong vũng lặp khụng được chứa lệnh làm thay đổi giỏ trị của biến điều khiển

Tiết 13

* Hoạt động 3: Rèn luyện kỹ năng vận dụng lệnh For - do

HĐ 2: Vận dụng kiến thức

MT: Vận dụng câu lệnh For – do vào

biểu diễn thuật toán Tong_1a

GV: Ví dụ cài đặt thuật toán Tong_1a

HS: Nghe giảng, ghi bài

HS: Nghiên cứu 2 ví dụ

Trang 9

GV: H·y so s¸nh hai thuËt to¸n trªn.

HS: Nh¾c l¹i kiÕn thøc cò vÒ thuËt to¸n

GV: Cñng cè thªm tr¶ lêi cña häc sinh

GV: ¸p dông vµo thuËt to¸n Tong_1a

h·y tr×nh bµy thuËt to¸n cña Tong_1b

HS: Lªn tr×nh bµy thuËt to¸n Tong_1b

Writeln(‘Tong s la: ’,S:8:4);

ReadlnEnd

VD2: NhËp vµo tõ bµn phÝm 2 sè nguyªn d¬ng M vµ N, tÝnh vµ ®a ra mµn h×nh tæng c¸c sè chia hÕt cho 3 hoÆc 5 trong ph¹m vi tõ M->N.

Đặt vấn đề:

Treo nội dung bài toán Tong_2 lên bảng

- GV: Sự khác nhau về giới hạn lặp của

bài toán này với bài toán 1?

3 LÆp víi sè lÇn ch a biÕt tr íc C©u

lÖnh While do.–Cấu trúc chung:

While <điều kiện> do <câu lệnh lặp>;

Trang 10

- HS: Quan sỏt suy nghĩ và trả lời.

Bài toỏn 1: Lặp đến khi N>100

Bài toỏn 2: Lặp đến khi điều kiện 1/

(1+N)<0.0001 được thỏa món

- GV: Nhận xét và đa ra kết luận.

* KL: Qua vớ dụ ta thấy cú một dạng bài

toỏn cú sự lặp lại một số lệnh nhưng

khụng biết trước được số lần lặp Cần cú

một cấu trỳc điều khiển lặp lại một cụng

việc nhất định khi thỏa món một điều

- GV: Đối với bài lập trỡnh này cõu lệnh

sau do ta sử dụng là cõu lệnh đơn hay cõu

- Chú ý: Trong cấu trúc lặp While do

phải có lệnh tăng biến chỉ số.

* ý nghĩa: Khi điều kiện còn đúng thì

cong thực hiện câu lẹnh sau Do sau đó lại

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

* Vớ dụ 1: Tớnh và đưa kết quả ra màn

hỡnh tổng:

1

2

1 1

1 1

N a a

a a

S

+ +

+ + +

0001 0

1 <

+N a

Vớ dụ 2: Tỡm ƯCLN của hai số nguyờn

dương M, NPhõn tớch để xỏc định <điều kiện> và

Trang 11

- Nhắc lại cấu trỳc lệnh lặp với số lần biết trước trong Pascal.

- Về nhà dựng ngụn ngữ lập trỡnh Pascal để thực hiện hai thuật toỏn Tong_1a

và Tong_1b SGK/43.- Xem trước vớ dụ 1 và vớ dụ 2 SGK/44-45.

- Viết một chơng trình Pascal sử dụng cấu trúc rẽ nhánh

- Soạn thảo, lu, dịch, sửa lỗi và thực hiện chơng trình

- Đọc, hiểu đoạn chơng trình

2 Kỹ năng:

- Rèn luyện cho HS có khả năng đọc hiểu chơng trình

- Tổ chức trong phòng máy để HS có đợc các kỹ năng cơ bản trong việc bớc đầu làm quen với “Môi trờng Turbo Pascal và lập trình sau này”

3 Thái độ:

- Có thái độ tích cực trong giờ thực hành

- Biết vai trò quan trọng của giờ thực hành đầu tiên

- Bảo quan phòng máy theo sự chỉ đạo của GV

II Chuẩn bị:

- GV: Giáo án, tài liệu, SGK, SGV và đồ dùng dạy học

- HS: Tìm hiểu nội dung bài thực hành ở nhà và các kiến thức có liên quan

III /các b ớc lên lớp

1 ổ n định tổ chức :

Trang 12

- Xem nội dung bài tập và thực hành.

* Những yêu cầu về kiến thức, kỹ năng,

thái độ của học sinh

- Nhấn phím F7 liên tục khi thực hiện đến

câu lệnh nào sẽ có một vết sáng đi đến

Trang 13

•Ôn lại toàn bộ CT đã học giở sau ôn tập cuối năm Ngày soạn: 21/11/2009

- Khơi gợi lòng ham muốn yêu thích học lập trình

- Rèn luyện đức tính cần cù, chăm chỉ và có t duy khái quát

II - Chuẩn bị

Gv: Chuẩn bị các kiến thức liên quan, một số bài toán đơn giản

Hs: Xem lại các KN, cấu trúc, hoạt động của câu lệnh rẽ nhánh và lặp đã học

III - Ph ơng pháp : - Gợi mở vấn đáp

Trang 14

11A7 16

2.Kiểm tra bài cũ ( Lồng vào bài mới)

3.Bài tập

Bài tập 4: Hãy viết câu lệnh re nhánh để

If y>=x then z: =x+y Else z:= 0.5;

b) If sqr(x-a)+sqr(y-b)<= sqr(r) then z:=abs(x)+abs(y)

3

2 2

For n:=1 to 50 do Y:=Y+n/(n+1); Writeln(‘ tong Y=’,Y:8:2);

ReadlnEnd

b) Program bt5b;

Trang 15

Gv: Em nhận xét bài toán này sử dụng cấu

trúc nào?

Hs:

Gv: Hãy khai baos các biến sử dụng một

biến để tính giai tha?

While not(1/giaithua< 0.000002) do Begin

Trang 17

Ch¬ng IV : d÷ liÖu cã cÊu tróc

Ngµy so¹n: 26/11/2009

Ngµy gi¶ng: 28/11/2009

TiÕt : 18- 21

Trang 18

Bài 11 Kiểu mảng

I mục tiêu của bài:

1 Kiến thức

- Hiểu khái niệm mảng một chiều và mảng hai chiều

- Hiểu cách khai báo và truy cập đến các phàn tử trong mảng

- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính

- Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình

II Chuẩn bị của Giáo viên và học sinh:

1 Giáo viên: SGK, giáo án, STK (máy chiếu nếu có)

2 Học sinh: SGK, chuẩn bị trớc bài ở nhà

III Ph ơng pháp giảng dạy

Trang 19

* Hoạt động 1: Trình bày cho HS biết khái niệm của kiểu mảng một chiều.

- GV: ĐVĐ Với những kiểu dự liệu đã

biết, làm thế nào để lu trữ đợc một dãy

số?

- HS: Suy nghĩ và trả lời.

- GV: Các ngôn ngữ lập trinhg thờng

cung cấp một số kiểu dự liệu đợc xây

dựng từ những kiểu dự liệu chuẩn đợc gọi

là kiểu dự liệu có cấu trúc Bây giờ chúng

ta tìm hiểu kiểu mảng một chiều

- GV: Đa ra một số ví dụ cần lập trình đa

ra một dãy các số nguyên, hãy tìm cách

l-u trữ một dãy số ngl-uyên trong lập trình?

Bằng cách nào lu trữ một dãy các số

nguyên dới dạng bảng?

- HS: Suy nghĩ và trả lời câu hỏi

- GV: Nhận xét câu trả lời của HS sau đó

đa ra khái niệm mảng một chiều và một

số yếu tố liên quan

- Với mảng một chiều ta cần quan tâm

Trang 20

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Đứng tại chỗ trả lời câu hỏi

- GV: Ghi nháp lên bảng

- GV: Ghi hai chơng trình lên bảng và

Phân tích rõ hai chơng trình để HS nhận

thấy sự tiện lợi khi sử dụng mảng

- HS: Trong khi GV phân tích hai chơng

trình, HS đa ra ý kiến nhậm xét hai chơng

trình

+ Cách khai báo biến mảng một chiều.+ Cách truy cập đến từng phần tử trong mảng

* Xét hai ví dụ:

+ Ví dụ 1: Nhập vào nhiệt độ (trung bình)

của mỗi ngày trong tuần Tính và đa ra màn hình nhiệt độ trung bình của tuần và

số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong tuần?

If t1 > TB then Dem :=dem + 1;

If t2 > TB then Dem :=dem + 1;

If t3 > TB then Dem :=dem + 1;

If t4 > TB then Dem :=dem + 1;

If t5 > TB then Dem :=dem + 1;

If t6 > TB then Dem :=dem + 1;

If t7 > TB then Dem :=dem + 1;Writeln(‘Nhiet do trung binh tuan

+ Ví dụ 2: Nhập vào nhiệt độ (trung bình)

của mỗi ngày trong năm Tính và đa ra màn hình nhiệt độ trung bình của năm và

Trang 21

- GV: Nhận xét ý kiến của HS và đa ra ý

kiến để HS hiểu rõ hơn sự cần thiết của

mảng một chiều trong cài đặt thuật toán

số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong năm?

Program Nhietdo_Nngay;

Uses Crt;

Var Nhietdo : Array[1 365] of Integer;

Dem, i, n: Byte; Tong, TB:Real;

Begin

Write(‘Nhap so ngay n = ’); readln(n);Tong:=0; Dem:=0

For i:=1 to n do Begin

Write(Nhap nhiet do ngay thu

If Nhietdo[i]>TB then dem:=dem+1;

Writeln(‘Nhiet do trung binh ’,n,’ ngay

* Hoạt động 2: Giới thiệu cách hai báo mảng một chiều và Phân tích một số các ví dụ

để HS hiểu và biết cách vận dụng khai báo mảng một chiều trong cài đặt

* ổn định lớp: (1 phút)

- Kiểm tra bài cũ (lồng trong bài

a

Khai báo mảng một chiều

* Cách 1: Khai báo gián tiếp.

Trang 22

- GV: Đặt vấn đề, và đa ra cách khai báo

mảng một chiều trong ngôn ngữ lập trình

Pascal Giải thích các từ khoá mới

- GV: Khai báo bằng cách nào thuận tiện

hơn?

- HS: Suy nghĩ và trả lời.

- GV: Tuỳ vào từng trờng hợp cụ thể

những thờng sử dụng cách 2

- GV: Lấy ví dụ cụ thể để HS truy vấn

đến các phần tử trong mảng, sau đó lấy

một số ví dụ có sử dụng kiểu mảng trong

cài đặt

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Suy nghĩ và trả lời

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán tìm

max?

Type <tên kiểu mảng>=array[<chỉ số

đầu> <chỉ số cuối>] of <kiểuphần tử>;

Var <ds biến mảng> : <tên kiểu mảng>;

* Ví dụ:

Type nhietdo = array[1 365] of integer; Var A: nhietdo;

* Cách 2: Khai báo trực tiếp

Var <Ds biến mảng> : array[<chỉ số

đầu> <chỉ số cuối>] of <kiểuphần tử>;

+ Kiểu chỉ số thờng là đoạn số nguyên liên tục có n1 n2, với n1 là chỉ số đầu, n2

là chỉ số cuối

+ Kiểu phần tử là kiểu dự liệu của các phần tử trong mảng

+ Để truy cập đến các phần tử trong mảng, ta làm:

Trang 23

- GV: Vừa viết chơng trình vừa phân tích

cho HS hiểu rõ cách thực hiện chơng

trình GV trình bày rõ các thao tác khi

viết chơng trình

- GV: Phát vấn HS về kiến thức đã học ở

những bài trớc để xây dựng bài toán mới

- HS: Xem lại toàn bộ kiến thức đã học

Var A: Array[1 100] of Integer;

N, i, Vt: Byte; Max: Integer;

Begin

Write(‘Nhap so cac phan tu n = ‘);

Readln(n);

For i:=1 to n do Begin

- KT bài cũ: Hãy viết cách cú pháp khai

báo mảng một chiều và trình bày chức

năng các từ khoá trong cú pháp khai báo?

b Các ví dụ (Tiếp)

* Ví dụ 2: Sắp xếp dãy các số nguyên

bằng thuật toán tráo đổi

- Input: Số nguyên dơng n, và dãy A1,

A2, ,An

Trang 24

- GV: Em nào hãy xác định Input và

Output của bài toán sắp xếp?

- HS: Suy nghĩ và trả lời.

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán sắp

Var A: Array[1 100] of Integer;

N,i,j: Byte; tg: Integer;

Begin

Write(‘Nhap so cac phan tu n = ‘);

Readln(n);

For i:=1 to n do Begin

Write(‘A[‘,i,’]= ‘); readln(a[i]);

End;

For i:=1 to n-1 do For j:=i+1 to n do

If A[i]>A[j] then Begin

Tg:=A[i]; A[i]:=A[j]; A[j]:=tg;

End;

Writeln(‘Mang sau khi sap xep la’);

For i:=1 to n do Write(A[i]:5);

Trang 25

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Suy nghĩ và trả lời.

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán tìm

dãy A, ta so sánh k với số hạng AGiữa trong

đó Giữa = (n+1/2) Khi đó sảy ra 1 trong 3 trờng hợp

+ Nếu AGiữa=k thì Giữa là chỉ số cần tìm Việc tìm kiếm kết thúc

+ Nếu Agiữa>k thì việc tìm kiếm trong phạm vi từ A1,A2, ,AGiữa

+ Nếu Agiữa<k thì việc tìm kiếm trong phạm vi từ AGiữa, Agiữa+1, ,An

+ Việc tìm kiếm sẽ lặp lại một số lần hoặc đã tìm thấy khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng

Program VD2;

Var A: Array[1 250] of Integer;

N, i, Dau, Cuoi, Giua: Byte;

k: Integer; ok: Boolean;

Begin

Write(‘Nhap so cac phan tu n = ‘);

Readln(n);

For i:=1 to n do Begin

Write(‘A[‘,i,’]= ‘); readln(a[i]);

End;

Write(‘Nhap so k = ’); Readln(k);

Dau:=1; Cuoi:=n; ok:=false;

While Dau <=Cuoi and not ok do Begin

If ok then Writeln(‘Chi so can tim

la:’,Giua) Else Writeln(‘Khong tim

Trang 26

Readln;

End.

Tiết 21

- GV: Đặt vấn đề, và đa ra những vấn đề

cần thiết về nlu trữ dự liệu dới dạng bảng

để các em thấy nhu cầu sử dụng mảng hai

cột và kiểu của mỗi phần tử trong mảng

- GV: Gọi HS lên bảng khai báo một số

biến mảng hai chiều theo yêu cầu của

GV

2 Kiểu mảng hai chiều

- KN: Mảng hai chiều là một bảng các phần tử cùng kiểu

- Với mảng hai chiều ta cần quan tâm đến:+ Tên kiểu mảng hai chiều

+ Số lợng các phần tử của mỗi chiều trong mảng

+ Kiểu dữ liệu của các phần tử

+ Cách khai báo biến mảng hai chiều.+ Cách truy cập đến từng phần tử trong mảng

a Khai báo mảng hai chiều.

* Cách 1: Khai báo gián tiếp.

Type <tên kiểu mảng>=array[<Kiểu chỉ

* Cách 2: Khai báo trực tiếp

Var <Ds biến mảng> : array[<Kiểu chỉ

số hàng>,<Kiểu chỉ số cột>] of <kiểuphần tử>;

* Ví dụ:

Var A : array[1 100,1 100] of integer;

Trang 27

- HS: Lên bảng và làm theo yêu cầu của

GV

+ Để truy cập đến các phần tử trong mảng, ta làm:

<Tên biến mảng>[chỉ số hàng,chỉ số cột]

* Ví dụ: A[2,13], B[23,55],…

- GV: Viết chơng trình để HS có thể dễ

dàng nhận ra các thao tác phải thực hiện

khi viết chơng trình Và giải thích và

phân tích các câu lệnh trong chơng trình

và cách thực hiện của các câu lệnh

- HS: Chú ý nghe giảng và ghi bài

- GV: Vừa viết chơng trình, vừa phát vấn

Program Cuu chuong;

Var A: Array[1 9,1 10] of integer;

i,j: Byte;

Begin For i:=1 to 9 do For j:=1 to 10 do

A[i,j]:=i*j;

For i:=1 to 9 do Begin

- Nhắc lại một số khái niệm mới

- Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 đồng thời gọi bốn HS nhắc lạ

Trang 28

2 Kĩ năng: Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong

lập trình, cụ thể:

+ Khai báo kiểu dữ liệu mảng một chiều

+ Nhập/xuất dữ liệu cho mảng

+ Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử

- Biết giải một số bài toán cơ bản thường gặp:

+ Tính tổng các phần tử thoả mãn điều kiện nào đó

+ Đếm số các phần tử thoả mãn điều kiện nào đó

+ Tìm phần tử lớn nhất, nhỏ nhất

3 Thái độ

- Góp phần rèn luyện tác phong, tư duy lập trình:

- Tự giác, tich cực, chủ động và sáng tạo trong tìm kiếm kiến thức

1 Tìm hiểu chương trình ở câu a,

sách giáo khoa, trang 63 và chạy thử

chương trình

1 Quan sát, chú ý và trả lời

Trang 29

- Chiếu chương trình lên bảng.

- Hỏi: Khai báo Uses CRT; có ý

nghĩa gì?

- Hỏi: Myarray là tên kiểu dữ liệu

hay tên biến?

- Hỏi: Vai trò của nmax và n có gì

- Thực hiện lại chương trình lần cuối

để học sinh thấy kết quả

2 Sửa chương trình câu a để được

chương trình giải quyết bài toán ở

câu b

- Chiếu lên màn hình các lệnh cần

thêm vào chương trình ở câu a

- Hỏi: Ý nghĩa của biến Posi và neg?

- Hỏi: Chức năng của lệnh?

If a[i]>0 then posi:=posi+1

else if a[i]<0 then neg:=neg+1;

- Yêu cầu học sinh thêm vào vị trí

cần thiết để chương trình đếm được

số

- Khai báo thư viện chương trình con Crt để

sử dụng được thủ tục Clrscr;

- Tên kiểu dữ liệu

- nmax là số phần tử tối đa có thể chứa của biến mảng a n là số phần tử thực tế của a

- Lệnh khai báo kiểu và khai báo biến

- Quan sát chương trình thực hiện và kết quả trên màn hình

- Lệnh sinh ngẫu nhíên giá trị cho mảng a từ -299 đến 299

- In ra màn hình giá trị của từng phần tử trong mảng a

- Cộng các phần tử chia hết cho k

- Có số lần đúng bằng số phần tử a[i] chia hết k

- Quan sát giáo viên thực hiện chương trình

- Dùng để lưu số lượng đếm được

- Đếm số dương hoặc đếm số âm

- Chỉ ra vị trí cần thêm vào trong chương trình

- Lưu chương trình Thực hiện chương trình

và thông báo kết quả

Trang 30

- Yêu cầu học sinh gõ nội dung và

lưu lại với tên caub.pas Thực hiện

chương trình và báo cáo kết quả

2 Hoạt động 2: Rèn luyện kĩ năng lập trình.

1 Lấy một ví dụ thực tiễn: Người mù

tìm viên sỏi có kích thước lớn nhất

trong một dãy các viên sỏi để gợi ý

cho học sinh thuật toán tìm giá trị lớn

- Hỏi: Nếu muốn tìm phần tử lớn nhất

với chỉ số lớn nhất ta sửa ở chỗ nào?

3 Đặt yêu cầu mới: Viết chương trình

- Yêu cầu học sinh nhập dữ liệu vào

của giáo viên và báo kết quả

1 Theo dõi ví dụ của giáo viên

- So sánh lần lượt từ trái sang phải, giữ lại chỉ số của phần tử lớn nhất

2 Quan sát chương trình, suy nghĩ và trả lời

- Giữ lại chỉ số của phần tử có giá trị lớn nhất

- Sau khi tìm được giá trị lớn nhất

- Soạn chương trình vào máy Thực hiện chương trình và thông báo kết quả

- Nhập dữ liệu vào và thông báo cho giáo viên dữ liệu ra

Trang 31

- Đánh giá kết quả của học sinh.

IV Củng cố

1 Những nội dung đã học

Một số thuật toán cơ bản:

+ Tính tổng các phần tử thoả mãn điều kiện nào đó

+ Đếm số các phần tử thoả mãn điều kiện nào đó

+ Tìm phần tử lớn nhất, nhỏ nhất

2 Câu hỏi và bài tập về nhà

- Xem nội dung của bài chuÈn bÞ cho thi häc kú

……… Ngµy so¹n: 26/11/2009

1 Chuẩn bị của giáo viên

- Máy chiếu qua đầu, bìa trong, sách giáo khoa

2 Chuẩn bị của học sinh

- Sách giáo khoa, một số chương trình bài tập

III HOẠT ĐỘNG DẠY-HỌC

Trang 32

For lùi.

While <> do

- Array

2 Hoạt động 2: Rèn luyện kĩ năng.

Trang 33

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

- Chiếu nội dung đề bài lên bảng

- Chia lớp làm hai nhóm

Nhóm 1: Nêu câu hỏi phân tích

Nhóm 2: Trả lời câu hỏi phân tích

- Yêu cầu: Viết chương trình hoàn

thiện lên bìa trong

- Thu phiếu học tập, chiếu kết quả

lên bảng Gọi học sinh của nhóm

khác nhận xét đánh giá và bổ sung

3 Chuẩn hóa kiến thức bằng

chương trình mẫu của giáo viên

- Thảo luận theo nhóm để viết chương trình

- Báo cáo kết quả

- Nhận xét, đánh giá và bổ sung những thiếu sót của nhóm khác

3 Theo dõi và ghi nhớ

IV ĐÁNH GIÁ CUỐI BÀI

1 Những nội dung đã học

- Giáo viên yêu cầu học sinh nhắc lại một số nội dung chính đã được ôn tập trong tiết học

2 Câu hỏi và bài tập về nhà

- Chuẩn bị kiến thức cho tiết sau kiểm tra học kỳ 1: Xem lại toàn bộ các kiến thức đã được ôn tập, đặc biệt chú trọng cấu trúc lặp và rẽ nhánh, kiểu mảng

Bµi kiÓm tra häc kú i

M«n : Tin häc

Trang 34

1 5 ,

x

y z x

n

Bµi lµm

Trang 36

- Củng cố lại các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng.

- Làm quen với thuật toán sắp xếp đơn giản

Trang 37

2 Chuẩn bị của học sinh

- Sách giáo khoa, chương trình đã được viết sẵn

III HOẠT ĐỘNG DẠY-HỌC

1 Hoạt động 1: Tìm hiểu chương trình diễn đạt của thuật toán sắp xếp.

1 Gợi ý cho học sinh thuật toán sắp

xếp tăng dần

- Lấy một ví dụ thực tiễn: Người mù

sắp xếp một dãy các viên bi theo kích

thước không giảm

- Yêu cầu: Vạch ra các bước để sắp

xếp các phần tử của một mảng không

giảm

2 Tìm hiểu chương trình ví dụ, sách

giáo khoa, trang 65

1 Chú ý theo dõi những dẫn dắt của giáo viên

để trả lời câu hỏi

- Lần lượt lấy từng phần tử từ trái qua phải

- Cứ mỗi phần tử ta đem so sánh lần lượt với các phần tử đứng bên phải của nó

- Nếu nhỏ hơn thì đổi chỗ

2 Quan sát chương trình, suy nghĩ câu hỏi và trả lời

- Biến i, j dùng làm chỉ số

- Mỗi vòng lặp For ứng với mỗi phép duyệt lần

Trang 38

- Chiếu chương trình ví dụ lên bảng.

- Hỏi: Vai trò của biến i, j trong

chương trình? mỗi vòng lặp For

trong đoạn chương trình sắp xếp có ý

- Đặt yêu cầu mới: Khai báo thêm

biến nguyên Dem và bổ sung vào

chương trình đoạn lệnh cần thiết để

biến Dem tính số lần thực hiện tráo

đổi trong thuật toán In kết quả tìm

được ra màn hình

- Hỏi: Đoạn chương trình nào dùng

để thực hiện tráo đổi giá trị?

- Yêu cầu hoc sinh viết lệnh để đếm

- Yêu cầu học sinh nhập dữ liệu vào

của giáo viên và thông báo kết quả

- Đánh giá kết quả của học sinh

lượt

- Dùng để đổi giá trị của hai phần tử a[i] với a[i+1]

- Quan sát giáo viên thực hiện chương trình

- Chương trình sắp xếp dãy số thao thứ tự không giảm

3 Quan sát yêu cầu mới, chú ý định hướng giải quyết của giáo viên

tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg;

- Dem := Dem+1;

- Ngay sau đoạn lệnh tráo đổi

- Soạn chương trình vào máy, thực hiện chương trình và thông báo kết quả

- Nhập dữ liệu theo yêu cầu của giáo viên, thực hiện chương trình và thông báo kết quả sau khi thực hiện

2 Hoạt động 2: Rèn luyện kĩ năng nhận xét, phân tích và đề xuất cách giải bài toán

sao cho chương trình chạy nhanh hơn

Trang 39

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

- Chiếu đề bài lên bảng

- Yêu cầu: Xác định dữ liệu vào, dữ

- Thực hiện chương trình để học sinh

biết thời gian thực hiện chương trình

và kết quả của chương trình

- Hỏi: Trong chương trình phải thực

hiện bao nhiêu phép cộng?

- Hỏi: Có cách nào để cải tiến?

- Lệnh này được thay lệnh nào trong

chương trình? Viết ở vị trí nào?

3 Yêu cầu: Viết chương trình hoàn

thiện

4 kết luận: Cùng một bài toán, có

nhiều cách giải quyết khác nhau

Người lập trình cần chọn cách sao

cho máy thực hiện nhanh nhất

1 Quan sát đề bài và tả lời câu hỏi

- Vào: Mảng A gồm n phần tử

- Ra: Mảng B gồm n phần tử

- Tại vị trí i ta tính tổng giá trị các phần tử từ

1 đến i

2 Quan sát chương trình trên bảng

- Quan sát giáo viên thực hiện, nhận xét về thời gian thực hiện chương trình

- Phải thực hiện n(n+1)/2 phép cộng

- Để tính bước thứ i, ta sử dụng kết quả đã tính ở bước thứ i-1

B[i]:=B[i-1]+A[i];

- Thay đoạn lệnhFor j:=1 to i do B[i]:=B[i]+A[j];

3 Soạn chương trình vào máy, thực hiện chương trình và thông báo kết quả

- Nhận xét về thời gian thực hiện của chương trình này so với chương trình trước khi cải tiến

IV Củng cố- dặn dò

1 Những nội dung đã học

- Thuật toán sắp xếp đơn giản

- Một bài toán có thể có nhiều cách viết thành một chương trình Cần chọn cách

có số phép tính ít nhất

2 Câu hỏi và bài tập về nhà

Ngày đăng: 01/07/2014, 03:00

Xem thêm

HÌNH ẢNH LIÊN QUAN

Hình tổng: - tin 11 tu 12-47
Hình t ổng: (Trang 6)
Hình tổng: - tin 11 tu 12-47
Hình t ổng: (Trang 10)
Hình bảng cửu chơng. - tin 11 tu 12-47
Hình b ảng cửu chơng (Trang 27)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w