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.
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 Else min:=b; 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; End. 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): Hđ của GV Hđ của HS Nd ghi bả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): 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’; Quan sát Type ST=string[79]; 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 ‘ ’. Quan sát Procedure cangiua(var s:ST); 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: 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ố: Hđ của Gv Hđ của Hs Có 2 thủ thục đó là cắt dán và căn giữa Lắng nghe -Cắt dán: cắt kí tự đầu của xâu S1 và dán 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: Viết thủ tục tìm UCLN của hai số nguyên dương a,b. Viết thủ tục nhập của bảng số nguyên có 4 dòng 5 cột. 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. =========================================================== Tuần: 27,28 || || Ngày dạy: / / Tiết: 45,46 || || Ngày soạn: 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 While b0 do Begin Du:=a mod b; A:=b; b:=du; End; I:=b; End; 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; Đặ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. Ho¹t ®éng cña thÇy Ho¹t ®éng cña trß Néi dung cña bµi 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: tamgiac ;var deu,can,vuong:boolean); Procedure tinhchat( var R: tamgiac; var 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; Procedure tinhchat( var R: tamgiac; var 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; 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 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: tamgiac; var 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’); Readln; End. 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: 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. 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. 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. ============================
Tài liệu đính kèm: