1. Trang chủ
  2. » Tất cả

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

57 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kiểu mảng
Trường học Trường Trung Học Phổ Thông
Chuyên ngành Tin học
Thể loại Giáo án
Định dạng
Số trang 57
Dung lượng 166 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Biết được ý nghĩa và sự cần thiết của kiểu mảng một chiều trong việc giải quyếtmột số bài toán.. - Hầu hết các ngôn ngữ lập trình đều có quy tắc cho phép xác định tên kiểu mảng, số lượng

Trang 1

1 Chuẩn bị của giáo viên

- Máy tính, máy chiếu Projector

2 Chuẩn bị của học sinh

- Sách giáo khoa

III Hoạt động dạy - học

1 Hoạt động 1: Tìm hiểu ý nghĩa của mảng một chiều

a Mục tiêu

Trang 2

Biết được ý nghĩa và sự cần thiết của kiểu mảng một chiều trong việc giải quyếtmột số bài toán Biết được khái niệm mảng một chiều.

b Nội dung

- Ví dụ 1: Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần Tính và đưa ramàn hình nhiệt độ trung bình của tuần và số lượng ngày có nhiệt độ cao hơn nhiệt

độ trung bình của tuần

- Chương trình minh họa:

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;

Trang 3

If t6>tb then dem := dem+1;

If t7>tb then dem := dem+1;

Writeln(‘Nhiet do trung binh cua tuan: ‘, tb);

Writeln(‘So ngay co nhiet do cao hon nhiet do trung binh cua tuan la: ‘,dem);

Readln;

End

- Ví dụ 2: Nhập vào nhiệt độ (trung bình) của N ngày Tính và đưa ra màn hìnhnhiệt độ trung bình của N ngày và số lượng ngày có nhiệt độ cao hơn nhiệt độtrung bình của N ngày đó

- Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu Các phần tửtrong mảng có cùng chung một tên và phân biệt bởi chỉ số Để mô tả mảng mộtchiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó

- Hầu hết các ngôn ngữ lập trình đều có quy tắc cho phép xác định tên kiểu mảng,

số lượng phần tử, kiểu dữ liệu các phần tử, cách khai báo một biến kiểu mảng vàcách tham chiếu đến từng phần tử của mảng

c Các bước tiến hành

10’ 1 Chiếu ví dụ 1:

Ví dụ 1: Nhập vào nhiệt độ (trung

bình) của mỗi ngày trong tuần Tính

và đưa ra màn hình nhiệt độ trung

Trang 4

bình của tuần và số lượng ngày có

nhiệt độ cao hơn nhiệt độ trung bình

của tuần

- Gợi ý: dùng 7 biến thực t1, t2, t3, t4,

t5, t6, t7 để lưu nhiệt độ trung bình

của các ngày trong tuần, biến tb dùng

để lưu nhiệt độ trung bình của 1 tuần

- Dùng biến dem để lưu số ngày có

nhiệt độ cao hơn nhiệt độ trung bình

của tuần

- Dùng câu lệnh If để kiểm tra nhiệt

độ ngày nào trong tuần cao hơn nhiệt

độ trung bình của tuần

2 Yêu cầu học sinh viết chương trình

giải quyết bài toán trên

(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;

Trang 5

biến và các câu lệnh trong chương

trình?

- Với cách khai báo biến như trên, có

thể thay các câu lệnh If trên bằng

lệnh lặp được không?

3 Chiếu ví dụ 2:

Ví dụ 2: Nhập vào nhiệt độ (trung

bình) của N ngày Tính và đưa ra màn

hình nhiệt độ trung bình của N ngày

và số lượng ngày có nhiệt độ cao hơn

nhiệt độ trung bình của N ngày đó

- Để giải quyết bài toán này, có thể sử

dụng tương tự như bài toán trên được

không?

- Để lưu nhiệt độ trung bình của N

ngày thì dùng N biến t1, tn và N câu

lệnh If được không? (N tổng quát)

- Để giải quyết được bài toán này, các

ngôn ngữ lập trình, ngôn ngữ Pascal

cung cấp cho chúng ta cấu trúc mảng

1 chiều

- Mảng một chiều là dãy hữu hạn các

phần tử có cùng kiểu dữ liệu Các

phần tử trong mảng có cùng chung

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;Writeln(‘Nhiet do trung binhcua tuan: ‘, tb);

Writeln(‘So ngay co nhiet docao hon nhiet do trung binh cua tuanla: ‘, dem);

Readln;

End

- Khai báo nhiều biến

- Câu lệnh If được sử dụng lặp lạinhiều lần

- Với cách khai báo biến như vậykhông thể dùng câu lệnh lặp được

- Vì N là tổng quát chưa biết là baonhiêu nên không biết phải khai báo

Trang 6

một tên và phân biệt bởi chỉ số Để

mô tả mảng một chiều cần xác định

được kiểu của các phần tử và cách

đánh số các phần tử của nó

- Hầu hết các ngôn ngữ lập trình đều

có quy tắc cho phép xác định tên kiểu

mảng, số lượng phần tử, kiểu dữ liệu

các phần tử, cách khai báo một biến

kiểu mảng và cách tham chiếu đến

- Có hai cách khai báo biến kiểu mảng một chiều:

* Cách 1: Khai báo biến thông qua định nghĩa kiểu dữ liệu mảng một chiều:

- Định nghĩa kiểu dữ liệu mảng một chiều:

TYPE <tên_kiểu_mảng> = Array [ <kiểu_chỉ_số>] Of <kiểu_thành_phần>;

+ Kiểu_chỉ_số: Thường là một đoạn số nguyên (hoặc đoạn kí tự) xác định chỉ sốđầu và chỉ số cuối của mảng

+ Kiểu_ thành_phần: Là kiểu dữ liệu chung của mọi phần tử trong mảng

Trang 7

+ Khai báo biến mảng một chiều:

VAR <tên_biến> : <tên_kiểu_mảng>;

* Cách 2: Khai báo trực tiếp:

VAR <tên_biến> : Array [ <kiểu_chỉ_số>] Of <Kiểu_thành_phần>;

- Tham chiếu đến từng phần tử: Tên_biến[chỉ số]

c Các bước tiến hành

15’ 1 Nhắc lại cấu trúc chung của chương trình?

2 Từ khóa định nghĩa kiểu và từ khóa khai báo

biến?

3 Chiếu cách định nghĩa kiểu dữ liệu mảng một

chiều và khai báo biến mảng:

- Có hai cách khai báo biến kiểu mảng một

chiều:

* Cách 1: Khai báo biến thông qua định nghĩa

kiểu dữ liệu mảng một chiều:

- Định nghĩa kiểu dữ liệu mảng một chiều:

TYPE <tên_kiểu_mảng> = Array

[ <kiểu_chỉ_số>] Of <kiểu_thành_phần>;

+ Kiểu_chỉ_số: Thường là một đoạn số nguyên

(hoặc đoạn kí tự) xác định chỉ số đầu và chỉ số

- Nhắc lại cấu trúc chung củachương trình

- Từ khóa TYPE dùng để địnhnghĩa kiểu và từ khóa VARdùng để khai báo biến

- Chú ý theo dõi và ghi bài

Trang 8

cuối của mảng.

+ Kiểu_ thành_phần: Là kiểu dữ liệu chung của

mọi phần tử trong mảng

+ Khai báo biến mảng một chiều:

VAR <tên_biến> : <tên_kiểu_mảng>;

* Cách thứ 2: Khai báo trực tiếp:

VAR <tên_biến> : Array [ <kiểu_chỉ_số>] Of

Trang 9

- Láy một số ví dụ khác?

- Chiếu lên bảng một số định nghĩa kiểu mảng

một chiều:

TYPE

Array_a = array[1 200] Of real;

Array_B = array [byte] Of real;

Array_C = array[-100 0] Of Boolean;

Var A: Kieu_mang;

- Định nghĩa đúng:

TYPEArray_a = array[1 200] Of real;Array_C = array[-100 0] OfBoolean;

- Ví dụ 1: A[3] là phần tử ở vịtrí thứ 3 của mảng, lưu nhiệt độtrung bình của ngày thứ 4 trongtuần

Trang 10

3 Hoạt động 3: Rèn luyện kỹ năng sử dụng mảng một chiều vào giải bài toán đơn

độ trung bình của tuần đó?

- Ví dụ 2: Nhập vào nhiệt độ (trung bình) của N ngày Tính và đưa ra màn hìnhnhiệt độ trung bình của N ngày và số lượng ngày có nhiệt độ cao hơn nhiệt độtrung bình của N ngày đó?

+ Thay bằng dùng 7 biến lưu

nhiệt độ trung bình của 7

Trang 11

+ Sử dụng mảng một chiều

để lưu nhiệt độ của 7 ngày,

vậy có thể thay 7 câu lệnh

nhập nhiệt độ của 7 ngày

vào và 7 câu lệnh IF - ThEN

Writeln(‘Nhap nhiet do cua cac ngay: ‘); For i:=1 to 7 do read(T[i]);

For i:=1 to 7 do tb:=tb+T[i];

Tb:=tb/7;

For i:=1 to 7 do

If T[i]>tb then dem:=dem+1;

Writeln(‘Nhiet do trung binh cua 1 tuanla:’,tb);

Writeln(‘so ngay co nhiet do cao hon

TB :’,dem);

Readln;

END

Trang 12

- Chiếu ví dụ 2:

- Gợi ý, tương tự ví dụ 1

- Sử dụng mảng gồm bao

nhiêu phần tử?

- Học sinh viết chương trình

và một học sinh lên sửa lại

chương trình của ví dụ 1 để

giải quyết ví dụ 2?

- Sử dụng mảng một chiều gồm N phần tử.Program vi_du2;

Var T : Array[1 N] Of real;

I, dem,N: Integer;

Tb: Real;

Begin Dem:=0; tb:=0;

Writeln(‘Nhap so ngay can tinh nhietdo: ‘);

If T[i]>tb then dem:=dem+1;

Writeln(‘Nhiet do trung binh cua N ngayla:’,tb);

Writeln(‘so ngay co nhiet do cao hon

Trang 13

- Có hai cách khai báo biến kiểu mảng một chiều:

* Cách 1: Khai báo biến thông qua định nghĩa kiểu dữ liệu mảng một chiều:

- Định nghĩa kiểu dữ liệu mảng một chiều:

TYPE <tên_kiểu_mảng> = Array [ <kiểu_chỉ_số>] Of <kiểu_thành_phần>;

+ Kiểu_chỉ_số: Thường là một đoạn số nguyên (hoặc đoạn kí tự) xác định chỉ sốđầu và chỉ số cuối của mảng

+ Kiểu_ thành_phần: Là kiểu dữ liệu chung của mọi phần tử trong mảng

+ Khai báo biến mảng một chiều:

VAR <tên_biến> : <tên_kiểu_mảng>;

* Cách thứ 2: Khai báo trực tiếp:

VAR <tên_biến> : Array [ <kiểu_chỉ_số>] Of <Kiểu_thành_phần>;

- Tham chiếu đến từng phần tử: Tên_biến[chỉ số]

2 Câu hỏi và bài tập về nhà

- Viết chương trình tính điểm trung bình học kỳ I của 1 học sinh

- Làm các bài tập trong sgk và sbt

Trang 14

1 Chuẩn bị của giáo viên

- Máy tính, máy chiếu Projector

2 Chuẩn bị của học sinh

- Sách giáo khoa

III Hoạt động dạy - học

1 Hoạt động 1(10ph): Kiểm tra bài cũ

a Mục tiêu

Trang 15

Biết được ý nghĩa và sự cần thiết của kiểu mảng một chiều trong việc giải quyếtmột số bài toán Biết được khái niệm mảng một chiều Biết cách định nghĩa và khaibáo biến mảng một chiều.

b Nội dung

- Nêu các cách khai báo biến kiểu mảng một chiều?

- Viết chương trình tính điểm trung bình học kỳ 1?

2 Hoạt động 2: Rèn luyện kỹ năng sử dụng mảng một chiều vào bài toán tìm

15' 1 Chiếu nội dung

bài toán lên màn

- Theo dõi nội dung bài toán trên màn hình và trả lời câu hỏi

- Input: N nguyên dương và dãy: a1, , aN

- Output: Max của dãy

- Thuật toán:

B1: Nhập N và dãy A1, AN

Trang 16

B5: i←i+1, rồi quay lại B3

- Để lưu giá trị của N phần tử, dùng mảng một chiều gồm Nphần tử

- Thao tác so sánh ai với Max được lặp đi lặp lại

- Lặp biết trước số lần lặp (N lần)Program Tim_max;

Trang 17

Write('Gia tri cua cac phan tu trong day:');

for i:=1 to N do read(a[i]);

ln:=a[1]; vt:=1;

for i:=2 to N do

if a[i]> ln then begin ln:=a[i];vt:=i; end;

writeln('So lon nhat cua day la: ',ln:5:0,'la phan tu thu:',vt); readln;

End

3 Hoạt động 3: Rèn luyện kỹ năng sử dụng biến mảng một chiều để giải quyết bài

toán tìm kiếm nhị phân

a Mục tiêu: Hiểu thuật toán tìm kiếm nhị phân và vận dụng kiểu mảng một chiều

để giải quyết bài toán

b Nội dung:

Bài toán: Cho dãy A gồm N số nguyên: a1, , aN, đã được sắp xếp dãy thành dãy Akhông giảm Tìm vị trí của phần tử trong dãy có giá trị bằng K

c Các bước tiến hành

15' 1 Chiếu nội dung

Trang 18

- Input: N nguyên dương và dãy A không giảm

- Output: Vị trí số hạng có giá trị bằng K hoặc thông báokhông tìm thấy

- Tìm thấy khi a[g]=k, vòng lặp while - do

Trang 19

Begin g:=(d+c) div 2;

if g>k then c:=g-1 else d:=g+1;

if a[g]=k then Begin chua_thay:=false;

else writeln('Khong co so hang nao trong day bang ',k);

readln;

End

IV Đánh giá cuối bài (5ph)

- Kiến thức đã học: Định nghĩa, và khai báo biến kiểu mảng một chiều áp dụngđược vào giải quyết các bài toán đơn giản đã học ở lớp 10

- Bài tập về nhà: Bài tập trong sgk và sbt

Trang 20

1 Chuẩn bị của giáo viên

- Máy tính, máy chiếu Projector

2 Chuẩn bị của học sinh

- Sách giáo khoa

III Hoạt động dạy - học

1 Hoạt động 1(10ph): Kiểm tra bài cũ

a Mục tiêu

Trang 21

Biết được ý nghĩa và sự cần thiết của kiểu mảng một chiều trong việc giải quyếtmột số bài toán Biết được khái niệm mảng một chiều Biết cách định nghĩa và khaibáo biến mảng một chiều.

b Nội dung

- Nêu các cách khai báo biến kiểu mảng một chiều?

- Viết chương trình trình tìm số nhỏ nhất củacủa dãy A gồm N số nguyên: a1, ,aN

2 Hoạt động 2: Rèn luyện kỹ năng sử dụng biến mảng một chiều để giải quyết bài

toán sắp xếp dãy N phần tử( Thuật toán tráo đổi)

a Mục tiêu: Hiểu thuật toán tráo đổi và vận dụng kiểu mảng một chiều để giảiquyết bài toán

- Theo dõi trên màn hình và suy nghĩ trả lời câu hỏi

- Input: N nguyên dương và dãy A

- Output: Dãy A không giảm

- Lần lượt từ số hạng 1 đến số hạng N, so sánh từng cặp

Trang 22

- Học sinh theo dõi cách sắp xếp.

- Cần dùng hai vòng lặp: Một lặp tiến và 1 lặp lùi

Trang 23

write('Nhap vao so phan tu cua day N= ');readln(N);Writeln('Nhap vao cac gia tri cua cac phan tu trong day:'); for i:=1 to N do

Begin write('Nhap phan tu thu i= ',i,' ,a[',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

writeln('thu hien doi cho cua a[',i,']','va a[',i+1,']');

3 Hoạt động3: Rèn luyện kỹ năng sử dụng biến mảng một chiều để giải quyết bài

toán sắp xếp dãy N phần tử( Thuật toán tráo đổi)

Trang 24

a Mục tiêu: Hiểu thuật toán tráo đổi và vận dụng kiểu mảng một chiều để giảiquyết bài toán.

- Theo dõi trên màn hình và suy nghĩ trả lời câu hỏi

- Input: N nguyên dương và dãy A

- Output: Dãy A không giảm

- Lần lượt từ số hạng 1 đến số hạng N, so sánh từng cặpmột, nếu số đứng trước nhỏ hơn số đứng sau thì đổi chỗcho nhau Sau mỗi lần sắp xếp được số nhỏ nhất về cuốidãy

Trang 25

write('Nhap vao so phan tu cua day N= ');readln(N);Writeln('Nhap vao cac gia tri cua cac phan tu trong day:'); for i:=1 to N do

Begin write('Nhap phan tu thu i= ',i,' ,a[',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

writeln('thu hien doi cho cua a[',i,']','va a[',i+1,']');

Trang 26

- Kiến thức đã học: Định nghĩa, và khai báo biến kiểu mảng một chiều áp dụngđược vào giải quyết các bài toán đơn giản đã học ở lớp 10.

- Bài tập về nhà: Bài tập trong sgk và sbt

Trang 27

+ Khai báo kiểu dữ liệu mảng một chiều

+ Nhập, xuất dữ liệu cho 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

- Biết giải một số bài toán cụ thể thường gặp:

+ Tính tổng các phần tử thỏa mãn một điều kiện nào đó

+ Đếm số các phần tử thỏa mãn điều kiện nào đó

1 Chuẩn bị của giáo viên

- Phòng máy vi tính, máy chiếu Projector

Trang 28

2 Chuẩn bị của học sinh:

Sgk, kiến thức đã học

III Hoạt động dạy - học

III Hoạt động dạy - học

1 Hoạt động 1: Tìm hiểu cách sử dụng các câu lệnh của mảng một chiều qua

a - Tìm hiểu, gõ chương trình vào máy tính và chạy thử như chương trình sgk- tr.63

b - Thêm các câu lệnh mới vào chương trình nhằm sửa đổi chương trình trong câu

a để chương trình thực hiện đếm số lượng số dương và số lượng số âm của mảng

c Các bước tiến hành

TG Hoạt động của giáo viên Hoạt động của học sinh

15' 1 Tìm hiểu chương trình ở câu

a, sgk tr.63 và chạy thử chương

trình

- Chiếu chương trình lên bảng

- Hỏi: Khai báo uses Crt; có ý

Trang 29

5'

5'

- Hỏi: Myarray là tên kiểu dữ

liệu mảng hay tên biến mảng?

- Hỏi: vai trò của Nmax và N có

gì khác nhau?

- Trong chương trình có sử dụng

thủ tục tạo mảng ngẫu nhiên

bằng thủ tục: Randomize;

- Hàm chuẩn Random(N) cho

giá trị là số nguyên ngẫu nhiên

trong đoạn từ 1 đến N-1

- Lệnh gán a[i] :=

random(300)-random(300) cho giá trị là số

nguyên trong đoạn từ -299 đến

299 lưu vào biến a[i];

- Hỏi: Lệnh For - Do cuối cùng

2 Sửa chương trình câu để

được chương trình giải quyết

- Myarray là tên kiểu dữ liệu

- Nmax là số phần tử tối đa có thể chứa củabiến mảng a, còn N là số phần tử thực củamảng a

- Lệnh For - Do cuối cùng thực hiện nhiệmvụ: cộng các phần tử chia hết cho K

- Có số lần bằng số phần tử a[i] chia hếtcho K

Trang 30

5'

bài toán ở câu b

- Chiếu lên màn hình lệnh cần

thêm vào chương trình ở câu a

- Hỏi: ý nghĩa của biến posi và

biến neg là gì?

- Hỏi: Chức năng của lệnh If

a[i]>0 then posi:=posi+1 else

neg:=neg+1;?

- Yêu cầu học sinh thêm vào vị

trí cần thiết để chương trình

đếm được số dương và số âm

- Yêu cầu học sinh gõ nội dung

và lưu với tên caub.pas Thực

hiện chương trình và báo cáo

kết quả

- Biến posi dùng để lưu số phần tử dương

và biến neg lưu số phần tử âm

- Kiểm tra phần tử thứ i là số dương thìtăng biến posi, ngược lại a[i] là số âm thìtăng neg

- Chỉ ra vị trí cần thêm vào và sửa lạichương trình cho đúng câu b

- Chậy chương trình và báo cáo kết quả

IV Đánh giá cuối bài (5ph)

Ngày đăng: 02/05/2021, 16:59

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w