Tải bản đầy đủ (.doc) (36 trang)

Giáo án bồi dưỡng học sinh giỏi tin học lớp 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (416.44 KB, 36 trang )

Bài 1: MỘT SỐ KHÁI NIỆM CƠ BẢN
VỀ NGÔN NGỮ LẬP TRÌNH TURBO PASCAL
I. MỤC TIÊU: HS nắm được một số khái niệm cơ bản về ngôn ngữ lập trình PC
II. TIẾN TRÌNH BÀI DẠY
Hoạt động của thầy và trò
Nội dung
GV giới thiệu
1. Các tập tin cần thiết khi lập trình với Turbo Pascal
Để lập trình được với Turbo Pascal, tối thiểu cần 2 file
sau:TURBO.EXE: Dùng để soạn thảo và dòch chương trình.
TURBO.TPL: Thư viện chứa các đơn vò chuẩn để chạy
với TURBO.EXE.
Ngoài ra, muốn lập trình đồ hoạ thì phải cần thêm các tập
tin:GRAPH.TPU: Thư viện đồ hoạ.
*.BGI: Các file điều khiển các loại màn hình tương ứng khi
dùng đồ hoạ.
*.CHR: Các file chứa các font chữ đồ họa.
? Hãy nêu các bước cơ bản khi 2. Các bước cơ bản khi lập một chương trình Pascal
lập trình 1 ch trình PC
Bước 1: Soạn thảo chương trình.
Bước 2: Dòch chương trình (nhấn phím F9), nếu có lỗi thì
phải sửa lỗi.
Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).
? Nêu cấu trúc chung của 1 3. Cấu trúc chung của một chương trình Pascal
chương trình
- Phần khai báo
+ Khai báo tên chương trình;
+ Khai báo các thư viện (chứa các lệnh viết sẵn có thể
sử dụng trong chương trình) và một số khai báo khác.
- Phần thân của chương trình gồm các câu lệnh mà máy
tính cần thực hiện.


* Chú ý:- Phần thân là phần bắt buộc phải có còn phần khai
báo có thể có hoặc không
- Phần khai báo (nếu có) phải được đặt trước phần thân
chương trình.
? Nêu các thành phần cơ bản 4. Các thành phần cơ bản của ngôn ngữ Pascal
của NNPC
4.1. Từ khóa
Từ khoá là các từ mà Pascal dành riêng để phục vụ cho
mục đích của nó. (Chẳng hạn như: BEGIN, END, IF,
WHILE,...)
4.2. Tên (đònh danh)
Tên danh là một dãy ký tự dùng để đặt tên cho các hằng,
biến, kiểu, tên chương trình con... Khi đặt tên, ta phải chú ý
một số điểm sau:
- Không được đặt trùng tên với từ khoá
- Ký tự đầu tiên của tên không được bắt đầu bởi các ký tự

1


GV giới thiệu

đặc biệt hoặc chữ số.
Không được đặt tên với ký tự space, các phép toán.
5. Các hàm số học sử dụng cho kiểu số nguyên và số thực:
SQR(x): Trả về x2
SQRT(x): Trả về căn bậc hai của x (x≥0)
ABS(x): Trả về |x|
TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé
hơn x.

INT(x):Trả về phần nguyên của x
FRAC(x): Trả về phần thập phân của x
ROUND(x): Làm tròn số nguyên x
PRED(n): Trả về giá trò đứng trước n
SUCC(n): Trả về giá trò đứng sau n
ODD(n): Cho giá trò TRUE nếu n là số lẻ.
INC(n): Tăng n thêm 1 đơn vò (n:=n+1).
DEC(n): Giảm n đi 1 đơn vò (n:=n-1).
* Các hàm trên kiểu ký tự:
- UPCASE(ch): Trả về ký tự in hoa tương ứng với ký tự ch.
Ví dụ: UPCASE('a') = 'A'.
- ORD(ch): Trả về số thứ tự trong bảng mã ASCII của ký tự
ch. Ví dụ ORD('A')=65.
- CHR(n): Trả về ký tự tương ứng trong bảng mã ASCII có
số thứ tự là n. Ví dụ: CHR(65)='A'.
- PRED(ch): cho ký tự đứng trước ký tự ch. Ví dụ:
PRED('B')='A'.
- SUCC(ch): cho ký tự đứng sau ký tự ch. Ví dụ:
SUCC('A')='B'.

Bài 2: CHƯƠNG TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
A- MỤC TIÊU:

2


- HS biết phân biệt từ khóa và tên, nắm chắc quy tắc đặt tên.
- Biết viết biểu thức toán bằng ngôn ngữ Pascal và ngược lại, biết chuyển các biểu thức
bằng ngon ngưa Pascal sang biểu thức Toán.
- Biết viết một số chương trình đơn giản.

B- TIẾN TRÌNH DẠY HỌC

HOẠT ĐỘNG CỦA GV VÀ HS

GHI BẢNG

Hoạt động 1: Kiến thức cơ bản:
I. Kiến thức cơ bản:
- GV yêu cầu HS nhắc lại khái niệm từ 1. Từ khóa và tên:
- Từ khóa
khóa và tên, quy tắc đặt tên
- Tên:
- Quy tắc đặt tên:
+ Không trùng từ khóa
+ Không dùng dấu cách, dấu trừ, dấu cộng,
+ Không dùng số ở đầu tên.
- Yêu cầu HS xác đònh xem những tên Ví dụ 1: Những tên nào sau đây là hợp lệ? Vì
nào là hợp lệ
sao?
- GV chưa lại cho đúng
a) ues
b) tukhoa
c) tu khoa
c) tu_khoa
d) tu-khoa
e) tu+khoa
g) 1tukhoa
k) tukhoa1
- GV yêu cầu HS nhắc lại cấu trúc 2. Cấu trúc chung của một chương trình:
chung của một chương trình

- Phần khai báo:
- Phần thân: (phần bắt buộc)
? Hãy xác đònh từ khóa và tên trong Ví dụ 1: Cho chương trình sau, hãy xác đònh
chương trình bên.
từ khóa, tên trong chương trình:
- HS xác đònh, GV chữa lại cho đúng.
program baitap;
uses crt;
Var a, b: Integer;
Begin clrscr;
Writeln(‘Hay nhap vao so a: ‘); Readln(a);
Writeln(‘Hay nhap vao so b: ‘); Readln(b);
Writeln(‘Thuong cua hai so la: ‘, a/b);
Readln;
End.
- HS nhắc lại các kiểu dự liệu thường 3. Kiểu dữ liêu:
dùng
- Số nguyên: Integer, longint, word, byte, ...
- GV nêu thêm một số kiểu dữ liệu - Số thực: Real
khác
- Kí tự: char
- Xâu kí tự: string, string[x]
- GV nhắc lại các phép toán và các 4. Các phép toán và các phép so sánh:
phép so sánh.
- Cộng, trừ, nhân, chia
- Chia lấy phần nguyên
- Chia lấy phần dư.
3



- HS nhắc lại cú pháp lệnh in ra màn 5. Lệnh in ra màn hình:
hình và lệnh nhập dữ liệu.
write(.....); hoặc writeln(....);
6. Lệnh nhập dữ liệu:
Read(....); hoặc Readln(...);
Hoạt động 2: Bài tập:
II. Bài tập:
Bài 1: Viết biểu thức toán bằng ngon ngữ
- GV yêu cầu HS làm các bài tập trên Pascal:
vào vở
a) 5x3 + 2x2 - 18x + 25
2a 2 + 2c 2 − a
Lưu ý:
-38
b) -10
c)
4
+ abs: giá trò tuyệt đối VD: abs(x)
x+ y
2
−b + ∆
+ srq: bình phương
d) x − y
e) ( x + 1) g)
2a
+ sqrt: căn bậc hai
k) p( p − a)( p − b)( p − c)
+ exp: mũ
Bài 2: Viết chương trình tính chu vi và diện
thang dưới đây:

3,5
B
A
2,5

4,5

C
9,0
D
program hinhthang;
uses crt;
begin clrscr;
writeln(‘dien tich = ‘, ((3.5 +9)*2.5)/2);
writeln(‘Chu vi = ‘, (3+3.5+4.5+9));
Readln;
End.
Bài 3: Chuyển các biểu thức sau sang công
Hoạt động 3: Hướng dẫn về nhà:
thức toán:
Yêu cầu HS ghi bài tập về nhà
a) 2*p*r b) -b/(2*a) c) 1/(n*(n+1)*(n+2))
d) 1+1/(x*x) + 1/(y*y)+1/(z*z)
e) sqrt(p*(p-a)*(p-b)*(p-c))
Bài 4: Viết chương trình in ra màn hình f) 1(abs(x)+1)+1/((abs(y)+1)*(abs((y)-1))
các trang trí sau:
a) * * * * *
b)
*
* * * * *

* *
* * * * *
* * * *
* * * * *
* * * * *

Bài 3: SỬ DỤNG BIẾN TRONG CHƯƠNG TRÌNH
4


A- MỤC TIÊU:

- HS biết phân biệt từ khóa và tên, nắm chắc quy tắc đặt tên.
- Biết viết biểu thức toán bằng ngôn ngữ Pascal và ngược lại, biết chuyển các biểu thức
bằng ngon ngưa Pascal sang biểu thức Toán.
- Biết viết một số chương trình đơn giản.
B-TIẾN TRÌNH DẠY HỌC:
HOẠT ĐỘNG CỦA GIÁO VIÊN, HỌC
SINH

GHI BẢNG

Hoạt động 1: Kiến thức cơ bản:
I. Kiến thức cơ bản:
- GV yêu cầu HS nhắc lại khái niệm 1. Biến và khai báo biến:
- Biến:
biến và cách khai báo biến
- Khai báo: var tênbiến : Kiểudữliệu ;
+ Gán giá trò cho biến: tênbiến := biểuthức ;
? Sử dụng biến để làm gì?

+ Tính toán
- GV yêu cầu HS nhắc lại khái niệm 2. Hằng:
biến và cách khai báo biến
- Hằng:
- Khai báo: Const tênhằng = giátrò ;
Ví dụ 1: Cho chương trình sau, hãy xác đònh
- Yêu cầu HS xác đònh biến, hằng trong biến và hằng trong chương trình:
chương trình
program baitap;
- GV chửa lại cho đúng
uses crt;
Var a, b: Integer;
const n=4 ;
Begin clrscr;
Writeln(‘Hay nhap vao so a: ‘); Readln(a);
Writeln(‘Hay nhap vao so b: ‘); Readln(b);
Writeln(‘Thuong cua hai so la: ‘, a/b);
Readln;
End.
Hoạt động 2: Bài tập:
GV yêu cầu HS làm các bài tập 4.7 ; 4.8
; 4.9; 4.11; 4.14 ở SBT/T31; 32;33; 34
Hoạt động 3: Hướng dẫn về nhà:
Yêu cầu HS ghi bài tập 4.17; 4.21;
4.23/SBT

Bài 4: CÂU LỆNH ĐIỀU KIỆN
I. MỤC TIÊU:

5



-Nắm cú pháp câu lệnh điều kiện dạng thiếu
- Vận dụng làm bài tập
II. TIẾN TRÌNH BÀI DẠY
1. Câu lệnh điều kiện dạng thiếu
a) Cú pháp
IF <điều kiện > THEN <câu lệnh>;
b) Sơ đồ thực hiện lệnh

c) Ghi chú
- Điều kiện phải là một biểu thức Logic
- Câu lệnh thực hiện khi Điều kiện đúng (Nhiều hơn 1 lệnh thì phải đặt trong khối lệnh)
d) Bài tập
Bài 1: Nhập vào một số tự nhiên a từ bàn phím, kiểm tra a có phải là số chẵn k?
program chan_le;
uses crt;
var a: byte;
begin
clrscr;
Write('nhap vao a '); readln(a);
If a mod 2 = 0 then
writeln(a , ' la so chan ');
readln
end.
Bài 2: Tìm số lớn hơn trong hai số
program gtln;
uses crt;
var max,a, b:real;
begin

clrscr;
Writeln('nhap vao 2 so '); readln(a, b);
max:=a;
if b>max then max:=b;
Writeln('gia tri lon nhat la ', max:2:3);
readln
end.
Bài 3:Tìm GTLN 3 số
program gtln;
uses crt;

6


var max,a, b, c:real;
begin
clrscr;
Writeln('nhap vao 3 so '); readln(a, b, c);
max:=a;
if b>max then max:=b;
if c> max then max:=c;
Writeln('gia tri lon nhat la ', max:2:3);
readln
end.
Bài 4: Tìm GTNN 3 số
program gtnn;
uses crt;
var min,a, b, c:real;
begin
clrscr;

Writeln('nhap vao 3 so '); readln(a, b, c);
min:=a;
if bif cWriteln('gia tri nho nhat la ', min:2:3);
readln
end.
2. Câu lệnh điều kiện dạng đủ
a) Cú pháp:
IF <điều kiện > THEN <câu lệnh1> ELSE <câu lệnh 2>;
b) Sơ đồ:

Điều kiện?

Sai

Đúng

Câu lệnh 1

Câu lệnh 2

c) Bài tập
Bài 1: Nhập vào 1 số tự nhiên a, kiểm tra xem số đó chẵn hay lẻ
program chan_le;
uses crt;
var a: byte;
begin
clrscr;
Write('nhap vao a '); readln(a);

if a=0 then writeln(a , ' khong la so chan, khong la so le') else

7


If a mod 2 = 0 then
writeln(a , ' la so chan ')
else
writeln(a , ' la so le');
readln
end.
Baứi 2: Giaỷi phửụng trỡnh baọc nhaỏt
program giai_PTB1;
uses crt;
var a,b:real;
begin
clrscr;
Writeln('chuong trinh giai phuong trinh bac nhat ax + b =0');
Write('nhap vao a='); readln(a);
Write('nhap vao b='); readln(b);
if a=0 then
if b=0 then
writeln('phuong trinh co vo so nghiem')
else
writeln('pt vo nghiem')
else
writeln('pt co nghiem la x=',-b/a:0:3);
readln
end.
Baứi 3: Giaỷi phửụng trỡnh baọc hai

program giai_PTB2;
uses crt;
var a,b,c,d,x1,x2:real;
begin
clrscr;
Writeln('chuong trinh giai phuong trinh bac hai a*x*x+b*x+c =0');
Write('nhap vao a='); readln(a);
Write('nhap vao b='); readln(b);
Write('nhap vao c='); readln(c);
d:=sqr(b)-4*a*c;
if d>0 then begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln('pt co nghiem la x1=',x1:2:3,' x2=',x2:2:3);
end
else
if d=0 then begin
x1:=-b/(2*a);
writeln('phuong trinh co nghiem x1=x2=',x1:2:3)

8


end
else

writeln('pt vo nghiem'); readln

end.
Bài 4: Nhập vào 1 số tự nhiên a, kiểm tra xem số đó dương hay âm

program so_duong_am;
uses crt;
var a: real;
begin
clrscr;
Write('nhap vao a= '); readln(a);
if a=0 then writeln(a:2:1 ,' khong la so duong, khong la so am') else
If a> 0 then writeln(a:2:1 , ' la so duong ')
else
writeln(a:2:1 , ' la so am');
readln
end.
Bài 5: Kiểm tra 3 số dương a, b, c có là 3 cạnh của tam giác hay không?
program BT_03_01;
var
a,b,c : real;
begin
write('Nhap vao 3 so duong ');
readln(a,b,c);
if (abs(a-b) < c) and (cwriteln('3 so tren la 3 canh cua mot tam giac')
else
writeln('3 so tren khong la 3 canh cua mot tam giac');
readln;
end.

Ngµy so¹n: 11/03/2011
Ngµy d¹y:
Buổi 6:


CÂU LỆNH LẶP (VỚI SỐ LẦN BIẾT TRƯỚC)
9


I. MC TIấU:
-Nm cỳ phỏp cõu lnh lp vi s ln bit trc
- Vn dng lm bi tp
II. CHUN B
III. TIN TRèNH BI DY:
1. Kin thc c bn:
Cỳ phỏp: FOR <bin m >:=<giỏ tr u> TO <giỏ tr cui> DO <cõu lnh >;
- For, to, do là từ khóa
- biến đếm là kiểu số nguyên
- giá trị đầu và giá trị cuối là kiểu số nguyên
- Câu lệnh có thể là câu lệnh đơn giản hoặc câu lệnh ghép
2. Bài tập:
Bài 1: Viết chơng trình tính tổng của n số tự nhiên đầu tiên (n nhạp vào từ bàn phím)
Program tinh_tong;
Uses crt;
Var i, n: integer; tong: longin;
Begin
Clrscr;
Tong:=0;
Writeln(Nhap vao so n);
Readln(n);
For i:=1 to n do
Tong: = Tong+i;
Writeln(Tong của, n,so tu nhien dautien la,tong);
Readln;
End.

Bài 2. Viết chơng trình tìm xem có bao nhiêu số dơng trong n số nhập vào từ bàn phím
Program tinh_so_cac_so_duong;
Uses crt;
Var i,A, dem, n: integer;
Begin
Clrscr;
Dem:=0;
Writeln(Nhap vao so n); readln(n);
For i:=1 to n do
begin
writeln(nhap vao so thu,i); readln(A);
if A>0 then dem:=dem+1;
end;
Writeln(So cac so duong la,dem);
Readln; End.

Bài 3: Mô tả thuật toán và viết chơng trình tính tổng sau đây:
A = x + x + ..... + x
n lần
program tinhcan;
uses crt;
Var n, i: Integer; x, A: Real;
10


begin
writeln('Nhap vao gia tri n = '); Readln(n);
writeln('Nhap vao gia tri x = '); Readln(x);
A;= sqrt(x);
for i:= 2 to n do A:= sqrt(x + A);

writeln('Gia tri cua A la: ', A:6:2);
Readln;
End.
Bài 2: Viết chương trình nhập vào n số nguyên từ bàn phím. Đếm và in ra số các số chia hết
cho 3 và in ra tất cả các số chia hết cho 3.
program bai1; uses crt;
var i,n,d:integer;
a: array[1..100] of integer;
begin clrscr;
write('Nhap vao so N = ');
Readln(n);
for i:=1 to n do
begin
write('Nhap vao so thu ', i, ': ');
Readln(a[i]);
end;
d:=0;
for i:=1 to n do
If a[i] mod 3 = 0 then d:=d+1;
If d=0 then writeln('Khong co so chia het cho 3')
else write('co ', d,' so chia het cho 3 la: ');
for i:=1 to n do
If a[i] mod 3 = 0 then write(a[i],' ');
Readln;
End.
Bài 2:
program tong;
uses crt;
var i, n:integer;
s: real;

begin clrscr;
write('nhap vao so n = ');
readln(n);
s:= 0;
for i:= 1 to n do
s:= s+i/2;
writeln('tong cua day la: ',S:8:2);
readln;
End.
Ngµy so¹n: 24/3/2011
Ngµy d¹y:
Buổi 7:

CÂU LỆNH LẶP (VỚI SỐ LẦN CHƯA BIẾT TRƯỚC)

I. MỤC TIÊU:
11


-Nm cỳ phỏp cõu lnh lp vi s ln cha bit trc
- Vn dng lm bi tp
II. CHUN B
III. TIN TRèNH BI DY:
1. Kin thc c bn:
Cỳ phỏp: While <iu kin > DO <cõu lnh >;
- While, do là từ khóa
- iu kin l nhng phộp so sỏnh
- Câu lệnh có thể là câu lệnh đơn giản hoặc câu lệnh ghép
2. Bài tập:
Bi 1: Vit chng trỡnh nhp vo s tin gi v lói sut hng thỏng (nh hn

20
000 000) mt ngõn hng. Tớnh v in ra s thỏng phi gi s tin nhn c ca khỏch
hng khụng nh hn
20 000 000
program ngan_hang;
uses crt;
var d:integer;
T,a,m:real;
begin clrscr;
write('nhap vao so tien gui');
readln(a);
writeln('nhap vao lai suat');
readln(m);
T:=a;d:=0;
while T<2000000 do
begin T:=t+T*m;
d:=d+1;
end;
writeln('so thang phai gui la:',d);
readln;
end.
Bi 2: Mt khỏch hng gi vo ngõn hng 10 000 000 vi lói sut 0,1%.Tớnh s thỏng phi
gi ca ngi khỏch ú nhn c s tin ln hn hoc bng 20 000 000.
Program gui_ngan_hang;
Uses crt;
Var t:real;
d:integer;
Begin clrscr;
t:=10000000;
d:=0;

While t<20000000 do
Begin
t:=t+t*0.1;
d:=d+1;
End;
Writeln('so thang phai gui la : ',d);
Readln;
End.
12


Bi 3: Viết chơng trình nhập vào các số thực x (biểu diễn điểm của một số học sinh).
Vòng lặp dừng lại khi tổng các điểm lớn hơn 100. In ra tổng điểm
program tinhtong;
Uses crt;
Var x, T : Real;
Begin clrscr;
T := 0; While T <= 100 do
Begin
Writeln((Nhap vao so thuc x:); Readln(x);
T := T + x; End;
Writeln((Tong diem la:,T:3:1);
Readln; End.

Ngày soạn:
Ngày dạy:

/ /2011
Bui 8:


LM VIC VI DY S

I. MC TIấU:
-Nm cỳ phỏp lnh khai bỏo bin móng
- Vn dng lm bi tp
II. CHUN B
III. TIN TRèNH BI DY:
1. Kin thc c bn:
Cỳ phỏp:
Var <tên mãng>: array[<chỉ số đầu>.. <chỉ số cuối>] 0f <kiểu dữ liệu>;
- Var, array, of là từ khóa
- tờn móng l tờn bin móng
2. Bài tập:
Bi 1: Viết N chơng trình nhập n số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số
lớn nhất. N cũng đợc nhập vào từ bàn phím
Program MaxMin; Uses crt;
Var i, n, max. min: Integer;
A: array[1..100] of integer;
Begin clrscr;
Writeln(hay nhap vao do dai cua day so, N= ); Readln(N);
Writeln(Nhap cactu cua day so:);
For i := 1 to N do
Begin
13


Writeln(‘a[‘,i,’]=’); Readln(a[i]);
End;
Max := a[1]; Min := a[1];
For i := 1 to N do

Begin if Max < a[i] then Max := a[i];
If Min > a[i] then Min := a[i];
End;
Writeln(‘So lon nhat la Max = ‘, Max);
Writeln(‘so nho nhat la Min = , Min);
Readln;
End.
Bài 2: Viết chương trình nhập vào n số nguyên từ bàn phím. Đếm và in ra số các số chia hết
cho 3 và in ra tất cả các số chia hết cho 3.
program bai1; uses crt;
var i,n,d:integer;
a: array[1..100] of integer;
begin clrscr;
write('Nhap vao so N = ');
Readln(n);
for i:=1 to n do
begin
write('Nhap vao so thu ', i, ': ');
Readln(a[i]);
end;
d:=0;
for i:=1 to n do
If a[i] mod 3 = 0 then d:=d+1;
If d=0 then writeln('Khong co so chia het cho 3')
else write('co ', d,' so chia het cho 3 la: ');
for i:=1 to n do
If a[i] mod 3 = 0 then write(a[i],' ');
Readln;
End.
Bài 3: Viết chương trình nhập điểm của các bạn trong lớp. Sau đó in ra màn hình số bạn đạt

kết quả học tập loại giỏi, khá, trung bình và kém (theo tiêu chuẩn từ 8.0 trở lên đạt loại giỏi,
từ 6.5 đến 7.9 đạt loại khá, từ 5.0 đến 6.4 đạt trung bình và dưới 5.0 xếp loại kém).
program Phanloai;
uses crt;
Var
i, n, Gioi, Kha, Trungbinh, Kem: integer;
A: array[1..100] of real;
Begin
clrscr;
write(‘Nhap so cac ban trong lop, n = ‘); readln(n);
writeln(‘Nhap diem:’);
For i:=1 to n do Begin
write(i,’. ‘); readln(a[i]); End;
Gioi:=0; Kha:=0; Trungbinh:=0; Kem:=0;
for i:=1 to n do
begin
if a[i]>=8.0 then Gioi:=Gioi+1;
if a[i]<5 then Kem:=Kem+1;
14


if (a[i]<8.0) and (a[i]>=6.5) then Kha:=Kha+1;
if (a[i]>=5) and (a[i]<6.5) then Trungbinh:=trungbinh+1
end;
writeln(‘Ket qua hoc tap:’);
writeln(Gioi,’ ban hoc gioi’);
writeln(Kha,’ ban hoc kha’);
writeln(Trungbinh,’ ban hoc trung binh’);
writeln(Kem,’ ban hoc kem’);
readln;

End.

Ngµy so¹n:
Ngµy d¹y:

/ /2011
Buổi 9:

XÂU KÍ TỰ

I. MỤC TIÊU:
-Nắm được cách sử dụng xâu kí tự, cách khai báo biến xâu.
- Vận dụng làm bài tập
II. CHUẨN BỊ
III. TIẾN TRÌNH BÀI DẠY:
1. Kiến thức cơ bản:
Cú pháp:
Var <tªn biến xâu>: string[x];
2. Bµi tËp:
Bài 1: Viết chương trình nhạp vào một xâu, tính và in ra số kí tự, số từ trong một xâu.
program xau;
uses crt;
var d1,d2,i:integer;
x:string;
begin clrscr;
write('nhap vao xau: ');
readln(x);
d2:=0;
for i:=1 to length(x) do
d2:=d2+1;

write('so ki tu trong xau la: ',d2);
writeln;
x:=' '+x; d1:=0;
for i:=2 to length(x) do
begin
if (x[i-1]=' ') and(x[i]<>' ')then
d1:=d1+1;
end;
Bài 2: Viết chương trình nhập vào hai xâu, in ra xâu tổng của hai xâu đó, đếm và in ra số kí
tự của xâu tổng.
program bai2;
15


uses crt;
var i, d:integer;
x1, x2, xt:string;
begin clrscr;
write('nhap vao xau thu nhat: ');
Readln(x1);
write('nhap vao xau thu hai: ');
Readln(x2);
xt:= x1+x2;
d:=0;
write('Xau tong la: ');
For i:=1 to length(xt) do
d:=d+1;
writeln(xt);
write('So ki tu cua xau tong la: ',d);
Readln;

End.
write('so tu trong xau la: ',d1);
writeln;
readln;
end.
Bài 3: Viết chương trình nhập vào một số xâu, tìm và in ra xâu tổng không có các kí tự số
Program xau1;
Uses crt;
Var n,i,j:integer;
x,xt:string;
Begin clrscr;
write('so xau la: ');
Readln(n);
xt:=' ';
For i:=1 to n do
Begin
Write('nhap vao xau thu ',i,': ');
Readln(x);
For j:=1 to length(x) do
If not((x[j] >='0') and (x[j]<='9')) then xt:=xt+x[j];
End;
Writeln('xau tong la: ',xt);
Readln;
End.

Ngµy so¹n: / /2011
Ngµy d¹y: / /2011
16



Buổi 10: CÁC DẠNG TOÁN TÍNH TỔNG
I. MỤC TIÊU:
- Viết được chương trình các dạng toán tính tổng.
II. CHUẨN BỊ
III. TIẾN TRÌNH BÀI DẠY:
1. Kiến thức cơ bản:
2. Bµi tËp:
Bài 1: Viết chương trình tính tổng sau: S= 1/2 + 2/2 + 3/2 + …..+ n/2
(n được nhập vào từ bàn phím.
program tinh_tong;
uses crt;
var n,i:integer;
s:real;
begin clrscr;
write('nhap vao n:= ');
readln(n);
s:=0;
for i:=1 to n do
s:=s+i/2;
writeln('tong la: ',s:6:0);
readln;
end.
Bài 2: Viết chương trình tính tổng sau: S= 1 + 1/2 + 1/3 + …..+ 1/n
(n được nhập vào từ bàn phím.
program tinh_tong;
uses crt;
var n,i:integer;
s:real;
begin clrscr;
write('nhap vao n:= ');

readln(n);
s:=0;
for i:=1 to n do
s:=s+i/n;
writeln('tong la: ',s:6:0);
readln;
end.
Bài 3: Viết chương trình tính tổng sau: S= 1 + 1/3 + 1/5 + …..+ 1/(2n+1)
(n được nhập vào từ bàn phím.
program tinh_tong;
uses crt;
var n,i:integer;
s:real;
begin clrscr;
write('nhap vao n:= ');
readln(n);
s:=0;

17


for i:=1 to n do
s:=s+i/(2*n+1);
writeln('tong la: ',s:6:0);
readln;

Ngµy so¹n:
Ngµy d¹y:

/ /2011

Buổi 11: CÁC CHƯƠNG TRÌNH VỀ DÃY SỐ

I. MỤC TIÊU:
- Viết được chương trình về dãy số.
II. CHUẨN BỊ
III. TIẾN TRÌNH BÀI DẠY:
1. Kiến thức cơ bản:
2. Bµi tËp:
Bài 1: Viết chương trình nhập vào các phần tử của một dãy số, sắp xếp dãy số đó theo thứ tự
tăng dần. In ra tất cả các số chia hết cho 5.
program sap_xep2;
uses crt;
var n,i,j,tg:integer;
a:array[1..100] of integer;
begin clrscr;
writeln('nhap vao so phan tu');
readln(n);
for i:=1to n do
begin
write('nhap vao so phan tu thu',i,': ');
readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]> a[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:= tg;
end;

write(' thu tu sap xep tang dan la' );
for i:=1 to n do
write(a[i],' ');
writeln;
write('so chia het cho 5 la:');
for i:=1 to n do
if a[i] mod 5 =0 then
write (a[i],' ');
18


writeln;
Bài 2: Viết chương trình nhập vào một dãy n phần tử. In ra giá trị lớn nhất của dãy. In ra các
số dương và tổng các số dương của dãy.
Program phantu;
Uses crt;
Var n,i,max:integer;
t:real;
a:array[1..300] of integer;
Begin clrscr;
Write('so phan tu cua day la : ');
Readln(n);
For i:=1 to n do
Begin
Write('nhap vao phan tu thu ',i,': ');
Readln(a[i]);
End;
max:=a[1];
For i:=2 to n do
If max

Writeln('so lon nhat la : ',max);
t:=0;
Write('cac so duong la : ');
For i:=1 to n do
If a[i] > 0 then
Begin
Write(a[i],' ');
t:=t+a[i];
End;
Writeln;
Writeln('tong cac so duong la : ',t:5:1);
Readln;
End.
Ngµy so¹n: / /2011
Ngµy d¹y: / /2011
Buổi 14: ÔN TẬP TỔNG HỢP
I. MỤC TIÊU:
- Viết được chương trình
II. CHUẨN BỊ
III. TIẾN TRÌNH BÀI DẠY:
1. Kiến thức cơ bản:
Dạng 1 CÁC BÀI TẬP CƠ BẢN.
Bài 1. Viết chương trình tính tổng của n số nguyên liên tiếp
program tong;
19


uses crt;
var i, n:integer;
s: real;

begin clrscr;
write('nhap vao so n = ');
readln(n);
s:= 0;
for i:= 1to n do
s:= s+i;
writeln('tong cua day la: ',S:8:2);
readln;
End.
Bài 2: Lập chương trình tính tiền điện khi biết số Kw tiêu thụ. Biết rằng 100 số đầu giá 500,
50 số tiếp theo giá 650đ/kw 50 số tiếp theo là 1200đ/kw và các số trên 200 giá 1600 đồng.
program tinh_tien_dien;
uses crt;
var a:longint;
t:real;
i:integer;
begin clrscr;
writeln('nhap vao so dien da dung ');
readln(a);
if a<0 then
begin
writeln('hay nhap lai so dien da dung');
readln(a);
end;
if a<=100 then t:=500*a
else
if a<=150 then t:=500*100+(a-100)*1100
else
if a<=200 then t:=500*100+50*1100+(a-150)*1400
else t:=500*100+50*1100+50*1400+(a-200)*1600;

t:=t+t*0.1;
writeln('so tien phai tra la:',t:5:0,'VND');
readln;
end.
Bài 3. Viết chương trình gửi vào ngân hàng với số tiền là x với lãi suất là n hỏi bao nhiêu
tháng thì được số tiền là y (y>x).
program ngan_hang;
uses crt;
var t,m,d:integer;
a:longint;

20


begin clrscr;
write('nhap vao so tien gui: ');
readln(a);
write('nhap vao lai suat: ');
readln(m);
t:=a; d:=0;
while a<20000000 do
begin
t:=t+t*m;
d:=d+1;
end;
write('so thang phai gui la: ',d);
readln;
end.
Bài 4
Viết chương trình nhập vào chiều dài, chiều rộng và chiều cao của hình hộp chử nhật sau đó

tính diện diện tích toàn phần, và thể tích của hình hộp chữ nhật đó.
Program Hinh_chu_nhat;
Uses crt;
Var a,b,h,s,v:real;
Begin clrscr;
write('nhap vao chieu dai: ‘);readln(a);
write('nhap vao chieu rong: ‘);readln(b);
write('nhap vao chieu cao: ‘);readln(h);
s:= 2*h*(a+b)+ 2ab;
v:= a*b*h;
write('Dien tich toan phan la’ ,s:2:2);
writeln;
write('The tich la’ ,v:2:2);
readln;
end.
Bài 5
Viết chương trình nhập vào 3 cạnh của tam giác, sau đó kiểm tra xem có lập được tam giác
không, nếu được thì tính diện tích tam giác bằng công thức Hêrông S := sqrt(p(p-a)(p-b)(pc)) và nữa chu vi p:=(a+b+c)/2;
Program Tam_giac;
Uses crt;
Var a,b,c,s,p:real;
Begin clrscr;
write('nhap vao canh 1: ‘);readln(a);
write('nhap vao canh 2: ‘);readln(b);
write('nhap vao canh 3: ‘);readln(c);
if (a+b>c) and (a+c>b) and (b+c>a) then
Begin
21



P:=(a+b+c)/2;
S:=sqrt(p(p-a)*(p-b)*(p-c));
write('Dien tich tam giac la: ‘,s:2:2);
end
else
write('Nhap lai 3 canh cua tam giac! ‘);
readln;
end.
Bài 6
Đọc ngày tháng năm , sau đó viết ra màn hình đó là ngày thứ mấy trong tuần .
GIẢI
Var Thu , Ngay , Thang : Byte ;
Nam : Integer ;
BEGIN
Write (' Doc Ngay Thang Nam : ') ;
Readln ( Ngay , Thang , Nam ) ;
Nam := 1900 + ( Nam mod 1900 ) ;
If Thang < 3 Then
Begin
Thang := Thang + 12 ;
Nam := Nam - 1 ;
End ;
Thu := Abs ( Ngay + Thang * 2 + ( Thang + 1 ) * 3
div 5 + Nam + Nam div 4 ) mod 7 ;
Case Thu Of
0 : Writeln (' Chu Nhat ') ;
1 : Writeln (' Thu Hai ') ;
2 : Writeln (' Thu Ba ') ;
3 : Writeln (' Thu Tu ') ;
4 : Writeln (' Thu Nam ') ;

5 : Writeln (' Thu Sau ') ;
6 : Writeln (' Thu Bay ') ;
End ;
Readln ;
END .
* Bài 7 :
Viết chương trình :
Nhâp số báo danh
Nhập điểm văn , toán , ngoại ngữ
In ra màn hình dưới dạng :
_ Phiếu điểm :
_ Số báo danh :
_ Điểm văn :
_ Điểm toán :
_ Điểm ngoại ngữ :
_ Tổng số điểm :

22


Bạn đã trúng tuyển ( hoặc Bạn đã không trúng tuyển ) với điều kiện Tổng số điểm >=
15 hay ngược lại .
GIẢI
Uses Crt ; Var SBD : Integer;
Van , Toan , Ngoaingu , Tongdiem : Real ;
BEGIN
Clrscr ;
Write (' So bao danh : ') ; Readln( SBD ) ;
Write (' Diem toan : ') ; Readln( Toan ) ;
Write (' Diem ngoai ngu : ') ; Readln( Ngoaingu ) ;

Write (' Diem van : ') ; Readln ( Van ) ;
Tongdiem := Toan + Van + Ngoaingu ;
Clrscr ;
Writeln (' Phieu Bao Diem ') ;
Writeln (' So bao danh
: ', SBD ) ;
Writeln (' Diem van
: ', Van ) ;
Writeln (' Diem toan
: ', Toan ) ;
Writeln (' Diem ngoai ngu : ', Ngoaingu) ;
Writeln (' Tong diem : ', Tongdiem) ;
If Tongdiem >= 15 Then
Writeln(' Ban da trung tuyen ')
Else
Writeln(' Ban khong trung tuyen ') ;
Readln ; END .
* Bài 8 :
Viết chương trình nhập hai số thực . Sau đó hỏi phép tính cần thực hiện và in kết quả
của phép tính đó .
Nếu là “+” , in kết quả của tổng lên màn hình .
Nếu là “-” , in kết quả của hiệu lên màn hình .
Nếu là “/” , in kết quả của thương lên màn hình .
Nếu là “*” , in kết quả của tích lên màn hình . Nếu là “+” , in kết quả của tổng lên màn
hình .
Nếu là “+” , in kết quả của tổng lên màn hình .
GIẢI
Uses Crt ; Var
a , b , kq : Real ;
Pt : Char ;

BEGIN
Clrscr ;
Write (' a = ') ; Readln( a ) ;
Write (' b = ') ; Readln( b ) ;
Write (' Phep tinh thuc hien la (+ - * /) : ') ;
Readln( Pt ) ;
If Pt = '+’ Then kq := a + b ;
If Pt = '-’ Then kq := a - b ;
If Pt = '*’ Then kq := a * b ;
If Pt = '/’ Then kq := a / b ;
23


Write ( a , pt , b , ' = ', kq ) ;
Readln ; END .
* Bài 9 :
Viết chương trình nhập hai số tự nhiên N, M và thông báo ‘Dung‘ nếu N , M cùng tính
chẵn lẽ , trong trường hợp ngược lại thì thông báo ‘Sai‘.
GIẢI
Uses Crt ;
Var
N , M : Integer ;
Begin
Clrscr ;
Write(' N , M = ') ; Readln( N , M ) ;
If ( (N + M) mod 2 = 0 ) Then Writeln(' Dung ! ')
Else Writeln(' Sai ! ') ;
Readln ;
END .
Bài 10 :Cho số tự nhiên n , hãy lập trình để tính các tổng sau :

a. a.
b. b.
GIẢI

1 + 1/22 + 1/32 + … + 1/n2
1 + 1/2! + 1/3! + … + 1/n!

a)

Var n , i : Word ;
S : Real ;
BEGIN
Write (' Nhap n : ') ; Readln (n) ;
S := 0 ;
For i := 1 To n Do
S := S + 1 / sqr(i) ;
Writeln (' S = ', S:0:2) ;
Readln ;
END .
b)
Var n , i , j , p : Word ;
S : Real ;
BEGIN
Write (' Nhap n : ') ; Readln(n) ;
p := 1 ;
s := 0 ;
For i :=1 To n Do
Begin
p := p * i ;
(* tính i *)

S := S + 1 / p ;
End ;
Writeln (' S = ', S:0:2) ;
Readln ; END .
*Bài 11 :

24


Tính giá trị của biểu thức sau :
( 1 + 1/12 ) ( 1 + 1/22 ) … ( 1 + 1/n2 )
GIẢI
Var i , n : Byte ;
p : Real ;
Begin
Write(' Nhap n : ') ; Readln (n) ;
p := 1 ;
For i := 1 To n Do p := p * ( 1 + 1/sqr(i) ) ;
Writeln(' p = ', p:10:5 ) ;
Readln ; End
Sử dụng lệnh While
*

Bài 12 :

Lập trình tính tổng :
A = 1 + 1/2 + 1/3 + … + 1/n
ở đây n là số tự nhiên được nhập vào từ bàn phím .
GIẢI
Uses Crt ;

Var i , n : Integer ;
tong: Real ;
BEGIN
Clrscr ;
Write (' Cho so tu nhien n : ') ; Readln (n) ;
tong :=0 ;
i :=1 ;
While i <= n Do
Begin
tong := tong + 1/i ;
i := i + 1 ;
End ;
Writeln (' Tong can tim la : ', tong:12:6 ) ;
Readln ; END .
* Bài 13 :
Tính hàm lũy thừa an , ở đây a thực và n tự nhiên được nhập vào từ bàn phím .
GIẢI
Uses Crt ;
Var i , n : Integer ;
a , giatri : Real ;
BEGIN
Clrscr ;
Write (' Cho so a : ') ; Readln(a) ;
Write (' Cho so mu n : ') ; Readln(n) ;
i := 1 ;
giatri := 1 ;
25



×