You are on page 1of 46

Trường THCS Tây Đô Giáo án Tin học 8

Tuần: 1 Ngày soạn: 30/08/2006


Tiết: 1, 2 Ngày dạy:
ÔN TẬP
I. MỤC TIÊU
*Thống kê lại và nắm được tất cả các các kiến thức đã học từ việc viết một
chương trình đơn giản đến chương trình có chứa vòng lặp xác định For.
*Rèn luyện cách ứng phó một bài tập lớn.
II. CHUẨN BỊ
GV: *Thống kê lại tất cả các kiến thức lớp 7.
HS: *Ôn trước ở nhà lại tất cả kiến thức đã học.
*Nắm lại cách viết chương trình trên máy.
III. BÀI ÔN TẬP
1. Thủ tục nhập xuất
-Nhập: READ, READLN.
Ví dụ: Nhập dữ liệu vào biến a thì ta viết: READLN(a);
-Xuất: WRITE, WRITELN.
Ví dụ: Xuất dữ liệu từ biến a thì ta viết: WRITELN(a);
2. Các kiểu dữ liệu
-Số nguyên: INTEGER, LONGINT
Ví dụ: var: integer;
-Số thực: REAL
Ví dụ: var: Real;
3. IF ... THEN ... ELSE
-Cú pháp: IF <ĐK> THEN <CV1> ELSE <CV2>
-Đây là câu lệnh điều kiện
-ĐK đúng thì thực hiện CV1, nếu ĐK sai thì thực hiện CV2.
VD: IF a>0 THEN b:=3 ELSE b:=5;
Nếu a nhận giá trị là 6 thì b=5
Nếu a nhận giá trị –4 thì b=3
4. FOR ... TO ... DO
-Cú pháp: FOR <biến>:=<giá trị đầu> TO <biến>:=<giá trị cuối> DO <công việc>
-Đây là vòng lặp xác định.
VD: For i:=1 to 3 do writeln(i);
-i nhận giá trị là 1, 2, 3 và thực hiện công việc xuất i tương ứng.
5. BÀI TẬP
Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. Tính a+b và xuất kết quả ra màn hình.
Bài 2: Viết chương trình nhập vào 2 số nguyên a, b. Tính a+b, a-b, a*b và xuất kết quả ra
màn hình.
Bài 3: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 và xuất kết quả ra màn hình.
Bài 4: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 + b2 và xuất kết quả ra màn
hình.
Bài 5: Viết chương trình nhập vào 2 số nguyên a, b. Tính a2 + b2 ,a2 - b2 và xuất kết quả ra
màn hình.

GV: Diệp Thanh Toàn


Trường THCS Tây Đô Giáo án Tin học 8
Bài giải write(‘ ket qua la’);writeln(a*a);
Program bai1; Readln;
Var a,b:integer; end.
Begin
write(‘ nhap a=’);readln(a); Program bai4;
write(‘ nhap b=’);readln(b); Var a,b:integer;
write(‘ Tong la’);writeln(a+b); Begin
Readln; write(‘ nhap a=’);readln(a);
end. write(‘ nhap b=’);readln(b);
Program bai2; write(‘ Tong la’);writeln(a*a+b*b);
Var a,b:integer; Readln;
Begin end.
write(‘ nhap a=’);readln(a);
write(‘ nhap b=’);readln(b); Program bai5;
write(‘ Tong la’);writeln(a+b); Var a,b:integer;
write(‘ Hieu la’);writeln(a-b); Begin
Readln; write(‘ nhap a=’);readln(a);
end. write(‘ nhap b=’);readln(b);
Program bai3; write(‘ Tong la’);writeln(a*a+b*b);
Var a:integer; write(‘ Hieu la’);writeln(a*a-b*b);
Begin Readln;
write(‘ nhap a=’);readln(a); end.

I. HƯỚNG DẪN VỀ NHÀ


Ôn lại tất cả kiến thức đã học.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 2 Ngày soạn:
Tiết: 3, 4 Ngày dạy:

VÒNG LẶP WHILE .. DO


I. MỤC TIÊU
*Nắm được cú pháp và cách sử dụng vòng lặp WHILE…DO…
*Biết được sự khác nhau của REPEAT, WHILE và FOR.
*Nhận biết được khi nào sử dụng lệnh lặp nào
IV. CHUẨN BỊ
1. GV: * Dùng bảng phụ ghi tóm tắt lại nôi dung bài học.
HS: *Học thuộc bài cũ.
*Đọc trước bài mới.
V. BÀI MỚI

1. Lưu đồ lệnh WHILE .. DO


* Lưu đồ

* Ý nghĩa lưu đồ:


Trong khi mà điều kiện còn đúng thì cứ thực hiện Công việc, rồi quay trở về kiểm tra
điều kiện lại. Vòng lặp được tiếp tục, đến khi điều kiện đặt ra không còn đúng nữa thì đi tới
thực hiện lệnh tiếp theo
2. Cú pháp lệnh WHILE .. DO
WHILE <điều kiện> DO <Công việc>

Ghi chú:
· Ðiều kiện trong cấu trúc lặp WHILE .. DO là một biểu thức logic kiểu Boolean chỉ có 2
giá trị là Ðúng (True) hoặc Sai (False)
· Nếu điều kiện Ðúng thì chương trình sẽ chạy trong cấu trúc WHILE .. DO.
· Sau mỗi lần lặp, chương trình trở lại kiểm tra điều kiện. Tùy theo biểu thức logic của điều
kiện là Ðúng hay Sai thì chương trình sẽ thực hiện Công việc tương ứng.
· Nếu Sai thì chuyển xuống dưới cấu trúc WHILE .. DO

3. Ví dụ:

GV: Diệp Thanh Toàn


Trang 3
Trường THCS Tây Đô Giáo án Tin học 8
Viết chương trình nhập vào 1 số a. Nếu a không phải là số dương thì nhập lại, đến khi nào là số
dương thì dừng.
Bài giải
Program bai1;
Var a:Real;
Begin
Readln(a);
While a<0 do Readln(a);
Readln;
End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 4
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 3 Ngày soạn:
Tiết: 5, 6 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Viết được chương trình có chứa vòng lặp WHILE .. DO
*Thay thế một chương trình có chứa FOR thành WHILE .. DO và ngược lại.
*Sửa một số lỗi thường gặp.
VI. CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.

VII. BÀI THỰC HÀNH

Bài 1: Viết chương trình nhập vào 1 số a. Nếu a không phải là số dương thì nhập lại, đến khi
nào là số dương thì dừng.
Program bai1;
Var a:Real;
Begin
Readln(a);
While a<0 do Readln(a);
Readln;
End.
Bài 2: Viết chương trình nhập vào 1 số a. Nếu a không phải là số chẵn thì nhập lại, đến khi
nào là số chẵn thì dừng.
Program bai2;
Var a:Real;
Begin
Readln(a);
While a mod 2<>0 do Readln(a);
Readln;
End.
VIII. HƯỚNG DẪN VỀ NHÀ
Lài bài tập và xem trước bài mới. Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 5
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 4 Ngày soạn:
Tiết: 7, 8 Ngày dạy:

VÒNG LẶP REPEAT .. UNTIL


I. MỤC TIÊU
*Nắm được cú pháp và cách sử dụng vòng lặp REPEAT…UNTIL…
*Biết được sự khác nhau của REPEAT …UNTIL… và FOR.
*Nhận biết được khi nào sử dụng lệnh lặp nào
IX. CHUẨN BỊ
1. GV: * Dùng bảng phụ ghi tóm tắt lại nôi dung bài học.
HS: *Học thuộc bài cũ.
*Đọc trước bài mới.
X. BÀI MỚI

1. Lưu đồ lệnh và Cú pháp


Câu lệnh REPEAT .. UNTIL dùng trong các trường hợp khi biến điều khiển không có
kiểu rời rạc và đặc biệt trong các trường hợp số lần lặp không biết trước.

* Ý nghĩa:
Nếu điều kiện logic là Sai (False) thì lặp lại lệnh cho đến khi điều kiện Ðúng thì mới
thoát ra khỏi cấu trúc REPEAT .. UNTIL.
Nếu có nhiều câu lệnh thì mỗi lệnh ngăn cách nhau bằng dấu chấm phẩy (;)Công việc
của REPEAT và UNTIL không nhất thiết phải dùng lệnh ghép để nhóm từ 2 lệnh đơn trở lên
thành công việc.

2. VÍ DỤ
Viết chương trình nhập vào 1 số a. Nếu a không phải là số dương thì nhập lại, đến khi nào là
số dương thì dừng.
Bài giải
Program bai1;
Var a:Real;
Begin
Repeat
GV: Diệp Thanh Toàn
Trang 6
Trường THCS Tây Đô Giáo án Tin học 8
Readln(a);
Until a>0;
Readln;
End.

3. Sự khác biệt giữa While và Repeat:


So sánh 2 cách viết WHILE .. DO và REPEAT .. UNTIL ta thấy có sự khác biệt:
-Vòng lặp While luôn luôn đi với cặp từ khoá Begin và End còn trong vòng lặp Repeat không
cần sử dụng cặp Begin và End.
- Trong cấu trúc WHILE .. DO thì <Ðiều kiện> được kiểm tra trước, nếu thỏa <Ðiều kiện> thì
mới thực hiện <Công việc>.
- Ngược lại, trong cấu trúc REPEAT .. UNTIL thì <Công việc> sẽ được thực thi trước sau đó
mới kiểm tra <Ðiều kiện>, nếu không thỏa <Ðiều kiện> thì tiếp tục thi hành <Công việc>
cho đến khi <Ðiều kiện> là đúng.
Lệnh REPEAT .. UNTIL thường được sử dụng trong lập trình, nhất là lúc người sử dụng
muốn tiếp tục bài toán ở trường hợp thay đổi biến mà không phải trở về chương trình và nhấn
tổ hợp phím Ctrl + F9 lại.

Ví dụ 6.18: Nhân 2 số a và b
PROGRAM Tich;
VAR a, b : integer ;
CK : char ;
BEGIN
REPEAT
Write (' Nhập số a = '); Readln (a) ;
Write (' Nhập số b = '); Readln (b) ;
Writeln (' Tích số của a x b là :' , a*b : 10 ) ;
Writeln (' Tiếp tục tính nữa không (CK) ? ');
Readln (CK) ;
UNTIL upcase(CK) = K; {hàm chuyển đổi ký tự trong biến}
{CK thành ký tự in hoa}
END.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 7
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 5 Ngày soạn:
Tiết: 9, 10 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Hiểu rỏ hơn về cách chạy chương trình của vòng lặp REPEAT
*Thay thế một chương trình có chứa FOR thành REPEAT và ngược lại.
*Sửa một số lỗi thường gặp.
XI. CHUẨN BỊ
1. GV:*Chuẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS: *Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XII. BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 1 số a. Nếu a không phải là số dương thì nhập lại, đến khi
nào là số dương thì dừng.
Bài 2: Viết chương trình nhập vào 1 số a. Nếu a không phải là số chẵn thì nhập lại, đến khi
nào là số chẵn thì dừng.
Bài giải bài 1 Bài giải bài 2
Program bai1; Program bai2;
Var a:Real; Var a:Real;
Begin Begin
Repeat Repeat
Readln(a); Readln(a);
Until a>0; Until a mod 2=0;
Readln; Readln;
End. End.
XIII. HƯỚNG DẪN VỀ NHÀ
Lài bài tập và xem lại bài thực hành
Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 8
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 6 Ngày soạn:
Tiết: 11, 12 Ngày dạy:

CẤU TRÚC DỮ LIỆU MẢNG


I. MỤC TIÊU
* Biết được thế nào là mảng,cách khai báo, nhập liệu, và các thao tác căn bản trên
máy.
* Biết được khi nào sử dụng mảng, hiệu quả của việc sử dụng mảng.
XIV. CHUẨN BỊ
1. GV: * Một số ví dụ thực tế về mảng.
HS: * Ôn lại vòng lặp FOR.
XV. BÀI MỚI
1. Khai báo dữ liệu kiểu mảng
Một mảng dữ liệu gồm một số hữu hạn phần tử có cùng kiểu gọi là kiểu cơ bản. Số
phần tử của mảng được xác định ngay từ khi định nghĩa ra mảng. Mỗi phần tử của mảng
đựoc truy nhập trực tiếp thông qua tên mảng cùng với chỉ dẫn truy nhập được để giữa hai
ngoặc vuông [ ].
Định nghĩa biến A có kiểu mảng : gồm có các phần tử từ n đến m và có kiểu dữ liệu là
KDL thì được khai báo như sau:
VAR A : Array[ n..m ] Of KDL ;
Ví dụ: Khai báo mảng BB có các phần tử từ 1 đến 10 và kiểu dữ liệu chứa là
số nguyên (INTEGER) nhạp vào từ bàn phím:
VAR BB : Array[ 1..10] Of INTEGER ;
2. Đưa dữ liệu vào mảng
Ta có thể đưa dữ liệu từ ngoài (bàn phím) vào mảng bằng lệnh READ hoặc
READLN như sau:
READ( BB(i) ) ; hoặc READLN( BB(i) ) ;
Ví dụ: Cho mảng 10 phần tử và nhập vào mảng các số nguyên từ bàn phím
VAR A: ARRAY [1..10] OF INTEGER;
I: INTEGER;
BEGIN
For i:=1 to 10 do
Readln(A(i));
Readln;
END.
Hoặc để sáng suốt hơn thì ta có thể viết như sau:
VAR A: ARRAY [1..10] OF INTEGER;
I: INTEGER;
BEGIN
For i:=1 to 10 do
Begin
Write(‘ Nhap phan tu thu ‘,i,’ =’);
Readln(A(i));
End;
GV: Diệp Thanh Toàn
Trang 9
Trường THCS Tây Đô Giáo án Tin học 8
Readln;
END.
3. Đưa dữ liệu từ mảng ra màng hình
Ta có thể đưa dữ liệu từ mảng ra ngoài màn hình bằng lệnh WRITE hoặc
WRIELN như sau:
WRITE( BB(i) ) ; hoặc WRITELN( BB(i) ) ;
Ví dụ: Cho mảng 10 phần tử và nhập vào mảng các số nguyên từ bàn phím và cho hiện ra màn
hình
VAR A: ARRAY [1..10] OF INTEGER;
I: INTEGER;
BEGIN
For i:=1 to 10 do
Readln(A(i));
Writeln(‘ cac so vua nhap la: ‘);
For i:=1 to 10 do wrieln(A(i));

Readln;
END.
4.Lấy dữ liệu từ mảng để xử lý:
Ví dụ: Nhập từ bàn phím 10 số và tính tổng của nó.
VAR A: ARRAY [1..10] OF INTEGER;
i: INTEGER;
BEGIN
For i:=1 to 10 do
Begin
Write( ‘nhap phan tư thu ‘,i,’ =’);readln(A(i));
End;
For i:=1 to 10 do tong:= tong+A(i);
Write (‘Tong la: ‘, tong);
Readln;
END.
Phương Bình, ngày…. tháng…. năm…. Người soạn
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 10
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 7 Ngày soạn:
Tiết: 13, 14 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Hiểu rỏ hơn về cách viết chương trình có sử dụng mảng.
*Hiểu rỏ hơn về cách chạy chương trình có sử dụng mảng.
*Sửa một số lỗi thường gặp.
XVI. CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XVII. BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 10 số nguyên. Xuất các số dương ra màng hình..
Bài giải
Program bai1;
Var a:Array[1..10] of Integer;
i:integer;
Begin
For i:=1 to 10 do Readln(a[i]);
For i:=1 to 10 do if a[i] > 0 then Writeln(a[i]);
Readln;
End.
Bài 2: Viết chương trình nhập vào 10 số nguyên dương. Xuất các số chẵn ra màn hình.
Bài giải
Program bai2;
Var a:Array[1..10] of Integer;
i:integer;
Begin
For i:=1 to 10 do Readln(a[i]);
For i:=1 to 10 do if a[i] mod 2= 0 then Writeln(a[i]);
Readln;
Người soạn
End.
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 11
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 8 Ngày soạn:
Tiết: 15, 16 Ngày dạy:

XÂY DỰNG GIẢI THUẬT SẮP XẾP MẢNG

I. MỤC TIÊU
* Biết được một số ứng dụng của mảng vào việc giải một số bài tập.
* Biết được khi nào sử dụng mảng, hiệu quả của việc sử dụng mảng.
II. CHUẨN BỊ
1. GV: * Một số ví dụ thực tế về mảng.
* Dùng bảng phụ ghi trước giải thuật sắp xếp mảng.
HS: * Ôn lại vòng lặp FOR.

III. BÀI MỚI

1. Bài toán
Cho mảng M có N phần tử là các số thực, hãy sắp xếp các số đó theo thứ tự tăng dần.
2. Thuật giải
Giả sử mảng M có 8 phần tử (N = 8) là các số thực

Ý tưởng của thuật giải sắp xếp dưới đây là


Bước 1. Ta sẽ chọn phần tử nhỏ nhất trong các phần tử từ phần tử thứ nhất đến phần tử thứ N,
rồi tráo đổi nó với phần tử thứ nhất.
Bước 2. Ta sẽ chọn phần tử nhỏ nhất trong các phần tử từ phần tử thứ hai đến phần tử thứ N, rồi
tráo đổi nó với phần tử thứ hai.
Tương tự như vậy cho các bước tiếp theo từ bước 3 đến bước N.
Ta xét cho một bước tổng quát thứ i nào đó (i nhận giá trị từ 1 đến N)
Bước i. Ta sẽ tìm chỉ số K của phần tử nhỏ nhất trong các phần tử từ phần tử thứ i đến phần tử
thứ N, rồi tráo đổi nó với phần tử thứ i.
3. Chương trình
Để tráo đổi hai phần tử cho nhau, ta cần thęm phần tử TG (trung gian) thứ ba.
Program SapXep ;
Const n = 8 ;
Var m : array[1..n ] of real ;
i , j , k : byte ; tg : real ;
BEGIN
writeln(' Vao tung phan tu cua mang ') ;
For i := 1 To n Do
Begin
Write (' M[ ' , i , ' ]= ') ; Readln (m [ i ]) ;
End ;
Writeln ;
Writeln(' Da vao xong cac phan tu cua mang ') ;
For i := 1 To n - 1 Do
Begin

GV: Diệp Thanh Toàn


Trang 12
Trường THCS Tây Đô Giáo án Tin học 8
k := i ;
For j := i +1 To n Do If m[k] > m[j] Then k := j ;
If k > i Then
Begin
tg := m[ i ] ; m[i] := m[k] ; m[k] := tg ;
End;
End;
Writeln(' Cac phan tu da duoc sap xep la ') ;
For i := 1 To n Do Write (m [ i ] : 9 : 2) ; Readln
END .
IV. CỦNG CỐ
Sắp xếp bằng cách chọn trực tiếp
Có nhiều thuật giải sắp xếp một mảng. Trong chương trình trên ta dùng thuật giải chọn trực
tiếp. Giả sử mảng có N phần tử, ta thực hiện như sau:
Với mỗi vòng lặp theo i từ 1 đến N - 1 ta cho K := i ; rồi dùng vòng lặp theo j (lồng vào bên
trong vòng lặp theo i) j duyệt từ i + 1 đến N để tìm chỉ số K của phần tử nhỏ nhất trong các
phần tử từ phần tử thứ i đến phần tử thứ N, bằng cách nếu gặp phần tử thứ j nhỏ hơn phần tử có
chỉ số đang lưu giữ ở K thì gán K := j ;
Hết vòng lặp theo j thì tráo đổi phần tử thứ K với phần tử thứ i (nếu K > i).
V. BÀI TẬP VỀ NHÀ
1: Viết chương trình nhập vào 10 số nguyên. Xuất các số dương ra màng hình..
2: Viết chương trình nhập vào 10 số nguyên dương. Xuất các số chẵn ra màn hình.
3. Viết chương trình nhận vào chiều cao của các bạn Mai, Lan, Cúc, Thu, Bích Thuỷ, Hồng
Nhung, Anh. Sắp xếp và in ra màn hình chiều cao của các bạn theo thứ tự tăng dần. Yêu cầu
khai báo kiểu liệt kê tương ứng với tên các bạn để làm chỉ số cho mảng lưu trữ chiều cao của
họ.
4. Viết chương trình cho máy nhận vào mảng A có n phần tử là những số thực (n > 9). Xây
dựng mảng B các phần tử là những số nguyên được tạo thành từ các phần tử của mảng A theo
cách B[i] là trị tuyệt đối của phần nguyên của A[i]. Sắp xếp và in ra mảng A, mảng B theo thứ
tự tăng dần.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 13
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 9 Ngày soạn:
Tiết: 17, 18 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Hiểu rỏ hơn về cách viết chương trình có sử dụng mảng.
*Hiểu rỏ hơn về cách chạy chương trình có sử dụng mảng.
*Sửa một số lỗi thường gặp.
XVIII.CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XIX. BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 10 số nguyên. Xuất các số dương ra màng hình..
Bài giải
Program bai1;
Var a:Array[1..10] of Integer;
i:integer;
Begin
For i:=1 to 10 do Readln(a[i]);
For i:=1 to 10 do if a[i] > 0 then Writeln(a[i]);
Readln;
End.
Bài 2: Viết chương trình nhập vào 10 số nguyên dương. Xuất các số chẵn ra màn hình.
Bài giải
Program bai2;
Var a:Array[1..10] of Integer;
i:integer;
Begin
For i:=1 to 10 do Readln(a[i]);
For i:=1 to 10 do if a[i] mod 2= 0 then Writeln(a[i]);
Readln;
Người soạn
End.
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 14
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 10 Ngày soạn:
Tiết: 19, 20 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Củng cố lại kiến thức đã học
II. ĐỀ

ĐỀ KIỂM TRA 1 TIẾT


MÔN TIN HỌC 8

Đề: Viết chương trình nhập vào mảng có 6 số. Sắp xếp theo thứ tự tăng dần.
VD: Nhập 1 5 -6 0 2 4
Xuất: -6 0 1 2 4 5
* Lưu ý Học sinh lưu bài với tên và kết hợp với lớp của mình.
VD: học sinh là trần Quốc Cường lớp 8A1 thì lưu với tên là: D:\cuong8a1.pas

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 15
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 11 Ngày soạn:
Tiết: 21, 22 Ngày dạy:

THỰC HÀNH
II. MỤC TIÊU
*Hiểu rỏ hơn về cách viết chương trình có sử dụng mảng.
*Hiểu rỏ hơn về cách chạy chương trình có sử dụng mảng.
*Sửa một số lỗi thường gặp.
XX. CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XXI. BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 10 số nguyên. Sắp xếp theo thứ tự tăng dần và xuất ra
màn hình.
Bài 2: Viết chương trình nhập vào 10 số nguyên dương. Sắp xếp theo thứ tự tăng dần và
xuất các số dương ra màn hình.
Bài giải
Program bai1; Program bai1;
Var a:Array[1..10] of Integer; Var a:Array[1..10] of Integer;
i:integer; i:integer;
Begin Begin
For i:=1 to 10 do Readln(a[i]); For i:=1 to 10 do Readln(a[i]);
For i:=1 to 9 do For i:=1 to 9 do
For j:=i+1 to 10 do For j:=i+1 to 10 do
if a[i] >a[j] then if a[i] >a[j] then
begin begin
tam:=a[i]; tam:=a[i];
a[i]:=a[j];a[j]:=tam; a[i]:=a[j];a[j]:=tam;
end; end;
For i:=1 to 10 do writeln(a[i]); For i:=1 to 10 do
Readln; if a[i] > 0 then writeln(a[i]);
End. Readln;
Bài giải End.
Phương Bình, ngày…. tháng…. năm…. Người soạn
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 16
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 12 Ngày soạn:
Tiết: 23, 24 Ngày dạy:

THUẬT TOÁN MAX, MIN


I. MỤC TIÊU
* Biết được một số ứng dụng của mảng vào việc giải một số bài tập.
* Biết được khi nào sử dụng mảng, hiệu quả của việc sử dụng mảng.
II. CHUẨN BỊ
1. GV: * Một số ví dụ thực tế về mảng.
* Dùng bảng phụ ghi trước giải thuật sắp xếp mảng.
HS: * Ôn lại vòng lặp FOR.

III. BÀI MỚI

1. Tìm giá trị nhỏ nhất của dãy đã cho.


PROGRAM Tim_Min;
CONST a:array[1..10] of shortint=(0, 1, 2, 3, 4, -1, -2, -3, -4, 5);
VAR amin: shortint; {chứa giá trị nhỏ nhất của dãy}
i: byte; {chỉ số của dãy}
BEGIN
amin:= a[1]; {cho amin bằng phần tử đầu tiên}
For i:=2 to 10 do {so amin với các phần tử khác của dãy}
If amin>a[i] Then amin:=a[i];
{nếu còn phần tử nào nhỏ hơn amin thì thay amin bằng phần tử đó}
Writeln('amin=', amin);
Readln;
END.
Mở rộng: Tìm giá trị lớn nhất của dãy đã cho.
*Học sinh tự giải.

2. Tìm giá trị nhỏ thứ hai của dãy và đổi nó về vị trí thứ hai.
Hướng dẫn: Tìm phần tử nhỏ nhất của dãy, đổi nó về vị trí đầu tiên. Sau đó tìm phần tử nhỏ nhất của
dãy con còn lại.

PROGRAM Tim_Min_Thu2;
CONST a:array[1..10] of shortint=(0, 1, 2, 3, 4, -1, -2, -3, -4, 5);
VAR i: byte; {chứa chỉ số các phầnt tử của dãy}
imin: byte; {đánh dấu vị trí amin}
atg: shortint; {chứa giá trị trung gian khi đổi chỗ các phần tử}
BEGIN
imin:=1; {a[1] coi là nhỏ nhất}
For i:=2 To 10 Do {so với các phần tử còn lại}
If a[imin]> a[i] Then imin:=i;
{nếu còn phần tử nhỏ nhất thì đánh dấu phần tử đó}
atg:=a[1];
a[1]:=a[imin]; {đổi giá trị nhỏ nhất về đầu dãy}

GV: Diệp Thanh Toàn


Trang 17
Trường THCS Tây Đô Giáo án Tin học 8
a[imin]:=atg;
imin:=2;
For i:=3 To 10 Do
If a[imin]>a[i] Then imin:=i;
Writeln('Phần tử nhỏ thứ 2 của dãy là:', a[imin]);
Readln;
END.
Mở rộng: Tìm giá trị lớn thứ hai của dãy và đổi nó về vị trí thứ hai.
*Học sinh tự thực hiện
IV. BÀI TẬP VỀ NHÀ
Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. Xuất số lớn nhất ra màng hình..
Bài 2: Viết chương trình nhập vào 4 số nguyên a,b, c, d. Xuất số lớn nhất, nhỏ nhất ra

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 18
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 13 Ngày soạn:
Tiết: 25, 26 Ngày dạy:

THỰC HÀNH
XXII. MỤC TIÊU
*Hiểu rỏ hơn về cách viết chương trình có sử dụng thuật toán Max - Min.
*Hiểu rỏ hơn về cách chạy chương trình có sử dụng thuật toán Max – min.
*Sửa một số lỗi thường gặp.
XXIII.CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XXIV.BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 2 số nguyên a, b. Xuất số lớn nhất ra màng hình..
Bài giải
Program bai1;
Var a, b:integer;
Begin
Write(‘ nhap vao so nguyen a = ‘); Readln(a);
Write(‘ nhap vao so nguyen b = ‘); Readln(b);
Max:=a;
If b> max then Max:=b;
Write(‘ so lan nhat la ‘,max);
Readln;
End.
Bài 2: Viết chương trình nhập vào 4 số nguyên a,b, c, d. Xuất số lớn nhất, nhỏ nhất ra màn
hình.
Bài giải
Program bai2;
Var a, b, c, d:integer;
Begin
Write(‘ nhap vao so nguyen a = ‘); Readln(a);
Write(‘ nhap vao so nguyen b = ‘); Readln(b);
Write(‘ nhap vao so nguyen c = ‘); Readln(c);
Write(‘ nhap vao so nguyen d = ‘); Readln(d);

Max:=a;
If b> max then Max:=b;
If c> max then Max:=c;
If d> max then Max:=d;
Write(‘ so lon nhat la ‘,max);

GV: Diệp Thanh Toàn


Trang 19
Trường THCS Tây Đô Giáo án Tin học 8

Min:=a;
If b< Min then Min:=b;
If c< Min then Min:=c;
If d< Min then Min:=d;
Write(‘ so nho nhat la ‘,Min);

Readln;
End.

* Mở rộng: Tìm số lớn nhất của 3 số, 5 số, nhiều số ( sử dụng mảng).

Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 20
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 14 Ngày soạn:
Tiết: 27, 28 Ngày dạy:

THỰC HÀNH
I. MỤC TIÊU
*Hiểu rỏ hơn về cách viết chương trình có sử dụng thuật toán tìm kiếm.
*Hiểu rỏ hơn về cách chạy chương trình có sử dụng thuật toán tìm kiếm.
*Sửa một số lỗi thường gặp.
XXV. CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS:
*Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XXVI.BÀI THỰC HÀNH
Bài 1: Viết chương trình nhập vào 4 số nguyên a,b, c, d. Tìm xem có bao nhiêu số dương
(>0).
Bài giải
Program bai2;
Var a, b, c, d:integer;
Begin
Write(‘ nhap vao so nguyen a = ‘); Readln(a);
Write(‘ nhap vao so nguyen b = ‘); Readln(b);
Write(‘ nhap vao so nguyen c = ‘); Readln(c);
Write(‘ nhap vao so nguyen d = ‘); Readln(d);

D:=0;
If a>0 thend:=d+1;
If b>0 thend:=d+1;
If c>0 thend:=d+1;
If d>0 thend:=d+1;
Write(‘ Tong so cac so duong la :’,d);

Readln;
End.
Bài 2: Viết chương trình nhập vào mảng a có 10 phần tử. Tìm xem có bao nhiêu số là số
chẵn.
Bài giải
Program bai2;
Var a: Array [1..10] of integer;
I: integer;
Begin
For i:=1 to 10 do
begin
GV: Diệp Thanh Toàn
Trang 21
Trường THCS Tây Đô Giáo án Tin học 8
Write(‘ nhap vao so nguyen thu ‘,i); Readln(a[i]);
end;

d:=0;
For i:=1 to 10 do
Write(‘ Tong so cac so chan la :’,d);

Readln;
End.

Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 22
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 15 Ngày soạn:
Tiết: 29, 30 Ngày dạy:

ĐỀ KIỂM TRA LÍ THUYẾT


Hãy khoanh tròn chữ cái đứng trước câu trả lời em cho là đúng nhất
Câu 1. Để tìm giá trị lớn nhất của 2 số a, b thì ta viết:
a) Max:=a;If b>Max then Max:=b;
b) If (a>b) then Max:=a;If (b>a) then Max:=b;
c) Max:=b;If a>Max then Max:=a;
d) Cả 3 câu đều đúng.
Câu 2. For i:=5 to 10 do writeln(i);
Ta khai báo i thuộc kiểu dữ liệu nào?
a. Số thực b. Số nguyên
c. Kiểu kí tự (CHAR) d. Số thực và số nguyên.
Câu 3. Tong:=0;For i:=1 to 3 do Tong :=Tong+i;
Biến Tong có giá trị là:
a. 1 b. 5
c. 6 d. 3
Câu 4. Cú pháp của vòng lặp Repeat…Until… là:
a. Repeat <ĐK> Until <CV> b. Repeat <ĐK> Until <CV>
c. Repeat … Until … d. Tất cả đều đúng.
Câu 5. Biến a được nhận các giá trị là 0 ; -1 ; 1 ; 2,3 . Ta có thể khai báo a thuộc kiểu dữ liệu
nào?
a. Integer b. Char
c. Real d. Integer và Longint
Câu 6. Cú pháp của vòng lặp While…do… là:
a. While <ĐK> do <CV> b. While <CV> do <ĐK>
c. While…do… d. Tất cả đều đúng.
Câu 7. If ... Then ... Else là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 8. Repeat...Until là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 9. Kiểu dữ liệu Integer có giá trị lớn nhất là
a. 32768 b. 32767
c. 2 tỉ d. -32768...+32767
Câu 10. Giải thuật tìm và xuất các ước của một số nguyên a là:
a. for i:=1 to a do if a mod i = 0 then writeln (i);
b. for i:=1 to a do if a mod i = 0 then writeln (a);
c. Một đáp án khác.
Câu 11. a là biến dữ liệu kiểu số nguyên. Muốn xuất giá trị của a2 thì ta viết
a. Writeln('a*a') b. Readln(' a*a ')
c. Writeln(a*a) d. Writwln(a2)
GV: Diệp Thanh Toàn
Trang 23
Trường THCS Tây Đô Giáo án Tin học 8
Câu 12. While... do… là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 13. IF a>8 THEN b:=3 ELSE b:=5; Khi a nhận giá trị là 0 thì b nhận giá trị nào?
a. 0 b. 5 c. 8 d. 3
Câu 14. Khi soạn thảo xong chương trình Pascal, ta muốn lưu chương trình lại thì ta nhấn
phím:
a. F9 b. Ctrl + F9 c. F2 d. Ctrl + F2
Câu 15. Khi soạn thảo xong một chương trình Pascal, ta muốn kiểm tra xem có lỗi gì không
thì ta nhấn phím:
a. F9 b. F3 c. F2 d. F1
Câu 16. Khi một chương trình Pascal hết lỗi, ta muốn chạy chương trình thì nhấn phím:
a. F9 b. Ctrl + F9 c. F2 d. Ctrl + F2
Câu17. For ... to...do… là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 18. Để nhập một giá trị vào phần tử a[3] của mảng a thì ta viết là:
a. Readln(a) b. Readln(a[3])
c. Readln(a[i]) d. Readln(a(3))
3 3
Câu 19. Viết biểu thức toán a -b sang Pascal thì ta viết là:
a. a3-b3 b. a*a*a-b*b*b
c. a.a.a-b.b.b d. aaa-bbb
2
Câu 20. Để gán giá trị b vào phần tử a[5] của mảng a thì ta viết:
a. a:=b*b b. a[5]:=b*b
c. a[i]:=b*b d. For i:=1 to 5 do a[i]:=b*b
Câu 21: Khai báo mảng a có 11 phần tử là các số nguyên từ 5 đến 15 thì ta khai báo như
sau:
a) a: Array [1..11] of integer; b) a: Array [5...15] of integer;
c) a: Array [5..15] of integer; d) a: Array [11] of integer;
Câu 22: Nhập dữ liệu vào mảng a có 11 phần tử là các số nguyên từ 5 đến 15 thì ta viết
lệnh như sau:
a) Readln(a); b) Readln(a[11]);
c) Readln(a[i]); d) For i: =5 to 15 do Readln(a[i]);
Câu 23: Xuất dữ liệu từ mảng a có 11 phần tử là các số nguyên từ 5 đến 15 thì ta viết lệnh
như sau:
a) Writeln(a); b) Writeln (a[11]);
c) Writeln (a[i]); d) For i: =5 to 15 do Writeln (a[i]);
Câu 24: Để thực hiện phép tính tổng của hai số nguyên a và b ta thực hiện như sau :
a. Tong=a+b; b. Tong:=a+b;
c. Tong:a+b; d. Tong(a+b);
Câu 25: Để tìm giá trị lớn nhất của 2 số a, b thì ta viết:
a) Max:=a;If b>Max then Max:=b;
b) If (a>b) then Max:=a;If (b>a) then Max:=b;
c) Max:=b;If a>Max then Max:=a;
d) Cả 3 câu đều đúng.

GV: Diệp Thanh Toàn


Trang 24
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 16 Ngày soạn:
Tiết: 31, 32 Ngày dạy:

ƯỚC CHUNG – BỘI CHUNG


XXVII.MỤC TIÊU
*Hiểu rỏ hơn thế nào là bội, ước, bội chung, ước chung.
*Sửa một số lỗi thường gặp.
XXVIII.CHUẨN BỊ
1. GV:
2. HS:
XXIX.BÀI HỌC
1. Tìm ước của một số nguyên a
-Ước của một số nguyên a là tập hợp những số i sao cho a chia hết cho i.
VD: số 8 có các ước là 1, 2, 4, 8.
- Cách tìm tập hợp các ước của một số nguyên a là chia lần lượt a cho các số nguyên
từ 1 đến a. Nếu số nào a chia hết thì số đó là ước và xuất số đó ra.
- Giải thuật:
For i:= 1 to a do
If a mod i = 0 then writeln(i);
2. Tìm ước chung của 2 số nguyên a, b.
-Ước chung của 2 số nguyên a và b là tập hợp những số i sao cho a chia hết cho i và
b chia hết cho i.
VD: số 8 và 6 có các ước chung là 1, 2.
- Cách tìm tập hợp các ước chung của 2 số nguyên a, b là chia lần lượt xét các số
nguyên từ 1 đến a hoặc b. Nếu số nào thoả mảng điều kiện là a chia hết cho i và b
chia hết cho i thì xuất số đó ra.
- Giải thuật 1:
For i:= 1 to a do
If (a mod i = 0) and (b mod i = 0) then writeln(i);
- Giải thuật 2:
For i:= 1 to b do
If (a mod i = 0) and (b mod i = 0) then writeln(i);

3. Tìm bội của một số nguyên a


-Bội của một số nguyên a là tập hợp những số m sao cho m=a*i (i là số nguyên)
VD: số 8 có các bội là 8,16,24, 32, . . .
- Cách tìm tập hợp các bội của một số nguyên a là ta nhân lần lượt a cho các số
nguyên từ 1, 2, 3…..
- Giải thuật: (k là một số nguyên)
For i:= 1 to k do writeln(a*i);

4. Tìm bội chung của 2 số nguyên a, b.


GV: Diệp Thanh Toàn
Trang 25
Trường THCS Tây Đô Giáo án Tin học 8
-Bội chung của 2 số nguyên a và b là tập hợp những số m sao cho m đồng thời chia
hết cho a và b.
VD: số 8 và 6 có các bội chung là 24, 48,…
- Cách tìm tập hợp các bội chung của 2 số nguyên a, b là lần lượt nhân tích của a*b
với lần lượt 1, 2, 3, …..
- Giải thuật: (k là một số nguyên)
For i:= 1 to k do writeln(a*b*i);

Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 26
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 17 Ngày soạn:
Tiết: 33, 34 Ngày dạy:

THI THỰC HÀNH


XXX. MỤC TIÊU
*Củng cố lại kiến thức đã học
II. ĐỀ

ĐỀ THI THỰC HÀNH


MÔN TIN HỌC 8

Đề: Viết chương trình nhập vào 2 số nguyên a, b. Xuất tất cả các ước chung của a và b.
VD: Nhập a=12, b=18.
Xuất: 1 2 3
* Lưu ý Học sinh lưu bài với tên và kết hợp với lớp của mình.
VD: học sinh là trần Quốc Cường lớp 8A1 thì lưu với tên là: D:\cuong8a1.pas

Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 27
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 18 Ngày soạn:
Tiết: 35, 36 Ngày dạy:

THI LÍ THUYẾT
Hãy khoanh tròn chữ cái đứng trước câu trả lời em cho là đúng nhất

Câu 1. Để tìm giá trị nhỏ nhất của 2 số a, b thì ta viết:


a) Min:=a;If b<Min then Min:=b;
b)If (a<b) then Min:=a;If (b<a) then Min:=b;
c) Min:=b;If a<Min then Min:=a;
d) Cả 3 câu đều đúng.
Câu 2. Xuất dữ liệu từ mảng a có 5 phần tử là các số nguyên từ 1 đến 5 thì ta viết lệnh như
sau:
a) Writeln(a); b) Writeln (a[1..5]);
c) Writeln (a[i]); d) For i: =1 to 5 do Writeln (a[i]);
Câu 3. Nhập dữ liệu vào mảng a có 11 phần tử là các số nguyên từ 5 đến 15 thì ta viết lệnh
như sau:
a) Readln(a); b) Readln(a[5..15]);
c) Readln(a[i]); d) For i: =5 to 15 do Readln(a[i]);
Câu 4. Cú pháp của vòng lặp Repeat…Until… là:
a. Repeat <ĐK> Until <CV> b. Repeat <CV> Until <ĐK>
c. Repeat … Until … d. Tất cả đều đúng.
Câu 5. Các cách đặt tên sau, cách nào đúng:
a. bai thi b. baithi
c. Bàithi d. Bài thi
Câu 6. Cú pháp của vòng lặp While…do… là:
a. While <ĐK> do <CV> b. While <CV> do <ĐK>
c. While…do… d. Tất cả đều đúng.
Câu 7. If ... Then ... Else… là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 8. Repeat...Until… là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 9. Kiểu dữ liệu Integer và Longint
a. Bằng nhau b. Đều là kiểu số nguyên
c. Khác nhau hoàn toàn d. Có thể thay thế cho nhau mọi lúc
Câu 10. Giải thuật tìm và xuất các ước chung của số nguyên a và b là:
a. for i:=1 to a do if (a mod i = 0) and (b mod i = 0) then writeln (i);
b. for i:=1 to b do if (a mod i = 0) and (b mod i = 0) then writeln (i);
c. Tất cả đúng.
d. Tất cả sai.
Câu 11. Để khai báo biến i kiểu số nguyên; a, b kiểu số thực thì ta khai báo:
a. Var i, a, b: Integer, real; b. Var i: Integer; a, b: real;
GV: Diệp Thanh Toàn
Trang 28
Trường THCS Tây Đô Giáo án Tin học 8
c. Var i, a, b: Integer of real; d. Var a, b: Integer; i: real;
Câu 12. While... do… là:
a. Vòng lặp xác định b. Vòng lặp không xác định
c. Câu lệnh điều kiện d. Một khai báo
Câu 13. Khi ta viết các câu lệnh: a:=0;t:=a+b;a:=2;b:=3;t:=4;
Khi đó t có giá trị là:
a. 0 b. 5
c. a+b d. 4
Câu 14. . Khi ta viết các câu lệnh: a:=0;t:=a+b;a:=2;b:=3;t:=4;
Khi đó a có giá trị là:
a. 0 b. 3
c. 2 d. 4
Câu 15. Khi soạn thảo xong một chương trình Pascal, ta muốn kiểm tra xem có lỗi gì không
thì ta nhấn phím:
a. F9 b. F3
c. F2 d. F1
Câu 16. Khi một chương trình Pascal hết lỗi, ta muốn chạy chương trình thì nhấn phím:
a. F9 b. Ctrl + F9
c. F2 d. Ctrl + F2
Câu17. For i:=a to b do Writeln(i);có ý nghĩa là:
a. Lệnh gán i bằng a. b. Lặp lại công việc xuất biến i từ b đến a
c. Câu lệnh sai. d. Lặp lại công việc xuất biến i từ a đến b.
Câu 18. Để nhập một giá trị vào phần tử a[3] của mảng a thì ta viết là:
a. Readln(a) b. Readln(a[3])
c. Readln(a[i]) d. Readln(a(3))
Câu 19. Viết biểu thức a[3] * b[6] trong Pascal có ý nghĩa là:
a. Cho ta kết quả 3*6=18
b. Cho ta kết quả giá trị a[3] nhân với giá trị b[6]
c. Cho ta kết quả biến a nhân với biến b
d. Cho ta kết quả mảng a nhân với mảng b
Câu 20: Khai báo mảng a có 11 phần tử là các số nguyên từ 5 đến 15 thì ta khai báo như
sau:
a) a: Array [1..11] of integer; b) a: Array [5...15] of integer;
c) a: Array [5..15] of integer; d) a: Array [11] of integer;

SỬA BÀI KIỂM TRA

ĐÁP ÁN
Câu
1d Câu 2d Câu 3d Câu 4b Câu 5b Câu 6a Câu 7c Câu 8b Câu 9b Câu 10c
Câu Câu
11b 12b Câu 13d Câu 14c Câu 15a Câu 16b Câu 17d Câu 18b Câu 19b Câu 20c

GV: Diệp Thanh Toàn


Trang 29
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 19 Ngày soạn:
Tiết: 37, 38 Ngày dạy:

XÂU KÍ TỰ
XXXI.MỤC TIÊU
- Biết 2 cách khai báo xâu dùng từ khóa string và hạn chế số kí tự tối đa.
- Biết cách truy cập đến từng kí tự của xâu khi đã có giá trị.
XXXII.CHUẨN BỊ
1. GV:
2. HS:

XXXIII.BÀI HỌC

1. Khái niệm
Chúng ta gọi kiểu dữ liệu có giá trị là tập những kí tự là kiểu xâu kí tự hay nói một cách
ngắn gọn là kiểu xâu.
Pascal có từ khoá STRING để người dùng khai báo cho dữ liệu có giá trị là tập những kí tự.
Ví dụ ta khai báo biến A có kiểu là tập những kí tự như sau:
VAR A : STRING ; máy dành cho biến A có thể lưu giữ được một tập có không quá 255 kí tự.
Hằng văn bản phải để trong cặp dấu nháy cao (‘).
2. Khai báo dữ liệu kiểu xâu
a. Khai báo biến nhận kiểu xâu qua String
VAR Danh sách biến : STRING ;
Các tên biến trong danh sách phải phân cách nhau bởi dấu phảy.
Máy dành 256 byte trong bộ nhớ cho mỗi biến trong danh sách để mỗi biến đó có thể lưu giữ
được tối đa 255 kí tự.
b. Khai báo biến nhận kiểu xâu có cấu trúc
VAR Danh sách biến : STRING [N] ;
Các tên biến trong danh sách phải phân cách nhau bởi dấu phảy.
Máy dành (N + 1) byte trong bộ nhớ cho mỗi biến trong danh sách để mỗi biến đó có thể lưu
giữ được tối đa N kí tự.
3. Một số hàm và thủ tục trên dữ liệu kiểu xâu
a. Hàm cho số kí tự của xâu
Length (xâu) ; Cho độ dài của xâu, tức là cho số kí tự của xâu (kể cả dấu cách). Ví dụ Length
(‘Ha Noi’) = 6.
b. Hàm cho kí tự của xâu
Tên biến xâu [ vị trí kí tự ] ; cho kí tự của xâu có vị trí được chỉ ra bởi biểu thức trong dấu móc
vuông.
4. Bài toán
Lập chương trình để chuyển một xâu sang dạng mật mã theo quy tắc:
- Các nguyên âm a, e, i, o, u, y được chuyển tương ứng như sau:
a --> e, e --> i, i --> o, o --> u, u --> y, y --> a.
- Các phụ âm vẫn giữ nguyên.
Để đơn giản ta quy ước văn bản chỉ viết chữ thường.
* Thuật giải
GV: Diệp Thanh Toàn
Trang 30
Trường THCS Tây Đô Giáo án Tin học 8
Bài toán được giải bằng cách nhận vào xâu cần mã. Sau đó lần lượt duyệt xâu bắt đầu từ kí tự
thứ nhất cho đến kí tự cuối cùng của xâu. Ứng với mỗi kí tự là nguyên âm thì thay nó bằng
nguyên âm tương ứng theo qui tắc đã cho ở đề bài toán.
IV. CỦNG CỐ
1. Khai báo xâu kí tự
Để khai báo biến xâu kí tự ta dùng từ khóa STRING, tiếp đó đến số kí tự nhiều nhất mà xâu
cần lưu trữ. Số này để trong dấu móc vuông. Nếu không chỉ ra số kí tự nhiều nhất của xâu thì
máy hiểu xâu có độ dài khai báo là 255 kí tự.
2. Hằng xâu kí tự
Hằng xâu kí tự được viết trong hai dấu nháy cao. Ví dụ ‘ Chao the ki ki 21’
3. Những hàm trên xâu kí tự:
a. LENGTH(st)
Cho số kí tự của xâu st kể cả dấu cách.
b. ST[i] Cho kí tự thứ i của xâu st (tính từ trái sang phải bắt đầu từ 1).
c. Upcase(st[i]) Đổi kí tự thứ i của xâu st sang viết hoa (nếu nó là kí tự viết thường).
V. BÀI TẬP VỀ NHÀ
Bài toán 1: Viết chương trình nhập vào họ và tên của một học sinh. Xuất họ và tên đó ra màn
hình.
Bài toán 2: Viết chương trình nhập vào 3 biến: ho, tên, lot để nhập theo thứ tự họ, tên và chữ
lót của một học sinh. Ghép 3biến lại thành họ lót tên và xuất kết quả ra màn hình.
Bài toán 3: Viết chương trình nhập vào 3 biến: ngày, tháng, năm. Ghép chúng với dạng
ngày/tháng/ năm (ví dụ 10/01/2008) và xuất kết quả ra màn hình.

Phương Bình, ngày…. tháng…. năm….


Duyệt của tổ trưởng

GV: Diệp Thanh Toàn


Trang 31
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 20 Ngày soạn:
Tiết: 41, 42 Ngày dạy:
THỰC HÀNH XÂU KÍ TỰ
XXXIV.MỤC TIÊU
*Nắm vững hơn về xâu kí tự.
XXXV.CHUẨN BỊ
1. GV:*Chẩn bị phòng máy, bài tập, lịch trình tiến trình giờ thực hành.
2. HS: *Ôn lại lý thuyết đã học.
* Giải trước bài tập về nhà vào tập để thực hành.
XXXVI.BÀI THỰC HÀNH
Bài toán 1: Viết chương trình nhập vào họ và tên của một học sinh. Xuất họ và tên đó ra màn
hình.
Bài toán 2: Viết chương trình nhập vào 3 biến: ho, tên, lot để nhập theo thứ tự họ, tên và chữ
lót của một học sinh. Ghép 3biến lại thành họ lót tên và xuất kết quả ra màn hình.
Bài toán 3: Viết chương trình nhập vào 3 biến: ngày, tháng, năm. Ghép chúng với dạng
ngày/tháng/ năm (ví dụ 10/01/2008) và xuất kết quả ra màn hình.
Program bt1; Write(‘ho ten da nhap la’);writeln(t);
Var t:string[29]; Readln;
Begin End.
Write(‘ nhap vao ho ten cua mot hoc
sinh’);readln(t); Program bt2;
Write(‘ho ten da nhap la’);writeln(t); Var ngay,thang:string[2];nam:string[4];
Readln; T:string[10];
End. Begin
Program bt2; Write(‘ nhap vao ngay’);readln(ngay);
Var ho,ten:string[8];lot:string[20]; Write(‘ nhap vao thang’);readln(thang);
T:string[36]; Write(‘ nhap vao nam’);readln(nam);
Begin T:=ngay+thang+nam;
Write(‘ nhap vao ho’);readln(ho); Write(‘ngay thang nam da nhap
Write(‘ nhap vao ten’);readln(ten); la’);writeln(t);
Write(‘ nhap vao chu lot’);readln(lot); Readln;
T:=ho+lot+ten; End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 32
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 21 Ngày soạn:
Tiết: 39, 40 Ngày dạy:

MỘT SỐ HÀM VÀ THỦ TỤC VỚI XÂU


I. MỤC TIÊU
* Biết được một số hàm và thủ tục để xử lý trên xâu kí tự.
* Vận dụng hàm COPY, POS, DELETE, INSERT vàochương trình cụ thể.
II. CHUẨN BỊ
1. GV:
HS:

III. BÀI MỚI

1. Những hàm chuẩn trên xâu


a. COPY(st, p, n)
Cho kết quả là một xâu con gồm n kí tự của xâu st kể từ kí tự thứ p tính từ trái sang phải.
VD: Nếu st= ‘TRUONG THCS TAY DO’
Ta dùng hàm st1:=COPY(st,2,5)
Cho kết quả là st1= ‘RUONG’
b. POS(st1, st)
Cho vị trí xuất hiện lần đầu tiên của xâu st1 trong xâu st.
VD: Nếu st= ‘TRUONG THCS TAY DO’
St1= ‘O’
Ta dùng hàm a:=COPY(st,st1)
Cho kết quả là a=4
c. UPCASE(st[i])
Cho kết quả là đổi kí tự thứ st[i] thành kí tự in hoa.
VD: Nếu st= ‘truong thcs tay do’
Ta dùng hàm st[5]:= UPCASE (st[5])
Cho kết quả là st= ‘truoNg thcs tay do’

2. Hàm ghép xâu


st1 + st2 cho xâu kết quả nhận được bằng cách viết xâu st2 sau xâu st1.
VD: Nếu st1= ‘truong thcs tay do’
St2= ‘lop 8a’
Ta dùng hàm st:=st1+st2
Cho ta kết quả là st=‘truong thcs tay dolop 8a’

3. Thủ tục xoá và chèn xâu con


a. DELETE(st, p, n) ;
Xoá khỏi xâu st một xâu con gồm n kí tự kể từ kí tự thứ p và kéo các kí tự còn lại ở phía cuối
xâu về vị trí p.
b. INSERT(st1, st, p) ;

GV: Diệp Thanh Toàn


Trang 33
Trường THCS Tây Đô Giáo án Tin học 8
Chèn xâu st1 vào xâu st kể từ kí tự có vị trí thứ p của xâu st, tính từ trái sang phải. Các kí tự
của xâu St từ vị trí p bị đẩy về cuối xâu.

4. Ví dụ: Viết chương trình nhập vào một xâu kí tự st.


a. Kiểm tra xem có bao nhiêu kí tự ‘a’ trong st.
b. Thay thế tất cả những kí tự ‘a’ thành kí tự ‘u’.
Bài giải:
program vd;
var st: string;
begin
write(‘ nhap vao mot xau ki tu’);readln(st);
for i:=1 to length(st) do
if st[[i]=’a’ then
begin
d:=d+1;
st[[i]:=’u’;
end;
writeln(‘xau co tat ca cac ki tu a la’,d);
writeln(‘xau da thay the la’,st);
readln;
end.

IV. BÀI TẬP VỀ NHÀ


1.Viết chương trình cho máy nhận vào n câu thơ (n>5), sau đó máy cho hiện lên màn
hình những câu có từ "hoa" (mỗi câu chỉ in một lần. Chú ý từ được phân biệt nhờ dấu cách).
2. Nhận vào xâu st. Hãy tìm trong st có bao nhiêu từ ‘ong’ thì thay bằng bấy nhiêu xâu
‘con ong ngoan’.
3. Viết chương trình cho máy nhận vào xâu X gồm họ, đệm và tên của một người (xâu X
có thể có nhiều dấu cách ở đầu xâu, cuối xâu, giữa các từ, các kí tự viết thường, viết hoa là tuỳ
tiện). Tách ra từ X để có xâu T là tên (tên là từ cuối cùng trong xâu X), xoá ở xâu X tên của
người đó để còn lại là họ và đệm.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 34
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 22 Ngày soạn:
Tiết: 43, 44 Ngày dạy:

THỰC HÀNH MỘT SỐ HÀM VÀ THỦ TỤC TRÊN XÂU KÍ TỰ


I. MỤC TIÊU
* Biết được cách chi xuất các phần tử của xâu.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI

Bài toán 1: Viết chương trình nhập vào họ và tên của một học sinh. Xuất họ và tên đó ra màn
hình.
Program bt1;
Var t:string[29];
Begin
Write(‘ nhap vao ho ten cua mot hoc sinh’);readln(t);
Write(‘ho ten da nhap la’);writeln(t);
Readln;
End.

Bài toán 2: Viết chương trình nhập vào 3 biến: ho, tên, lot để nhập theo thứ tự họ, tên và chữ
lót của một học sinh. Ghép 3biến lại thành họ lót tên và xuất kết quả ra màn hình.
Program bt2;
Var ho,ten:string[8];lot:string[20];
T:string[36];
Begin
Write(‘ nhap vao ho’);readln(ho);
Write(‘ nhap vao ten’);readln(ten);
Write(‘ nhap vao chu lot’);readln(lot);
T:=ho+lot+ten;
Write(‘ho ten da nhap la’);writeln(t);
Readln;
End.

GV: Diệp Thanh Toàn


Trang 35
Trường THCS Tây Đô Giáo án Tin học 8
Bài toán 3: Viết chương trình nhập vào 3 biến: ngày, tháng, năm. Ghép chúng với dạng
ngày/tháng/ năm (ví dụ 10/01/2008) và xuất kết quả ra màn hình.
Program bt2;
Var ngay,thang:string[2];nam:string[4];
T:string[10];
Begin
Write(‘ nhap vao ngay’);readln(ngay);
Write(‘ nhap vao thang’);readln(thang);
Write(‘ nhap vao nam’);readln(nam);
T:=ngay+thang+nam;
Write(‘ngay thang nam da nhap la’);writeln(t);
Readln;
End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 36
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 23 Ngày soạn:
Tiết: 45, 46 Ngày dạy:

CHUẨN HÓA XÂU


I. MỤC TIÊU
* Biết được một xâu kí tự viết đúng qui cách là gì, và cách biến đổi từ xâu không
đúng qui cách về đúng qui cách.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI


Đặt vấn đề: Khi lập danh sách họ và tên của học sinh thì chúng ta viết theo qui cách là: mỗi chữ
cách nhau chỉ 1 kí tự trắng, kí tự đầu của chữ phải in hoa. Một xâu thỏa mản các ván đề đó thì
tạm gọ là xâu đã được chuẩn hóa.
Như vậy, để chuẩn hóa xâu thì ta phải cắt bỏ các kí tự trắng thừa ở đầu, giữa xâu và in
hoa kí tự đầu của chữ.
Giã sử xâu St là xâu cần chuẩn hóa

1. Cắt bỏ kí tự trắng thừa ở đầu xâu.


While St[1]= ‘ ‘ do Delete(St,1,1);

2. Cắt bỏ kí tự trắng thừa ở giữa xâu.


While Pos(‘ ‘,St)<>0 do Delete(St, Pos(‘ ‘,St),1);

3. In hoa kí tự đầu của chữ


St[1]:= Upcase(St[1]);
For i:=1to Length(St) do
If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]);
4. Bài tập
a) Viết chương trình nhập vào một xâu là họ và tên của 1 học sinh.Chuẩn hóa xâu vừa
nhập.
Program bta;
Var St: String;i:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
While St[1]= ‘ ‘ do Delete(St,1,1);
While Pos(‘ ‘,St)<>0 do Delete(St, Pos(‘ ‘,St),1);
St[1]:= Upcase(St[1]);
For i:=1to Length(St) do
If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]);
Write(‘xau da chuan hoa la:’);Writeln(St);
Readln;
End.

GV: Diệp Thanh Toàn


Trang 37
Trường THCS Tây Đô Giáo án Tin học 8

b) Viết chương trình nhập vào 2 xâu. St1 là họ và tên của 1 học sinh, St2 là ngày tháng
năm sinh. Gán St=St1+St2.Chuẩn hóa xâu St.
Program bta;
Var St: String;i:Integer;
Begin
Write(‘nhap va ho va ten:’);Readln(St1);
Write(‘nhap va ngay thang nam sinh:’);Readln(St2);
St:=St1+ ‘ ‘ +St2;
While St[1]= ‘ ‘ do Delete(St,1,1);
While Pos(‘ ‘,St)<>0 do Delete(St, Pos(‘ ‘,St),1);
St[1]:= Upcase(St[1]);
For i:=1to Length(St) do
If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]);
Write(‘xau da chuan hoa la:’);Writeln(St);
Readln;
End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 38
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 24 Ngày soạn:
Tiết: 47, 48 Ngày dạy:

THỰC HÀNH CHUẨN HÓA XÂU KÍ TỰ


I. MỤC TIÊU
* Biết được cách chi xuất các phần tử của xâu.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.
III. BÀI MỚI
1) Viết chương trình nhập vào một xâu là họ và tên của 1 học sinh.Chuẩn hóa xâu vừa
nhập.
Program bta;
Var St: String;i:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
While St[1]= ‘ ‘ do Delete(St,1,1);
While Pos(‘ ‘,St)<>0 do Delete(St, Pos(‘ ‘,St),1);
St[1]:= Upcase(St[1]);
For i:=1to Length(St) do
If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]);
Write(‘xau da chuan hoa la:’);Writeln(St);
Readln;
End.
2) Viết chương trình nhập vào 2 xâu. St1 là họ và tên của 1 học sinh, St2 là ngày tháng
năm sinh. Gán St=St1+St2.Chuẩn hóa xâu St.
Program bta;
Var St: String;i:Integer;
Begin
Write(‘nhap va ho va ten:’);Readln(St1);
Write(‘nhap va ngay thang nam sinh:’);Readln(St2);
St:=St1+ ‘ ‘ +St2;
While St[1]= ‘ ‘ do Delete(St,1,1);
While Pos(‘ ‘,St)<>0 do Delete(St, Pos(‘ ‘,St),1);
St[1]:= Upcase(St[1]);
For i:=1to Length(St) do
If St[i]= ‘ ‘ then St[i+1]:=Upcase(St[i+1]);
Write(‘xau da chuan hoa la:’);Writeln(St);
Readln;
End.
Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

GV: Diệp Thanh Toàn Diệp Thanh Toàn


Trang 39
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 25 Ngày soạn:
Tiết: 49, 50 Ngày dạy:

TÌM KIẾM VÀ THAY THẾ


I. MỤC TIÊU
* Biết được cách kiểm tra từng kí tự trên xâu, cách so sánh, cách thay thế.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI


Đặt vấn đề: Trong khi xử lí xâu kí tự thì người ta thường tìm kiếm 1 kí tự, một xâu kí tự thỏa
mản một yêu cầu nào đó. Do dó, cách tìm kiếm và thay thế cũng rất quan trọng.

Giã sử xâu St là xâu cần chuẩn hóa

1. Tìm kiếm 1 kí tự trong xâu


BT: Tìm trong xâu St có bao nhiêu kí tự a xuất hiện.
d:=0;
For i:=1 to length(St) do
If St[i]= ‘a’ then d:=d+1;
2. Thay thế 1 kí tự trong xâu.
BT: Thay thế trong xâu St các kí tự a thành kí tự e.

For i:=1 to length(St) do


If St[i]= ‘a’ then St[i]:= ‘e’;

3. Tìm kiếm xâu kí tự trong xâu


BT: Tìm trong xâu St có bao nhiêu xau kí tự ‘tin’ xuất hiện.
d:=0;
For i:=1 to length(St) do
If Copy(St,I,3)= ‘tin’ then d:=d+1;
4. Thay thế xâu kí tự trong xâu.
BT: Thay thế trong xâu St các xâu kí tự st1 thành xâu kí tự st2.

For i:=1 to length(St) do


If copy(St,I,length(st1))= st1 then
Begin
Delete(st,I,length(st1));
Insert(st2,st,length(st1));
End;

4. Bài tập

GV: Diệp Thanh Toàn


Trang 40
Trường THCS Tây Đô Giáo án Tin học 8
a) Viết chương trình nhập vào một xâu kí tự. Hỏi trong xâu vừa nhập có bao nhiêu kí tự a.
Program bta;
Var St: String;I,d:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
If St[i]= ‘a’ then d:=d+1;
Write(‘so ki tu a xuat hien la:’);Writeln(d);
Readln;
End.

b) Viết chương trình nhập vào 3 xâu. Thay thế trong xâu St các xâu kí tự st1 thành xâu kí
tự st2.
Program btb;
Var St,st1,st2: String;
i:Integer;
Begin
Write(‘nhap va xau st:’);Readln(St);
Write(‘nhap va xau st1:’);Readln(St1);
Write(‘nhap va xau st2:’);Readln(St2);
For i:=1 to length(St) do
If copy(St,I,length(st1))= st1 then
Begin
Delete(st,I,length(st1));
Insert(st2,st,length(st1));
End;
Write(‘xau ket qua la:’);Writeln(St);
Readln;
End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 41
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 26 Ngày soạn:
Tiết: 51, 52 Ngày dạy:

THỰC HÀNH TÌM KIẾM VÀ THAY THẾ


I. MỤC TIÊU
* Biết được cách chi xuất các phần tử của xâu.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI


1) Viết chương trình nhập vào một xâu kí tự. Hỏi trong xâu vừa nhập có bao nhiêu kí tự a.
Program bta;
Var St: String;I,d:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
If St[i]= ‘a’ then d:=d+1;
Write(‘so ki tu a xuat hien la:’);Writeln(d);
Readln;
End.
2) Viết chương trình nhập vào 3 xâu. Thay thế trong xâu St các xâu kí tự st1 thành xâu kí
tự st2.
Program btb;
Var St,st1,st2: String;i:Integer;
Begin
Write(‘nhap va xau st:’);Readln(St);
Write(‘nhap va xau st1:’);Readln(St1);
Write(‘nhap va xau st2:’);Readln(St2);
For i:=1 to length(St) do
If copy(St,I,length(st1))= st1 then
Begin
Delete(st,I,length(st1));
Insert(st2,st,length(st1));
End;
Write(‘xau ket qua la:’);Writeln(St);
Readln;End. Người soạn
Phương Bình, ngày…. tháng…. năm….
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 42
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 27 Ngày soạn:
Tiết: 53, 54 Ngày dạy:

CHUYỂN ĐỔI SỐ VÀ XÂU KÍ TỰ


I. MỤC TIÊU
* Biết được các thủ tục đổi số thành xâu kí tự và ngược lại.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI


Đặt vấn đề: Trong khi xử lí xâu kí tự thì người ta thường thực hiện các phép cộng số được nhập
từ bàn phím. Nếu như số nào khai báo kiểu xâu thì cộng không ra kết quả như mong muốn. Do
đó, ta cần chuyển đối xâu thành số.

1. Đổi xâu thành số


Val(st, v, c) ;
Thủ tục biến đổi biểu thức xâu kí tự st thành số và gán kết quả cho biến số v.
Biến c là biến nguyên (không nhận kiểu BYTE) dùng để ghi vị trí kí tự đầu tiên gây ra lỗi khi chuyển
đổi từ st sang v. Nếu đổi không được thì c=0,đổi được (Không có lỗi) thì c = 0.
Việc có đổi được hay không là phụ thuộc vào biểu thức xâu và khai báo kiểu của biến số v.
VD1
st=’12345’;val(st,v,c);
Kết quả: v=12345, c=0;
VD2
st=’12st’;val(st,v,c);
Kết quả: v=0, c<>0;

2. Đổi số thành xâu


Str(v, st) ;
Thủ tục biến đổi giá trị bỉểu thức số v thành xâu kí tự và gửi kết quả vào biến xâu st.
VD
v=123;Str(v,st);
Kết quả: st= ‘123’;
4. Bài tập
a) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Hỏi trong xâu vừa nhập có bao
nhiêu kí tự số.

Program bta;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
Begin
Val(st[i],v,c);

GV: Diệp Thanh Toàn


Trang 43
Trường THCS Tây Đô Giáo án Tin học 8
If c= 0 then d:=d+1;
End;
Write(‘so ki tu so trong xau la:’);Writeln(d);
Readln;
End.
b) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Tính tổng tất cả các kí tự số
trong xâu.
Program btb;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
Begin
Val(st[i],v,c);
If c= 0 then d:=d+v;
End;
Write(‘so ki tu so trong xau la:’);Writeln(d);
Readln;
End.
c) Viết chương trình nhập vào 3 số nguyên a,b,c. a là ngày, b là tháng, c là năm sinh của
1HS. Ghép theo thứ tự là ngày tháng năm các số vừa nhập thành xâu kí tự số. vd: nhap 3
so la a=12,b=2,c=1992. Kết quả là st=12/2/1992;
Program btc;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap so thu 1:’);Readln(a);
Write(‘nhap so thu 2:’);Readln(b);
Write(‘nhap so thu 3:’);Readln(c);
Str(a,sa);
Str(b,sb);
Str(c,sc);
d:=0;
st=sa+ ‘/’ +sb+ ‘/’ +sc;
Write(‘ket qua la:’);Writeln(st);
Readln;
End.
Phương Bình, ngày…. tháng…. năm…. Người soạn
Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 44
Trường THCS Tây Đô Giáo án Tin học 8
Tuần: 28 Ngày soạn:
Tiết: 55, 56 Ngày dạy:

THỰC HÀNH CHUYỂN ĐỔI SỐ VÀ XÂU KÍ TỰ


I. MỤC TIÊU
* Biết được cách chi xuất các phần tử của xâu.
* Thành thạo trong việc sử dụng một số hàm và thủ tục trên xâu.
II. CHUẨN BỊ
GV: * Một số ví dụ thực tế.
HS: * Ôn lại một số thủ tục và hàm trên xâu.

III. BÀI MỚI

1) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Hỏi trong xâu vừa nhập có bao
nhiêu kí tự số.

Program bta;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
Begin
Val(st[i],v,c);
If c= 0 then d:=d+1;
End;
Write(‘so ki tu so trong xau la:’);Writeln(d);
Readln;
End.
2) Viết chương trình nhập vào một xâu kí tự bất kì có cả kí tự số. Tính tổng tất cả các kí
tự số trong xâu.
Program btb;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap va mot xau ki tu:’);Readln(St);
d:=0;
For i:=1 to length(St) do
Begin
Val(st[i],v,c);
If c= 0 then d:=d+v;
End;
Write(‘so ki tu so trong xau la:’);Writeln(d);
Readln;
End.

GV: Diệp Thanh Toàn


Trang 45
Trường THCS Tây Đô Giáo án Tin học 8
3) Viết chương trình nhập vào 3 số nguyên a,b,c. a là ngày, b là tháng, c là năm sinh của
1HS. Ghép theo thứ tự là ngày tháng năm các số vừa nhập thành xâu kí tự số. vd: nhap 3
so la a=12,b=2,c=1992. Kết quả là st=12/2/1992;
Program btc;
Var St: String;I,d,v:Integer;
Begin
Write(‘nhap so thu 1:’);Readln(a);
Write(‘nhap so thu 2:’);Readln(b);
Write(‘nhap so thu 3:’);Readln(c);
Str(a,sa);
Str(b,sb);
Str(c,sc);
d:=0;
st=sa+ ‘/’ +sb+ ‘/’ +sc;
Write(‘ket qua la:’);Writeln(st);
Readln;
End.

Phương Bình, ngày…. tháng…. năm…. Người soạn


Duyệt của tổ trưởng

Diệp Thanh Toàn

GV: Diệp Thanh Toàn


Trang 46

You might also like