tek4

[Lập trình C từ 0 đến 1] Bài 12. Vòng lặp while và do...while

by - September. 26, 2021
Kiến thức
Học
<h1>[Lập tr&igrave;nh C từ 0 đến 1] B&agrave;i 12. V&ograve;ng lặp while v&agrave; do...while</h1> <p>B&agrave;i viết &ldquo;[Lập tr&igrave;nh C từ 0 đến 1] B&agrave;i 11. V&ograve;ng lặp for trong C&rdquo; l&agrave; b&agrave;i viết tiếp theo nằm trong series hướng dẫn học lập tr&igrave;nh C của&nbsp;<a href="https://tek4.vn/" target="_blank" rel="noopener">tek4.vn</a>.</p> <p>Độc giả c&oacute; thể tham khảo c&aacute;c b&agrave;i viết kh&aacute;c trong series b&agrave;i viết n&agrave;y&nbsp;<a href="https://tek4.vn/lap-trinh-c-co-ban-den-nang-cao/" target="_blank" rel="noopener">tại đ&acirc;y</a></p> <p>B&agrave;i viết n&agrave;y sẽ cung cấp đến độc giả c&aacute;c cấu tr&uacute;c v&ograve;ng lặp while v&agrave; do...while v&agrave; c&aacute;ch sử dụng, ứng dụng trong c&aacute;c b&agrave;i tập. Trong loạt b&agrave;i hướng dẫn [Lập tr&igrave;nh C từ 0 đến 1], IDE được sử dụng l&agrave; Code::Blocks</p> <h2>V&ograve;ng lặp WHILE</h2> <p style="text-align: center;"><img class="wp-image-7989 size-full aligncenter" src="https://tek4.vn/wp-content/uploads/2021/01/Capture-192.png" alt="" width="496" height="356" />C&uacute; ph&aacute;p v&agrave; cấu tr&uacute;c v&ograve;ng lặp wile</p> <p>Nếu biểu thức1 c&ograve;n kh&aacute;c kh&ocirc;ng th&igrave; c&ograve;n thực hiện c&aacute;c lệnh của v&ograve;ng lặp. Biểu thức trong ngoặc của <strong><em>while</em></strong>&nbsp;c&oacute; thể chứa nhiều biểu thức ph&acirc;n c&aacute;ch nhau bởi dấu phẩy, khi&nbsp;đ&oacute; gi&aacute; trị của biểu thức l&agrave; gi&aacute; trị của biểu thức cuối c&ugrave;ng.</p> <p>Quay về v&iacute; dụ 10 lần t&ecirc;n bạn ở b&agrave;i trước ch&uacute;ng ta thử m&ocirc; phỏng lại bằng code while nh&eacute;</p> <p>Chương tr&igrave;nh for</p> <pre class="EnlighterJSRAW" data-enlighter-language="c">#include &lt;stdio.h&gt; int main() { int i; for (i = 1; i &lt;= 10; i++) { printf("Nguyen Cong Thanh\n"); } return 0; }</pre> <p>Chương tr&igrave;nh while</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">#include &lt;stdio.h&gt; int main() { int i; i=1; while(i&lt;=10) { printf("Nguyen Cong Thanh\n"); i++; } return 0; }</pre> <p>Về mặt c&aacute;c biểu thức 1, biểu thức 2, biểu thức 3 trong C đều c&oacute; mặt trong đoạn chương tr&igrave;nh sử dụng while. Tuy nhi&ecirc;n vị tr&iacute; l&uacute;c n&agrave;y l&agrave; một d&ograve;ng lệnh kh&aacute;c của chương tr&igrave;nh.</p> <p>Ta hiểu một v&ograve;ng lặp cần c&aacute;c vấn đề sau:</p> <ol> <li>Gi&aacute; trị khởi đầu ( c&oacute; thể khai b&aacute;o v&agrave; g&aacute;n gi&aacute; trị đầu như trong chương tr&igrave;nh l&agrave; int i v&agrave; i =1) tương đương l&agrave; biểu thức 1 trong for</li> <li>Điều kiện c&ograve;n lặp tương đương l&agrave; biểu thức 2 trong b&agrave;i for trước</li> <li>Gi&aacute; trị biến đếm thay đổi như thế n&agrave;o l&agrave; c&acirc;u lệnh i++; hay biểu thức 3 trong b&agrave;i học for</li> </ol> <p>Như vậy so s&aacute;nh với c&uacute; ph&aacute;p while ch&uacute;ng ta chỉ c&oacute; điều kiện tương ứng l&agrave; c&uacute; ph&aacute;p biểu thức 2 trong for. Cần c&oacute; th&ecirc;m gi&aacute; trị khởi đầu v&agrave; Gi&aacute; trị thay đổi v&igrave; vậy v&iacute; dụ tr&ecirc;n l&agrave; một c&aacute;ch sử dụng while. Gi&aacute; trị khởi đầu được đặt trước v&ograve;ng lặp v&agrave; gi&aacute; trị thay đổi được đặt ở d&ograve;ng lệnh cuối c&ugrave;ng của khối lệnh.</p> <p>Dưới đ&acirc;y l&agrave; một v&iacute; dụ để ch&uacute;ng ta hiểu hơn:</p> <table width="70%"> <tbody> <tr> <td> <pre class="EnlighterJSRAW" data-enlighter-language="c">/*Chương tr&igrave;nh minh họa cấu tr&uacute;c while*/ #include &lt;stdio.h&gt; void main() { int time = 1;&nbsp;/* Biến&nbsp;đếm. */ while(time &lt;= 5) { printf("Gia tri cua bien dem = %d\n", time); time++; }&nbsp;/* Kết th&uacute;c v&ograve;ng while. */ printf("Ket thuc vong lap."); }</pre> </td> </tr> <tr> <td> <p>Kết quả</p> <p>Gia tri cua bien dem =1</p> <p>Gia tri cua bien dem =2</p> <p>Gia tri cua bien dem =3</p> <p>Gia tri cua bien dem =4</p> <p>Gia tri cua bien dem =5</p> <p>Ket thuc vong lap.</p> </td> </tr> </tbody> </table> <h2>V&ograve;ng lặp DO .. WHILE</h2> <p>do</p> <p>&lt;khối lệnh&gt;;</p> <p><em><strong>while</strong></em>&nbsp;(biểu thức);</p> <p style="font-weight: 400;">Thực hiện khối lệnh cho đến khi biểu thức c&oacute; gi&aacute; trị bằng 0. Tức l&agrave; so với while do while sẽ thực hiện khối lệnh trước rồi mới kiểm tra điều kiện như sơ đồ sau :<br /><img class="wp-image-7995 alignleft" src="https://tek4.vn/wp-content/uploads/2021/01/do.png" alt="" width="461" height="411" /></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Quay về v&iacute; dụ 10 lần t&ecirc;n bạn ở b&agrave;i trước ch&uacute;ng ta thử m&ocirc; phỏng lại bằng code while nh&eacute;</p> <p>Chương tr&igrave;nh for</p> <pre class="EnlighterJSRAW" data-enlighter-language="c">#include &lt;stdio.h&gt; int main() { int i; for (i = 1; i &lt;= 10; i++) { printf("Nguyen Cong Thanh\n"); } return 0; }</pre> <p>Chương tr&igrave;nh while</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">#include &lt;stdio.h&gt; int main() { int i; i=1; while(i&lt;=10) { printf("Nguyen Cong Thanh\n"); i++; } return 0; }</pre> <p>Chương tr&igrave;nh do&nbsp; while</p> <pre class="EnlighterJSRAW" data-enlighter-language="c">#include &lt;stdio.h&gt; int main() { int i; i=1; do { printf("Nguyen Cong Thanh\n"); i++; } while(i&lt;=10); return 0; }</pre> <p>&nbsp;</p> <p>Về mặt c&aacute;c biểu thức 1, biểu thức 2, biểu thức 3 trong C đều c&oacute; mặt trong đoạn chương tr&igrave;nh sử dụng while. Tuy nhi&ecirc;n vị tr&iacute; l&uacute;c n&agrave;y l&agrave; một d&ograve;ng lệnh kh&aacute;c của chương tr&igrave;nh.</p> <p>Ta hiểu một v&ograve;ng lặp cần c&aacute;c vấn đề sau:</p> <ol> <li>Gi&aacute; trị khởi đầu ( c&oacute; thể khai b&aacute;o v&agrave; g&aacute;n gi&aacute; trị đầu như trong chương tr&igrave;nh l&agrave; int i v&agrave; i =1) tương đương l&agrave; biểu thức 1 trong for</li> <li>Điều kiện c&ograve;n lặp tương đương l&agrave; biểu thức 2 trong b&agrave;i for trước</li> <li>Gi&aacute; trị biến đếm thay đổi như thế n&agrave;o l&agrave; c&acirc;u lệnh i++; hay biểu thức 3 trong b&agrave;i học for</li> </ol> <p>Như vậy so s&aacute;nh với c&uacute; ph&aacute;p do while ch&uacute;ng ta chỉ c&oacute; điều kiện tương ứng l&agrave; c&uacute; ph&aacute;p biểu thức 2 trong for. Cần c&oacute; th&ecirc;m gi&aacute; trị khởi đầu v&agrave; Gi&aacute; trị thay đổi v&igrave; vậy v&iacute; dụ tr&ecirc;n l&agrave; một c&aacute;ch sử dụng do while. Gi&aacute; trị khởi đầu được đặt trước v&ograve;ng lặp v&agrave; gi&aacute; trị thay đổi được đặt ở d&ograve;ng lệnh cuối c&ugrave;ng của khối lệnh.</p> <p>Dưới đ&acirc;y l&agrave; một v&iacute; dụ để ch&uacute;ng ta hiểu hơn:</p> <p>V&iacute; dụ:</p> <table width="70%"> <tbody> <tr> <td> <pre class="EnlighterJSRAW" data-enlighter-language="generic">/*Chương tr&igrave;nh minh họa cấu tr&uacute;c do .. while*/ #include &lt;stdio.h&gt; void main() { int time;&nbsp;/* Biến&nbsp;đếm. */ time = 1; do { printf("Gia tri cua bien dem = %d\n", time); time++; }while(time &lt;= 5); printf("Ket thuc vong lap. "); }</pre> <p>&nbsp;</p> </td> </tr> <tr> <td> <p>Kết quả</p> <p>Gia tri cua bien dem =1</p> <p>Gia tri cua bien dem =2</p> <p>Gia tri cua bien dem =3</p> <p>Gia tri cua bien dem =4</p> <p>Gia tri cua bien dem =5</p> <p>Ket thuc vong lap.</p> </td> </tr> </tbody> </table> <p>Ch&uacute;ng ta sẽ kết th&uacute;c &ldquo;[Lập tr&igrave;nh C từ 0 đến 1] B&agrave;i 12. V&ograve;ng lặp while v&agrave; do...while&rdquo; trong series [Lập tr&igrave;nh C từ 0 đến 1] ở đ&acirc;y. H&atilde;y c&ugrave;ng đ&oacute;n xem &ldquo;B&agrave;i 12. Tho&aacute;t khỏi v&ograve;ng lặp bằng break v&agrave; continue&rdquo;.</p> <p>H&atilde;y để lại b&igrave;nh luận v&agrave; theo d&otilde;i series b&agrave;i viết: &ldquo;<a href="https://tek4.vn/tu-khoa/lap-trinh-c-tu-0-den-1/">Lập tr&igrave;nh C từ 0 đến 1</a>&rdquo; để tiếp tục cập nhật những th&ocirc;ng tin mới nhất.</p>