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

Chương trình sắp xếp dãy số nguyên:

Program sap_xep_tang;

Uses crt;

Type dayso = array[1.250] of integer;

Var a: dayso;

 Tam, i, j, n: integer;

Begin

 Clrscr;

 Write(‘nhap N: ’);

 Readln(n);

 For i:=1 to n do

 Begin

 Write(‘Nhap phan tu thu ’,i, ‘: ’);

 Readln(a[i]);

 End;

 For j:= n downto 2 do

 For i:= 1 to j - 1 do

 If (a[i] > a[i+1] then

 Begin

 Tam:=a[i];

 a[i]:=a[i+1];

 a[i+1]:=tam;

 end;

 writeln(‘Day sau khi duoc sap xep; ’)

 for i:=1 to n do

 write(a[i]:5);

 readln;

end.

 

doc8 trang | Chia sẻ: anhquan78 | Lượt xem: 2183 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Giáo án môn Tin học 11 - Bài 11: Kiểu mảng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Tuần: 20, 21, 22
Tiết PPCT: 20, 21, 22, 25
Lớp: 11A1, 2
Ngày soạn: 27/12/2015
nh
§11. KIỂU MẢNG
I. Mục tiêu:
Về kiến thức:
Hiểu khái niệm mảng 1 chiều.
Hiểu cách khai báo và truy cập đến các phần tử của mảng.
Về kỹ năng:
Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng 1 chiều.
Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng.
Về thái độ:
Giúp hs thấy được cần phải có một kiểu dữ liệu mới, ích lợi của kiểu dữ liệu đó, hiểu được cách truy xuất tới các phần tử của mảng. Từ đó nâng cao kiến thức về sử dụng NNLT và thêm yêu thích môn học.
II. Những phương pháp dạy học được sử dụng:
Kết hợp các phương pháp giảng dạy như thuyết trình, vấn đáp, vẽ hình minh họa, kiểm tra đánh giá,
III. Phương tiện dạy học:
1. Chuẩn bị của giáo viên: 
Máy tính, máy chiếu (nếu có);
Bài giảng thiết kế trên các Slide nếu có máy tính và máy chiếu;
Sách giáo khoa và sách giáo viên Tin học 11;
Nếu không có máy tính và máy chiếu thì giáo viên sẽ dùng phấn và bảng đen là công cụ chủ yếu để giảng dạy.
2. Chuẩn bị của học sinh:
Vở ghi lý thuyết;
Sách giáo khoa tin học 11;
IV. Tài liệu tham khảo (nếu có):
Bài tập tin học 11 - Nhà xuất bản Giáo dục - Hồ Sĩ Đàm, Nguyễn Thanh Tùng.
V. Tiến trình lên lớp:	
1. Ổn định lớp
Yêu cầu lớp trưởng báo cáo sĩ số, ổn định lớp.
2. Kiểm tra bài cũ và gợi động cơ:
a. Kiểm tra bài cũ
b. Gợi động cơ
Các chương trước chúng ta đã được cung cấp kiến thức cơ sở lập trình tính các bài toán đơn giản. Hôm nay chúng ta sẽ được giới thiệu thêm về kiểu dữ liệu có cấu trúc - kiểu mảng, ích lợi của kiểu dữ liệu đó, chúng ta sẽ cùng nhau nghiên cứu cách khai báo và sử dụng các phần tử của mảng.
3. Nội dung bài giảng:
TG
NỘI DUNG
HĐ CỦA GV
HĐ CỦA HS
(T20)
I. Khái niệm:
Mảng (Array) là một kiểu dữ liệu có cấu trúc bao gồm một số cố định các thành phần có cùng kiểu, có cùng một tên chung. Các thành phần của mảng được truy xuất thông qua các chỉ số.
Các giá trị của mảng có cùng kiểu dữ liệu
II. Bài toán đặt vấn đề: Nhập vào nhiệt độ (trung bình) mỗi ngày trong tuần. Tính và đưa ra nhiệt độ trung bình của tuần và số ngày có nhiệt độ trung bình cao hơn nhiệt độ trung bình trong tuần?
(Chương trình mẫu cuối bài)
GV: Công dụng của mảng là dùng để lưu trữ một dãy số liệu có cùng một tính chất nào đó.
Ví dụ: các điểm kiểm tra một môn học nào đó của một học sinh, các giá trị của một dãy số được nhập từ bàn phím.
GV: Nêu bài toán đặt vấn đề
GV: Đặt câu hỏi
- Hãy xác định Input và Output và viết chương trình giải bài toán trên
GV: Tiếp tục đặt câu hỏi
- Quan sát chương trình và hãy cho biết nếu muốn tính nhiệt độ tb của 1 tháng hoặc 1 năm thì sẽ gặp phải những khó khăn gì?
Vậy để khắc phục khó khăn đó, ta sử dụng kiểu dữ liệu mảng 1 chiều.
HS: Chú ý lắng nghe, phân tích bài toán.
HS trả lời:
- Input: nhiệt độ của 7 ngày trong tuần (t1, t2, t3, t4, t5, t6, t7)
- Output: Nhiệt độ TB (Tb) và số ngày có nhiệt độ TB cao hơn nhiệt độ TB trong tuần (dem).
- Suy nghĩ trả lời, tham gia xây dựng bài.
Khai báo quá lớn (t1, t2,  t30 hoặc tới t365) và chương trình quá dài (365 lênh IF)
III. Kiểu mảng một chiều:
1. Khái niệm:
Mảng 1 chiều là một dãy hữu hạn các phần tử có cùng kiểu.
Ta có mảng 1 chiều như sau:
A
17
20
18
25
19
12
19
I = 
1
2
3
4
5
6
7
Trong đó ta cần quan tâm:
- Tên mảng: A
- Số phần tử của mảng: 7
- Kiểu dữ liệu của các phần tử trong mảng: Kiểu nguyên
- Khi cần tham chiếu đến phần tử thứ i ta viết: A[i]
VD: ta viết A[6] để tham chiếu đến phần tử thứ 5 trong dãy A và giá trị của nó là 12.
GV: Thuyết trình khái niệm mảng 1 chiều
- Mảng được đặt tên và mỗi phần tử mang 1 chỉ số.
- Để mô tả mảng 1 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ử.
HS: Chú ý lắng nghe.
2. Khai báo:
Có 2 cách khai báo mảng 1 chiều trong Pascal:
+ Cách 1 Khai báo gián tiếp:
GV: Nêu cú pháp khai báo gián tiếp
Hs: Chú ý theo dõi.
Cú pháp: 
TYPE = ARRAY [chỉ_số_đầu..chỉ_số_cuối] OF ;
VAR : ;
Trong đó:
- Chỉ số đầu và chỉ số cuối thường là các hằng hoặc biểu thức nguyên (là một đoạn số nguyên liên tục).
- Chỉ số đầu <= bằng chỉ số cuối.
- Giữa 2 chỉ số là dấu .. (hai dấu chấm).
- Kiểu phần tử là kiểu dữ liệu của các phần tử trong mảng.
GV: Nêu ví dụ cách khai báo gián tiếp:
TYPE nhietdo = ARRAY [1..7] OF real;
Var t: nhietdo;
Hs: Chú ý theo dõi.
+ Cách 2 Khai báo trực tiếp:
GV: Nêu cú pháp khai báo trực tiếp
Hs: Chú ý theo dõi.
Cú pháp: 
VAR : ARRAY [chỉ_số_đầu..chỉ_số_cuối] Of ;
GV: Nêu ví dụ cách khai báo trực tiếp:
VAR t: ARRAY [1..7] OF Real;
Hs: Chú ý theo dõi.
(T21)
3. Các thao tác xử lý trong mảng một chiều:
c1. Nhập mảng 1 chiều:
c2. In mảng 1 chiều:
c3. Các thao tác xử lý khác:
* Thông thường các thao tác xử lý các phần tử trong mảng 1 chiều đều dùng câu lệnh FORDO
GV: Thuyết trình (bằng PP) ví dụ nhập mảng 1 chiều.
GV: Thuyết trình (bằng PP) ví dụ in mảng mảng 1 chiều vừa nhập.
GV: Để xử lý mảng một chiều, chúng ta còn có những thao tác như:
- Đếm các phần tử trong mảng thỏa điều kiện cho trước (thuyết trình bằng PP);
- Tính tổng các phần tử trong mảng (thỏa điều kiền cho trước).
HS: Chú ý theo dõi.
Một số ví dụ:
Bài 1: Tìm phần tử lớn nhất của dãy số nguyên (N<=250;A[i]<=500) nếu dãy có nhiều phần tử cùng giá trị thì đưa ra giá trị và chỉ số của phần tử lớn nhất đầu tiên
GV: Hãy xác định Input và Output của bài toán
HS: Suy nghĩ trả lời
- Input: N và dãy số a1, a2,  , aN
- Output: chỉ số và giá trị của phần tử lớn nhất trong dãy. 
Chương trình tìm giá trị lớn nhất:
Program tim_max;
Uses crt;
Type dayso = array[1..250] of integer;
Var a: dayso;
 i, n, max, csmax: integer;
Begin
 Clrscr;
 Write(‘nhap N: ’);
 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:=1 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.
(T22)
Bài 2: Nhập vào 1 dãy số nguyên, sắp xếp dãy theo một thứ tự không giảm
GV: Hãy xác định Input và Output của bài toán
Thuyết trình chương trình sắp xếp bằng thuật toán nổi bọt
HS: Suy nghĩ trả lời
- Input: N và dãy số a1, a2,  , aN
- Output: Dãy được sắp xếp theo thứ tự không giảm. 
Chương trình sắp xếp dãy số nguyên:
Program sap_xep_tang;
Uses crt;
Type dayso = array[1..250] of integer;
Var a: dayso;
 Tam, i, j, n: integer;
Begin
 Clrscr;
 Write(‘nhap N: ’);
 Readln(n);
 For i:=1 to n do
 Begin
 Write(‘Nhap phan tu thu ’,i, ‘: ’);
 Readln(a[i]);
 End;
 For j:= n downto 2 do
 For i:= 1 to j - 1 do
 If (a[i] > a[i+1] then
 Begin
 Tam:=a[i];
 a[i]:=a[i+1];
 a[i+1]:=tam;
 end;
 writeln(‘Day sau khi duoc sap xep; ’)
 for i:=1 to n do
 write(a[i]:5);
 readln;
end.
(T25)
Bài 3: Nhập vào dãy A tăng gồm N số nguyên dương (N <=250) khác nhau và 1 số k. Cho biết vị trí của số hạng có giá trị bằng k trong dãy nếu có.
GV: Hãy xác định Input và Output của bài toán
Thuyết trình chương trình tìm kiếm:
- Tìm kiếm tuần tự;
- Tìm kiếm nhị phân;
HS: Suy nghĩ trả lời
- Input: N và dãy số a1, a2,  , aN và số nguyên k.
- Output: Chỉ số i mà a[i] = 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. 
Tìm kiếm tuần tự
Tim_thay:= false;
For i:=1 to n do
 If (a[i] = k) then
 Begin
 Tim_thay:=true;
 Cs:=i;
 Break;
 End;
If tim_thay then
 Wrieln(‘Chi so tim duoc: ’,i)
Else
 Writeln(‘Khong tim thay so hang nao co gia tri bang k’);
Tìm kiếm nhị phân
Dau:=1; cuoi:=n; tim_thay:=false;
While (dau <=cuoi) or not (tim_thay) do
 Begin
 Giua:= (dau+cuoi)/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
 Wrieln(‘Chi so tim duoc: ’,i)
Else
 Writeln(‘Khong tim thay so hang nao co gia tri bang k’);
4. Củng cố bài, dặn dò
Nhắc lại cho hs một số khái niệm mới:
Mảng 1 chiều là một dãy hữu hạn các phần tử cùng kiểu.
- Có thể khai báo trực tiếp:
VAR : ARRAY [chỉ_số_đầu..chỉ_số_cuối] Of ;
- Có thể khai báo gián tiếp:
TYPE = ARRAY [chỉ_số_đầu..chỉ_số_cuối] OF ;
VAR : ; 
- Tham chiếu đến phần tử của mảng: [chỉ_số_phần_tử]
VD: A[5] (tham chiếu đến phần tử thứ 5 của mảng A)
* Thông thường các thao tác xử lý các phần tử trong mảng 1 chiều đều dùng câu lệnh FORDO
5. Bài tập về nhà
Đọc trước bài tập thực hành 3 chuẩn bị cho tiết thực hành tiếp theo.
6. Rút kinh nghiệm tiết dạy
Chương trình mẫu:
Program VD1;
Uses crt;
Var t1, t2, t3, t4, t5, t6, t7, tb: real;
	Dem: byte;
Begin
	Clrscr;
	Write(‘Nhap vao nhiet do 7 ngay trong tuan: ‘);
	Readln(t1, t2, t3, t4, t5, t6, t7);
	Tb:= (t1+t2+t3+t4+t5+t6+t7)/7
	Dem:=0;
	If (t1 > tb) then Dem:= dem + 1;
	If (t2 > tb) then Dem:= dem + 1;
	If (t3 > tb) then Dem:= dem + 1;
	If (t4 > tb) then Dem:= dem + 1;
	If (t5 > tb) then Dem:= dem + 1;
	If (t6 > tb) then Dem:= dem + 1;
	If (t7 > tb) then Dem:= dem + 1;
	Write(‘Nhiet do trung binh trong tuan la: ‘,tb:5:2);
	Write(‘So ngay co nhiet do cao hon nhiet do tb trong tuan la: ‘,dem);
	Readln;
End.
Bài tập
1. Viết chương trình nhập vào một dãy n số a[1], a[2],..., a[n] và in ra màn hình các thông tin sau:
- Tổng các phần tử của dãy.
- Số lượng số dương và tổng của các số dương của dãy.
- Số lượng số âm và tổng của các số âm của dãy.
- Trung bình cộng của dãy.
2. Viết chương trình nhập vào một dãy n số a[1], a[2],..., a[n] và in ra màn hình các thông tin sau:
- Số hạng dương lớn nhất của dãy và chỉ số (vị trí) của nó.
- Số hạng dương nhỏ nhất của dãy và chỉ số (vị trí) của nó.
- Số hạng âm lớn nhất của dãy và chỉ số (vị trí) của nó.
- Số hạng âm nhỏ nhất của dãy và chỉ số (vị trí) của nó.
3. Viết chương trình nhập vào mảng a gồm 10 phần tử nguyên, sau đó, nhập một giá trị x. Tìm trong mảng a nếu có phần tử nào có giá trị bằng với x thì hiển thị lên màn hình vị trí của nó trong mảng a.

File đính kèm:

  • docKieu_mang.doc