Hoạt động3: Rèn luyện kỹ năng sử dụng biến mảng một chiềuđể giải quyết bài toán tìm kiếm

Một phần của tài liệu Giáo án Tin học 11 chuẩn KTKN_Bộ 19 full (Trang 51 - 53)

IV. Đánh giá cuối bài (5ph)

3.Hoạt động3: Rèn luyện kỹ năng sử dụng biến mảng một chiềuđể giải quyết bài toán tìm kiếm

nhị phân.

a. Mục tiêu: Hiểu thuật toán tìm kiếm nhị phân và vận dụng kiểu mảng một chiều để giải quyết bài toán.

b. Nội dung:

Bài toán: Cho dãy A gồm N số nguyên: a1,..., aN, đã đợc sắp xếp dãy thành dãy A không giảm. Tìm vị trí của phần tử trong dãy có giá trị bằng K.

c. Các bớc tiến hành

TG Hoạt động của gv Hoạt động của hs

15' 1. Chiếu nội dung bài tập 3 2. Gợi ý bằng các câu hỏi - Xác định bài toán? - Mô phỏng thuật toán.

- Dựa vào thuật toán đã học ở lớp 10, khi

- Theo dõi bài tập 3 trên bảng và suy nghĩ trả lời câu hỏi

- Input: N nguyên dơng và dãy A không giảm

- Output: Vị trí số hạng có giá trị bằng K hoặc thông báo không tìm thấy.

- Tìm thấy khi a[g]=k, vòng lặp while - do

Program Nhi_phan;

TG Hoạt động của Gv Hoạt động của HS

15' 1. Chiếu nội dung bài toán lên màn hình. 2. Gợi ý để giải quyết bài toán: - Xác định bài toán? - Thuật toán tìm max? - Mô phỏng thuật toán. - Dãy gồm N phần tử, để lu giá trị của N phần tử này, cần khai báo biến nh thế nào? - Để tìm đợc số lớn nhất, so sánh lần lợt các phần tử từ phần tử thứ hai đến phần tử thứ N so sánh với Max, vậy có thao tác nào đợc lặp đi lặp lại ở đây không?

- Lặp biết trớc số lần lặp hay không?

- Yêu cầu học sinh viết chơng trình hoàn chỉnh và một học sinh lên bảng viết chơng trình?

- Chạy chơng trình

- Theo dõi nội dung bài toán trên màn hình và trả lời câu hỏi. - Input: N nguyên dơng và dãy: a1,..., aN.

- Output: Max của dãy. - Thuật toán:

B1: Nhập N và dãy A1,..AN. B2: Max←a1, i←2

B3: Nếu i>N thì đa ra giá trị Max B4: Nếu ai> max thì Max←ai

B5: i←i+1, rồi quay lại B3

- Để lu giá trị của N phần tử, dùng mảng một chiều gồm N phần tử.

- Thao tác so sánh ai với Max đợc lặp đi lặp lại.

- Lặp biết trớc số lần lặp (N lần)

Program Tim_max; Uses crt;

Type mang_A = Array[1..100] Of Real; Var A: mang_A;

i,N,vt: Integer; ln: Real; Begin

Writeln('Nhap vao so phan tu cua mang(N<=50)');readln(N); Write('Gia tri cua cac phan tu trong day:');

for i:=1 to N do read(a[i]); ln:=a[1]; vt:=1;

for i:=2 to N do if a[i]> ln then

begin ln:=a[i];vt:=i; end;

writeln('So lon nhat cua day la: ',ln:5:0,'la phan tu thu:',vt); readln;

nào thì tìm thấy? và dùng vòng lặp nào? - Viết chơng trình?

uses crt;

const Nmax=300;

Type day=Array[1..Nmax] of integer; Var A: day;

N,i,k,d,c,g,vt:Integer; chua_thay:Boolean; Begin clrscr;

write('Nhap vao so phan tu cua day N='); readln(N); write('Nhap vao gia tri cua K='); readln(K);

writeln('Nhap cac phan tu cua day khong giam:'); for i:=1 to N do

Begin

write('Nhap phan tu thu i= ',i,' ,a[',i,']='); readln(A[i]);

End; d:=1; c:=N;vt:=0; chua_thay:=true;

while (d<=c) and chua_thay Do Begin g:=(d+c) div 2; if g>k then c:=g-1 else d:=g+1; if a[g]=k then Begin chua_thay:=false; vt:=g; end; end;

If not chua_thay then

writeln('So hang thu ',vt,'trong day co gtri bang k=',k) else writeln('Khong co so hang nao trong day bang ',k);

readln; End.

IV. Đánh giá cuối bài (5ph)

- Kiến thức đã học: Định nghĩa, và khai báo biến kiểu mảng một chiều. áp dụng đợc vào giải quyết các bài toán đơn giản đã học ở lớp 10.

Tiêt 21

Một phần của tài liệu Giáo án Tin học 11 chuẩn KTKN_Bộ 19 full (Trang 51 - 53)