Đánh giá thuật toán dùng while

đây là bài viết về lệnh lặp nếu các bạn chưa chắc về kiến thức rẽ nhánh thì nên tham khảo lại TẠI ĐÂY . chúc các bạn vui vẻ.

sau đây là chi tiết :

Giới thiệu

- Một trong những điểm mạnh lớn nhất của máy tính là khả năng thực hiện một chuỗi các lệnh lặp đi lặp lại. Điều đó có được là do sử dụng các cấu trúc lặp trong ngôn ngữ lập trình. Trong bài này bạn sẽ tìm hiểu các loại vòng lặp khác nhau C.

1. Vòng lặp

- Vòng lặp là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó. Vòng lặp là một khái niệm cơ bản trong lập trình cấu trúc. Trong C có các loại vòng lặp sau (for, while, do...while) - Ta sử dụng các toán tử quan hệ và toán tử logic trong các biểu thức điều kiện để điều khiển sự thực hiện của vòng lặp.

2. Vòng lặp "for"

- Cú pháp tổng quát của vòng lặp "for" như sau:

sơ đồ khối:

Đánh giá thuật toán dùng while
cấu trúc vòng lặp

for (khởi tạo giá trị cho biến điều khiển; biểu thức điều kiện; biểu thức thay đổi giá trị của biến điều khiển) 

{

Cậu lệnh (các câu lệnh); 

}

- Khởi tạo giá trị cho biến điều khiển là một câu lệnh gán giá trị ban đầu cho biến điều khiển trước khi thực hiện vòng lặp. Lênh này chỉ được thực hiện duy nhất một lần. Biểu thức điều kiện là một biểu thức quan hệ, xác định điều kiện thoát cho vòng lặp. Biểu thức thay đổi giá trị của biến điều khiển xác định biến điều khiển sẽ bị thaddooior thế nào sau mỗi lần vòng lặp được lặp lại (thường là tăng hoặc giảm giá trị của biến điều khiển). Ba phần trên được phân cách bởi dấu chấm phẩy. Câu lệnh trong than vòng lặp có thể là một lệnh duy nhất (lệnh đơn) hoặc lệnh phức (nhiều lệnh).

- Vòng lặp for sẽ tiếp tục được thực hiện chừng nào mà biểu thức điều kiện còn [b]đúng (true)[b]. Khi biểu thức điều kiện là sai (false), chương trình sẽ thoát ra khỏi vòng lặp for

- Toán tử "phẩy (comma)": phần biểu thức trong toán tử for có thể được mở rộng để thêm vào các lệnh khởi tạo hay các lệnh thay đổi giá trị của biến. Cú pháp như sau:

code:

- Các biểu thức trên được phân tách bởi toán tử phẩy ",", và được thực hiên từ trái sang phải. Thứ tự của các biểu thức là quan trọng trong trường hợp giá trị của biểu thức thứ hai phục thuộc vào giá trị của biểu thức thứ nhất. Toán tử này có độ ưu tiên thấp nhất trong các toán tử của C.

3. Vòng lặp "for" lông nhau

- Một vòng lặp for được gọi là lông nhau khi nó nằm bên trong một vòng lặp for khác. Nó sẽ có dạng tương tự như sau:

sơ đồ khối

Đánh giá thuật toán dùng while
vòng lặp for lồng nhau

code:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

- Vòng lặp for khi không có bất kỳ thành phần nào sẽ là một vòng lặp vô tận. Tùy nhiên, lệnh break bên trong vòng lặp sẽ cho phép thoát khỏi vòng lặp.

4. Vòng lặp "while"

- Cấu trúc lặp thứ hai trong C là vòng lặp while. Cú pháp tổng quát như sau:

sơ đồ khối:

Đánh giá thuật toán dùng while
cấu trúc vòng lặp

code:

while (điều_kiện_là_đúng)

câu_lệnh;

- Trong đó, câu_lệnh có thể là rỗng, hay một lệnh đơn, hay một khối lệnh. Nếu vòng lặp while chứa một tập lệnh thì chúng phải được đặt trong cặp ngoặc xoắn {}. điều_kiện có thể là biểu thức bất kỳ. Vòng lặp sẽ được thực hiện lặp đi lặp lại khi điều kiện trên là đúng (true). Chương trình sẽ chuyển đến thực hiện lệnh tiếp theo sau vòng lặp khi điều kiện trên là sai (false). - Vòng lặp for có thể được sử dụng khi số lần thực hiện vòng lặp đã được xác định trước. Khi số lần lặp không biết trước, vòng lăp while có thể được sử dụng.

5. Vòng lặp "do...while"

- Vòng lặp do ... while còn được gọi là vòng lặp do trong C. Không giống như vòng lặp for và while, vòng lặp này kiểm tra điều kiện tại cuối vòng lặp. Điều này có nghĩa là vòng lặpdo...while sẽ được thực hiện ít nhất một lần, ngay cả khi điều kiện la sai (false) ở lần chạy đầu tiên. Cú pháp tổng quát của vòng lặp do...while viết như sau:

sơ đồ khối

Đánh giá thuật toán dùng while
cấu trúc vòng lặp do-while

code:

do

câu_lệnh

}

while(điều_kiện);

- Cặp dấu ngoặc "{}" là không cần thiết khi chỉ có một câu lệnh hiện diện trong vòng lặp, nhưng việc sử dụng dấu ngoặc "{}" là một thói quen tốt. Vòng lặp do...while lặp đến khi điều_kiện mang giá trị false. Trong vòng lặp do...while, câu_lệnh (khối các câu lệnh) sẽ được thực thi trước, và sau đó điều_kiện được kiểm tra. Nếu điều_kiện là true, chương trình sẽ quay lại thực hiện lệnh do. Nếu điều kiện là false, chương trình chuyển đến thực hiện lệnh nằm sau vòng lặp. Tương tự như vòng lặp for, các vòng lặp while và do...while cũng có thể lồng vào nhau.

6. Các lệnh nhẩy

  1. Lệnh "return"

- Lệnh return dùng để quay lại vị trí gọi hàm sau khi các lệnh trong hàm đó được thực thi xong. Trong lệnh return có thể có một giá trị gắn với nó, giá trị đó sẽ được trả về cho chương trình. Cú pháp tổng quát của cậu lệnh return như sau:

code

- Biểu thức là một tùy chọn (không bắt buộc). Có thể có hơn một lệnh return được sử dụng trong một hàm. Tuy nhiên, hàm sẽ quay trở về vị trí gọi hàm khi gặp lệnh return đầu tiên.

  1. Lệnh "goto" - C là một ngôn ngữ lệnh trình có cấu trúc, tuy vậy nó vẫn chưa một số câu lệnh làm phá vỡ cấu trúc chương trình. Đó là 2 lệnh goto, label. Lệnh goto cho phép chuyển điều khiển tới một câu lện bất kỳ nằm trong cùng khối lệnh hay khác khối lệnh bên trong hàm đó. Vì vậy nó vi phạm các qui tắc của một ngôn ngữ lập trình có cấu trúc. Cú pháp tổng quát là:

code:

goto lebel;

- Trong đó label là một định danh phải xuất hiện như tiền tố (prefix) của một câu lệnh khác trong cùng một hàm. Dấu chấm phẩy ";" sau label đánh dấu sự kết thúc của lệnh goto

  1. Lệnh "break"

    - Câu lệnh break có hai cách dùng. Nó có thể được sử dụng để kết thúc một case trong một câu lệnh switch hoặc để kết thúc ngay một vòng lặp, mà không cần kiểm tra điều kiện vòng lặp. - Khi chương trình gặp lệnh break trong một vòng lặp, ngay lập tức vòng lặp được kết thúc và quyền điều khiển chương trình được chuyển đến câu lệnh theo sau vòng lặp.

  2. Lệnh "continue"

    - Lệnh continue kết thúc lần lặp hiện hành và bắt đầu lần lặp kết tiếp. Khi gặp lệnh này trong chương trình, các câu lệnh còn lại trong thân của vòng lặp được bỏ qua và quyền điều khiển được chuyển đến bước đầu của vòng lặp trong lần lặp kế tiếp. Trong trường hợp for, continue thực hiện biểu thức thay đổi của biến điều khiển và sau đó kiểm tra biểu thức điều kiện. Trong trường hợp của lệnh while và do...while, quyền điều khiển chương trình được chuyển đến biểu thức kiểm tra điều kiện

    7. Hàm "exit()"

    - Hàm exit() là một hàm trong thư viện chuẩn của C. Nó làm việc tương tự như một lệnh chuyển quyền điều khiển, điểm khác nhau chính là các lệnh chuyển quyền điều khiển thường được sử dụng để thoát khỏi một vòng lặp, trong khi exit() được sử dụng để thoát khỏi chương trình. Hàm này sẽ ngay lập tức kết thúc chương trình và quyền điều khiển được trả về cho hệ điều hành. Hàm exit() thường được dùng để kiểm tra một điều kiện bắt buộc cho việc thực thi của một chương trình có được thỏa mãn hay không. Cú pháp tổng quát của hàm exit() như sau:

code:

- Ở đó mã_trả_về là một tùy chọn. Số 0 thường được dùng như một mã_trả_về để xác định sự kết thúc chương trình một cách bình thường. Những giá trị khác xác định một vài loại lỗi.

bài làm luyện tập:

Bài 1. Declare a variable which has the age of the person. Print the user’s name as many times as his age

1. Khai báo một biến có độ tuổi của con người. In tên nhiều lần của người dùng như tuổi tác của mình

sơ đồ khối:

Đánh giá thuật toán dùng while
in tên số lần tuổi

code vòng lặp while;

include <stdio.h>

include <stdlib.h>

/ run this program using the console pauser or add your own getch, system("pause") or input loop / int main(int argc, char *argv[]) { char a[20]; int i,j; printf("Ten: "); scanf("%s",a); printf("Tuoi: "); scanf("%d",&i); j=1; printf("\n\n\n"); while (j<=i) {

printf ("%d %s\t",j,a);
j = j+1;
} printf("\n\n\n"); system("pause"); return 0; }

code: vòng lặp for;

include <stdio.h>

include <stdlib.h>

/ run this program using the console pauser or add your own getch, system("pause") or input loop / int main(int argc, char *argv[]) { char a[20]; int i,j; printf("Ten: "); scanf("%s",a); printf("Tuoi: "); scanf("%d",&i); j=1; printf("\n\n\n"); for (j=1;j<=i;j++) {

printf ("%d %s\t",j,a);
} printf("\n\n\n"); system("pause"); return 0; }

code vòng lặp do - while:

include <stdio.h>

include <stdlib.h>

/ run this program using the console pauser or add your own getch, system("pause") or input loop / int main(int argc, char *argv[]) { char a[20]; int i,j; printf("Ten: "); scanf("%s",a); printf("Tuoi: "); scanf("%d",&i); j=1; printf("\n\n\n"); do {

printf ("%d %s\t",j,a);
j = j+1;
} while (j<=i); printf("\n\n\n"); system("pause"); return 0; }

kết quả ra màn hình:

Đánh giá thuật toán dùng while
in tên với số tuổi

Bài 2. The program displays even numbers from 1 to 30.

2. Chương trình sẽ hiển thị ngay cả con số 1-30.

sơ đồ khối:

Đánh giá thuật toán dùng while
in số từ 1-30

code: vòng lặp while

include <stdio.h>

include <stdlib.h>

/ run this program using the console pauser or add your own getch, system("pause") or input loop / int main(int argc, char *argv[]) { int i; i=1; while (i<=30){

printf("%d\t",i);
i=i+2;
} printf("\n\n\n"); system("pause"); return 0; }

code vòng lặp for

include <stdio.h>

include <stdlib.h>

/ run this program using the console pauser or add your own getch, system("pause") or input loop / int main(int argc, char *argv[]) { int i; i=1; for(i=1;i<=30;i=i+2){

printf("%d\t",i);    
} printf("\n\n\n"); system("pause"); return 0; }

code: vòng lặp do-while

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

0

kết quả in ra màn hình

Đánh giá thuật toán dùng while
in các số từ 1-30

Bài: 3. The program displays numbers from 10 to 0 in the reverse order

3. Những con số hiển thị chương trình 10-0 trong thứ tự đảo ngược

sờ đồ khối :

Đánh giá thuật toán dùng while
in từ 10-1

code vòng lặp while:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

1

code vòng lặp for:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

2

code vòng lặp do-while

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

3

kết quả ra màn hình:

Đánh giá thuật toán dùng while
in từ 10-1

Bài: 4. The program will accept integers and display them until zero (0) is entered

4. Chương trình sẽ chấp nhận số nguyên và hiển thị chúng cho đến khi bằng không (0) được nhập

sơ đồ khối:

Đánh giá thuật toán dùng while
hiển thị 1 số cho tới 0

code: vòng lặp while:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

4

code vòng lặp for:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

5

code vòng lặp do while:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

6

kết quả in ra màn hình

Đánh giá thuật toán dùng while
in số giảm dần

Bài 5. Find the factorial of a number.

Hint:

Get the number.

To begin, set the factorial of the number to be one.

While the number is greater than one

Set the factorial to be the factorial multiplied by the number.

Decrement the number.

Print out the factorial

5. Tìm các giai thừa của một số.

gợi ý:

Lấy tổng số.

Để bắt đầu, thiết lập giai thừa của các số được một.

Trong khi con số này lớn hơn một

Đặt thừa là thừa nhân với số.

Giảm các số.

In ra các thừa

sơ đồ khối

Đánh giá thuật toán dùng while
Tìm giai thừa

code vòng lặp while:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

7

code vòng lặp for:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

8

code vòng lặp do-while:

for (i=1; i< max1; i ++)

{

....

....

for (j=1;j< max1;j++)

{

....

....

}

}

9

hiện ra màn hình:

Đánh giá thuật toán dùng while
tìm giai thừa

Bài 6. Write a program to print the series 100, 95 , 90, 85,………., 5.

6. Viết chương trình in ra hàng loạt 100, 95, 90, 85, .........., 5.

sơ đồ khối:

Đánh giá thuật toán dùng while
in ra bội số của 5

code vòng lặp while:

while (điều_kiện_là_đúng)

câu_lệnh;

0

code vòng lặp for:

while (điều_kiện_là_đúng)

câu_lệnh;

1

code vòng lặp do while:

while (điều_kiện_là_đúng)

câu_lệnh;

2

in ra màn hình:

Đánh giá thuật toán dùng while
in bội số của 5

Bài: 7. Accept two numbers num1 and num2. Find the sum of all odd numbers between the two numbers entered .

7. Chấp nhận hai số num1 và num2. Tìm tổng của tất cả các số lẻ giữa hai

số nhập vào.

sơ đồ khối:

Đánh giá thuật toán dùng while
tổng các số lẻ trong khoảng biết trước

code vòng lặp while:

while (điều_kiện_là_đúng)

câu_lệnh;

3

code vòng lặp for:

while (điều_kiện_là_đúng)

câu_lệnh;

4

code vòng lặp do-while:

while (điều_kiện_là_đúng)

câu_lệnh;

5

in ra màn hình

Đánh giá thuật toán dùng while
in tổng các số lẻ trong khoảng biết trước

8. Write a program to generate the Fibonacci series. (1,1,2,3,5,8,13,………)

8. Viết chương trình để tạo ra các loạt Fibonacci. (1,1,2,3,5,8,13, .........)

sờ đồ khối:

Đánh giá thuật toán dùng while
fibonacci

code vòng lặp while:

while (điều_kiện_là_đúng)

câu_lệnh;

6

code vòng lặp for:

while (điều_kiện_là_đúng)

câu_lệnh;

7

code vòng lặp do-while:

while (điều_kiện_là_đúng)

câu_lệnh;

8

in ra màn hình:

Đánh giá thuật toán dùng while
fibonacci

Trên đây là toàn bộ kiến thức về vòng lặp... mong rằng bài viết của mình sẽ khiến các bạn hiểu về phần này... chúc các bạn vui vẻ...