Tải bản đầy đủ (.ppt) (13 trang)

Bai 11 Kieu mang

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (542.39 KB, 13 trang )

Bài 11

Giáo án điện tử tin học lớp 11


Bài toán đặt vấn đề:
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?

HÃy xác định
Input, Output

* Dữ liệu nhập vào (INPUT):
t1,t2,t3,t4,t5,t6,t7.
viết chơng trình
bài toán trên ?tb, dem.
* Dữ cần tính và in ragiải
(OUTPUT):


Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(‘ Nhap vao nhiet do 7 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 trong tuan = ‘,tb : 6 : 2);
Writeln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem);
Readln;
END.


Quan sát chơng trình,
hÃykhắc
cho biết
nếukhó
Để
phục
muốn
tính
khăn
đó ta
sửnhiệt
dụngđộkiểu
trung bình của N ngày
dữ liệu mảng một chiều.
trong năm (VD:
N=365) thì sẽ gặp khó

khăn gì ?
Khai báo quá lớn
(t1,t2,t3,...,t365) và
chơng trình quá
dài (với 365 lÖnh
IF) !!!!!


1. Mng mt chiu.
a) Khỏi nim

Mảng một chiều là một dÃy hữu hạn các phần tử cùng kiểu
Ví dụ:

A

17

20

18

25

19

1

2


3

4

5

12

19

6

7

Trong đó :
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ử: Kiểu nguyên.
Khi tham chiếu đến phần tử thứ i ta viết A[i].
VÝ dô: A[5] = 19.


b. Khai báo mảng một chiều trong PASCAL
* 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>;
Trong đó : Chỉ số đầu, chỉ số cuối thờng là các hằng hoặc biểu thức nguyên;
Chỉ số đầu chỉ số cuối;

Giữa 2 chỉ sè lµ dÊu ..

VÝ dơ:

TYPE nhietdo = array[1..366] of real;
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..366] of real;
Var A,B : array[1..100] of real;


c. Các thao tác xử lí trong mảng một chiều

Nhập mảng một chiều
Ví dụ: Nhập nhiệt độ n ngày.

A
Các bớc

17

20

18 .......
21 19
víi nn = 7

1. NhËp sè phÇn tư cđa m¶ng (n).


17

19

ThĨ hiƯn b»ng pascal

Write(‘ Nhap vao so ngay:’);
Readln(n);

2. NhËp vào giá trị của các phần tử
trong mảng (A[i]).

For i:=1 to n do
Begin
write(‘nhiet do ngay thu’ ,i, ’ : ’);
readln(A[i]);
end;


In mảng một chiều
Ví dụ: In mảng vừa nhập.
- Thông báo

Writeln( Mang vua nhap : );

- In giá trị của các phần tử

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


Kết quả in ra màn hình:
Mang vua nhap:
17 20 18 21 19 17 19


Các thao tác xử lí khác
* Đếm các phần tử trong mảng thoả mÃn điều kiện cho trớc

Ví dụ: Đếm số ngày có nhiệt độ cao

dem :=0;

hơn nhiệt độ TB cđa tn.

For i :=1 to n do
IF A[i]>TB then dem:=dem+1;

i
A[i]

Dem=0

1

2

3

4


5

6

7

17

20

18

21

19

17

19

2

3

0

1
+1

1

+1

+1

3

4
+1

TB = 18.7


Program vd1;
Uses crt;
Var
Khai báo mảng 1 chiều
A: Array[1..366] of integer;
i,n,dem: integer;
S,TB : real ;
BEGIN
Clrscr;
write(‘ Nhap vao so ngay : ’) ;
readln(n) ;
S := 0 ;
For i := 1 to n do
NhËp m¶ng 1 chiỊu
Begin
write(‘ Nhap nhiet do ngay thu ‘,i,’ : ‘) ;
TÝnh tæng
readln(A[i]) ;

S:=S+A[i] ;
End;
TB := S/n ;
dem := 0 ;
For i := 1 to n do
Đếm số phần tư tho¶
If A[i]>TB Then dem := dem+1;
Writeln(‘ Nhiet do trung binh ’ ,n,’ ngay = ‘,TB : 6 : 2) ; m·n ®iỊu kiƯn
Writeln(‘ So ngay co nhiet do cao hon nhiet do TB la: ‘, dem) ;
Readln ;
END.


Chơng trình chạy và cho kết quả nh sau:
Nhap vao so ngay :

7

Nhap nhiet do ngay thu 1 :
Nhap nhiet do ngay thu 2 :
Nhap nhiet do ngay thu 3 :
Nhap nhiet do ngay thu 4 :

17
20
18
21

Nhap nhiet do ngay thu 5 : 19
Nhap nhiet do ngay thu 6 : 17

Nhap nhiet do ngay thu 7 : 19
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4


* Tính tổng các phần tử trong mảng thoả mÃn điều kiện cho trớc

Ví dụ: Tính tổng các phần tử trong
m¶ng chia hÕt cho 3.

S :=0;
For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];

15

20

16

25

18

12

19

S = 45


Th«ng thờng, các thao tác xử lí trong mảng một chiều ®Ịu dïng c©u lƯnh FOR...DO.


H·y nhí!
15 20 19 25 18 12 16

 M¶ng mét chiều là một dÃy hữu
hạn các phần tử cùng kiểu.

Var A:ARRAY[1..100] OF integer;

Khai báo: tên mảng, chỉ số đầu,
chỉ sè ci, kiĨu phÇn tư.

A[5] = 18

 Tham chiÕu phÇn tử mảng:
Tên biến mảng[chỉ số phần tử]
Nhiều thao tác xử lí mảng dùng
cấu trúc lặp FOR ..TO.. DO.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×