Giáo án trọn bộ Tin học 11

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ó)

 

doc 79 trang Người đăng phammen30 Lượt xem 2517Lượt tải 4 Download
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án trọn bộ Tin học 11", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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:

  • docGiao_an_tron_bo_Tin_Hoc_11_day_du_hoan_chinh.doc