Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

  • Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10
    Tải app VietJack. Xem lời giải nhanh hơn!

Để học tốt Tin học lớp 11, nội dung bài học là trả lời câu hỏi, giải bài tập Tin học 11 Bài tập và thực hành 3 hay nhất, ngắn gọn. Bên cạnh đó là tóm tắt lý thuyết ngắn gọn và bộ câu hỏi trắc nghiệm Tin học 11 bài Bài tập và thực hành 3 có đáp án.

1. Mục đích, yêu cầu

+ Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn;

Quảng cáo

+ Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.

2. Nội dung

Bài 1 (trang 63 sgk Tin 11): Tạo mảng A gồn n (n<=100) số nguyên, mỗi số có giá trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.

a) Tìm hiểu và chạy thử chương trình sau đây:

Quảng cáo

program sum1; uses crt; const nmax=100; type MyArray=array[1..nmax] of integer; var A:MyArray; s,n,i,k:integer; begin clrscr; randomize; write('Nhap N='); readln(n); for i:=1 to n do A[i]:=random(301)-random(301); for i:=1 to n do write(A[i]:5); writeln; write('Nhap k='); readln(k); s:=0; for i:=1 to n do if A[i] mod k=0 then s:=s+A[i]; writeln('tong can tinh la ',s); readln end.

Quảng cáo

Chú ý: Hàm chuẩn random(n) cho giá trị là số nguyên ngẫu nhiên trong đoạn từ 0 đến n-1, còn thủ tục randomize khởi tạo cơ chế sinh số ngẫu nhiên.

b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhằm sửa đổi chương trình trong câu a) để có được chương trình đưa ra số các số dương và số các số âm trong mảng.

program sum1; uses crt; const nmax=100; type MyArray=array[1..nmax] of integer; var A:MyArray; s,n,i,k,posi,neg:integer; begin clrscr; randomize; write('Nhap N='); readln(n); for i:=1 to n do A[i]:=random(301)-random(301); for i:=1 to n do write(A[i]:5); writeln; s:=0; posi:=0;neg:=0; for i:=1 to n do if A[i] > 0 then posi:=posi+1 else neg:=neg+1; writeln(posi:4,neg:4); readln end.

Bài 2 (trang 64 sgk Tin 11): Viết chương trình tìm phần tử có giá trị lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất.

a) Hãy tìm hiểu chương trình sau đây:

program MaxElement; uses crt; const nmax=100; type MyArray=array[1..nmax] of integer; var A:MyArray; n,i,j:integer; begin clrscr; write('Nhap so luong phan tu cua day so N='); readln(N); for i:=1 to N do begin write('phan tu thu ',i,' ='); readln(A[i]); end; j:=1; for i:=2 to n do if A[i] > A[j] then j:=i; write('Chi so : ',j,'Gia tri: ',A[j]:4); readln end.

Kết quả:

b) Chỉnh sửa chương trình trên để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất.

program MaxElement; uses crt; const nmax=100; type MyArray=array[1..nmax] of integer; var A:MyArray; n,i,j:integer; begin clrscr; write('Nhap so luong phan tu cua day so N='); readln(N); for i:=1 to N do begin write('phan tu thu ',i,' ='); readln(A[i]); end; j:=1; for i:=2 to n do if A[i] > A[j] then j:=i; for i:=1 to n do if A[i]=A[j] then write(i:4); readln end.

Kết quả:

Đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất.

Xem thêm các bài giải bài tập Tin học lớp 11 hay, chi tiết khác:

Giới thiệu kênh Youtube VietJack

  • Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10
    Hỏi bài tập trên ứng dụng, thầy cô VietJack trả lời miễn phí!

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Viết chương trình in ra màn hình các số 1 2 3 4 5 6 7 8 9 10

Nhóm học tập facebook miễn phí cho teen 2k5: fb.com/groups/hoctap2k5/

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.

<span class='text_page_counter'>(1)</span>MỤC LỤC. BÀI TẬP LÀM QUEN..........................................................................................1 PHÉP TOÁN TRONG PASCAL..........................................................................4 CẤU TRÚC RẼ NHÁNH.....................................................................................8 VÒNG LẶP BIẾT TRƯỚC SỐ LẦN LẶP LẠI.................................................19 VÒNG LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC............................................23 KIỂU MẢNG......................................................................................................26 KIỂU XÂU (Chuỗi)............................................................................................31 KIỂU DỮ LIỆU TỆP (FILE/TẬP TIN)..............................................................34 CHƯƠNG TRÌNH CON.....................................................................................37 BÀI TẬP LÀM QUEN 1. Viết chương trình in ra màn hình câu: “Hello World” Begin Writeln(‘Hello World’); Readln; End. 2. In đoạn thơ sau ra màn hình(sử dụng lệnh Write): Thuở còn thơ ngày hai buổi đến trường Yêu quê hương qua từng trang sách nhỏ Ai bảo chăn trâu là khổ Tôi mơ màng nghe chim hót trên cao Gợi ý: Begin Write(‘Thuo con tho ngay hai buoi đen truong’); Write(‘Yêu quê hương qua ….’); … Readln; End. 3. In đoạn thơ sau ra màn hình(sử dụng lệnh Writeln): Thuở còn thơ ngày hai buổi đến trường Yêu quê hương qua từng trang sách nhỏ Ai bảo chăn trâu là khổ Tôi mơ màng nghe chim hót trên cao 4. Viết chương trình tính chu vi và diện tích hình chữ nhật, với chiều dài và chiều rộng là các số nguyên nhập từ bàn phím. VD: CDai=6, CRong=4  ChuVi=20, DienTich=24; CDai=10, CRong=5  ChuVi=30, DienTich=50; CDai=7, CRong=3  ChuVi=20, DienTich=21; Giải: Var d, r: integer; S, cv: integer; Begin Write(‘nhap chieu dai:’);. <span class='text_page_counter'>(2)</span> Readln(d); Write(‘nhap chieu rong:’); Readln(r); cv:=(d+r)*2; S:=d*r; Writeln(‘Chu vi la:’,cv); Writeln(‘Dien tich la:’,s); Readln; End. 5. Viết chương trình tính chu vi và diện tích hình tròn, với bán kính là số nguyên nhập từ bàn phím. VD: R=1  VD: R=1  Cvi=6.28, DTich=3.14; R=2  Cvi=12.56, DTich=12.56; R=5  Cvi=31.4, DTich=78.5; Giải: Var R:integer; Cv,S: real; Begin Write(‘Nhap ban kinh:); Readln(r); Cv:=r*2*3.14; S:=r*r*3.14; Writeln(‘Chu vi la:’,cv:10:3); Writeln(‘Dien tich la:’,S:8:5); Readln; End. 6. Viết chương trình tính chu vi và diện tích hình vuông, với cạnh hình vuông là số nguyên nhập từ bàn phím. Vd: Canh=2 CVi=8, DTich=4; Canh=5 CVi=20, DTich=25; Canh=3 CVi=12, DTich=9; 7. Viết chương trình tính tổng và tích 2 số nguyên a và b nhập từ bàn phím. Vd: a = -3, b = 1 S = -2, T = -3; a = 4, b = 2 S = 6, T = 8; a = 2, b = 5 S = 7, T = 10; Giải: Var a,b:integer; S,T: integer; Begin Write(‘Nhap so nguyen thu nhat:’); Readln(a); Write(‘Nhap so nguyen thu hai:’); Readln(b); S:=a+b; Writeln(‘Tong cua 2 so nguyen do la:’,s); Readln; End. 8. Viết chương trình tính tổng và tích 3 số nguyên a, b, c nhập từ bàn phím. Vd: a = -3, b = 1, c = 4 S = 2, T = -12; a = 4, b = 2, c = 1 S = 7, T = 8; a = 2, b = 4, c = 3 S = 9, T = 24;. <span class='text_page_counter'>(3)</span> 9. Viết chương trình tính trung bình cộng của 3 số nguyên a, b, c nhập từ bàn phím. Vd: a = -3, b = 1, c = 4 TB = 0.666; a = 4, b = 2, c = 1 TB = 2.333; a = 2, b = 4, c = 3 TB = 3; 10. Viết chương trình tính chu vi và diện tích một tam giác có 3 cạnh a, b, c nhập từ bàn phím (s=sqrt(p*(p-a)*(p-b)*(p-c)) với p=(a+b+c)/2). Vd: a = 3, b = 4, c = 5  CV = 12, s = 6; a = 2, b = 3, c = 4  CV = 9, s = 2.9; a = 3, b = 3, c = 3  CV = 9, s = 3.89; 11. Viết chương trình tính diện tích tam giác có chiều dài cạnh đáy và chiều cao tương ứng là các số nguyên nhập từ bàn phím. <span class='text_page_counter'>(4)</span> PHÉP TOÁN TRONG PASCAL + : cộng - : trừ * : nhân / : chia Mod: chia lấy dư Vd: 5 mod 3 =2 7 mod 3 =1 8 mod 2=0 Div: chia lấy phần nguyên Vd: 5 div 3= 1 7 div 3 = 2 8 div 2 =4 BT: 1. Chuyển các biểu thức sau sang biểu thức trong pascal: a) a2 +b-c  a*a+b-c b) (a-b)(c+d)  (a-b)*(c+d) 2 c) 2x -5x+2y  2*x*x-5*x+2*y d) 1+2xyz  1+2*x*y*z 2 3 + 5 2 1 f) -x(x+y) x 2 3 g) X2+2xy- 5 + 2. . x*x+2*x*y-2/5+3/2. h) 2x2+y3+1 . 2*x*x+y*y*y+1 . 1/(a+1)*(a-b)+1 . 2*x-1>=5. e). i). 1 (a −b)+1 a+1. j) 2x-1>5. . 2/5+3/2 . 1/x-x*(x+y). 1 1 1 k) 1+ 3 + 4 + 5 < 0  1+1/3+1/4+1/5<=0 1 l) S= 1+ 1  S=1/(1+1/2) 2 1 m) S= 1+ 1  S=1/(1+1/(x*x)) 2 x. 2. Chuyển các biểu thức pascal sau sang biểu thức toán học: a) 2*x*x*x+3*y-z  2x3+3y-z 1 1 1 - 1 x x2. b) 1/(1/x)-1/(1/(x*x)) . c) X+y+z >= a+b+c . x+y+z > a+b+c. d) X*x+2*x+1/2*x . x2+2x+ 2 x. e) 1/2*3/(2+sqrt(2))*8+7/4*2*2 . 1. 1 3 7 . .8  .22 2 2 2 4 1. 3. Viết chương trình tính: f(x)= 2x5 - 5x4+4x3+ 3 x-2, với x nhập từ bàn phím. Vd: X=1: f(1) = 2.(1)5-5.(1)4+4.(1)3+1/3.1-2=2-5+4+1/3-2=-0.667 X=-2: f(-2) = 2.(-2)5-5.(-2)4+4.(-2)3+1/3.(-2)-2=2.(-32)-5.16+4.(-8)+2/3-2 = -178.667. <span class='text_page_counter'>(5)</span> X=0  f(0) = -2 Giải: Var x,f:real; BEGIN Write(‘Nhap x:’); Readln(x); F:=2*x*x*x*x*x-5*x*x*x*x+4*x*x*x+1/3*x-2; Writeln(‘f=’,f:5:3); Readln; END. 1. 4. Viết chương trình tính: f(x)= 3x5 + 6x4-5x3+ 3 x-2, với x nhập từ bàn phím. Vd: X = 1f(1) = 2.333; X = 2f(2) = 150.667; X = -1f(-1) = 5.667 Giải: Var F, x,y,z: real; BEGIN Write(‘Nhap gia tri cua x:’); Readln(x); F:=3*x*x*x*x*x+6*x*x*x*x-5*x*x*x+1/3*x-2; Writeln(‘f(’,x:1:2,’)=’,F:10:3); Readln; END. x+y x −z − 5. Viết chương trình tính: f(x,y,z)= x − 1 xy , với x,y,z nhập từ bàn phím. Vd: 2. Gợi ý:. x = 1, y = 2, z =3  f(1,2,3)=7; x = 1, y = -1, z = 0  f(1,-1,0)=1; x = 2, y = 3, z =4  f(2,3,4)=3.667; F:=(x+y)/(x-1/2)-(x-z)/(x*y);. y z 6. Viết chương trình tính: f(x,y,z)= (1+ z) , với x,y,z nhập từ bàn phím. VD: 1 2− 1+ x 3 x+. Gợi ý:. x = 1, y = 2, z =3  f(1,2,3)=4.444; x = 1, y = -1, z = 2  f(1,-1,2)=1; x = 2, y = 3, z =4  f(2,3,4)=7.279; F:=(1+z)*(x+y/z)/(2-1/(1+x*x*x)). <span class='text_page_counter'>(6)</span> 1 x 2 3  1 x (1  x) 1 1 2 x 3 1 x 2 3 1 x 2 , với x nhập từ bàn phím. 7. Viết chương trình tính: f(x)= x. VD: X = 0f(0) = 1.333; X = 2f(2) = 3.706; X = -3f(-3) = 2.9 Gợi ý: F:=(1+x)*(x+1/3)/(2-1/(1+x*x*x))+(x/(1-x)+2)/(3+(x-1/2)/(x+1/2)) 8. Viết chương trình tính: G:=5a3 – 4a2b + 10(b2 + c)a - 50b - 20c; Với a=3, b=4, c=5 Gợi ý: const a=3; b=4; c=5; Var G:integer; Begin G:=…. Writeln(‘g=’,g); Readln; End. 9. Viết chương trình tính: f(x) =. Giải:. Vd: x = 1  f(1) = 1.477 x = 2  f(2) = 1.142 x = 5  f(5) = 0.875. √. 2 3 1+ + −0 . 7 , với x nhập từ bàn phím x 5+ √ 2+ x. Var x,F:real; BEGIN Write(‘nhap gia tri cua x:’); Readln(x); F:=Sqrt(1+2/x)+3/(5+sqrt(2+x))-0.7; Writeln(‘F=’,F:10:8); Readln; END. 10. Viết chương trình tính:. 3 1 1 x +1 +¿ + −0 . 7 , với x nhập từ bàn phím 2 2+3 x 5+ √ 2+ x √¿. Vd: x = 1  f(1) = 0.677 x = 2  f(2) = 0.503 x = 5  f(5) = 0.315. √. <span class='text_page_counter'>(7)</span> 11. Chuyển các biểu thức toán học sau sang biểu thức Pascal a 1 1   a3  2 b a). b a  b a 1 (a+b) 2   2 5 2 ( a  b) a b).. 1 5 4 3 4    3 2 3 3 a a  b a2 c)..  a/b+1/(a+b)+a*a*a+1/(b*b)  (a+b)*(a+b)-a/((a+b)*(a+b))-1/(a*a)+5.  4+1/3-5/3/a+4/3/(a+b)-3/2/(a*a) 12. Chuyển các biểu thức Pascal sau sang biểu thức toán học a.. 1+1/2+1/2*3+1/3*4+1/4*5. b.. 1/a + 2/a*b + 3/a+b. c.. 1/(a*b)+2/a+a+3/(a*a+1)*b. 1 1 1 1 1   .3  .4  .5 3 4  2 2 1 2 3  .b   b a  a a 1 2 3   a  2 .b a 1  a.b a. 13. Viết chương trình tính bán kính đường tròn ngọai tiếp tam giác có ba cạnh a,b,c nhập abc. vào từ bàn phím (công thức R= 4 S , với S là diện tích tam giác). Vd: a=3 b=4 c=5 r=2.5 14. Viết chương trình nhập vào điểm Toán, văn, Anh văn của 1 học sinh. Tính trung bình của học sinh đó, biết rằng Toán, Văn là hệ số 2. Vd: Toan=7, Van=6, AV=8 thì TB=(Toan*2+Van*2+AV)/5= 6.8 15. Viết chương trình nhập vào số học sinh của 1 lớp và số táo trong rổ. Hãy chia đều số táo cho tất cả học sinh trong lớp, mỗi bạn sẽ được bao nhiêu quả táo? Còn dư lại bao nhiêu quả? Vd: sohocsinh=11, tongsotao=28 thì sotaomoiban=28 div 11 =2, sotaodu=28 mod 11=6 16. Viết chương trình nhập vào số giây, in ra giờ:phút:giây. Vd: 4010 giây Gio=4010 div 3600=1 Phut=(4010 mod 3600) div 60 =6 Giay=(4010 mod 3600) mod 60=50 Kết quả: 1:6:50 Gợi ý: h:= t div 3600; m:= (t mod 3600) div 60; s:=(t mod 3600) mod 60; 8. Viết chương trình nhập vào một số nguyên có 3 chữ số. In ra màn hình 2 chữ số cuối của số vừa nhập. Vd: nhập 351 thì in ra 51. <span class='text_page_counter'>(8)</span> CẤU TRÚC RẼ NHÁNH * Dạng thiếu: If <Điều kiện> Then <Câu Lệnh>; Nếu Điều Kiện đúng thì Câu Lệnh được thực hiện * Dạng đủ: If <Điều kiện> Then <Câu Lệnh 1 > Else <Câu Lệnh 2 >; Nếu Điều Kiện đúng thì Câu Lệnh 1 được thực hiện, ngược lại thì Câu Lệnh 2 được thực hiện (Chú ý: Trước ELSE không có dấu “;”) * Case <Biểu thức> of <Giá trị 1, 2, …>: Xử lý; <Giá trị a, b, …>: Xử lý; <Giá trị I, II, …>: Xử lý; Else Xử lý; End; Vd: Viết chương trình kiểm tra 1 số nguyên n nhập từ bàn phím là số chẵn hay lẽ. vd: n=4  so chan; n=7  so le Giải: Var n : Integer; BEGIN Write(‘Nhap so nguyen n:’); Readln(n); If n mod 2 =0 then Writeln(n,‘ la so chan’) Else Writeln(n,‘ la so le’); Readln; END. BT: 1. Viết chương trình kiểm tra 1 số nguyên n nhập từ bàn phím có chia hết cho 5 hay không? Vd: n=22  khong chia het cho 5; n=30  chia het cho 5 2. Viết chương trình nhập vào 2 số nguyên a va b, in ra màn hình số lớn hơn (trả lời “bằng nhau” nếu chúng bằng nhau). Vd: a=3 b=4 4; a=5 b=-6 5; a= 8 b=8  Bang nhau; Giải * Cách 1: Var a,b: integer; BEGIN Writeln(‘Nhap so nguyen thu nhat:’); Readln(a); Writeln(‘Nhap so nguyen thu hai:’); Readln(b); If a>b then writeln(a);. <span class='text_page_counter'>(9)</span> If b>a then writeln(b); If a=b then writeln(‘Bang nhau’); Readln; END. * Cách 2: Var a,b: integer; BEGIN Writeln(‘Nhap so nguyen thu nhat:’); Readln(a); Writeln(‘Nhap so nguyen thu hai:’); Readln(b); If a>b then writeln(a) Else If b>a then writeln(b) else writeln(‘Bang nhau’); Readln; END. 3. Viết chương trình nhập vào 3 số nguyên a, b, c; in ra màn hình số lớn nhất. vd: a=1 b=2 c=3  Max=3; a=4 b=2 c=3  Max=4; a=2 b=2 c=1  Max=2; a=2 b=2 c=2  3 so bang nhau; Giải: Var a, b,c: integer; Max:Integer; BEGIN Write(‘Nhap vao 3 so nguyen:’); Readln(a,b,c); Max:=a; If b>Max then Max:=b; If c>Max then Max:=c; If (a=b) and (b=c) then writeln(‘3 so bang nhau’) Else Writeln(‘So lon nhat la:’,Max); Readln; END. 4. Viết chương trình nhập vào tuổi của 1 người, in ra màn hình: Thiếu nhi nếu tuổi<=11 Thiếu niên nếu 11< tuổi <=25 Trung niên nếu 25< tuổi <=50 Lão niên nếu tuổi >50 Vd: tuoi=12  thieu nien; tuoi=6 thieu nhi; tuoi=30  trung nien. Giải: Var Tuoi:integer; BEGIN Write(‘Nhap tuoi:’);. <span class='text_page_counter'>(10)</span> Readln(tuoi); If tuoi<=11 then writeln(‘Thieu nhi’) else If tuoi<=25 then writeln(‘Thieu nien’) else If tuoi<=50 then writeln(‘Trung nien’) else writeln(‘Lao nien’); Readln; END. 5. Viết chương trình kiểm tra xem 3 số a, b, c nhập từ bàn phím có là 3 cạnh của một tam giác hay ko? Nếu phải thì tính chu vi và diện tích của tam giác đó, ngược lại thông báo 3 số đó ko phải là 3 cạnh của tam giác Giải: Var a,b,c,CV,S,p:real; BEGIN Write(‘nhap 3 so a,b,c:’); Readln(a,b,c); If (a+b>c) and (a+c>b) and (b+c>a) and (a>0) and (b>0) and (c>0) then Begin Writeln(‘Day la 3 canh cua tam giac’); CV:= a+b+c; P:=CV/2; S:=Sqrt(p*(p-a)*(p-b)*(p-c)); Writeln(‘Chu vi la:’,cv:5:2); Writeln(‘Dien tich la:’,s:6:3); End Else Writeln(‘Day Khong la 3 canh cua tam giac’); Readln; END. 6. Viết chương trình giải phương trình bậc nhất 1 ẩn số: ax + b = 0 Vd: 2x + 3=0 (a=2; b=3)X=-3/2 0x+0=0 (a=0, b=0)  nghiem dung voi moi x 0x-5=0 (a=0, b=-5) vô nghiệm Gợi ý: + a = 0:  b=0: nghiem dung voi moi x  b<>0: vo n + a <> 0: x = -b/a Giải: * Cách 1: Var a,b:real; BEGIN Write(‘Nhap he so a, b’);. <span class='text_page_counter'>(11)</span> Readln(a,b); If a= 0 then Begin If b=0 then writeln(‘nghiem dung voi moi x); If b<>0 writeln(‘vn’); End; If a <> 0 then writeln(‘Phuong trinh co nghiem la:x=’,-b/a); Readln; END. * Cách 2: Var a,b:real; BEGIN Write(‘Nhap he so a, b’); Readln(a,b); If a= 0 then If b=0 then writeln(‘nghiem dung voi moi x) Else writeln(‘vn’) Else writeln(‘Phuong trinh co nghiem la:x=’,-b/a); Readln; END. 7. Viết chương trình giải phương trình bậc hai 1 ẩn số : ax2+bx+c=0 (a khác 0) Vd: a=1, b=2, c=-3 x1=1, x2=-3; a=1, b=2, c=1 x1=x2=-1 a=1, b=2, c=3 vô nghiệm; Gợi ý: D := b*b-4*a*c * D > 0: x1 = (-b+sqrt(D))/(2*a); x2 = (-b-sqrt(D))/(2*a); * D = 0: x = -b/(2*a) * D < 0: vn Giải: Var a,b,c,d,x1,x2,x:real; Begin Write(‘Nhap a,b,c (a<>0)’); Readln(a,b,c); D:= b*b-4*a*c; If d>0 then Begin x1:=(-b+sqrt(d))/(2*a); x2= (-b-sqrt(d))/(2*a); writeln(‘PT co 2 nghiem x1=’,x1:8:3,’ x2=‘,x2:8:3); end; if d=0 then Begin x:= -b/(2*a); writeln(‘PT co nghiem kep x1=x2’,x:8:3); end;. <span class='text_page_counter'>(12)</span> if d<0 then writeln(‘ptvn’); readln; end. 8. Viết chương trình giải hệ phương trình bậc nhất 2 ẩn số: ¿ a 1 x+b1 y=c 1 a 2 x+b 2 y=c 2 ¿{ ¿. Vd:. ¿ ¿ x +2 y=−1 x=1 − x + y=− 2 (a1=1, b1=2,c1=-1; a2=-1, b2=1,c1=-2) y=− 1 ¿{ ¿{ ¿ ¿ ¿ ¿ x +2 y=2 x=0 − x + y=1 (a1=1, b1=2,c1=2; a2=-1, b2=1,c1=1) y=1 ¿{ ¿{ ¿ ¿ ¿ x +2 y=2 − x − 2 y=1 VN ¿{ ¿ ¿ x+2 y=2 − x − 2 y=−2 VSN ¿{ ¿. Gợi ý:. a1b1 a2b2 Tính D= ¿ rli =a1*b2-a2*b1 ¿ || ¿ c1b1 c2b2 Dx= ¿ rli =… ¿ || ¿ a1c1 a2c2 Dy= ¿ rli =… ¿ || ¿. + D<>0: Hệ có duy nhất nghiệm: x = Dx/D; y = Dy/D + D = 0: Dx = Dy = 0: VSN Dx<>0 hoặc Dy <>0: VN Giải: Var a1,b1,c1,a2,b2,c2,D,Dx,Dy:real; Begin. <span class='text_page_counter'>(13)</span> Write(‘Nhap a1,b1,c1:’); Readln(a1,b1,c1); Write(‘Nhap a2,b2,c2:’); Readln(a2,b2,c2); D:= a1*b2-a2*b1; Dx:=c1*b2-c2*b1; Dy:=a1*c2-a2*c1; If D<>0 then writeln(‘He co duy nhat nghiem:x=’,Dx/D:5:3,’ y=’,Dy/D:5:3); if D=0 then Begin if (dx=0) and (dy=0) then writeln(‘vo so nghiem’); if (dx<>0) or (dy<>0) then writeln(‘vo nghiem’); end; readln; end. 9. Viết chương trình giải bất phương trình bậc nhất 1 ẩn số: ax+b>0 Gợi ý: + a > 0: x > -b/a (vd: 2x+3>0 x>-3/2) + a < 0: x < -b/a (vd: -2x+3>0 x<3/2) + a = 0:  -b >= 0: VN (vd: 0x-3>0  0x>3 Vô nghiệm )  -b < 0: nghiem đúng voi moi x (vd: 0x+3>0  0x>-3  nghiem đúng voi moi x ) Giải: Var a,b:real; Begin Write(‘Nhap he so a,b:’); Readln(a,b); If a>0 then writeln(‘x>’,-b/a:5:3); If a<0 then writeln(‘x<’,-b/a:5:3); If a=0 then Begin If -b>=0 then writeln(‘VN’); If -b<0 then writeln(‘nghiem đúng voi moi x ); End; Readln; End. 10. Viết chương trình giải bất phương trình bậc nhất 1 ẩn số: ax + b>=0 Gợi ý: vd: ax>= -b: * 2x +3 >= 0 * -2x +3 >= 0 + a > 0: x >= -b/a 2x >= -3 -2x >= -3 + a < 0: x <= -b/a x >=-3/2 x <=-3/2 + a = 0: * 0x -3 >= 0 * 0x +3 >= 0  -b>0 : VN 0x >= 3 0x >= -3 VN nghiem dung voi moi x. <span class='text_page_counter'>(14)</span>  -b <= 0: nghiem dung voi moi x 11. Viết chương trình giải phương trình bậc hai 1 ẩn số : ax2+bx+c=0 Gợi ý: +a=0 +b=0 + c = 0: vsn + c<>0: vn + b <> 0: x = - c / b + a <> 0: D := b*b-4*a*c * D > 0: x1 = (-b+sqrt(D))/(2*a); x2 = (-b-sqrt(D))/(2*a); * D = 0: x = -b/(2*a) * D < 0: vn Giải: Var a,b,c,x,x1,x2,D:real; BEGIN Writeln(' nhap a,b,c:'); Readln(a,b,c); If a=0 then Begin If (b=0) then Begin If (c=0) then Writeln('vo so nghiem'); If (c<>0) then Writeln('vo nghiem'); End; If (b<>0) then Writeln('nghiem cua phuong trinh la:', -c/b:1:2) End; If a<>0 then Begin D:=(b*b-4*a*c); If (D>0) then Begin x1:=(-b+sqrt(D))/(2*a); x2:=(-b-sqrt(D))/(2*a); Writeln('Phuong trinh co 2 nghiem la:x1=',x1,' x2=',x2); End; If (D=0) then Begin x:=(-b/(2*a)); Writeln('PT co nghiem kep la:',x); End;. <span class='text_page_counter'>(15)</span> If (D<0) then Writeln('PT vo nghiem '); end; Readln; END. 12. Viết chương trình nhập vào điểm trung bình học kỳ I và trung bình học kỳ II, tính trung bình cả năm theo công thức: TBCN=(TBHKI+TBHKII*2)/3. Xếp lọai theo cách: Giỏi nếu TBCN>=8 Khá nếu 6.5<=TBCN <8 If (tbcn>=6.5) and (tbcn<8) then Trung bình nếu 5.0<=TBCN <6.5 Yếu nếu 3.5<=TBCN <5 Kém nếu TBCN<3.5 Vd: TBKHI=7 TBHKII=8  TBCN=(7+8*2)/3=7.6 Xếp loại: Khá Giải: Var HKI,HKII,CN: Real; BEGIN Write(‘Nhap trung binh HKI, HKII’); Readln(HKI,HKII); CN:=(HKI+HKII*2)/3; Writeln(‘TBCN=’,CN:5:1); If CN>=8 then writeln(‘Gioi’); If (6.5<=CN) And (CN <8 ) then writeln(‘Kha’); If (5<=CN) And (CN <6.5 ) then writeln(‘Trung binh’); If (3.5<=CN) And (CN <5 ) then writeln(‘Yeu’); If CN <3.5 then writeln(‘Kem’); Readln; END. 13. Viết chương trình nhập vào 1 số tự nhiên N<=10.000, hãy cho biết số đó có mấy chữ số. vd: 15 có 2 chữ số; 2345 có 4 chữ số. Giải: Var n: integer; BEGIN Write(‘Nhap so n’); Readln(n); If (n>=0) And (n<=9 ) then writeln(‘so co 1 chu so’); If (n>=10) And (n<=99) then writeln(‘so co 2 chu so’); If (n>=100) And (n<=999 ) then writeln(‘so co 3 chu so’); If (n>=1000) And (n<=9999 ) then writeln(‘so co 4 chu so’); If (n=10000) then writeln(‘so co 5 chu so’); Readln; END.. <span class='text_page_counter'>(16)</span> 14. Nhập một tháng, cho biết tháng đó thuộc mùa nào (Xuân, Hạ, Thu, Ðông), biết rằng tháng 2, 3, 4 là mùa Xuân, tháng 5, 6, 7: mùa Hạ, tháng 8, 9, 10: mùa Thu, và tháng 11, 12, 1: mùa Ðông. Vd: Thang = 3  thuộc mùa Xuân; Thang = 11  thuộc mùa Đông Giải: Var thang:integer; BEGIN Write(‘Nhap thang:’); Readln(thang); If (thang>=2) and (thang<=4) then writeln(‘Mua Xuan’); If (thang>=5) and (thang<=7) then writeln(‘Mua Ha’); If (thang>=8) and (thang<=10) then writeln(‘Mua Thu’); If ((thang>=11) and (thang<=12)) or (thang=1) then writeln(‘Mua Dong’); Readln; END. * Sử dụng Case …of: Var thang:integer; BEGIN Write(‘Nhap thang:’); Readln(thang); case thang of 2,3,4 : writeln(' Mua Xuan '); 5,6,7 : writeln(' Mua Ha'); 8,9,10 : writeln(' Mua Thu'); 11,12,1 : writeln(' Mua Dong'); Else writeln(' Khong biet!');. End; Readln; END. 15. Viết chương trình nhập vào 1 tháng của năm 2012, cho biết tháng đó có bao nhiêu ngày Vd: Tháng 3  31 ngày Tháng 6  30 ngày Tháng 2  29 ngày Giải: var sn,t:integer; Begin write('Nhap vao thang: '); readln(t); if (t=1) or (t=3) or (t=5) or (t=7) or (t=8) or (t=10) or (t=12) then sn:=31; if (t=4) or (t=6) or (t=9) or (t=11) then sn:=30; if t=2 then sn:=29; writeln('Thang ',t, ‘co ',sn,' ngay'); readln; End.. <span class='text_page_counter'>(17)</span> * Sử dụng Case …of: var sn,t:integer; Begin write('Nhap vao thang: '); readln(t); Case t of 1,3,5,7,8,10,12: sn:=31; 4,6,9,11:sn:=30; 2: sn:=29; End; writeln('Thang ',t, ‘co ',sn,' ngay'); readln; End. 16. Viết chương trình nhập 1 số nguyên từ 1 đến 10. In ra chữ tiếng Anh của số đó. vd: nhập 3 thì in ra màn hình “Three” nhập 8 thì in ra màn hình “Eight” Gợi ý: if n=1 then writeln(‘one’) else if n=2 then writeln(‘two’) ….. If (n<1) or (n>10) then writeln(‘ko biet!’); * Viết lại bằng cách sử dụng Case …of: 17. Nhập vào số xe (có bốn chữ số) trong biển số xe máy của bạn. Cho biết số xe của bạn được mấy nút. Bạn là người may mắn nếu số nút=9. Bạn có may mắn không ? Ví du: số xe là 4546, tổng các chữ số là 4+ 5 + 4 + 6 = 19. 19 mod 10 =9. Số nút là 9, may mắn. Gợi ý: Tong :=0; Tong:= tong + SoXe mod 10; SoXe:= SoXe div 10; Tong:= tong + SoXe mod 10; SoXe:= SoXe div 10; Tong:= tong + SoXe mod 10; SoXe:= SoXe div 10; Tong:= tong + SoXe mod 10; 18. Nhập một số tiền N (N<=500) đồng, đổi ra xem được bao nhiêu tờ 5 đồng, bao nhiêu tờ 2 đồng, bao nhiêu tờ 1 đồng sao cho tổng số tờ là ít nhất. Ví dụ N= 43 đ = 8 tờ 5 đ + 1 tờ 2 đ + 1 tờ 1 đ. Cách tính như sau : Số tờ 5 đ = 43 div 5 = 8 Số tiền dư = 43 mod 5 = 3. <span class='text_page_counter'>(18)</span> Số tờ 2 đ = Số tiền dư div 2 = 3 div 2 =1 Số tờ 1 đ = Số tiền dư mod 2 = 3 mod 2 = 1 Giải: Var N, st5, st2, st1, sodu : integer; Begin Write(‘ Nhap so tien : ’); Readln(N); st5 := N div 5; Sodu := N mod 5; st2 := Sodu div 2; st1 := Sodu mod 2; Writeln(‘ KET QUA DOI TIEN LA: ’ ) ; Writeln(‘ So to 5đ= ‘, st5); Writeln(‘ So to 2đ= ‘, st2); Writeln(‘ So to 1đ=‘, st1); Readln; End. 19. Viết thuật toán tính tiền taxi căn cứ vào đoạn đường đi nhập từ bàn phím biết rằng (chú ý người nhập nhập số km>0)  Km đầu giá 12000đ  Km thứ 2 đến km thứ 30 giá 10000đ  Km thứ 31 trở đi tính 9000đ Vd: + km=3 thì Tien=1*12000+(3-1)*10000=12000+20000=32000 + km=40 thì Tien=12000+29*10000+(40-30)*9000=… Gợi ý: Nếu Km<=0 thì tiền:=0 Ngược lại nếu Km<=30 thì tiền:=12000+(km-1)*10000 Ngược lại thì tiền:=12000+29*10000+(km-30)*9000 Giải: Var km,t:longint; BEGIN Write(‘Nhap so km:’); Readln(km); If km<0 then t:=0 Else If km<30 then T:=12000+(km-1)*10000 Else T:=1200+29*10000+(km-30)*9000; Writeln(‘Tien phai tra:’,t); Readln; End. 20. Viết chương trình nhập vào số KW/h điện tiêu thụ trong 1 tháng và tính tiền điện sử dụng trong 1 tháng đó. Biết rằng, 50 KW/h đầu được tính với giá 600đ mỗi KW/h, 50 KW/h tiếp theo được tính với giá 800đ mỗi KW/h, 100 KW/h tiếp theo được tính với giá 1100đ mỗi KW/h, những KW/h tiếp theo được tính với giá 1500đ mỗi KW/h.. <span class='text_page_counter'>(19)</span> Vd:. Số điện = 40 thì số tiền = 40*600 Số điện = 70 thì số tiền = 50*600 + (70-50)*800 Số điện = 110 thì số tiền = 50*600 + 50*800 + (110-50-50)*1100 Số điện = 230 thì số tiền = 50*600 + 50*800 + 100*1100 + (230-50-50100)*1500 Giải: Var d, t: longint; Begin Write(‘so KW/h da su dung’); Readln(d); If d<=50 then T:=d*600 Else If d<=100 then T:=50*600+(d-50)*800 Else If d<=200 then T:=50*600+50*800+(d-50-50)*1100 Else T:= 50*600+50*800+100*1100+(d-50-50-100)*1500; Writeln(‘So tien phai tra la:’,T); Readln; END.. <span class='text_page_counter'>(20)</span> VÒNG LẶP BIẾT TRƯỚC SỐ LẦN LẶP LẠI For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <Câu lệnh>; Chú ý:  Vòng lặp được thực hiện khi giá trị đầu còn <= giá trị cuối. + Sau mỗi lần lặp, biến đếm tăng lên 1 đơn vị. + Vòng lặp sẽ dừng lại sau khi thực hiện câu lệnh nếu giá đầu = giá trị cuối.  Biến đếm, giá trị đầu, giá trị cuối là số nguyên. Vd1: Tính S = 3 + 4 + 5 + 6 + 7 + 8. Giải Var i: Integer; S: LongInt; BEGIN S:=0; For i:=3 to 8 do S:=S + i; Writeln(‘s=’,s); Readln; END. 1 1 1 1 1 + + Vd2: Tính S=1+ 2 3 + 4 5 +…+ 15 .. Var i: Integer; S: Real; BEGIN S:=0; For i:=1 to 15 do S:=S + 1/i; Writeln(‘s=’,s:10:3); Readln; END. BT: 1. Tính S = 1 + 2 + 3 + 4 + …+ n, với n nguyên dương nhập từ bàn phím. Vd: n=6  s = 21; n=10  s = 55 Var i,n:integer; S:longint; Begin Write(‘nhap n:’); Readln(n); S:=0; For i:=1 to n do s:= s + i; … 1 1. 1 1. 1. 2. Tính S=1+ 2 + 3 + 4 + 5 +…+ n , với n nguyên dương nhập từ bàn phím. Vd: n=6  s = 2.45; n=10  s = 2.92. <span class='text_page_counter'>(21)</span> 3. Tính S=1+3+5+7+…+2n-1, với n nguyên dương nhập từ bàn phím. Vd: n=3: 2*3-1=5 s=1+3+5 =9 n=7: 2*7-1=13 s=1+3+5+7+9+11+13 =49 1 1. 1. 4. Tính S= 4 + 6 +…+ 2 n , với n nguyên dương nhập từ bàn phím. Vd: n=2 s=0+1/4=0.25 n=5 s=1/4+1/6+1/8+1/10=0.64 n=8: 2*8=16 s=1/4+1/6+1/8+1/10+1/12+1/14+1/16 5. Tính S=1+4+7+…+3n-2, với n nguyên dương nhập từ bàn phím. Vd: n=3: 3*3-2=7: s=1+4+7=12 n=8: 3*8-2=22: s=1+4+7+10+13+16+19+22=92 6. Tính S=1+5+9+…+4n-3, với n nguyên dương nhập từ bàn phím. Vd: n=3: 4*3-3=10: s=1+5+9=15 n=8: 4*8-3=22: s=1+9+13+17+21+25+29+33=120 5. 6. n+2. 7. Tính S= 10 + 14 . . .+ 4 n −2 , với n nguyên dương nhập từ bàn phím. Vd: n=4: 4+2=6: s=5/10+6/14 n=8: 8+2=10: s=5/10+6/14+7/18+8/22+9/26+10/30 3 4. 5. n+ 2. 8. Tính S= 2 + 6 + 10 +.. .+ 4 n −2 , với n nguyên dương nhập từ bàn phím. Vd: n=3 (3+2)/(4*3-2)=5/10 s=3/2+4/6+5/10=2.6 9. Viết chương trình tính tổng S=50+49+48+…+16+15 10. Viết chương trình tính tổng S= -100-99-98-…-20 11. Viết chương trình nhập vào 1 số nguyên dương n. In ra màn hình những số chia hết cho 3 trong các số từ 1 đến n. Vd: n=13 thì in các số: 3 6 9 12 Gợi ý: For i:=1 to n do if i mod 3=0 then write(I:5); 12. Viết chương trình nhập vào 1 số nguyên dương n. In ra màn hình số lượng số chia hết cho 3 trong các số từ 1 đến n. Vd: n=13 thì có 4 số gồm: 3 6 9 12 Gợi ý: If i mod 3=0 then dem:=dem+1; 13. Viết chương trình nhập vào 1 số nguyên dương n. Cho biết từ 1 đến n có bao nhiêu số chia hết cho 5, là những số nào? Vd: n=31 thì có 6 số gồm: 5 10 15 20 25 30 14. Viết chương trình nhập vào 1 số nguyên dương n. Tính tổng những số chẵn từ 1 đến n. Vd: n=11 thì S=2+4+6+8+10. Gợi ý: If i mod 2=0 then s:=s+i; 15. Viết chương trình nhập vào 1 số nguyên dương n. Tính tổng những số chia hết cho 3 và 5 từ 1 đến n. Vd: n=50 thì S=15 + 30 + 45 16. Viết chương trình nhập vào 1 số nguyên dương n. Tính tổng những số chia hết cho 3 hoặc 5 từ 1 đến n. Vd: n=14 thì S=3 + 5 + 6 +10+ 9 +12 17. Viết chương trình nhập vào 1 số nguyên dương n. Cho biết n có phải là số nguyên tố hay không? Số nguyên tố là số chỉ chia hết cho 1 và chính nó Vd: n=7 là số nguyên tố vì 7 chỉ chia hết cho 1 và 7 n=8 Không là số nguyên tố vì 8 chia hết cho 1 và 8 nhưng còn chia hết cho 2 và 4 18. Tính T = 1.2.3.4… n, với n nguyên dương nhập từ bàn phím. 1 1 1. 1. 1 1 1. 1. 19. Tính T = 2 . 3 . 4 .. .. n , với n nguyên dương nhập từ bàn phím. 20. Tính T = 2 . 4 . 6 .. . 2 n , với n nguyên dương nhập từ bàn phím.. <span class='text_page_counter'>(22)</span> 3 3 3. 3. 4 5 6. n+2. 21. Tính T = 1 . 3 . 5 . .. 2 n −1 , với n nguyên dương nhập từ bàn phím. 22. Tính T = 2 . 3 . 4 .. .. n , với n nguyên dương nhập từ bàn phím. 23. Viết chương trình nhập vào 2 số nguyên m và n (m<n). Tính tổng các số nguyên từ m đến n. vd: m=5, n=9 thì s=5+6+7+8+9=35 Gợi ý: S:=0; For i:= m to n do s := s+i; 24. Viết chương trình nhập vào 2 số nguyên m và n (m<n). Đếm xem trong các số nguyên từ m đến n, có bao nhiêu số chia hết cho 3. vd: m=5, n=9 thì có 2 số là 6 và 9 Gợi ý: Dem:=0; For i:=m to n do If I mod 3=0 then dem:=dem+1; 25. Viết chương trình nhập vào 2 số nguyên m và n (m<n). Đếm xem trong các số nguyên từ m đến n, có bao nhiêu số chia hết cho 3 hoặc chia hết cho 5. Tính tổng các số chẵn. vd: m=4, n=17 thì có 6 số là 6, 9, 12, 5, 10, 15 thỏa yêu cầu. Tổng chẵn = 4+6+8+10+12+14+16= Gợi ý: S:=0; Dem:=0; For i:=m to n do begin If (i mod 3=0) or (i mod 5=0) then dem:=dem+1; If i mod 2 = 0 then s:=s+i; End; 26. Vừa gà vừa chó Bó lại cho tròn 36 con 100 chân chẵn Hỏi có bao nhiêu gà, bao nhiêu chó? Giải: Var Ga:Integer; BEGIN For Ga:=1 to 35 do If Ga*2+(36-Ga)*4=100 then Writeln(‘Co ’, Ga,’ con ga , va ‘, 36-ga,’ con cho’); Readln; END. 27.. 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ỏ?. Giải: Var Ga:Integer;. <span class='text_page_counter'>(23)</span> BEGIN For Ga:=1 to 42 do If Ga*2+(43-Ga)*4=100 then Writeln(‘Co ’, Ga,’ con ga , va ‘, 36-ga,’ con tho’); Readln; END.. <span class='text_page_counter'>(24)</span> VÒNG LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC While <điều kiện> do <Câu lệnh>;  Khi điều kiện đúng, câu lệnh được thực hiện  Khi chương trình bị lặp vô tận, nhấn Ctrl + Break để dừng chương trình Repeat <Câu lệnh>; Until <điều kiện>;  Khi điều kiện sai, câu lệnh được thực hiện  Khi chương trình bị lặp vô tận, nhấn Ctrl + Break để dừng chương trình Vd1: Ta có số tiền a (a>0), ta cần có số tiền b(a < b < 5a); với lãi suất ngân hàng là 1%/tháng, hãy tính xem sau bao nhiêu tháng gửi ngân hàng ta được số tiền b. Var a,b: Real; Thang: integer; BEGIN Repeat Write(‘Nhap so tien ban dau:’); Readln(a); Until a>0; Repeat Write(‘Nhap so tien can co:’); Readln(b); Until (b>a) and (b<5*a); Thang:=0; While a<b do Begin a:=a+a*1/100; Thang:=thang+1; End; Writeln(‘Sau ’, thang,’ thang ban se co so tien ‘,b:10:1); Readln; End. Vd2: Tính S=1+2+3+…+n; n nguyên dương nhập từ bàn phím. So sánh giữa for…do và while…do Var i,n: Integer; Var i,n: Integer; S: LongInt; S: LongInt; BEGIN BEGIN REPEAT REPEAT write('n='); write('n='); {$I-}{kiểm tra lỗi nhập vào không là {$I-}{kiểm tra lỗi nhập vào không là số} số} readln(n); readln(n); {$i+} {$i+} UNTIL (IOResult=0) and (n>0); UNTIL (IOResult=0) and (n>0); S:=0; S:=0; i:=1; For i:=1 to n do While i<=n do. <span class='text_page_counter'>(25)</span> S:=S + i;. Begin S:=S + i; i:=i+1; End; Writeln(‘s=’,s); Readln;. Writeln(‘s=’,s); Readln; END.. END. 1 1 1. 1. Vd3: Tính S= 1 + 2 + 3 +. . .+ n , với n nguyên dương nhập từ bàn phím. BT 1. Tìm UCLN của 2 số nguyên dương a,b. vd: UCLN(15,40)=5. UCLN(12,9)=3 Giải: Var a,b:Integer; BEGIN Write(‘Nhap so nguyen thu nhat:’); Readln(a); Write(‘Nhap so nguyen thu hai:’); Readln(b); While a<>b do Begin If a>b then a:=a-b Else b:=b-a; End; Writeln(‘UCLN=’,a); Readln; END. 2. Viết chương trình rút gọn phân số có tử và mẫu là 2 số nguyên dương nhập từ bàn phím. Vd: 5/15=1/3. 10/40=1/4 Giải: Var a,b:Integer; c,d:real; BEGIN Write(‘Nhap tu so:’); Readln(a); Write(‘Nhap mau so:’); Readln(b); C:=a; D:=b; While a<>b do Begin If a>b then a:=a-b Else b:=b-a;. <span class='text_page_counter'>(26)</span> End; C:=c/a; D:=d/a; Writeln(‘Phan so moi’,c:1:0,’/’,d:1:0); Readln; END. 4. Tính S = 1 + 4 + 7 + …+ 3n-2, với n nguyên dương nhập từ bàn phím. 5. Tính S = 10+15+20+25 …+ 5n, với n nguyên và n>=2 nhập từ bàn phím. 6. Tính S = -5-2+1+4+7+…+3n-2, với n nguyên và n>=-1 nhập từ bàn phím. 3 4. 5. n+ 2. 7. Tính S= 2 + 6 + 10 +.. .+ 4 n −2 , với n nguyên dương nhập từ bàn phím. 8. Nhập vào tuổi cha và con (tuổi cha >=25 và tuổi con < 2 lần tuổi cha). Tính xem sau bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con. Vd: cha=30, con =10  sau 10 năm thì tuổi cha gấp đôi tuổi con. Var i,cha,con: Integer; BEGIN Write(‘Nhap tuoi cha, con:’); Readln(cha,con); I:=0; While cha+i<>2*(con+i) do i:= i+1; Writeln(‘sau ‘,i,’ nam thi tuoi cha gap doi tuoi con’); Readln; END.. <span class='text_page_counter'>(27)</span> KIỂU MẢNG Cách khai báo: C1: Var TenBien: Array[<chỉ số đầu>..< chỉ số cuối>] of kiểu dữ liệu; Vd1: * Var NhietDo: Array[1..100] of real; * Const Max=500 Var NhietDo: array[1..Max] of Real; C2: Type Mang = array[<chỉ số đầu>..< chỉ số cuối>] of kiểu dữ liệu; Var TenBien: Mang; Vd2: Type Mang= Array[1..100] of real; Var NhietDo: Mang; Vd3: Var a: array[1..100] of Integer; 1 2 3 4 5 Chỉ số 4 3 8 7 9 Giá trị a[1]=4 a[2]=3 a[3]=8 a[4]=7 a[5]=9 Nhập mảng Write(‘Nhap so phan tu:’); Readln(n); For i:=1 to n do Begin Write(‘a[’,i,’]=’); Readln(a[i]); End; Xuất mảng For i:=1 to n do Write(a[i]:4); Vd1: Viết chương trình nhập vào 5 số nguyên, đếm xem có bao nhiêu số dương trong 5 số đó. Giải: Var a: array[1..5] of integer; i,dem: integer; Begin For i:=1 to 5 do Begin Write(‘So thu ’,i,’:’); Readln(a[i]); End; For i:=1 to 5 do Write(a[i]:4); Dem:=0; For i:=1 to 5 do. <span class='text_page_counter'>(28)</span> If a[i]>0 then dem:=dem+1; Writeln(‘Co :’,dem,’ So duong’); Readln; END. Vd2: Viết chương trình nhập vào nhiệt độ của 7 ngày, In nhiệt độ của từng ngày; tính nhiệt độ trung bình của 7 ngày đó. Tìm xem có bao nhiêu ngày có nhiệt độ lớn hơn nhiệt độ trung bình. Giải: Var NhietDo: Array[1..7] of real; TB: Real; i,dem: integer; BEGIN For i:=1 to 7 do Begin Write(‘Nhap vao nhiet do ngay thu’,i,’:’); Readln(nhietdo[i]); End; For i:=1 to 7 do Writeln(‘Nhiet do ngay thu ’,i,’ la ‘,nhietdo[i]:5:1); For i:=1 to 7 do TB:=TB+nhietdo[i]; TB:=TB/7; Dem:=0; For i:=1 to 7 do If NhietDo[i]>TB Then Dem:=Dem+1; Writeln(‘Nhiet do trung binh la:’,TB:5:2); Writeln(‘Co ’,dem,’ ngay co nhiet do cao hon nhiet do trung binh’); Readln; END. BT: 1. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Tính tổng các phần tử của mảng đó. Vd: 5 7 8 9 4 1  kết quả: 5+7+8+9+4+1=34 Giải: Var a: array[1..100] of integer; i,n,Tong:Integer; BEGIN Write(‘Nhap so phan tu:’); Readln(n); For i:=1 to n do Begin Write(‘a[’,i,’]=’); Readln(a[i]); End; For i:=1 to n do. <span class='text_page_counter'>(29)</span> Write(a[i]:4); Tong:=0; For i:=1 to n do Tong:=Tong+a[i]; Writeln(‘Tong=’,Tong); Readln; END. 2. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Đếm xem trong mảng có bao nhiêu số dương 3. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Đếm xem trong mảng có bao nhiêu số chẵn. vd: 2 3 1 4 5  có 2 số. 4. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Đếm xem trong mảng có bao nhiêu số chia hết cho 3 và 5. vd: 15 3 10 45 5  có 2 số For i:=1 to n do If (a[i] mod 3 =0) and (a[i] mod 5=0) then dem:=dem+1; 5. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Tính tổng các phần tử ở vị trí chẵn. vd: 2 3 1 4 5  s = 3+4=7 Gợi ý: For i:=1 to n do If i mod 2 =0 then tong:=tong+a[i]; 6. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Tính tổng các phần tử có giá trị chẵn. vd: 2 3 1 4 5  s =2+4=6 7. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Nhập vào 1 số nguyên x. Tìm xem trong mảng có giá trị x hay không? Nếu có thì nó ở vị trí nào? vd: 2 3 1 4 1; x=1 có ở vị trí 3; x= 8  không có. Gợi ý: Write(‘Nhap so nguyen x:’); Readln(x); For i:=1 to n do if a[i]=x then begin write(‘co o vi tri’,i); break; end; If (i=n) and (a[n] <>x) then writeln(‘khong co’); 8. Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Đếm xem trong dãy số có bao nhiêu số dương, bao nhiêu số âm? In ra dãy các số dương, dãy các số âm. vd: 2 3 -1 -4 0 1  có 3 số dương, có 2 số âm. Gợi ý: DemDuong:=0; DemAm:=0; For i:=1 to n do Begin if a[i]>0 then DemDuong:= DemDuong+1; if a[i]<0 then DemAm:= DemAm +1; end; writeln(‘co ’, DemDuong, ‘ so duong’); writeln(‘co ’, DemAm, ‘ so am); writeln(‘cac so duong la:’); for i:=1 to n do if a[i]>0 then write(a[i]);. <span class='text_page_counter'>(30)</span> 9. Viết chương trình nhập vào 1 mảng số nguyên có 15 phần tử. In ra màn hình những số chia hết cho 5 và tổng của chúng. Vd: 6 2 3 10 4 5 6 15  10 5 15, s = 30 Gợi ý: Tong:=0; For i:=1 to 15 do Begin If a[i] mod 5=0 then write(a[i]); If a[i] mod 5=0 then Tong:=Tong +a[i]; End; Writeln(‘Tong cac phan tu chia het cho 5 la:’,Tong); 10.Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Tìm phần tử lớn nhất đầu tiên trong mảng và vị trí của phần tử lớn nhất đó. Vd: 1 4 5 2 3 5 1 2  Max =5 ở vị trí 3. Giải: Var a: array[1..100] of integer; i,n,Max,vt:Integer; BEGIN Write(‘Nhap so phan tu:’); Readln(n); For i:=1 to n do Begin Write(‘a[’,i,’]=’); Readln(a[i]); End; For i:=1 to n do Write(a[i]:4); Max:=a[1]; Vt=1; For i:=2 to n do If a[i]>=Max then Begin max:=a[i]; vt:=i; end; Writeln(‘Max=’,Max,’ o vi tri ‘,vt); Readln; END. 11.Viết chương trình nhập vào 1 mảng số nguyên có n phần tử. Sắp xếp mảng theo thứ tự tăng dần. vd: 8 9 5 7 4 64 5 6 7 8 9 Gợi ý: For i:=1 to n-1 do For j:=i+1 to n do If a[i]>a[j] then Begin. <span class='text_page_counter'>(31)</span> Tam:=a[i]; a[i]:=a[j]; a[j]:=tam; End;. <span class='text_page_counter'>(32)</span> KIỂU XÂU (Chuỗi) Khai báo: Var <Tên biến>: String[độ dài lớn nhất của xâu]; * Độ dài lớn nhất của xâu <=255 Vd: HoTen: String[30]; DiaChi: String[200]; DienThoai: String[15]; LyLich: String; Một số thao tác trên chuỗi: s= ‘vinhkim com’ delete(s,3,2)  s= ‘vikim com’ delete(s,5,4) s= ‘vinhcom’ insert(‘ab’,s,3) s= ‘viabnhkim com’ insert(‘1’,s,5) s= ‘vinh1kim com’ copy(s,3,4) = ‘nhki’ pos(‘x’,s)=0 pos(‘i’,s)=2 pos(‘hk’,s)=4 length(s)=11 upcase(‘n’)= ‘N’ upcase(‘D’)= ‘D’ Vd: 1. Viết chương trình nhập vào họ và tên, in ra màn hình câu “Chào HoTen”, với HoTen là họ và tên người dùng vừa nhập vào. Giải: Var HoTen:String[40]; Begin Write(‘Nhap ho ten:’); Readln(HoTen); Writeln(‘Chao ’, HoTen); Readln; End. 2. Viết chương trình nhập vào 1 xâu, đưa ra màn hình xâu đó viết theo thứ tự ngược lại. S= ‘ab cdef’  fedc ba Giải: Var S:String; i:integer; BEGIN Write(‘Nhap 1 xau:’); Readln(S); For i:=length(s) downto 1 do Write(S[i]); Readln; END. 3. Viết chương trình nhập vào 1 xâu. In xâu đó với mỗi ký tự trên 1 dòng. S= ‘ab cdef’ . <span class='text_page_counter'>(33)</span> a b c d e f Giải: Var S:String; i:integer; BEGIN Write(‘Nhap 1 xau:’); Readln(S); For i:=1 to length(s) do Writeln(S[i]); Readln; END. 4. Viết chương trình nhập vào 1 xâu, đưa ra màn hình xâu đó sau khi đã loại bỏ các dấu cách. S= ‘truong thpt vinh kim’  s= ‘truongthptvinhkim’ Giải: Var S,S1:String; i:integer; BEGIN Write(‘Nhap 1 xau:’); Readln(S); S1:= ‘’; For i:=1 to length(s) do If s[i]<> ‘└┘’ then s1:=s1+s[i]; Writeln(s1); Readln; END. 5. Viết chương trình nhập vào 1 xâu, kiểm tra xem xâu đó có đối xứng hay không? Vd: madam, tenet, 1234321; nhưng 12334321 là không đối xứng Giải: Var S,S1:String; i:integer; BEGIN Write(‘Nhap 1 xau:’); Readln(S); S1:= ‘’; For i:=length(s) Downto 1 do s1:=s1+s[i];. <span class='text_page_counter'>(34)</span> If S=S1 then Writeln(‘Doi xung’) Else Writeln(‘Khong Doi xung’); Readln; END. 6. Viết chương trình nhập vào 1 xâu. Xoá các khoảng trắng thừa: a. Ở đầu câu Vd: s= ‘ vinh kim ’  s= ‘vinh kim ’ b. Ở cuối câu Vd: s=‘ vinh kim ’  s=‘ vinh kim’ c. Ở giữa câu Vd: s=‘ vinh kim ’  s=‘ vinh kim ’ Gợi ý: a. while s[1]= ‘└┘’ do delete(s,1,1); b. while s[length(s)]= ‘└┘’ do delete(s,length(s),1); c. while pos(‘└┘└┘’,s)>0 do delete(s, pos(‘└┘└┘’,s),1); 7. Viết chương trình nhập vào 1 xâu. Đếm xem trong xâu đó có bao nhiêu từ Vd: thế Giới vi tính  có 4 từ 8. Viết chương trình nhập vào 1 xâu. Đổi ký tự đầu từ thành chữ in hoa Vd: thế Giới vi tính  Thế Giới Vi Tính Gợi ý: For i:=2 to length(s)-1 do If s[i]= ‘ ’ then s[i+1]:=upcase(s[i+1]; Writeln(s); 9. Viết chương trình thay thế tất cả các từ “anh” trong một chuỗi thành từ “em”. Vd: s= ‘anh co biet la em ra ghet anh lam khong?’  s= ‘em co biet la em ra ghet em lam khong?’ Gợi ý: While pos(‘anh’,s)>0 do Begin Vt:= pos(‘anh’,s); Delete(s,vt,3); Insert(‘em’,s ,vt); End; 10.a/ Viết chương trình đổi tất cả ký tự trong 1 chuỗi thành ký tự in hoa Gợi ý: For i:=1 to length(s) do s[i]:=upcase(s[i]); b/ Viết chương trình đổi tất cả ký tự trong 1 chuỗi thành ký tự thường. Gợi ý: For i:=1 to length(s) do If (ord(s[i])>=65) and (ord(s[i])<=90) then s[i]:=chr(ord(s[i])+32);. <span class='text_page_counter'>(35)</span> KIỂU DỮ LIỆU TỆP (FILE/TẬP TIN) Khai báo: var <tên biến>:text; Vd: Var BaiTho:Text; BaiTap1:Text; Các thao tác: * Mở tệp mới để ghi: Assign(<biếntệp>, <têntệp>); Rewrite(<biếntệp>); * Mở tệp đã có để ghi thêm: Assign(<biếntệp>, <têntệp>); Append(<biếntệp>); * Mở tệp để đọc dữ liệu: Assign(<biếntệp>, <têntệp>); Reset(<biếntệp>); * Ghi dữ liệu vào tệp: Write(<biến tệp>, <các giá trị cần ghi vào tệp>); Hoặc Writeln(<biến tệp>, <các giá trị cần ghi vào tệp>); Cuối cùng, ta phải đóng tệp bằng thủ tục: Close(<biến tệp>); Vd1: Ghi dữ liệu vào tệp Var T1:Text; Begin Assign(T1,’c:\Dulieu.dat’); Rewrite(T1); Writeln(T1, ‘Tep van ban’); Write(T1,123); Write(T1, ‘ ’,123.45); Writeln(T1); Close(T1); End. * Đọc dữ liệu từ tệp văn bản: Read(<biến tệp>,<biến chứa dữ liệu đọc được>) ; Readln(<biến tệp>,<biến chứa dữ liệu đọc được>) ; Cuối cùng, ta phải đóng tệp bằng thủ tục: Close(<biến tệp>); Vd2: Đọc dữ liệu từ tệp Var T1:Text; s1: string; s2:integer;s3:real; Begin Assign(T1, ‘c:\Dulieu.dat’); Reset(T1); Readln(T1, s1); Read(T1); Read(T1, s2); Read(T1, s3); Close(T1);. <span class='text_page_counter'>(36)</span> Writeln(‘s1=’,s1); Writeln(‘s2=’,s2); Writeln(‘s3=’,s3); Readln; End. BT: 1. Viết chương trình nhập vào họ tên, lớp của 1 người, lưu họ tên và lớp đã nhập vào file dulieu.txt Var f:Text; HoTen[35],lop[10]:string; Begin Assign(f, ‘Dulieu.txt’); Rewrite(f); Write(‘Nhap ho ten:’);Readln(HoTen); Write(‘Nhap lop:’); Readln(lop); Writeln(f, Hoten); Writeln(f,Lop); Close(f); End. 2. Giả sử có file songuyen.txt có chứa 2 số nguyên a và b. Viết chương trình đọc 2 số nguyên đó rồi cộng lại, sau đó ghi kết quả vào cuối file songuyen.txt Var f:Text; a, b,s:integer; Begin Assign(f, ‘SoNguyen.txt’); Reset(f); Read(f,a,b); S:=a+b; Append(f); Writeln(f, s); Close(s); End.. <span class='text_page_counter'>(37)</span> CHƯƠNG TRÌNH CON Có 2 loại: Thủ tục và hàm Vd: +Thủ tục: Readln(); Write(); Writeln();,… + Hàm: Sqrt();length();Upcase();… Cấu trúc: * Thủ tục: [Phần khai báo] Begin [dãy các lệnh] End; Procedure <TenThuTuc>[(danh sách các tham số)]; [Phần khai báo] Begin [dãy các lệnh] End; * Hàm: Function <TenHam>[(danh sách các tham số)]:<Kiểu dữ liệu>; [Phần khai báo] Begin [dãy các lệnh] TenHam:=<Biểu thức>; End; Vd1: Viết 1 thủ tục vẽ hình chữ nhật Program vd_KhongThuTuc; Begin Writeln(‘***********’); Writeln(‘* *’); Writeln(‘* *’); Writeln(‘***********’); Writeln; Writeln; Writeln(‘***********’); Writeln(‘* *’); Writeln(‘* *’); Writeln(‘***********’); Writeln; Writeln; Writeln(‘***********’); Writeln(‘* *’); Writeln(‘* *’); Writeln(‘***********’); Writeln; Writeln; Readln; End.. <span class='text_page_counter'>(38)</span> Program vd_ThuTuc; Procedure Ve_HCN; Begin Writeln(‘***********’); Writeln(‘* *’); Writeln(‘* *’); Writeln(‘***********’); Writeln; Writeln; End; BEGIN Ve_HCN; Ve_HCN; Ve_HCN; Readln; END. Vd2: Viết 1 hàm tính tổng 2 số a,b Program vd_Ham; Function Tong(a,b:Real):Real; Var Kq:Real; Begin Kq:=a+b; Tong:=Kq; End; Var a,b,c,d,kq:Real; BEGIN Write(‘Nhap 2 so a,b:’); Readln(a,b); Kq:=tong(a,b); Writeln(‘Tong cua ’,a:1:1, ‘ va ’, b:1:1, ‘ la:’,kq :1:1); Write(‘Nhap 2 so c,d:’); Readln(c,d); Writeln(‘Tong cua ’,c:1:1, ‘ va ’, d:1:1, ‘ la:’,Tong(c,d) :1:1); Readln; END. * Các loại tham số: + Tham trị: Không thay đổi khi kết thúc chương trình con + Tham biến: Có thể thay đổi khi kết thúc chương trình con (có từ khóa Var trước khai báo) Vd1: Program vd1_ThamSo; Procedure ThamSo(a:Integer; Var b: Integer); Begin a:=a+1;6. <span class='text_page_counter'>(39)</span> b:=b+2;11 Writeln(‘a trong khi goi thu tuc: ’,a);6 Writeln(‘b trong khi goi thu tuc: ’,b);11 End; Var a,b:Integer; BEGIN a:=5; b:=9; Writeln(‘a truoc khi goi thu tuc: ’,a);5 Writeln(‘b truoc khi goi thu tuc: ’,b);9 ThamSo(a,b); Writeln(‘a sau khi goi thu tuc: ’,a);5 Writeln(‘b sau khi goi thu tuc: ’,b);11 Readln; END. Vd2: Đổi giá trị của 2 biến a và b: Program vd2_ThamSo; Procedure HoanVi(Var a:Integer; Var b: Integer); Var Tam:Integer; Begin Tam:=a; a:=b; b:=Tam; Writeln(‘a trong khi goi thu tuc: ’,a);9 Writeln(‘b trong khi goi thu tuc: ’,b);5 End; Var a,b:Integer; BEGIN a:=5; b:=9; Writeln(‘a truoc khi goi thu tuc: ’,a);5 Writeln(‘b truoc khi goi thu tuc: ’,b);9 HoanVi(a,b); Writeln(‘a sau khi goi thu tuc: ’,a);9 Writeln(‘b sau khi goi thu tuc: ’,b);5 Readln; END. BT: 1. Viết chương trình tính chu vi và diện tích của tam giác, với đoạn nhập 3 cạnh là 1 thủ tục, đoạn tính chu vi là 1 hàm, đoạn tính diện tích là 1 hàm. Program BT1; Var a,b,c:Real; Procedure Nhap3Canh; Begin Write(‘Nhap vao 3 so a,b,c’); Readln(a,b,c); End;. <span class='text_page_counter'>(40)</span> Function KiemTra(a,b,c:real):Boolean; Begin If (a<b+c) and (b<a+c) and (c<b+a) and (a>0) and (b>0) and (c>0) then KiemTra:=True Else KiemTra:=False; End; Function ChuVi(a,b,c:real):Real; Begin ChuVi:=a+b+c; End; Function DienTich(a,b,c:real):Real; Var p:Real; Begin P:=ChuVi(a,b,c)/2; DienTich:=Sqrt(p*(p-a)*(p-b)*(p-c)); End; BEGIN Nhap3Canh; If KiemTra(a,b,c)=True Then Begin Writeln(‘Chu vi cua tam giac la:’,ChuVi(a,b,c)); Writeln(‘Dien Tich cua tam giac la:’,DienTich(a,b,c)); End Else Writeln(‘3 so a, b, c khong phai la 3 canh cua 1 tam giac’); Readln; END. 2. Viết chương trình con kiểm tra 1 số nguyên nhập từ bàn phím có chia hết cho 5 hay không? Function ChiaHetCho5(n:integer):Boolean; Begin If n mod 5 =0 then ChiaHetCho5:=True Else ChiaHetCho5:=False; End; Var n:integer; BEGIN Write(‘n=’);Readln(n); If ChiaHetCho5(n)=true Then Writeln(n,’ chia het cho 5’) Else Writeln(n,’ Khong chia het cho 5’); Readln; END. 3. Viết chương trình con tìm UCLN của 2 số nguyên a, b; Sau đó sử dụng chương trình con này để rút gọn phân số có tử và mẫu nhập từ bàn phím.. <span class='text_page_counter'>(41)</span> Function UCLN(a,b:integer):integer; Begin While a<>b do Begin If a>b then a:=a-b Else b:=b-a; End; UCLN:=a; End; Var Tu,Mau,Tu1,Mau1,UC:Integer; BEGIN Write(‘Nhap Tu so:’); Readln(Tu); Write(‘Nhap Mau so:’); Readln(Mau); Writeln(Tu,’/’,Mau); UC:=UCLN(Tu,Mau); Tu1:=Tu Div UC; Mau1:=Mau Div UC; Writeln(Tu1,’/’,Mau1); Readln; END. 4. Viết CTC để tính n! = 1.2...n. Function GiaiThua(n:Word):Longint; Var P, i:Word; Begin P:=1; For i:=1 To n Do P:=P*i; GiaiThua:=P; End; Var n: Word; Begin Write('Nhap vao n= '); Readln(n); Writeln(n,’!= ’,GiaiThua(n)); Readln; End. 5. Viết chương trình tính √n x , x>0. 1 1 Ta có: √n x = x n = e n ln x Program Tinh_can_bac_n_cua_x; Var x,S: Real; n: Word; Function CanBac(n: Word;x:real):Real;. <span class='text_page_counter'>(42)</span> Begin CanBac:=EXP(1/n*LN(x)); End; Begin Write('Nhap vao n= '); Readln(n); Write('Nhap vao x= '); Readln(x); Writeln(‘Can Bac ’,n,’ cua ’,x:0:2,’ la:’, CanBac(n,x):0:2); Readln; End. 6. Viết hàm xMUn(x:Real;n:Byte):Real; để tính giá trị xn. Var x:Real; n:Byte; Function xMUn(x:Real;n:Byte):Real; Var i:Byte; S:Real; Begin S:=1; For i:=1 To n Do S:=S*x; xMUn:=S; End; Begin Write(‘Nhap x=’); Readln(x); Write(‘Nhap n=’); Readln(n); Writeln(‘x mu n = ‘, xMUn(x,n):0:2); Readln; End. 7. Viết chương trình tính: F(x) = 2x 3 + 3x2 – x + 1. Với x là số thực nhập từ bàn phím. Var f:Real; Function xMUn(x:Real;n:Byte):Real; Var i:Byte; s:Real; Begin S:=1; For i:=1 To n Do S:=S*x; xMUn:=S; End; Begin Write(‘Nhap x=’); Readln(x); F:=2*xMun(x,3)+3*xMun(x,2)-x+1 Writeln(‘F= ‘, F:5:2); Readln; End.. <span class='text_page_counter'>(43)</span> 8. Viết chương trình tính +,-,*,/ hai số bằng chương trình con: Gợi ý tính + a. Sử dụng thủ tục có tham số Procedure Tong(a,b:Real; var kq:real); Begin Kq:=a+b; End; Var c,d,kq:Real; BEGIN Write(‘Nhap 2 so:’); Readln(c,d); Tong(c,d,kq); Writeln(‘Tong cua ’,c:5:1,’ va ‘, d:5:1,’ la:’, kq:5:1); Readln; END. b. Sử dụng thủ tục không có tham số Var a,b,kq:Real; Procedure Tong; Begin Kq:=a+b; End; BEGIN Write(‘Nhap 2 so:’); Readln(a,b); Tong; Writeln(‘Tong cua ’,a:5:1,’ va ‘, b:5:1,’ la:’, kq:5:1); Readln; END. c. Sử dụng hàm có tham số Function Tong(a,b:Real):real; Begin Tong:=a+b; End; Var c,d,kq:Real; BEGIN Write(‘Nhap 2 so:’); Readln(c,d); Kq:=Tong(c,d); Writeln(‘Tong cua ’,c:5:1,’ va ‘, d:5:1,’ la:’, kq:5:1); Readln; END. d. Sử dụng hàm không có tham số Var a,b,kq:Real;. <span class='text_page_counter'>(44)</span> Function Tong:real; Begin Tong:=a+b; End; BEGIN Write(‘Nhap 2 so:’); Readln(a,b); Kq:=Tong; Writeln(‘Tong cua ’,a:5:1,’ va ‘, b:5:1,’ la:’, kq:5:1); Readln; END.. 9. Viết chương trình vẽ hình chữ nhật bằng dấu * sử dụng chương trình con: a. Sử dụng thủ tục có tham số Procedure HCN(d:integer;r:integer); Var i,j:integer; Begin For i:=1 to d do write(‘*’); Writeln; For j:=1 to r-2 do writeln(‘*’,’*’:d-1); For i:=1 to d do write(‘*’); Writeln; End; Var d,r:integer; Begin Write(‘Nhap chieu dai:’); Readln(d); Write(‘Nhap chieu rong:’); Readln(r); HCN(d,r); Readln; End. b. Sử dụng thủ tục không có tham số Var d,r:integer; Procedure HCN; Var i,j:integer; Begin For i:=1 to d do write(‘*’); Writeln;. <span class='text_page_counter'>(45)</span> For j:=1 to r-2 do writeln(‘*’,’*’:d-1); For i:=1 to d do write(‘*’); Writeln; End; Begin Write(‘Nhap chieu dai:’); Readln(d); Write(‘Nhap chieu rong:’); Readln(r); HCN; Readln; End. 10.Viết chương trình có 2 hàm có tham số: cộng a và b; chia a cho b. Trong chương trình chính sử dụng chương trình con để tinh a+b+c va a/b+c và a/(b+c) Function Tong(a,b:real):real; Begin Tong:=a+b; End; Function Chia(a,b:real):real; Begin If b<>0 then Chia:=a/b; End; Var a,b,c:real; BEGIN Write(‘Nhap a, b, c:’);Readln(a,b,c); Writeln(‘a+b+c=’,Tong(Tong(a,b),c)); If b<>0 then Writeln(‘a/b+c=’,Tong(Chia(a,b),c)) Else writeln(‘a/b+c khong tinh duoc!’); If b+c<>0 then Writeln(‘a/(b+c)=’,Chia(a,Tong(b,c))) Else writeln(‘a/(b+c) khong tinh duoc!’); Readln; End. 11.Viết chương trình cho biết giá trị nhỏ nhất trong 3 số nhập từ bàn phím, trong đó có sử dụng hàm tìm số nhỏ nhất trong 2 số. Function Min(a,b:integer):integer; Begin If a<b then min:=a Else min:=b;. <span class='text_page_counter'>(46)</span> End; Var a,b,c:integer; Begin Write(‘Nhap a,b,c:’);Readln(a,b,c); Writeln(‘So nho nhat la ’,Min(Min(a,b),c)); Readln; End.. <span class='text_page_counter'>(47)</span>