You are on page 1of 40

Conceive Design Implement Operate

http://www.poly.edu.vn
MỤC TIÊU

Hiểu về các câu trúc trong lập trình


Biết cách sử dụng lệnh lặp while
Biết cách sử dụng lệnh lặp do while
Biết cách sử dụng lệnh lặp for
Biết cách sử dụng lệnh ngắt (break, continue, goto)
MỤC TIÊU

Lệnh lặp
while

do…While

Lệnh lặp & lệnh ngắt


for(;điều kiện;)

break

continue

goto
3
4
CẤU TRÚC LẬP TRÌNH

Trong các ngôn ngữ lập trình, thường có 3 câu trúc chính
Cấu trúc tuần tự
Cấu trúc quyết định chọn lựa rẽ nhánh
Cấu trúc lặp

false
ĐK
Nhập a,b Nhập:a,b
true

false true
c=a+b b=0
c=a/b
Xuất: lỗi Công việc

Xuất c Xuất: c
LỆNH LẶP

 Lệnh lặp được sử dụng để điều khiển các công việc


được lặp đi lặp lại nhiều lần. Mỗi lệnh lặp luôn có
điều kiện dừng. Ngôn ngữ C có 3 lệnh lặp:
While
Do While
For
 Lệnh ngắt được sử dụng để ngắt vòng lặp bất kỳ khi
nào chúng ta muốn. Ngôn ngữ C có 3 lệnh ngắt:
break
Continue
goto

6
7
ĐẶT VẤN ĐỀ

Ví dụ
Viết chương trình xuất các số từ 1 đến 10
=> Sử dụng 10 câu lệnh printf
Viết chương trình xuất các số từ 1 đến 1000
=> Sử dụng 1000 câu lệnh printf !
Giải pháp
Sử dụng cấu trúc lặp lại một hành động trong khi còn thỏa một điều kiện
nào đó.
3 lệnh lặp: for, while, do… while

8
ĐẶT VẤN ĐỀ
Sinh viên A đăng kí thi tốt nghiệp tại trường Fpoly.
 Nếu sinh viên A học không đủ số học kỳ(<=7) thì sinh viên A sẽ phải học tiếp.
 Trong trường hợp sinh viên A học tiếp lần thứ 2, chúng ta lại nói rằng nếu sinh viên A
học không đủ số học kỳ để được thi tốt nghiệp thì sinh viên A phải học tiếp…
 Vậy việc sinh viên A “học đi” cho từng học kỳ là công việc sẽ được lặp đi lặp lại nhiều
lần khi điều kiện sinh viên A đủ số học kỳ để thi tốt nghiệp vẫn chưa đạt.
false

Học kỳ <=7 Học đi


true

Sinh viên học đi


THI TỐT NGHIỆP
9
LỆNH LẶP WHILE

Cú pháp
while (<<điều kiện>>) {
// công việc;
} ĐK
false

Diễn giải: true

Thực hiện công việc trong


khi biểu thức điều kiện có
giá trị là true. Công việc

10
VÍ DỤ 1 LỆNH LẶP WHILE

Ví dụ
int i = 1;
while (i < 20) { i=1
printf("Hello World !");
i++; false
i<20
} true
Diễn giải:
Đoạn mã trên xuất 19 chữ “Hello Hello World
World” ra màn hình
i++

11
VÍ DỤ 2 LỆNH LẶP WHILE

Tính tổng các số từ 3 đến 6


i=3, tong=0
int i=3; Lần i Tổng
int tong=0; 1 3 3
false
2 4 7 i<=6
while(i<=6){
3 5 12 true
tong+=i;
4 6 18
i++; tong+=i
}
printf("%d", tong); i++

tong

12
DEMO
1. Xuất bảng cửu chương 7
2. Tính trung bình cộng các số chia
hết cho 3 từ 1 đến 20.

13
ĐẶT VẤN ĐỀ
Sinh viên A bắt đầu thi tốt nghiệp học tại trường Fpoly.
Nếu sinh viên A thi tốt nghiệp dưới 5 điểm thì sinh viên A sẽ phải thi lại.
Trong trường hợp sinh viên A thi điểm tốt nghiệp từ 5 điểm trở lên thì sinh
viên A được xem là hoàn thành yêu cầu tốt nghiệp.
Vậy việc sinh viên A “Thi tốt nghiệp” là công việc sẽ được lặp đi lặp lại nhiều
lần khi điều kiện điểm thi tốt nghiệp của sinh viên A vẫn còn chưa đạt.
false

Thi tốt
Điểm < 5
nghiệp

true
Sinh viên FPoly
16
LỆNH LẶP DO….WHILE

Cú pháp:
do {
// công việc Công việc

}
true
while (<<điều kiện>>); ĐK

Diễn giải: false

Tương tự lệnh lặp while chỉ khác


ở chỗ điều kiện được kiểm tra
sau, nghĩa là công việc được
thực hiện ít nhất 1 lần.

17
VÍ DỤ 1 LỆNH LẶP DO….WHILE

Ví dụ
int so = 0;
do { số=0

scanf("%d", &so);
} Nhập số

while (so < 0);


Diễn giải: Số < 0
true
Đoạn mã trên chỉ cho phép nhập false
số nguyên dương từ bàn phím.

18
VÍ DỤ 2 LỆNH LẶP DO...WHILE

 Ví dụ
int so=0;
do{ so=0
printf("Nhập số: ");
scanf("%d", &so);
} Nhập so

while(so>=0 && so<=10);


so>= 0
true &&
so<=10
 Diễn giải: false
 Đoạn mã trên chỉ cho phép nhập số
nguyên dương từ 0-10 từ bàn phím.

19
DEMO

20
22
TÓM TẮT BÀI HỌC

Cấu trúc lập trình


Cấu trúc tuần tự
Cấu trúc rẽ nhánh
Cấu trúc lặp
Lệnh lặp
while
do…While

23
24
ĐẶT VẤN ĐỀ
Sinh viên A bắt đầu học tại trường Fpoly.
 Nếu sinh viên A học chưa đủ 7 học kỳ tại Fpoly thì sinh viên A sẽ phải học tiếp.
 Trong trường hợp sinh viên A học đủ 7 học kỳ thì sinh viên A được xem là hoàn thành
đủ số hoc kỳ yêu cầu.
 Vậy việc sinh viên A “học đi” là công việc sẽ được lặp đi lặp lại nhiều lần trong từng
học kỳ khi điều kiện sinh viên A hoàn thành tổng số học kỳ vẫn chưa đạt.

false

Học kỳ Học kỳ
Học Học đi
<= 7 tiếp theo

Sinh viên FPoly true THI TỐT NGHIỆP


25
LỆNH LẶP FOR

Cú pháp 1 2 5 4 7
for (khởi đầu ; điều kiện; bước nhảy){
// công việc
36 Khởi đầu
}
Diễn giải false
Điều kiện
B1: Thực hiện <khởi đầu>
true
B2: Kiểm tra <điều kiện>
 True: thực hiện Công việc
 <công việc>
 <bước nhảy>
 Trở lại B2 Bước nhảy

 False: dừng lệnh lặp

26
VÍ DỤ LỆNH LẶP FOR

int i;
Xuất bảng nhân 7
for(i=1;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
}
Debug: Bước 1
Debug: lặp lần 2
Debug: lặp lần 3
7x1=7 int i;Debug: lặp lần 4
int i;Debug: lặp lần 5
7 x 2 = 14 int i;Debug: lặp lần 6
7 x 3 = 21 for(i=1;i<=10;i++){
int i;Debug: lặp lần 7
for(i=2;i<=10;i++){
int i;Debug: lặp lần 8
7 x 4 = 28 for(i=3;i<=10;i++){
int i;Debug: lặp lần 9
for(i=4;i<=10;i++){
printf("%d
int i;Debug:xlặp %dlần= 10
%d\n",7,i,7*i);
7 x 5 = 35 for(i=5;i<=10;i++){
printf("%d
int i;Debug:xLặp %dlần= %d\n",7,i,7*i);
11
for(i=6;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
7 x 6 = 42 } for(i=7;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
7 x 7 = 49 } for(i=8;i<=10;i++){
printf("%d
int i; x %d = %d\n",7,i,7*i);
} for(i=9;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
7 x 8 = 56 } for(i=10;i<=10;i++){
printf("%d x %d = %d\n",7,i,7*i);
} for(i=11;i<=10;i++){
printf("%d x %d = //11<=10
%d\n",7,i,7*i);
 false
7 x 9 = 63 } printf("%d x %d = %d\n",7,i,7*i);
7 x 10 = 70 } printf("%d x %d = %d\n",7,i,7*i);
} printf("%d x %d = %d\n",7,i,7*i);
}
}
}
LỆNH LẶP FOR

Ví dụ: Cần lấy tất cả hồ sơ sinh 1 Sinh viên 1


viên năm cuối để trong kho để xét
tốt nghiệp
2 Sinh viên 2
Trong cuộc sống thực: Đi lấy từng hồ
sơ trong kho
Trong lập trình: Sử dụng vòng lặp 3 Sinh viên 3
biến đếm for để lấy ra từng sinh viên
có trong kho dữ liệu
4 Sinh viên 4

n Sinh viên n
DEMO

30
LỆNH NGẮT

 Lệnh ngắt được sử dụng để ngắt vòng lặp bất kỳ khi


nào chúng ta muốn.
 Ngôn ngữ C có 3 lệnh ngắt:
break

continue

goto

31
LỆNH BREAK & CONTINUE

break dùng để ngắt lệnh lặp


Continue dùng để thực hiện lần lặp tiếp theo
ngay lặp tức

32
LỆNH BREAK & CONTINUE

Ví dụ: Đi vào kho hồ sơ và lấy ra sinh viên tên Trần Văn A
Khi lấy được sinh viên Trần Văn A thì đi ra, không cần thực hiện lấy các
hồ sơ khác

33
LỆNH BREAK & CONTINUE

Ví dụ: Đóng mộc cho các sinh viên đã tốt nghiệp
Gặp những sinh viên nào chưa tốt nghiệp thì không cần thực hiện, tiếp
tục xem các sinh viên tiếp theo

34
LỆNH BREAK

int i; int a = 10;


for(i=1;i<10;i++){ while( a < 20 ) {
printf("Gia tri cua a: %d\n", a);
if(i%2==0)
a++;
break;
printf("%d\n",i); if( a > 15) {
} /* ket thuc vong lap khi a lon hon 15 */
break;
}
}

35
VÍ DỤ : VIẾT MÃ THEO LƯU ĐỒ THUẬT TOÁN

Kiểm tra số nhập vào từ bàn phím


có phải là số nguyên tố hay
Nhập số
không?

i=2

false
i<số/2 Là số nguyên tố
true

false Không phải số


số%i== 0
nguyên tố
true

i++
LỆNH CONTINUE

int i; int a = 10;


for(i=1;i<10;i++){
do {
if(i%2==0)
if( a == 15) {
continue; // quay về do khi a = 15 (bỏ qua lệnh print)
printf("%d\n",i); a = a + 1;
} continue;
}
1 Gia tri cua a: 10
3 Gia tri cua a: 11 printf("Gia tri cua a: %d\n", a);
5 Gia tri cua a: 12
Gia tri cua a: 13 a++;
7 Gia tri cua a: 14
9 Gia tri cua a: 16 } while( a < 20 );
Gia tri cua a: 17
Gia tri cua a: 18
Gia tri cua a: 19 37
VÍ DỤ CONTINUE

int x = 2;
while (x < 7) { 4
if (x % 2 == 0) { 6
x++;
continue;
} else {
x++;
}
printf("%d \n", x);
}
}
38
DEMO

39
LỆNH GOTO

goto cung cấp một bước nhảy vô điều kiện đến


một câu lệnh có nhãn trong cùng một hàm.

Label 1 Công việc 1

Goto
Label 2 Công việc 2 Label 3

Label 3 Công việc 3

40
VÍ DỤ GOTO

int a = 10;

TEST:do {
if( a == 15) {
// quay ve do khi a = 15 (bỏ qua lệnh printf)
a = a + 1;
goto TEST;
}
printf("Gia tri cua a: %d\n", a);
a++;
} while( a < 20 );

41
DEMO

42
TÓM TẮT BÀI HỌC

Lệnh lặp & lệnh ngắt


for(;điều kiện;)
break
continue
goto

43
44

You might also like