Câu lệnh : Là một câu lệnh của Pascal.. Trong đó: Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.. Điều kiện Đúng Câu lệnh Sai... Nhập vào nhiệt độ trung bình của mỗi ngày
Trang 1Bµi 11
Gi¸o ¸n ®iÖn tö tin häc líp 11
Trang 2Kiểm tra bài cũ:
Caõu 1: Em haừy trỡnh caỏu truực vaứ caựch
thửùc hieọn cuỷa voứng laởp While?
WHILE <Điều kiện> DO <Câu
lệnh>;
Điều kiện : Là biểu thức
quan hệ hoặc lôgic.
Câu lệnh : Là một câu lệnh của
Pascal.
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
Điều kiện
Đúng
Câu lệnh
Sai
Trang 3Nhậ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 và viết chương trình giải bài toán trên ?
Bài toán đặt vấn đề:
Trang 4Program 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.
{KHAI BAO BIEN}
{NHAP VAO NHIET DO CUA 7 NGAY}
{ TINH NHIET DO TRUNG BINH CUA TUAN} {KHOI DONG BIEN DEM}
{ DEM SO NGAY CO NHIET DO CAO HON NHIET DO TB}
Trang 5Quan 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 6Mả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 đó :
Ví dụ: A[5] = 19
Ví dụ:
19
1 Kiểu mảng 1 chiều
Trang 76.7
90 45
25 10
20
B
1 2 3 4 5 6 7 8
F B[6] =
Tªn m¶ng:
Sè phÇn tö cña m¶ng:
KiÓu d÷ liÖu cña c¸c phÇn tö:
90
Trang 8a) Khai báo
* 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ểu phần tử>;
Var <Tên 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 <tên 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 9Arrayr1 = array[1 200] of real;
Arrayr2 = array[byte] of real;
Arrayb = array [0 100] of Boolean;
* Khai baựo maỷng 1 chieàu coự 200 phaàn tửỷ kieồu real , chieỏm 800 byte
* Maỷng 1 chieàu coự 100 phaàn tửỷ kieồu Boolean, chieỏm 100 byte
trong boọ nhụự.
Tỡm xem khai baựo naứo ủuựng, yự nghúa cuỷa caực leọnh, chieỏm dung lửụùng boọ nhụự laứ
bao nhieõu?
Bài toán đặt vấn đề:
Trang 10** 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
ỉ 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 11Ø 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 12* Đế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 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 13Προγραµ ϖδ1;
Υσεσ χρτ;
ςαρ
Α: Αρραψ[1 366] οφ ιντεγερ;
ι,ν,δεµ: ιντεγερ;
Σ,ΤΒ : ρεαλ ;
ΒΕΓΙΝ
Χλρσχρ;
ωριτε( Νηαπ ϖαο σο νγαψ : ) ; ‘ ’
ρεαδλν(ν) ;
Σ := 0 ;
Φορ ι := 1 το ν δο
Βεγιν
ωριτε( Νηαπ νηιετ δο νγαψ τηυ ,ι, : ) ; ‘ ‘ ’ ‘
ρεαδλν(Α[ι]) ;
Σ:=Σ+Α[ι] ;
Ενδ;
ΤΒ := Σ/ν ; δεµ := 0 ;
Φορ ι := 1 το ν δο
Ιφ Α[ι]>ΤΒ Τηεν δεµ := δεµ+1;
Ωριτελν( Νηιετ δο τρυνγ βινη ,ν, νγαψ = ,ΤΒ : 6 : 2) ; ‘ ’ ’ ‘
Ωριτελν( Σο νγαψ χο νηιετ δο χαο ηον νηιετ δο ΤΒ λα: , δεµ) ; ‘ ‘
Ρεαδλν ;
ΕΝ∆.
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 14Nhap 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
Chương trình chạy và cho kết quả như sau:
Trang 15Thô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 16H·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
Trang 17Tiết học hôm nay đến đây là hết rồi!