- Về cú pháp: 2 dạng này giống nhau là đều có điều kiện là một biểu thức logic nằm sau if và một câu lệnh có thể là câu lệnh ghép nằm sau then.. Khác nhau, chỉ có dạng đủ mới có else và
Trang 1BÀI TẬP THỰC HÀNH 2 (TIN 11) SGK 50 - 51
1) Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh if-then
- Câu lệnh if-then có 2 dạng: dạng thiếu và dạng đủ Việc giống và khác nhau giữa 2 dạng này xoay quanh cú pháp và ngữ nghĩa
- Về cú pháp: 2 dạng này giống nhau là đều có điều kiện (là một biểu thức logic) nằm sau
if và một câu lệnh (có thể là câu lệnh ghép) nằm sau then Khác nhau, chỉ có dạng đủ mới có else
và sau else còn có câu lệnh khác (có thể là câu lệnh ghép) Như vậy, dạng thiếu dùng 1 điều kiện,
1 câu lệnh; dạng đủ dùng 1 điều kiện, 2 câu lệnh Ngoài ra, dấu chấm phẩy “;” kết thúc câu lệnh if-then nằm sau câu lệnh sau else của dạng đủ và nằm sau câu lệnh sau then của dạng thiếu
- Về ngữ nghĩa: 2 dạng này giống nhau là đều kiểm tra điều kiện và thực hiện câu lệnh sau then nếu điều kiện đúng (true) Khác nhau, ở dạng đủ, nếu điều kiện sai thì thực hiện câu lệnh nằm sau else
2) Câu lệnh ghép là gì? Tại sao phải có câu lệnh ghép?
- Câu lệnh ghép tập hợp 2 hay nhiều câu lệnh nằm giữa cặp begin … end; câu lệnh ghép hay còn gọi là khối lệnh (block)
- Câu lệnh ghép dùng để gộp các câu lệnh đơn lại nhằm thể hiện nhiều thao tác với nhiều biến, giúp không phải dùng đi dùng lại nhiều lần các câu lệnh rẽ nhánh, lệnh lặp
3) Có thể dùng câu lệnh while-do để thay cho câu lệnh for-do được không? Nếu được, hãy thực hiện điều đó với chương trình Tong_1a.
- Hoàn toàn có thể dùng câu lệnh while-do để thay thế cho câu lệnh for-do, ví dụ sau đây thể hiện điều đó:
Program Tong_1a;
Uses crt;
Var S:real;
a,N:integer;
Begin
Clrscr;
Write('Hay nhap gia tri a: ');
Readln(a); S:=1.0/a; N:=1;
While (N<100) do
begin
S:=S+1.0/(a+N);
N:=N+1;
end;
Writeln('Tong S la: ',S:8:4);
Readln
End
4.Viết câu lệnh rẽ nhánh tính: a) Program za;
Uses crt;
Var x,y,x2,y2,z:real;
Begin
Clrscr;
Write('x,y: ');
Readln(x,y);
x2:=x*x;
y2:=y*y;
if(x2+y2<=1)then
z:=x2+y2;
if(x2+y2>1)and(y>=x)then
z:=x+y;
if(x2+y2>1) and (y<x) then z:=0.5; Write('z = ',z:8:3); Readln
End.
b) Câu này rất đơn giản, bạn chỉ cần dùng công thức tính khoảng cách d từ điểm (x,y) đến tâm (a,b), rồi so sánh d với bán kính r, nếu d=r thì điểm (x,y) thuộc đường tròn tâm
Trang 2Program zb;
Uses crt;
Var x,y,r,a,b,d,z:real;
Begin
Clrscr;
Write('Nhap diem (x,y): ');
Readln(x,y);
Write('Nhap tam (a,b): ');
Readln(a,b);
Write('Nhap ban kinh r (r>0): ');
Readln(r);
d:=sqrt(sqr(x-a)+sqr(y-b));
If(d=r)then
z:=abs(x)+abs(y) else z:=x+y;
Write('z= ',z:8:2);
Readln
End
a)
Program Cau5aTrang51;
Uses crt;
Var Y:real; n:integer;
Begin
Clrscr;
Y:=0;
For n:=1 to 50 do Y:=Y+(n/(n+1));
Write('Y= ',Y:8:2);
Readln End
b, Code:
Program Cau5bTrang51;
Uses crt;
Var e,u:real;
n:integer;
Begin Clrscr;
n:=1; u:=1/n; e:=1;
While not(u<2.0E-6)do begin
e:=e+u;
n:=n*(n+1); u:=1/n;
end;
Write('e(n)= ',e:8:2);
Readln End
6.Lập trình để giải bài toán cổ.
- Nếu giải bài toán này bằng hệ
phương trình bậc nhất 2 ẩn số thì không hay
bằng cách dùng vòng lặpwhile Hiển nhiên
căn cứ vào gà có 2 chân, chó có 4 chân, có
đến 36 con, phải có 2 loài gộp chung thì mới
ra 100 chân, vì vậy ta dùng 2 biến, cho một
biến ga tự chạy tăng dần và biến cho = 36 –
ga, nếu thỏa điền kiện ga*2+cho*3=100 thì
dừng vòng lặp
Program GaCho;
Uses crt;
Var ga,cho:integer;
Begin Clrscr;
ga:=1;
cho:=36-ga;
While ga*2+cho*4<>100 do begin
ga:=ga+1;
cho:=36-ga;
end;
Writeln('Ga : ',ga:3);
Write('Cho: ',cho:3);
Trang 37.Lập trình
Ta chú ý vào điều kiện Input, dùng
vòng lặp while để tìm số năm Xong
Program Tuoi;
Uses crt;
Var tcha,tcon,dem:integer;
Begin
Clrscr;
While
not((tcha>tcon*2)and(tcha-tcon>=25)) do
begin
Write('Nhap tuoi cha, tuoi con :
');
Readln(tcha,tcon);
end;
dem:=0;
While not(tcha=tcon*2) do
begin
tcha:=tcha+1;
tcon:=tcon+1;
dem:=dem+1;
end;
Write('Tuoi cha gap doi tuoi con sau
',dem,' nam');
Readln
End
8.Lập trình
Program Lai;
Uses crt;
Var A,B:real;
dem:integer;
Begin Clrscr;
Write('Nhap so tien A: ');
Readln(A);
Write('Nhap so tien tong cong B: '); Readln(B);
dem:=0;
While B>A+dem*A*0.003 do begin
dem:=dem+1;
end;
Write('Ban nhan duoc ',B:8:3,' sau ',dem,' thang');
Readln End