Lý thuyết và bài tập thực hành có lời giải bồi dưỡng học sinh giỏi tin học 11 cực chuẩn năm 2014

44 2.7K 25
Lý thuyết và bài tập thực hành có lời giải bồi dưỡng học sinh giỏi tin học 11 cực chuẩn năm 2014

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bạn đang lúng túng trong việc biên soạn một tài liệu để giảng dạy phần lý thuyết chuyên đề bồi dưỡng học sinh giỏi tin 11, thì đây chính là tài liệu thực sự bạn cần. Tôi đã tìm hiểu biên soạn và đưa vào giảng dạy hiệu quả phần lý thuyết. Các bài tập thực hành được đưa vào minh họa từ dễ đến khó. Trích đoạn: Bài 5. Kiểu dữ liệu tệp 1. Vai trò của kiểu tệp Dữ liệu kiểu tệp có những đặc điểm sau: + Được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, CD, . . .) và không bị mất khi tắt nguồn điện vào máy + Lượng thông tin lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa. 2. Thao tác với tệp Hai thao tác cơ bản đối với tệp là ghi dữ liệu vào tệp và đọc dữ liệu từ tệp a. Khai báo tệp văn bản : VAR : TEXT; Vd: Var f1, f2 : text; b. Sơ đồ thao tác với tệp: c. Cú pháp: Ví dụ:  Một số hàm và thủ tục thông dụng: • Hàm EOF (): trả về giá trị TRUE khi con trỏ tệp đã ở vị trí cuối tệp. • Hàm EOLN(): trả về giá trị TRUE khi con trỏ tệp đã ở vị trí cuối dòng. BÀI TẬP ÁP DỤNG Bài 1. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Đọc dữ liệu từ tệp SN.INP rồi ghi vào tệp SN1.OUT tổng giá trị các phần tử đó. Bước 1. Mở Pascal, tạo tệp số nguyên rồi lưu trên máy với tên tệp là SN.INP Bước 2. Mở màn hình Pascal mới và lập trình. Bước 3. Chạy chương trình. Vì tệp kết quả được lưu trên bộ nhớ ngoài với tên là SN1.OUT, ta sẽ mở xem kết quả bằng cách nhấn File  Open (hoặc F3)  chọn tên SN1.OUT  OK. program Tep1; var f1,f2:text; s,x:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN1.OUT); rewrite(f2); s:=0; while not eof(f1) do begin read(f1,x); s:=s+x; end; write(f2,Ket qua la: ,s); close(f1); close(f2); end. Bài 2. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Tìm phần tử lớn nhất có trong tệp SN.INP rồi ghi vào tệp SN2.OUT giá trị lớn nhất đó. program Tep2; var f1,f2:text; max,x:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN2.OUT); rewrite(f2); read(f1,max); while not eof(f1) do begin read(f1,x); if x>max then max:=x end; write(f2,Max la: ,max); close(f1); close(f2); end. Bài 3. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Tìm phần tử lớn nhất có trong tệp SN.INP rồi ghi vào tệp SN3.OUT giá trị lớn nhất và cho biết vị trí đó. program Tep3; var f1,f2:text; max,x,d,vt:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN3.OUT); rewrite(f2); read(f1,max); d:=1; while not eof(f1) do begin read(f1,x); d:=d+1; if x>max then begin max:=x; vt:=d; end; end; writeln(f2,Max la: ,max); write(f2,Vi tri Max la: ,vt); close(f1); close(f2); end. Bài 4. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Tìm phần tử lớn nhất theo từng dòng trong tệp SN.INP rồi ghi vào tệp SN4.OUT giá trị lớn nhất theo từng dòng tương ứng. program bt21; var f1,f2:text; max,x,d:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN4.OUT); rewrite(f2); d:=0; while not eof(f1) do begin read(f1,max); while not eoln(f1) do begin read(f1,x); if x>max then max:=x; end; d:=d+1; readln(f1); writeln(f2,Max dong ,d, la: ,max); end; close(f1); close(f2); end. Bài 5. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Tìm phần tử lớn nhất theo từng dòng trong tệp SN.INP rồi ghi vào tệp SN5.OUT giá trị lớn nhất theo từng dòng tương ứng và cho biết vị trí. program Tep5; var f1,f2:text; max,x,d,t,vt:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN5.OUT); rewrite(f2); d:=0; while not eof(f1) do begin read(f1,max); t:=1; while not eoln(f1) do begin read(f1,x); t:=t+1; if x>max then begin max:=x; vt:=t; end; end; d:=d+1; readln(f1); writeln(f2,Max dong ,d, la: ,max, o vi tri ,vt); end; close(f1); close(f2); end. Bài 6. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Đọc dữ liệu từ tệp SN.INP rồi ghi vào tệp SN6.OUT sao cho các phần tử được sắp xếp tăng dần. program Tep6; var f1,f2:text; A:array1..100 of integer; x,i,j,n,t:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN6.OUT); rewrite(f2); i:=0; while not eof(f1) do begin read(f1,x); i:=i+1; Ai:=x; end; n:=i; for j:=n downto 2 do for i:=1 to j1 do if Ai > Ai+1 then begin t:=Ai; Ai:=Ai+1; Ai+1:=t; end; writeln(f2,Cac phan tu da duoc sap xep tang dan:); for i:=1 to n do write(f2,Ai, ); close(f1); close(f2); end. Bài 7. Cho tệp SN.INP gồm các số nguyên, ghi trên nhiều dòng. Đọc dữ liệu từ tệp SN.INP rồi ghi vào tệp SN7.OUT sao cho các phần tử được sắp xếp tăng dần theo từng dòng tương ứng. program Tep7; var f1,f2:text; A:array1..100 of integer; x,i,j,n,t,d:integer; begin assign(f1,D:HSG_BTTHSN.INP); reset(f1); assign(f2,D:HSG_BTTHSN7.OUT); rewrite(f2); writeln(f2,Cac phan tu da duoc sap xep tang dan theo tung dong:); d:=0; while not eof(f1) do begin i:=0; while not eoln(f1) do begin read(f1,x); i:=i+1; Ai:=x; end; n:=i; for j:=n downto 2 do for i:=1 to j1 do if Ai > Ai+1 then begin t:=Ai; Ai:=Ai+1; Ai+1:=t; end; d:=d+1; write(f2,Dong ,d,: ); for i:=1 to n do write(f2,Ai, ); writeln(f2); readln(f1); end; close(f1); close(f2); end.

Tài liệu bồi dưỡng HSG tin học Bài 1. CÁC CÂU LỆNH CÓ CẤU TRÚC I. CÂU LỆNH RẼ NHÁNH 1.1. Lệnh IF Cú pháp: Có 2 dạng: (1) Dạng thiếu: IF <Điều kiện > THEN <Câu lệnh>; (2) Dạng đủ: IF <Điều kiện> THEN <Câu lệnh 1> ELSE <Câu lệnh 2>; Sơ đồ thực hiện: <Điều kiện> là một biểu thức logic hay một biểu thức quan hệ có giá trị là TRUE hoặc FALSE. Chú ý: Khi sử dụng câu lệnh IF (2) thì đứng trước từ khoá ELSE không được có dấu chấm phẩy (;). Bài tập 1: Viết chương trình nhập vào một số nguyên và kiểm tra xem số vừa nhập là số chẵn hay số lẻ. Program BT1; Uses crt; Var x:integer; Begin Clrscr; Write('Nhap vao mot so nguyen : '); Readln(x); If x MOD 2=0 Then Writeln('So vua nhap vao la so chan') Else Writeln('So vua nhap vao la so le'); Readln; End. Bài tập 2: Viết chương trình giải phương trình bậc nhất ax+b=0 Program BT1; Uses Crt; Var a,b,x : real; GV: Nguyễn Thị Minh Thu 1 (2) đk Đ S CL1 CL2 (1) đk Đ S CL Giáo án bồi dưỡng HSG Tin học 11 Begin Clrscr; Write('Nhap a = '); Readln(a); Write('Nhap b = '); Readln(b); If a = 0 Then If b = 0 Then { Trường hợp a = 0 và b = 0 } Writeln('Phuong trinh co vo so nghiem') Else { Trường hợp a=0 và b ≠ 0 } Writeln('Phuong trinh vo nghiem') Else { Trường hợp a ≠ 0 } Writeln('Phuong trinh co nghiem la x = ',-b/a:8:2); Readln; End. 1.2. Lệnh CASE Cú pháp: Dạng 1 Dạng 2 CASE <Biểu thức> OF <hằng 1>: <câu lệnh 1>; <hằng 2>: <câu lệnh 2>; <hằng n>: <câu lệnh n>; END; CASE <Biểu thức> OF <hằng 1>: <câu lệnh 1>; <hằng 2>: <câu lệnh 2>; <hằng n>: <câu lệnh n> ELSE <câu lệnh n+1>; END; Trong đó:  <Biểu thức>: Là một biểu thức kiểu vô hướng đếm được như kiểu nguyên, kiểu kí tự,  <Hằng thứ i>: có thể là một giá trị hằng, các giá trị hằng (phân cách nhau bởi dấu phẩy) hoặc các đoạn hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu và giá trị cuối).  Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải có cùng kiểu. Khi gặp lệnh CASE, chương trình sẽ kiểm tra: - Nếu giá trị của <biểu thức> nằm trong tập <hằng i> thì máy sẽ thực hiện <câu lệnh i> tương ứng. - Ngược lại: + Đối với dạng 1: Không làm gì cả. + Đối với dạng 2: thực hiện lệnh <câu lệnh n+1> GV: Nguyễn Thị Minh Thu 2 Giáo án bồi dưỡng HSG Tin học 11 Bài tập 3: Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu niên, thanh niên, trung niên hay lão niên. Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 là thanh niên, từ 40 đến 60 là trung niên và lớn hơn 60 là lão niên. Program BT3; Uses crt; Var tuoi:Byte; Begin Clrscr; Write(’Nhap vao tuoi cua mot nguoi:'); Readln(tuoi); Case tuoi Of 1 17: Writeln(’Nguoi nay la thieu nien'); 18 39: Writeln(’Nguoi nay la thanh nien'); 40 60: Writeln(’Nguoi nay la trung nien'); Else Writeln(’Nguoi nay la lao nien'); End; Readln; End. Bài tập 4: Lập trình nhập tháng, năm. Tính số ngày của tháng đó. Hướng dẫn: Ta biết các tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày, 4, 6, 9, 11 có 30 ngày. Riêng tháng 2 của năm nhuận có 29 ngày còn các năm không nhuận thì có 28 ngày. Program BT4; uses crt; var thang, songay: byte; nam: integer; Begin clrscr; write('Nhap thang: '); readln(thang); write('Nhap nam: '); readln(nam); case thang of 1, 3, 5, 7, 8, 10: songay:=31; 4, 6, 9, 11: songay:=30; 2: if (nam mod 400 =0) or ((nam mod 4=0) and (nam mod 100 <>0)) then songay:=28 else songay:=29; end; Write('So ngay cua thang ',thang,' nam ',nam,' la ',songay,' ngay'); readln end. BÀI TẬP THỰC HÀNH Bài tập 1: Viết chương trình nhập vào từ bàn phím: giờ, phút, giây. Cộng thêm một số giây cũng được nhập từ bàn phím. Hãy in ra kết quả sau khi cộng xong. Gợi ý: - Gọi số giây được cộng thêm là: s. Gán giây:=giây+s. - Nếu giây≥60 thì: phút:=phút + giây DIV 60 và giây:=giây MOD 60. GV: Nguyễn Thị Minh Thu 3 Giáo án bồi dưỡng HSG Tin học 11 - Nếu phút≥60 thì: giờ:=giờ + phút DIV 60 và phút:=phút MOD 60. Bài tập 2: Viết chương trình tìm Max, Min của 4 số: a, b, c, d. II. CÂU LỆNH LẶP 2.1. Vòng lặp xác định Có hai dạng sau:  Dạng tiến FOR <biến đếm>:=<giá trị đầu> TO <giá trị cuối> DO <Câu lệnh> ;  Dạng lùi FOR <biến đếm>:=<giá trị cuối> DOWNTO <giá trị đầu> DO <Câu lệnh>; Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:  <Biến đếm> là biến đơn, thường có kiểu nguyên  <Giá trị đầu> và <Giá trị cuối> là các biểu thức cùng kiểu với biến đếm  <Giá trị đầu> bé hơn hoặc bằng < Giá trị cuối>  Nếu <Giá trị đầu> lớn hơn < Giá trị cuối> thì vòng lặp không thực hiện được  Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm. 2.2. Vòng lặp không xác định Dạng REPEAT Dạng WHILE Repeat <Dãy câu lệnh>; Until <Điều kiện>; While <Điều kiện> Do <Câu lệnh>; Ý nghĩa: • Dạng REPEAT: Lặp lại <Dãy câu lệnh> cho đến khi biểu thức <Điều kiện> TRUE thì dừng. • Dạng WHILE: Trong khi <Điều kiện> TRUE thì tiếp tục thực hiện <Câu lệnh>. GV: Nguyễn Thị Minh Thu 4 Repeat <Câu lệnh> Đk Đ S Thoát While Đk Đ S Thoát <Câu lệnh> Giáo án bồi dưỡng HSG Tin học 11 Bài tập 1: Viết chương trình tính tổng S = 1+2+ +N. Cách 1: Dùng vòng lặp FOR. Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; For i:=1 to N do S:=S+i; Writeln('Ket qua la :',S); Readln; End. Cách 2: Dùng vòng lặp REPEAT. Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; i:=1; Repeat S:=S+i; i:=i+1; Until i>N; Writeln('Ket qua la :',S); Readln; End. Cách 3: Dùng vòng lặp WHILE. Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; i:=1; While i<=N Do GV: Nguyễn Thị Minh Thu 5 Giáo án bồi dưỡng HSG Tin học 11 Begin S:=S+i; i:=i+1; End; Writeln('Ket qua la :',S); Readln; End. (Vậy đối với bài toán trên ta thấy số lần lặp đã được biết trước ta sử dụng cách 1 ngắn gọn, đơn giản hơn) Bài tập 2: Viết chương trình nhập vào N số nguyên từ bàn phím. Hãy tính và in ra màn hình tổng của các số vừa được nhập vào. Ý tưởng: Dùng phương pháp cộng dồn. Cho vòng lặp FOR chạy từ 1 tới N, ứng với lần lặp thứ i, ta nhập vào số nguyên X và đồng thời cộng dồn X vào biến S. Program Tong; Uses crt; Var n,S,i,x : Integer; Begin Clrscr; S:=0; Write(’Nhap so luong so nguyen: ’); Readln(n); For i:=1 To n Do Begin Write('Nhap so nguyen thu ',i,’: ’); Readln(x); S:=S+x; End; Writeln(’Tong cac so duoc nhap vao la: ’,S); Readln; End. Bài tập 3: Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc. Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào. Ý tưởng: Bài toán này không biết chính xác số lần lặp nên ta không thể dùng vòng lặp FOR. Vì phải nhập vào số nguyên N trước, sau đó mới kiểm tra xem N=0? Do đó ta nên dùng vòng lặp REPEAT. Program Nhapso; Uses crt; Var N,dem : Integer; Begin Clrscr; dem:=0; Repeat GV: Nguyễn Thị Minh Thu 6 Giáo án bồi dưỡng HSG Tin học 11 Write('Nhap vao mot so nguyen N= '); Readln(N); If N MOD 2 = 0 Then dem:=dem+1; Until N=0; Writeln(’Cac so chan duoc nhap vao la: ’,dem); Readln; End. Bài tập 4: Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N. Ý tưởng: Cho biến i chạy từ 1 tới N div 2. Nếu N MOD i=0 thì viết i ra màn hình. Program Uoc_so; Uses Crt; Var N,i : Integer; Begin Clrscr; Write('Nhap so nguyen N= '); Readln(N); For i:=1 To N div 2 Do If N MOD i=0 Then Write(i,’ ’); Readln; End. Bài tập 1: Viết chương trình tìm USCLN và BSCNN của 2 số a, b được nhập vào từ bàn phím. Ý tưởng: - Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng. Lúc đó: USCLN=a. - BSCNN(a,b) = a*b DIV USCLN(a,b). Program USCLN_BSCNN; Uses crt; Var a,b,aa,bb:integer; Begin Write('Nhap a : '); Readln(a); Write('Nhap b : '); Readln(b); aa:=a; bb:=b; While aa<>bb Do Begin If aa>bb Then aa:=aa-bb Else bb:=bb-aa; End; Writeln('USCLN= ',aa); Writeln('BSCNN= ',a*b DIV aa); Readln; End. GV: Nguyễn Thị Minh Thu 7 Giáo án bồi dưỡng HSG Tin học 11 Bài tập 5: Viết chương trình tìm các số có 3 chữ số abc sao cho: abc = a 3 + b 3 + c 3 . Ý tưởng: Dùng phương pháp vét cạn. Ta biết rằng: a có thể có giá trị từ 1→9 (vì a là số hàng trăm), b,c có thể có giá trị từ 0→9. Ta sẽ dùng 3 vòng lặp FOR lồng nhau để duyệt qua tất cả các trường hợp của a,b,c. Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a 3 + b 3 + c 3 thì in ra bộ abc đó. Program Tim_so; Uses crt; Var a,b,c : Word; Begin For a:=1 To 9 Do For b:=0 To 9 Do For c:=0 To 9 Do If (100*a + 10*b + c)=(a*a*a + b*b*b + c*c*c) Then Writeln(a,b,c); Readln; End. ********************************************************* BÀI TẬP CÁC CÂU LỆNH CÓ CẤU TRÚC Bài tập 1: Viết chương trình nhập vào số tự nhiên N > 0 rồi thông báo lên màn hình số đó có phải là số nguyên tố hay không. Ý tưởng: - Ta biết số nguyên tố là số có 2 ước số là 1 và chính nó. - Vậy 1 không phải là số nguyên tố - Ở chương trình lớp 10, ta biết có thuật toán tìm số nguyên tố như sau: x là số nguyên tố nếu x không chia hết cho các số chạy từ 2 đến phần nguyên căn bậc 2 của x . Program Nguyen_to; uses crt; var x,u:word; Begin clrscr; Write('Nhap x:'); readln(x); if x=1 then write(x,' khong phai la so nguyen to') else begin u:=2; while (u<=sqrt(x)) and (x mod u <>0) do u:=u+1; if u> sqrt(x) then write(x,' la so nguyen to') else write(x,' khong phai la so nguyen to'); GV: Nguyễn Thị Minh Thu 8 Giáo án bồi dưỡng HSG Tin học 11 end; readln end. Bài tập 2: Viết chương trình giải phương trình bậc hai: ax 2 + bx + c = 0, a≠0. Gợi ý: Xem sgk Tin 11. - Tính Delta=b*b-4*a*c. - Biện luận: Delta<0: Phương trình vô nghiệm. Delta=0: Phương trình có nghiệm kép: x = -b/(2*a). Delta>0: Phương trình có 2 nghiệm phân biệt: x 1,2 = (-b±SQRT(Delta))/(2*a). Bài tập 3: Lập trình tính S= 1 3 + 2 3 + 3 3 + … + n 3 Bài tập 4: Lập trình tính tổng sau (với x là số thực <=1 nhập từ bàn phím) S= x – x 3 /3 + x 5 /5 – x 7 /7 + … + cho đến khi | (-1) n .x 2n+1 /(2n+1)| Program Tong; uses crt; var T,x,s:real; dau, n:integer; Begin clrscr; repeat write('nhap x <=1: '); readln(x); until x<=1; S:=x; dau:= 1; n:=0; T:=x; while abs(dau*S/(2*n+1)) >= 0.0001 do begin S:=S*x*x; n:=n+1; dau:=dau*(-1); T:=T + dau*S/(2*n+1); end; write('Ket qua = ', T:0:5); readln end. Bài tập 5: Viết chương trình in ra màn hình các giá trị của bảng mã ASCII từ 0→255. Gợi ý: Cho biến i chạy từ 0 → 255. In ra màn hình i và CHR(i). Program ASCCI; uses crt; var i: byte; c:char; Begin clrscr; Writeln('BANG MA ASCCI:'); For i:=1 to 255 do begin writeln(' ',i,' : ','la ki tu ',CHR(i)); if i mod 40 = 0 then readln; GV: Nguyễn Thị Minh Thu 9 Giáo án bồi dưỡng HSG Tin học 11 end; readln end. Một số hàm chuẩn cho kiểu kí tự: ORD(X): Cho giá trị là số thứ tự của kí tự X trong bảng mã ASCII VD: ORD(’A’) cho giá trị là 65 ORD(’B’) cho giá trị là 66 CHR(n): Cho giá trị là kí tự có số thứ tự n trong bảng mã ASCII VD: CHR(65) cho giá trị là kí tự ’A’ CHR(66) cho giá trị là kí tự ’B’ *************************************************** BÀI TẬP THỰC HÀNH Bài tập 1: Viết chương trình in ra màn hình các số nguyên từ 1 đến 100 sao cho cứ 10 số thì xuống dòng. Gợi ý: Cho biến i chạy từ 1 → 100. In ra màn hình i và kiểm tra: nếu i MOD 10=0 thì WRITELN. Bài tập 2: Viết chương trình in ra màn hình bảng cữu chương. Gợi ý: Dùng 2 vòng lặp FOR lồng nhau: i là số bảng cữu chương (2 9), j là số thứ tự trong từng bảng cữu chương (1 10). For i:=2 To 9 Do For j:=1 To 10 Do Writeln(i,’ x ’,j,’ = ’,i*j); Bài tập 3: Viết chương trình để tìm lời giải cho bài toán sau: Trong giỏ vừa thỏ vừa gà, Một trăm cái cẳng bốn ba cái đầu. Hỏi có mấy gà mấy thỏ? Bài tập 4: Viết chương trình để tìm lời giải cho bài toán sau: Trăm trâu trăm bó cỏ Bó lại cho tròn Trâu đứng ăn năm Trâu nằm ăn ba Trâu già ba con ăn một bó. Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu già? Bài tập 5: Viết chương trình nhập vào một số nguyên dương. Hãy thông báo lên màn hình số đó có bao nhiêu chữ số và tổng các chữ số của số đó. Gợi ý: Dùng vòng lặp WHILE. Trong khi N>0 thì: lấy ra chữ số cuối cùng của N để tính bằng phép toán MOD 10, sau đó bỏ bớt đi chữ số cuối cùng của N bằng phép toán DIV 10. program bt33; var n:word; d,t:byte; begin write('nhap n'); readln(n); GV: Nguyễn Thị Minh Thu 10 [...]... với tệp là ghi dữ liệu vào tệp và đọc dữ liệu từ tệp a Khai báo tệp văn bản : VAR : TEXT; Vd: Var f1, f2 : text; b Sơ đồ thao tác với tệp: GV: Nguyễn Thị Minh Thu 24 Giáo án bồi dưỡng HSG Tin học 11 c Cú pháp: GV: Nguyễn Thị Minh Thu 25 Giáo án bồi dưỡng HSG Tin học 11 Ví dụ:  Một số hàm và thủ tục thông dụng: GV: Nguyễn Thị Minh Thu 26 Giáo án bồi dưỡng HSG Tin học 11 • • Hàm EOF (=2 GV: Nguyễn Thị Minh Thu 14 Giáo án bồi dưỡng HSG Tin học 11 Bài tập 6: Viết chương trình in ra màn hình tam giác Pascal Ví dụ, với... Bài tập 7: Viết chương trình nhập vào một dòng văn bản, hiệu chỉnh văn bản theo những yêu cầu sau đây và in văn bản sau khi hiệu chỉnh ra màn hình: a Xóa tất cả các ký tự trắng thừa (mỗi từ cách nhau đúng một dấu cách) b Đầu câu, cuối câu không có kí tự trắng c Đầu câu in hoa GV: Nguyễn Thị Minh Thu 23 Giáo án bồi dưỡng HSG Tin học 11 Bài 8: Viết chương trình nhập vào từ... hình thức - x,y,z: là tham số thực sự III THỰC HIỆN CHƯƠNG TRÌNH CON: - Để thực hiện CTC ta phải có lệnh gọi nó - Cú pháp: () Ví dụ: Sqr(100) - Giá trị thực sự truyền vào khi gọi chương trình con: được gọi là Tham số thực sự - Khi có lời gọi CTC xảy ra, tham số thực sự sẽ thay thế cho tham số hình thức IV THAM BIẾN VÀ THAM TRỊ: * Phân biệt tham biến và tham trị: - Tham trị: • Giá... -BÀI TẬP MẪU Bài tập 1: Viết chương trình nhập vào một xâu ký tự từ bàn phím Đổi xâu ký tự đó sang chữ in hoa rồi in kết quả ra màn hình Ví dụ :Xâu abcdAbcD sẽ cho ra xâu ABCDABCD Uses Crt; Var S:String; i:Byte; Begin Clrscr; Write(‘Nhap xau St: ‘); Readln(S); For i:=1 to length(S) do S[i]:=Upcase(S[i]); Write(‘Xau ket qua: ‘, S); Readln; GV: Nguyễn Thị Minh Thu 20 Giáo án bồi dưỡng HSG Tin học 11. .. A[i]:=B[x]; end; until n=1; write(f2,A[1]); close(f1); close(f2); end -Bài 11 Cho tệp văn bản dl1.txt gồm nhiều dòng Viết chương trình chuyển các kí tự đầu tiên của mỗi từ thành kí tự chữ hoa Ghi vào tệp dl2.txt} program Bai11; var f1,f2:text; GV: Nguyễn Thị Minh Thu 32 Giáo án bồi dưỡng HSG Tin học 11 s:string; x,i:integer; begin assign(f1,'dl1.txt'); reset(f1); assign(f2,'dl2.txt');... Minh Thu 34 Giáo án bồi dưỡng HSG Tin học 11 CHƯƠNG TRÌNH CON I KHÁI NIỆM VỀ CHƯƠNG TRÌNH CON Chương trình con (CTC) là một đoạn chương trình thực hiện trọn vẹn hay một chức năng nào đó Trong Turbo Pascal, có 2 dạng CTC: • Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó • Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu integer, real, boolean, char, string …) Hàm có thể sử dụng trong...Giáo án bồi dưỡng HSG Tin học 11 d:=0; t:=0; while n>0 do begin t:=t + n mod 10; n:=n div 10; d:=d+1; end; writeln('So luong chu so: ',d); writeln('Tong cac chu so: ',t); readln end Bài tập 6: Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng chính nó Viết chương trình kiểm tra xem một số được nhập vào từ bàn phím có phải là số hoàn thiện hay không?... gia tri > ',k,' la: '); for i:=1 to x do for j:=1 to y do if b[i,j]> k then write(b[i,j],' readln end GV: Nguyễn Thị Minh Thu '); 16 Giáo án bồi dưỡng HSG Tin học 11 Bài tập 2 : Nhập một ma trận m hàng, n cột từ bàn phím Tính và in ra màn hình tổng của mỗi cột và tổng của mỗi hàng Program BT2; Uses crt; Var A: Array[1 30, 1 30] of Real; n, m, i, j : byte; sum : Real; Begin Clrscr; Write( ‘ Ban muon... tự và in ra màn hình xâu kí tự ngược tương ứng Ví dụ: nhập ‘TRUNG TAM KTTHHN GIO LINH’  ‘HNIL OIG NHHTTK MAT GNURT’ **************************** Bài 5 kiÓu d÷ liÖu tÖp 1 Vai trò của kiểu tệp Dữ liệu kiểu tệp có những đặc điểm sau: + Được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, CD, ) và không bị mất khi tắt nguồn điện vào máy + Lượng thông tin lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào . readln(thang); write('Nhap nam: '); readln (nam) ; case thang of 1, 3, 5, 7, 8, 10: songay:=31; 4, 6, 9, 11: songay:=30; 2: if (nam mod 400 =0) or ( (nam mod 4=0) and (nam mod 100 <>0)) . dưỡng HSG Tin học 11 Bài tập 1: Viết chương trình tính tổng S = 1+2+ +N. Cách 1: Dùng vòng lặp FOR. Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri. crt; Var x:integer; Begin Clrscr; Write('Nhap vao mot so nguyen : '); Readln(x); If x MOD 2=0 Then Writeln('So vua nhap vao la so chan') Else Writeln('So vua nhap vao

Ngày đăng: 04/11/2014, 17:14

Từ khóa liên quan

Mục lục

  • Bài 1. CÁC CÂU LỆNH CÓ CẤU TRÚC

  • BÀI TẬP CÁC CÂU LỆNH CÓ CẤU TRÚC

  • BÀI TẬP THỰC HÀNH

  • Bài 2. KIỂU MẢNG

  • I. KHAI BÁO KIỂU STRING

  • II. TRUY XUẤT DỮ LIỆU KIỂU STRING

  • III. CÁC PHÉP TOÁN TRÊN XÂU KÝ TỰ

  • IV. CÁC THỦ TỤC VÀ HÀM VẾ XÂU KÝ TỰ

    • CHƯƠNG TRÌNH CON

    • II. CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC

      • Dùng hàm

      • II. BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ:

      • ***********************************************************

        • ___________________________

Tài liệu cùng người dùng

Tài liệu liên quan