1. Trang chủ
  2. » Công Nghệ Thông Tin

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

13 3,3K 25
Tài liệu đã được kiểm tra trùng lặp

Đ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

Định dạng
Số trang 13
Dung lượng 166,32 KB

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

Nội dung

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

Trang 1

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

Trang 2

chương trình trong SGK trang

77-78 vào máy

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

hay tên biến

HS: Trả lời

GV: Vai trò của nmax và n? Có

thể thay nmax bằng n trong khai

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

sao?

HS:

GV: Nhập số phần tử của mảng?

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 vượt quá 300 Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước

a) Gõ nội dung chương trình: Program sum1;

Uses crt;

Const nmax = 100;

Type MyArray = Array[1 nmax] Of Integer;

Var A : MyArray;

s,n,i,k: integer;

Begin Clrscr; Randomize;

Trang 3

HS: Nhập n

GV: Những dòng lệnh nào nhằm

tạo ra mảng A?

GV:Lệnh A[i]:=

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

GV: Câu lệnh FOR-DO cuối

cùng thực hiện nhiệm vụ gì? Giải

thích?

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

thực hiện bao nhiêu lần?

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;

For i:=1 to n Do

If A[i] Mod k = 0 Then s:=s+A[i];

Trang 4

Nên cho học sinh lưu lại chương

trình này Sau đó dùng Save as để

lưa lại với tên khác để dùng cho

câu b

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

Readln End

b) Hãy thay các câu lệnh sau vào vị trí cần thiết để sửa đổi chương trình trên nhằm để tính và đưa ra số lượng

số dương và số âm trong mảng

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:

Trang 5

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:

Trang 6

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

Trang 7

HS: Dùng một mảng hai chiều để

lưu Bảng cộng

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

Bảng Cộng Program Bangcong;

Uses Crt;

Trang 8

GV: Khai báo?

HS: Khai báo

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

số cột thì miền giá trị của i, j như

thế nào?

HS: Trả lời

GV: Nhận xét gì về phần tử B[i,j]

của bảng cộng?

HS: B[i,j]=i+j

GV: Yêu cầu học sinh viết đọan

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

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

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

VAR B: Array[1 9,1 9] OF Integer;

i, j : Integer;

Begin Clrscr;

For i:=1 to 9 Do {Tính giá trị cho từng phần tử}

For j:=1 to 9 Do

B[i,j]:= i+j;

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

For i:=1 to 9 Do Begin

For j:=1 to 9 Do

Write(B[i,j]:3); Writeln;

End;

Readln

Trang 9

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

max với chỉ số lớn nhất Do đó

muốn đưa ra max với chỉ số nhỏ

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

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

quả Lệnh gán khởi trị biến j sau

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

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

phần tử thứ i có lớn nhất không,

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;

Uses crt;

Const nmax = 100;

Type MyArray = Array[1 nmax] Of Integer;

Var A : MyArray;

n,i,j: integer;

Begin Clrscr; Randomize;

Write('Nhap n = ');

Trang 10

nếu có lưu giữ vào biến j

- Nếu dùng bộ dữ liệu lớn thì làm

như chương trình của SGK

Trong trường hợp nếu muốn nhập

thì hướng dẫn hs viết đoạn

chương trình sau:

FOR i:=1 to n Do

Begin

Write('A[',i'] =');

Readln(A[i]);

End;

GV: Mô phỏng với 10 phần tử

GV:Vòng lặp FOR khi duyệt qua

từng phần tử để tìm số lớn nhất ở

trên có thể đảo để chạy ngược lại

được không (Downto)

GV: Hãy thử cho vòng FOR trê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(300)-Random(300);

{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);

j:=1;

For i:=1 to n Do

If A[i] > A[j] Then j:=i;

Writeln('Chỉ số : ',j, ' Gia tri : ',A[j]:5;

Readln End

Trang 11

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 để

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

cùng giá trị lớn nhất

Gợi để học sinh viết được đoạn

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

b FOR i:=1 to n Do IF A[i]=A[j] Then

Writeln('Chỉ số : ',i, ' Gia tri : ',A[i]:5)

Trang 12

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

Ngày đăng: 07/08/2014, 22:23

TỪ KHÓA LIÊN QUAN

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