Người thực hiện:
Nguyễn Thị Dương Hương
BÀI DỰ THI ỨNG DỤNG CÔNG NGHỆ THÔNG TIN TRONG DẠY HỌC
SỞ GIÁO DỤC ĐÀO TẠO QUẢNG NAM
PHÒNG GIÁO DỤC ĐÀO TẠO ĐIỆN BÀN
TRƯỜNG TRUNG HỌC CƠ SỞ TRẦN PHÚ
TRƯỜNG TRUNG HỌC CƠ SỞ TRẦN PHÚ
while
< di?u ki?n >
< cõu l?nh >
,
do
Trong đó:
while
do
:
là các từ khoá.
< di?u ki?n >
:
là phép so sánh
< cõu l?nh >
:
là câu lệnh đơn hoặc ghép
;
Câu 1: Viết Cú pháp và nêu ý nghĩa các thành phần có trong vòng lặp while..do?
KIỂM TRA BÀI CŨ
a) X:= 10; while X:= 10 do X:= X + 5;
b) X:= 10; while X = 10 do X = X + 5;
c) S:= 0; n:=0; while S <= 10 do n:= n + 1; S:= S + n ;
Câu 2: Em h�y cho bi?t c�c c�u l?nh sau d�ng hay sai? N?u sai h�y ch? ra l?i
sai
sai
sai
KIỂM TRA BÀI CŨ
Em thường nhìn thấy việc xếp hàng tập thể dục, xếp hàng để mua vé, xếp hàng vào lớp…
Qua những quan sát xếp hàng như trên em thấy sắp xếp có lợi ích gì?

Tập thể dục
Sắp xếp
công việc
làm cho mọi
hoạt động
diễn ra một
cách có trật
tự và nhanh
chóng…
Trong lập trình nếu biết bố trí dữ liệu theo dãy thì việc xử lí dữ liệu
trở nên:
đơn giản
dễ dàng
hiệu quả
Những hạn chế:
Phải khai báo quá nhiều biến.
Chương trình tính toán phải viết khá dài
Write (Diem hs 1= ); Readln(diem_1);
Write (Diem hs 2= ); Readln(diem_2);
Write (Diem hs 3= ); Readln(diem_3);
Write (Diem hs 4= ); Readln(diem_4);

……
Write (Diem hs n= ); Readln(diem_n);
- Nhập và lưu điểm cho n học sinh?
Khai báo n biến như sau:
Var diem_1, diem_2, diem_3,
diem_4, .. , diem_n: real;
Khắc phục những hạn chế:
Ghép chung n biến trên thành một dãy.
Đặt chung 1 tên và đặt cho mỗi phần tử một chỉ số.
Var diem: array[1..50] of real;
.
…………………….
For i:=1 to n do
Begin
write(diem hs,i,:’);
readln(diem[i]);
End;
Ví dụ 1:
DỮ LIỆU KiỂU MẢNG(DÃY SỐ)
1. Dãy số và biến mảng
……
….
,
var
Diem
1
Diem
2
Diem
,
,
3
,
Diem
4
,
Diem
n
:
Real
;
.............
Diem
8
10
9
10
9
Chỉ số
Dữ liệu kiểu mảng: Là một tập hợp hữu hạn các phần tử, mọi
phần tử đều có cùng kiểu dữ liệu gọi là kiểu của phần tử.
DỮ LIỆU
KIỂU MẢNG
LÀ GÌ?
- Biến mảng: là một biến được tạo từ nhiều biến có cùng kiểu nhưng chỉ dưới một tên duy nhất.
Biến mảng
Giá trị của biến mảng
- Giá trị của biến mảng: là một dãy số (số nguyên hoặc số thực) có thứ tự, mỗi số là giá trị của biến thành phần
1. Dãy số và biến mảng

Ví dụ về khai báo biến mảng
Cú pháp khai báo biến mảng
như thế nào?
Lợi ích của việc sử dụng
biến mảng?
BiẾN MẢNG
Các thao tác có thể sử dụng
với biến mảng?
a.Ví dụ về khai báo mảng:
Var Chieucao: array[1 .. 50] of real;
Var Tuoi: array[21 .. 80] of Integer;
Kiểu dữ liệu các phần tử
Tên biến
Số phần tử
? Viết cú pháp khai báo mảng?

? ý nghĩa các thành phần có
trong cú pháp?
thảo luận nhóm
6 phút
b. Cú pháp và ý nghĩa các thành của khai báo mảng:
2. Ví dụ về biến mảng
22
11
16
10
13
20
16
A
1 2 3 4 5 6 7
Khai báo biến mảng cần chỉ rõ:
Khi tham chiếu đến phần tử thứ i ta viết A[i]
A[6] = 22
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
22
Var Diem1, Diem2, Diem3, , Diem40: Real;

Readln(Diem1); Readln(Diem2); ; Readln(Diem40);
Var Diem: array[1..40] of Real;
………..
Khi sử dụng biến mảng thì nhập dữ liệu cho biến như thế nào?
For i:= 1 to 40 do Readln(Diem[i]) ;

Ví dụ 2: Giả sử chúng ta cần nhập Điểm kiểm
tra môn tin học của 1 lớp gồm 40 học sinh theo
cách khai báo biến thông thường?
c. Lợi ích của việc sử dụng biến mảng:
Rút gọn việc viết chương trình, có thể sử dụng câu lệnh lặp thay cho nhiều câu lệnh
IF Diem1 >= 8 then writeln( ‘gioi ‘) ;
IF Diem2 >= 8 then writeln( ‘gioi’ ) ;
………..
IF Diem40 >= 8 then writeln( ‘gioi’ ) ;
For i: =1 to 40 do IF Diem[i] >=8 then Writeln( ‘gioi’ ) ;
Sử dụng biến mảng rất hiệu quả trong việc xử lý dữ liệu: thực hiện các so sánh, tính toán…
Em hãy viết câu lệnh: Nếu điểm kiểm tra từ 8 trở lên thì in ra màn hình là giỏi bằng cách khai báo biến thông thường ?
Khi sử dụng biến mảng thì các câu lệnh này được sử dụng như thế nào?
Var Diem: array[1..40] of Real;
………..
For i:= 1 to 40 do Readln(Diem[i]) ;
c. Lợi ích của việc sử dụng biến mảng:
Rút gọn việc viết chương trình, có thể sử dụng câu lệnh lặp thay cho nhiều câu lệnh
d. Các thao tác có thể sử dụng với biến mảng:
22
11
16
10
13
20
16
Khi tham chiếu đến phần tử thứ i ta viết A[i]
A[6] = 22
9
A
1 2 3 4 5 6 7

A[6] := 9
Gán giá trị cho biến:
……
….
,
1
2
,
3
,
4
7
Chỉ số
Diem
8
10
9
10
9


For i:=1 to 7 do
Readln(a[i]);
Nhập giá trị cho biến mảng:
d. Các thao tác có thể sử dụng với biến mảng:

A[6] := 9
Gán giá trị cho biến mảng:
Viết chương trình nhập điểm kiểm tra của 3 môn toán, lý, văn sau đó tính điểm trung bình của 3 môn
Var DiemToan, DiemVan, DiemLi, DiemTB: array[1..40] of real;
……………
For i:= 1 to 40 do
DiemTB[i]:=(DiemToan[i]+DiemVan[i]+DiemLi[i])/3;
Đọc và tính toán với giá trị của biến mảng:
Nhập giá trị cho biến mảng:
d. Các thao tác có thể sử dụng với biến mảng:
Gán giá trị cho biến mảng:


For i:=1 to 7 do
Readln(a[i]);

A[6] := 9


Nhập và tính tổng tiền lương
hàng tháng, hàng năm cho
nhân viên của công ty

Nhập và tính điểm trung bình
các môn học của một lớp học
Theo em nghĩ trên thực tế: người ta sử dụng biến mảng để giải quyết những bài toán lập trình nào?
Liên hệ thực tế:
Nhập và tính cước phí điện
thoại, dịch vụ Internet…
3. Tìm giá trị lớn nhất và nhỏ nhất của dãy số:
Input:
Dãy số A gồm n số nguyên
Output:
Số lớn nhất và nhỏ nhất của dãy a1, a2,, an.
Input, Output của bài toán?
Bài toán: Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số lớn nhất.
Hãy nêu ý tưởng tìm số lớn nhất của dãy số?
Ta gán Max = a1
Lần lượt cho i chạy từ 2 đến n rồi so sánh với Max.
Nếu Max > a[i] thì max nhận giá trị mới là ai
* Ý tưởng tìm max của dãy số:

* Thuật toán tìm giá trị lớn nhất của dãy số
Bước 1: Nhập N và dãy a1, a2, …, an.
Bước 2: Max ← a1, i ← 2.
Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc.
Bước 4: Nếu ai > Max thì Max ← ai.
Bước 5: i ← i + 1. Quay lại bước 3.
MAX
a. Ví dụ minh hoạ trên thực tế
Nêu các bước tìm ra con thỏ lớn nhất trong 4 con thỏ?
Cho dãy số như hình vẽ dưới đây, hãy thực hiện các bước của thuật toán để tìm ra số lớn nhất của dãy số?
N=5
1
5
2
?
?
S
S
5
3
S
Đ
7
4
S
Đ
Đ
15
5
S
S
15
6
Đ
Dừng
BÀI TẬP
Đoạn chương trình tìm max:

Max:=A[1];

For i:=2 to N do
IF (A[i] > Max) Then Max:=A[i];
Thể hiện bằng pascal
Các bước thực hiện

Khai báo biến mảng và các biến cần dùng
Nhập số phần tử cho mảng
Nhập các giá trị cho từng phần tử của mảng
Xử lí tìm số lớn nhất của mảng
Xuất giá trị lớn nhất của mảng vừa nhập
var i,n,max:integer;
A: array[1..20] of integer;

Writeln( ‘nhap so phan tu cua day’);
Readln(n);
For i:=1 to n do
Begin
Writeln( ‘Nhap gia tri a[‘ ,i, ’]=‘);
Readln(a[i]);
End;

Writeln(`gia tri max cua mang=’, max);
Max:=a[1];
For i:=2 to n do
If maxĐoạn chương trình tìm giá trị lớn nhất của dãy số vừa nhập

Readln
End.
begin
BÀI TẬP NHÓM
Học sinh thảo luận theo nhóm
(2 bàn 1 nhóm)
-Thời gian thảo luận trong 6 phút
Các nhóm thảo luận và viết kết quả
vào phiếu học tập sau đó đại diện
nhóm trình bày.
Nhóm 1: Cho dãy số như hình vẽ dưới đây, hãy thực hiện các bước của thuật toán để tìm ra số nhỏ nhất của dãy số
thảo luận nhóm
Nhóm 3: Hãy minh hoạ các bước để giải bài toán tìm ra số nhỏ nhất của dãy số bằng sơ đồ tư duy?
MIN=-3
Nhóm 2:
Nhóm 4: Hãy hoàn thành đoạn chương trình còn thiếu trên phiếu học tập để có tìm ra số nhỏ nhất của dãy số?
Thể hiện bằng pascal
Các bước thực hiện

Khai báo biến mảng và các biến cần dùng
Nhập số phần tử cho mảng
Nhập các giá trị cho từng phần tử của mảng
Xử lí tìm số nhỏ nhất của mảng
Xuất giá trị nhỏ nhất của mảng vừa nhập
var i,n,min: integer;
A: array[1..20] of integer;

Writeln( ‘nhap so phan tu’);
Readln(n);
For i:=1 to n do
Begin
Writeln( ‘Nhap gia tri a[‘ ,i, ‘]=‘);
Readln(a[i]);
End;

Writeln(‘gia tri min cua mang:’, min);
Min:=a[1];
For i:=2 to n do
If min>a[i] then min:=a[i];
Đoạn chương trình tìm giá trị nhỏ nhất của dãy số vừa nhập

Readln
End.
begin
Xem đoạn chương trình SGK/78
Xem minh hoạ
3. Tìm giá trị lớn nhất và nhỏ nhất của dãy số:
CỦNG CỐ
Bài tập 2:
Bài tập 1:
Bài tập 3:
HƯỚNG DẪN VỀ NHÀ
Học bài cũ
- Làm bài tập 15 SGK/79
- Làm bài tập 9.2/ 75 SBT
- Chuẩn bị nội dung cho tiết bài tập đến
nguon VI OLET