Bài 10: Cấu trúc lặp

SK
Hướng dẫn giải Thảo luận (2)
SK
Hướng dẫn giải Thảo luận (1)

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;



Trả lời bởi Nguyễn Lê Phước Thịnh
SK
Hướng dẫn giải Thảo luận (1)

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.



Trả lời bởi Nguyễn Lê Phước Thịnh
SK
Hướng dẫn giải Thảo luận (1)

Câu lệnh rẽ nhánh như sau:

a)

If (sqr(x)+sqr(y))<=1 Then z:=sqr(x)+sqr(y)

else if y>=x then z:=x+y

else z:=0.5;

b)

If sqr(x-a)+sqr(y-b)<=sqr(r) Then z:=abs(x)+abs(y)

Else z:=x+y;

Trả lời bởi Nguyễn Lê Phước Thịnh
SK
Hướng dẫn giải Thảo luận (1)

a)

program Tong_5a;

uses crt;

var y: real;

n: byte;

Begin

clrscr

y:=0;

for n :=1 to 50 do

y:=y + n / ( n +1 ) ;

writeln('Tong y la: y:0:18);

readln;

End.

Nếu biến y khai báo theo kiểu extended thì chương trình tính tổng y sẽ là như sau:

($e+, N+}

program Tong_5a;

uses crt;

var y:real;

n:byte;

Begin

clrscr;

y:= 0;

for n:= 1 to 50 do

y:= y + n/(n+1);

writeln('Tong y la:', y:0:18);

readln;

End.

b)

program Tong_5b;

uses crt;

var n:longint;

e, sh:real;

Begin

clrscr;

sh:=1/2;

n:= 2;

e:= 2 + sh;

while sh>= 2*1E-16 do

begin

inc(n);

sh:=sh*(1/n);

e:= e + sh;

end;

writeln('Gia tri e(n)la: ',e:10:6);

readln;

End.



Trả lời bởi Nguyễn Lê Phước Thịnh
SK
Hướng dẫn giải Thảo luận (1)

program bai7;

uses crt;

var tcha,tcon,nam:integer;

begin

clrscr;

write('nhap vao tuoi cha va tuoi con '); readln(tcha,tcon);

nam:=0;

while(tcha<>tcon*2) do

begin

tcha:=tcha+1;

tcon:=tcon+1;

nam:=nam+1;

end;

writeln('sau ',nam,' nam nua thi tuoi cha gap 2 lan tuoi con');

readln;

end.

Trả lời bởi Nguyễn Lê Phước Thịnh
SK
Hướng dẫn giải Thảo luận (1)

program Gui_tiet_kiem;

uses crt;

const laisuat = 0.003;

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 .



Trả lời bởi Nguyễn Lê Phước Thịnh