www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Nhập Môn Lập Trình
Cấu trúc Vòng Lặp
For, While, Do … While
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Road Map
Lưu đồ: cấu trúc vòng lâp
Biểu thức và các phép toán trong ngôn ngữ lập trinh C
Biểu thức, toán hạng và toán tử
Phép toán: số học, quan hệ, luận lý, trên bít, tăng giảm
Phép toán điều kiện
Cấu trúc vòng lặp trong ngôn ngữ lập trinh C
for
while
do …. while
break, continue
Các ví dụ về vòng lặp
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Road Map
Cấu trúc chương trình trong ngôn ngữ C
Cấu trúc chương trình
Tầm vực biến
Khối lệnh
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Lưu đồ: vòng lặp
Cấu trúc vòng lặp
Một chương trình máy tính là một tập các câu lệnh sẽ được thực
hiện tuần tự.
Nó có thể lặp lại một số bước với số lần lặp xác định theo yêu cầu
của bài toán hoặc đến khi một số điều kiện nhất định được thỏa
BEGIN
DISPLAY “Scooby”
DISPLAY “Scooby”
DISPLAY “Scooby”
DISPLAY “Scooby”
END
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Lưu đồ: vòng lặp
Nếu để hiển thị tên ta 1000 lần:
viết DISPLAY “Scooby” 1000 lần thì rất tốn công sức.
Có thể tinh giản vấn đề bằng cách viết câu lệnh DISPLAY
chỉ một lần, sau đó đặt nó trong cấu trúc vòng lặp, và chỉ thị
máy tính thực hiện lặp 1000 lần cho câu lệnh trên
Do loop 1000 times
DISPLAY “Scooby”
End loop
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Lưu đồ: vòng lặp
Ví dụ sau là cách viết khác nhưng cũng dùng cấu trúc vòng lặp.
BEGIN
cnt=0
WHILE (cnt < 1000)
DO
DISPLAY “Scooby”
cnt=cnt+1
END DO
END
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Lưu đồ: vòng lặp
S TART
cnt=0
cnt < 1000
DIS PLA Y " Sc ooby "
cnt=c nt+1
S TOP
Yes
No
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Bài tập nhóm
1. Viết một đoạn mã giả để nhập 20 số và tính tổng của các số dương.
BEGIN
cnt=0, sum = 0
WHILE (cnt < 20)
DO
INPUT num
IF num > 0
sum = sum + num
END IF
cnt=cnt+1
END DO
DISPLAY “Sum of positive number”, sum
END
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Bài tập nhóm
2. Viết một đoạn mã giả để nhập N bất kỳ số và tính trung bình các số âm.
BEGIN
cnt=0, sum = 0, cntNegNum = 0
INPUT N
WHILE (cnt < N)
DO
INPUT num
IF num < 0
sum += num
cntNegNum += 1;
END IF
cnt=cnt+1
END DO
sum = sum/cntNegNum /* something wrong here */
DISPLAY “Average of negative number”, sum
END
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Road Map
Lưu đồ: cấu trúc vòng lâp
Biểu thức và các phép toán trong ngôn ngữ lập trinh C
Biểu thức, toán hạng và toán tử
Phép toán: số học, quan hệ, luận lý, trên bít, tăng giảm
Phép toán điều kiện
Cấu trúc vòng lặp trong ngôn ngữ lập trinh C
for
while
do …. while
break, continue
Các ví dụ về vòng lặp
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
11
Biểu thức là sự kết hợp hợp lệ giữa các toán hạng và các
toán tử và giá trị của nó sẽ được gán cho một biến bên
trái.
Z = (A + B) * 2.5;
A, B, 2.5 : là các toán hạng
+ , * : là các toán tử
Biểu Thức
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
12
Các phép toán số học
Phép toán Ý nghĩa Ví dụ
+ Cộng 5+2=7
- Trừ 5–2=3
* Nhân 5*2=10
/ Chia 5/2=2.5
% Lấy phần dư 5%2=1
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
13
Các phép toán quan hệ (so sánh)
Phép toán Ý nghĩa Ví dụ
> Lớn hơn a > b
>= Lớn hơn hoặc bằng a >= b
< Nhỏ hơn a < b
<= Nhỏ hơn hoặc bằng a <= b
== Bằng a == b
!= Không bằng a!= b
Trong C nếu kết quả là đúng (nhận giá trị 1), nếu sai (nhận giá trị 0).
Ví dụ : 3 > 5 – 1 0 (sai)
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
14
Các phép toán luận lý (Logic)
Phép
toán
Ý nghĩa Ví dụ
! Not (phủ định) !a
&& And (phép giao) a && b
|| Or (phép hoặc) a || b
Kết quả là đúng (nhận giá trị 1), nếu sai (nhận giá trị 0).
Ví dụ : !(3 > 5 – 1) 1 (đúng)
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
15
Phép toán trên bit (bitwise)
Phép toán Ý nghĩa
~ Not bit
& And bit (giao từng cặp bit)
| Or bit (hoặc từng cặp bit)
^ Xor bit (exclusive)-cặp bit khác nhau trả
về 1
<< Dịch trái
>> Dịch phải
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
16
BẢNG VÍ VỤ :
Bit A Bit B
Kết quả
~A A & B A | B A ^ B
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
Lưu ý : Các phép toán này chỉ thực hiện trên các toán
hạng có kiểu dữ liệu là số nguyên.
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
17
Phép toán tăng giảm
Phép toán Ý nghĩa
++x Tăng x lên 1 trước khi dùng
x++ Tăng x lên 1 sau khi dùng
x Giảm x xuống 1 trước khi dùng
x Giảm x xuống 1 sau khi dùng
Ví dụ : n = 3;
A = ++n; A sẽ được gán giá trị là 4
A = n++; A sẽ được gán giá trị là 3
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
•
Prefix: changed before its value is used
q = 2 * ++ a; /* first, increment a by 1;
/* then, multiply a by 2 and assign to q */
•
Postfix: changed after its value is used
q = 2 * a++; /* first, multiply a by 2 and assign to q;
/* then, increment a by 1 */
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Don’t Be Too Clever
You can fooled if you try to do too much at once with the
increment operators
Ví dụ: In bảng bình phương
While (n < 21)
{
printf(“%10d %10d\n”, num, num*num++);
}
Tùy thuộc vào hệ thống, bảng cửu chương có thể bị in sai. Ví dụ:
Thay vì: 5 25
Có thể: 6 25
hay 6 30
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
Don’t Be Too Clever
Trong ngôn ngữ lập trình C, chương trình biên dịch (complier)
có thể chọn arguments trong hàm để xử lý trước nhằm nâng
hiệu quả của chúng. Tuy nhiên, điều này có thể gây vấn đề nếu
chúng ta dùng toán tử increment
Các ví dụ khác:
Ans = num/2 + 5*(1 + num++);
n = 3;
y = n++ + n++;
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
21
Phép toán điều kiện (biểu thức điều kiện)
<Điều Kiện> ? <biểu thức 1> : <biểu thức 2>;
ĐK đúng
ĐK sai
Ví dụ : kq = (5>3+1) ? 10 : 20; kq =10
Các Phép Toán
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
22
Toán Tử Trong Ngôn Ngữ C
Toán Tử (thứ tự ưu ên từ trên xuống) Cách
nh
++ (posix) (posix) () (funcon call) [ ] { } L-R
++ (prex) (prex) - + ~ ! sizeof *() &()
(all unary)
R-L
(type name) R-L
* / % L-R
+ - (binary) L-R
<< >> L-R
== != L-R
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
23
Toán Tử Trong Ngôn Ngữ C
Toán Tử (thứ tự ưu ên từ trên xuống) Cách
nh
& L-R
^ L-R
| L-R
&& L-R
|| L-R
? : R-L
= *= /= %= += -= <<= >>= &= |= ^= R-L
, (comma) L-R
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
24
1/ Nhập vào một số hệ 10, đổi ra hệ số 8 và hệ 16
CÁC VÍ DỤ
#include <stdio.h>
#include <conio.h>
void main()
{ int n;
printf(“Nhap mot so he 10: ”);
scanf(“%d”,&n);
printf(“Chuyen sang he 8 la : %o”,n);
printf(“Chuyen sang he 16 la : %x”,n);
getch();
}
www.hoasen.edu.vn
Cng Đi hc Hoa Sen xây dng tương lai
www.hoasen.edu.vn
25
3/ Cho 2 số int a=2, b=4; Hãy đoán trị của các số a, b và n trong
các phép toán tăng giảm sau:
Biểu thức n=? a=? b=?
n=a+b
n=++a+b
n=a++ +b
n= a+b
n=a +b
6 2 46 2 46 2
47 3
6 3 4
5 1 4
6 1 4
CÁC VÍ DỤ