1. Trang chủ
  2. » Giáo án - Bài giảng

GA bai 11 Tin hoc 11

8 436 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài 11. 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 bài giảng
Định dạng
Số trang 8
Dung lượng 75,5 KB

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

Nội dung

- GV: Đa ra một số ví dụ cần lập trình đa ra một dãy các số nguyên, hãy tìm cách l-u trữ một dãy số ngl-uyên trong lập trình?. - KN: Mảng một chiều là một dãy hữu hạn các phần tử có cùng

Trang 1

Tuần :

Tiết : 21+22+23+24 Ngày soạn: Ngày giảng:

Bài 11 Kiểu mảng

I mục tiêu của bài:

1 Kiến thức

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

- Hiểu cách khai báo và truy cập đến các phàn tử trong mảng

2 Kĩ năng

- Cài đặt một số 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 một chiều

- Thực hiện khai báo mảng, truy cập, tính toán các phần tử của mảng

3 Thái độ

- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính

- Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình

II Chuẩn bị của Giáo viên và học sinh:

1 Giáo viên: SGK, giáo án, STK (máy chiếu nếu có)

2 Học sinh: SGK, chuẩn bị trớc bài ở nhà

III Phơng pháp giảng dạy

- Thuyết trình, đàm thoại

IV Tiến trình bài học và các hoạt động:

1 ổn định tổ chức: 1’

2 Kiểm tra bài cũ: (Không kiểm tra bài cũ)

3 Bài mới:

Tiết 21

* Hoạt động 1: Trình bày cho HS biết khái niệm của kiểu mảng một chiều.

- GV: ĐVĐ Với những kiểu dự liệu đã

biết, làm thế nào để lu trữ đợc một dãy

số?

- HS: Suy nghĩ và trả lời.

- GV: Các ngôn ngữ lập trinhg 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 đợc gọi

là kiểu dự liệu có cấu trúc Bây giờ chúng

ta tìm hiểu kiểu mảng một chiều

- GV: Đa ra một số ví dụ cần lập trình đa

ra một dãy các số nguyên, hãy tìm cách

l-u trữ một dãy số ngl-uyên trong lập trình?

Bằng cách nào lu trữ một dãy các số

nguyên dới dạng bảng?

- HS: Suy nghĩ và trả lời câu hỏi

- GV: Nhận xét câu trả lời của HS sau đó

đa ra khái niệm mảng một chiều và một

số yếu tố liên quan

1 Kiểu mảng một chiều.

- KN: Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, mảng đợc

đặt tên và mỗi phần tử mang một chỉ số

Để mô tả mảng một 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ử

- Với mảng một chiều ta cần quan tâm

đến:

+ Tên mảng một chiều

Trang 2

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Đứng tại chỗ trả lời câu hỏi

- GV: Ghi nháp lên bảng

- GV: Ghi hai chơng trình lên bảng và

Phân tích rõ hai chơng trình để HS nhận

thấy sự tiện lợi khi sử dụng mảng

- HS: Trong khi GV phân tích hai chơng

trình, HS đa ra ý kiến nhậm xét hai chơng

trình

+ Số lợng các phần tử trong mảng

+ Kiểu dữ liệu của các phần tử

+ Cách khai báo biến mảng một chiều + Cách truy cập đến từng phần tử trong mảng

* Xét hai ví dụ:

+ 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 bình của tuần và

số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong tuần?

 Input: t1, t2, t3,t4, t5, t6, t7

 Output: tb, dem

Program Nhietdotrungbinh;

Uses Crt;

Var t1, t2, t3,t4, t5, t6, t7: Integer;

TB: Real; dem:byte;

Begin

Writeln(‘Nhap vao nhiet do cua bay ngay’);

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; Writeln(‘Nhiet do trung binh tuan

la ’,TB:6:2);

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

Readln;

End.

+ Ví dụ 2: Nhập vào nhiệt độ (trung bình)

của mỗi ngày trong năm Tính và đa ra màn hình nhiệt độ trung bình của năm và

số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong năm?

Program Nhietdo_Nngay;

Uses Crt;

Var Nhietdo : Array[1 365] of Integer;

Dem, i, n: Byte; Tong, TB:Real;

Begin

Write(‘Nhap so ngay n = ’); readln(n); Tong:=0; Dem:=0

For i:=1 to n do Begin

Write(Nhap nhiet do ngay thu

‘,i,’=’); Readln(Nhietdo[i]);

Trang 3

- GV: Nhận xét ý kiến của HS và đa ra ý

kiến để HS hiểu rõ hơn sự cần thiết của

mảng một chiều trong cài đặt thuật toán

Tong:= Tong+Nhietdo[i];

End;

TB:=tong/n;

For i:=1 to n do

If Nhietdo[i]>TB then dem:=dem+1;

Writeln(‘Nhiet do trung binh ’,n,’ ngay

la = ‘,TB:6:2);

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

Readln;

End.

- GV: Củng cố.

- Nêu sự khác nhau giữa hai bài

toán và sự cần thiết phải sử dụng mảng

một chiều

Tiết 22

* Hoạt động 2 : Giới thiệu cách hai báo mảng một chiều và Phân tích một số các

ví dụ để HS hiểu và biết cách vận dụng khai báo mảng một chiều trong cài đặt

* ổn định lớp: (1 phút)

- Kiểm tra bài cũ (lồng trong bài

giảng)

- GV: Đặt vấn đề, và đa ra cách khai báo

mảng một chiều trong ngôn ngữ lập trình

Pascal Giải thích các từ khoá mới

- GV: Khai báo bằng cách nào thuận tiện

hơn?

- HS: Suy nghĩ và trả lời.

- GV: Tuỳ vào từng trờng hợp cụ thể

những thờng sử dụng cách 2

- GV: Lấy ví dụ cụ thể để HS truy vấn

đến các phần tử trong mảng, sau đó lấy

một số ví dụ có sử dụng kiểu mảng trong

cài đặt

a Khai báo mảng một chiều.

* Cách 1: Khai báo gián tiếp.

Type <tên kiểu mảng>=array[<chỉ số

đầu> <chỉ số cuối>] of <kiểuphần tử>;

Var <ds biến mảng> : <tên kiểu mảng>;

* Ví dụ:

Type nhietdo = array[1 365] of integer; Var A: nhietdo;

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

Var <Ds biến mảng> : array[<chỉ số

đầu> <chỉ số cuối>] of <kiểuphần tử>;

* Ví dụ:

Var nhietdo : array[1 365] of integer; Var A,B : array[1 100] of real;

- Trong đó:

+ Type là từ khoá dùng để khai báo Kiểu dự liệu Array là từ khoá dùng để

khai báo mảng

+ Kiểu chỉ số thờng là đoạn số nguyên liên tục có n1 n2, với n1 là chỉ số đầu, n2

là chỉ số cuối

+ Kiểu phần tử là kiểu dự liệu của các phần tử trong mảng

+ Để truy cập đến các phần tử trong mảng, ta làm:

<Tên biến mảng>[chỉ số]

b Các ví dụ

* Ví dụ 1: Tìm phần tử lớn nhất của dãy

Trang 4

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Suy nghĩ và trả lời

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán tìm

max?

- HS: Suy nghĩ và trả lời.

- GV: Nhận xét, bổ xung và viết ý tởng

thuật toán lên bảng

- GV: Viết chơng trình để HS có thể dễ

dàng nhận ra các thao tác phải thực hiện

khi viết chơng trình

- GV: Vừa viết chơng trình vừa phân tích

cho HS hiểu rõ cách thực hiện chơng

trình GV trình bày rõ các thao tác khi

viết chơng trình

- GV: Phát vấn HS về kiến thức đã học ở

những bài trớc để xây dựng bài toán mới

- HS: Xem lại toàn bộ kiến thức đã học

và trả lời

các số nguyên

- Input: Số nguyên dơng n và dãy

A1,A2, ,An N<250

- Output: Giá trị của số lớn nhất trong

dãy và vị trí của số đó

- ý tởng:

+ Đặt A1 là số lớn nhất (Max)

+ Cho i lặp từ 2 đến n, nếu A[i]>Max thì đổi Max:=A[i] và lu lại vị trí i

Program Search_Max;

Uses Crt;

Var A: Array[1 100] of Integer;

N, i, Vt: Byte; Max: Integer;

Begin

Write(‘Nhap so cac phan tu n = ‘); Readln(n);

For i:=1 to n do Begin

Write(‘A[‘,i,’]= ‘); readln(a[i]);

End;

Max:=A[i]; Vt:=1;

For i:=2 to n do

If A[i] > Max then Begin

Max:=A[i]; Vt:=i;

End;

Writeln(‘Gia tri phan tu max = ’,Max); Writeln(‘Vi tri phan tu max = ’,Vt);

Readln;

End.

* Củng cố

- Nhắc lại cách khai báo mảng một

chiều

Tiết 23

* ổn định lớp: (4 phút)

- Kiểm tra bài cũ: Em hãy viết

cách cú pháp khai báo mảng một chiều

và trình bày chức năng các từ khoá trong

cú pháp khai báo?

b Các ví dụ (Tiếp)

* Ví dụ 2: Sắp xếp dãy các số nguyên

bằng thuật toán tráo đổi

- Input: Số nguyên dơng n, và dãy A1,

A2, ,An

- Output: Dãy A đợc sắp xếp theo thứ tự

tăng dần

- ý tởng:

+ Đổi để đa số lớn nhất về vị trí cuối

Trang 5

- GV: Em nào hãy xác định Input và

Output của bài toán sắp xếp?

- HS: Suy nghĩ và trả lời.

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán sắp

xếp?

- HS: Suy nghĩ và trả lời.

- GV: Nhận xét, bổ xung và viết ý tởng

thuật toán lên bảng

- GV: Viết chơng trình để HS có thể dễ

dàng nhận ra các thao tác phải thực hiện

khi viết chơng trình

cùng

+ Làm tơng tự đối với những số còn lại

Program Sort;

Uses Crt;

Var A: Array[1 100] of Integer;

N,i,j: Byte; tg: Integer;

Begin

Write(‘Nhap so cac phan tu 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;

Writeln(‘Mang sau khi sap xep la’);

For i:=1 to n do Write(A[i]:5);

Readln;

End.

- GV: Em nào hãy xác định Input và

Output của bài toán?

- HS: Suy nghĩ và trả lời.

- GV: Ghi lên bảng Input và Output.

- GV: Hãy nêu ý tởng của thuật toán tìm

max?

- HS: Suy nghĩ và trả lời.

- GV: Nhận xét, bổ xung và viết ý tởng

thuật toán lên bảng

- GV: Viết chơng trình để HS có thể dễ

dàng nhận ra các thao tác phải thực hiện

khi viết chơng trình

* Ví dụ 3: Tìm kiếm nhị phân.

- Input: Số nguyên dơng n, và dãy A1,

A2, ,An đã đợc sắp xếp tăng dần Và số nguyên k

- Output: Có hay không chỉ số i mà

A[i]=k hoặc thông báo không tìm thấy

- ý tởng:

+ Ta sử dụng tính chất tăng dần của dãy A, ta so sánh k với số hạng AGiữa trong

đó Giữa = (n+1/2) Khi đó sảy ra 1 trong 3 trờng hợp

 Nếu AGiữa=k thì Giữa là chỉ số cần tìm Việc tìm kiếm kết thúc

 Nếu Agiữa>k thì việc tìm kiếm trong phạm vi từ A1,A2, ,AGiữa

 Nếu Agiữa<k thì việc tìm kiếm trong phạm vi từ AGiữa, Agiữa+1, ,An

+ Việc tìm kiếm sẽ lặp lại một số lần hoặc đã tìm thấy khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng

Program Binary_Search;

Uses Crt;

Var A: Array[1 250] of Integer;

Trang 6

N, i, Dau, Cuoi, Giua: Byte;

k: Integer; ok: Boolean;

Begin

Write(‘Nhap so cac phan tu n = ‘); Readln(n);

For i:=1 to n do Begin

Write(‘A[‘,i,’]= ‘); readln(a[i]);

End;

Write(‘Nhap so k = ’); Readln(k);

Dau:=1; Cuoi:=n; ok:=false;

While Dau <=Cuoi and not ok do Begin

Giua:=(Dau+Cuoi) div 2;

If A[giua] = k then ok:=true Else If A[giua] = k then

Cuoi:=Giua-1

Else Dau:=Giua+1; End;

If ok then Writeln(‘Chi so can tim

la:’,Giua) Else Writeln(‘Khong tim thay’);

Readln;

End.

* Củng cố.

- Nhấn mạnh một số kiến thức cơ

bản trong khi cài đặt

Tiết 24

* ổn định lớp: (1 phút)

- Kiểm tra bài cũ: (Lồng trong bài

giảng)

- GV: Đặt vấn đề, và đa ra những vấn đề

cần thiết về nlu trữ dự liệu dới dạng bảng

để các em thấy nhu cầu sử dụng mảng hai

chiều trong lập trình

- GV: Khai báo bằng cách nào thuận tiện

hơn?

- HS: Suy nghĩ và trả lời.

2 Kiểu mảng hai chiều

- KN: Mảng hai chiều là một bảng các phần tử cùng kiểu

- Với mảng hai chiều ta cần quan tâm đến: + Tên kiểu mảng hai chiều

+ Số lợng các phần tử của mỗi chiều trong mảng

+ Kiểu dữ liệu của các phần tử

+ Cách khai báo biến mảng hai chiều + Cách truy cập đến từng phần tử trong mảng

a Khai báo mảng hai chiều.

* Cách 1: Khai báo gián tiếp.

Type <tên kiểu mảng>=array[<Kiểu chỉ

số hàng>,<Kiểu chỉ số cột>] of

<kiểuphần tử>;

Trang 7

- GV: Tuỳ vào từng trờng hợp cụ thể

những thờng sử dụng cách 2

- GV: Khi khai báo mảng hai chiều cần

chú ý điều gì?

- HS: Tìm câu trả lời Gv gợi ý để các em

chỉ ra đợc chỉ số của mảng, số dòng, số

cột và kiểu của mỗi phần tử trong mảng

- GV: Gọi HS lên bảng khai báo một số

biến mảng hai chiều theo yêu cầu của

GV

- HS: Lên bảng và làm theo yêu cầu của

GV

- GV: Lấy ví dụ cụ thể để HS truy vấn

đến các phần tử trong mảng, sau đó lấy

một số ví dụ có sử dụng kiểu mảng hai

chiều trong cài đặt

Var <ds biến mảng> : <tên kiểu mảng>;

* Ví dụ:

Type MaTran = array[1 100,1 100] of

integer;

Var A: MaTran;

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

Var <Ds biến mảng> : array[<Kiểu chỉ

số hàng>,<Kiểu chỉ số cột>] of <kiểuphần

tử>;

* Ví dụ:

Var A : array[1 100,1 100] of integer;

+ Để truy cập đến các phần tử trong mảng, ta làm:

<Tên biến mảng>[chỉ số hàng,chỉ số cột]

* Ví dụ: A[2,13], B[23,55],

- GV: Viết chơng trình để HS có thể dễ

dàng nhận ra các thao tác phải thực hiện

khi viết chơng trình Và giải thích và

phân tích các câu lệnh trong chơng trình

và cách thực hiện của các câu lệnh

- HS: Chú ý nghe giảng và ghi bài

- GV: Vừa viết chơng trình, vừa phát vấn

HS về những câu lệnh đã học ở những bài

trớc

- HS: Xem lại kiến thức đã học và trả lời

b Ví dụ.

* Ví dụ 1: Viết chơng trình đa ra màn

hình bảng cửu chơng

Program Cuuchuong;

Uses Crt;

Var A: Array[1 9,1 10] of integer;

i,j: Byte;

Begin For i:=1 to 9 do For j:=1 to 10 do

A[i,j]:=i*j;

For i:=1 to 9 do Begin

For j:=1 to 10 do Write(A[i,j]:5)

Writeln; Writeln;

End;

Readln;

End.

* Ví dụ 2: Viết chơng trình nhập vào từ

bàn phím các phần tử của mảng 2 chiều A gồm n hàng, m cột với các phần tử là các

số nguyên và một số nguyên k Đa ra màn hình các phần tử của mảng nhỏ hơn k và

có bao nhiêu số

Program Mang_hai_chieu;

Uses Crt;

Var A: Array[1 100,1 100] of integer;

d, i, j: Byte; ;: Integer;

Begin

Trang 8

Write(‘ Nhap vao so dong, cot:’);

Readln(n,m);

For i:=1 to n do For j:=1 to m do Begin

Write(a[‘,i,’,’,j,’]=’);

Readln(a[i,j]);

End;

Write(‘Nhap vao gia tri k = ’);

Readln(k); d:=0;

For i:=1 to n do For j:=1 to m do

If a[i,j] < k then Begin

Write(a[i.j]:6); d:= d+1;

End;

If d = 0 then Writeln(‘Khong co phan

tu nao nho hon ’,k)

Else Writeln(‘Co ’,d,’ so nho hon’,k); Readln;

End.

v Củng cố

- Nhắc lại một số khái niệm mới

- Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 đồng thời gọi bôn HS lên bảng viết lại các cách khai báo, truy xuất và hiển thị đê nhập dự liệu

VI Dặn dò

- Vê nhà xem lại bài và làm bài tập 5, 6, 7, 8, 9 SGK 11/trang 79-80

- Xem trớc bài tập và thực hành 3 trang 63

Ngày đăng: 03/07/2013, 21:50

HÌNH ẢNH LIÊN QUAN

Hình bảng cửu chơng. - GA bai 11 Tin hoc 11
Hình b ảng cửu chơng (Trang 7)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w