Đề tài Giáo án môn Tin học 11 - Bài 11: Kiểu mảng

Đề tài Giáo án môn Tin học 11 - Bài 11: Kiểu mảng

A./ MỤC TIÊU:

• Học sinh hiểu:

- Kiểu mảng là một kiểu dữ liệu có cấu trúc.

- Khái niệm mảng một chiều và hai chiều

- Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.

- Thuật toán tìm kiếm, sắp xếp cơ bản.

• Kỹ năng:

- Nhận biết các thành phần của mảng.

- Cách khai báo mảng một chiều, mảng hai chiều.

- Cách tham chiếu các phần tử của mảng.

• Yêu cầu:

- Học sinh nắm vững các kiểu dữ liệu trong Pascal;

- Nắm vững các lệnh cấu trúc rẽ nhánh và lặp.

 

doc 5 trang Người đăng quocviet Lượt xem 3410Lượt tải 0 Download
Bạn đang xem tài liệu "Đề tài Giáo án môn Tin học 11 - Bài 11: Kiểu mảng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
GIÁO ÁN TIN HỌC 11
Bài 11: 	KIỂU MẢNG
A./ MỤC TIÊU:
Học sinh hiểu:
- Kiểu mảng là một kiểu dữ liệu có cấu trúc.
- Khái niệm mảng một chiều và hai chiều
- Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
- Thuật toán tìm kiếm, sắp xếp cơ bản.
Kỹ năng:
- Nhận biết các thành phần của mảng.
- Cách khai báo mảng một chiều, mảng hai chiều.
- Cách tham chiếu các phần tử của mảng.
Yêu cầu:
- Học sinh nắm vững các kiểu dữ liệu trong Pascal;
- Nắm vững các lệnh cấu trúc rẽ nhánh và lặp.
B./ PHÂN TIẾT:
	Tiết 1: Phần 1a.
	Tiết 2, 3: Phần 1b.
	Tiết 4: Phần 2.
C./ CHUẨN BỊ:
	Máy chiếu, máy vi tính.
D/ KIỂM TRA BÀI CŨ:
D./ BÀI MỚI:
Tiết 1:
HOẠT ĐỘNG
NỘI DUNG
- GV: Hỏi hs các kiểu dữ liệu đã học.
- HS: Trả lời các kiểu dữ liệu chuẩn đã học.
- 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.
 Trong đó kiểu mảng là một trong những kiểu dữ liệu có cấu trúc.
Vậy như thế nào là mảng một chiều? 
GV: Đưa ra khái niệm, và cách xây dựng kiểu mảng.
HS: Quan sát, lắng nghe và ghi chép.
GV: Phân tích hai ví dụ trong SGK để HS nhận thấy sự tiện lợi khi sử dụng mảng. Trong khi phân tích hai ví dụ và đặt câu hỏi?
HS: Trả lời câu hỏi của GV, và đưa ra ý kiến nhận xét về hai chương trình.
GV: Đưa ra hai cách khái 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 mảng bằng cách nào thì thuận tiện hơn?
HS: Trả lời.
GV: Nhận xét.
GV: Đưa ra các ví dụ và gọi HS nhận xét.
HS: Quan sát và trả lời.
GV: Hướng dẫn tham chiếu đến các phần tử của mảng, và đưa ra ví dụ
Ví dụ: Cho mảng gồm 5 phần tử:
Chỉ số
1
2
3
4
5
A
30
50
10
2
8
HS: Quan sát lắng nghe và trả lời.
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ùng kiểu. Mảng được đặt tên và mỗi phần tử của nó. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó. 
* Để xây dựng và sử dụng kiểu mảng một chiều cần xác định:
 +Tên mảng một chiều
 +Số lượng phần tử
 +Cách khai báo biến mảng
 +Cách tham chiếu đến phần tử.
*Xét các ví dụ sau:
Ví dụ 1 (SGK trang 53-54) mô tả cách dùng cấu trúc rẽ nhánh.
Ví dụ 2 (SGK trang 54) mô tả cách dùng kiểu dữ liệu mảng.
a. Khai báo:
Có 2 cách:
- Cách 1: Khai báo trực tiếp biến mảng một chiều:
Var : Array[kiểu chỉ số] of ;
- Cách 2: Khai báo gián tiếp gián tiếp biến mảng qua kiểu mảng một chiều:
Type = Array[kiểu chỉ số] of ;
Var : ;
 Trong đó:
- Kiểu chỉ số là một đoạn số nguyên liên tục có dạng n1..n với n1,n2 là các hằng hoặc các biểu thức xác định chỉ số đầu và chỉ số cuối (n1<= n2)
- Kiểu phần tử là kiểu của các phần tử mảng.
* Ví dụ: Các khai báo biến sau đây là hợp lệ
- Khai báo biến mảng thông qua kiểu mảng:
Type
 Arrint=array[1..100] of integer;
 A = array[1..n] of integer;
 ArrBoolean =Array[-n+1.. n+1] of Boolean;
 ArrReal=array[1..max] of Real;
Var 
 Mang1: Arrint;
 Mang2: ArrReal;
Trong đó n và Max là các hằng nguyên.
- Khai báo trực tiếp:
Var A: Array[1..100] of integer;
 B: Array[1..10] og integer;
* Để tham chiếu đến phần tử của mảng một chiều ta cần xác định: [chỉ số] Áa
Ví dụ: Cho mảng gồm 5 phần tử:
Giá trị của phần tử thứ 1 và thứ 4 là:
A[1]=30; A[4]=2; 
E./ CỦNG CỐ:
	- Cách khai báo mảng một chiều.
	- Cách tham chiếu phần tử của mảng.
	- Cách nhập dữ liệu cho mảng.
F./ DẶN DÒ:
	- Xem trước các ví dụ trong SGK.
	- Ra bài tập.
Tiết 3-4: 	Bài 11: KIỂU MẢNG(tiếp theo)
A./ KIỂM TRA BÀI CŨ:
B./ BÀI MỚI:
HOẠT ĐỘNG
NỘI DUNG
GV: Đưa ra ví dụ.
HS: Nêu thuật toán tìm phần tử lớn nhất đã học ở lớp 10.
Các bước:
 B1: Nhập N và dãy A1,A2,..,AN.
 B2: Max ßA1, iß2;
 B3: Nếu i>n thì đưa giá trị Max và kết thúc;
 B4: 
 B4.1: Nếu Ai > Max thì Max ßAi.
 B4.2: i ßi+1. Quay lại B3.
GV: Giải thích chương trình cho h ọc sinh hiểu?
HS: Lắng nghe, quan sát.
GV: Chương trình tìm giá trị lớn nhất của dãy. Vậy tìm giá trị nhỏ nhất của dãy ta làm thế nào?
HS: Trả lời câu hỏi.
GV: Hướng dẫn
 Min := A[1]; csmin :=1;
 for i:=2 to N do
 If A[i] < Min then
 Begin
 Min:=A[i];
 csmin:=i;
 End;
GV: Đưa ra ví dụ.
HS: Nêu thuật toán sắp xếp đã học ở lớp 10.
GV: Hướng dẫn
 Đổi chỗ để đưa số lớn nhất về vị trí cuối cùng.
 Làm tương tự đối với các số còn lại.
GV: Giải thích chương trình cho h ọc sinh hiểu?
HS: Lắng nghe, quan sát.
GV: Sắp xếp giảm dần thì ta thực hiện như thế nào?
HS: Trả lời câu hỏi.
GV: Hướng dẫn.
GV: Đưa ra ví dụ.
HS: Nêu thuật toán tìm đã học ở lớp 10.
GV: Giải thích chương trình.
GV: Nếu dãy không được sắp xếp thì chương trình tìm kiếm nhị phân có đúng không?
HS: Trả lời.
1. Kiểu mảng một chiều:
 b.Một số ví dụ:
 Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên
Input (nhập): Số nguyên dương N(<=250) và dãy số nguyên dương A1,A2,AN. MỗI số đều không vượt quá 500.
Output(xuất): Chỉ số và giá trị lớn nhất của dãy số đã cho. 
Chương trình được viết như sau:
Program Timmax;
USES Crt;
Const Nmax = 250;
Type ArrInt = array[1..Nmax] of integer;
Var N, i, Max, csmax : integer;
 A: ArrInt;
BEGIN
 clrscr;
 Write('Nhap so phan tu cua day so, N = '); 
 Readln(N);
for i:=1 to N do
 Begin
 write('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;
 writeln('Gia tri lon nhat cua day la: ', Max);
 writeln('Chi so phan tu lon nhat la: ', csmax);
 readln
 END.
Ví dụ 2: Sắp xếp dãy số nguyên bằng thật toán tráo đổi.
- Input: Số nguyên dương N và dãy số 
 A1, A2, , AN.
- Output: Dãy số A được sắp xếp theo thứ tự tăng.
Chương trình:
Program Sapxep;
USES Crt;
Const Nmax = 250;
Type ArrInt = array[1..NMax] of integer;
Var N, i, j, t : integer;
 A: ArrInt;
BEGIN
 clrscr;
 Write('Nhap so phan tu cua day so, N = '); readln(N);
 For i:=1 to n do
 Begin
 Write('Phan tu thu ', i,' = ');
 Readln(A[i]);
 End;
 writeln('Day so da cho la: ');
 For i:= 1 to N do
 Write(A[i]:4);
 writeln;
 For j:= N downto 2 do
 for i:= 1 to j -1 do
 if A[i] > A[i+1] then
 Begin
 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.
 Input: Dãy số A1, A2, , AN. đã được sắp xếp tăng dần (N <= 250).
 Output: Chỉ số i mà A[i] = hoặc thông báo “Không tìm thấy ” Nếu không có A[i] nào của dãy bằng k
Chương trình:
Program tk_nhiphan;
Uses Crt;
Const Nmax = 250;
Type ArrInt = array[1..NMax] of integer;
Var N, i, k, t, dau, cuoi, giua : integer;
 A: ArrInt;
 thay: Boolean;
BEGIN
 clrscr;
 Write('Nhap so phan tu cua day so, N = '); readln(N);
 Writeln('Nhap cac phan tu theo thu tu tang dan');
 For i:=1 to n do
 Begin
 Write('Phan tu thu ', i,' = ');
 Readln(A[i]);
 End;
 writeln;
 write('Nhap gia tri can tim , k = ');
 readln(k);
 dau:=1;
 cuoi:=N;
 thay:=false;
 While (dau<=cuoi) and not (thay) do
 begin
 giua:=(dau + cuoi) div 2;
 if A[giua] = k then
 thay:= true
 else
 if A[giua] > k then cuoi:= giua - 1
 else dau:=giua + 1;
 end;
 if thay then
 writeln('Chi so tim duoc la', giua)
 else
 writeln('Khong tim thay');
 readln
 END.
C./ CỦNG CỐ:
	- Cách nhập và xuất dữ liệu của mảng, các thao tác với mảng.
	- Các lệnh về cấu trúc rẽ nhánh và lặp
D./ DẶN DÒ:
	- Xem bài thực hành số 3, 4 SGK.
	- Ra bài tập về nhà.

Tài liệu đính kèm:

  • docCauHoi_Bai 11.doc