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?. * Dữ liệ
Trang 1Bµi 12
Gi¸o ¸n ®iÖn tö tin häc líp 11
Trang 2Nhậ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?
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7
Hãy xác định Input, Output và viết chương trình giải bài toán trên ?
Bài toán đặt vấn đề:
Trang 3Program 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
Trang 4Quan 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.
Trang 5Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu
A
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
1 Khái niệm
Trang 62 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>;
Ví dụ: TYPE nhietdo = array [1 365] of integer;
Var A: nhietdo;
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
Var <Ds biến mảng> : array [<chỉ số đầu> <chỉ số cuối>] of <kiểuphần tử>;
Var A,B : array [1 100] of real;
Ví dụ: Var nhietdo : array [1 365] of integer;
Trang 73 Các thao tác xử lí trong mảng một chiều
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;
pascal
a Nhập mảng một chiều
với n = 7
19 17
19 21
18 20
17
Ví dụ: Nhập nhiệt độ n ngày.
Trang 8b 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.
Trang 9* Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
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
7 6
5 4
3 2
1 i
19 17
19 21
18 20
17
A[i]
Trang 10Program 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
Trang 11Nhap vao so ngay : 7
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4
Chương trình chạy và cho kết quả như sau:
Trang 12Thô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.
* 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];
19 12
18 25
16 20
15
S = 45
Trang 13H·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
Khai b¸o: tªn m¶ng, chØ sè ®Çu,
chØ sè cuèi, kiÓu phÇn tö
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.
15 20 19 25 18 12 16
Var A :ARRAY[ 1 100 ] OF integer ;
A[5] = 18