Giáo án Tin học 11 cả năm
BÀI TẬP VÀ THỰC HÀNH 3
I. Mục Tiêu:
1. Về kiến thức:
- Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng.
2. Về kỹ năng:
- Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá trị của các phần tử mảng.
- Duyệt qua phần tử của mảng để xử lý từng phần tử.
- Nâng cao kĩ năng sử dụng một số kiểu 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 thường gặp:
+ Tính tổng các phần tử thoả mãn các đ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
hực hiện từng bước và xem kết quả trung gian. - Tự giác, tích cực và chủ động hoàn thành. II. Chuẩn bị 1. Chuẩn bị của giáo viên: SGK, Giáo án, Máy chiếu Projector 2. Chuẩn bị của học sinh: HS: SGK, vỏ III. Phương pháp Phương pháp trực quan IV. Nội dung 1. Ổn định lớp: 2. Kiểm tra bài cũ: Dùng câu lệnh lặp For_do tính tổng sau S=Xn với n được nhập vào từ bàn phím. 3.Bài mới: Hoạt động của Gv & Hs Nội dung Gv. Nêu nội dung , mục đích, yêu cầu của bài toán - bước đầu tiên để giải bài toán - Để xác định ta phải đặt các câu hỏi như thế nào? Gọi học sinh đặt câu hỏi và gọi học sinh trả lời Hs. Làm theo dẫn dắt của giáo viên Gv. Yêu cầu học sinh xác định Input/Output Nêu thuật toán Thảo luận nhóm viết chương trình Hs. Xđ Input/Output Viết thuật toán Viết chương trình theo nhóm Báo cáo kết quả Gv. Yêu cầu học sinh nhập dữ liệu dùng thử Hs. Làm bài theo yêu cầu. Bài 1 1. Xác định Input/Output - Input: hệ số a, b - Output: giải phương trình; 2. Thuật toán B1: Nhập hệ số a và b B2: - Nêu a=0 và b=0 thì thông báo phương trình vố số nghiệm. - Nếu a=0 và b0 thì thông báo phương trình vô nghiệm. - Nêu a0 thì phương trình có nghiệm X=-b/a; B3: Đưa ra và kết thúc. 3. Chương trình Program giaipt; Var a, b:integer; Begin Write(‘nhap he so a, b’);readln(a,b); If a=0 and b=0 then Write(‘phương trình vo so nghiem’); If a=0 and b0 then Write(‘phương trình vo nghiem’); If a0 then x:=-b/a; Write(x); readln End. Bài 2: Tính tích s=12* 22* 32*...*N2. Với N nhập từ bàn phím. Chương trình: program bt; var n,i:byte; s: longint; begin write('nhap n'); readln(n); s:=1; i:=1; while i<=n do begin s:=s*sqr(i); i:=i+1; end; write('tich la ',s); readln; end. Bài 3: Viết chương trình tính N! program gthua; var i, n: byte; s:word; begin writeln(‘ nhap vao so n’); readln(n); s:=1; for i:= 1 to n do s:=s*i; write(‘ giai thua cua n la:’, s); readln; end. 4. Củng cố - Nhắc lại cấu trúc câu lệnh rẽ nhánh If_then - Cho bài tập về nhà. 5. Hướng dẫn học sinh về nhà - Về nhà đọc trước bài “Kiểu mảng” Ngày soạn: 25/10/2014 Tiết 20 Chương 4: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG (Tiết 1) I. Mục Tiêu 1. Kiến thức - Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được một loại biến có chỉ số; - Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng - Biết được các thành phần trong khai báo kiểu mảng một chiều; - Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; - Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên; - Biết cách tham chiếu đến các phần tử của mảng một chiều. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. Chuẩn bị 1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều 2. Học sinh: sgk III. Phương pháp: - Đặt vấn đề,gợi mở thuyết giảng. IV. Nội dung 1. Ổn định lớp : 2. Kiểm tra bài cũ: Em hãy nêu các kiểu dữ liệu chuẩn đã học? 3. Bài mới Hoạt động của Gv & Hs Nội dung Trước khi vào bài, giáo viên đưa ra một số vấn đề cần giải quyết như sau : Với những kiểu dữ liệu như đã biết, làm thế nào để : Lưu trữ và xử lý một dãy số ? Lưu trữ và xử lý Họ và tên của một người ? Lưu trữ và xử lý bảng kết quả thi tốt nghiệp ? HS : Đưa ra các phương án để trả lời cho 3 câu hỏi trên . GV : Các ngôn ngữ lập trình 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 gọi là kiểu dữ liệu có cấu trúc . Chương này chúng ta sẽ tìm hiểu một số kiểu dữ liệu trong ngôn ngữ Pascal để trả lời 3 câu hỏi trên . GV : Đưa ra ví dụ, cần lập lập trình xử lý một dãy số nguyên, hãy tìm cách lưu trữ một dãy số nguyên trong khi lập trình ? Bằng cách nào để lưu trữ được thông tin dưới dạng bảng khi lập trình ? HS : Đưa ra ý kiến . GV : Đánh giá ý kiến của học sinh, sau đó đưa ra mục đích của việc sử dụng cấu trúc mảng trong chương trình . GV : Đưa ra khái niệm mảng một chiều và một số yếu tố liên quan trong lập trình nói chung . GV : Đi sâu phân tích hai chương trình để cho học sinh nhận thấy sự tiện lợi khi sử dụng mảng . HS : Trong khi giáo viên phân tích hai chương trình, học sinh sẽ đưa ra ý kiến nhận xét về 2 chương trình. GV : Đưa ra cách khai báo mảng một chiều trong ngôn ngữ Pascal, giải thích ý nghĩa của các từ khóa mới . GV : Khai báo bằng cách nào tiện lợi hơn ? HS : Thường thì học sinh trả lời cách 1 tiện lợi hơn ? GV : Tùy trường hợp cụ thể mà ta dùng cách 1 hay cách 2 nhưng thông thường ta sử dụng cách 1 . GV : Sử dụng một sồ hình ảnh trực quan minh họa cho học sinh cấu trúc mảng và chỉ số của phần tử Chỉ số 1 2 3 4 5 6 7 8 Giá trị 53 81 62 18 26 41 24 53 Đưa ra một số khai báo mảng trong Pascal . Trong lập trình thường có 2 loại mảng : Mảng một chiều . Mảng hai chiều . 1. Kiểu mảng một chiều - Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều ta cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử . Với mảng một chiều ta quan tâm đến : Tên mảng một chiều . Số lượng phần tử trong mảng . Kiểu dữ liệu của phần tử . Cách khai báo biến mảng một chiều . Cách truy cập vào từng phần tử của mảng . Xét ví dụ : Nhập vào nhiệt độ trung bình mỗi ngày trong tuần . Tính và đưa ra màn hình nhiệt độ trung bình của cả tuần và đếm số ngày có nhiệt độ lớn hơn nhiệt độ trung bình này . Quan sát hai chương trình viết bằng ngôn ngữ Pascal cùng để giải bài toán trên . Chương trình 1 : Không sử dụng kiểu mảng . Chương trình 2 : Sử dụng kiểu mảng một chiều . a> Khai báo mảng một chiều Trong ngôn ngữ Pascal, mảng một chiều được khai báo bằng hai cách như sau : Cách 1 : Var : Array[kiểu chỉ số] of ; Cách 2 : Type = Array [] of ; Var : ; Trong đó : Type là từ khóa dùng để khai báo biến, Array là từ khóa để khai báo mảng . 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 và n2 là chỉ số cuối. Kiểu thành phần là kiểu dữ liệu của phần tử mảng . Để truy cập vào phần tử mảng ta viết : [Chỉ số] Ví dụ : A[20] Truy cập phần tử mang chỉ số 20 trong mảng A . Ví dụ : Khai báo biến mảng thông qua kiểu mảng : Type ArrayInteger=Array[1..100] of Integer; ArrayReal=Array[1.50] of Real; Var A : Array[1..50]; B : Array[1..50] of Real; Khai báo mảng trực tiếp : Var A : Array[1..100] of Integer ; B : Arrat[1..50] of Real ; 4. Cũng cố - Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do - Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. 5. Hướng dẫn học sinh về nhà - Về nhà xem tiếp bài “Kiểu mảng” - Xem và chuẩn bị một số ví dụ SGK Ngày soạn: 28/10/2014 Tiết 21: Bài 11: KIỂU MẢNG (Tiết 2) I. Mục Tiêu 1. Kiến thức - Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được một loại biến có chỉ số; - Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng - Biết được các thành phần trong khai báo kiểu mảng một chiều; - Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; - Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên; - Biết cách tham chiếu đến các phần tử của mảng một chiều. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. Chuẩn bị 1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều 2. Học sinh: sgk III. Phương pháp: - Đặt vấn đề,gợi mở thuyết giảng. IV. Nội dung 1. Ổn định lớp : 2. Kiểm tra bài cũ: Mảng một chiều là gì? Nêu các cách khai báo biến mảng một chiều, chỉ rõ ý nghĩa của các thành phần. 3. Bài mới Hoạt động của Gv & Hs Nội dung GV : Đưa ra ví dụ . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) . GV soạn sẵn chương trình và cho học sinh quan sát chương trình . Nếu có nhiều thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra các thao tác cần phải thực hiện khi viết chương trình . GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) . GV soạn sẵn chương trình và cho học sinh quan sát chương trình . Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình . Một số ví dụ : Ví dụ 1 : Tìm phần tử lớn nhất của một dãy số nguyên . Input : Số nguyên dương N và dãy số A1, A2, .., AN Output : Chỉ số và giá trị của số lớn nhất trong dãy Ý tưởng : Đặt số A1 là số lớn nhất (max) Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max = A[i] vả lưu lại vị trí i . Chương trình như sau : Program timmax ; Uses crt ; var a : array[1..250] of integer ; n,i,max,csmax : Integer ; Begin clrscr ; Write('Nhap n = ') ; Readln(n) ; For i := 1 to n do Begin Write('a[',i,'] = ') ; readln(a[i]) ; End ; max := a[i] ; csmax := 1 ; For i := 2 to n do If a[i] > max then Begin max := a[i] ; csmax :=i ; End ; Writeln('Gia tri lon nhat : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ; Readln ; End . Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng thuật toán tráo đổi . Input : Số nguyên dương N và dãy số A1, A2, , AN Output : Dãy A được sắp xếp theo thứ tự không giảm . Ý tưởng : Đổi để đưa số lớn nhất về vị trí cuối cùng . Làm tương tự đối với những số còn lại . Chương trình như sau : Program sapxep ; Uses crt ; var A : Array[1..250] of integer ; n,i,j,tg : Integer ; Begin clrscr ; Write('Nhap so phan tu mang n = ') ; Readln(n) ; For i := 1 to n do Begin Write('A[',i,'] = ') ; readln(A[i]) ; End ; For j := n downto 2 do Begin For i := 1 to j-1 do If A[i] > A[i+1] then Begin tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ; End ; Writeln('day sau khi sap xep : ') ; For i := 1 to n do write(a[i]:8) ; readln ; End . Writeln('chi so ptu lon nhat : ',csmax); readln ; End . 4. Cũng cố, dăn dò - Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do - Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. 5. Hướng dẫn học sinh về nhà - Về nhà xem tiếp bài “Kiểu mảng” - Xem và chuẩn bị một số ví dụ SGK Ngày soạn: 03/11/2014 Tiết 22: Bài 11: KIỂU MẢNG(Tiết 3) I. Mục Tiêu 1. Kiến thức - Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được một loại biến có chỉ số; - Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng - Biết được các thành phần trong khai báo kiểu mảng một chiều; - Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; - Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên; - Biết cách tham chiếu đến các phần tử của mảng một chiều. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. Chuẩn bị 1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều 2. Học sinh: sgk III. Phương pháp: - Đặt vấn đề,gợi mở thuyết giảng. IV. Nội dung 1. Ổn định lớp : 2. Kiểm tra bài cũ: Khi nào nên dùng cách khai báo trực tiếp, Khi nào nên dùng cách khai báo gián tiếp 3. Bài mới Hoạt động của Gv & Hs Nội dung GV : Đưa ra ví dụ, yêu cầu học sinh đưa ra ý tưởng để giải bài toán. Ý tưởng: - Cho số lớn nhất là số đầu tiên: Max:=a[1]. - Duyệt qua các phần tử a[i], với i chạy từ 2 tới N: Nếu a[i]>Max thì thay Max:=a[i]; GV : Đưa ra ví dụ, yêu cầu học sinh đưa ra ý tưởng để giải bài toán. HS : Ý tưởng: Duyệt qua tất cả các phần tử A[i] trong mảng: Nếu A[i]<0 thì cộng dồn (A[i]) vào biến S. GV: Trong bài toán trên ta phải khai báo những biến nào? HS: Trả lời câu hỏi. GV: Nhận xét câu trả lời của học sinh và tổng hợp ý kiến. GV : tiến hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình GV : Đưa ra ví dụ, yêu cầu học sinh đưa ra ý tưởng để giải bài toán. HS : Ý tưởng: - Khởi tạo biến đếm = 0; - Duyệt qua tất cả các phần tử A[i] trong mảng: Nếu A[i] = y thì tăng biến đếm thêm 1 đơn vị GV: Trong bài toán trên ta phải khai báo những biến nào? HS: Trả lời câu hỏi. GV: Nhận xét câu trả lời của học sinh và tổng hợp ý kiến. GV : Tiến hành hoàn thành chương trình. GV : Đưa ra ví dụ, yêu cầu học sinh đưa ra ý tưởng để giải bài toán. HS : Ý tưởng: - Khởi tạo tổng ban đầu = 0; - Duyệt qua tất cả các phần tử A[i] trong mảng: Nếu A[i] chia hết cho cả 2 và 3 thì thực hiện việc cộng dồn A[i] vào tổng. GV: Trong bài toán trên ta phải khai báo những biến nào? HS: Trả lời câu hỏi. GV: Nhận xét câu trả lời của học sinh và tổng hợp ý kiến. GV : Tiến hành hoàn thành chương trình. Ví dụ 1 : Viết chương trình nhập vào mảng một chiều A gồm N số nguyên tìm giá trị lớn nhất của mảng A. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,Max:Integer; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; {Tìm phần tử lớn nhất} Max:=A[1]; For i:=2 To N Do If Max<A[i] Then Max:=A[i]; {In kết quả ra màn hình} Writeln(‘Phan tu lon nhat cua mang: ’, Max); Readln; End. Ví dụ 2 : Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm N phần tử. Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,S:Integer; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; S:=0; For i:=1 To N Do If A[i]<0 Then S:=S+A[i]*A[i]; Writeln(‘S= ’, S); Readln; End. Ví dụ 3: Viết chương trình nhập vào mảng A gồm N kí tự và nhập vào một kí tự bất kì y. Đếm xem kí tự y đó xuất hiện bao nhiêu lần trong mảng A. Program kitu; Uses crt; Var n,i,dem:integer;y:char; a:array[1..50]of char; Begin write('mang co bao nhieu ktu: ');readln(n); for i:=1 to n do begin write('[a',i,']=');readln(a[i]); end; dem:=0; write('ki tu muon tim: ');readln(y); for i:=1 to n do if a[i]=y then dem:=dem+1; if dem=0 then write('ko co pt ',y,' nao') else write('so pt tu ',y,' la:',dem); readln End. Ví dụ 4 : Viết chương trình tính tổng của các số chia hết cho cả 2 và 3 trong một mảng gồm N phần tử. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,S:Integer; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; S:=0; For i:=1 To N Do If (A[i] mod 2 = 0) and (A[i] mod 3 = 0) Then S:=S+A[i]; Writeln(‘S= ’, S); Readln; End. 4. Cũng cố - Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. 5. Hướng dẫn học sinh về nhà - Chuẩn bị một số bài tập trong sách bài tập Ngày soạn: 09/11/2014 Tiết 23 BÀI TẬP I. Mục Tiêu 1. Kiến thức: Củng cố lại các kiến thức cơ bản về kiểu dữ liệu mảng 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. Chuẩn bị 1. Giáo viên: giáo án, bảng phụ, sgk 2. Học sinh: sgk III. Phương pháp - Thuyết trình vấn đáp, gợi mở giải quyết vấn đề IV. Nội dung 1. Ổn định lớp : 2. Kiểm tra bài cũ: Lồng vào bài mới. 3. Bài mới Hoạt động của Gv & Hs Nội dung 1. Hoạt động 1: Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương trình có sẵn. 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. - 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ì khác nhau? - Hỏi: Những dòng lệnh nào dùng để tạo biến mảng a? - Thực hiện chương trình để học sinh thấy kết quả. - Hỏi: Lệnh gán a[i]:=random(300)-random(300) có ý nghĩa gì? - Hỏi: Lệnh For i:=1 to n do Write(A[i]:5); có ý nghĩa gì? - Hỏi: Lệnh For-Do cuối cùng thực hiện nhiệm vụ gì? - Hỏi: Lệnh s:=s+a[i]; được thực hiện bao nhiêu lần? - 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ố . - 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ả. 1. Quan sát, chú ý và trả lời. - 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 và kết quả trên màn hình. 2. Quan sát và chú ý theo dõi các câu hỏi của giáo viên: - Quan sát các lệnh và suy nghĩ vị trí cần sửa trong chương trình câu a. - 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ả. 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 nhất. - Yêu cầu: nêu thuật toán tìm phần tử có giá trị lớn nhất. 2. Tìm hiểu chương trình tìm chỉ số và giá trị lớn nhất. - Chiếu chương trình ví dụ, sách giáo khoa, trang 64. - Hỏi: Vai trò của biến j trong chương trình? - Hỏi: Nếu muốn tìm phần tử nhỏ nhất, cần sửa ở chỗ nào? - 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 đưa ra các chỉ số của các phần tử có giá trị lớn nhất. - Hỏi: Cần giữ lại đoạn chương trình tìm giá trị lớn nhất không? - Hỏi: Cần thêm lệnh nào nữa? - Hỏi: Vị trí thêm các lệnh đó? - Yêu cầu: Viết chương trình hoàn thiện. - 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ả. - Đánh giá kết quả của học sinh. 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. - Phép so sánh a[i]<a[j] - Chuyển thứ tự duyệt từ n-1 về 1. 3. Theo dõi yêu cầu, suy nghĩ các câu hỏi định hướng để viết chương trình. - Có. - Lệnh để in ra các chỉ số có giá trị bằng giá trị lớn nhất tìm được. - 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. 4. Cũng cố, dăn dò - Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. 5. Hướng dẫn học sinh về nhà - Về nhà xem trước bài tập thực hành số 3 Ngày soạn: 10/11/2014 Tiết 24 BÀI TẬP VÀ THỰC HÀNH 3 I. Mục Tiêu: 1. Về kiến thức: - Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng. 2. Về kỹ năng: - Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá trị của các phần tử mảng. - Duyệt qua phần tử của mảng để xử lý từng phần tử. - Nâng cao kĩ năng sử dụng một số kiểu 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 thường gặp: + Tính tổng các phần tử thoả mãn các đ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. Về tư duy và thái độ: - Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trìn
File đính kèm:
- Bai_12_Kieu_xau_20150727_121007.doc