Nội dung của bài thực hành số 2 dưới đây, các em sẽ cùng tìm hiểu về cách xây dựng một chương trình có sử dụng cấu trúc rẽ nhánh, thông qua đó bước đầu giúp các em làm quen với việc hiệu chỉnh chương trình. Mời các em cùng theo dõi nội dung chi tiết của bài thực hành.
Biết rằng bộ ba số nguyên dương a, b, c được gọi là bộ số Pi-ta-go nếu tổng các bình phương của hai số bằng bình phương của số còn lại. Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có là bộ số Pi_ta_go hay không.
Gợi ý làm bài:
Ý tưởng: Kiểm tra xem có đẳng thức nào trong ba đẳng thức sau đây được thực hiện hay không:
Xác định bài toán:
Thiết kết bài toán:
Thuật giải chương trình:
Program Pi_ta_go
Khai báo sử dụng a, b, c, a2, b2, c2(a, b, c nguyên dương)
Gán: a2:=a; b2:=b; c2:=c;
Tính:
Nếu a2= b2+ c2 hoặc b2= a2+ c2 hoặc c2= a2+ b2 thì:
Những công việc cần thực hiện:
a)
program Pi_ta_go;
uses crt;
var a, b, c: integer;
a2, b2, c2: longint;
begin
clrscr;
write('a, b, c: ');
readln(a, b, c);
a2:= a;
b2:= b;
c2:= c;
a2:= a2*a;
b2:= b2*b;
c2:= c2*c;
if(a2 = b2 + c2) or (b2 = a2 + c2) or (c2 = a2 + b2)
then writeln('Ba so da nhap la bo so Pi-ta-go')
else writeln('Ba so da nhap khong la bo so Pi-ta-go');
readln
end.
Chú ý: Trước else không có dấu chấm phẩy (;).
b) Sau khi gõ xong, lưu chương trình vào đĩa bằng cách nhấn phím F2 (hoặc vào File → Save), nhập tên tệp rồi nhấn phím Enter (phần mở rộng của tệp ngầm định là .pas).
c) Gõ phím F7 để thực hiện từng câu lệnh chương trình, nhập các giá trị a = 3, b = 4, c = 5.
d) Vào bảng chọn Debug mở cửa sổ hiệu chỉnh để xem giá trị a2, b2, c2.
e) Gõ phím F7 để thực hiện các câu lệnh tính những giá trị nói trên, so sánh với kết quả a2 = 9, b2 = 16, c2 = 25.
f) Tiếp tục nhấn F7 để theo dõi quá trình rẽ nhánh.
g) Lặp lại các bước trên với bộ dữ liệu a = 700, b = 1000, c = 800.
h) Nếu thay dãy lệnh
a2:= a;
b2:= b;
c2:= c;
a2:= a*a;
b2:= b*b;
c2:= c*c;
bằng dãy lệnh
a2:= a*a;
b2:= b*b;
c2:= c*c;
Thì kết quả có gì thay đổi ở bộ dữ liệu a = 700, b = 1000, c=800.
Sau khi học xong Bài tập và thực hành 2, hi vọng các em sẽ biết cách xây dựng một chương trình bài toán đơn giản có sử dụng cấu trúc rẽ nhánh và thành thạo các thao tác hiệu chỉnh chương trình.
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài tập và thực hành 2 cực hay có đáp án và lời giải chi tiết.
Cho chương trình viết bằng PASCAL sau đây:
PROGRAM giaiPT;
uses crt;
var A, B, C : real;
DELTA, X1, X2 : real;
BEGIN
write(‘ Nhap cac he so A, B, C : ’);
readln(A, B, C);
DELTA := B*B – 4*A*C;
if DELTA > 0 then
begin
X1 := ( – B – SQRT(DELTA) ) / (2*A);
X2 := – B / A – X1;
writeln(‘ X1 = ’, X1);
writeln(‘ X2 = ’, X2);
end;
readln
END.
Hãy chọn phát biểu sai trong các phát biểu sau đây:
Cho chương trình viết bằng PASCAL sau đây:
PROGRAM GiaiPTBac2;
uses crt;
var A, B, C : real;
DELTA, X1, X2 : real;
BEGIN
write(‘ Nhap cac he so A, B, C : ’);
readln(A, B, C);
DELTA := B*B – 4*A*C ;
if DELTA < 0 then writeln(‘ Phuong trinh vo nghiem.’);
X1 := ( – B – SQRT(DELTA) ) / (2 *A) ;
X2 := – B / A – X1 ;
writeln(‘ X1 = ’, X1);
writeln(‘ X2 = ’, X2);
readln
END.
Hãy chọn phát biểu đúng trong các phát biểu sau đây:
Câu 3-5: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Bài tập và thực hành 2để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 50 SGK Tin học 11
Bài tập 2 trang 50 SGK Tin học 11
Bài tập 3 trang 51 SGK Tin học 11
Bài tập 4 trang 51 SGK Tin học 11
Bài tập 5 trang 51 SGK Tin học 11
Bài tập 6 trang 51 SGK Tin học 11
Bài tập 7 trang 51 SGK Tin học 11
Bài tập 8 trang 51 SGK Tin học 11
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Cho chương trình viết bằng PASCAL sau đây:
PROGRAM giaiPT;
uses crt;
var A, B, C : real;
DELTA, X1, X2 : real;
BEGIN
write(‘ Nhap cac he so A, B, C : ’);
readln(A, B, C);
DELTA := B*B – 4*A*C;
if DELTA > 0 then
begin
X1 := ( – B – SQRT(DELTA) ) / (2*A);
X2 := – B / A – X1;
writeln(‘ X1 = ’, X1);
writeln(‘ X2 = ’, X2);
end;
readln
END.
Hãy chọn phát biểu sai trong các phát biểu sau đây:
Cho chương trình viết bằng PASCAL sau đây:
PROGRAM GiaiPTBac2;
uses crt;
var A, B, C : real;
DELTA, X1, X2 : real;
BEGIN
write(‘ Nhap cac he so A, B, C : ’);
readln(A, B, C);
DELTA := B*B – 4*A*C ;
if DELTA < 0 then writeln(‘ Phuong trinh vo nghiem.’);
X1 := ( – B – SQRT(DELTA) ) / (2 *A) ;
X2 := – B / A – X1 ;
writeln(‘ X1 = ’, X1);
writeln(‘ X2 = ’, X2);
readln
END.
Hãy chọn phát biểu đúng trong các phát biểu sau đây:
Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện trong cấu trúc rẽ nhánh?
Cho chương trình viết bằng ngôn ngữ PASCAL sau đây:
PROGRAM Inso;
Uses crt;
Var M, N, I : integer;
BEGIN
clrscr;
M := 0 ;
N := 0 ;
For I := 1 TO 10000 do
Begin
if ( (I mod 3) = 0 ) then M := M + 1 ;
if ( (I mod 3) = 0 ) and ( (I mod 5) = 0 ) then N := N + 1 ;
End;
writeln( M,‘ ’, N );
readln
END.
Phát biểu nào sau về chương trình trên là đúng?
rong ngôn ngữ lập trình Pascal, câu lệnh nào sau đây là đúng?
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 ghép là gì? Tại sao phải có câu lệnh ghép?
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.
Viết câu lệnh rẽ nhánh tính:
\(a) \space z= \begin{cases}x^2+y^2 & nếu\space\space x^2+y^2 \leq 1\\ x+y & nếu \space\space x^2+y^2 > 1\space và\space y\geq x\\ 0,5 & nếu \space\space x^2+y^2 >1 \space và\space y < x \end{cases}\)
\(b)\space z=\begin{cases}|x|+|y| & Nếu\space điểm (x;y) \space thuộc \space hình \space tròn \space bán \space kính \space r (r > 0), \space tâm (a; b).\\x+y & Trong \space trường \space hợp \space còn \space lại\end{cases}\)
Lập trình tính:
\( a) \space\displaystyle\sum_{n=1}^{50} \frac{n}{n+1}\)
\(b) \space e(n)=1+ \frac{1}{1!}+ \frac{1}{2!} +...+ \frac{1}{n!}+...,\)với n lần lượt bằng 3, 4,... cho đến khi \(\frac{1}{n!}<2\times10^{-6}\). Đưa các giá trị \(e(n)\) ra màn hình.
Lập trình để giải bài toán cổ sau:
Vừa gà vừa chó.
Bó lại cho tròn.
Ba mươi sáu con.
Một trăm chân chẵn.
Hỏi bao nhiêu con mỗi loại?
Nhập từ bàn phím tuổi của cha và con (tuổi của cha hơn tuổi con ít nhất là 25). Đưa ra màn hình bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con.
Một người gửi tiết kiệm không kì hạn với số tiền A đồng với lãi suất 0,2% mỗi tháng. Hỏi sau t tháng, người đó rút tiền thì sẽ nhận được số tiền là bao nhiêu. Biết rằng tiền gửi tiết kiệm không kì hạn không được tính lãi kép.
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
Có thể thay thế đoạn chương trình chứa câu lệnh for-đo (dạng lặp tiến) for <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
bằng đoạn chương trình chứa câu lệnh while-do như sau:
i:= <giá trị đầu>;
while <i< = <giá trị cuối> do
begin
<câu lệnh>;
<tăng i một đơn vị>,
end;
Như vậy, chương trình tính Tong_la viết bằng lệnh for-do
program Tong__la;
uses crt;
var S:real,
a, N: integer;
begin
clrscr;
write(‘Hay nhap gia tri a vao!’); readln(a);
S:= 1.0/a;
for N:=1 to 100 do S: = S+1.0/ (a+N);
writeln(‘Tong S la:’, S:8:4); readln;
End.
được viết lại bằng lệnh while-do như sau:
Program Tong_la;
uses crt;
var S:real;
a, N: integer;
Begin
clrscr;
write(‘Hay nhap gia tri a vao!’); 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.
Câu trả lời của bạn
Câu lệnh ghép là một câu lệnh được hợp thành từ nhiều câu lệnh thành phần (đơn hoặc kép). Câu lệnh ghép nhằm thực hiện thao tác gồm nhiều thao tác thành phần. Mỗi thao tác thành phần tương ứng với một câu lệnh đơn hoặc câu lệnh ghép khác. Về mặt ngôn ngữ lập trình, câu lệnh ghép là một trong các yếu tố để tạo khả năng chương trình có cấu trúc.
Câu lệnh ghép trong Pascal.
Begin
<các câu lệnh>
End;
Câu trả lời của bạn
1. Sự giống và khác nhau của hai dạng câu lệnh if-then
Hai dạng cầu lệnh if-then như sau:
a) Dạng thiếu
If<điều kiện> then <câu lệnh>;
if <điều kiện> then <câu lệnh 1 >else <câu lệnh 2 > ;
trong đó:
Điều kiện biểu thức quan hệ hoặc lôgic.
Câu lệnh, câu lệnh 1, câu lệnh 2 là một câu lệnh của Pascal.
Giống nhau: đều cùng là câu lệnh rẽ nhánh và khi gặp một điều kiện nào đó thì chọn lựa thực hiện thao tác thích hợp.
Khác nhau: Trong câu lệnh if-then dạng thiếu, nếu điều kiện không đúng thì thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình, còn trong câu if-then dạng đủ, nếu điều kiện không đúng thì thực hiện công việc 2, sau đó mói thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo cùa chương trình.
Câu trả lời của bạn
Chương trình về tuổi cha và tuổi con:
program tuoi_cha_con;
uses crt;
var tuoicha, tuoicon, nam: longint;
begin
clrscr;
write(‘Nhap tuoi cha va con(tuoicha-tuoicon>=25) ;
readln(tuoicha,tuoicon); nam:= 0;
while tuoicha<>2*tuoicon do begin
tuoicha:= tuoicha + tuoicon := tuoicon + 1; nam:= nam +1;
end;
writeln ( ‘ Sau ‘ , nam, ‘ nam, tuoi cha gap doi tuoi con’ );
readln
End.
Vừa gà vừa chó.
Bó lại cho tròn.
Ba mươi sáu con,
Một trăm chân chằn.
Hỏi bao nhiêu con mỗi loại?
Câu trả lời của bạn
program Tim_ga_cho;
uses crt;
var ga, cho: integer;
Begin
clrscr;
for cho:= 1 to 24 do
begin
ga:= 3 6 – cho,
if ga + 2*cho = 50 then writeln(‘Ga:’,ga,’ Cho:’,cho); end;
readln
End.
Câu trả lời của bạn
Chương trình gửi tiền tiết kiệm
program Gui_tiet_kiem;
uses crt;
const laisuat = 0.002;
var tiengui, tienrutve, luu: real;
thang : integer;
Begin
clrscr;
write (‘Nhap vao so tien gui:’),
readln(tiengui);
luu:= tiengui;
write(‘So tien co khi rut ve: ’);
readln(tienrutve);
thang : = 0 ;
while Tiengui < tienrutve> do begin
tiengui:= tiengui + tiengui* laisuat ; thang:= thang + 1 ;
end;
write(‘Gui’,luu: 0 : 0, ‘ dong, sau thang, thang’);
writeln(‘se nhan duoc so tien’,tienrutve:0 : 0,’ dong’);
readln
End .
Khi chạy chương trình, với số tiền gửi ban đầu là 20000000 đồng. Muốn có được số tiền sau khi rút về là 25000000 đồng thì phải mất 112 tháng.
Câu trả lời của bạn
Câu trả lời của bạn
Câu trả lời của bạn
user crt;
var a,b,x: real;
begin
clrscr;
write('a,b:');
readln(a,b);
if a=0 and b<>0 then writeln('pt_vo_nghiem');
else x:=-b/a;
writeln('x=');
readln
end.
Câu trả lời của bạn
var
a,b,c,max:longint;
begin
write('nhap vao a,b,c:'); readln(a,b,c);
max:=a;
if max < b then max:=b
else if max<c then max:=c;
writeln('so lon nhat la :',max);
readln
end.
Câu trả lời của bạn
Câu trả lời của bạn
Câu trả lời của bạn
*S=2+4+6+8+....+2n
var
i,n,s:integer;
begin
writeln('nhap vao n:');readln(n);
s:=0;
if n>0 then
for i:=1 to n do
s:=s+2*n;
writeln('tong la :',s);
readln;
end.
*s=1+1/2+1/3+1/4+...+1/n
var
i,n:integer;
s:real;
begin
write('nhap vao n:');readln(n);
s:=0;
for i:=1 to n do
s:=s+1/n;
writeln('tong la:',s:8:3);
readln;
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *