Cách chuyển câu lệnh từ vòng lặp for sang vòng lặp while ghi ra 2 câu trúc trước đã nha

Cách chuyển câu lệnh từ vòng lặp for sang vòng lặp while
ghi ra 2 câu trúc trước đã nha

0 bình luận về “Cách chuyển câu lệnh từ vòng lặp for sang vòng lặp while ghi ra 2 câu trúc trước đã nha”

  1. 1/ Cách chuyển đổi từ For – do sang While – do:

    Câu lệnh For – do:

    + Dạng tiến:

    For   <biến điếm>:= <giá trị đầu>  to <giá trị cuối>  do  <câu lệnh>;

    + Dạng lùi:

    For   <biến điếm>:= <giá trị cuối>  downto <giá trị cuối>  do  <câu lệnh>;

     

    Câu lệnh While – do:

    While  <điều kiện>    do   <câu lệnh>;

     

    Chuyển For – do thành While – do:

     

    + Cách 1:

     <Biến đếm> := <giá trị đầu>;

    While (<Biến đếm> <= <giá trị cuối>) do

    Begin

       <câu lệnh>;

       <tăng biến đếm 1 đơn vị>;

    End;

    + Cách 2:

    <Biến đếm> := <giá trị cuối>;

    While (<Biến đếm> >= <giá trị đầu>) do

    Begin

       <câu lệnh>;

       <giảm biến đếm 1 đơn vị>;

    End;

     

    2/ Ví dụ minh họa:

    a/ Ví dụ 1: Tính và đưa ra tổng các số từ 1 đến n? (n là số nguyên dương được nhập vào từ bàn phím)

    Sử dụng For – do:

    Var   i, n: integer;

    s: word;

    Begin

    Readln(n);

    For  i:=1 to n do s:= s+i;

    Write(s);

    End.

    Chuyển thành While – do:

    + Dạng 1:

    Var   i, n: integer;

            s: word;

    Begin

       Readln(n);

    i:=1;

    While (i <= n) do

    Begin

    s:= s+i;

    i:=i+1;

       end;

       Write(s);

    End.

    + Dạng 2:

    Var   i, n: integer;

            s: word;

    Begin

           Readln(n);

    i:=n;

    While (i >= 1) do

    Begin

    s:= s+i;

    i:=i-1;

           end;

           Write(s);

    End.

     

     

    b/ Ví dụ 2: 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 có bao nhiêu con mỗi loại?”

     

    Sử dụng For – do:

      Var   ga: byte;

      Begin

      For  ga:=1 to 24 do

        If (2*ga + (100-ga)*4 = 100) then

        Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);

    End.

    Chuyển thành While – do:

    + Dạng 1:

    Var   ga: byte;

    Begin

    ga:=1;

    While (i<= 24) do

       Begin

                 If (2*ga + (100-ga)*4 = 100) then

        Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);

                ga:=ga+1;

           End;

        End.

    + Dạng 2:

    Var   ga: byte;

    Begin

    ga:=24;

    While (i>=1) do

       Begin

            If (2*ga + (100-ga)*4 = 100) then

               Write(‘so ga la:’,ga,’ so cho la:’, 36-ga);

            ga:=ga-1;

       End;

    End.

    hơi lâu nhóa

    Bình luận
  2. Phương án chuyển: đầu tiên ta cho biến đếm có giá trị bằng giá trị đầu, điều kiện là biến đếm <= giá trị cuối ở vòng lặp while, và trong câu lệnh ở vòng lặp while có câu lệnh cuối là biến đếm:=biến đếm+1.

    Cấu trúc for:

    for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do câu lệnh>;

    Cấu trúc while:

    while <điều kiện> do <câu lệnh>;

    Chuyển:

    <biến đếm>:=<giá trị đầu>;

    while <biến đếm> <= <giá trị cuối> do

      begin

        <câu lệnh>;

        <biến đếm>:=<biến đếm>+1;

      end;

    Bình luận

Viết một bình luận