I. MỤC ĐÍCH, YÊU CẦU
- Hiểu khả năng của ngôn ngữ lập trình bậc cao, phân biệt được với ngôn ngữ máy và hợp ngữ;
- Hiểu ý nghĩa và nhiệm vụ của chương trình dịch;
- Phân biệt được biên dịch và thông dịch.
II. PHƯƠNG PHÁP
Phát vấn kết hợp diễn giảng
III. PHƯƠNG TIỆN DẠY HỌC
SGK, SGV, bảng vẽ khổ lớn nếu có máy chiếu thì tốt.
IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP
1. Ổn định lớp (Kiểm tra sĩ số)
2. Ôn lại kiến thức cũ (nếu có)
chương trình. Yêu cầu HS lên bảng viết Ví dụ 2: Viết chương trình tính số ngày của năm N, biết rằng là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100. ? Hãy xác định bài toán? Hướng dẫn HS viết chương trình. Yêu cầu HS lên bảng viết Nếu đội tuyển VN thắng Indonesia thì đá tiếp tranh huy chương vàng với Thái Lan, nếu không thắng Indonesia thì sẽ tranh huy chương đồng với Mianma. Nếu.. thì .. nếu không .. thì . Nếu Nam làm bài tập sớm thì Nam sẽ được đi chơi. Nếu .. thì. Trước hết ta tính delta: D = b2 − 4ac; Nếu D không âm ta đưa ra các nghiệm. Trong trường hợp ngược lại, ta thông báo là phương trình vô nghiệm. Câu lệnh If . then .. Hai em lên bảng viết Điều kiện Câu lệnh True False Câu lệnh 2 Lên bảng viết chương trình Lên bảng viết chương trình Xét bài giải phương trình bậc 2 ax2 + bx + c = 0 (a ≠ 0) 2. Câu lệnh if ...... then........ a. Dạng thiếu if then ; Điều kiện Câu lệnh True False b. Dạng đủ if then else ; Ví dụ 1: if D < 0 then writeln( 'phuong trinh vo nghiem’); Ví dụ 2: if a mod 3 = 0 then write('a chia het cho 3’) esle write('a khong chia hết cho 3’); Ví dụ 3: Để tìm giá trị lớn nhất a và b có thể dùng hai cách sau: Dạng thiếu: if b >a then max := b; Dạng đủ: if b >a then max := b esle max:=a; 3. Câu lệnh ghép Câu lệnh ghép trong Pascal có dạng Begin ; End; Ví dụ: if D < 0 then writeln('phương trinh vo nghiem’) esle begin x1 :=(−b − sqrt(D))/(2*a); x2 := −b/a − x1; end; 4. Một số ví dụ Ví dụ 1: Program Giai_PTB2; Uses crt; Var a, b, c, D: real; x1, x2 : real; Begin Clrscr; Write(‘nhap a, b, c: ‘); Readln(a, b, c); D:=b*b - 4*a*c; if D < 0 then writeln('phương trinh vo nghiem’) esle begin x1 :=(−b − sqrt(D))/(2*a); x2 := −b/a − x1; writeln(‘x1= ‘, x1:6:2,’x2 = ‘, x2:6:2); end; readln End. Ví dụ 2: Program Nam_nhuan; Uses crt; Var N, SN: integer; Begin clrscr; write(‘nhap nam: ’); readln(N); if (N mod 400 = 0) or ((N mod 4 = 0) and ((N mod 100 0)) then SN: =366 esle SN:=365; Write(‘so ngay cua nam:‘, N, ‘la:’, SN); Readln End. V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Cấu trúc rẽ nhánh if .... then Câu lệnh ghép 2. Dặn dò Về nhà học trước và xem trước bài 10. VI. KINH NGHIỆM Tiết CT: 11 Tuần: 11 Ngày soạn: 24.09.2013 Ngày dạy: 24.10.2013 BÀI THỰC HÀNH 2 I. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức - Xây dựng chương trình có sử dụng cấu trúc rẽ nhánh. − Tiếp tục làm quen với việc hiệu chỉnh chương trình. 2. Kĩ năng Rèn luyện kĩ năng sử dụng cấu trúc rẽ nhánh trong việc lập trình giải bài toán cụ thể. 3. Thái độ Tự giác, tích cực, chủ động trong thực hành. II. PHƯƠNG PHÁP Nêu vấn đề giải quyết vấn đề III. PHƯƠNG TIỆN DẠY HỌC Phòng máy thực hành vi tính , máy chiếu. IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP 1. Ổn định lớp (kiểm tra sĩ số) 2. Nội dung HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Gợi ý để HS nêu khái niệm về bộ số Pitago: ? Thế nào là bộ số Pi ta go ? Lấy ví dụ bộ số Pitago cụ thể? ? Vậy để kiểm tra bộ số có phải là bộ số Pi ta go ta kiểm tra đẳng thức nào? Dành thời gian cho học sinh gõ nội dung vào. Lưu chương trình với tên PITAGO vào thư mục lớp mình Nhấn phím F7 để thực hiện từng câu lệnh chương trình, nhập các giá trị a = 3, b = 4, c=5. Vào bảng Debug mở cửa sổ hiệu chỉnh để xem giá trị a2, b2, c2. Nhấn phím F7 để thực hiện câu lệnh tính những giá trị nói trên và so sánh với kết quả a2=9, b2 = 16, c2 = 25. Quan sát rẽ nhánh. Lặp lại các bước trên với bộ dữ liệu a = 700, b = 1000, c=800. a2 : = a; b2 := b; c2 := c; a2 := a2*a; b2 := b2*b; c2 := c2*c; Bằng dãy lệnh a2 := a*a; b2 := b*b; c2 := c*c; Thì kết quả có gì thay đổi ở bộ dữ liệu a = 700, b = 1000, c=800. Ba số nguyên dương a, b, c được gọi là bộ số Pi ta go nếu tổng bình phương hai số bằng bình phương số còn lại. 3, 4, 5 a2 = b2 + c2 b2 = a2 + c2 c2 = a2 + b2 Gõ nội dung vào Lưu vào (nhấn F2) Nhấn F7 sửa lỗi và nhập a = 3, b = 4, c=5 nêu kết quả Vào bảng debug Nhấn F7 và so sánh kết quả Tiếp tục nhấn F7 để theo dõi quá trình rẽ nhánh. Nhập bộ số: a = 700, b=1000, c = 800. Thông báo kết quả. Thay đổi câu lệnh với bộ dữ liệu và kết luận Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có là bộ số Pi ta go hay không Program Pi_ta_go; Uses crt; Var a, b, c : integer; a2, b2, c2: longint; Begin Clrscr; Write('nhap a = '); Readln(a); Write('nhap b = '); Readln(b); Write('nhap c = '); Readln(c); a2 : = a; b2 := b; c2 := c; a2 := a2*a; b2 := b2*b; c2 := c2*c; if (a2 = b2 + c2) or (b2 = a2 + c2) or (c2=a2+ b2) then writeln('ba so da nhap la bo so Pi ta go) else writeln('ba so da nhap khong phai la bo so Pi ta go); readln end. V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Nhắc lại một số lỗi khi thực hành 2. Dặn dò Về nhà học bài và làm bài tập chương III. VI. RÚT KINH NGHIỆM Tiết CT: 12 Tuần: 12 Ngày soạn: 30.09.2013 Ngày dạy: 31.10.2013 KIỂM TRA ĐÁNH GIÁ 1 TIẾT I. MỤC ĐÍCH Kiểm tra lại khã năng tiếp thu cũng như quá trình học tập của HS. Từ đó có thể điều chỉnh phương pháp giảng dạy. II. BẢNG RA ĐỀ KIỂM TRA Mức độ Chương I Chương II Chương III Biết Câu 1, 3, 6, 28, 30 Câu 2, 5, 9, 17, 18, 20, 21, 22 , 27 Câu 4, 10, 13, 14, 15, 16, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 Hiểu 7, 24, 25, 11 8, 19, 23, 26, 8, 12 Vận dụng III. NỘI DUNG IV. KẾT QUẢ KIỂM TRA Lớp Giỏi Khá Trung bình yếu Tiết CT: 13 Tuần: 13 Ngày soạn: 07.10.2013 Ngày dạy: 07.11.2013 § 10. CẤU TRÚC LẶP I. MỤC ĐÍCH – YÊU CẦU − 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 bằng câu lệnh for do II. PHƯƠNG PHÁP Phát vấn, diễn giảng. III. PHƯƠNG TIỆN DẠY HỌC Hình vẽ khổ lớn, bảng phụ IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP 1. Ổn định lớp (kiểm tra sĩ số) 2. Kiểm tra bài cũ: Câu 1: Viết cú pháp của cấu trúc lặp: dạng thiếu và dạng đủ Câu 2. Begin clrscr; write(‘nhap nam: ’); readln(N); ...... (N mod 400 = 0) .... ((N mod 4 = 0) .... ((N mod 100 0)) then SN: =366 ..... SN:=365; Write(‘so ngay cua nam:‘, N, ‘la:’, SN); Readln End. 3. Nội dung HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Hoạt động 1 Nêu vấn đề bài toán 1: Ta thấy cả hai bài toán cách tính tổng S có nhiều điểm tương tự nhau Đối với bài toán 1: số lần lặp là 100, và việc cộng vào tổng S sẽ kết thúc khi đã thực hiện việc cộng 100 lần Còn ở bài toán 2: số lần lặp chưa biết trước nhưng việc cộng vào tổng kết thúc khi điều kiện được thoả mãn. Nói chung một số thuật toán có những thao tác lặp đi lặp lại một số lần. Các NNLT đều có các câu lệnh để mô tả cấu trúc lặp Hoạt động 2 Trao đổi nhóm trong 3 phút và lên bảng viết thuật toán 1a và 1b: Nhóm 1, 2, 3 nghiên cứu thuật toán 1a; Nhóm 4, 5, 6 nghiên cứu thuật toán 1b; Ta thấy thuật toán Tong_1a giá trị N khi bắt đầu tham gia vòng lặp là 1 và sau mỗi lần lặp là tăng lên 1cho đến khi N >100 Thuật toán Tong_1b giá trị N khi bắt đầu tham gia vòng lặp là 100 và sau mỗi lần lặp là giảm xuống 1 cho đến khi N <1 Ta nói cách lặp ở thuật toán Tong_1a là dạng tiến còn Tong_1b là dạng lùi. Ở dạng lặp tiến câu lệnh sau từ khoá do được thực hiện tuần tự, biến đếm lần lược nhận giá trị liên tiếp từ giá trị đầu đến giá trị cuối. Ở dạng lặp lùi câu lệnh sau từ khoá do được thực hiện tuần tự, biến đếm lần lược nhận giá trị giảm liên tiếp từ giá trị cuối đến giá trị đầu Chú ý lắng nghe và ghi bài Chia nhóm thảo luận và lên bảng trình bày Các nhóm khác nhận xét và bổ sung Lặp Bài toán 1: tính và đưa kết quả ra màn hình tổng Bài toán 2: tính và đưa kết quả ra màn hình tổng cho đến khi + Xuất phát S được gán cho giá trị + Tiếp theo cộng vào S một giá trị: với N =1, 2, 3, ... * Cấu trúc lặp có hai loại: 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. 2. Lặp với số lần biết trước và câu lệnh fordo.. Thuật toán Tong_1a B1: S ← 1/a; N ← 0; {khởi tạo S,N}; B2: N ← N + 1; B 3: Nếu N > 100 thì chuyển đến B5; B 4: S ← S + 1/(a+N) rồi quay lại B2; B5: Đưa S ra màn hình rồi kết thúc Thuật toán Tong_1a B1: S ← 1/a; N ← 101; {khởi tạo S,N}; B2: N ← N − 1; B 3: Nếu N < 1 thì chuyển đến B5; B 4: S ← S + 1/(a+N) rồi quay lại B2; B5: Đưa S ra màn hình rồi kết thúc * Trong Pascal ta dùng câu lệnh lặp for−do + Lặp dạng tiến: For := to do ; + Lặp dạng lùi: For := downto do ; Biến đếm là biến đơn và là kiểu nguyên Giá trị đầu giá trị cuối cùng kiểu với biến đếm * Chú ý: giá trị biến đếm được điều chỉnh tự động, vì vậy câu lệnh viết sau do không được thay đổi giá trị biến đếm. V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Cấu trúc lặp dạng lặp với số lần biết trước Cú pháp của dạng lặp tiến và lặp lùi 2. Dặn dò Về nhà học bài và xem tiếp phần sau VI. RÚT KINH NGHIỆM Tiết CT: 14 TUần: 14 Ngày soạn: 14.10.2013 Ngày dạy: 14.11.2013 § 10. CẤU TRÚC LẶP (tt) I. MỤC ĐÍCH – YÊU CẦU − Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể − Mô tả một số thuật toán của một số bài toán đơn giản có sd lệnh lặp. − Viết được chương trình đơn giản có sd dòng lặp for do − Biết sử dụng cấu trúc lặp với số lần chưa biết trước bằng câu lệnh while do II. PHƯƠNG PHÁP Phát vấn, diễn giảng. III. PHƯƠNG TIỆN DẠY HỌC Hình vẽ khổ lớn, bảng phụ IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP 1. Ổn định lớp (kiểm tra sĩ số) 2. Kiểm tra bài cũ: Câu hỏi: Viết cú pháp của câu lệnh lặp dạng tiến và dạng lùi và giải thích biến đếm, giá trị đầu giá trị cuối phải như thế nào ? 3. Nội dung HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Ở tiết trước các em đã học cú pháp của dòng lặp for ... do ... Tiết này chúng ta đi tìm hiểu cách vận dụng vòng lặp đó để viết chương trình Trao đổi nhóm trong 5 phút lên bảng viết chương trình Hãy xác định bài toán Thảo luận trong 4 phút lên bảng trình bày Nhận xét đánh giá cho điểm Thảo luận nhóm đưa để đưa ra thuật toán tính tổng bài toán 2 Nhận xét, đánh giá cho điểm Như vậy, việc lặp với số lần chưa biết trước sẽ chỉ kết thúc khi một điều cho trước được thoả mãn. Để mô tả cấu trúc lặp như vậy trong Pascal người ta dùng câu lệnh while−do Nếu là câu lệnh ghép ta dùng từ khoá gì? Treo sơ đồ lặp while − do Treo sơ đồ khối thuật toán Tong_2 Có nhiều thuật toán khác nhau tìm ƯCLN của M, N. Ở lớp 10 các em đã học thuật toán này Treo hình thuật toán liệt kê từng bước và sơ đồ khối. Lên bảng trình bày Các nhóm còn lại chú ý nhận xét bổ sung Input: Hai số M, N; Output: tổng các số chia hết cho 3 hoặc chia hết cho 5 Lên bảng trình bày Begin và end. Quan sát theo dõi 2. Lặp với số lần biết trước và câu lệnh fordo.. Ví dụ1 Program Tong_1a; Uses crt; Var S: real; a, N: integer; Begin Clrscr; Write(‘hay nhap gia tri a vao’); Readln(a); S:=1/a; For N:=1 to 100 do S:= S+1/(a+N); Write(‘tong S = ’, S:8:4); Readln End. Program Tong_1a; Uses crt; Var S: real; a, N: integer; Begin Clrscr; Write(‘hay nhap gia tri a vao’); Readln(a); S:=1/a; For N:=100 to 1 do S:= S+1/(a+N); Write(‘tong S = ’, S:8:4); Readln End. Ví dụ2: Viết chương trình nhập từ bàn phím hai số nguyên dương M và N (M < 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 N. Program vi_du_2; Uses crt; Var M, N, I: integer; T: longint; Begin Clrscr; Write(‘nhap M nho hon N’); Write(‘M = ‘); readln(M); Write( ‘N = ‘); readln(N); T:= 0; For I := M to N do if (I mod 3 = 0) or (I mod 5 = 0) then T:= T+I; Write(‘KET QUA: ‘, T); Readln; End. 3. Lặp với số lần chưa biết trước và câu lệnh while − do Thuật toán Tong_2 B1: S ← 1/a; N ← 0; {khởi tạo S và N} B2: Nếu 1/(a+N)<0.0001 thì chuyển đến bước 5; B3: N= N+1; B4: S ← S + 1/(a+N) rồi quay lại bước 2; B5: đưa S ra màn hình, rồi kết thúc. Cú pháp: While do ; Trong đó: Điều kiện là biểu thức lôgic Câu lệnh: là câu lệnh đơn hay lệnh ghép Điều kiện Câu lệnh TRUE FALSE Chương trình Program Tong_2; Uses crt; Var S: real; A, N: integer; Begin Write((hay nhap gia trị a vào!’); Readln(a); S:=1/a; N:= 0; While not(1/(a+N) < 0.0001) do Begin N:=N+ 1; S:= S + 1/(a + N ); End; Writeln(‘ Tong S la: ‘, S: 8: 3); Readln End. Ví dụ: Tìm ước chung lớn nhất (ƯCLN) của hai số nguyên dương M, N. Chương trình: Program UCLN; Uses crt; Var M, N : integer; Begin Clrscr; Write(‘nhap gia tri M= ’); readln(M); Write(‘nhap gia tri N= ’); readln(N); While M N do If M > N then M:= M − N else N:= N − M; writeln(‘UCLN= ’, M); readln end. Chú ý: câu lệnh trong dòng lặp thường được lặp lại nhiều lần, vì vậy để tăng hiệu quả của chương trình thì những thao tác không cần lặp lại nên đưa ra ngoài vòng lặp V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Cấu trúc lặp dạng lặp với số lần chưa biết trước Các chương trình đơn giản. 2. Dặn dò Về nhà học bài và xem tiếp bài thực hành 2, làm bài tập chương III. VI. RÚT KINH NGHIỆM BÀI TẬP CHƯƠNG III Tiết CT: 15,16 Tuần: 15-16 Ngày soạn: 21.10.2013 Ngày dạy: 21.11.2013 28.11.2013 I. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức Củng cố kiến thức đã học ở chương III: cấu trúc rẽ nhánh và cấu trúc lặp 2. Kĩ năng Rèn luyện kĩ năng sử dụng cấu trúc rẽ nhánh trong việc lập trình giải bài toán cụ thể. 3. Thái độ Tự giác, tích cực, chủ động trong việc làm bài tập. II. PHƯƠNG PHÁP Nêu vấn đề giải quyết vấn đề III. PHƯƠNG TIỆN DẠY HỌC Bảng phụ, giáo án IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP 1. Ổn định lớp (kiểm tra sĩ số) 2. Kiểm tra bài cũ: Câu 1: viết cấu trúc lặp trong pascal: dạng lặp tiến hoặc lặp lùi? Cho ví dụ? Câu 2: hãy điền câu lệnh vào đoạn chương trình sau: Program Tong_2; Uses crt; Var A, N: integer; . Begin Write((hay nhap gia trị a vào!’); Readln(a); S:=1/a; N:= 0; While not(1/(a+N) < 0.0001) do Begin N:=N+ 1; . End; Writeln(‘ Tong S la: ‘, S: 8: 3); Readln End. 3. Nội dung HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Yêu cầu HS thảo luận trong 3 phút lên bảng viết câu lệnh Điều kiện để M thuộc đường tròn tâm O Yêu cầu HS lên biểu diễn trong Pascal Hướng dẫn giải bài 5 ? n có giá trị như thế nào? ? Vậy ta phải dùng cấu trúc lặp nào tốt nhất? Tương tự như chương trình tính tổng VD1 Yêu cầu HS viết chương trình Gơi ý HS khởi tạo giá trị ban đầu: Gợi ý HS viết chương trình Các bài tập còn lại yêu cầu HS tự về nhà giải. Hướng dẫn: Bài 7 dùng dòng lặp while − do Khi nào tuoicha 2*tuoicon thì làm tăng tuổi cha lên 1 tăng tuổi con lên 1 tăng năm lên 1 Thảo luận và trình bày trên bảng OM ≤ R Hay Lên bảng trình bày N sẽ có giá trị từ 1 đến 50 Cấu trúc lặp với số lần biểt trước For − do Viết chương trình Bài 4: Viết câu lệnh rẽ nhánh tính nếu x2 + y2 ≤ 1 nếu x2 + y2 > 1 và y ≥ x nếu x2 + y2 > 1 và y < x a) if (sqr(x) + sqr(y)) <= 1 then z :=sqr(x) + sqr(y) else if ((sqr(x) + sqr(y)) > 1) and (y>=x) then z := x+ y else z := 0.5; Trường hợp còn lại Nếu điểm (x, y) thuộc hình tròn bán kính r (r > 0), tâm (a,b) b . if sqrt(sqr(x − a) +sqr(y − b))<= R then z:=abs(x) + abs(y) else z := x + y; Bài 5. Lập trình tính: a) Program bai_5a; Uses crt; Var y : real; n: byte; Begin clrscr; y := 0; {khởi tạo giá trị của y} for n:= 1 to 50 do y:= y + n/(n+1); write('y= ', y:9:3); readln end. b. cho đến khi đưa ra giá trị ra màn hình program bai_5b; uses crt; var n: longint; e, gt: real; begin gt := 1/2; {khởi tạo gt} n := 2; e := 2 + gt; while gt > 2*E−6 do begin inc(n); {tăng n lên 1 đơn vị} gt := gt*(1/n); e := e + gt; end; write('gia tri e(n) la: ', e: 9:4); readln end. Bài 6: lập trình giải bài toán cổ program btoan_co; uses crt; var cho, ga: byte; begin for cho := 1 to 24 do begin ga := 36 − cho; if ga + 2*cho = 50 then write('ga: ', ga, ' cho: ',cho); end; readln end. V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Nhắc lại câu lệnh lặp với số lần biết trước và số lần chưa biết trước 2. Dặn dò Về nhà học bài chương 1, 2, 3 kiểm tra 1 tiết. VI. RÚT KINH NGHIỆM Tiết CT: 19,20 Tuần: 19 Ngày soạn: 02.12.2013 Ngày dạy: 02.01.2014 CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC § 11. KIỂU MẢNG I. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức − Kiểu mảng là kiểu dữ liệu có cấu trúc, cần thiết và hữu ích trong chương trình − Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu − NNLT thông dụng cho phép mô tả kiểu dữ liệu mảng một chiều − Để mô tả mảng một chiều cần khai báo kiểu các phần tử và cách đánh số các phần tử − Có thể tham chiếu phần tử của mảng bằng tên của mảng và chỉ só tương ứng của phần tử này 2. Kĩ năng: − Nhận biết các thành phần trong khai báo kiểu mảng một chiều − Nhận biết định danh của 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ô kiểu miền con của kiểu nguyên. II. PHƯƠNG PHÁP Nêu vấn đề, diễn giảng. III. PHƯƠNG TIỆN DẠY HỌC Máy chiếu Projector. IV. NỘI DUNG VÀ TIẾN TRÌNH LÊN LỚP 1. Ổn định lớp (kiểm tra sĩ số) 2. Kiểm tra bài cũ: (nếu có) 3. Nội dung HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Chiếu đề bài và chương trình ví dụ Giải thích: ta dùng 7 biến để lưu trữ nhiệt độ các ngày trong tuần. Và để xét nhiệt độ nào lớn hơn nhiệt độ trung bình ta dùng 7 câu lệnh if − then ? Khi ta cần xét nhiệt độ cho cả năm thì sau? Để khắc phục những hạn chế trên người ta thường ghép chung 7 biến trên thành một dãy và đặt cho nó chung một tên và đánh cho mỗi phần tử một chỉ số. ? Thế nào là mảng một chiều? Ví dụ: a1, a2, , an ? Để mô tả mảng một chiều ta cần chú ý đến yếu tố nào? Chiếu slide 2 Hầu hết các NNLT đều có qui tắc cho phép xác định − Tên kiểu mảng một chiều − Số lượng phần tử − Kiểu dữ liệu của phần tử − Cách khai báo biến mảng − Cách tham chiếu đến ptử Chiếu slide phần khai báo Chiếu chương trình ví dụ ? Trong ví dụ trên dòng nào là khai báo mảng một chiều. Khi khai báo mảng một chiều ta có 2 cách để khai báo ? Hãy xác định bài toán? Treo bảng thuật toán Yêu cầu thảo luận trong 5 phút lên viết chương trình. Yêu cầu xác định bài toán Yêu cầu thảo luận trong 5 phút lên bảng viết chương trình Hãy xác định bài toán Yêu cầu thảo luận trong 5 phút lên bảng trình bày chương trình Chú ý lắng nghe cần dùng nhiều biến viết nhiều câu lệnh if − then Đứng dậy phát biểu Kiểu phần tử và cách đánh số các phần tử của nó. Dòng 3 và 4 Input: số nguyên N và dãy N số nguyên a1, a2, ,aN Output: chỉ số và giá trị lớn nhất của dãy. thảo luận lên viết chương trình Input: Số nguyên dương N, và dãy A gồm N số nguyên dương A1, A2, ,AN. Output: Dãy số A đã được sắp xếp thành dãy không giảm. Input: Số nguyên dương N, và dãy A gồm N số nguyên dương A1, A2, , AN và số nguyên k. Output: chỉ số i mà Ai = k hoặc thông báo “không tìm thấy số hạng nào bằng k § 11. KIỂU MẢNG 1. Kiểu mảng một chiều − Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó có một chỉ số. a. Khai báo − Khai báo trực tiếp: Var :array [kiểu chỉ số] of ; Ví dụ: var A : array[1..10] of integer; − Khai báo gián tiếp Type = array [kiểu chỉ số] of ; var :; ví dụ: type mang = array[1..10] of integer; var A : mang; trong đó: − Kiểu chỉ số: thường là đoạn số nguyên liên tục − Kiểu phần tử là kiểu của các phần tử mảng. * Tham chiếu phần tử của mảng: thông qua tên mảng và chỉ số Cú pháp: tên_mảng[chỉ số] Ví dụ: A[2] {tham chiếu đến phần tử thứ hai của mảng A. Để tham chiếu đến phần tử thứ 10 của mảng ta viết nhietdo[10] chỉ số phần tử 1 2 ... 10 11 ... Mảng Nhietdo 23 24 ... 22 28 ... b. Một số ví dụ ví dụ 1: viết chương trình tìm và đưa ra màn hình phần tử lớn nhất của dãy dố nguyên * Chương trình: Program TimMax; Uses crt; Type Dayso = array[1..250] of integer; Var N, i, Max, csMax: integer; A: Dayso; Begin Clrscr; Write(‘nhap so phan tu: ‘); readln(N); For i := 1 to N do Begin Write(‘nhap phan tu thu ‘,i, ‘:’); Readln(A[i]); End; Max:= A[1]; csMax := 1; For i:= 2 to N do If A[i] > Max then Begin Max := A[i]; Csmax := i; End; Write(‘gia tri cua phan tu max: ‘,max); Write(‘chi so cua phan tu Max: ‘, csmax); Readln End. Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi Program sapxep; Uses crt; Type Dayso = array[1..250] of integer; Var N,i, j,t: integer; Begin Clrscr; Write(‘nhap so phan tu day: ‘); readln(N); for i:=1 to N do begin write(‘nhap vao phan tu thu ‘,i,’: ‘); readln(A[i]); end; for j := N downto N do for i := 1 to j – 1 do if A[i] > A[i + 1] then begin {trao doi A[i] va A[i + 1]} t := A[i]; A[i]:= A[i + 1]; A[i + 1] := t; end; writeln(‘day so duoc sap xep la:’); for i := 1 to N do write(A[i]:4); readln; End. Ví dụ 3: tìm kiếm nhị phân Chương trình: Program TK_nhiphan; Uses crt; Type Dayso = array[1..250] of integer; Var N, i, k: integer; Dau, Cuoi, Giua: integer; A: Dayso; Tim_thay: boolean; Begin clrscr; write(‘nhap so phan tu cua day, N = ‘); readln(N); writeln(‘nhap cac phan tu cua day so tang: ‘); For i := 1 to N do begin write(‘phan tu thu’,i,’ = ‘); readln(A[i]); end; write(‘nhap gia tri k = ‘); readln(k); Dau:= 1; cuoi := N; Tim_thay:= false; while (dau<=cuoi) and not (Tim_thay) do begin Giua:= (Dau + Cuoi) div 2; if A[Giua] = k then Tim_thay := True else if A[Giua] > k then Cuoi := Giua − 1 else Dau:= Giua + 1; end; if Tim_thay then writeln(‘chi so tim duoc la: ‘,Giua) else write(‘khong tim thay’); readln end. V. CỦNG CỐ - DẶN DÒ 1. Củng cố: Các cách khai báo mảng, tham chiếu đến phần tử của mảng. 2. Dặn dò Về nhà học bài và xem trước bài tập thực hành 3. VI. RÚT KINH NGHIỆM Tiết CT: 21,22 Tuần: 20 Ngày soạn: 09.12.2013 Ngày dạy: 09.01.2014 BÀI THỰ
Tài liệu đính kèm: