Giáo án Tin Học lớp 11: BÀI TẬP VÀ THỰC HÀNH MẢNG

Chia sẻ: abcdef_34

I. Mục đích yêu cầu: * Học sinh hiểu được: - Kiểu dữ liệu mảng và cách khai báo mảng: một chiều và hai chiều. * Học sinh nắm được: - Cách khai báo (hay định nghĩa) kiểu dữ liệu mảng một chiều và hai chiều. - Nhập dữ liệu mảng. Đưa ra màn hình chỉ số và giá trị của mảng. - Duyệt qua từng phần tử của mảng. II. Chuẩn bị của giáo viên và học sinh: 1. Giáo viên: SGK, SGV, giáo án, giáo án điện tử, đèn chiếu, phòng máy, một số chương trình mẫu...

Bạn đang xem 7 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

Nội dung Text: Giáo án Tin Học lớp 11: BÀI TẬP VÀ THỰC HÀNH MẢNG

BÀI TẬP VÀ THỰC HÀNH MẢNG

I. Mục đích yêu cầu:

* Học sinh hiểu được:

- Kiểu dữ liệu mảng và cách khai báo mảng: một chiều và hai chiều.

* Học sinh nắm được:

- Cách khai báo (hay định nghĩa) kiểu dữ liệu mảng một chiều và hai

chiều.

- Nhập dữ liệu mảng. Đưa ra màn hình chỉ số và giá trị của mảng.

- Duyệt qua từng phần tử của mảng.

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

1. Giáo viên: SGK, SGV, giáo án, giáo án điện tử, đèn chiếu, phòng

máy, một số chương trình mẫu khổ lớn.

2. Học sinh: Xem kỹ bài thực hành trong SGK. Tìm hiểu kỹ từng

dòng lệnh.

III. Nội dung:

Hoạt động của thầy và trò Nội dung bài giảng

GV: Các em hãy đọc đề và gõ Bài thực hành 3
chương trình trong SGK trang

77-78 vào máy. 1) Bài 1

Cho mảng A gồm n số nguyên (n ≤

100), mỗi số theo trị tuyệt đối không

GV: Myarray là tên kiểu dữ liệu vượt quá 300. Tính tổng các phần tử

hay tên biến. của mảng là bội số của một số

HS: Trả lời nguyên dương k cho trước.

GV: Vai trò của nmax và n? Có a) Gõ nội dung chương trình:

thể thay nmax bằng n trong khai Program sum1;

báo kiểu mảng được không? Vì Uses crt;

sao? Const nmax = 100;

HS:... Type MyArray = Array[1..nmax] Of

Integer;

Var A : MyArray;

s,n,i,k: integer;

Begin

GV: Nhập số phần tử của mảng? Clrscr; Randomize;
HS: Nhập n Write('Nhap n = ');

Readln(n);

GV: Những dòng lệnh nào nhằm {Tạo ngẫu nhiên mảng gồm n số

tạo ra mảng A? nguyên}

GV:Lệnh A[i]:= Random(301)- For i:=1 To n Do A[i]:=

Random(301); dùng để làm gì? Random(301)-Random(301);



{Duyệt qua từng phần tử của mảng:

GV: Câu lệnh FOR-DO cuối xuất chỉ số và giá trị}

cùng thực hiện nhiệm vụ gì? Giải For i:=1 To n Do Writeln(' A[',i,'] =

thích? ',A[i]:5);



Write('NHap k :'); Readlk(k);

GV: Câu lệnh s:=s+A[i]; được s:=0;

thực hiện bao nhiêu lần? For i:=1 to n Do

If A[i] Mod k = 0 Then

s:=s+A[i];
Writeln('Tong can tinh la : ',s);

Readln

End.

Nên cho học sinh lưu lại chương b) Hãy thay các câu lệnh sau vào vị

trình này. Sau đó dùng Save as để trí cần thiết để sửa đổi chương trình

lưa lại với tên khác để dùng cho trên nhằm để tính và đưa ra số lượng

số dương và số âm trong mảng.
câu b.



posi,neg: integer;

posi:=0; neg:=0;

If A[i] > 0 Then Posi:=posi+1

Else If A[i] < 0 Then

Neg:=neg+1;

Writeln(posi:4, neg:4);



Chương trình trên được viết lại như

sau:
Program sum1;

Uses crt;

Const nmax = 100;

Type MyArray = Array[1..nmax] Of

Integer;

Var A : MyArray;

s,n,i,k,posi,neg: integer;

Begin

Clrscr; Randomize;

Write('Nhap n = ');

Readln(n);

{Tạo ngẫu nhiên mảng gồm n số

nguyên}

For i:=1 To n Do A[i]:=

Random(301)-Random(301);



{Duyệt qua từng phần tử của mảng:
xuất chỉ số và giá trị}

For i:=1 To n Do Writeln(' A[',i,'] =

',A[i]:5);



Write('NHap k :'); Readlk(k);

{s:=0;}

posi:=0; neg:=0;

For i:=1 to n Do

If A[i] > 0 Then Posi:=posi+1

Else If A[i] < 0 Then

Neg:=neg+1;

Writeln(posi:4, neg:4);



{If A[i] Mod k = 0 Then

s:=s+A[i];

Writeln('Tong can tinh la : ',s);}

Readln
End.

Bài 2

Chương trình tính và đưa ra màn

hình bảng cộng

1 2 3 4 5 6 7 8 9

2 4 5 6 7 8 9 10 11

3 5 6 7 8 9 10 11 12

4 6 7 8 9 10 11 12 13

5 7 8 9 10 11 12 13 14

6 8 9 10 11 12 13 14 15

7 9 10 11 12 13 14 15 16

8 10 11 12 13 14 15 16 17

9 11 12 13 14 15 16 17 18



HS: Dùng một mảng hai chiều để Bảng Cộng
lưu Bảng cộng Program Bangcong;

Uses Crt;
GV: Khai báo? VAR B: Array[1..9,1..9] OF

Integer;

HS: Khai báo. i, j : Integer;

Begin

GV: Gọi i là chỉ số dòng, j là chỉ Clrscr;

số cột thì miền giá trị của i, j như For i:=1 to 9 Do {Tính giá trị

thế nào? cho từng phần tử}

For j:=1 to 9 Do

HS: Trả lời. B[i,j]:= i+j;

{Xuất ra màn hình}

GV: Nhận xét gì về phần tử B[i,j] For i:=1 to 9 Do

của bảng cộng? Begin

HS: B[i,j]=i+j For j:=1 to 9 Do

GV: Yêu cầu học sinh viết đọan Write(B[i,j]:3);

chương trình tính B[i,j]. Writeln;

GV: Viết kết quả ra màn hình? End;

HS: lên bảng thực hiện Readln
End.

Bài 2:Viết chương trình tìm phần tử

lớn nhất của mảng và đưa ra màn

hình chỉ số và giá trị của phần tử tìm

được. Nếu có nhiều phần tử cùng giá

trị lớn nhất thì đưa ra phần tử có chỉ

số nhỏ nhất.

Program MaxElement;

GV: Chương trình trên chỉ đưa ra Uses crt;

max với chỉ số lớn nhất. Do đó Const nmax = 100;

muốn đưa ra max với chỉ số nhỏ Type MyArray = Array[1..nmax] Of

nhất nên gợi cho hs: Integer;

- Vai trò của biến j: thông qua kết Var A : MyArray;

quả. Lệnh gán khởi trị biến j sau n,i,j: integer;

khi duyệt qua từng phần tử, câu Begin

lệnh IF - THEN dùng để kiểm tra Clrscr; Randomize;

phần tử thứ i có lớn nhất không, Write('Nhap n = ');
nếu có lưu giữ vào biến j. Readln(n);

- Nếu dùng bộ dữ liệu lớn thì làm {Tạo ngẫu nhiên mảng gồm n số

như chương trình của SGK. nguyên}

Trong trường hợp nếu muốn nhập For i:=1 To n Do A[i]:=

thì hướng dẫn hs viết đoạn Random(300)-Random(300);

chương trình sau:

{Duyệt qua từng phần tử của mảng:
FOR i:=1 to n Do

xuất chỉ số và giá trị}
Begin

Write('A[',i'] ='); For i:=1 To n Do Writeln(' A[',i,'] =

Readln(A[i]); ',A[i]:5);

End; j:=1;

GV: Mô phỏng với 10 phần tử. For i:=1 to n Do

GV:Vòng lặp FOR khi duyệt qua If A[i] > A[j] Then j:=i;

từng phần tử để tìm số lớn nhất ở Writeln('Chỉ số : ',j, ' Gia tri :

trên có thể đảo để chạy ngược lại ',A[j]:5;

được không (Downto) Readln

GV: Hãy thử cho vòng FOR trên End.
chạy từ n đến 1, lúc đó j:=n và

xem kết quả.

GV:Dựa vào chương trình trên để

tìm phần tử bé nhất.

For i:=1 to n Do

If A[i] > A[j] Then

j:=i;

Viết lại

If A[i] < A[j] Then

j:=i;

b) Chương trình được viết lại để b. FOR i:=1 to n Do IF A[i]=A[j]

đưa ra các chỉ số các phần tử có Then

cùng giá trị lớn nhất. Writeln('Chỉ số : ',i, ' Gia tri :

Gợi để học sinh viết được đoạn ',A[i]:5)

chương trình sau:

GV: Chương trình trên có cần lưu

giữ đoạn chương trình tìm phần
tử lớn nhất?

GV: Để đưa ra chỉ số và phần tử

đạt giá trị lớn nhất có cần duyệt

qua tất cả các phần tử của mảng

không?



IV. Củng cố, dặn dò:

Nhắc lại các lỗi học sinh thường gặp

Chuẩn bị bài thực hành tiết sau
Đề thi vào lớp 10 môn Toán |  Đáp án đề thi tốt nghiệp |  Đề thi Đại học |  Đề thi thử đại học môn Hóa |  Mẫu đơn xin việc |  Bài tiểu luận mẫu |  Ôn thi cao học 2014 |  Nghiên cứu khoa học |  Lập kế hoạch kinh doanh |  Bảng cân đối kế toán |  Đề thi chứng chỉ Tin học |  Tư tưởng Hồ Chí Minh |  Đề thi chứng chỉ Tiếng anh
Theo dõi chúng tôi
Đồng bộ tài khoản