cẤu trÚc cÁc ĐiỀu khiỂnvòng lặp và chỉ đến câu lệnh liền au nó . cÁc cÂu...
TRANSCRIPT
LẬP TRÌNH CƠ BẢN
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
CẤU TRÚC CÁC ĐIỀU KHIỂN
LẬP TRÌNH CƠ BẢN
1
� Khối câu lệnh� Cấu trúc if� Cấu trúc switch� Cấu trúc for
NỘI DUNG
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Cấu trúc while� Cấu trúc do … while� Lệnh break và continue
� Một khối câu lệnh là tập các câu lệnh được bao
trong cặp { và }
� Ví dụ 3.1. Khối câu lệnh{
KHỐI CÂU LỆNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
{
char ten[30];
printf("\n Nhap vao ten cua ban:");
scanf("%s", ten);
printf("\n Chao Ban %s",ten);
}
� Ví dụ 3.2. Khối câu lệnh#include <stdio.h>
#include<conio.h>
int main ()
{ /*đây là đầu khối*/
KHỐI CÂU LỆNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
{ /*đây là đầu khối*/
char ten[50];
printf("Xin cho biet ten cua ban !");
scanf("%s",ten);
getch();
return 0;
} /*đây là cuối khối*/
� Các khối có thể lồng nhau
� Sự lồng nhau không hạn chế{
… lệnh;{
… lệnh;
KHỐI CÂU LỆNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
… lệnh;{
… lệnh;{
…}
}}
}
� Phạm vi hoạt động của biến trong khối câulệnh:� Trong các khối lệnh khác nhau hay các khối lệnh
lồng nhau có thể khai báo các biến cùng tên.
KHỐI CÂU LỆNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Nếu một biến được khai báo bên ngoài khối lệnh
và không trùng tên với biến bên trong khối lệnh
thì nó cũng được sử dụng bên trong khối lệnh.
� Một khối lệnh con có thể sử dụng các biến bên
ngoài, các lệnh bên ngoài không thể sử dụng các
biến bên trong khối lệnh con.
� Phạm vi hoạt động của biến:{
… lệnh;{
int a,b; /*biến a, b trong khối lệnh thứ nhất*/… lệnh;
}
KHỐI CÂU LỆNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
}…lệnh;{
int a,b; /*biến a,b trong khối lệnh thứ hai*/… lệnh;{int c,d;… lệnh;
}
}
}
� Dạng không đầy đủ:� Cú pháp:if (<Biểu thức điều kiện>)
<Công việc>
� Lưu đồ:
CẤU TRÚC RẼ NHÁNH
BT điều kiện
Sai
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Lưu đồ: kiện
Công việc
Đúng
� Dạng không đầy đủ:� Ví dụ:#include <stdio.h> #include <conio.h> int main () {
CẤU TRÚC RẼ NHÁNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
{ float a; printf("Nhap a = "); scanf("%f",&a); if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a); getch(); return 0;
}
� Dạng đầy đủ:� Cú pháp:if (<Biểu thức điều kiện>)
<Công việc1>else
CẤU TRÚC RẼ NHÁNH
BT điều kiện
SaiĐúng
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
else<Công việc2>
� Lưu đồ:Công việc 2
kiện
Công việc 1
� Dạng đầy đủ:� Ví dụ:#include <stdio.h> #include <conio.h> int main () {
CẤU TRÚC RẼ NHÁNH
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
{ float a; printf("Nhap a = "); scanf("%f",&a); if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a); else
printf(“Khong the tim duoc nghich dao cua a”); getch(); return 0; }
� Cú pháp:switch (<Biểu thức>) { case giá trị 1:
Khối lệnh thực hiện công việc 1; break;
CẤU TRÚC LỰA CHỌN
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
break; … case giá trị n:
Khối lệnh thực hiện công việc n; break;
[default : Khối lệnh thực hiện công việc mặc định; break;]
}
CẤU TRÚC LỰA CHỌN
Tính giá trị BT
=giá trị 1
=giá trị 2
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
=giá trị 2
=giá trị n
Công việc 1 Công việc 2 Công việc n Công việc n+1
� Ví dụ:#include <stdio.h> #include<conio.h> int main () { int songuyen, phandu;
clrscr(); printf("\n Nhap vao so nguyen "); scanf("%d",&songuyen);
CẤU TRÚC LỰA CHỌN
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
scanf("%d",&songuyen); phandu=(songuyen % 2); switch(phandu) {
case 0: printf("%d la so chan ",songuyen); break;
case 1: printf("%d la so le ",songuyen); break;
} getch(); return 0;
}
� Cú pháp:
for (Biểu thức 1; biểu thức 2; biểu thức 3)
<Công việc>
� Lưu đồ:
CẤU TRÚC LẶP FOR
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Lưu đồ:
CẤU TRÚC LẶP FOR
Tính giá trị BT1
Biểu thức 2Sai
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
Công việc
Tính giá trị BT3
Biểu thức 2
Đúng
� Chú ý: � Khi biểu thức 2 vắng mặt th. nó được coi là luôn luônđúng;
� Biểu thức 1: thông thường là một phép gán để khởitạo giá trị ban đầu cho biến điều kiện;
CẤU TRÚC LẶP FOR
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
tạo giá trị ban đầu cho biến điều kiện;
� Biểu thức 2: là một biểu thức kiểm tra điều kiện đúngsai để dừng vòng lặp;
� Biểu thức 3: thông thường là một phép gán để thayđổi giá trị của biến điều kiện, biến điều kiện nàythường (phải có) trong Biểu thức 2;
� Trong mỗi biểu thức có thể có nhiều biểu thức con.Các biểu thức con được phân biệt bởi dấu phẩy.
� Ví dụ: Viết chương trình nhập vào một số nguyên n.Tính tổng của các số nguyên từ 1 đến n.
#include <stdio.h>
#include<conio.h>
int main ()
{
unsigned int n,i,tong;
CẤU TRÚC LẶP FOR
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
unsigned int n,i,tong;
printf("\n Nhap vao so nguyen duong n:");
scanf("%d",&n);
tong=0;
for (i=1; i<=n; i++)
tong+=i;
printf("\n Tong tu 1 den %d =%d ",n,tong);
getch();
return 0;
}
� Cú pháp:
while (Biểu thức điều kiện)
<Công việc>
� Lưu đồ:
CẤU TRÚC LẶP WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Lưu đồ:
CẤU TRÚC LẶP WHILE
Biểu thức ĐK
Sai
Đúng
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
Công việc
Đúng
� Chú ý:� Lệnh while gồm có biểu thức điều kiện vàthân vòng lặp (khối lệnh thực hiện công việc)
� Vòng lặp dừng lại khi nào điều kiện sai.
CẤU TRÚC LẶP WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Khối lệnh thực hiện công việc có thể rỗng, cóthể làm thay đổi điều kiện.
� Ví dụ: Viết chương trình nhập vào một số nguyên n.Tính tổng của các số nguyên từ 1 đến n.
#include <stdio.h>
#include<conio.h>
int main ()
{
unsigned int n,i,tong;
printf("\n Nhap vao so nguyen duong n:");
CẤU TRÚC LẶP WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
printf("\n Nhap vao so nguyen duong n:");
scanf("%d",&n);
tong=0; i=1;
while (i<=n)
{
tong+=i;
i++;
}
printf("\n Tong tu 1 den %d =%d ",n,tong);
getch();
return 0;
}
� Cú pháp:
do
<Công việc>
while (<Biểu thức điều kiện>)
CẤU TRÚC LẶP DO…WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
while (<Biểu thức điều kiện>)
� Lưu đồ:
CẤU TRÚC LẶP DO…WHILE
Công việc
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
Biểu thức ĐK
SaiĐúng
� Chú ý: � Lệnh do…while thực hiện công việc ít nhất 1lần;
� Vòng lặp dừng lại khi điều kiện sai;
CẤU TRÚC LẶP DO…WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Khối lệnh thực hiện công việc có thể rỗng, cóthể làm thay đổi điều kiện.
� Ví dụ: Viết chương trình nhập vào một số nguyên n.Tính tổng của các số nguyên từ 1 đến n.
#include <stdio.h> #include<conio.h> int main () { unsigned int n,i,tong;
printf("\n Nhap vao so nguyen duong n:"); scanf("%d",&n);
CẤU TRÚC LẶP DO…WHILE
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
scanf("%d",&n); tong=0; i=1; do {
tong+=i; i++;
} while (i<=n); printf("\n Tong tu 1 den %d =%d ",n,tong); getch(); return 0;
}
� So sánh các vòng lặp:� Vòng lặp for, while:
� Kiểm tra điều kiện trước thực hiện công việc saunên đoạn lệnh thực hiện công việc có thể khôngđược thực hiện .
CẤU TRÚC LẶP
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
được thực hiện .
� Vòng lặp kết thúc khi nào điều kiện sai.
� Vòng lặp do…while:� Thực hiện công việc trước kiểm tra điều kiện saunên đoạn lệnh thực hiện công việc được thực hiệnít nhất 1 lần.
� Vòng lặp kết thúc khi nào điều kiện sai.
� Lệnh break:� Cú pháp: break
� Dùng để thoát khỏi vòng lặp. � Khi gặp câu lệnh này chương trình sẽ thoát ra khỏivòng lặp và chỉ đến câu lệnh liền sau nó.
CÁC CÂU LỆNH ĐẶC BiỆT
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
vòng lặp và chỉ đến câu lệnh liền sau nó.
� Nếu nhiều vòng lặp --> break sẽ thoát ra khỏi vònglặp gần nhất.
� break còn được dùng trong cấu trúc lựa chọnswitch.
� Lệnh continue:� Cú pháp: continue
� Khi gặp lệnh này trong các vòng lặp, chương trình sẽ bỏ qua phần còn lại trong vòng lặp và tiếp tục thực hiện lần lặp tiếp theo.
CÁC CÂU LỆNH ĐẶC BiỆT
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
tiếp tục thực hiện lần lặp tiếp theo.� Đối với lệnh for, biểu thức 3 sẽ được tính trị vàquay lại bước 2.
� Đối với lệnh while, do while; biểu thức điều kiện sẽđược tính và xét xem có thể tiếp tục thực hiện<Công việc> nữa hay không? (dựa vào kết quảcủabiểu thức điều kiện).
Viết sơ đồ thuật toán và chương trình cácbài tập sau:
� Bài 1. Nhập vào 3 giá trị a, b,c. In ra giá lớn nhấtvà nhỏ nhất.
� Bài 2. Nhập vào 2 số nguyên và 1 phép toán.
BÀI TẬP
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Bài 2. Nhập vào 2 số nguyên và 1 phép toán.� Nếu phép toán là ‘+’, ‘-‘, ‘*’ thì in ra kết qua là tổng,hiệu, tích của 2 số.
� Nếu phép toán là ‘/’ thì kiểm tra xem số thứ 2 có kháckhông hay không? Nếu khác không thì in ra thươngcủa chúng, ngược lại thì in ra thông báo “khong chiacho 0”.
� Bài 3. Yêu cầu người thực hiện chươngtrình nhập vào một số nguyên dương làtháng trong năm và in ra số ngày củatháng đó.
Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
BÀI TẬP
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
� Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
� Tháng có 30 ngày: 4, 6, 9, 10
� Tháng có 28 hoặc 29 ngày : 2
� Nếu nhập vào số <1 hoặc >12 thì in ra câu thông báo “không có tháng này “.
� Bài 4. Viết chương trình cho phép biệnluận về nghiệm của phương trình bậc 2:a*x2+b*x+c = 0.
� Bài 5. Viết chương trình cho phép nhậpvào 2 số nguyên và in ra ước số chung
BÀI TẬP
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
vào 2 số nguyên và in ra ước số chunglớn nhất của 2 số đó.
Viết sơ đồ thuật toán và chương trình cácbài tập sau:
� Bài 1.Viết chương trình tính chu vi, diện tích của tamgiác với yêu cầu sau khi nhập 3 số a, b, c phải kiểm tralại xem a, b, c có tạo thành một tam giác không? Nếu có
BÀI TẬP VỀ NHÀ
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
thì tính chu vi và diện tích. Nếu không thì in ra câu "Không tạo thành tam giác".
� Bài 2. Có hai phương thức gửi tiền tiết kiệm: gửi khôngkỳ hạn lãi suất 2.4%/tháng, mỗi tháng tính lãi một lần,gửi có kỳ hạn 3 tháng lãi suất 7.5%/tháng, 3 tháng tínhlãi một lần.Viết chương trình tính tổng cộng số tiền cảvốn lẫn lời sau một thời gian gửi nhập từ bàn phím.
� Bài 3. Tìm số nguyên dương N nhỏ nhất sao cho 1+1/2+...+1/N > S, với S nhập từ bàn phím.
� Bài 4. Viết chương trình tính P=2*4*6*...*(2n), n nhập từbàn phím.
� Bài 5. Viết chương trình tính gần đúng căn bậc hai củamột số dương a theo phương pháp Newton :
BÀI TẬP VỀ NHÀ
Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT
một số dương a theo phương pháp Newton :
� Trước hết cho x0=(1 + a)/2
� Sau đó là công thức truy hồi:
xn+1=( xn + a/xn)/2
� Nếu xn+1 – xn < e thì căn bậc hai của a bằng xn+1 .Trong đó e là một hằngsố cho trước làm độ chínhxác.