SlideShare a Scribd company logo
NHH
Bài giảng:
Người thực hiện: Nguyễn Quang Sơn
TIN HỌC 11
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
Bài toá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 độ cao hơn nhiệt độ
trung bình của tuần
Input:
t1,t2,t3,t4,t5,t6,t7.
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?
ĐẶT VẤN ĐỀ
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
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.
Hãy cho biết
các biến sử dụng
trong chương
trình?
Quan sát chương trình,
hãy cho biết nếu muốn
mở rộng bài toán tính
nhiệt độ trung bình của
N ngày(VD: 366 ngày)
thì thuật toán có thay
đổi không và sẽ gặp khó
khăn gì?
 Để khắc phục
khó khăn đó ta sử
dụng kiểu dữ liệu
mảng một chiều.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
2. Khai báo mảng một chiều trong Pascal
1. Định nghĩa mảng một chiều
BÀI 11. KIỂU MẢNG
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
1. Định nghĩa mảng một chiều
 Mảng 1 chiều là dãy hữu hạn các phần tử cùng kiểu.
mảng được đặt tên và mỗi phần tử của nó có 1 chỉ số.
15 18 16 20 19 15 18A
Trong ®ã :
- Tên mảng : A
- Số phần tử của mảng: 7
VÝ dô:
- Kiểu dữ liệu của mảng: Kiểu số nguyên
1 2 3 4 5 6 7
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
a. khai báo trực tiếp
Trong đó: <tên biến mảng> : là tên của mảng
csđ : là chỉ số bắt đầu của mảng
csc : là chỉ số kết thúc của mảng
<kiểu phần tử> : là kiểu dữ liệu của phần tử
Lưu ý: csđ và csc là số nguyên dương và bắt đầu từ 1. csđ <= csc
2. Khai báo mảng một chiều trong Pascal
Var <tên biến mảng> : array [csđ..csc] of <kiểu phần tử>;
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
a. khai báo trực tiếp
2. Khai báo mảng một chiều trong Pascal
Var
SoNguyen : array[1..8] of integer;
Ví dụ 1: khai báo mảng gồm có 8 phần tử kiểu số nguyên
SoNguyen
21 873 4 5 6
2312 1834 25 16 70
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
a. khai báo trực tiếp
2. Khai báo mảng một chiều trong Pascal
Var
Kitu : array[1..10] of char;
Ví dụ 2: khai báo mảng 10 phần tử kiểu kí tự.
Kitu
21 873 4 5 6
‘A’‘M’ ‘T’‘S’‘N’ ‘C’ ‘H’ ‘E’
9
‘E’
10
‘R’
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
b. khai báo dán tiếp
2. Khai báo mảng một chiều trong Pascal
Var <tên biến mảng> : <tên kiểu mảng>;
Type <tên kiểu mảng> = array[csđ..csc] of <kiểu phần tử>;
Ví dụ 3: type nhietdo = array[1..366] of integer;
var A: nhietdo;
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
b. khai báo dán tiếp
2. Khai báo mảng một chiều trong Pascal
Ví dụ 4:
type
Mang1c = array[1..20] of integer;
Kitu = array[1..10] of char;
Var
A, B, C : Mang1c;
X, Y : Kitu;
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
c. Truy xuất phần tử trong mảng
2. Khai báo mảng một chiều trong Pascal
Cách truy xuất phần tử: Tên mảng[vị trí];
Ví dụ: Var B : array[ 1..8] of integer;
Vị trí 21 73 4 5 6 8
B[3]=
-5 17B
B[7]=
2310 17-5 9 43 33 59
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Khai báo mảng A gồm 5 phần tử có kiểu số nguyên.
Var A : array[1..5] of integer;
Viết chương trình thực hiện công việc sau:
- Khai báo mảng một chiều có 5 phần tử kiểu số nguyên.
- Nhập giá trị cho các phần tử trong mảng.
Ví dụ:
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Readln(A[1]) =
A
21 3 4 5
23
Readln(A[2]) =
Readln(A[3]) =
Readln(A[4]) =
Readln(A[5]) =
-4
9
-7
31
For to 5 do
Readln(A[ ]);
i:=
i12
1234
35
5
4
9 -7 31-423
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Program vidu;
Var A : array[1..5] of integer;
i : integer;
Begin
For i:=1 to 5 do
Readln(A[i]);
End.
Ctrl+F9
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
-
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Program vidu;
Var A : array[1..5] of integer;
i : integer;
Begin
Writeln(‘Nhap gia tri cho cac phan tu cua mang:’);
For i:=1 to 5 do
Readln(A[i]);
End.
Ctrl+F9
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Nhap gia tri cho cac phan tu cua mang:
23
-4
9
-7
31
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Program vidu;
Var A : array[1..5] of integer;
i : integer;
Begin
Writeln(‘Nhap gia tri cho cac phan tu cua mang:’);
For i:=1 to 5 do
Begin
Writeln(‘Nhap A[‘,i,’]= ‘);
Readln(A[i]);
End;
End.
Ctrl+F9
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
d. Nhập dữ liệu vào mảng
2. Khai báo mảng một chiều trong Pascal
Nhap gia tri cho cac phan tu cua mang:
Nhap A[1]=
Nhap A[2]=
Nhap A[3]=
Nhap A[4]=
Nhap A[5]=
23
-4
9
-7
31
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
e. Xuất dữ liệu mảng
2. Khai báo mảng một chiều trong Pascal
- Xuất dữ liệu
For i:=1 to 5 do
Write(A[i]);
Viết chương trình nhập và xuất 5 số nguyên.
Ví dụ:
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
e. Xuất dữ liệu mảng
2. Khai báo mảng một chiều trong Pascal
Program vidu;
Var A : array[1..5] of integer;
i : integer;
Begin
Writeln(‘Nhap gia tri cho cac phan tu cua mang:’);
For i:=1 to 5 do
Begin
Writeln(‘Nhap A[’, i, ’]= ‘);
Readln(A[i]);
End;
Writeln(‘Gia tri cac phan tu trong mang la: ‘);
For i:=1 to 5 do
Write(A[i]:5);
End.
Ctrl+F9
Nhập mảng
Xuất mảng
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
e. Xuất dữ liệu mảng
2. Khai báo mảng một chiều trong Pascal
Nhap gia tri cho cac phan tu cua mang:
Nhap A[1]=
Nhap A[2]=
Nhap A[3]=
Nhap A[4]=
Nhap A[5]=
Gia tri cac phan tu trong mang la:
23 -4 9 -7 31
23
-4
9
-7
31
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
 Mỗi phần tử trong mảng đều có một chỉ
số xác định và duy nhất. Ta nên dùng vòng
lặp For .. To .. Do để duyệt từng phần tử
của mảng.
Lưu ý:
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
Kiểm tra bài củ
Bài toán: Cho mảng một chiều A gồm N (N<=300)
phần tử số nguyên.
a. Viết khai báo một mảng một chiều A.
b. Viết chương trình nhập vào các phần tử của
mảng một chiều A.
c.Viết chương trình in các phần tử của mảng một
chiều A ra màn hình.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
 Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên
gồm N phần tử (N  250, A[i]  500). Nếu dãy có nhiều
phần tử lớn nhất thì đưa ra chỉ số lớn nhất của phần tử
đầu tiên.
Xác định input
và output của bài
toán?
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Input: Nhập vào số nguyên dương N (N  250) và dãy
N số nguyên dương A1, A2, …, An.
Output: Chỉ số và và giá trị của phần tử lớn nhất trong
dãy số đã cho.
Nêu ý tưởng
của thuật toán
tìm Max?
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Tìm Max dãy số: 3 2 7 9 6
 Gán Max = A[1].
 Cho biến i chạy từ 2 đến N.
 Nếu A[i] > Max thì Max  A[i] sau đó
lưu lại vị trí i.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Số lín
nhÊt
Số nµy
míi lín
nhÊt å! Số nµy
lín h¬n
Tim ra
số lớn
nhÊt
råi!
MAX
Thuật toán tìm max của dãy số nguyên
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Thuật toán
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;
i  i+1 rồi quay lại bước 3;
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Viết khai báo
biến mảng
của bài toán?
type dayso = array [1..250] of integer;
var A: dayso;
Số lượng phần tử: 250
Tên kiểu mảng: dayso
Tên biến mảng: A
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Program Tim_Max;
Uses crt;
Type dayso = Array[1..250] of integer;
Var
A : dayso ;
i,n,max,csmax : integer;
BEGIN
Clrscr;
write(‘ Nhap vao so phan tu cua day so : ’) ;
readln(n) ;
For i := 1 to n do
Begin
write(‘ Phan tu thu ‘,i,’ = ‘) ;
readln(A[i]) ;
End;
Max := A[1]; csmax :=1 ;
For i := 2 to n do
If (A[i]>max) Then
begin
max := a[i];
csmax=i;
end;
Writeln(‘ Gia tri cua phan tu Max : ’,Max) ;
Writeln(‘ Chi so cua phan tu Max : ’, csmax) ;
Readln ;
END.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Nhap vao so phan tu cua day so : 5
Phan tu thu 1 = 3
2
7
9
6
Gia tri cua phan tu Max : 9
Chi so cua phan tu Max : 4
Phan tu thu 2 =
Phan tu thu 3 =
Phan tu thu 4 =
Phan tu thu 5 =
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
 Ví dụ 2: Sắp xếp dãy số nguyên dương gồm N phần tử
(N< 250, A[i] < 500) thành dãy số không giảm.
Xác định input
và output của
bài toán
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Input: Nhập vào số ngyuên dương N, và dãy A1,A2, …, An.
Output: Dãy số A được sắp xếp thành dãy số không giảm.
Để giải bài toán
trên ở lớp 10 ta
đã sử dụng
thuật toán gì?
Sử dụng thuật toán tráo đổi
kiểu nổi bọt, số lớn chìm
xuống và số bé nổi lên trên.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Nêu ý tưởng
của thuật
toán?
+ Với mỗi cập số hạng đứng liền
trong dãy, nếu số trước lớn hơn số sau
ta đổi chổ chúng cho nhau.
+ Việc đổi chổ đó được lập lại cho
đến khi không còn sự đổi chổ nào xảy
ra nữa, để đưa số lớn nhất về vị trí
cuối cùng.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
36
3
2
9
7
6
Cho d·y sè sau: 3 2 9
7 6
Gi¶ sö:
 Mçi phÇn tö ®ưîc xem như mét bät n-
ưíc;
Lưît 1:
•i ch¹y tõ ®Çu d·y ®Õn
vÞ trÝ [cuèi d·y -1]
•Khi a[i]>a[i+1] tøc lµ
bät níc bªn trªn nÆng
h¬n bät níc bªn díi =>
bät nưíc trªn ch×m
xuèng vµ bät nưíc bªn
díi næi lªn (tr¸o ®æi vÞ
trÝ).•Sau lưît thø nhÊt, bät
níc cã träng lưîng lín
nhÊt sÏ ch×m xuèng ®¸y.
 Träng lưîng cña bät nưíc thø i lµ gi¸
trÞ cña A[i]. Lưît 2:
•i ch¹y tõ ®Çu d·y ®Õn
vÞ trÝ [cuèi d·y - 2]
(bá qua phÇn tö cuèi).
•Sau lît thø hai bät n-
íc cã träng lîng lín
thø hai n»m s¸t trªn
bät níc lín nhÊt.
•Qu¸ tr×nh duyÖt, tr¸o
®æi ®îc lÆp ®i lÆp l¹i
cho ®Õn khi chØ cßn
duyÖt hai phÇn tö vµ
thu ®îc d·y kh«ng gi¶m.
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
1
Trong pascal
nhận xét 1
được thực hiện
bằng lệnh gì?
For j:= N dowto 2 do
Tại mỗi lượt duyệt:
Cho i chạy từ 1 đến j – 1,
Nếu A[i] > A[i+1] thì
tráo đổi vị trí A[i] và
A[i+1] thông qua biến trung
gian là t
For i:= 1 to j – 1
if A[i] > A[i+1] then
begin
t:= A[i];
A[i]:= A[i+1];
A[i+1]:= t;
end ;
Số phần tử ở lượt duyệt j sẽ giảm từ phần tử N đến phần tử thứ 2
2
 Nhận Xét
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Viết khai báo
biến mảng
của bài toán?
Số lượng phần tử: 250
Tên kiểu mảng: sapxep
Tên biến mảng: A
type dayso = array [1..250] of integer;
var A: dayso;
NHH
Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015
3. Một số ví dụ
Khai b¸o m¶ng 1
chiÒu
NhËp m¶ng 1 chiÒu
Xö lÝ m¶ng b»ng
thuËt to¸n næi
bät
In kÕt qu¶
PROGRAM Sapxep;
Type dayso = Array[1..250] of integer;
Var
i, j , n , t: integer;
A : dayso;
BEGIN
write(‘ Nhap vao so phan tu cua day so : ’);
readln(n);
for i := 1 to n do
begin
write(‘ Phan tu thu ‘,i,’ = ‘);
readln(A[i]);
end;
for j := n downto 2 do
for i:= 1 to j-1 do
If A[i]>A[i+1] Then
begin
t:= A[i];
A[i]:=A[i+1];
A[i+1]:= t;
end;
writeln(‘ Day so duoc sap xep ’);
for i:=1 to n do write(A[i]:5);readln;
END.

More Related Content

What's hot

He thong bai trac nghiem chuong 3
He thong bai trac nghiem chuong 3He thong bai trac nghiem chuong 3
He thong bai trac nghiem chuong 3
lethilien1993
 
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
Sân Ngoài Còn Lá
 
Tin học lớp 8
Tin học lớp 8Tin học lớp 8
Tin học lớp 8
Học Tập Long An
 
Bai tapktlt phan1
Bai tapktlt phan1Bai tapktlt phan1
Bai tapktlt phan1
Minh Ngoc Tran
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4
Hồ Lợi
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Lap trinh pascal
Lap trinh pascalLap trinh pascal
Lap trinh pascal
Loan Nguyen
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
Thai Hoc Vu
 
Bai 6, Phep toan bieu thuc cau lenh gan
Bai 6, Phep toan bieu thuc cau lenh ganBai 6, Phep toan bieu thuc cau lenh gan
Bai 6, Phep toan bieu thuc cau lenh ganindochinasp
 
TinHoc_tuyentapde_nk
TinHoc_tuyentapde_nkTinHoc_tuyentapde_nk
TinHoc_tuyentapde_nk
Quyen Hong
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conNhungoc Phamhai
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]MasterCode.vn
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen javaTuấn Bùi
 
Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)
Võ Tâm Long
 
Bài 17 Chương trình con và phân loại
Bài 17 Chương trình con và phân loạiBài 17 Chương trình con và phân loại
Bài 17 Chương trình con và phân loạiHòa Hoàng
 
Chương Trình Con
Chương Trình Con Chương Trình Con
Chương Trình Con
Nguyễn Thiên Ý
 
Bài 17 tin học 11
Bài 17 tin học 11Bài 17 tin học 11
Bài 17 tin học 11HaBaoChau
 

What's hot (19)

He thong bai trac nghiem chuong 3
He thong bai trac nghiem chuong 3He thong bai trac nghiem chuong 3
He thong bai trac nghiem chuong 3
 
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
Bài 18. Ví dụ về cách viết và sử dụng chương trình con.
 
Tin học lớp 8
Tin học lớp 8Tin học lớp 8
Tin học lớp 8
 
Bai tapktlt phan1
Bai tapktlt phan1Bai tapktlt phan1
Bai tapktlt phan1
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Lap trinh pascal
Lap trinh pascalLap trinh pascal
Lap trinh pascal
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
 
Bai 6, Phep toan bieu thuc cau lenh gan
Bai 6, Phep toan bieu thuc cau lenh ganBai 6, Phep toan bieu thuc cau lenh gan
Bai 6, Phep toan bieu thuc cau lenh gan
 
Tin11
Tin11Tin11
Tin11
 
TinHoc_tuyentapde_nk
TinHoc_tuyentapde_nkTinHoc_tuyentapde_nk
TinHoc_tuyentapde_nk
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình con
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen java
 
Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)Bài 11 Kiểu mảng(tt)
Bài 11 Kiểu mảng(tt)
 
Bài 17 Chương trình con và phân loại
Bài 17 Chương trình con và phân loạiBài 17 Chương trình con và phân loại
Bài 17 Chương trình con và phân loại
 
Chương Trình Con
Chương Trình Con Chương Trình Con
Chương Trình Con
 
Bài 17 tin học 11
Bài 17 tin học 11Bài 17 tin học 11
Bài 17 tin học 11
 
Bai11
Bai11Bai11
Bai11
 

Similar to Bai.11.tot

Chuong 4 tin 11
Chuong 4 tin 11Chuong 4 tin 11
Chuong 4 tin 11Sunkute
 
Bai tap pascal tong hop
Bai tap pascal tong hopBai tap pascal tong hop
Bai tap pascal tong hop
Quyen Hong
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
Long Kingnam
 
08 long gagd_t3+t5
08 long gagd_t3+t508 long gagd_t3+t5
08 long gagd_t3+t5
Võ Tâm Long
 
De thi nk lan 1 lop 10 tin nam hoc 2018 2019
De thi nk lan 1 lop 10 tin nam hoc 2018 2019De thi nk lan 1 lop 10 tin nam hoc 2018 2019
De thi nk lan 1 lop 10 tin nam hoc 2018 2019
Nguyen Duc
 
Chuong trinh con
Chuong trinh conChuong trinh con
Chuong trinh con
Tae Yang Won
 
Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Kieu Anh Nguyen
 
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngocNgoc Vu Thi Quynh
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf
HuyPhc9
 
Huong danthuchanhmang
Huong danthuchanhmangHuong danthuchanhmang
Huong danthuchanhmang
Ngoc Tin Huynh
 
Bai thuchanh.3
Bai thuchanh.3Bai thuchanh.3
Bai thuchanh.3
sonnqsp
 
CSLT_Bai 5A_2018.pptx
CSLT_Bai 5A_2018.pptxCSLT_Bai 5A_2018.pptx
CSLT_Bai 5A_2018.pptx
ChuK7
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming languageLinh Lê
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdf
HngAnhV13
 
Session 4
Session 4Session 4
Session 4
pnanhvn
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoanHoàng My
 
Kiểu Mảng 1 chiều
Kiểu Mảng 1 chiềuKiểu Mảng 1 chiều
Kiểu Mảng 1 chiều
HoaCat1
 
Java exercises part 2
Java exercises part 2Java exercises part 2
Java exercises part 2
NguynMinh294
 

Similar to Bai.11.tot (20)

Chuong 4 tin 11
Chuong 4 tin 11Chuong 4 tin 11
Chuong 4 tin 11
 
Bai tap pascal tong hop
Bai tap pascal tong hopBai tap pascal tong hop
Bai tap pascal tong hop
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
08 long gagd_t3+t5
08 long gagd_t3+t508 long gagd_t3+t5
08 long gagd_t3+t5
 
Phu luca ham
Phu luca hamPhu luca ham
Phu luca ham
 
De thi nk lan 1 lop 10 tin nam hoc 2018 2019
De thi nk lan 1 lop 10 tin nam hoc 2018 2019De thi nk lan 1 lop 10 tin nam hoc 2018 2019
De thi nk lan 1 lop 10 tin nam hoc 2018 2019
 
Chuong trinh con
Chuong trinh conChuong trinh con
Chuong trinh con
 
Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)
 
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf
 
Huong danthuchanhmang
Huong danthuchanhmangHuong danthuchanhmang
Huong danthuchanhmang
 
Bai thuchanh.3
Bai thuchanh.3Bai thuchanh.3
Bai thuchanh.3
 
CSLT_Bai 5A_2018.pptx
CSLT_Bai 5A_2018.pptxCSLT_Bai 5A_2018.pptx
CSLT_Bai 5A_2018.pptx
 
344444
344444344444
344444
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming language
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdf
 
Session 4
Session 4Session 4
Session 4
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoan
 
Kiểu Mảng 1 chiều
Kiểu Mảng 1 chiềuKiểu Mảng 1 chiều
Kiểu Mảng 1 chiều
 
Java exercises part 2
Java exercises part 2Java exercises part 2
Java exercises part 2
 

More from sonnqsp

Bai7
Bai7Bai7
Bai7
sonnqsp
 
Nhom07 ke hoachbaiday
Nhom07 ke hoachbaidayNhom07 ke hoachbaiday
Nhom07 ke hoachbaidaysonnqsp
 
Nhom07 bangdanhgiatudinhhuong
Nhom07 bangdanhgiatudinhhuongNhom07 bangdanhgiatudinhhuong
Nhom07 bangdanhgiatudinhhuongsonnqsp
 
Nhom07 anphamgioithieuytuong
Nhom07 anphamgioithieuytuongNhom07 anphamgioithieuytuong
Nhom07 anphamgioithieuytuongsonnqsp
 
Nhom07 phieu danh_gia_bai_thuyet_trinh
Nhom07 phieu danh_gia_bai_thuyet_trinhNhom07 phieu danh_gia_bai_thuyet_trinh
Nhom07 phieu danh_gia_bai_thuyet_trinhsonnqsp
 
Nhom07 bangkiemmuc nhatky
Nhom07 bangkiemmuc nhatkyNhom07 bangkiemmuc nhatky
Nhom07 bangkiemmuc nhatkysonnqsp
 
Nhom07 ban kiem_muc_bai_thuyet_trinh
Nhom07 ban kiem_muc_bai_thuyet_trinhNhom07 ban kiem_muc_bai_thuyet_trinh
Nhom07 ban kiem_muc_bai_thuyet_trinhsonnqsp
 
Nhom07 bang danhgiasanphamhs
Nhom07 bang danhgiasanphamhsNhom07 bang danhgiasanphamhs
Nhom07 bang danhgiasanphamhssonnqsp
 
Nhom07 kwl
Nhom07 kwlNhom07 kwl
Nhom07 kwlsonnqsp
 
Nhom07 bai baocaoduan
Nhom07 bai baocaoduanNhom07 bai baocaoduan
Nhom07 bai baocaoduansonnqsp
 
Nhom07 danh gianhucauhs
Nhom07 danh gianhucauhsNhom07 danh gianhucauhs
Nhom07 danh gianhucauhssonnqsp
 
Nhom07 an pham
Nhom07 an phamNhom07 an pham
Nhom07 an phamsonnqsp
 

More from sonnqsp (12)

Bai7
Bai7Bai7
Bai7
 
Nhom07 ke hoachbaiday
Nhom07 ke hoachbaidayNhom07 ke hoachbaiday
Nhom07 ke hoachbaiday
 
Nhom07 bangdanhgiatudinhhuong
Nhom07 bangdanhgiatudinhhuongNhom07 bangdanhgiatudinhhuong
Nhom07 bangdanhgiatudinhhuong
 
Nhom07 anphamgioithieuytuong
Nhom07 anphamgioithieuytuongNhom07 anphamgioithieuytuong
Nhom07 anphamgioithieuytuong
 
Nhom07 phieu danh_gia_bai_thuyet_trinh
Nhom07 phieu danh_gia_bai_thuyet_trinhNhom07 phieu danh_gia_bai_thuyet_trinh
Nhom07 phieu danh_gia_bai_thuyet_trinh
 
Nhom07 bangkiemmuc nhatky
Nhom07 bangkiemmuc nhatkyNhom07 bangkiemmuc nhatky
Nhom07 bangkiemmuc nhatky
 
Nhom07 ban kiem_muc_bai_thuyet_trinh
Nhom07 ban kiem_muc_bai_thuyet_trinhNhom07 ban kiem_muc_bai_thuyet_trinh
Nhom07 ban kiem_muc_bai_thuyet_trinh
 
Nhom07 bang danhgiasanphamhs
Nhom07 bang danhgiasanphamhsNhom07 bang danhgiasanphamhs
Nhom07 bang danhgiasanphamhs
 
Nhom07 kwl
Nhom07 kwlNhom07 kwl
Nhom07 kwl
 
Nhom07 bai baocaoduan
Nhom07 bai baocaoduanNhom07 bai baocaoduan
Nhom07 bai baocaoduan
 
Nhom07 danh gianhucauhs
Nhom07 danh gianhucauhsNhom07 danh gianhucauhs
Nhom07 danh gianhucauhs
 
Nhom07 an pham
Nhom07 an phamNhom07 an pham
Nhom07 an pham
 

Bai.11.tot

  • 1. NHH Bài giảng: Người thực hiện: Nguyễn Quang Sơn TIN HỌC 11
  • 2. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 Bài toá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 độ cao hơn nhiệt độ trung bình của tuần Input: t1,t2,t3,t4,t5,t6,t7. 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? ĐẶT VẤN ĐỀ
  • 3. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 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. Hãy cho biết các biến sử dụng trong chương trình? Quan sát chương trình, hãy cho biết nếu muốn mở rộng bài toán tính nhiệt độ trung bình của N ngày(VD: 366 ngày) thì thuật toán có thay đổi không và sẽ gặp khó khăn gì?  Để khắc phục khó khăn đó ta sử dụng kiểu dữ liệu mảng một chiều.
  • 4. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ 2. Khai báo mảng một chiều trong Pascal 1. Định nghĩa mảng một chiều BÀI 11. KIỂU MẢNG
  • 5. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 1. Định nghĩa mảng một chiều  Mảng 1 chiều là dãy hữu hạn các phần tử cùng kiểu. mảng được đặt tên và mỗi phần tử của nó có 1 chỉ số. 15 18 16 20 19 15 18A Trong ®ã : - Tên mảng : A - Số phần tử của mảng: 7 VÝ dô: - Kiểu dữ liệu của mảng: Kiểu số nguyên 1 2 3 4 5 6 7
  • 6. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 a. khai báo trực tiếp Trong đó: <tên biến mảng> : là tên của mảng csđ : là chỉ số bắt đầu của mảng csc : là chỉ số kết thúc của mảng <kiểu phần tử> : là kiểu dữ liệu của phần tử Lưu ý: csđ và csc là số nguyên dương và bắt đầu từ 1. csđ <= csc 2. Khai báo mảng một chiều trong Pascal Var <tên biến mảng> : array [csđ..csc] of <kiểu phần tử>;
  • 7. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 a. khai báo trực tiếp 2. Khai báo mảng một chiều trong Pascal Var SoNguyen : array[1..8] of integer; Ví dụ 1: khai báo mảng gồm có 8 phần tử kiểu số nguyên SoNguyen 21 873 4 5 6 2312 1834 25 16 70
  • 8. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 a. khai báo trực tiếp 2. Khai báo mảng một chiều trong Pascal Var Kitu : array[1..10] of char; Ví dụ 2: khai báo mảng 10 phần tử kiểu kí tự. Kitu 21 873 4 5 6 ‘A’‘M’ ‘T’‘S’‘N’ ‘C’ ‘H’ ‘E’ 9 ‘E’ 10 ‘R’
  • 9. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 b. khai báo dán tiếp 2. Khai báo mảng một chiều trong Pascal Var <tên biến mảng> : <tên kiểu mảng>; Type <tên kiểu mảng> = array[csđ..csc] of <kiểu phần tử>; Ví dụ 3: type nhietdo = array[1..366] of integer; var A: nhietdo;
  • 10. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 b. khai báo dán tiếp 2. Khai báo mảng một chiều trong Pascal Ví dụ 4: type Mang1c = array[1..20] of integer; Kitu = array[1..10] of char; Var A, B, C : Mang1c; X, Y : Kitu;
  • 11. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 c. Truy xuất phần tử trong mảng 2. Khai báo mảng một chiều trong Pascal Cách truy xuất phần tử: Tên mảng[vị trí]; Ví dụ: Var B : array[ 1..8] of integer; Vị trí 21 73 4 5 6 8 B[3]= -5 17B B[7]= 2310 17-5 9 43 33 59
  • 12. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Khai báo mảng A gồm 5 phần tử có kiểu số nguyên. Var A : array[1..5] of integer; Viết chương trình thực hiện công việc sau: - Khai báo mảng một chiều có 5 phần tử kiểu số nguyên. - Nhập giá trị cho các phần tử trong mảng. Ví dụ:
  • 13. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Readln(A[1]) = A 21 3 4 5 23 Readln(A[2]) = Readln(A[3]) = Readln(A[4]) = Readln(A[5]) = -4 9 -7 31 For to 5 do Readln(A[ ]); i:= i12 1234 35 5 4 9 -7 31-423
  • 14. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Program vidu; Var A : array[1..5] of integer; i : integer; Begin For i:=1 to 5 do Readln(A[i]); End. Ctrl+F9
  • 15. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal -
  • 16. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Program vidu; Var A : array[1..5] of integer; i : integer; Begin Writeln(‘Nhap gia tri cho cac phan tu cua mang:’); For i:=1 to 5 do Readln(A[i]); End. Ctrl+F9
  • 17. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Nhap gia tri cho cac phan tu cua mang: 23 -4 9 -7 31
  • 18. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Program vidu; Var A : array[1..5] of integer; i : integer; Begin Writeln(‘Nhap gia tri cho cac phan tu cua mang:’); For i:=1 to 5 do Begin Writeln(‘Nhap A[‘,i,’]= ‘); Readln(A[i]); End; End. Ctrl+F9
  • 19. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 d. Nhập dữ liệu vào mảng 2. Khai báo mảng một chiều trong Pascal Nhap gia tri cho cac phan tu cua mang: Nhap A[1]= Nhap A[2]= Nhap A[3]= Nhap A[4]= Nhap A[5]= 23 -4 9 -7 31
  • 20. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 e. Xuất dữ liệu mảng 2. Khai báo mảng một chiều trong Pascal - Xuất dữ liệu For i:=1 to 5 do Write(A[i]); Viết chương trình nhập và xuất 5 số nguyên. Ví dụ:
  • 21. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 e. Xuất dữ liệu mảng 2. Khai báo mảng một chiều trong Pascal Program vidu; Var A : array[1..5] of integer; i : integer; Begin Writeln(‘Nhap gia tri cho cac phan tu cua mang:’); For i:=1 to 5 do Begin Writeln(‘Nhap A[’, i, ’]= ‘); Readln(A[i]); End; Writeln(‘Gia tri cac phan tu trong mang la: ‘); For i:=1 to 5 do Write(A[i]:5); End. Ctrl+F9 Nhập mảng Xuất mảng
  • 22. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 e. Xuất dữ liệu mảng 2. Khai báo mảng một chiều trong Pascal Nhap gia tri cho cac phan tu cua mang: Nhap A[1]= Nhap A[2]= Nhap A[3]= Nhap A[4]= Nhap A[5]= Gia tri cac phan tu trong mang la: 23 -4 9 -7 31 23 -4 9 -7 31
  • 23. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015  Mỗi phần tử trong mảng đều có một chỉ số xác định và duy nhất. Ta nên dùng vòng lặp For .. To .. Do để duyệt từng phần tử của mảng. Lưu ý:
  • 24. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 Kiểm tra bài củ Bài toán: Cho mảng một chiều A gồm N (N<=300) phần tử số nguyên. a. Viết khai báo một mảng một chiều A. b. Viết chương trình nhập vào các phần tử của mảng một chiều A. c.Viết chương trình in các phần tử của mảng một chiều A ra màn hình.
  • 25. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ  Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên gồm N phần tử (N  250, A[i]  500). Nếu dãy có nhiều phần tử lớn nhất thì đưa ra chỉ số lớn nhất của phần tử đầu tiên. Xác định input và output của bài toán?
  • 26. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Input: Nhập vào số nguyên dương N (N  250) và dãy N số nguyên dương A1, A2, …, An. Output: Chỉ số và và giá trị của phần tử lớn nhất trong dãy số đã cho. Nêu ý tưởng của thuật toán tìm Max?
  • 27. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Tìm Max dãy số: 3 2 7 9 6  Gán Max = A[1].  Cho biến i chạy từ 2 đến N.  Nếu A[i] > Max thì Max  A[i] sau đó lưu lại vị trí i.
  • 28. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Số lín nhÊt Số nµy míi lín nhÊt å! Số nµy lín h¬n Tim ra số lớn nhÊt råi! MAX Thuật toán tìm max của dãy số nguyên
  • 29. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Thuật toán 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; i  i+1 rồi quay lại bước 3;
  • 30. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Viết khai báo biến mảng của bài toán? type dayso = array [1..250] of integer; var A: dayso; Số lượng phần tử: 250 Tên kiểu mảng: dayso Tên biến mảng: A
  • 31. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Program Tim_Max; Uses crt; Type dayso = Array[1..250] of integer; Var A : dayso ; i,n,max,csmax : integer; BEGIN Clrscr; write(‘ Nhap vao so phan tu cua day so : ’) ; readln(n) ; For i := 1 to n do Begin write(‘ Phan tu thu ‘,i,’ = ‘) ; readln(A[i]) ; End; Max := A[1]; csmax :=1 ; For i := 2 to n do If (A[i]>max) Then begin max := a[i]; csmax=i; end; Writeln(‘ Gia tri cua phan tu Max : ’,Max) ; Writeln(‘ Chi so cua phan tu Max : ’, csmax) ; Readln ; END.
  • 32. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Nhap vao so phan tu cua day so : 5 Phan tu thu 1 = 3 2 7 9 6 Gia tri cua phan tu Max : 9 Chi so cua phan tu Max : 4 Phan tu thu 2 = Phan tu thu 3 = Phan tu thu 4 = Phan tu thu 5 =
  • 33. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ  Ví dụ 2: Sắp xếp dãy số nguyên dương gồm N phần tử (N< 250, A[i] < 500) thành dãy số không giảm. Xác định input và output của bài toán
  • 34. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Input: Nhập vào số ngyuên dương N, và dãy A1,A2, …, An. Output: Dãy số A được sắp xếp thành dãy số không giảm. Để giải bài toán trên ở lớp 10 ta đã sử dụng thuật toán gì? Sử dụng thuật toán tráo đổi kiểu nổi bọt, số lớn chìm xuống và số bé nổi lên trên.
  • 35. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Nêu ý tưởng của thuật toán? + Với mỗi cập số hạng đứng liền trong dãy, nếu số trước lớn hơn số sau ta đổi chổ chúng cho nhau. + Việc đổi chổ đó được lập lại cho đến khi không còn sự đổi chổ nào xảy ra nữa, để đưa số lớn nhất về vị trí cuối cùng.
  • 36. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ 36 3 2 9 7 6 Cho d·y sè sau: 3 2 9 7 6 Gi¶ sö:  Mçi phÇn tö ®ưîc xem như mét bät n- ưíc; Lưît 1: •i ch¹y tõ ®Çu d·y ®Õn vÞ trÝ [cuèi d·y -1] •Khi a[i]>a[i+1] tøc lµ bät níc bªn trªn nÆng h¬n bät níc bªn díi => bät nưíc trªn ch×m xuèng vµ bät nưíc bªn díi næi lªn (tr¸o ®æi vÞ trÝ).•Sau lưît thø nhÊt, bät níc cã träng lưîng lín nhÊt sÏ ch×m xuèng ®¸y.  Träng lưîng cña bät nưíc thø i lµ gi¸ trÞ cña A[i]. Lưît 2: •i ch¹y tõ ®Çu d·y ®Õn vÞ trÝ [cuèi d·y - 2] (bá qua phÇn tö cuèi). •Sau lît thø hai bät n- íc cã träng lîng lín thø hai n»m s¸t trªn bät níc lín nhÊt. •Qu¸ tr×nh duyÖt, tr¸o ®æi ®îc lÆp ®i lÆp l¹i cho ®Õn khi chØ cßn duyÖt hai phÇn tö vµ thu ®îc d·y kh«ng gi¶m.
  • 37. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ 1 Trong pascal nhận xét 1 được thực hiện bằng lệnh gì? For j:= N dowto 2 do Tại mỗi lượt duyệt: Cho i chạy từ 1 đến j – 1, Nếu A[i] > A[i+1] thì tráo đổi vị trí A[i] và A[i+1] thông qua biến trung gian là t For i:= 1 to j – 1 if A[i] > A[i+1] then begin t:= A[i]; A[i]:= A[i+1]; A[i+1]:= t; end ; Số phần tử ở lượt duyệt j sẽ giảm từ phần tử N đến phần tử thứ 2 2  Nhận Xét
  • 38. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Viết khai báo biến mảng của bài toán? Số lượng phần tử: 250 Tên kiểu mảng: sapxep Tên biến mảng: A type dayso = array [1..250] of integer; var A: dayso;
  • 39. NHH Trường THPT Nguyễn Hùng Hiệp Edited by Quang-Son, Nguyen - 2015 3. Một số ví dụ Khai b¸o m¶ng 1 chiÒu NhËp m¶ng 1 chiÒu Xö lÝ m¶ng b»ng thuËt to¸n næi bät In kÕt qu¶ PROGRAM Sapxep; Type dayso = Array[1..250] of integer; Var i, j , n , t: integer; A : dayso; BEGIN write(‘ Nhap vao so phan tu cua day so : ’); readln(n); for i := 1 to n do begin write(‘ Phan tu thu ‘,i,’ = ‘); readln(A[i]); end; for j := n downto 2 do for i:= 1 to j-1 do If A[i]>A[i+1] Then begin t:= A[i]; A[i]:=A[i+1]; A[i+1]:= t; end; writeln(‘ Day so duoc sap xep ’); for i:=1 to n do write(A[i]:5);readln; END.

Editor's Notes

  1. Day so : 32976
  2. Day so : 32976
  3. Day so : 32976