Giáo án Tin học 11 - Năm học 2013-2014

I. MỤC TIÊU

 1.Kiến thức:

- Học sinh nhận biết được có ba lớp ngôn ngữ lập trình và các mức của ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao.

- Biết được vai trò của chương thình dịch.

2. Kĩ năng: Phân biệt được hai khái niệm biên dịch và thông dịch, phân biệt được các loại ngôn ngữ lập trình.

3. Thái độ: Thấy được sự cần thiết và tiện lợi khi sử dụng các ngôn ngữ lập trình bậc cao. Liên hệ được với quá trình giao tiếp trong đời sống.

II. CHUẨN BỊ

1. Giáo viên:

- Máy tính Projecter, sách giáo khoa, sách giáo viên, giáo án,

- Tổ chức hoạt động theo nhóm.

- Một số ví dụ về ngôn ngữ lập trình

2. Học sinh:

Sách giáo khoa, vở ghi

- Đọc bài trước

- Tìm hiểu một số loại ngôn ngữ giao tiếp thông dụng

 

doc128 trang | Chia sẻ: Thewendsq8 | Lượt xem: 2391 | Lượt tải: 5download
Bạn đang xem trước 20 trang mẫu tài liệu Giáo án Tin học 11 - Năm học 2013-2014, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
100] of Real;
2.2 Viết khai báo gián tiếp biến mảng? Khai báo mảng 150 số nguyên.
	 Type = ARRAY [Kiểu chỉ số] OF ;
Var : ;
	 Type SoNguyen = Array[1..150] of Integer;
	Var A : SoNguyen;	
3. Giảng bài mới:
TL
Nội dung
Hoạt động của Giáo viên
Hoạt động của HS
Hoạt động 1: Vận dụng kiểu mảng một chiều để lập trình giải các bài toán đơn giản:
15
3. Một số ví dụ:
a. Sắp xếp bằng thuật toán tráo đổi:
Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
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 i := 1 to N-1 do
 For j := i+1 to N do
 If A[i] > A[ j] Then
 Begin
 tg:=A[i];
 A[i]:=A[ j];
 A[ j]:=tg;
 End;
 End;
 Writeln('Day sau khi Sap xep:'); For i:= 1 to N do
 Write(A[i]:8);
 Readln
 End.
B1: Nhập N, các số hạng A1,A2,..,An.
 B2: i 0
 B3: Nếu I = N-1 thì đưa ra dãy A đã được sắp xếp rồi kết thúc
 B4: i i+1, j i
 B5: j i+1
 B6: Nếu j> N thì quay lại bước 3
 B7: Nếu Ai > Aj thì ttráo đổi Ai và Aj cho nhau
 B8: Quay lại bước 5. 
- Đối với bài toán trên nếu không sử dụng biến mảng 1 chiều, ta có thể giải quyết được bài toán không? Khó khăn gì?
* Định hướng: Sử dụng kiểu mảng 1 chiều để giải quyết bài toán
- Yêu cầu học sinh khai báo biến mảng
-Yêu cầu học sinh tìm các nhiệm vụ chính cần giải quyết
-Được, nhưng chương trình dài dòng, khó xây dựng. 
* Theo dõi sự hướng dẫn của giáo viên
- Var A: array[1..250] of integer;
- CccCác bước
+ Nhập N và nhập giá trị cho mảng
+ Thuật toán trao đổi 
+ In kết quả(N5+6)
* Hoạt động 2: Tìm kiếm nhị phân
20
b. Tìm kiếm nhị phân:
Nhập vào một dãy A tăng gồm N (N £ 250) số nguyên dương khác nhau và một số k. Cho biết vị trí của số hạng có giá trị bằng k trong dãy (nếu có) ? 
* Input: Nhập số nguyên dương n, dãy 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” nếu không có số hạng nào của dãy A có giá trị bằng k. 
Dau:=1; Cuoi:=n; tim_thay:=false;
while ( Dau<= Cuoi) or 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 Writeln(‘Khong tim thay’);
Vì dãy A là dãy tăng, ta thực hiện thu hẹp nhanh phạm vi tìm kiếm bằng cách so sánh k với A[giua] và xét các trường hợp: 
- A[giua]=k ð tìm thấy chỉ số giữa và kết thúc;
- A[giua]>k ð Thu hẹp về phía bên trái (Cuối = Giữa -1);
- A[giua]<k ð Thu hẹp về phía bên phải (Đầu = Giữa +1);
Quá trình trên được lặp lại chừng nào còn chưa tìm thấy hoặc Dau <= Cuoi.
Bước 4: Nếu aGiua = k thì thông báo chỉ số Giua, rồi kết thúc;
Bước 5: Nếu aGiua > k thì đặt Cuoi = Giua – 1 rồi chuyển đến bước 7;
Bước 6: Dau ß Giua+ 1;
Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k, rồi kết thúc;
Bước 8: Quay lại bước 3.
Mô tả bài toán này bằng phương pháp liệt kê:
Bước1:NhậpN,cácsố hạng a1, a2,..., aN và khoá k;
Bước 2:Dau ß1, Cuoi ß N;
Bước 3: Giua ß ;
 Hoạt động 3: Củng cố: (3’)
3
- Cách tạo biến mảng một chiều và cách khai báo biến mảng
- Cách tham chiếu đến từng phần tử
4.Dặn dò học sinh chuẩn bị cho tiết học sau: (1’)
BTVN: Trả lời các câu hỏi 1 – 4, làm bài tập 5, 6, 7 sách giáo khoa.
	Đọc trước nội dung về kiểu mảng hai chiều, sách giáo khoa.
IV.RÚT KINH NGHIỆM, BỔ SUNG: 
Ngày soạn: 09/10/2013 
Tiết dạy: 20 	 Chương IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Tuần: 10	BÀI 11. KIỂU MẢNG (tt)
I. MỤC TIÊU:
	1. Kiến thức:
	- Biết được dữ liệu mới là kiểu mảng hai chiều.
	- Biết được cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần tử của mảng.
	2. Kỹ năng: 	
	- Tạo được kiểu mảng hai chiều và sử dụng biến mảng hai chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể.
	3. Thái độ: 
	Xây dựng lòng yêu thích giải toán bằng lập trình trên máy tính.
II. CHUẨN BỊ:
1. Giáo viên: Giáo án, hình ảnh minh họa.
2. Học sinh: Đọc trước SGK.
III. HOẠT ĐỘNG DẠY HỌC
 1. Ổn định tình hình lớp: (1’)
 2. Kiểm tra bài cũ: (Không kiểm tra bài cũ)
 3.	Giảng bài mới:
TL
Nội dung
Hoạt động của Giáo viên
Hoạt động của HS
Hoạt động 1: Tìm hiểu ý nghĩa của mảng hai chiều:
18
1. Khái niệm:
Mảng hai chiều là bảng các phần tử cùng kiểu.
Var a : array [1..10] of array [1.. 20] of real; 
Var a : array [1..10, 1..20] of real; 
 Tổng quát, khai báo mảng hai chiều có dạng :
 VAR : ARRAY[Kiểu chỉ số] OF ARRAY[Kiểu chỉ số] OF 
;
 Để cho gọn có thể viết :
 VAR : ARRAY[Kiểu chỉ số dòng, Kiểu chỉ số cột] OF 
;
2. Ví dụ:
 Xây dựng mảng hai chiều B gồm 10 dòng, 10 cột với các phần tử là các số nguyên được tạo ngẫu nhiên trong phạm vi từ -20 đến 20. Đưa ra màn hình tất cả các phần tử của mảng có giá trị lớn hơn số k cho trước. Giá trị của k được nhập từ bàn phím.
Giới thiệu các ví dụ trong sách giáo khoa: Tính và đưa ra màn hình bảng cửu chương.
Hỏi: Sử dụng kiến thức mảng một chiều, hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng cửu chương
- Với cách làm như thế thì ta phải khai báo bao nhiêu biến mảng?
- Có những khó khăn gì?
- Các yếu tố của mảng hai chiều:
Để mô tả mảng hai chiều ta cần xác định những yếu tố nào?
 Mỗi phần tử của mảng hai chiều được xác định bởi tên mảng cùng với hai chỉ số, được viết trong cặp ngoặc [ và ]. Các chỉ số cách nhau bởi dấu phẩy.
Chú ý theo dõi yêu cầu và dẫn dắt của giáo viên.
- Sử dụng 9 mảng một chiều, một mảng lưu một hàng của bảng.
- Khai báo 9 biến mảng một chiều.
- Khai báo nhiều biến, viết chương trình nhập xuất dữ liệu dài.
Các yếu tố để xây dựng mảng hai chiều:
- Tên kiểu mảng
- Số phần tử trên một dòng mà trên một cột.
- Kiểu dữ liệu chung của mọi phần tử.
Hoạt động 2: Rèn luyện kĩ năng sử dụng mảng hai chiều
20
Program MangHaiChieu; 
Uses CRT; 
Var 
 b : array[1..10, 1..10] of integer; 
 i, j, k : integer; 
Begin 
 Clrscr; 
 Randomize; { Khởi động sinh số ngẫu nhiên }
 For i:= 1 to 10 do 
 begin 
 for j:= 1 to 10 do 
 begin 
 b[i,j]:= random(41)-20; 
 write(b[i,j], ' '); 
 end; 
 writeln; 
 end; 
 write('Nhap vao gia tri k = '); readln(k); 
 write('Danh sach cac phan tu mang co gia tri lon hon ',k,': ');
For i:= 1 to 10 do 
 For j:= 1 to 10 do 
 If b[i, j]>k then write (b[i, j], ' ');
 Readln 
End.
Chiếu chương trình ví dụ, chạy thử chương trình.
Hỏi: mảng hai chiều trong chương trình trên có tên là gì? Và nó có chức năng gì?
- Mỗi phần tử trong mảng hai chiều này thuộc kiểu dữ liệu nào?
 Trong chương trình trên ta sử dụng hàm chuẩn Random(n)cho giá trị là số nguyên ngẫu nhiên trong khoảng từ 0 đến n - 1.
- Yêu cầu học sinh theo dõi chương trình trong SGK
- Để lần lượt có được giá trị các phần tử tạo nên mảng hai chiều B, thường dùng hai vòng lặp for – do lồng nhau. Yêu cầu học sinh hãy viết các lệnh để nhập từ bàn phím giá trị của phần tử này:
- Giới thiệu hàm Random(N) 
Mảng hai chiều trong chương trình trên có tên là b, nó dùng để tạo ra mảng 2 chiều gồm 10 dòng và 10 cột.
Mỗi phần tử trong mảng hai chiều này thuộc kiểu dữ liệu là integer.
- Lệnh để nhập từ bàn phím giá trị của phần tử này:
Write(‘B[‘, i,’,’j,’]= ’);
Readln(B[i,j]);
Hoạt động 3: Cũng cố
3
- Cách tạo biến mảng hai chiều và cách khai báo biến mảng.
- Cách tham chiếu đến từng phần tử.
	4. Dặn dò học sinh chuẩn bị cho tiết học sau: (1’)
BTVN: Trả lời các câu hỏi 1 – 4, làm bài tập 8, 9 sách giáo khoa.
Chuẩn bị trước bài thực hành số 3.
IV. RÚT KINH NGHIỆM, BỔ SUNG: 
Ngày soạn: 29/10/2013 
Tiết dạy: 21 	 
Tuần: 11	BÀI THỰC HÁNH SỐ 3
I. MỤC TIÊU:
1. Về kiến thức
Học sinh sau tiết học sẽ: 
- Củng cố những hiểu biết về kiểu dữ liệu mảng.
- Nắm được 3 thuật toán cơ bản để xử lý từng phần của mảng:
+ Tính tổng các phần tử của mảng thỏa mãn điều kiện nào đó;
+ Đếm số lượng các phần tử của mảng thỏa mãn điều kiện nào đó;
+ Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng cùng với vị trí của nó trong mảng.
2. Về kỹ năng
Khai báo kiểu dữ liệu mảng một chiều.
Nhập, xuất 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 tất cả các phần tử của mảng để xử lý từng phần tử của mảng.
3. Về thái độ
Rèn luyện cho học sinh thái độ tích cực, sáng tạo, chủ động trong việc tìm kiếm kiến thức.
Hứng thú trong việc viết chương trình giải toán .
II. CHUẨN BỊ:
1. Giáo viên
- Sách giáo viên, soạn giáo án, máy vi tính đã cài đặt Turbo Pascal.
2. Học sinh
- Xem bài 11. Kiểu mảng
- Xem trước BÀI TẬP VÀ THỰC HÀNH 3
IV. HOẠT ĐỘNG DẠY HỌC
 1. Ổn định tình hình lớp: (1’)
 2. Kiểm tra bài cũ: 
H: - Nêu cấu trúc khai báo mảng 1 chiều(6đ, cho ví dụ (4đ)
Đ: 
 VAR : ARRAY[Kiểu chỉ số] OF ;
- Khai báo gián tiếp:
TYPE = ARRAY [Kiểu chỉ số] OF ;
Var : ;
 3.	Giảng bài mới:
TL
Nội dung
Hoạt động của Giáo viên
Hoạt động của HS
Hoạt động 1 : Hướng dẫn thực hành các ví dụ sgk bài 11
15
Program Visdu1;
Uses CRT;
Const
	 Nmax = 250;
	 Type
	 SoNguyen = Array[1..Nmax] Of Integer;
Var
	 N, i, Max, CsMax : Integer;
 A : SoNguyen;
Begin
 Clrscr;
	Write('Nhập số lượng phần tử của dãy số, N = ');Readln(N); For i:=1 to N Do
 Begin
 Write(‘A[ ‘,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(‘Giá trị Max là :’, Max);
 Write(‘Chỉ số la :’, CsMax);
 	 Readln
End.
GV: - Hướng dẫn học sinh gõ nội dung chương trình trên phần mềm Pascal
 Học sinh thực hành
Hoạt động 1 : Hướng dẫn giải bài tập 1
25
1. Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, mỗi số có trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.
a. Tìm hiểu và chạy chương trình sau:
program Sum1;
uses crt;
const nmax=100;
type MyArray =array[1..nmax] of integer;
var A: MyArray;
 s,n,i,k: integer;
begin
 clrscr;
 randomize;
 write('Nhap n= ');
 readln(n);

File đính kèm:

  • docGA tin soan.doc
Giáo án liên quan