1. Trang chủ
  2. » Cao đẳng - Đại học

Giao an boi duong hoc sinh gioi tin hoc91415 - Website Trường THCS Lê Quý Đôn - Đại Lộc - Quảng Nam

47 47 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

Định dạng
Số trang 47
Dung lượng 76,39 KB

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

Nội dung

Bài tập 1:Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử... CŨNG CỐ:Nhắc lại cách khai báo kiểu mảng một chiều, muốn truy xuất phần tử thứ i ta làm [r]

Trang 1

C CHUẨN BỊ CỦA THẦY VÀ TRÒ

Gv: Giáo án, tài liệu tham khảo

Hs: Ôn tập các câu lệnh cơ bản

-S

Trang 2

S 2 ;

Const n:

S n ; END;

S 2 ;

Const n:

S n ; ELSE S n+1 ; END;

 Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải có cùng kiểu

Khi gặp lệnh CASE, chương trình sẽ kiểm tra:

- Nếu giá trị của biểu thức B nằm trong tập hằng const i thì máy sẽ thực hiện lệnh Si tương ứng

- Ngược lại:

+ Đối với dạng 1: Không làm gì cả

+ Đối với dạng 2: thực hiện lệnh Sn+1

FOR <biến đếm>:=<giá trị Max> DOWNTO <giá trị Min> DO S;

Sơ đồ thực hiện vòng lặp FOR:

Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:

Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm.

Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng lặp Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi.

Trang 3

2.2 Vòng lặp chưa biết trước số lần lặp

Repeat S;

Until B;

While B Do S;

Ý nghĩa:

Dạng REPEAT: Lặp lại công việc S cho đến khi biểu thức B=TRUE (đúng) thì dừng.

Dạng WHILE: Trong khi biểu thức B=TRUE (đúng) thì tiếp tục thực hiện công việc S.

Bài tập 1: Viết chương trình nhập vào một số nguyên và kiểm tra xem số vừa nhập là số chẵnhay số lẻ

Thoát

While

B

đú ng +

-Thoát

S;

Trang 4

Writeln('Phuong trinh vo nghiem')Else { Trường hợp a  0 }

1 17: Writeln(Nguoi nay la thieu nien');

18 39: Writeln(Nguoi nay la thanh nien');

40 60: Writeln(Nguoi nay la trung nien');

Else Writeln(Nguoi nay la lao nien');

Bài tập 1: Viết chương trình tính tổng S = 1+2+ +N

Bài tập 2: Viết chương trình nhập vào N số nguyên từ bàn phím Hãy tính và in ra màn hình tổngcủa các số vừa được nhập vào

Vì tính số Pi với độ chính xác Epsilon nên không biết trước được cụ thể số lần lặp, do đó

ta phải dùng vòng lặp WHILE hoặc REPEAT Có nghĩa là phải lặp cho tới khi t=4/(2*i+1) Epsilon thì dừng

Dùng phương pháp cộng dồn Cho vòng lặp FOR chạy từ 1 tới N, ứng với lần lặp thứ i, tanhập vào số nguyên X và đồng thời cộng dồn X vào biến S

**********************************************************

Trang 5

Ngày soạn: 28/09/2015

Tiết 4 - 5 – 6: THỰC HÀNH CÂU LỆNH CÓ CẤU TRÚC

A.MỤC TIÊU

1.Kiến thức: Học sinh biết vận dụng các câu lệnh có cấu trúc trong khi giải bài tập

2.Kỹ năng: Rèn kỹ năng vận dụng câu lệnh có cấu trúc vào giải các bài toán

3.Thái độ: Học sinh tích cực trong thực hành, linh họat khi vận dụng vào thực tế

Bài tập 1: Viết chương trình tính tổng S = 1+2+ +N

Hướng dẫn: Cho giá trị S ban đầu băng 0, biếm đếm I chạy từ 1 đến n và thực hiên phép công

dồn I vào biến S rồi in ra giá trị tỏng S

Trang 6

Bài tập 2: Viết chương trình nhập vào N số nguyên từ bàn phím Hãy tính và in ra màn hình tổng

của các số vừa được nhập vào

Bài tập 3: Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc Hãy

đếm xem có bao nhiêu số chẵn vừa được nhập vào

Ý tưởng:

Bài toán này không biết chính xác số lần lặp nên ta không thể dùng vòng lặp FOR Vì phảinhập vào số nguyên N trước, sau đó mới kiểm tra xem N=0? Do đó ta nên dùng vòng lặpREPEAT

Program Nhapso;

Trang 7

Write('Nhap vao mot so nguyen N= '); Readln(N);

If N MOD 2 = 0 Then dem:=dem+1;

Vì tính số Pi với độ chính xác Epsilon nên không biết trước được cụ thể số lần lặp, do đó

ta phải dùng vòng lặp WHILE hoặc REPEAT Có nghĩa là phải lặp cho tới khi t=4/(2*i+1) Epsilon thì dừng

Trang 8

4.CÚNG CỐ: Nhận xét giờ thực hành

5 HƯỚNG DẪN VỀ NHÀ

Bài tập1: Viết chương trình tìm USCLN và BSCNN của 2 số a, b được nhập vào từ bàn phím

Ý tưởng:

- Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng Lúc đó: USCLN=a

- BSCNN(a,b) = a*b DIV USCLN(a,b)

Bài tập 2: Viết chương trình tìm các số có 3 chữ số abc sao cho: abc = a3 + b3 + c3

Ý tưởng:

Dùng phương pháp vét cạn Ta biết rằng: a có thể có giá trị từ 19 (vì a là số hàng trăm),b,c có thể có giá trị từ 09 Ta sẽ dùng 3 vòng lặp FOR lồng nhau để duyệt qua tất cả các trườnghợp của a,b,c

Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra bộ abc đó

C CHUẨN BỊ CỦA THẦY VÀ TRÒ

Gv: Giáo án, phấn màu viết sơ đồ

Hs: Ôn tập các câu lệnh cơ bản

- Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng Lúc đó: USCLN=a

- BSCNN(a,b) = a*b DIV USCLN(a,b)

Trang 9

Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra bộ abc đó Uses crt;

Var a,b,c : Word;

Bài tập 3: Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó có phải là

số nguyên tố hay không

For i:=2 To N div 2 Do

If N MOD i=0 Thend:=d+1;

Trang 10

Delta<0: Phương trình vô nghiệm.

Delta=0: Phương trình có nghiệm kép: x = -b/(2*a)

Delta>0: Phương trình có 2 nghiệm phân biệt: x1,2 = (-bSQRT(Delta))/(2*a)

4.CỦNG CỐ:

Khi nào thì ta sữ dụng câu lệnh lặp While do

cần lưu ý trước else không có dấu ; cần chú ý khi khia báo kiểu dữ liệu

5 HƯỚNG DẪN, DẶN DÒ

Bài tập 1: Viết chương trình nhập vào ngày, tháng, năm Máy sẽ hiện lên ngày, tháng, năm hômsau

Gợi ý:

Biện luận theo tháng Gom tháng thành 3 nhóm: tháng có 31 ngày (1,3,5,7,8,10,12), tháng

có 30 ngày (4,6,9,11) và tháng 2 (có 28 hoặc 29 ngày tùy theo năm nhuận)

1.Kiến thức: Học sinh vận dụng các câu lệnh có cấu trúc trong giải bài tập

2.Kỹ năng: Rèn kỹ năng vận dụng câu lệnh có cấu trúc vào giải các bài toán

3.Thái độ: Học sinh tích cực trong thực hành, linh họat khi vận dụng vào thự tế

Trang 11

Bài tập 1: Viết chương trình nhập vào từ bàn phím: giờ, phút, giây Cọng thêm một số giây cũng

được nhập từ bàn phím Hãy in ra kết quả sau khi cọng xong

Gợi ý:

- Gọi số giây được cộng thêm là: ss Gán giây:=giây+ss

- Nếu giây60 thì: phút:=phút + giây DIV 60 và giây:=giây MOD 60

- Nếu phút60 thì: giờ:=giờ + phút DIV 60 và phút:=phút MOD 60

Bài tập 2: Viết chương trình tìm Max, Min của 4 số: a, b, c, d.

Bài tập 3: Viết chương trình in ra màn hình các số nguyên từ 1 đến 100 sao cho cứ 10 số thì

xuống dòng

Gợi ý:

Cho biến i chạy từ 1  100 In ra màn hình i và kiểm tra: nếu i MOD 10=0 thì WRITELN

Bài tập 4: Viết chương trình in ra màn hình bảng cữu chương.

Bài tập 5: Viết chương trình để tìm lời giải cho bài toán sau:

Trong giỏ vừa thỏ vừa gà,Một trăm cái cẳng bốn ba cái đầu

Hỏi có mấy gà mấy thỏ?

Bài tập 6: Viết chương trình để tìm lời giải cho bài toán sau:

Trăm trâu trăm bó cỏ

Bó lại cho trònTrâu đứng ăn nămTrâu nằm ăn baNăm trâu nghé ăn một

Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu nghé?

Bài tập 7: Viết chương trình nhập vào các số nguyên từ bàn phím cho đến khi nào gặp số nguyên

tố thì kết thúc nhập Tính tổng các số chẵn và trung bình cọng các số lẻ

Gợi ý:

Dùng vòng lặp REPEAT UNTIL NTo; để nhập Trong đó, NTo là biến kiểu Boolean đểkiểm tra số được nhập vào có phải là số nguyên tố hay không

Bài tập 8: Viết chương trình nhập vào một số nguyên dương Hãy thông báo lên màn hình số đó

có bao nhiêu chữ số và tổng các chữ số của số đó

Trang 12

Bài tập 10: Viết chương trình phân tích một số ra thừa số nguyên tố Ví dụ: N=100 sẽ in ra mànhình:

Bài tập 11: Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng chính

nó Viết chương trình kiểm tra xem một số được nhập vào từ bàn phím có phải là số hoàn thiệnhay không? Ví dụ: 6, 28 là các số hoàn thiện

Gợi ý:

- Tính tổng các ước số của N: từ 1  N div 2 lưu vào biến S

- Nếu S=N thì N là số hoàn thiện

1.Kiến thức: Học sinh biết vận dụng các câu lệnh có cấu trúc trong khi giải bài tập

2.Kỹ năng: Rèn kỹ năng vận dụng câu lệnh có cấu trúc For…do, While do và If then vào giải

Bài tập 1: nhap 2 so x,y từ bàn phím In ra man hinh tat ca cac so chan chia het cho 3 tu x toi y Đếm

cac so chan chia het cho 3 tu x toi y

Hướng dẫn : - Cho biến đếm chạy từ x đến y

- Nếu có số I nào chia hết cho 6 thì in ra màn hinh các só I đó

- Dùng biến d để đếm các số chăn chia hết cho 3

Trang 13

writeln('co ',dem,' so chan chia het cho 3 tu x toi y, do la:');

for i:= x to y do

if i mod 6=0 then write(i,',');

readln

end

Bài tập 2: Viết chương trình để tìm lời giải cho bài toán sau:

Trăm trâu trăm bó cỏ

Bó lại cho trònTrâu đứng ăn nămTrâu nằm ăn baNăm trâu nghé ăn một

Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu nghé?

Viết chương trình nhập 2 số tự nhiên x, y từ bàn phím, in ra màn hình:

a) Tất cả các ước chung lớn hơn 0 của x và y

b) Tổng các bình phương của các ước chung đó

c) BCNN của x và y

Hướng dẫn :

-cho i chạy từ x đến y, nếu có số x và số y cùng chia hết cho số i thì I là ước chung cua

x va y,-dùng biến S để lưu các giá trị cộng dồn của i*i vào để tính tổng bình phương

- trong khi có số a nào không chia hết cho x và y thì tăng a lên A là BCNN của x và y

Trang 14

while (a mod x<>0) or (a mod y<> 0) do

- Nhập vào tử t và mẫu m của phân số, gán a:=t;b:=m;

- Dùng vòng lặp repeat until để tìm UCLN của hai số t và m.

- Chia a/b cho UCLN đó

Bài tập 5 Nhập 2 số nguyên x và n bất kỳ Viết chương trình tính giá trị của x lũy thừa n.

Hướng dẫn : Nhập vào số x và n, gán I bằng 1 và biến gt bằng 1 Nhân dồn số x vào biến gt và

dung vòng lặp While do để tăng biếm đếm i

Trang 15

Bài tập 6 Viết chương trình nhập số nguyên n từ bàn phím (n < 100), in ra màn hình tổng các ước

số và số lượng ước của n

Bài tập 7

Bạn Tý có T đồng đem gởi ngân hàng với lãi suất hằng tháng là L % Sau mỗi tháng tiền lãi được nhập vào để tính lãi suất tháng sau Hỏi sau N tháng, số tiền của bạn Tý sẽ được tăng lên bao nhiêu đồng?

Hãy viết chương trình để giải bài toán trên, với T, L, N là các số nhập từ bàn phím

1.Kiến thức: Học sinh biết vận dụng các câu lệnh có cấu trúc trong khi giải bài tập

2.Kỹ năng: Rèn kỹ năng vận dụng câu lệnh có cấu trúc For…do, While do và If then vào giải

- Sử dụng kiến thức số lẻ đầu tiên bằng 1 Số lẻ sau bằng số trước cộng với 2

- Cho biến i có giá trị ban đầu bằng 1

- Dùng vòng lặp while do với điều kiện i < n và công việc bên trong là in i và tăng i lên 2

Trang 16

- Trong vòng lặp while nhất thiết phải có một câu lệnh làm thay đổi điều kiện lặp Ở đây lài:=i+2 Nếu không có sẽ dẫn đến trường hợp lặp vô hạn Chương trình chạy mãi mà không có lối

ra (Không thoát ra khỏi vòng lặp được)

c Nhận xét: Tiết kiệm được một biến i để chạy nhưng làm thay đổi n nên khi xuất ra chỉ có thể

xuất một câu chung chung “Giai thua cua n la:”

- Hai số chẵn liên tiếp hơn kém nhau 2 Hai số lẻ liên tiếp cũng vậy

- Thực hiện tính như giai thừa đơn nhưng với bước nhảy là 2

Trang 17

if i mod j =0 then nt:=false;

if nt then begin writeln(i); d:=d+1; end;

Thuật toán Euclid: Nếu a chia hết cho b (a chia b dư 0) thì UCLN(a,b) bằng b

Nếu a chia b dư r thì UCLN(a,b) = UCLN(b,r)

Trang 18

- Cần hai biến F_1 và F có giá trị đầu là 1, 1.

- Thực hiện lặp cho đến khi F >= n

- Do yêu cầu chỉ in các số bé hơn n nên khi in cần thêm một lệnh kiểm tra

Nhận xét: Giữa Repeat until có thể chứa nhiều lệnh mà không cần ghép.

Hãy phát triển bài tập theo hướng chỉ in một phần tử trong dãy lớn nhất nhưng bé hơn n hoặc theohướng phần tử thứ k của dãy

2.Kỹ năng: Rèn kỹ năng viết các bài toán sữ dụng chương trình con

3.Thái độ: Hoc sinh thấy được sự cần thiết phải viết chương trình con

B PHƯƠNG PHÁP

Nêu vấn đề, gợi mở, vấn đáp

C CHUẨN BỊ CỦA THẦY VÀ TRÒ

Gv: Giáo án, phấn màu viết sơ đồ

Hs: Ôn tập các câu lênh có cấu trúc

Trang 19

D TIẾN TRÌNH LÊN LỚP

1 Ổn định: Sĩ số

2 Kiểm tra bài cũ: Kiểm tra việc nắm các câu lệnh

3 Bài mới

I KHÁI NIỆM VỀ CHƯƠNG TRÌNH CON

Chương trình con (CTC) là một đoạn chương trình thực hiện trọn vẹn hay một chức năngnào đó Trong Turbo Pascal, có 2 dạng CTC:

 Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó

 Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu vô hướng, kiểu string hoặc kiểucon trỏ) Hàm có thể sử dụng trong các biểu thức

Ngoài ra, trong Pascal còn cho phép các CTC lồng vào nhau

II CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC

PROCEDURE THUTUC[(Các tham số)];

[Khai báo Const, Type, Var]

BEGIN

END;

FUNCTION HAM[(Các tham số)]:<Kiểu dữ liệu>;

[Khai báo Const, Type, Var]

- Kết quả của bài toán trả về 1 giá trị duy

nhất (kiểu vô hướng, kiểu string hoặc

- Lời gọi CTC không nằm trong các biểuthức tính toán

Ví dụ 1: Viết CTC để tính n! = 1.2 n

Ý tưởng: Vì bài toán này trả về 1 giá trị duy nhất nên ta dùng hàm.

Function GiaiThua(n:Word):Word;

Var P, i:Word;

Trang 20

III BIẾN TOÀN CỤC VÀ BIẾN ĐỊA PHƯƠNG

Biến toàn cục: là các biến được khai báo trong chương trình chính Các biến này có tác

dụng ở mọi nơi trong toàn bộ chương trình

Biến địa phương: là các biến được khai báo trong các CTC Các biến này chỉ có tác dụng

Trong bảng mã ASCII, số thứ tự của chữ cái hoa nhỏ hơn số thứ tự của chữ cái thường là

32 Vì vậy ta có thể dùng 2 hàm CHR và ORD để chuyển đổi

Trang 21

Bài tập 1: Viết hàm XMU(x:Real;n:Byte):Real; để tính giá trị xn.

Bài tập 2: Viết thủ tục PHANTICH(n:Integer); để phân tích số nguyên n ra thừa số nguyên tố.Bài tập 3: Viết hàm tìm BSCNN của 2 số nguyên a,b được khai báo như sau:

Function BSCNN (a,b:word ):word ;

1.Kiến thức: Học sinh vận dụng được cách viết chương trình con vào làm các bài tập

2.Kỹ năng: Rèn kỹ năng viết chương trình con

3.Thái độ: Hoc sinh thấy được sự cần thiết phải viết chương trình con

Trang 22

Bài 2:Nhập từ bàn phím số nguyên dương N(0<N<=10000) Viết chương trình kiểm tra xem số

đó có phải là số đối gương hay không? ( số đối gương gọi là số Palindrome, đó là số mà khi viếtcác chữ số của nó theo ngược lạivẫn đuwocj chính nó) Ví dụ, 12521 gọi là số đối gương

Trang 23

if ok then write(x, ‘ doi guong’)

else write(x, ‘ khong la doi guong’);

readln;

END

Bài 3: Viết chương trình xây dựng chương trình con tính số các ước của một số nguyên dương.

Sữ dụng chương trình con này tìm những số nguyên dương không vượt quá số nguyên dương hcho trước (h<=5000) có số lượng các ước nhiều nhất

Writeln(‘ so uoc nhieu nhat la:’,max_sl);

Writeln(‘ cac so co’,Max-sl,’ uoc la:’);

If sl_uoc(x) = max_sl then write(x:8);

Trang 24

Bài tập 2: Lập hàm đệ qui để tính dãy Fibonaci:

1.Kiến thức: Học sinh nắm được chương trình con sữ dụng thuật tóan đệ quy

2.Kỹ năng: Rèn kỹ năng viết các bài toán sữ dụng chương trình con đệ quy

3.Thái độ: Hoc sinh thấy được sự quan trọng của chương trình con đệ quy

B PHƯƠNG PHÁP

Nêu vấn đề, gợi mở, vấn đáp

C CHUẨN BỊ CỦA THẦY VÀ TRÒ

Gv: Giáo án, phấn màu viết sơ đồ

Hs: Ôn tập cách viết chương trình con

4.1 Khái niệm đệ qui

Trong một chương trình, một CTC có thể gọi một CTC khác vào làm việc Nếu như CTC

đó gọi lại chính nó thì gọi là sự đệ qui.

4.2 Phương pháp thiết kế giải thuật đệ qui

 Tham số hóa bài toán

 Tìm trường hợp suy biến

 Phân tích các trường hợp chung (đưa về các bài toán cùng loại nhưng nhỏ hơn)

Ví dụ: Viết hàm đệ qui để tính n! = 1.2 n

 Tham số hóa: n! = Factorial(n);

 Factorial(n) = n*Factorial(n-1) (trường hợp chung)

Trang 25

Giả sử đã xác định được k-1 phần tử đầu tiên của dãy: x1, ,xk-1 Ta cần xác định phần tửthứ k Phần tử này được xác định theo cách sau:

- Giả sử Tk: tập tất cả các giá trị mà phần tử xk có thể nhận được Vì tập Tk hữu hạn nên ta

có thể đặt nk là số phần tử của Tk theo một thứ tự nào đó, tức là ta có thể thành lập một ánh xạ 1-1

từ tập Tk lên tập {1, 2, , nk}

- Xét j{1, 2, , nk} Ta nói rằng “j chấp nhận được” nếu ta có thể bổ sung phần tử thứ j

trong Tk với tư cách là phần tử xk vào trong dãy x1, ,xk-1 để được dãy x1, ,xk

- Nếu k=n: Bộ (x1, ,xk) thỏa mãn yêu cầu B, do đó bộ này được thu nhận

- Nếu k<n: Ta thực hiện tiếp quá trình trên, tức là phải bổ sung tiếp các phần tử xk+1 vàodãy x1, ,xk

Sau đây là thủ tục đệ qui cho giải thuật quay lui:

If k=n Then <Ghi nhận một bộ giá trị>

Else THU(k+1); {Quay lui}

End;

End;

Begin

Write(‘n = ‘); Readln(n);

Ngày đăng: 02/04/2021, 01:11

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