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

Bài 11: Kiểu mảng và biến có chỉ số (Bài 11a: Mảng 1 chiều)

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 (525.25 KB, 13 trang )


Bµi
12
Gi¸o ¸n ®iÖn tö tin häc líp 11


!"# $%&'
(
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7.
* Dữ cần tính và in ra (OUTPUT): tb, dem.
Hãy xác định
Input, Output và
viết chơng trình
giải bài toán trên ?
&)*+,-

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ãy cho biết
nếu muốn tính nhiệt
độ trung bình của N
ngày 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) !!!!!
Để khắc phục khó
khăn đó ta sử dụng kiểu
dữ liệu mảng một chiều.

./,#0123)4567
17 20 18 25 19 12 19
A
1 2 3 4 5 6 7
Trong ®ã :


Khi tham chiÕu ®Õn phÇn tö thø i ta viÕt A[i].
VÝ dô: A[5] = 19.
 Tªn m¶ng : A.
 Sè phÇn tö cña m¶ng: 7.
VÝ dô:
 KiÓu d÷ liÖu cña c¸c phÇn tö: KiÓu nguyªn.
19
89)

:9)/,;<=><?
* Cách 1: Khai báo gián tiếp
@;ABC67/DEFBG!"DBG!""DHIB674DJ
KB0!L/D-BC67/DJ
K0M- @;AN0EF8OPQHINNJ
K<-N0J
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
* Cách 2: Khai báo trực tiếp
KBR!L/D-FBG!"DBG!""DHIB674DJ
K<S&-F88TTHIN#J
K0M- KN0-F8OPQHINNJ

O>))U4#/,
A
n
1.
Nhập số phần tử của mảng (n).
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;

Các bớc
Thể hiện bằng
pascal
a. Nhập mảng một chiều
với n = 7
19171921182017
Ví dụ:
Nhập nhiệt độ n ngày.


b. In mảng một chiều
Writeln( Mang vua nhap : );
For i:=1 to n do Write(A[i]:5);

Mang vua nhap:
-
Thông báo
-

In giá trị của các phần tử
17 20 18 21 19 17 19
Kết quả in ra màn hình:
Ví dụ:
In mảng vừa nhập.

VWL)4//1,6 X
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
c. C¸c thao t¸c xö lÝ kh¸c
VÝ dô
:
§Õm sè ngµy cã nhiÖt ®é cao
h¬n nhiÖt ®é TB cña tuÇn.
TB = 18.7
Dem=0
7654321
i
19171921182017
A[i]
0 1 1 2
3
3 4
20 21 19 19
+1 +1 +1+1

Program vd1;
Uses crt;
Var

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
Begin
write( Nhap nhiet do ngay thu ,i, : ) ;
readln(A[i]) ;
S:=S+A[i] ;
End;
TB := S/n ; dem := 0 ;
For i := 1 to n do
If A[i]>TB Then dem := dem+1;
Writeln( Nhiet do trung binh ,n, ngay = ,TB : 6 : 2) ;
Writeln( So ngay co nhiet do cao hon nhiet do TB la: , dem) ;
Readln ;
END.
Khai b
áo mảng 1 chiều
Nhập mảng 1 chiều
Tính tổng
Đếm số phần tử thoả
mãn điều kiện

Nhap vao so ngay :
7

Nhap nhiet do ngay thu 1 :
17
Nhap nhiet do ngay thu 2 :
20
Nhap nhiet do ngay thu 3 :
18
Nhap nhiet do ngay thu 4 :
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
> '36LY/ !-

Z [S))U4#/,,05\#]^_R^
V`)4//1,6 X
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];
19121825162015
S = 45


Hãy nhớ!
Mảng một chiều là một dãy
hữu hạn các phần tử cùng kiểu.
9)- tên mảng, chỉ số đầu,
chỉ số cuối, kiểu phần tử.

L4/-
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.
15 20 19 25 18 12 16
Var A:ARRAY[1 100] OF integer;
A[5] = 18

×