Bài giảng Lập trình C - Chương 4: Lệnh vào/ra dữ liệu va các cấu trúc điều khiển chương trình - Ngô Công Thắng

Chươ ng 4. Lệ nh vào/ra dữ liệ u va cac cấu true điêu khiển chươ ng trình

I. Lệnh vào/ra dữ liệu

II. Lệnh lựa chọn

III. Lệnh lặp

IV. Lệnh break và continue 

 

doc 43 trang phuongnguyen 9180
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình C - Chương 4: Lệnh vào/ra dữ liệu va các cấu trúc điều khiển chương trình - Ngô Công Thắng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình C - Chương 4: Lệnh vào/ra dữ liệu va các cấu trúc điều khiển chương trình - Ngô Công Thắng

Bài giảng Lập trình C - Chương 4: Lệnh vào/ra dữ liệu va các cấu trúc điều khiển chương trình - Ngô Công Thắng
Chươ ng 4. Lệ nh vào/ra dữ liệ u va cac cấu true điêu khiển chươ ng trình
Lệnh vào/ra dữ liệu
Lệnh lựa chọn
Lệnh lặp
Lệnh break và continue
Lệnh vào/ra dữ liệu
• •
Khai báo thư viện hàm vào/ra dữ liệu
• •
Lệnh lấy dữ liệu vào từ bàn phím
Lệnh đưa dữ liệu ra màn hình
tổ chức
• •
Kết hợp giữa lệnh printf và scanf để lấy dữ liệu vào từ bàn phím
I.1. Khai báo thư viện hàm vào/ra dữ liệu
Để có thể sử dụng các lệnh vào/ra dữ liệu của C khi lập trình trên DOS ta phải khai báo sử dụng thư viện hàm stdio:
#include
Để lấy dữ liệu từ bàn phím vào biến ta dùng lệnh scanf theo cú pháp sau:
scanf(dk, địa chỉ các ô nhớ);
Trong đó: 1) dk là hằng xâu ký tự điều khiển chỉ chứa các đặc tả chuyển dạng dữ liệu, mỗi đặc tả tương ứng với một địa chỉ ô nhớ;
2) địa chỉ các ô nhớ phân tách nhau bởi dấu chấm phẩy. Sử dụng toán tử & để lấy địa chỉ ô nhớ của biến, ví dụ &a
3) Đặc tả chuyển dạng dữ liệu có cấu trúc chung như sau: %[*][w]Ký tự chuyển dạng
Nếu có dấu * thì trường vào vẫn được dò đọc bình thường nhưng giá trị của nó không được lưu vào bộ nhớ. Đặc tả chứa dấu * sẽ không có ô nhớ tương ứng.
w là một số xác định chiều dài cực đại của trường vào.
Nếu không có tham số w hoặc nếu tham số này lớn hơn hoặc bằng độ dài trường vào thì toàn bộ trường vào sẽ được đọc, nội dung của nó được dịch và được đưa vào ô nhớ tương ứng.
Nếu w nhỏ hơn độ dài của trường vào tương ứng thì chỉ phần đầu của trường vào có độ dài bằng w được đọc, được dịch và được gán vào ô nhớ tương ứng. Phần còn lại sẽ được dùng cho đặc tả tiếp theo. Ví dụ: vdch4_01.cpp
4) Ký tự chuyển dạng xác định cách thức dò đọc dữ liệu trên dòng vào cũng như phương pháp chuyển dịch thông tin đọc được trước khi gán nó cho các địa chỉ tương ứng.
Các ký tự chuyển dạng dữ liệu dùng cho scanf
Ký tự chuyển dạ ng
Ý nghĩa
c
Đọc một ký tự, đối tương ứng là ô nhớ kiểu char
d
Đọc một giá trị int, đối tương ứng là ô nhớ kiểu int
Id
Đọc một giá trị long, đối tương ứng là ô nhớ kiểu long
o
Đọc một giá trị kiểu int hệ 8, đối tương ứng là ô nhớ kiểu int
lo
Đọc một giá trị kiểu long hệ 8, đối tương ứng là ô nhớ kiểu long
x
Đọc một giá trị kiểu int hệ 16, đối tương ứng là ô nhớ kiểu int
lx
Đọc một giá trị kiểu long hệ 16, đối tương ứng là ô nhớ kiểu long
f hoặc e
Đọc một giá trị kiểu float, đối tương ứng là ô nhớ kiểu float
lf hoặc le
Đọc một giá trị kiểu double, đối tương ứng là ô nhớ kiểu double
s
Đọc một xâu ký tự, đối tương ứng là mảng các ô nhớ kiểu char
Các ký tự chuyển dạng dữ liệu dùng cho scanf
Ký tự chuyể n dạ ng
Ý nghĩa
[dãy ký tự]
Đọc các ký tự cho tới khi gặp một ký tự không thuộc tập các ký tự trong hai dấu [ ]. Đối tương ứng là địa chỉ của mảng các ô nhớ kiểu char. Khoảng trắng cũng được xem là ký tự.
[Adãy ký t]
Đọc các ký tự cho tới khi gặp một ký tự thuộc tập các ký tự trong hai dấu [ ]. Đối tương ứng là địa chỉ của mảng các ô nhớ kiểu char. Khoảng trắng cũng được xem là ký tự.
Cú pháp:
printf(dk,các dữ liệu cần đưa ra);
Trong đó: 1) dk là hằng xâu ký tự điều khiển có chứa:
+ Các ký tự điều khiển, ví dụ như ‘\n’, ‘\t’, ‘\b’
+ Các đặc tả chuyển dạng và tạo khuôn dữ liệu, mỗi đặc tả dùng cho một dữ liệu tương ứng cần đưa ra màn hình.
+ Các ký tự thông thường.
2) Các dữ liệu cần đưa ra có thể là hằng, biến, biểu thức. Có bao nhiêu dữ liệu đưa ra thì phải có bấy nhiêu đặc tả chuyển dạng.
Cấu trúc chung:
%[-][fw][.pp]Ký tự chuyển dạng
Nếu không có dấu trừ - thì dữ liệu được căn phải trong số chỗ trên màn hình dành cho dữ liệu, còn thừa chỗ để trống. Với dữ liệu là số, nếu fw bắt đầu bằng số 0 thì các chỗ trống sẽ được điền đầy bằng các số 0.
Nếu có dấu trừ thì dữ liệu sẽ được căn trái, các chỗ thừa luôn để trống.
Ví dụ trên máy với dữ liệu cần đưa ra là -2503
Đặc tả chuyển dạng dữ liệu (tiếp)
o Cấu trúc chung:
%[-][fw][.pp]Ký tự chuyển dạng
fw là số nguyên xác định số chỗ trên màn hình dành cho dữ liệu đưa ra. Nếu không có fw hoặc nếu fw nhỏ hơn độ dài thực tế của dữ liệu thì số chỗ trên màn hình dành cho dữ liệu sẽ bằng độ dài của dữ liệu.
pp là số nguyên xác định số chữ số sau dấu chấm thập phân. pp chỉ dùng cho dữ liệu là số thực.
Các ký tự chuyển dạng dữ liệu dùng cho printf
Ký tự chuyể n dạ ng
Kiể u dữ liệ u
Các chuyể n dạ ng
c
char
Dữ liệu được coi là ký tự
d hoặc i
int
Dữ liệu được coi là số nguyên có dấu
Id hoặc li
long
Dữ liệu được coi là số nguyên có dấu
u
int
Dữ liệu được coi là số nguyên không dấu
o
int
Dữ liệu được coi là số hệ 8 không dấu
lo
long
Dữ liệu được coi là số hệ 8 không dấu
x
int
Dữ liệu được coi là số hệ 16 không dấu
lx
long
Dữ liệu được coi là số hệ 16 không dấu
f
float/double
Dữ liệu được coi là số thực dạng thập phân
e
float/double
Dữ liệu được coi là số thực dạng mũ
s
Xâu ký tự
Dữ liệu được coi là xâu ký tự
I.4. Kết hợp giữa lệnh printf và scanf để tổ chức
lấy dữ liệu vào từ bàn phím
o Trước mỗi lệnh nhập dữ liệu scanf ta nên dùng lệnh printf để đưa ra một lời nhắc nhập vào dữ liệu gì.
printf(“Loi nhac: ”); scanf( );
Một chương trình C đơn giản
Ví dụ 4.1:
Chương trình này lấy vào bán kính của một hình tròn, sau đó tính và đưa ra màn diện tích và chu vi của hình tròn.
Lệnh lựa chọn
Lệnh kiểm tra điều kiện if
Lệnh thử và rẽ nhánh switch
Lệnh kiểm tra điều kiện if
Lệnh kiểm tra điều kiện là để bảo máy kiểm tra một điều kiện, nếu đúng thì làm công việc này, nếu sai thì làm công việc khác. Biểu thức điều kiện là một biểu thức logic có giá trị đúng (khác 0) hoặc sai (bằng 0).
Lệnh này có 2 dạng:
if (điều kiện) Câu lệnh;
if (điều kiện) Câu_lệnh_1; else Câu_lệnh_2;
trong đó Câu_lệnh có thể là một câu lệnh đon lẻ hoặc một khối lệnh. Lưu ý là Điều kiện phải đặt trong ngoặc và sau Câu_lệnh_1 vẫn phải có dấu chấm phẩy.
Lệnh kiểm tra điều kiện if (tiếp)
Lưu đồ thực hiện lệnh dạng (1) và (2) như sau:
Lệnh tiếp theo	Lệnh tiếp theo
Lệnh kiểm tra điều kiện if (tiếp)
Ví dụ 4.1:
Viết chương trình nhập vào một số thực, kiểm tra nếu số đó dương thì đưa ra màn hình căn bậc 2 của số đó, nếu âm thì đưa ra thông báo “Số âm không có căn bậc 2”.
//Khai bao su dung thu vien chuong trinh #include
#include
void main()
{
float a; printf(“Nhap vao mot so: ”); cin>>a;
if (a>=0) printf("Can bac 2 bang: %6.2f”,sqrt(a)); else printf("So am khong co can bac 2”);
}
Khi cần kiểm tra giá trị của một biểu thức xem có bằng một giá trị nào trong nhiều giá trị không ta dùng lệnh switch.
Cú pháp: có 2 dạng
case hằng2J, ~	Để thoát khỏi switch
Các câu lệnh;
Các lệnh ứng với hằng 2
break;
case hằngN:
Các câu lệnh; L	Các lệnh ứng với hằng N
break;
' *	Không có chấm phẩy
(2)
Switch (Biểu thức) .	Không có dấu chấm phẩy
{
case hằngl:
Các câu lệnh;
break., '	k"	Các lệnh ứng với hăng 1
case hằng2:^	Để thoát khỏi switch
Các ,	ệ ; ^	Các lệnh ứng với hăng 2
break;
case hằngN:
Các câu lệnh; L	Các lệnh ứng với hăng N
break;	J	■
default:	'
Các câu lệnh; L	Các lệnh ứng với default
break;	J	■
'	Không có dấu chấm phẩy
Biểu thức sau từ khoá switch phải đặt trong ngoặc đon.
Biểu thức và các hằng phải cùng kiểu và phải là kiểu số nguyên hoặc ký tự.
Các hằng có thể là một giá trị hằng hoặc biểu thức hằng (các hằng kết hợp với nhau). Sau các hằng phải có dấu hai chấm.
Trước mỗi hằng phải có từ khoá case, tức là không thể có nhiều hằng chung một từ khoá case.
Nếu muốn nhiều hằng cùng chung một câu lệnh thì các hằng này để gần nhau và chỉ viết các lệnh cùng câu lệnh break ở hằng dưới cùng.
Lưu đồ thực hiện lệnh switch như sau:
Lệnh tiếp theo
Ví dụ 4.2:
Viết chương trình nhập vào tháng và năm, cho biết tháng trong năm đó có bao nhiêu ngày?
(Chương trình trang sau)
//Khai bao su dung thu vien chuong trinh #include
void main()
{
int t,n;
printf("Nhap vao thang: “);cin>>t; cout>n;
switch (t)
1:
3:
5:
7:
8:
10:
12:
cout<<"Thang
break;
case case case case
4:
6:
9:
11:
nay co 31 ngay";
cout<<"Thang
break;
case 2:
if(n%4==0 &&
nay co 30 ngay";
n%100 != 0) cout<<"Thang nay co 29 ngay";
else cout<<"Thang nay co 28 ngay"; break;
case case case case case case case
Lệnh lặp
Lệnh lặp với số lần lặp xác định for
Lệnh lặp với lần lặp không xác định
Cú pháp:
for (Biểu thức khởi tạo;Biểu thức kiểm tra; Biểu thức tăng/giảm) Câu lệnh hoặc Khối lệnh
■ Biểu thức khởi tạo dùng để khởi tạo giá trị ban đầu cho biến điều khiển vòng lặp và chỉ được thực hiện duy nhất một lần khi bắt đầu vào vòng lặp for.
■ Biểu thức kiểm tra dùng để kiểm tra giá trị của biến điều khiển xem còn tiếp tục lặp hay kết thúc. Biểu thức kiểm tra thường là biểu thức logic có giá trị đúng hoặc sai, khi có giá trị đúng thì vẫn lặp, khi có giá trị sai thì kết thúc.
■ Biểu thức tăng/giảm dùng để thay đổi biến điều khiển theo chiều tăng hoặc giảm.
Lưu đồ thực hiện lệnh for như bên:
Ba biểu thức trong lệnh for có thể không có nhưng hai dấu chấm phẩy không thể thiếu. Khi không viết biểu thức kiểm tra thì mặc định biểu thức kiểm tra có giá trị true, điều này làm cho vòng lặp lặp mãi.
o Ví dụ:	1X1 ~	, Ifi,
■	Không có dấu
for (i=1;i<=10;i++)«—'	chấm phẩy
printf(“%d\n”,i); // / for (i=10;i<=20;i+=2) '	/
{	/
printf(“%d”,i); / printf(“\n”); / p	/
Ví dụ 4.3: vdc43.c
Viết chương trình tính gần đúng số n theo công thức sau (với n số hạng đầu tiên):
1 ' '	^(- 1)n
— =1 - - + - - — +... + -——
4 r 0 V 2n +1
BTVN: 1) Tính S = 1 + 2 + 3 + ... + N (tính theo phương pháp cộng dồn)
2) Tính n!
III.2. Lệnh lặp với số lần lặp không xác định ^Lệnh lặp kiểm tra điều kiện trước while
while (Biểu thức kiểm tra)	Không có dấu
	 ,	chấm phẩy Câu lệnh;	H y
Lưu đồ thực hiện lệnh while
Lệnh tiếp
theo
Lệnh lặp kiểm tra điều kiện sau do-while do"	Không có dấu
Câu lệnh;	chấm phẩy
while (Biểu thức kiểm tra);
Các lệnh của
vòng lặp
Bài giảng Ngôn ngữ C -
Lệnh tiếp
_ theo	__
Chương 4 - GV. Ngô Công Thắng
34
III.2. Lệnh lặp với số lần lặp không xác định (tiếp) oLưu đồ thực hiện lệnh do ... while
• • •
-Biểu thức
Đúng	kiểm tra
Sai
Ví dụ: vdc44.c
Viết chương trình tính ex theo công thức:
ex
. , x x2
=1 + - + —-
1! 2!
, xn ,
+ —+...
n!
Với độ chính xác 0.00001, tức là ta cần chọn n sao
cho
n!
< 0.00001
BTVN: Làm lại bài tính gần đúng số PI với độ chính xác 10-4.
Lệnh break được dùng để thoát khỏi lệnh for, while, do-while và switch. Nếu các lệnh này lồng nhau thì lệnh break thoát khỏi lệnh bên trong nhất chứa nó.
o Với lệnh break ta có thể thoát khỏi vòng lặp từ một điểm bất kỳ bên trong vòng lặp mà không dùng đến điều kiện kết thúc vòng lặp.
Ví dụ: Viết chương trình nhập vào một số nguyên dương, cho biết số này có phải là số nguyên tố không? Qp
o Lệnh continue chỉ dùng với các lệnh lặp for, while và do-while.
o Lệnh continue không làm thoát khỏi lệnh lặp mà làm cho lệnh lặp bỏ qua các lệnh sau lệnh continue để thực hiện vòng lặp tiếp theo.
o Tác động của lệnh continue đối với lệnh for.
Lệnh 1;
Lệnh 2; continue; *
Lệnh N;
Tác động của lệnh continue đối với lệnh do-while.
Đúng
Biểu thức
kiểm tra
Sai
Lệnh tiếp

File đính kèm:

  • docbai_giang_lap_trinh_c_chuong_4_lenh_vaora_du_lieu_va_cac_cau.doc
  • pdfngocongthangchuong04_1435_488641.pdf