TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC Mở rộng cho học sinh về nhà chuẩn hoá chương trình với nội dung như sau: Cho tệp dữ liệu TAMGIAC.DAT có cấu trúc như sau: -Dò[r]
Trang 1TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
BÀI TẬP VÀ THỰC HÀNH 06 I.Mục đích yêu cầu
-Về kiến thức:
-Nhằm giúp cho học sinh củng cố lại kiến thức của bài xâu
-Tìm hiểu các thao tác xử lí xâu, cách tạo hiệu ứng chạy chữ trên màn hình
-Về kỹ năng:
-Nâng cao kỹ năng viết và sử dụng chương trình con
-Về thái độ:
-Rèn luyện cho học sinh phẩm chất của người lập trình như tinh thần hợp tác, làm việc theo nhóm, tuân thủ các yêu cầu của một công việc chung
-Tiếp tục xây dựng lòng ham muốn trong lập trình để giải quyết các bài toán bằng máy tính
-Tự giác, chủ động, tích cực trong giải quyết các bài tập và xây dựng phẩm chất cần thiết của người lập trình
II.Chuẩn bị của GV và HS:
+ Giáo viên:
-Giáo án, SGK
-Phòng máy có cài sẵn chương trình Pascal để dạy
-Máy chiếu (Projector) để chiếu một số chương trình đã cài đặt
+ Học sinh:
-Xem bài trước khi thực hành
-SGK, các dụng cụ học tập
III Phương pháp:
-Diễn giảng
-Phát vấn
-Giải quyết vấn đề
-Trực quan
IV Tiến trình lên lớp:
1 Ổn định lớp: Kiểm tra sỉ số, ghi sổ đầu bài
2 Kiểm tra bài cũ:
-HS1: VCT nhập vào hai số nguyên Hoán vị hai số? Yêu cầu sử dụng thủ tục để hoán vị hai số -HS2: VCT tìm số nhỏ nhất của 4 số nguyên được nhập từ bàn phím? Sử dụng hàm VCT
Hướng dẫn(trả lời):
HS1:
Program VIDU2;
Uses crt;
Var a,b:integer;
Procedure HD(var x,y:integer);
Var TG: Integer;
Begin
TG:=a;a:=b;b:=TG;
End;
Begin
Clrscr;
Write(‘A=’);Readln(A);
Write(‘B=’);Readln(B);
HD(a,b);
Writeln(a:6,b:6);
End.
HS2:
Program Minbaso;
Uses crt;
Var a,b,c,d:real;
Function Min(a,b:Real):Real;
Begin
If a<b then min:=a
End;
Begin
Clrscr;
Write(‘ Nhap A,B,C,D=‘);
readln(a,b,c,d);
Writeln(‘Min la’,Min(Min(Min(a,b),c),d));
Readln;
Trang 2TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
3 Bài mới:
Hoạt động 1: Tìm hiểu hai thủ thục cắt dán Catdan(s1,s2) và thủ tục căn giữa
Cangiua(s):
1 Tìm hiểu hai thủ thục cắt dán
Catdan(s1,s2) và thủ tục căn giữa Cangiua(s):
Giúp cho HS hiểu được hai
thủ tục sẽ được dùng trong
chương trình
Gọi HS đọc câu a thủ tục
catdan() trong sách giáo
khoa trang 103
Thủ tục trên nhận vào là gì
và kết quả là gì?
Chiếu thủ thục cho HS xem
Type ST=string[79];
Procedure catdan(s1:ST;
var s2:ST);
Begin
S2:=copy(s1,2,length(s1)-1)+s1[1];
End;
Vào xâu S1 là một xâu không quá 79 kí tự
Ra xâu S2 thu được từ xâu S1 bằng việc chuyển kí tự đầu tiên của nó xuống vị trí cuối của xâu
VD: s1=’abcd’ thì s2=’bcda’;
Procedure catdan(s1:ST; var s2:ST);
Begin S2:=copy(s1,2,length(s1)-1)+s1[1];
End;
Gọi HS đọc câu a thủ tục
cangiua() trong sách giáo
khoa
Thủ tục căn giữa đầu vào là
gì? Đầu ra là gì?
Trên màn hình người ta
chia ra 25x80 (25 dòng, 80
cột)
Chiếu thủ tục cho HS xem
Vào là xâu s gồm không quá 79
kí tự
Ra xâu kí tự s ban đầu được căn giữa dòng(80 kí tự) với 1 kí tự trống ‘ ’
Var i,n: integer;
Begin n:=length(s);
n:=(80-n) div 2; {80 chia 2}
for i:=1 to n do s:=’ ‘+s;
End;
Hoạt động 2: Theo dõi cách viết và sử dụng các thủ tục trên:
Trang 3TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
2.Sử dụng 2 thủ tục trên ta viết chương trình nhâp vào một xâu
từ bàn phím và đưa ra màn hình
có dạng dòng chữ chạy giữa màn hình văn bản 25x80
Chiếu chương trình lên cho
học sinh xem
Yêu cầu HS giải thích từng
câu lệnh trong chương
trình
Giải thích cho học sinh các
thủ tục:
Gotoxy(x,y): chuyển con
trỏ màn hình đến vị trí cột
x, dòng y trên màn hình
delay(n) dừng trạng thái
của màn hình trong n
miligiây
Keypressed: chờ nhận một
phím bất kì từ bàn phím
Chạy chương trình trên với
dòng chữ:
‘ Mung nghin nam Thang Long
– Ha Noi !’
Quan sát chương trình
Program Caub;
Uses crt;
Type ST=string[79];
Var s1,s2:ST;
Stop:boolean;
Type ST=string[79];
Procedure catdan(s1:ST; var s2:ST);
Begin S2:=copy(s1,2,length(s1)-1)+s1[1];
End;
Procedure cangiua(var s:ST);
Var I,n: Integer;
Begin n:=length(s);
n:=(80-n) div 2;
for i:=1 to n do s:=’ ‘+s;
End;
Begin Clrscr;
Write(‘ nhap s1’);
Readln(s1);
Cangiua(s1);
Clrscr;
Stop:=false;
While not(stop) do Begin
Gotoxy(1,12);write(s1);
Delay(500);
Catdan(s1,s2);
S1:=s2;
Stop:=keypressed;
End;
Readln;
End
4 Củng cố:
Trang 4TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
vào xâu S2 tại vị trí cuối cùng
-Căn giữa: đưa con trỏ về tại vị trí giữa màn
hình 20 dòng 80 cột (25x80)
Cách viết và sử dụng chương trình:
-Nhập chương trình
-Hai thủ tục Gotoxy(x,y); delay(n);
-Chạy chương trình
Gotoxy(x,y): chuyển con trỏ màn hình đến vị trí
cột x, dòng y trên màn hình
delay(n) dừng trạng thái của màn hình trong n
miligiây
5 Dặn dò:
Về nhà học bài và làm các bài tập sau:
1 Viết thủ tục tìm UCLN của hai số nguyên dương a,b
2 Viết thủ tục nhập của bảng số nguyên có 4 dòng 5 cột
3 Viết thủ tục In ra màn hình bảng số nguyên bài 2
Xem tiếp câu C Viết chương trình có sử dụng thủ tục chạy chữ.
Tiết sau thực hành trên máy
Trang 5TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRèNHCONVÀLẬPTRèNHCểCẤUTRÚC
===========================================================
10/12/2007
BÀI TẬP VÀ THỰC HÀNH 07 I.Mục đích yêu cầu:
A.Về kiến thức:
Tiếp tục củng cố cho học sinh lại kiến thức đó học về chương trỡnh con như: khỏi niệm
chương trỡnh con và phõn loại chương trỡnh con là Hàm và thủ tục
Cấu trỳc của chương trỡnh con, tham số hỡnh thức, tham số thực sự và cỏch gọi chương
trỡnh con, Biến toàn cục, biến cục bộ………
Yờu cầu học sinh nhắc lại tham số thực sự, biến cục bộ, biến toàn cục, tham số giỏ trị,
tham số biến
Cho học sinh làm một số bài tập đơn giản, trắc nghiệm khỏch quan
B.Về kỹ năng:
Rốn luyện cho học sinh kĩ năng lập trỡnh, vận dụng cõu lệnh cú cấu trỳc để giải quyết bài
toỏn
Học sinh cần ỏp dụng cỏc hàm và thủ tục đó học để giải một số bài toỏn đơn giản
C.Về thái độ:
Tiếp tục rốn luyện cho học sinh phẩm chất của người lập trỡnh như tinh thần hợp tỏc, làm
việc theo nhúm, tuõn thủ cỏc yờu cầu của một cụng việc chung
Tiếp tục xõy dựng lũng ham muốn trong lập trỡnh để giải quyết cỏc bài toỏn bằng mỏy
tớnh
Học sinh tự giỏc, chủ động, tớch cực trong giải quyết cỏc bài tập và xõy dựng phẩm chất
cần thiết của người lập trỡnh
Học sinh tự rốn luyện cỏc kĩ năng cơ bản trong việc tổ chức và sử dụng chương trỡnh con
trong lập trỡnh một cỏch cú hiệu quả
II.Chuẩn bị của thầy và trò:
1.Chuẩn bị của thầy:
Giáo án, SGK
Một số đồ dùng dạy học có liên quan đến bài dạy
Sử dụng bảng, (nếu có máy chiếu thì tốt)
2.Chuẩn bị của trò:
Xem bài trước khi đến lớp
Một số dụng cụ học tập
3.Phương pháp
Diễn giảng
Thuyết trỡnh và phỏt vấn
Giải quyết vấn đề
Trực quan
III.Hoạt động:
1 Ổn định lớp: Kiểm tra sỉ số, ghi sổ đầu bài (1’)
2 Kiểm tra bài cũ:
HS1: Viết thủ tục ở cõu 1 trong bài thực hành 06?
HS2: Viết thủ tục ở cõu 2 trong bài thực hành 06?
Hướng dẫn(tró lời):
HS1:
Procedure cau1(a,b:integer;var I:integer);
Var du: Integer;
Begin Du:=a mod b;
A:=b; b:=du;
Trang 6TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
HS2:
Type AA=array[1 4,1 5] of Integer;
Procedure cau2(Var a:AA);
Var I,j : byte;
Begin
For I:=1 to 4 do
For j:=1 to 5 do
Begin
Write(‘ Nhap’);readln(A[I,j]);
End;
End;
Trang 7TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
Đặt vấn đề:
Củng cố lại kiến thức đã học ở phần hàm và thủ tục học sinh nắm được chức năng của
hai thủ tục catdan() và canhgiua() Biết được ý nghĩa của các tham số trong từng chương trình
con
Giúp cho HS hiểu được
các hàm và thủ tục sẽ được
dùng trong chương trình
Gọi HS đọc câu a và
viết các hàm và thủ tục
trong sách giáo khoa trang
105
Ta xây dựng các hàm
và thủ tục sau:
HS: Theo dõi sự hướng dẫn của
GV về nhà viết các hàm và thủ tục trong SGK
HS: Tìm hiểu các hàm và thủ tục thực hiện tính độ dài các cạnh, chu vi, diện tích, kiểm tra các tính chất đều, cân, vuông của tam giác được trình bày dưới đây
Câu a:
Type diem=record X,y:real;
End;
Tamgiac=record A,B,C:diem;
End;
Thủ tục nhận dữ liệu
vào là biến mô tả tam giác
R và dữ liệu ra là độ dài
của 3 cạnh a,b,c
Procedure daicanh(var r:
Tamgiac; var a,b,c: real);
Procedure daicanh ( Var r:Tamgiac; var a,b,c: real);
Begin A:=kh_canh(R.B,R.C);
B:=kh_canh(R.A,R.C);
C:=kh_canh(R.B,R.A);
End;
Procedure daicanh ( Var r:Tamgiac; var a,b,c: real);
Begin A:=kh_canh(R.B,R.C);
B:=kh_canh(R.A,R.C);
C:=kh_canh(R.B,R.A);
End;
Hàm tính chu vi của
tam giác R
Function Chuvi ( Var R:
tamgiac) : Real;
Function Chuvi( Var R:
tamgiac):Real;
Var a,b,c: real;
Begin Daicanh(R,a,b,c);
Chuvi:=a+b+c;
End;
Function Chuvi( Var R:
tamgiac):Real;
Var a,b,c: real;
Begin Daicanh(R,a,b,c);
Chuvi:=a+b+c;
End;
Hàm tính diện tích của
tam giác R
Function dientich ( Var R:
tamgiac) : Real;
Function dientich ( Var R : tamgiac) : Real;
Var a,b,c,p: real;
Begin Daicanh(R,a,b,c);
P:=(a+b+c)/2;
Dientich:=sqrt(p*(p-a)*(p-b)*(p*c));
End;
Function dientich ( Var R : tamgiac) : Real;
Var a,b,c,p: real;
Begin Daicanh(R,a,b,c);
P:=(a+b+c)/2;
Dientich:=sqrt(p*(p-a)*(p-b)*(p*c));
End;
Thủ tục nhận đầu vào
là biến mô tả tam giác R và
đầu ra tính chất của tam
giác (deu hay can hay
vuong);
Procedure tinhchat( var R:
deu,can,vuong:boolean);
Procedure tinhchat( var R:
deu,can,vuong:boolean);
Var a,b,c:real;
Begin Deu:=false;can:=false;
Vuong:=false;
Daicanh(R,a,b,c);
If (abs(a-b)<eps) and (abs(a-c)
<eps) then deu:=true Else
If (abs(a-b)<eps) or (abs(a-c)
<eps) or (abs(b-c)<eps) then can:=true;
Procedure tinhchat( var R:
deu,can,vuong:boolean);
Var a,b,c:real;
Begin Deu:=false;can:=false;
Vuong:=false;
Daicanh(R,a,b,c);
If (abs(a-b)<eps) and (abs(a-c)
<eps) then deu:=true Else
If (abs(a-b)<eps) or (abs(a-c)
<eps) or (abs(b-c)<eps) then can:=true;
Trang 8TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
(abs(b*b+c*c-a*a)<eps) then vuong:=true;
End;
End;
(abs(b*b+c*c-a*a)<eps) then vuong:=true;
End;
End;
Thủ tục hiện thị toạ độ
3 đỉnh tam giác lên màn
hình
Procedure hienthi ( var :
R:tamgiac);
Procedure hienthi(var:
R:tamgiac);
Begin Writeln(‘toa do 3 dinh’);
Writeln(‘A’,R.A.X,R.A.Y);
Writeln(‘B’,R.B.X,R.B.Y);
Writeln(‘C’,R.C.X,R.C.Y);
End;
Procedure hienthi(var:
R:tamgiac);
Begin Writeln(‘toa do 3 dinh’);
Writeln(‘A’,R.A.X,R.A.Y);
Writeln(‘B’,R.B.X,R.B.Y);
Writeln(‘C’,R.C.X,R.C.Y);
End;
Hàm tích khoảng cách
giữa 2 điểm p,q
Function
Kh_cach(p,q:diem):real;
Function Kh_cach(p,q:diem):real;
Begin Kh_cach:=sqrt((p.x+q.x)*((p.y+
q.y)*((p.c+q.c));
End;
Function Kh_cach(p,q:diem):real;
Begin Kh_cach:=sqrt((p.x+q.x)*((p.y+
q.y)*((p.c+q.c));
End;
Câu b
GV: Tìm hiểu chương trình
nhập vào độ dài 3 cạnh tam
giác và sử dụng các hàm và
thủ tục được xây dựng trên
để khảo sát tính chất của
tam giác
GV: Gọi HS giải thích
nhiệm vụ từng chương
trình con và cho biết chức
năng
HS: Theo dõi sự hướng dẫn của
GV
Uses crt;
Const eps=1.0E-6;
Type diem=record X,y:real;
End;
Tamgiac=record A,B,C:diem;
End;
Var T: tamgiac;
Cau,deu,vuong:boolean;
Function Kh_cach(p,q:diem):real;
Begin Kh_cach:=sqrt((p.x+q.x)*((p.y+
q.y)*((p.c+q.c));
End;
Procedure daicanh ( Var r:Tamgiac; var a,b,c: real);
Begin A:=kh_canh(R.B,R.C);
B:=kh_canh(R.A,R.C);
C:=kh_canh(R.B,R.A);
End;
Function Chuvi( Var R:
tamgiac):Real;
Var a,b,c: real;
Begin Daicanh(R,a,b,c);
Chuvi:=a+b+c;
End;
Function dientich ( Var R : tamgiac) : Real;
Var a,b,c,p: real;
Begin
Trang 9TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
Daicanh(R,a,b,c);
P:=(a+b+c)/2;
Dientich:=sqrt(p*(p-a)*(p-b)*(p*c));
End;
Procedure hienthi(var:
R:tamgiac);
Begin Writeln(‘toa do 3 dinh’);
Writeln(‘A’,R.A.X,R.A.Y);
Writeln(‘B’,R.B.X,R.B.Y);
Writeln(‘C’,R.C.X,R.C.Y);
End;
Procedure tinhchat( var R:
deu,can,vuong:boolean);
Var a,b,c:real;
Begin Deu:=false;can:=false;
Vuong:=false;
Daicanh(R,a,b,c);
If (abs(a-b)<eps) and (abs(a-c)
<eps) then deu:=true Else
If (abs(a-b)<eps) or (abs(a-c)
<eps) or (abs(b-c)<eps) then can:=true;
If (abs(a*a+b*b-c*c)<eps) or (abs(a*a+c*c-b*b)<eps) or (abs(b*b+c*c-a*a)<eps) then vuong:=true;
End;
End;
BEGIN Writeln(‘ nhap tam giac’);
Writeln(‘A’);readln(T.A.X,T.A
Y);
Writeln(‘B’);readln(T.B.X,T.B
Y);
Writeln(‘C’);readln(T.C.X,T.C
Y);
Writeln(‘============’);
Hienthi(t);
Writeln(‘DienTich’,dientich(T);
Writeln(‘Chu vi’,chuvi(T);
Tinhchat(T,deu,cau,vuong);
Writeln(‘ Tam giac co tinh ’);
If deu then writeln(‘deu’) Else
If can then writeln(‘Can’);
If vuong then writeln(‘vuong’);
Trang 10TRƯỜNG PTTH ĐẠI AN CHƯƠNG6:CHƯƠNGTRÌNHCONVÀLẬPTRÌNHCÓCẤUTRÚC
Mở rộng cho học sinh về
nhà chuẩn hoá chương
trình với nội dung như sau:
Cho tệp dữ liệu
TAMGIAC.DAT có cấu
trúc như sau:
-Dòng đầu tiên chứa số N
-N dòng tiếp theo mỗi dòng
chứa các số thực
Xa,Ya,Xb,Yb,Xc,Yc là độ
dài 3 đỉnh tam giác
A(Xa,Ya),B(Xb,Yb),
C(Xc,Yc) của tam giác
ABC
Hãy nhập dữ liệu từ tệp đã
cho và trong số N tam giác
đó, đưa ra tệp
TAMGIAC.OUT gồm 3
dòng
-Dòng đầu tiên là số lượng
tam giác đều
-Dòng thứ hai là số lượng
tam giác cân
-Dòng thứ ba là số lượng
tam giác Vuông
HS: Theo dõi sự hướng dẫn của
GV suy nghĩ về nhà làm bài tập
4 CỦNG CỐ
Củng cố kiến thức đã học đối với chương trình con (hàm và thủ tục)
Rèn luyện kĩ năng lập trình của học sinh
Củng cố lại vai trò chức năng của hàm và thủ tục Cách gọi chương trình con
Nâng cao kĩ năng viết và sử dụng chương trình con khi giải bài tập
5 DẶN DÒ:
Về nhà học bài và làm các bài tập sau:
1 Cho tệp dữ liệu TAMGIAC.DAT có cấu trúc như sau:
-Dòng đầu tiên chứa số N
-N dòng tiếp theo mỗi dòng chứa các số thực Xa,Ya,Xb,Yb,Xc,Yc là độ dài 3 đỉnh tam
giác A(Xa,Ya),B(Xb,Yb), C(Xc,Yc) của tam giác ABC
Hãy nhập dữ liệu từ tệp đã cho và trong số N tam giác đó, đưa ra tệp TAMGIAC.OUT
gồm 3 dòng
-Dòng đầu tiên là số lượng tam giác đều
-Dòng thứ hai là số lượng tam giác cân
-Dòng thứ ba là số lượng tam giác Vuông
2 Viết hàm tính giá trị của đa thức f(x)=x10+x9+…….x2+x+1 Với x là số thực
3 Cho dãy 100 số thực Hãy viết hàm tìm số lớn nhất (số nhỏ nhất) của dãy
Xem trước bài THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN.
============================