SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Tiết 21

Kiểu mảng
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
- Hiểu khái niệm mảng một chiều và hai chiều .
- Hiểu cách khai báo và truy cập đến các phần tử của mảng .
2. Kỹ năng:
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng một chiều .
- Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của
mảng .
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Trước khi vào bài, giáo viên đưa ra một số
vấn đề cần giải quyết như sau :
Với những kiểu dữ liệu như đã biết, làm thế
nào để :
- Lưu trữ và xử lý một dãy số ?
- Lưu trữ và xử lý Họ và tên của một Có thể sử dụng ví dụ trong SGK để học sinh
dễ theo dõi, gõ trước chương trình để có thể
người ?
- Lưu trữ và xử lý bảng kết quả thi tốt sử dụng cho các phần tiếp theo .
nghiệp ?
HS : Đưa ra các phương án để trả lời cho 3
câu hỏi trên .
GV : Các ngôn ngữ lập trình thường cung
cấp một số kiểu dữ liệu được xây dựng từ
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 1
những kiểu dữ liệu chuẩn gọi là kiểu dữ
liệu có cấu trúc .
Chương này chúng ta sẽ tìm hiểu một Trong lập trình thường có 2 loại mảng :
số kiểu dữ liệu trong ngôn ngữ Pascal để trả
- Mảng một chiều .
lời 3 câu hỏi trên .
- Mảng hai chiều .
GV : Đưa ra ví dụ, cần lập lập trình xử lý 1. Kiểu mảng một chiều
một dãy số nguyên, hãy tìm cách lưu trữ
một dãy số nguyên trong khi lập trình ?
- Mảng một chiều là một dãy hữu hạn các
phần tử có cùng kiểu, mảng được đặt tên và
Bằng cách nào để lưu trữ được thông tin mỗi phần tử mang một chỉ số. Để mô tả
dưới dạng bảng khi lập trình ?
mảng một chiều ta cần xác định kiểu của
các phần tử và cách đánh chỉ số các phần tử
HS : Đưa ra ý kiến .
.
GV : Đánh giá ý kiến của học sinh, sau đó Với mảng một chiều ta quan tâm đến :
đưa ra mục đích của việc sử dụng cấu trúc
- Tên mảng một chiều .
mảng trong chương trình .
- Số lượng phần tử trong mảng .
- Kiểu dữ liệu của phần tử .
GV : Đưa ra khái niệm mảng một chiều và
- Cách khai báo biến mảng một chiều .
một số yếu tố liên quan trong lập trình nói
- Cách truy cập vào từng phần tử của
chung .
mảng .
Xét ví dụ : Nhập vào nhiệt độ trung bình
mỗi ngày trong tuần . Tính và đưa ra màn
hình nhiệt độ trung bình của cả tuần và đếm
số ngày có nhiệt độ lớn hơn nhiệt độ trung
GV : Đi sâu phân tích hai chương trình để bình này .
cho học sinh nhận thấy sự tiện lợi khi sử
dụng mảng .
Quan sát hai chương trình viết bằng ngôn
ngữ Pascal cùng để giải bài toán trên .
- Chương trình 1 : Không sử dụng kiểu
mảng .
- Chương trình 2 : Sử dụng kiểu mảng
HS : Trong khi giáo viên phân tích hai
một chiều .
chương trình, học sinh sẽ đưa ra ý kiến
nhận xét về 2 chương trình.
HS : Trong khi giáo viên phân tích hai a> Khai báo mảng một chiều
Trong ngôn ngữ Pascal, mảng một chiều
chương trình, học sinh sẽ đưa ra ý kiến
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 2
nhận xét về 2 chương trình.

được khai báo bằng hai cách như sau :
Cách 1 :
Var <Tên mảng> : Array[kiểu chỉ số] of
<kiểu phần tử> ;

Cách 2 :
Type <Tên kiểu mảng> = Array [<kiểu chỉ
GV : Đưa ra cách khai báo mảng một chiều số>] of <kiểu phần tử> ;
trong ngôn ngữ Pascal, giải thích ý nghĩa Var <Tên mảng> : <tên kiểu mảng> ;
của các từ khóa mới .
Trong đó :
GV : Khai báo bằng cách nào tiện lợi hơn ? - Type là từ khóa dùng để khai báo biến,
Array là từ khóa để khai báo mảng .
- Kiểu chỉ số thường là đoạn số nguyên
HS : Thường thì học sinh trả lời cách 1 tiện
liên tục có n1..n2, với n1 là chỉ số đầu
lợi hơn ?
và n2 là chỉ số cuối.
- Kiểu thành phần là kiểu dữ liệu của
phần tử mảng .
GV : Tùy trường hợp cụ thể mà ta dùng - Để truy cập vào phần tử mảng ta viết :
cách 1 hay cách 2 nhưng thông thường ta - <Tên biến mảng>[Chỉ số]
sử dụng cách 1 .
Ví dụ :
A[20] Truy cập phần tử mang chỉ số 20
trong mảng A .
GV : Sử dụng một sồ hình ảnh trực quan Ví dụ :
minh họa cho học sinh cấu trúc mảng và Khai báo biến mảng thông qua kiểu
chỉ số của phần tử
mảng :
Type
ArrayInteger=Array[1..100] of Integer;
Chỉ
1 2 3 4 5 6 7 8
ArrayReal=Array[1.50] of Real;
số
Var A : Array[1..50];
Giá 5
81 62 18 26 41 24 53
B : Array[1..50] of Real;
trị 3
Đưa ra một số khai báo mảng trong Pascal . Khai báo mảng trực tiếp :
Var A : Array[1..100] of Integer ;
B : Arrat[1..50] of Real ;
IV. Củng cố:
V. Dặn dò:
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 3
Tiết 22

Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ: Cho biết cách khai báo mảng một chiều?
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
b> Một số ví dụ :
Ví dụ 1 : Tìm phần tử lớn nhất của một dãy
GV : Đưa ra ví dụ .
số nguyên .
HS : Xây dựng thuật toán để giải bài toán - Input : Số nguyên dương N và dãy số
A1, A2, ….., AN
(thuật toán đã học ở lớp 10) .
- Output : Chỉ số và giá trị của số lớn
nhất trong dãy
GV soạn sẵn chương trình và cho học sinh - Ý tưởng :
quan sát chương trình .
+ Đặt số A1 là số lớn nhất (max)
+ Cho i lặp từ 2 đến N, nếu A[i]> thì đổi
max = A[i] vả lưu lại vị trí i .
Nếu có nhiều thời gian, giáo viên sẽ tiến Chương trình như sau :
hành soạn chương trình từ đầu để học sinh
có thể dễ dàng nhận ra các thao tác cần phải Program timmax ;
thực hiện khi viết chương trình .
Uses crt ;
var a : array[1..250] of integer ;
n,i,max,csmax : Integer ;
Begin
clrscr ;
Write('Nhap n = ') ;
Readln(n) ;
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 4
For i := 1 to n do
Begin
Write('a[',i,'] = ') ;
readln(a[i]) ;
End ;
max := a[i] ;
csmax := 1 ;
For i := 2 to n do
If a[i] > max then
Begin
max := a[i] ;
csmax :=i ;
End ;
Writeln('Gia tri lon nhat : ',max) ;
Writeln('chi so ptu lon nhat : ',csmax) ;
Readln ;
End .
Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng
thuật toán tráo đổi .
GV : Đưa ra ví dụ, nhắc lại ý tưởng của - Input : Số nguyên dương N và dãy số
thuật toán .
A1, A2, …, AN
- Output : Dãy A được sắp xếp theo thứ
tự không giảm .
HS : Xây dựng thuật toán để giải bài toán
(thuật toán đã học ở lớp 10) .
- Ý tưởng :
+ Đổi để đưa số lớn nhất về vị trí cuối
cùng .
GV: soạn sẵn chương trình và cho học sinh
+ Làm tương tự đối với những số còn
quan sát chương trình .
lại .
Chương trình như sau :

Nếu có thời gian, giáo viên sẽ tiến hành
soạn chương trình từ đầu để học sinh có thể Program sapxep ;
dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ;
từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ;
trình .
n,i,j,tg : Integer ;
Begin
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 5
clrscr ;
Write('Nhap so phan tu mang n = ') ;
Readln(n) ;
For i := 1 to n do
Begin
Write('A[',i,'] = ') ;
readln(A[i]) ;
End ;
For j := n downto 2 do
Begin
For i := 1 to j-1 do
If A[i] > A[i+1] then
Begin
tg := A[i] ;
A[i] := A[i+1] ;
A[i+1] := tg ;
End ;
End ;
Writeln('day sau khi sap xep : ') ;
For i := 1 to n do
write(a[i]:8) ;
readln ;
End .
Writeln('chi so ptu lon nhat : ',csmax);
readln ;
End .
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 6
Tiết 23

Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh

11C3:
11C7:

Ngày

11C4:

Nội dung
Ví dụ 3 : Tìm kiếm nhị phân .

GV : Đưa ra ví dụ, nhắc lại ý tưởng của
thuật toán .
HS : Xây dựng thuật toán để giải bài toán
(thuật toán đã học ở lớp 10) .

- Input : Dãy số A1, A2,………, AN đã
được sắp xếp tăng dần .
- Output : Có hay không chỉ số i mà
A[i] = k hoặc thông báo không tìm
thấy .
GV soạn sẵn chương trình và cho học sinh
- Ý tưởng :
quan sát chương trình .
Xem lại thuật toán tìm kiếm nhị phân
trong SGK lớp 10 .
Chương trình như sau :

Nếu có thời gian, giáo viên sẽ tiến hành
soạn chương trình từ đầu để học sinh có thể Program sapxep ;
dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ;
từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ;
trình .
n,i,k : Integer ;
dau,cuoi,giua : Integer ;
TK : boolean ;
Begin
clrscr ;
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 7
Write('Nhap so ptu mang n = ') ;
Readln(n) ;
For i := 1 to n do
Begin
Write('A[',i,'] = ') ;
readln(A[i]) ;
End ;
Write('nhap so can tim k : ') ;
Readln(k);
dau := 1 ; cuoi := n ;
TK := false ;
while (dau <= cuoi) and Not TK Do
Begin
giua := (dau+cuoi) div 2 ;
If A[giua] = k then TK := true
Else
If a[giua]>k then cuoi := giua - 1
Else dau := giua + 1 ;
End ;
If TK then write('Chi so la : ',giua)
else write(' Khong tim thay ');
readln ;
End .
2. Kiểu mảng 2 chiều :
GV : Quay lại ví dụ về lưu trữ dữ liệu dạng - Mảng hai chiều là một bảng các phần tử
bảng để các em nhận ra nhu cầu phải sử cùng kiểu .
dụng mảng 2 chiều trong lập trình .
Với mảng hai chiều ta quan tâm đến :
- Tên kiểu mảng hai chiều .
- Số lượng phần tử của mỗi chiều trong
mảng .
- Kiểu dữ liệu của phần tử .
- Cách khai báo biến mảng hai chiều .
- Cách truy cập vào từng phần tử của
mảng .
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 8
a> Khai báo mảng hai chiều
- Trong ngôn ngữ Pascal, mảnh hai chiều
được khai báo như sau :
GV : Khai báo cách nào tiện lợi hơn (tương
tự mảng 1 chiều) ?
Cách 1 : Khai báo trực tiếp
Var : <Tên mảng> : Array[kiểu chỉ số dòng,
HS : Thường thì học sinh vẫn chọn cách 1 . kiểu chỉ số cột] of < kiểu phần tử> ;
GV : Tùy theo trường hợp cụ thể nhưng Cách 2 : Khai báo gián tiếp thông qua khai
thường thì cách 1 hay được dùng hơn .
báo kiểu mảng
Type <Tên kiểu mảng> = Array[kiểu chỉ số
dòng, kiểu chỉ số cột] of <kiểu phần tử> ;
Var <Tên mảng> : <Tên kiểu mảng> ;

Ví dụ :
Khai báo biến mảng thông qua kiểu
mảng :
Type
ArrayInteger = Array[1..10,1..15] of Integer
GV : Khi khai báo mảng 2 chiều cần chú ý ;
điều gì ?
ArrayReal=Array[1..50,1..100] of Real ;
HS : Tìm câu trả lời, GV gợi ý để các em Var A : ArrayInteger ;
chỉ ra được chỉ số của mảng, số dòng, số B : ArrayReal ;
cột và kiểu của mỗi phần tử trong mảng .
Khai báo mảng trực tiếp :
Var A : Array[1..10,1..15] og Integer ;
B : Aarray[1..50,1..100] og Real ;
Cách truy cập vào phần tử của mảng hai
GV : Gọi một số học sinh lên khai báo một chiều :
số biến mảng một chiều theo yêu cầu của
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 9
giáo viên .

<Tên mảng>[chỉ số dòng, chỉ số cột]
Ví dụ : A[1,3], B[23,66],……

Minh họa bằng hình ảnh mảng 2 chiều và
chỉ số các phần tử mảng hai chiều cũng như
cách viết truy cập phần tử mảng .
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 10
Tiết 24

Kiểu mảng (T)
Ngày
soạn:...../......;
giảng:..../......

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên:
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
GV cho học sinh quan sát chương trình và
giải thích các lệnh trong chương trình, chú
ý đi sâu vào các lệnh lặp để các em nhận ra
thường thì ta sử dụng vòng lặp for - do để
duyệt qua các phần tử mảng .

11C3:
11C7:

Ngày

11C4:

Nội dung
b> Một số ví dụ :
Ví dụ 1 :
Chương trình sau đưa ra màn hình bảng cửu
chương .

Program cuuchuong;
GV nên soạn sẵn chương trình và cho các Uses crt ;
em quan sát chương trình, và chạy thử var A : Array[1..9,1..9] of Integer ;
chương trình trên máy để các em tiện theo i, j : Byte ;
dõi .
Begin
Clrscr ;
Program Timkiem;
Uses crt;
Writeln('Bang cuu chuong 1 -> 9 : ');
var A : Array[1..100,1..100] of Integer;
Writeln ;
i,j,n,m : Byte ;
For i := 1 to 9 do
k,d : integer ;
For j := 1 to 9 do
A[i,j] := i*j ;
Begin
For i := 1 to 9 do
Clrscr ;
Begin
Write(' Nhap so dong, so cot cua mang : ')
For j := 1 to 9 do Write(a[i,j]:4);
;
Writeln ;
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 11
Readln(m,n);
For i := 1 to m do
For j := 1 to n do
Begin
Write(' A[',i,',',j,'] = ');
Readln(A[i,j]);
End ;
Writeln(' Mang vua nhap vao la : ');
Writeln;
For i := 1 to m do
Begin
For j := 1 to n do
Write(a[i,j]:4) ;
Writeln;
Writeln;
End;

Writeln ;
End ;
Readln ;
End .
Ví dụ 2 :
Chương trình sau nhập vào một mảng 2
chiều và số nguyên k, sau đó in ra các phần
tử có giá trị nhỏ hơn k của mảng .

Write(' Nhap gia tri k : ');
Readln(k) ;
d := 0 ;
For i := 1 to m do
For j := 1 to n do
If a[i,j] < k then
Begin
write('So nho hon ',k,' la ');
write(a[i,j]:8);
d := d+1 ;
End ;
If d = 0 then
Write('Khong co ptu nao nho hon ',k);
readln;
End .
IV. Củng cố:
 Nhắc lại một số khái niệm mới .
 Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 phần đồng thời gọi 4
học sinh lên bảng viết lại các cách khai báo, truy xuất, và hiển thị để nhập dữ
liệu .
 Ra bài tập về nhà .
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 12
V. Dặn dò: Đọc lại các kiến thức đã học trong bài 11. Chuẩn bị các chương
trình để chạy trong giờ thực hành sau.

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 13
Tiết 25

Bài tập và thực hành 3
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng;
2. Kỹ năng:
+ Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu
thông qua việc tìm hiểu, chạy thử các chương trình có sẵn;
+ Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.
+ Tổ chức những hoạt động trong phòng máy để HS có được kĩ năng
cơ bản trong làm việc với kiểu mảng (một chiều) trong lập trình, cụ thể là:
- Khai báo kiểu dữ liệu mảng;
- Nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị
các phần tử của mảng;
- Duyệt qua tất cả các phần tử của mảng để sử lí từng phần tử.
+ Cung cấp cho HS 3 thuật toán cơ bản và đơn giản thường gặp với
dữ liệu kiểu mảng:
- Tính tổng các phần tử thỏa mãn điều kiện nào đó;
- Đếm số phần tử thỏa mãn điều kiện nào đó;
- Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng cùng với vị
trí của nó trong mảng.
+ Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của
người lập trình.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
HS: phải hiểu được chương trình đã viết Bài 1: Tạo mảng A gồm n (n<=100) số
sẵn ở câu a) và thấy được kết quả chạy nguyên, mỗi số có trị tuyệt đối không vượt
chương trình này, trên cơ sở đó tìm ra cách quá 300. Tính tổng các phần tử của mảng là
giải quyết vấn đề đặt ra ở câu b.
bối số của một số nguyên dương k cho
GV: cần cho HS thấy được điểm khác nhau trước.
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 14
cơ bản của các chương trình ở câu a và câu
b.
Thủ tục randomize khởi tạo bộ lấy số ngẫu
nhiên trước khi dùng lệnh random(n) để lấy
một số nguyên ngẫu nhiên trong phạm vi từ
0 đến n-1.
GV: đưa ra một số câu hỏi (phù hợp với
trình độ HS ở mỗi lớp), hướng dẫn HS tìm
hiểu chương trình:
- MyArray là tên một kiểu dữ liệu hay
tên một biến?
- Vai trò của nmax và n khác nhau
ntn?
- Những dòng lệnh nào nhằm tạo ra
mảng A?
- Lệnh
gán:
A[i]:=random(300)random(300);
có ý nghĩa gì?
……….
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

a) Hãy tìm hiểu và chạy thử chương trình
sau đây:
Program Sum1;
(tr 63 SGK)
b) Hãy đưa các câu lệnh sau đây vào những
vị trí cần thiết nhằm sửa đổi chương trình
trong câu a) để có được chương trình đưa ra
số các số dương và số các số âm trong
mảng.
posi, neg : integer;
posi:= 0; neg:= 0;
if A[i] > 0 then posi:= posi + 1
else if A[i] < 0 then neg:=neg+1;
writeln(posi:4,neg:4);

Page 15
Tiết 26

Bài tập và thực hành 3(T)
Ngày
soạn:...../......;
giảng:..../......

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
GV: Nêu gợi ý cho HS thấy được chương
trình 2a thể hiên thuật toán tìm phần tử lớn
nhất.
GV: Hướng dẫn HS tìm hiểu vai trò của
biến j qua các câu lệnh của bài toán.
GV: Có thể cho HS một ví dụ bộ dữ liệu
input nhỏ và yêu cầu HS mô phỏng việc
chạy chương trình thể hiện thuật toán trên
giấy nháp.

11C3:
11C7:

Ngày

11C4:

Nội dung
Bài 2: Viết chương trình tìm phần tử có giá
trị lớn nhất của mảng và đưa ra màn hình
chỉ số và giá trị của phần tử tìm được. Nếu
có nhiều phần tử có cùng giá trị lớn nhất thì
đưa ra phần tử có chỉ số nhỏ nhất.
a) Tìm hiểu chương trình sau đây:
Program max;
Const nmax=100;
Type myarray=array[1..nmax] of interger;
Var a:myarray;
HS: Tích cực tìm hiểu bài toán, thực hiện
n, i, j:integer;
bài toán trên máy tính, sửa lỗi chạy chương Begin
trình.
Write(‘Nhap so luong phan tu day, n=’);
Readln(n);
For i:= 1 to n do
Begin
Write(‘ phan tu thu ‘,i,’ =’);
1
readln(a[i]);
2
end;
j:=1;
for i:=2 to n do if a[i]>a[j] then j:=i;
write(‘ chi so:’,j,’ Gia tri:’,a[j]:4);
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 16
readln
end.
Nếu còn thời gian thì HS hoàn thành phần b) Chỉnh sửa chương trình trên để đưa ra chỉ
b) dưới sự hướng dẫn của GV.
số các phần tử có cùng giá trị lớn nhất.
IV. Củng cố: Có thể thay thế câu lệnh a[i]:=random(300)-random(300) cho hai
lệnh 1,2
V. Dặn dò:

Tiết 27

Bài tập và thực hành 4
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
- Củng cố cho HS những kiến thức cơ bản đã có khi lập trình với kiểu
dl mảng;
- Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy
(bằng tráo đổi);
2. Kỹ năng:
- Rèn luyện kĩ năng diễn đạt thuật toán sắp xếp bằng chương trình sử
dụng dữ liệu kiểu mảng;
- Rèn luyện cho HS một ý thức cần có của người lập trình là viết
chương trình với khối lượng tính toán ít nhất có thể;
- Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của
người lập trình.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Bài này giúp chúng ta củng cố thuật Bài 1:
toán sắp xếp (bằng tráo đổi) và kĩ năng cài a) Hãy tìm hiểu và chạy thử chương trình
đặt bằng ngôn ngữ lập trình.
thực hiện thuật toán sắp xếp dãy số nguyên
bằng thuật toán tráo đổi với các giá trị khác
HS: Tích cực tìm hiểu bài toán, thực hiện nhau của n dưới đây. Qua đó, nhận xét thời
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 17
bài toán trên máy tính, sửa lỗi chạy chương gian chạy của chương trình.
trình.
(chương trình SGK – t65)
b) Khai báo thêm biến Dem và bổ xung vào
GV: Yêu cầu HS sửa lại một chỗ để có chương trình những câu lệnh cần thiết để
chương trình sắp xếp các phần tử theo thứ biến Dem tính số lần thực hiện tráo đổi
tự không tăng.
trong thuật toán. Đưa kết quả ra màn hình.
HS: Chạy thử để kt kết quả.
GV: Để đáp ứng yêu cầu ở câu b, đưa ra
một số câu hỏi để gợi ý.
HS: Trả lời các câu hỏi của GV và thực
hiện theo yêu cầu ở câu b.
IV. Củng cố:
V. Dặn dò:

Tiết 28

Bài tập và thực hành 4 (T)
Ngày
soạn:...../......;
giảng:..../......

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C5:
11C6:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh

HS: Tích cực tìm hiểu bài toán, thực hiện
bài toán trên máy tính, sửa lỗi chạy chương
trình.
GV: Sửa lỗi cho HS trong quá trình gõ và
chạy chương trình. Giải thích những thắc
mắc về bài toán mà HS đưa ra.
Chuong IV Kiể u dữ liệ u có cấu trúc

11C3:
11C7:

Ngày

11C4:

Nội dung
Bài 2: Hãy đọc và tìm hiểu những phân tích
để viết chương trình giải bài toán: Cho
mảng A gồm n phần tử. Hãy viết chương
trình tạo mảng B[1..n], trong đó B[i] là tổng
i phần tử đầu tiên của A.
Chương trình: SGK-t66.
Để ý rằng ta có các hệ thức sau:
B[1] = A[1]
B[i] = B[i-1] + A[i];
Page 18
Do đó, ta thay đoạn chương trình bởi hai
lệnh sau:
B[1] = A[1];
For i:= 2 to n do B[i]:= B[i-1]+A[i];
Với hai lệnh này máy chỉ phải thực hiện n-1
phép cộng, trong khi với đoạn chương trình
trong SGK máy phải thực hiện n(n+1)/2
phép cộng.
GV: Nhờ việc phân tích như trên ta tiết
kiệm được một lượng tính toán đáng kể.
IV. Củng cố: Tuy tốc độ tính toán của máy tính nhanh nhưng có giới hạn. Do đó,
khi viết chương trình ta nên tìm cách viết sao cho chương trình thực hiện càng ít
phép toán càng tốt.
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 19
Tiết 29

Kiểu xâu
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
- Biết xâu là một dãy ký tự (có thể coi xâu là một mảng một chiều) .
- Biết cách khai báo xâu, truy cập phần tử của xâu .
2. Kỹ năng:
- Sử dụng được một số thủ tục, hà thông dụng về xâu .
- Cài đặt được một số chương trình đơn giản có sử dụng xâu .
II. Chuẩn bị của GV và HS:
1. Giáo viên: Phòng máy, pascal.
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV : Để lưu trữ và xử lý Họ tên của một Một số khái niệm
người, các kiểu dữ liệu đã học có đáp ứng - Xâu là một dãy kí tự trong bảng mã
ASCII .
được ?
- Mỗi kí tự được gọi là một phần tử của
xâu .
- Số lượng kí tự trong xâu được gọi là độ
HS : Đưa ra một số phương án .
dài của xâu .
- Xâu có độ dài bằng 0 gọi là xâu rỗng.
GV : Phân tích các phương án của học - Tham chiếu tới phần tử trong xâu được
sinh, từ đó đưa ra yêu cầu cần sử dụng một
xác định thông qua chỉ số của phần tử
kiểu mới : Kiểu xâu .
trong xâu .
- Chỉ số phần tử trong xâu thường được
đánh số là 1 .
- Trong ngôn ngữ Pacal, tham chiếu tới
GV : Giới thiệu một số khái niệm và thao
phần tử thường được viết :
tác thường dùng khi làm việc với xâu ký tự
<Tên biến xâu>[chỉ số]
trong lập trình nói chung .
Cách khai báo và xử lí xâu trong ngôn
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 20
ngữ Pascal :
GV : Đây là cách khai báo trong ngôn ngữ
Pascal, trong các ngôn ngữ khác nhau có
thể có cách khai báo khác nhau . Do đó khi
viết chương trình bằng ngôn ngữ nào cần
tìm hiểu rõ các đối tượng của ngôn ngữ đó .

Khai báo biến xâu :
Pascal sử dụng từ khóa STRING để khai
báo xâu . Độ dài tối đa của xâu được viết
trong [ ] sau từ khóa STRING . Khai báo
như sau :
Var <tên biến> : String[độ dài lớn nhất
của xâu] ;
Ví dụ :
Var Ten : String[10] ;
Ho_dem : String[50] ;
Que : String ;

Độ dài tối đa của xâu phụ thuộc vào ngôn
ngữ lập trình, thường là 255 ký tự .
Cách viết hằng xâu trong các ngôn ngữ
khác nhau cũng có sự khác nhau .

Chú ý :
- Nếu không khai báo độ dài tối đa cho
biến xâu kí tự thì độ dài ngầm định của
xâu là 255 .
- Độ dài lớn nhất của xâu là 255 ký tự .
- Hằng xâu kí tự được đặt trong cặp nháy
đơn ‘ ’ .

Các thao tác xử lí xâu
Xét ví dụ như sau : Có xâu kí tự :
‘ nGuyen vaN A ’

- Với các xâu kí tự có các phép phép xâu
và phép so sánh hai xâu kí tự .
- Phép ghép xâu : Kí hiệu bằng dấu cộng
+ .

Hỏi cần có các thao tác gì để chỉnh sửa xâu
kí tự này ? (cần đưa xâu về dạng ‘Nguyen
Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha
Van A’)
Noi’
HS : Đưa ra ý kiến của mình .
Phép so sánh : <, <=, >, >=, = , <>, Pascal
GV : Phân tích ý kiến và gợi ý để các em tự động so sánh lần lượt từ kí tự từ trái sang
phải .
nhận ra cần :
- Xóa bớt một số dấu cách .
- Chuyển chữ hoa về chữ thường và Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ > ‘ABB’,
‘ABC’ <’ABCD’
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 21
ngược lại .

GV : Đưa ra một số câu hỏi :
- Làm sao biết một ký tự là dấu cách ?
- Làm sao để xóa đi một vài kí tự ?
- Làm sao để thêm vào một xâu một
vài kí tự ?
- Làm sao để có được chữ in hoa
tương ứng với chữ thường.
- Làm sao có được chữ cái thường
tương ứng với chữ hoa ?
- Làm sao biết xâu hiện có bao nhiêu
kí tự ?
Một số thủ tục chuẩn dùng để xử lí xâu :
Từ đó đưa ra các thủ tục chuẩn và hàm
chuẩn của Pascal thường dùng để xử lí
xâu .
Ứng với mỗi thủ tục hoặc hàm, giáo viên
lấy ví dụ trong một chương trình Pascal cụ
thể để các em hiểu được ý nghĩa các thủ tục
và hàm này .

- Delete(St,vt,n) xóa n kí tự của xâu St
bắt đầu từ vị trí vt .
- Insert(S1,S1,vt) chèn sâu S1 vào S2
bắt đầu từ vị trí vt của S2
- Val(St,x,m) Đổi giá trị xâu St thành
số ghi giá trị vào biến X, nếu không
đổi được thì vị trí gây lỗi ghi trong m,
nếu đổi thành công thì m = 0
- Str(X,St) chuyển số X thành xâu kí
tự lưu trong St .

Trong môi trường soạn thảo của Pascal,
giáo viên chỉ cần làm một chương trình đơn
giản có sử dụng một trong các thủ tục hoặc
Một số hàm chuẩn :
hàm này để các em theo dõi .

- Copy(St,vt,n) sao chép từ xâu St n kí
tự từ vị trí vt .
- Pos(S1,S2) tìm vị trí xuất hiện đầu
tiên của S1 trong S2 .
- Length(St) : cho độ dài xâu St .
- Upcase(ch) : cho chữ cái viết hoa
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 22
tương ứng với chữ thường trong ch .
- CHR(X) : cho kí tự có mã X trong
bảng mã ASCII .
- Ord(ch) : cho mã của kí tự ch trong
bảng mã .
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 23
Tiết 30

Kiểu xâu (T)
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Giáo viên soạn sẵn các ví dụ này để tiện
Một số ví dụ :
cho học sinh theo dõi trên màn hình cũng
như việc chạy thử và không làm mất thời
gian ngồi viết chương trình .
VD 1 :
Program vd1 ;
Uses crt ;
Với mỗi ví dụ, giáo viên đi sâu vào câu Var s1,s2 : String ;
lệnh trực tiếp đáp ứng yêu cầu của ví dụ,
như vậy các em sẽ tiếp thu nhanh hơn .
Begin
Clrscr ;
Write('Nhap xau thu 1 : ') ;
Ví dụ 1 : Nhập 1 xâu, viết ra màn hình xâu
Readln(s1) ;
dài hơn .
Write('Nhap xau thu 2 : ') ;
Readln(s2) ;
If length(s1) > Length(s2) then
Write(s1)
else
Write(s2);
Readln ;
Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự End .
đầu tiên của xâu S1 có trùng với ký tự cuối
cùng của xâu S2 hay không ?
VD 2 :
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 24
Program vd2 ;
Uses crt ;
Var s1,s2 : String ;
x : Byte ;
Begin
Clrscr ;
Write('Nhap xau thu 1 : ');
Readln(s1) ;
Write('Nhap xau thu 2 : ');
Readln(s2) ;
x := length(s2) ;
If s1[1] = s2[x] then
Write('Trung nha')
else
Write('Khac nhau');
Readln ;
Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu End .
đó theo thứ tự ngược lại của các ký tự trong
xâu .
VD 3 :
Program vd3 ;
Uses crt ;
Var i,k : Byte ;
a : String ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(a) ;
k := length(a) ;
For i := k downto 1 do
Write(a[i]) ;
Readln ;
End .
Ví dụ 4 : Nhập 1 xâu, viết ra màn hình xâu
đó nhưng đã được bỏ tất cả các ký tự là dấu VD 4 :
cách .
Program vd4 ;
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 25
Uses crt ;
Var i,k : Byte ;
a,b : String ;
Begin
Clrscr ;
Write('Nhap xau : ') ;
Readln(a) ;
k := length(a) ;
b :='' ;
For i := 1 to k do
if a[i] <> '' then
b := b+a[i] ;
Write(b) ;
Readln ;
End .
Ví dụ 5 : Nhập 1 xâu, viết ra màn hình xâu VD 5 :
gồm các ký tự số của xâu đó .
Program Xulixau ;
Uses crt ;
Var s1,s2 : String ;
i : Byte ;
Begin
Clrscr ;
Write('Nhap xau s1 : ') ;
Readln(s1) ;
s2 := '' ;
For i := 1 to length(s1) do
If ('0'<s1[i]) and (s1[i]<='9') then
s2 := s2 + s1[i] ;
Write(s2);
Readln ;
End .
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 26
Tiết 31

Bài tập và thực hành 5
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu.
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Đưa ra ví dụ hoặc yêu cầu HS cho ví
dụ về xâu đối xứng và xâu không đối xứng. Bài 1: Nhập vào từ bàn phím một xâu.
HS: Tích cực tìm hiểu bài toán, thực hiện Kiểm tra xâu đó có phải là xâu đối xứng
bài toán trên máy tính, sửa lỗi chạy chương không.
trình.
a) Chạy thử chương trình sau:
var x,i : byte;
a,p: string;
GV: Sửa lỗi cho HS trong quá trình gõ và begin
chạy chương trình. Giải thích những thắc write(‘ Nhap vao xau:’);
mắc về bài toán mà HS đưa ra.
readln(a);
x:=length(a);
p:=’’;
for i:=x downto 1 do
p:=p+a[i];
if a=p then
write(‘ Xau doi xung’)
else write(‘Xau khong doi xung’);
readln
end.
b) Hay viết lại chương trình trên, trong đó
GV: Không cần thiết phải tạo một xâu mới không dùng biến xâu p.
để so sánh hai xâu mà chỉ so sánh các cặp
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 27
kí tự ở vị trí đối xứng nhau để kết luận xâu
đó có đối xứng không
IV. Củng cố:
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 28
Tiết 32

Bài tập và thực hành 5 (T)
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu.
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Bài 2: Cho xâu s. Viết chương trình đếm số
từ có trong xâu s này?
Program Demtu;
Var s:string;
GV: Để giải quyết được bài toán này thì
d, x, i:byte;
trước hết ta phải cộng thêm một kí tự trống Begin
vào đầu xâu s.
Write(‘ Nhap xau:’);readln(s);
s:= ‘ ‘+s;
x:=length(s);
GV: Khi đó điều kiện để xác định xem đâu for i:=1 to x do
là một từ là gì?
if (s[i]=’ ‘ ) and (s[i+1]<>’ ‘) then d:=d+1;
write(‘ So tu co trong xau la:’,d);
HS: Trả lời câu hỏi.
readln
end.
GV: Kết luận và đưa ra hướng giải quyết
bài toán.
Khi đó để kiểm tra xem đâu là một từ thì ta
phải xét điều kiện: xâu s tại vị trí thứ i là kí
tự trống, đồng thời tại vị trí thứ i+1 phải là
kí tự khác trống.
HS: suy nghĩ và đưa ra phương hướng giải Sử dụng phương pháp chuẩn hóa xâu s. Từ
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 29
quyết vấn đề này.

đó có thể tìm ra số từ có trong xâu s này?

IV. Củng cố:
V. Dặn dò: Chuẩn bị trước bài tập trong SBT.

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 30
Tiết 33

Bài tập
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức: Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu
có cấu trúc.
2. Kỹ năng:
- Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu mảng và dữ liệu
kiểu xâu.
- Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với
những kiểu dữ liệu có cấu trúc.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Giáo án, SGK, SBT .
2. Học sinh: Vở BT, SBT
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Qua quá trình chuẩn bị bài tập trong
SBT từ nhà, có ai có thắc mắc về bài tập
nào không?
HS: Đưa ra những vướng mắc cần giải đáp.
GV: Giải đáp các thắc mắc của HS.

Chữa bài tập trong SBT

GV: Gọi một số HS lên chữa một số bài tập
tiêu biểu (cả bài tập phần mảng và phần
xâu).
HS: Lên bảng chữa bài.
HS khác nhận xét bài làm của bạn.
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 31
GV: nhận xét và chỉnh sửa lại bài tập một
cách hoàn chỉnh.
IV. Củng cố:
V. Dặn dò: chuẩn bị trước bài 13.

Tiết 34

Kiểu bản ghi
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
- Biết khái niệm kiểu bản ghi .
- Biết cách khai báo bản ghi, truy cập trường của bản ghi .
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
Một số khái niệm
Xét ví dụ sau :
Viết chương trình dùng để quản lí các - Kiểu bản ghi được dùng để mô tả cho
thí sinh của một kỳ thi tuyển sinh .
các đối tượng có cùng một số thuộc tính
Chương trình của chúng ta cần quản lí
mà các thuộc tính có thể có các kiểu dữ
được :
liệu khác nhau .
+ SBD của thí sinh,
- Bản ghi thường được gọi là Record, mỗi
+ Họ tên thí sinh,
Record sẽ lưu trữ dữ liệu về một đối
+ Giới tính,
tượng cần quản lí .
+ Điểm của các môn …
- Mỗi thuộc tính của đối tượng tương ứng
với một trường của bản ghi . Các trường
GV : Đưa ra một số câu hỏi sau :
khác nhau có thể có dữ liệu khác nhau .
- Làm thế nào để quản lý toàn bộ - Các ngôn ngữ lập trình thường cho cách
thông tin trên của học sinh ?
để xác định :
- Mỗi thông tin trên có kiểu dữ liệu là
+ Tên kiểu bản ghi .
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 32
gì ?
HS : Có thể quản lý mỗi dữ kiện trên là
một mảng một chiều

+
+
+
+

Tên các trường .
Kiểu dữ liệu của trường .
Cách khai báo biến .
Cách tham chiếu đến trường .

Cách khai báo và sử dụng kiểu bản ghi
Ngôn ngữ lập trình bậc cao có cách tốt hơn trong ngôn ngữ Pascal
để quản lý dữ liệu trên -> Bản ghi .
1. Khai báo
GV lấy một bảng điểm của học sinh rồi chỉ
rõ : Mỗi hàng ta gọi là một bản ghi, mỗi cột Để khai báo biến bản ghi, thường khai báo
là một trường .
một kiểu bản ghi sau đó khai báo biến bản
ghi .
GV : Mỗi ngôn ngữ có một cách khai báo Cách khai báo kiểu :
kiểu bản ghi khác nhau .
Type <Tên kiểu bản ghi>=Record
<Tên trường 1> : <Kiểu trường 1> ;
………
………
Ngôn ngữ Pascal không cho bạn khai báo
<Tên trường n> : <Kiểu trường n> ;
biến bản ghi trực tiếp mà phải khai báo biến End ;
bản ghi thông qua khai báo kiểu bản ghi .
Trước hết phải khai báo kiểu bản ghi sau đó
biến bản ghi được khai báo thông qua kiểu Cách khai báo biến :
bản ghi này .
GV : Làm thế nào để có thể khai báo được Var <Tên biến> : <Tên kiểu bản ghi> ;
nhiều biến bản ghi có cùng một kiểu ?
Var <Tên mảng> : Array[1..n] Of <Tên
HS : GV sẽ gợi ý để học sinh đưa ra đó là kiểu bản ghi> ;
sử dụng kiểu mảng trong đó phần tử mảng
sẽ có kiểu bản ghi .
Type Hocsinh = Record
Hoten : String[30] ;
Ngaysinh : String[10] ;
Ví dụ về khai báo bản ghi .
Khai báo một kiểu bản ghi để xử lý
NamNu :Boolean ;
bảng kết quả thi của các học sinh .
Toan,Ly, Hoa, Van, Su, Dia : Real ;
Mỗi bản ghi sẽ bao gồm : Họ và tên của End ;
học sinh (Hoten), ngày tháng năm
sinh(Ngaysinh), Giới tính (NamNu), và Var A, B : Hocsinh ;
điểm thi các môn của mỗi học sinh (Toan, Lop : Array[1..100] Of Hocsinh ;
Ly, Hoa, Van, Su, Dia,Tin) .
Để truy cập vào từng trường của bản ghi, ta
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 33
Hãy xác định kiểu dữ liệu cho các trường viết :
trên (Mỗi nội dung trên là một trường của <Tên biến bản ghi> . <Tên trường>
bản ghi)
GV : Khi có nhu cầu thay đổi thông tin Ví dụ :
trong từng trường, làm thế nào để truy cập A.Hoten
thông tin vào từng trường của bản ghi ?
B.Ngaysinh
Lop[i].Toan
Mỗi ngôn ngữ có một cách truy cập khác Lop[i].Ly
nhau nhưng thường được viết là :
……… với i là chỉ số nào đó của mảng
<Tên biến bản ghi>.<tên trường>
Lop
GV: Đưa ra một số ví dụ .
IV. Củng cố:
V. Dặn dò:

Tiết 35

Kiểu bản ghi (T)
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
- Biết khái niệm kiểu bản ghi .
- Biết cách khai báo bản ghi, truy cập trường của bản ghi .
2. Kỹ năng:
II. Chuẩn bị của GV và HS:
1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng .
2. Học sinh:
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Vì bản ghi có nhiều trường nên việc 2. Gán giá trị
gán giá trị cho bản ghi phức tạp hơn các
biến khác .
Có 2 cách để gán giá trị cho bản ghi .
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 34
Khi nhập thông tin vào từ bàn phím, ta
thường phải nhập cho từng trường .

Ví dụ :
CHương trình sau được viết trong ngôn ngữ
Pascal dùng kiểu bản ghi để xử lý bảng kết
quả thi bao gồm 2 môn Toán, Văn của học
sinh , Sau khi nhập xong danh sách sẽ đưa
ra bảng kết quả học tập và xếp loại (xem kỹ
đầu bài trong SGK) .

Chuong IV Kiể u dữ liệ u có cấu trúc

- Dùng lệnh gán trực tiếp : Nếu A, B là hai
bản ghi cùng kiểu ta có thể gán giá trị
của A cho B bằng câu lệnh gán :
Vd : B := A ; hoặc A := B ;
- Gán giá trị cho từng trường . Dùng câu
lệnh gán gán giá trị cho các trường hoặc
nhập từ bàn phím .
A.Hoten := ‘Nguyen Van Tuan’ ;
Readln(a.Ngaysinh);
Chương trình xử lý bảng kết quả thi.

Page 35
Ví dụ : Chương trình sau được viết trong ngôn ngữ Pascal dùng kiểu bản ghi để
xử lý bảng kết quả thi bao gồm 2 môn Toán, Văn của học sinh , Sau khi nhập xong
danh sách sẽ đưa ra bảng kết quả học tập và xếp loại (xem kỹ đầu bài trong SGK) .
(* Kieu ban ghi xu ly bang ket qua thi 2 mon : Toan, Van *)
Program Xeploai ;
uses crt ;
Type Hocsinh = Record
Ten : String[30] ;
Ngaysinh : String[10] ;
Diachi : String[50] ;
toan, van : real ;
Xeploai : Char ;
End ;
Var
Lop : array[1..100] of Hocsinh ;
i, n : Byte ;
Tg : Real ;
Begin
Clrscr ;
Write(' Cho biet so hoc sinh : ') ;
Readln(n) ;
For i := 1 to n do
Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ;
readln(Lop[i].ten) ;
Write(' Ngay sinh : ') ;
readln(Lop[i].Ngaysinh) ;
Write(' Dia chi : ') ;
readln(Lop[i].Diachi) ;
Write(' Diem Toan : ') ;
readln(Lop[i].toan) ;
Write(' Diem Van ') ;
readln(Lop[i].van) ;
Tg := Lop[i].toan + Lop[i].van ;
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 36
if Tg >= 18 then Lop[i].Xeploai := 'A'
Else if Tg >= 14 then Lop[i].Xeploai := 'B'
Else if Tg >= 10 then Lop[i].Xeploai := 'C'
Else Lop[i].Xeploai := 'D'
End ;
Readln ;
For i := 1 to n do
Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai);
Readln ;
End.
IV. Củng cố:
 Nhắc lại một số khái niệm mới .
 Nhắc lại cấu trúc câu lệnh về việc khai báo, truy cập đến các thành phần của
bản ghi .
 Ra bài tập về nhà .
V. Dặn dò:

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 37
Tiết 36

Bài tập
Ngày
soạn:...../......;
giảng:..../......

Ngày

I. Mục tiêu
1. Kiến thức:
Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu có cấu
trúc.
2. Kỹ năng:
- Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu bản ghi.
- Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với
những kiểu dữ liệu có cấu trúc.
II. Chuẩn bị của GV và HS:
1. Giáo viên: Giáo án, SGK, SBT .
2. Học sinh: Vở BT, SBT
III. Nội dung:
. Ổn định lớp:
Kiểm diện:
11C1:
11C2:
11C3:
11C4:
11C5:
11C6:
11C7:
. Kiểm tra bài cũ:
. Bài giảng:
Hoạt động của Giáo viên và Học sinh
Nội dung
GV: Qua quá trình chuẩn bị bài tập trong
SBT từ nhà, có ai có thắc mắc về bài tập
nào không?
HS: Đưa ra những vướng mắc cần giải đáp.
GV: Giải đáp các thắc mắc của HS.

Chữa bài tập trong SBT

GV: Gọi một số HS lên chữa một số bài tập
tiêu biểu.
GV: Chú ý cho HS cách truy nhập vào
trường của bản ghi.
HS: Lên bảng chữa bài.
HS khác nhận xét bài làm của bạn.
Chuong IV Kiể u dữ liệ u có cấu trúc

Page 38
GV: nhận xét và chỉnh sửa lại bài tập một
cách hoàn chỉnh.
IV. Củng cố:
V. Dặn dò: chuẩn bị trước bài 14.

Chuong IV Kiể u dữ liệ u có cấu trúc

Page 39

Weitere ähnliche Inhalte

Was ist angesagt?

Chuong 3 tin 11
Chuong 3 tin 11Chuong 3 tin 11
Chuong 3 tin 11Sunkute
 
Ngôn ngữ lập trình pascal (bổ trợ tin 11)
Ngôn ngữ lập trình pascal (bổ trợ tin 11)Ngôn ngữ lập trình pascal (bổ trợ tin 11)
Ngôn ngữ lập trình pascal (bổ trợ tin 11)Hong Phuoc Nguyen
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]MasterCode.vn
 
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
 
Kieu xau tiet 1 da soan
Kieu xau tiet 1 da soanKieu xau tiet 1 da soan
Kieu xau tiet 1 da soanSunkute
 
Chương i lop 11
Chương i lop 11Chương i lop 11
Chương i lop 11Sunkute
 
Một số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩnMột số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩnvothanhdoit
 
phuong trinh vo ti File10779
phuong trinh vo ti  File10779phuong trinh vo ti  File10779
phuong trinh vo ti File10779Phuong Nguyen
 
Lap trinh pascal
Lap trinh pascalLap trinh pascal
Lap trinh pascalLoan Nguyen
 
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngoc
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngocGiao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngoc
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngocNgoc Vu Thi Quynh
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánNguyễn Đức
 
Ngôn ngữ lập trình turbo pascal full
Ngôn ngữ lập trình turbo pascal fullNgôn ngữ lập trình turbo pascal full
Ngôn ngữ lập trình turbo pascal fullnataliej4
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanHữu Duy Duy
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánVan Vo
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danVõ Tâm Long
 
Vo thikimcuong kichban_bai6_chuong2_khoi11
Vo thikimcuong kichban_bai6_chuong2_khoi11Vo thikimcuong kichban_bai6_chuong2_khoi11
Vo thikimcuong kichban_bai6_chuong2_khoi11K33LA-KG
 

Was ist angesagt? (18)

Chuong 3 tin 11
Chuong 3 tin 11Chuong 3 tin 11
Chuong 3 tin 11
 
Ngôn ngữ lập trình pascal (bổ trợ tin 11)
Ngôn ngữ lập trình pascal (bổ trợ tin 11)Ngôn ngữ lập trình pascal (bổ trợ tin 11)
Ngôn ngữ lập trình pascal (bổ trợ tin 11)
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]
 
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
 
Kieu xau tiet 1 da soan
Kieu xau tiet 1 da soanKieu xau tiet 1 da soan
Kieu xau tiet 1 da soan
 
Chương i lop 11
Chương i lop 11Chương i lop 11
Chương i lop 11
 
Một số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩnMột số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩn
 
Baigiang05 thuattoan(1s 1p)
Baigiang05 thuattoan(1s 1p)Baigiang05 thuattoan(1s 1p)
Baigiang05 thuattoan(1s 1p)
 
phuong trinh vo ti File10779
phuong trinh vo ti  File10779phuong trinh vo ti  File10779
phuong trinh vo ti File10779
 
Lap trinh pascal
Lap trinh pascalLap trinh pascal
Lap trinh pascal
 
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngoc
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngocGiao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngoc
Giao an tin hoc 11 - Tuan 12 - Thuc hanh ve mang va xau - v01 - vtq ngoc
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toán
 
Ngôn ngữ lập trình turbo pascal full
Ngôn ngữ lập trình turbo pascal fullNgôn ngữ lập trình turbo pascal full
Ngôn ngữ lập trình turbo pascal full
 
Tin học lớp 8
Tin học lớp 8Tin học lớp 8
Tin học lớp 8
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
 
Vo thikimcuong kichban_bai6_chuong2_khoi11
Vo thikimcuong kichban_bai6_chuong2_khoi11Vo thikimcuong kichban_bai6_chuong2_khoi11
Vo thikimcuong kichban_bai6_chuong2_khoi11
 

Andere mochten auch

Giải bài tập Tin học 11 SGK
Giải bài tập Tin học 11 SGKGiải bài tập Tin học 11 SGK
Giải bài tập Tin học 11 SGKHảo Hảo
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâuMinh Lê
 
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgoc
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgocNhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgoc
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgocSP Tin K34
 
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
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiềuHuy Rùa
 
Chuong 6 tin 11
Chuong 6 tin 11Chuong 6 tin 11
Chuong 6 tin 11Sunkute
 
De kt15 p_lythuyet
De kt15 p_lythuyetDe kt15 p_lythuyet
De kt15 p_lythuyetSunkute
 
Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Sunkute
 
Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giaitrungdha
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợ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 ngocNgoc Vu Thi Quynh
 
Giao trinh pascal toan tap
Giao trinh pascal toan tapGiao trinh pascal toan tap
Giao trinh pascal toan tapVõ Tâm Long
 
179887496 sdc1-bai tap-javacanban-5
179887496 sdc1-bai tap-javacanban-5179887496 sdc1-bai tap-javacanban-5
179887496 sdc1-bai tap-javacanban-5le dai
 
Trần Thị Minh Hảo _ K33103226
Trần Thị Minh Hảo _ K33103226Trần Thị Minh Hảo _ K33103226
Trần Thị Minh Hảo _ K33103226Tin 5CBT
 
Phan2 chuong6 mang
Phan2 chuong6 mangPhan2 chuong6 mang
Phan2 chuong6 mangLy hai
 

Andere mochten auch (20)

Giải bài tập Tin học 11 SGK
Giải bài tập Tin học 11 SGKGiải bài tập Tin học 11 SGK
Giải bài tập Tin học 11 SGK
 
Bài 12: Kiểu xâu
Bài 12: Kiểu xâuBài 12: Kiểu xâu
Bài 12: Kiểu xâu
 
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgoc
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgocNhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgoc
Nhom13-Lop11-c4-b11-Kieu Mang(t2)_HuynhKimNgoc
 
Nmlt c07 mang1_chieu
Nmlt c07 mang1_chieuNmlt c07 mang1_chieu
Nmlt c07 mang1_chieu
 
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)
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
 
Bai 11 kieu mang (tiet 1)
Bai 11 kieu mang (tiet 1)Bai 11 kieu mang (tiet 1)
Bai 11 kieu mang (tiet 1)
 
Chuong 6 tin 11
Chuong 6 tin 11Chuong 6 tin 11
Chuong 6 tin 11
 
De kt15 p_lythuyet
De kt15 p_lythuyetDe kt15 p_lythuyet
De kt15 p_lythuyet
 
Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11Kiểu dữ liệu tệp chuong 5 tin 11
Kiểu dữ liệu tệp chuong 5 tin 11
 
Bai tap mau pascal
Bai tap mau pascalBai tap mau pascal
Bai tap mau pascal
 
Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giai
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
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
 
Giao trinh pascal toan tap
Giao trinh pascal toan tapGiao trinh pascal toan tap
Giao trinh pascal toan tap
 
179887496 sdc1-bai tap-javacanban-5
179887496 sdc1-bai tap-javacanban-5179887496 sdc1-bai tap-javacanban-5
179887496 sdc1-bai tap-javacanban-5
 
Bai11
Bai11Bai11
Bai11
 
Nmlt c08 mang2_chieu
Nmlt c08 mang2_chieuNmlt c08 mang2_chieu
Nmlt c08 mang2_chieu
 
Trần Thị Minh Hảo _ K33103226
Trần Thị Minh Hảo _ K33103226Trần Thị Minh Hảo _ K33103226
Trần Thị Minh Hảo _ K33103226
 
Phan2 chuong6 mang
Phan2 chuong6 mangPhan2 chuong6 mang
Phan2 chuong6 mang
 

Ähnlich wie Chuong 4 tin 11

Ke hoach giang day
Ke hoach giang dayKe hoach giang day
Ke hoach giang dayTâm Phan
 
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngocNgoc Vu Thi Quynh
 
Bai11 tinhoc11
Bai11 tinhoc11Bai11 tinhoc11
Bai11 tinhoc11tin_k36
 
45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aefPhi Phi
 
Tin10_chuong01 bai_06
Tin10_chuong01 bai_06Tin10_chuong01 bai_06
Tin10_chuong01 bai_06Hằng Võ
 
Giao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanGiao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanTran Juni
 
Kich bandayhoc
Kich bandayhocKich bandayhoc
Kich bandayhocHoan Huyen
 
Hoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgocHoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgocSP Tin K34
 
Giao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktknGiao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktknTan Le
 
Chuong 5 tin 11
Chuong 5 tin 11Chuong 5 tin 11
Chuong 5 tin 11Sunkute
 
Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Dương Tuấn
 
Nguyen thi tuyet sang k33103262-kichbangiangday
Nguyen thi tuyet sang   k33103262-kichbangiangdayNguyen thi tuyet sang   k33103262-kichbangiangday
Nguyen thi tuyet sang k33103262-kichbangiangdayTIN D BÌNH THUẬN
 
Chu de 6 cau lenh lap
Chu de 6  cau lenh lapChu de 6  cau lenh lap
Chu de 6 cau lenh lapĐồ Trần
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhHồ Lợi
 
Mai Thanh Bằng
Mai Thanh BằngMai Thanh Bằng
Mai Thanh BằngK33LA-KG
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danVăn Võ Ntn
 

Ähnlich wie Chuong 4 tin 11 (20)

Ke hoach giang day
Ke hoach giang dayKe hoach giang day
Ke hoach giang day
 
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 09 - On tap chuong 04 - vtq ngoc
 
Bai11 tinhoc11
Bai11 tinhoc11Bai11 tinhoc11
Bai11 tinhoc11
 
Giáo án tin 6
Giáo án tin 6Giáo án tin 6
Giáo án tin 6
 
Tiet 24
Tiet 24Tiet 24
Tiet 24
 
45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef
 
Tin10_chuong01 bai_06
Tin10_chuong01 bai_06Tin10_chuong01 bai_06
Tin10_chuong01 bai_06
 
Giao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoanGiao an_bai4_lop10_baitoanvathuattoan
Giao an_bai4_lop10_baitoanvathuattoan
 
Kich bandayhoc
Kich bandayhocKich bandayhoc
Kich bandayhoc
 
Hoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgocHoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgoc
 
Giao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktknGiao an tin hoc 7 2 cot chuan ktkn
Giao an tin hoc 7 2 cot chuan ktkn
 
Chuong 5 tin 11
Chuong 5 tin 11Chuong 5 tin 11
Chuong 5 tin 11
 
Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#
 
Nguyen thi tuyet sang k33103262-kichbangiangday
Nguyen thi tuyet sang   k33103262-kichbangiangdayNguyen thi tuyet sang   k33103262-kichbangiangday
Nguyen thi tuyet sang k33103262-kichbangiangday
 
Kich ban day hoc Tin 10 - Bài 6
Kich ban day hoc Tin 10 - Bài 6Kich ban day hoc Tin 10 - Bài 6
Kich ban day hoc Tin 10 - Bài 6
 
Chu de 6 cau lenh lap
Chu de 6  cau lenh lapChu de 6  cau lenh lap
Chu de 6 cau lenh lap
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
Giaotrinhbaitapkythuatlaptrinh
 
08 long gagd_t3+t5
08 long gagd_t3+t508 long gagd_t3+t5
08 long gagd_t3+t5
 
Mai Thanh Bằng
Mai Thanh BằngMai Thanh Bằng
Mai Thanh Bằng
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
 

Mehr von Sunkute

Chude01 nhom5
Chude01 nhom5Chude01 nhom5
Chude01 nhom5Sunkute
 
Chude01 nhom5
Chude01 nhom5Chude01 nhom5
Chude01 nhom5Sunkute
 
Bai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhBai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhSunkute
 
Download giao an_tin_hoc_10_chuong_4
Download giao an_tin_hoc_10_chuong_4Download giao an_tin_hoc_10_chuong_4
Download giao an_tin_hoc_10_chuong_4Sunkute
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hànhSunkute
 
Tron bo giao_an_tin_hoc_10
Tron bo giao_an_tin_hoc_10Tron bo giao_an_tin_hoc_10
Tron bo giao_an_tin_hoc_10Sunkute
 
Hd tap danh_may
Hd tap danh_mayHd tap danh_may
Hd tap danh_maySunkute
 
C fakepathphimtat
C fakepathphimtatC fakepathphimtat
C fakepathphimtatSunkute
 
C fakepathphim
C fakepathphimC fakepathphim
C fakepathphimSunkute
 
Bai giang 16 chuong 3 lop 10
Bai giang 16 chuong 3 lop 10Bai giang 16 chuong 3 lop 10
Bai giang 16 chuong 3 lop 10Sunkute
 
Kịch bản dạy học bài 16
Kịch bản dạy học   bài 16Kịch bản dạy học   bài 16
Kịch bản dạy học bài 16Sunkute
 
Kbdh bài 17
Kbdh bài 17Kbdh bài 17
Kbdh bài 17Sunkute
 
Một số chức năng khác
Một số chức năng khácMột số chức năng khác
Một số chức năng khácSunkute
 
Kich bản dh
Kich bản dhKich bản dh
Kich bản dhSunkute
 
Bai 5 cac thao tac co ban tren bang
Bai 5 cac thao tac co ban tren bangBai 5 cac thao tac co ban tren bang
Bai 5 cac thao tac co ban tren bangSunkute
 
Dekiemtra15p1
Dekiemtra15p1Dekiemtra15p1
Dekiemtra15p1Sunkute
 
Kbdh bai2c1lop10 thongtinvadulieu
Kbdh bai2c1lop10 thongtinvadulieuKbdh bai2c1lop10 thongtinvadulieu
Kbdh bai2c1lop10 thongtinvadulieuSunkute
 
Baigiang bai2c1lop10
Baigiang bai2c1lop10Baigiang bai2c1lop10
Baigiang bai2c1lop10Sunkute
 
Kt ly thuyet_1tiet
Kt ly thuyet_1tietKt ly thuyet_1tiet
Kt ly thuyet_1tietSunkute
 
De kt15 p_trac nghiem
De kt15 p_trac nghiemDe kt15 p_trac nghiem
De kt15 p_trac nghiemSunkute
 

Mehr von Sunkute (20)

Chude01 nhom5
Chude01 nhom5Chude01 nhom5
Chude01 nhom5
 
Chude01 nhom5
Chude01 nhom5Chude01 nhom5
Chude01 nhom5
 
Bai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdhBai 1 tin hoc lop 12_kbdh
Bai 1 tin hoc lop 12_kbdh
 
Download giao an_tin_hoc_10_chuong_4
Download giao an_tin_hoc_10_chuong_4Download giao an_tin_hoc_10_chuong_4
Download giao an_tin_hoc_10_chuong_4
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hành
 
Tron bo giao_an_tin_hoc_10
Tron bo giao_an_tin_hoc_10Tron bo giao_an_tin_hoc_10
Tron bo giao_an_tin_hoc_10
 
Hd tap danh_may
Hd tap danh_mayHd tap danh_may
Hd tap danh_may
 
C fakepathphimtat
C fakepathphimtatC fakepathphimtat
C fakepathphimtat
 
C fakepathphim
C fakepathphimC fakepathphim
C fakepathphim
 
Bai giang 16 chuong 3 lop 10
Bai giang 16 chuong 3 lop 10Bai giang 16 chuong 3 lop 10
Bai giang 16 chuong 3 lop 10
 
Kịch bản dạy học bài 16
Kịch bản dạy học   bài 16Kịch bản dạy học   bài 16
Kịch bản dạy học bài 16
 
Kbdh bài 17
Kbdh bài 17Kbdh bài 17
Kbdh bài 17
 
Một số chức năng khác
Một số chức năng khácMột số chức năng khác
Một số chức năng khác
 
Kich bản dh
Kich bản dhKich bản dh
Kich bản dh
 
Bai 5 cac thao tac co ban tren bang
Bai 5 cac thao tac co ban tren bangBai 5 cac thao tac co ban tren bang
Bai 5 cac thao tac co ban tren bang
 
Dekiemtra15p1
Dekiemtra15p1Dekiemtra15p1
Dekiemtra15p1
 
Kbdh bai2c1lop10 thongtinvadulieu
Kbdh bai2c1lop10 thongtinvadulieuKbdh bai2c1lop10 thongtinvadulieu
Kbdh bai2c1lop10 thongtinvadulieu
 
Baigiang bai2c1lop10
Baigiang bai2c1lop10Baigiang bai2c1lop10
Baigiang bai2c1lop10
 
Kt ly thuyet_1tiet
Kt ly thuyet_1tietKt ly thuyet_1tiet
Kt ly thuyet_1tiet
 
De kt15 p_trac nghiem
De kt15 p_trac nghiemDe kt15 p_trac nghiem
De kt15 p_trac nghiem
 

Chuong 4 tin 11

  • 1. Tiết 21 Kiểu mảng Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: - Hiểu khái niệm mảng một chiều và hai chiều . - Hiểu cách khai báo và truy cập đến các phần tử của mảng . 2. Kỹ năng: - Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều . - Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng . II. Chuẩn bị của GV và HS: 1. Giáo viên: 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung Trước khi vào bài, giáo viên đưa ra một số vấn đề cần giải quyết như sau : Với những kiểu dữ liệu như đã biết, làm thế nào để : - Lưu trữ và xử lý một dãy số ? - Lưu trữ và xử lý Họ và tên của một Có thể sử dụng ví dụ trong SGK để học sinh dễ theo dõi, gõ trước chương trình để có thể người ? - Lưu trữ và xử lý bảng kết quả thi tốt sử dụng cho các phần tiếp theo . nghiệp ? HS : Đưa ra các phương án để trả lời cho 3 câu hỏi trên . GV : Các ngôn ngữ lập trình thường cung cấp một số kiểu dữ liệu được xây dựng từ Chuong IV Kiể u dữ liệ u có cấu trúc Page 1
  • 2. những kiểu dữ liệu chuẩn gọi là kiểu dữ liệu có cấu trúc . Chương này chúng ta sẽ tìm hiểu một Trong lập trình thường có 2 loại mảng : số kiểu dữ liệu trong ngôn ngữ Pascal để trả - Mảng một chiều . lời 3 câu hỏi trên . - Mảng hai chiều . GV : Đưa ra ví dụ, cần lập lập trình xử lý 1. Kiểu mảng một chiều một dãy số nguyên, hãy tìm cách lưu trữ một dãy số nguyên trong khi lập trình ? - Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, mảng được đặt tên và Bằng cách nào để lưu trữ được thông tin mỗi phần tử mang một chỉ số. Để mô tả dưới dạng bảng khi lập trình ? mảng một chiều ta cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử HS : Đưa ra ý kiến . . GV : Đánh giá ý kiến của học sinh, sau đó Với mảng một chiều ta quan tâm đến : đưa ra mục đích của việc sử dụng cấu trúc - Tên mảng một chiều . mảng trong chương trình . - Số lượng phần tử trong mảng . - Kiểu dữ liệu của phần tử . GV : Đưa ra khái niệm mảng một chiều và - Cách khai báo biến mảng một chiều . một số yếu tố liên quan trong lập trình nói - Cách truy cập vào từng phần tử của chung . mảng . Xét ví dụ : Nhập vào nhiệt độ trung bình mỗi ngày trong tuần . Tính và đưa ra màn hình nhiệt độ trung bình của cả tuần và đếm số ngày có nhiệt độ lớn hơn nhiệt độ trung GV : Đi sâu phân tích hai chương trình để bình này . cho học sinh nhận thấy sự tiện lợi khi sử dụng mảng . Quan sát hai chương trình viết bằng ngôn ngữ Pascal cùng để giải bài toán trên . - Chương trình 1 : Không sử dụng kiểu mảng . - Chương trình 2 : Sử dụng kiểu mảng HS : Trong khi giáo viên phân tích hai một chiều . chương trình, học sinh sẽ đưa ra ý kiến nhận xét về 2 chương trình. HS : Trong khi giáo viên phân tích hai a> Khai báo mảng một chiều Trong ngôn ngữ Pascal, mảng một chiều chương trình, học sinh sẽ đưa ra ý kiến Chuong IV Kiể u dữ liệ u có cấu trúc Page 2
  • 3. nhận xét về 2 chương trình. được khai báo bằng hai cách như sau : Cách 1 : Var <Tên mảng> : Array[kiểu chỉ số] of <kiểu phần tử> ; Cách 2 : Type <Tên kiểu mảng> = Array [<kiểu chỉ GV : Đưa ra cách khai báo mảng một chiều số>] of <kiểu phần tử> ; trong ngôn ngữ Pascal, giải thích ý nghĩa Var <Tên mảng> : <tên kiểu mảng> ; của các từ khóa mới . Trong đó : GV : Khai báo bằng cách nào tiện lợi hơn ? - Type là từ khóa dùng để khai báo biến, Array là từ khóa để khai báo mảng . - Kiểu chỉ số thường là đoạn số nguyên HS : Thường thì học sinh trả lời cách 1 tiện liên tục có n1..n2, với n1 là chỉ số đầu lợi hơn ? và n2 là chỉ số cuối. - Kiểu thành phần là kiểu dữ liệu của phần tử mảng . GV : Tùy trường hợp cụ thể mà ta dùng - Để truy cập vào phần tử mảng ta viết : cách 1 hay cách 2 nhưng thông thường ta - <Tên biến mảng>[Chỉ số] sử dụng cách 1 . Ví dụ : A[20] Truy cập phần tử mang chỉ số 20 trong mảng A . GV : Sử dụng một sồ hình ảnh trực quan Ví dụ : minh họa cho học sinh cấu trúc mảng và Khai báo biến mảng thông qua kiểu chỉ số của phần tử mảng : Type ArrayInteger=Array[1..100] of Integer; Chỉ 1 2 3 4 5 6 7 8 ArrayReal=Array[1.50] of Real; số Var A : Array[1..50]; Giá 5 81 62 18 26 41 24 53 B : Array[1..50] of Real; trị 3 Đưa ra một số khai báo mảng trong Pascal . Khai báo mảng trực tiếp : Var A : Array[1..100] of Integer ; B : Arrat[1..50] of Real ; IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 3
  • 4. Tiết 22 Kiểu mảng (T) Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: Cho biết cách khai báo mảng một chiều? . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung b> Một số ví dụ : Ví dụ 1 : Tìm phần tử lớn nhất của một dãy GV : Đưa ra ví dụ . số nguyên . HS : Xây dựng thuật toán để giải bài toán - Input : Số nguyên dương N và dãy số A1, A2, ….., AN (thuật toán đã học ở lớp 10) . - Output : Chỉ số và giá trị của số lớn nhất trong dãy GV soạn sẵn chương trình và cho học sinh - Ý tưởng : quan sát chương trình . + Đặt số A1 là số lớn nhất (max) + Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max = A[i] vả lưu lại vị trí i . Nếu có nhiều thời gian, giáo viên sẽ tiến Chương trình như sau : hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra các thao tác cần phải Program timmax ; thực hiện khi viết chương trình . Uses crt ; var a : array[1..250] of integer ; n,i,max,csmax : Integer ; Begin clrscr ; Write('Nhap n = ') ; Readln(n) ; Chuong IV Kiể u dữ liệ u có cấu trúc Page 4
  • 5. For i := 1 to n do Begin Write('a[',i,'] = ') ; readln(a[i]) ; End ; max := a[i] ; csmax := 1 ; For i := 2 to n do If a[i] > max then Begin max := a[i] ; csmax :=i ; End ; Writeln('Gia tri lon nhat : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ; Readln ; End . Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng thuật toán tráo đổi . GV : Đưa ra ví dụ, nhắc lại ý tưởng của - Input : Số nguyên dương N và dãy số thuật toán . A1, A2, …, AN - Output : Dãy A được sắp xếp theo thứ tự không giảm . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) . - Ý tưởng : + Đổi để đưa số lớn nhất về vị trí cuối cùng . GV: soạn sẵn chương trình và cho học sinh + Làm tương tự đối với những số còn quan sát chương trình . lại . Chương trình như sau : Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể Program sapxep ; dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ; từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ; trình . n,i,j,tg : Integer ; Begin Chuong IV Kiể u dữ liệ u có cấu trúc Page 5
  • 6. clrscr ; Write('Nhap so phan tu mang n = ') ; Readln(n) ; For i := 1 to n do Begin Write('A[',i,'] = ') ; readln(A[i]) ; End ; For j := n downto 2 do Begin For i := 1 to j-1 do If A[i] > A[i+1] then Begin tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ; End ; Writeln('day sau khi sap xep : ') ; For i := 1 to n do write(a[i]:8) ; readln ; End . Writeln('chi so ptu lon nhat : ',csmax); readln ; End . IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 6
  • 7. Tiết 23 Kiểu mảng (T) Ngày soạn:...../......; giảng:..../...... I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C5: 11C6: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh 11C3: 11C7: Ngày 11C4: Nội dung Ví dụ 3 : Tìm kiếm nhị phân . GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học ở lớp 10) . - Input : Dãy số A1, A2,………, AN đã được sắp xếp tăng dần . - Output : Có hay không chỉ số i mà A[i] = k hoặc thông báo không tìm thấy . GV soạn sẵn chương trình và cho học sinh - Ý tưởng : quan sát chương trình . Xem lại thuật toán tìm kiếm nhị phân trong SGK lớp 10 . Chương trình như sau : Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể Program sapxep ; dễ dàng nhận ra việc chuyển đổi ngôn ngữ Uses crt ; từ ngôn ngữ thuật toán sang ngôn ngữ lập var A : Array[1..250] of integer ; trình . n,i,k : Integer ; dau,cuoi,giua : Integer ; TK : boolean ; Begin clrscr ; Chuong IV Kiể u dữ liệ u có cấu trúc Page 7
  • 8. Write('Nhap so ptu mang n = ') ; Readln(n) ; For i := 1 to n do Begin Write('A[',i,'] = ') ; readln(A[i]) ; End ; Write('nhap so can tim k : ') ; Readln(k); dau := 1 ; cuoi := n ; TK := false ; while (dau <= cuoi) and Not TK Do Begin giua := (dau+cuoi) div 2 ; If A[giua] = k then TK := true Else If a[giua]>k then cuoi := giua - 1 Else dau := giua + 1 ; End ; If TK then write('Chi so la : ',giua) else write(' Khong tim thay '); readln ; End . 2. Kiểu mảng 2 chiều : GV : Quay lại ví dụ về lưu trữ dữ liệu dạng - Mảng hai chiều là một bảng các phần tử bảng để các em nhận ra nhu cầu phải sử cùng kiểu . dụng mảng 2 chiều trong lập trình . Với mảng hai chiều ta quan tâm đến : - Tên kiểu mảng hai chiều . - Số lượng phần tử của mỗi chiều trong mảng . - Kiểu dữ liệu của phần tử . - Cách khai báo biến mảng hai chiều . - Cách truy cập vào từng phần tử của mảng . Chuong IV Kiể u dữ liệ u có cấu trúc Page 8
  • 9. a> Khai báo mảng hai chiều - Trong ngôn ngữ Pascal, mảnh hai chiều được khai báo như sau : GV : Khai báo cách nào tiện lợi hơn (tương tự mảng 1 chiều) ? Cách 1 : Khai báo trực tiếp Var : <Tên mảng> : Array[kiểu chỉ số dòng, HS : Thường thì học sinh vẫn chọn cách 1 . kiểu chỉ số cột] of < kiểu phần tử> ; GV : Tùy theo trường hợp cụ thể nhưng Cách 2 : Khai báo gián tiếp thông qua khai thường thì cách 1 hay được dùng hơn . báo kiểu mảng Type <Tên kiểu mảng> = Array[kiểu chỉ số dòng, kiểu chỉ số cột] of <kiểu phần tử> ; Var <Tên mảng> : <Tên kiểu mảng> ; Ví dụ : Khai báo biến mảng thông qua kiểu mảng : Type ArrayInteger = Array[1..10,1..15] of Integer GV : Khi khai báo mảng 2 chiều cần chú ý ; điều gì ? ArrayReal=Array[1..50,1..100] of Real ; HS : Tìm câu trả lời, GV gợi ý để các em Var A : ArrayInteger ; chỉ ra được chỉ số của mảng, số dòng, số B : ArrayReal ; cột và kiểu của mỗi phần tử trong mảng . Khai báo mảng trực tiếp : Var A : Array[1..10,1..15] og Integer ; B : Aarray[1..50,1..100] og Real ; Cách truy cập vào phần tử của mảng hai GV : Gọi một số học sinh lên khai báo một chiều : số biến mảng một chiều theo yêu cầu của Chuong IV Kiể u dữ liệ u có cấu trúc Page 9
  • 10. giáo viên . <Tên mảng>[chỉ số dòng, chỉ số cột] Ví dụ : A[1,3], B[23,66],…… Minh họa bằng hình ảnh mảng 2 chiều và chỉ số các phần tử mảng hai chiều cũng như cách viết truy cập phần tử mảng . IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 10
  • 11. Tiết 24 Kiểu mảng (T) Ngày soạn:...../......; giảng:..../...... I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C5: 11C6: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh GV cho học sinh quan sát chương trình và giải thích các lệnh trong chương trình, chú ý đi sâu vào các lệnh lặp để các em nhận ra thường thì ta sử dụng vòng lặp for - do để duyệt qua các phần tử mảng . 11C3: 11C7: Ngày 11C4: Nội dung b> Một số ví dụ : Ví dụ 1 : Chương trình sau đưa ra màn hình bảng cửu chương . Program cuuchuong; GV nên soạn sẵn chương trình và cho các Uses crt ; em quan sát chương trình, và chạy thử var A : Array[1..9,1..9] of Integer ; chương trình trên máy để các em tiện theo i, j : Byte ; dõi . Begin Clrscr ; Program Timkiem; Uses crt; Writeln('Bang cuu chuong 1 -> 9 : '); var A : Array[1..100,1..100] of Integer; Writeln ; i,j,n,m : Byte ; For i := 1 to 9 do k,d : integer ; For j := 1 to 9 do A[i,j] := i*j ; Begin For i := 1 to 9 do Clrscr ; Begin Write(' Nhap so dong, so cot cua mang : ') For j := 1 to 9 do Write(a[i,j]:4); ; Writeln ; Chuong IV Kiể u dữ liệ u có cấu trúc Page 11
  • 12. Readln(m,n); For i := 1 to m do For j := 1 to n do Begin Write(' A[',i,',',j,'] = '); Readln(A[i,j]); End ; Writeln(' Mang vua nhap vao la : '); Writeln; For i := 1 to m do Begin For j := 1 to n do Write(a[i,j]:4) ; Writeln; Writeln; End; Writeln ; End ; Readln ; End . Ví dụ 2 : Chương trình sau nhập vào một mảng 2 chiều và số nguyên k, sau đó in ra các phần tử có giá trị nhỏ hơn k của mảng . Write(' Nhap gia tri k : '); Readln(k) ; d := 0 ; For i := 1 to m do For j := 1 to n do If a[i,j] < k then Begin write('So nho hon ',k,' la '); write(a[i,j]:8); d := d+1 ; End ; If d = 0 then Write('Khong co ptu nao nho hon ',k); readln; End . IV. Củng cố:  Nhắc lại một số khái niệm mới .  Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 phần đồng thời gọi 4 học sinh lên bảng viết lại các cách khai báo, truy xuất, và hiển thị để nhập dữ liệu .  Ra bài tập về nhà . Chuong IV Kiể u dữ liệ u có cấu trúc Page 12
  • 13. V. Dặn dò: Đọc lại các kiến thức đã học trong bài 11. Chuẩn bị các chương trình để chạy trong giờ thực hành sau. Chuong IV Kiể u dữ liệ u có cấu trúc Page 13
  • 14. Tiết 25 Bài tập và thực hành 3 Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng; 2. Kỹ năng: + Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn; + Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính. + Tổ chức những hoạt động trong phòng máy để HS có được kĩ năng cơ bản trong làm việc với kiểu mảng (một chiều) trong lập trình, cụ thể là: - Khai báo kiểu dữ liệu mảng; - Nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị các phần tử của mảng; - Duyệt qua tất cả các phần tử của mảng để sử lí từng phần tử. + Cung cấp cho HS 3 thuật toán cơ bản và đơn giản thường gặp với dữ liệu kiểu mảng: - Tính tổng các phần tử thỏa mãn điều kiện nào đó; - Đếm số phần tử thỏa mãn điều kiện nào đó; - Tìm phần tử lớn nhất (hay nhỏ nhất) của mảng cùng với vị trí của nó trong mảng. + Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình. II. Chuẩn bị của GV và HS: 1. Giáo viên: Phòng máy, pascal. 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung HS: phải hiểu được chương trình đã viết Bài 1: Tạo mảng A gồm n (n<=100) số sẵn ở câu a) và thấy được kết quả chạy nguyên, mỗi số có trị tuyệt đối không vượt chương trình này, trên cơ sở đó tìm ra cách quá 300. Tính tổng các phần tử của mảng là giải quyết vấn đề đặt ra ở câu b. bối số của một số nguyên dương k cho GV: cần cho HS thấy được điểm khác nhau trước. Chuong IV Kiể u dữ liệ u có cấu trúc Page 14
  • 15. cơ bản của các chương trình ở câu a và câu b. Thủ tục randomize khởi tạo bộ lấy số ngẫu nhiên trước khi dùng lệnh random(n) để lấy một số nguyên ngẫu nhiên trong phạm vi từ 0 đến n-1. GV: đưa ra một số câu hỏi (phù hợp với trình độ HS ở mỗi lớp), hướng dẫn HS tìm hiểu chương trình: - MyArray là tên một kiểu dữ liệu hay tên một biến? - Vai trò của nmax và n khác nhau ntn? - Những dòng lệnh nào nhằm tạo ra mảng A? - Lệnh gán: A[i]:=random(300)random(300); có ý nghĩa gì? ………. IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc a) Hãy tìm hiểu và chạy thử chương trình sau đây: Program Sum1; (tr 63 SGK) b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhằm sửa đổi chương trình trong câu a) để có được chương trình đưa ra số các số dương và số các số âm trong mảng. posi, neg : integer; posi:= 0; neg:= 0; if A[i] > 0 then posi:= posi + 1 else if A[i] < 0 then neg:=neg+1; writeln(posi:4,neg:4); Page 15
  • 16. Tiết 26 Bài tập và thực hành 3(T) Ngày soạn:...../......; giảng:..../...... I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Phòng máy, pascal. 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C5: 11C6: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh GV: Nêu gợi ý cho HS thấy được chương trình 2a thể hiên thuật toán tìm phần tử lớn nhất. GV: Hướng dẫn HS tìm hiểu vai trò của biến j qua các câu lệnh của bài toán. GV: Có thể cho HS một ví dụ bộ dữ liệu input nhỏ và yêu cầu HS mô phỏng việc chạy chương trình thể hiện thuật toán trên giấy nháp. 11C3: 11C7: Ngày 11C4: Nội dung Bài 2: Viết chương trình tìm phần tử có giá trị lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất. a) Tìm hiểu chương trình sau đây: Program max; Const nmax=100; Type myarray=array[1..nmax] of interger; Var a:myarray; HS: Tích cực tìm hiểu bài toán, thực hiện n, i, j:integer; bài toán trên máy tính, sửa lỗi chạy chương Begin trình. Write(‘Nhap so luong phan tu day, n=’); Readln(n); For i:= 1 to n do Begin Write(‘ phan tu thu ‘,i,’ =’); 1 readln(a[i]); 2 end; j:=1; for i:=2 to n do if a[i]>a[j] then j:=i; write(‘ chi so:’,j,’ Gia tri:’,a[j]:4); Chuong IV Kiể u dữ liệ u có cấu trúc Page 16
  • 17. readln end. Nếu còn thời gian thì HS hoàn thành phần b) Chỉnh sửa chương trình trên để đưa ra chỉ b) dưới sự hướng dẫn của GV. số các phần tử có cùng giá trị lớn nhất. IV. Củng cố: Có thể thay thế câu lệnh a[i]:=random(300)-random(300) cho hai lệnh 1,2 V. Dặn dò: Tiết 27 Bài tập và thực hành 4 Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: - Củng cố cho HS những kiến thức cơ bản đã có khi lập trình với kiểu dl mảng; - Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi); 2. Kỹ năng: - Rèn luyện kĩ năng diễn đạt thuật toán sắp xếp bằng chương trình sử dụng dữ liệu kiểu mảng; - Rèn luyện cho HS một ý thức cần có của người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể; - Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình. II. Chuẩn bị của GV và HS: 1. Giáo viên: Phòng máy, pascal. 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV: Bài này giúp chúng ta củng cố thuật Bài 1: toán sắp xếp (bằng tráo đổi) và kĩ năng cài a) Hãy tìm hiểu và chạy thử chương trình đặt bằng ngôn ngữ lập trình. thực hiện thuật toán sắp xếp dãy số nguyên bằng thuật toán tráo đổi với các giá trị khác HS: Tích cực tìm hiểu bài toán, thực hiện nhau của n dưới đây. Qua đó, nhận xét thời Chuong IV Kiể u dữ liệ u có cấu trúc Page 17
  • 18. bài toán trên máy tính, sửa lỗi chạy chương gian chạy của chương trình. trình. (chương trình SGK – t65) b) Khai báo thêm biến Dem và bổ xung vào GV: Yêu cầu HS sửa lại một chỗ để có chương trình những câu lệnh cần thiết để chương trình sắp xếp các phần tử theo thứ biến Dem tính số lần thực hiện tráo đổi tự không tăng. trong thuật toán. Đưa kết quả ra màn hình. HS: Chạy thử để kt kết quả. GV: Để đáp ứng yêu cầu ở câu b, đưa ra một số câu hỏi để gợi ý. HS: Trả lời các câu hỏi của GV và thực hiện theo yêu cầu ở câu b. IV. Củng cố: V. Dặn dò: Tiết 28 Bài tập và thực hành 4 (T) Ngày soạn:...../......; giảng:..../...... I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Phòng máy, pascal. 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C5: 11C6: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh HS: Tích cực tìm hiểu bài toán, thực hiện bài toán trên máy tính, sửa lỗi chạy chương trình. GV: Sửa lỗi cho HS trong quá trình gõ và chạy chương trình. Giải thích những thắc mắc về bài toán mà HS đưa ra. Chuong IV Kiể u dữ liệ u có cấu trúc 11C3: 11C7: Ngày 11C4: Nội dung Bài 2: Hãy đọc và tìm hiểu những phân tích để viết chương trình giải bài toán: Cho mảng A gồm n phần tử. Hãy viết chương trình tạo mảng B[1..n], trong đó B[i] là tổng i phần tử đầu tiên của A. Chương trình: SGK-t66. Để ý rằng ta có các hệ thức sau: B[1] = A[1] B[i] = B[i-1] + A[i]; Page 18
  • 19. Do đó, ta thay đoạn chương trình bởi hai lệnh sau: B[1] = A[1]; For i:= 2 to n do B[i]:= B[i-1]+A[i]; Với hai lệnh này máy chỉ phải thực hiện n-1 phép cộng, trong khi với đoạn chương trình trong SGK máy phải thực hiện n(n+1)/2 phép cộng. GV: Nhờ việc phân tích như trên ta tiết kiệm được một lượng tính toán đáng kể. IV. Củng cố: Tuy tốc độ tính toán của máy tính nhanh nhưng có giới hạn. Do đó, khi viết chương trình ta nên tìm cách viết sao cho chương trình thực hiện càng ít phép toán càng tốt. V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 19
  • 20. Tiết 29 Kiểu xâu Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: - Biết xâu là một dãy ký tự (có thể coi xâu là một mảng một chiều) . - Biết cách khai báo xâu, truy cập phần tử của xâu . 2. Kỹ năng: - Sử dụng được một số thủ tục, hà thông dụng về xâu . - Cài đặt được một số chương trình đơn giản có sử dụng xâu . II. Chuẩn bị của GV và HS: 1. Giáo viên: Phòng máy, pascal. 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV : Để lưu trữ và xử lý Họ tên của một Một số khái niệm người, các kiểu dữ liệu đã học có đáp ứng - Xâu là một dãy kí tự trong bảng mã ASCII . được ? - Mỗi kí tự được gọi là một phần tử của xâu . - Số lượng kí tự trong xâu được gọi là độ HS : Đưa ra một số phương án . dài của xâu . - Xâu có độ dài bằng 0 gọi là xâu rỗng. GV : Phân tích các phương án của học - Tham chiếu tới phần tử trong xâu được sinh, từ đó đưa ra yêu cầu cần sử dụng một xác định thông qua chỉ số của phần tử kiểu mới : Kiểu xâu . trong xâu . - Chỉ số phần tử trong xâu thường được đánh số là 1 . - Trong ngôn ngữ Pacal, tham chiếu tới GV : Giới thiệu một số khái niệm và thao phần tử thường được viết : tác thường dùng khi làm việc với xâu ký tự <Tên biến xâu>[chỉ số] trong lập trình nói chung . Cách khai báo và xử lí xâu trong ngôn Chuong IV Kiể u dữ liệ u có cấu trúc Page 20
  • 21. ngữ Pascal : GV : Đây là cách khai báo trong ngôn ngữ Pascal, trong các ngôn ngữ khác nhau có thể có cách khai báo khác nhau . Do đó khi viết chương trình bằng ngôn ngữ nào cần tìm hiểu rõ các đối tượng của ngôn ngữ đó . Khai báo biến xâu : Pascal sử dụng từ khóa STRING để khai báo xâu . Độ dài tối đa của xâu được viết trong [ ] sau từ khóa STRING . Khai báo như sau : Var <tên biến> : String[độ dài lớn nhất của xâu] ; Ví dụ : Var Ten : String[10] ; Ho_dem : String[50] ; Que : String ; Độ dài tối đa của xâu phụ thuộc vào ngôn ngữ lập trình, thường là 255 ký tự . Cách viết hằng xâu trong các ngôn ngữ khác nhau cũng có sự khác nhau . Chú ý : - Nếu không khai báo độ dài tối đa cho biến xâu kí tự thì độ dài ngầm định của xâu là 255 . - Độ dài lớn nhất của xâu là 255 ký tự . - Hằng xâu kí tự được đặt trong cặp nháy đơn ‘ ’ . Các thao tác xử lí xâu Xét ví dụ như sau : Có xâu kí tự : ‘ nGuyen vaN A ’ - Với các xâu kí tự có các phép phép xâu và phép so sánh hai xâu kí tự . - Phép ghép xâu : Kí hiệu bằng dấu cộng + . Hỏi cần có các thao tác gì để chỉnh sửa xâu kí tự này ? (cần đưa xâu về dạng ‘Nguyen Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là ‘Ha Van A’) Noi’ HS : Đưa ra ý kiến của mình . Phép so sánh : <, <=, >, >=, = , <>, Pascal GV : Phân tích ý kiến và gợi ý để các em tự động so sánh lần lượt từ kí tự từ trái sang phải . nhận ra cần : - Xóa bớt một số dấu cách . - Chuyển chữ hoa về chữ thường và Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ > ‘ABB’, ‘ABC’ <’ABCD’ Chuong IV Kiể u dữ liệ u có cấu trúc Page 21
  • 22. ngược lại . GV : Đưa ra một số câu hỏi : - Làm sao biết một ký tự là dấu cách ? - Làm sao để xóa đi một vài kí tự ? - Làm sao để thêm vào một xâu một vài kí tự ? - Làm sao để có được chữ in hoa tương ứng với chữ thường. - Làm sao có được chữ cái thường tương ứng với chữ hoa ? - Làm sao biết xâu hiện có bao nhiêu kí tự ? Một số thủ tục chuẩn dùng để xử lí xâu : Từ đó đưa ra các thủ tục chuẩn và hàm chuẩn của Pascal thường dùng để xử lí xâu . Ứng với mỗi thủ tục hoặc hàm, giáo viên lấy ví dụ trong một chương trình Pascal cụ thể để các em hiểu được ý nghĩa các thủ tục và hàm này . - Delete(St,vt,n) xóa n kí tự của xâu St bắt đầu từ vị trí vt . - Insert(S1,S1,vt) chèn sâu S1 vào S2 bắt đầu từ vị trí vt của S2 - Val(St,x,m) Đổi giá trị xâu St thành số ghi giá trị vào biến X, nếu không đổi được thì vị trí gây lỗi ghi trong m, nếu đổi thành công thì m = 0 - Str(X,St) chuyển số X thành xâu kí tự lưu trong St . Trong môi trường soạn thảo của Pascal, giáo viên chỉ cần làm một chương trình đơn giản có sử dụng một trong các thủ tục hoặc Một số hàm chuẩn : hàm này để các em theo dõi . - Copy(St,vt,n) sao chép từ xâu St n kí tự từ vị trí vt . - Pos(S1,S2) tìm vị trí xuất hiện đầu tiên của S1 trong S2 . - Length(St) : cho độ dài xâu St . - Upcase(ch) : cho chữ cái viết hoa Chuong IV Kiể u dữ liệ u có cấu trúc Page 22
  • 23. tương ứng với chữ thường trong ch . - CHR(X) : cho kí tự có mã X trong bảng mã ASCII . - Ord(ch) : cho mã của kí tự ch trong bảng mã . IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 23
  • 24. Tiết 30 Kiểu xâu (T) Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng . 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung Giáo viên soạn sẵn các ví dụ này để tiện Một số ví dụ : cho học sinh theo dõi trên màn hình cũng như việc chạy thử và không làm mất thời gian ngồi viết chương trình . VD 1 : Program vd1 ; Uses crt ; Với mỗi ví dụ, giáo viên đi sâu vào câu Var s1,s2 : String ; lệnh trực tiếp đáp ứng yêu cầu của ví dụ, như vậy các em sẽ tiếp thu nhanh hơn . Begin Clrscr ; Write('Nhap xau thu 1 : ') ; Ví dụ 1 : Nhập 1 xâu, viết ra màn hình xâu Readln(s1) ; dài hơn . Write('Nhap xau thu 2 : ') ; Readln(s2) ; If length(s1) > Length(s2) then Write(s1) else Write(s2); Readln ; Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự End . đầu tiên của xâu S1 có trùng với ký tự cuối cùng của xâu S2 hay không ? VD 2 : Chuong IV Kiể u dữ liệ u có cấu trúc Page 24
  • 25. Program vd2 ; Uses crt ; Var s1,s2 : String ; x : Byte ; Begin Clrscr ; Write('Nhap xau thu 1 : '); Readln(s1) ; Write('Nhap xau thu 2 : '); Readln(s2) ; x := length(s2) ; If s1[1] = s2[x] then Write('Trung nha') else Write('Khac nhau'); Readln ; Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu End . đó theo thứ tự ngược lại của các ký tự trong xâu . VD 3 : Program vd3 ; Uses crt ; Var i,k : Byte ; a : String ; Begin Clrscr ; Write('Nhap xau : ') ; Readln(a) ; k := length(a) ; For i := k downto 1 do Write(a[i]) ; Readln ; End . Ví dụ 4 : Nhập 1 xâu, viết ra màn hình xâu đó nhưng đã được bỏ tất cả các ký tự là dấu VD 4 : cách . Program vd4 ; Chuong IV Kiể u dữ liệ u có cấu trúc Page 25
  • 26. Uses crt ; Var i,k : Byte ; a,b : String ; Begin Clrscr ; Write('Nhap xau : ') ; Readln(a) ; k := length(a) ; b :='' ; For i := 1 to k do if a[i] <> '' then b := b+a[i] ; Write(b) ; Readln ; End . Ví dụ 5 : Nhập 1 xâu, viết ra màn hình xâu VD 5 : gồm các ký tự số của xâu đó . Program Xulixau ; Uses crt ; Var s1,s2 : String ; i : Byte ; Begin Clrscr ; Write('Nhap xau s1 : ') ; Readln(s1) ; s2 := '' ; For i := 1 to length(s1) do If ('0'<s1[i]) and (s1[i]<='9') then s2 := s2 + s1[i] ; Write(s2); Readln ; End . IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 26
  • 27. Tiết 31 Bài tập và thực hành 5 Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu. 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng . 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV: Đưa ra ví dụ hoặc yêu cầu HS cho ví dụ về xâu đối xứng và xâu không đối xứng. Bài 1: Nhập vào từ bàn phím một xâu. HS: Tích cực tìm hiểu bài toán, thực hiện Kiểm tra xâu đó có phải là xâu đối xứng bài toán trên máy tính, sửa lỗi chạy chương không. trình. a) Chạy thử chương trình sau: var x,i : byte; a,p: string; GV: Sửa lỗi cho HS trong quá trình gõ và begin chạy chương trình. Giải thích những thắc write(‘ Nhap vao xau:’); mắc về bài toán mà HS đưa ra. readln(a); x:=length(a); p:=’’; for i:=x downto 1 do p:=p+a[i]; if a=p then write(‘ Xau doi xung’) else write(‘Xau khong doi xung’); readln end. b) Hay viết lại chương trình trên, trong đó GV: Không cần thiết phải tạo một xâu mới không dùng biến xâu p. để so sánh hai xâu mà chỉ so sánh các cặp Chuong IV Kiể u dữ liệ u có cấu trúc Page 27
  • 28. kí tự ở vị trí đối xứng nhau để kết luận xâu đó có đối xứng không IV. Củng cố: V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 28
  • 29. Tiết 32 Bài tập và thực hành 5 (T) Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: Củng cố cho HS những hiểu biết về kiểu xâu. 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng . 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung Bài 2: Cho xâu s. Viết chương trình đếm số từ có trong xâu s này? Program Demtu; Var s:string; GV: Để giải quyết được bài toán này thì d, x, i:byte; trước hết ta phải cộng thêm một kí tự trống Begin vào đầu xâu s. Write(‘ Nhap xau:’);readln(s); s:= ‘ ‘+s; x:=length(s); GV: Khi đó điều kiện để xác định xem đâu for i:=1 to x do là một từ là gì? if (s[i]=’ ‘ ) and (s[i+1]<>’ ‘) then d:=d+1; write(‘ So tu co trong xau la:’,d); HS: Trả lời câu hỏi. readln end. GV: Kết luận và đưa ra hướng giải quyết bài toán. Khi đó để kiểm tra xem đâu là một từ thì ta phải xét điều kiện: xâu s tại vị trí thứ i là kí tự trống, đồng thời tại vị trí thứ i+1 phải là kí tự khác trống. HS: suy nghĩ và đưa ra phương hướng giải Sử dụng phương pháp chuẩn hóa xâu s. Từ Chuong IV Kiể u dữ liệ u có cấu trúc Page 29
  • 30. quyết vấn đề này. đó có thể tìm ra số từ có trong xâu s này? IV. Củng cố: V. Dặn dò: Chuẩn bị trước bài tập trong SBT. Chuong IV Kiể u dữ liệ u có cấu trúc Page 30
  • 31. Tiết 33 Bài tập Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu có cấu trúc. 2. Kỹ năng: - Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu mảng và dữ liệu kiểu xâu. - Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với những kiểu dữ liệu có cấu trúc. II. Chuẩn bị của GV và HS: 1. Giáo viên: Giáo án, SGK, SBT . 2. Học sinh: Vở BT, SBT III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV: Qua quá trình chuẩn bị bài tập trong SBT từ nhà, có ai có thắc mắc về bài tập nào không? HS: Đưa ra những vướng mắc cần giải đáp. GV: Giải đáp các thắc mắc của HS. Chữa bài tập trong SBT GV: Gọi một số HS lên chữa một số bài tập tiêu biểu (cả bài tập phần mảng và phần xâu). HS: Lên bảng chữa bài. HS khác nhận xét bài làm của bạn. Chuong IV Kiể u dữ liệ u có cấu trúc Page 31
  • 32. GV: nhận xét và chỉnh sửa lại bài tập một cách hoàn chỉnh. IV. Củng cố: V. Dặn dò: chuẩn bị trước bài 13. Tiết 34 Kiểu bản ghi Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: - Biết khái niệm kiểu bản ghi . - Biết cách khai báo bản ghi, truy cập trường của bản ghi . 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng . 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung Một số khái niệm Xét ví dụ sau : Viết chương trình dùng để quản lí các - Kiểu bản ghi được dùng để mô tả cho thí sinh của một kỳ thi tuyển sinh . các đối tượng có cùng một số thuộc tính Chương trình của chúng ta cần quản lí mà các thuộc tính có thể có các kiểu dữ được : liệu khác nhau . + SBD của thí sinh, - Bản ghi thường được gọi là Record, mỗi + Họ tên thí sinh, Record sẽ lưu trữ dữ liệu về một đối + Giới tính, tượng cần quản lí . + Điểm của các môn … - Mỗi thuộc tính của đối tượng tương ứng với một trường của bản ghi . Các trường GV : Đưa ra một số câu hỏi sau : khác nhau có thể có dữ liệu khác nhau . - Làm thế nào để quản lý toàn bộ - Các ngôn ngữ lập trình thường cho cách thông tin trên của học sinh ? để xác định : - Mỗi thông tin trên có kiểu dữ liệu là + Tên kiểu bản ghi . Chuong IV Kiể u dữ liệ u có cấu trúc Page 32
  • 33. gì ? HS : Có thể quản lý mỗi dữ kiện trên là một mảng một chiều + + + + Tên các trường . Kiểu dữ liệu của trường . Cách khai báo biến . Cách tham chiếu đến trường . Cách khai báo và sử dụng kiểu bản ghi Ngôn ngữ lập trình bậc cao có cách tốt hơn trong ngôn ngữ Pascal để quản lý dữ liệu trên -> Bản ghi . 1. Khai báo GV lấy một bảng điểm của học sinh rồi chỉ rõ : Mỗi hàng ta gọi là một bản ghi, mỗi cột Để khai báo biến bản ghi, thường khai báo là một trường . một kiểu bản ghi sau đó khai báo biến bản ghi . GV : Mỗi ngôn ngữ có một cách khai báo Cách khai báo kiểu : kiểu bản ghi khác nhau . Type <Tên kiểu bản ghi>=Record <Tên trường 1> : <Kiểu trường 1> ; ……… ……… Ngôn ngữ Pascal không cho bạn khai báo <Tên trường n> : <Kiểu trường n> ; biến bản ghi trực tiếp mà phải khai báo biến End ; bản ghi thông qua khai báo kiểu bản ghi . Trước hết phải khai báo kiểu bản ghi sau đó biến bản ghi được khai báo thông qua kiểu Cách khai báo biến : bản ghi này . GV : Làm thế nào để có thể khai báo được Var <Tên biến> : <Tên kiểu bản ghi> ; nhiều biến bản ghi có cùng một kiểu ? Var <Tên mảng> : Array[1..n] Of <Tên HS : GV sẽ gợi ý để học sinh đưa ra đó là kiểu bản ghi> ; sử dụng kiểu mảng trong đó phần tử mảng sẽ có kiểu bản ghi . Type Hocsinh = Record Hoten : String[30] ; Ngaysinh : String[10] ; Ví dụ về khai báo bản ghi . Khai báo một kiểu bản ghi để xử lý NamNu :Boolean ; bảng kết quả thi của các học sinh . Toan,Ly, Hoa, Van, Su, Dia : Real ; Mỗi bản ghi sẽ bao gồm : Họ và tên của End ; học sinh (Hoten), ngày tháng năm sinh(Ngaysinh), Giới tính (NamNu), và Var A, B : Hocsinh ; điểm thi các môn của mỗi học sinh (Toan, Lop : Array[1..100] Of Hocsinh ; Ly, Hoa, Van, Su, Dia,Tin) . Để truy cập vào từng trường của bản ghi, ta Chuong IV Kiể u dữ liệ u có cấu trúc Page 33
  • 34. Hãy xác định kiểu dữ liệu cho các trường viết : trên (Mỗi nội dung trên là một trường của <Tên biến bản ghi> . <Tên trường> bản ghi) GV : Khi có nhu cầu thay đổi thông tin Ví dụ : trong từng trường, làm thế nào để truy cập A.Hoten thông tin vào từng trường của bản ghi ? B.Ngaysinh Lop[i].Toan Mỗi ngôn ngữ có một cách truy cập khác Lop[i].Ly nhau nhưng thường được viết là : ……… với i là chỉ số nào đó của mảng <Tên biến bản ghi>.<tên trường> Lop GV: Đưa ra một số ví dụ . IV. Củng cố: V. Dặn dò: Tiết 35 Kiểu bản ghi (T) Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: - Biết khái niệm kiểu bản ghi . - Biết cách khai báo bản ghi, truy cập trường của bản ghi . 2. Kỹ năng: II. Chuẩn bị của GV và HS: 1. Giáo viên: Máy chiếu, máy tính, phông chiếu hoặc bảng . 2. Học sinh: III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV: Vì bản ghi có nhiều trường nên việc 2. Gán giá trị gán giá trị cho bản ghi phức tạp hơn các biến khác . Có 2 cách để gán giá trị cho bản ghi . Chuong IV Kiể u dữ liệ u có cấu trúc Page 34
  • 35. Khi nhập thông tin vào từ bàn phím, ta thường phải nhập cho từng trường . Ví dụ : CHương trình sau được viết trong ngôn ngữ Pascal dùng kiểu bản ghi để xử lý bảng kết quả thi bao gồm 2 môn Toán, Văn của học sinh , Sau khi nhập xong danh sách sẽ đưa ra bảng kết quả học tập và xếp loại (xem kỹ đầu bài trong SGK) . Chuong IV Kiể u dữ liệ u có cấu trúc - Dùng lệnh gán trực tiếp : Nếu A, B là hai bản ghi cùng kiểu ta có thể gán giá trị của A cho B bằng câu lệnh gán : Vd : B := A ; hoặc A := B ; - Gán giá trị cho từng trường . Dùng câu lệnh gán gán giá trị cho các trường hoặc nhập từ bàn phím . A.Hoten := ‘Nguyen Van Tuan’ ; Readln(a.Ngaysinh); Chương trình xử lý bảng kết quả thi. Page 35
  • 36. Ví dụ : Chương trình sau được viết trong ngôn ngữ Pascal dùng kiểu bản ghi để xử lý bảng kết quả thi bao gồm 2 môn Toán, Văn của học sinh , Sau khi nhập xong danh sách sẽ đưa ra bảng kết quả học tập và xếp loại (xem kỹ đầu bài trong SGK) . (* Kieu ban ghi xu ly bang ket qua thi 2 mon : Toan, Van *) Program Xeploai ; uses crt ; Type Hocsinh = Record Ten : String[30] ; Ngaysinh : String[10] ; Diachi : String[50] ; toan, van : real ; Xeploai : Char ; End ; Var Lop : array[1..100] of Hocsinh ; i, n : Byte ; Tg : Real ; Begin Clrscr ; Write(' Cho biet so hoc sinh : ') ; Readln(n) ; For i := 1 to n do Begin Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ; Write (' Ho ten : ') ; readln(Lop[i].ten) ; Write(' Ngay sinh : ') ; readln(Lop[i].Ngaysinh) ; Write(' Dia chi : ') ; readln(Lop[i].Diachi) ; Write(' Diem Toan : ') ; readln(Lop[i].toan) ; Write(' Diem Van ') ; readln(Lop[i].van) ; Tg := Lop[i].toan + Lop[i].van ; Chuong IV Kiể u dữ liệ u có cấu trúc Page 36
  • 37. if Tg >= 18 then Lop[i].Xeploai := 'A' Else if Tg >= 14 then Lop[i].Xeploai := 'B' Else if Tg >= 10 then Lop[i].Xeploai := 'C' Else Lop[i].Xeploai := 'D' End ; Readln ; For i := 1 to n do Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai); Readln ; End. IV. Củng cố:  Nhắc lại một số khái niệm mới .  Nhắc lại cấu trúc câu lệnh về việc khai báo, truy cập đến các thành phần của bản ghi .  Ra bài tập về nhà . V. Dặn dò: Chuong IV Kiể u dữ liệ u có cấu trúc Page 37
  • 38. Tiết 36 Bài tập Ngày soạn:...../......; giảng:..../...... Ngày I. Mục tiêu 1. Kiến thức: Củng cố cho HS những hiểu biết cơ bản nhất về kiểu dữ liệu có cấu trúc. 2. Kỹ năng: - Rèn luyện kĩ năng giải một bài toán với dữ liệu kiểu bản ghi. - Dần hình thành tư duy trong việc giải toán bằng ngôn ngữ TP với những kiểu dữ liệu có cấu trúc. II. Chuẩn bị của GV và HS: 1. Giáo viên: Giáo án, SGK, SBT . 2. Học sinh: Vở BT, SBT III. Nội dung: . Ổn định lớp: Kiểm diện: 11C1: 11C2: 11C3: 11C4: 11C5: 11C6: 11C7: . Kiểm tra bài cũ: . Bài giảng: Hoạt động của Giáo viên và Học sinh Nội dung GV: Qua quá trình chuẩn bị bài tập trong SBT từ nhà, có ai có thắc mắc về bài tập nào không? HS: Đưa ra những vướng mắc cần giải đáp. GV: Giải đáp các thắc mắc của HS. Chữa bài tập trong SBT GV: Gọi một số HS lên chữa một số bài tập tiêu biểu. GV: Chú ý cho HS cách truy nhập vào trường của bản ghi. HS: Lên bảng chữa bài. HS khác nhận xét bài làm của bạn. Chuong IV Kiể u dữ liệ u có cấu trúc Page 38
  • 39. GV: nhận xét và chỉnh sửa lại bài tập một cách hoàn chỉnh. IV. Củng cố: V. Dặn dò: chuẩn bị trước bài 14. Chuong IV Kiể u dữ liệ u có cấu trúc Page 39