Phan2_Chuong2_Cac cau truc lenh tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh...
Trang 1Chương II
NHẬP XUẤT DỮ LIỆU VÀ CÁC LỆNH ĐIỀU
KHIỂN
Trang 2NỘI DUNG CHÍNH
NỘI DUNG CHÍNH
Nhập/xuất dữ liệu
Câu lệnh rẽ nhánh: if, switch
Câu lệnh lặp: while, do…while, for
Câu lệnh nhảy: break, continue, goto
Trang 3
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
3
2.1 Nhập xuất dữ liệu
Thiết bị xuất (màn hình) Thiết bị nhập (bàn phím)
Ở chương này chúng ta sẽ chỉ nghiên cứu các lệnh nhập/xuất với các thiết bị tương ứng là bàn phím và màn hình Để sử dụng các lệnh xuất/nhập dữ liệu thì cần khai báo tiền xử lý #include <stdio.h> ở đầu chương trình
Trang 4 Cú pháp sử dụng :
- Chuỗi định dạng có thể bao gồm: kí tự văn bản, kí tự điều khiển và đặc tả định dạng.
VD: printf(“Hello World\n”);/*In ra mà hình Hello World sau đó đưa con trỏ xuống dòng
kế tiếp bằng kí tự điều khiển \n*/
- Danh sách đối số là tùy ý, có thể không có đối số nào cả Nếu có nhiều đối số thì chúng
phải được viết tách nhau bởi dấu phẩy
VD: printf(“ 3+4 = %d “, 3+4);
2.1.1 Hàm xuất có định dạng printf
printf (“chuỗi định dạng”, danh sách đối số);
Trang 5- \n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên;
- \t : Canh cột tab ngang;
- \b : Backspace xóa lùi một kí tự trước vị trí con trỏ;
- \r : Nhảy về đầu dòng, không xuống dòng;
- \a : Âm thanh báo;
Trang 6Dạng tổng quát của đặc tả định dạng:
Một số kí tự định kiểu:
- c : Kí tự đơn ;
- s : Chuỗi ;
- d, ld : Số nguyên thập phân có dấu: char(dạng số), int, long;
- f, lf, Lf: Số thực dạng dấu phẩy tĩnh:float,double,long double ;
- e, le,Le : Số thực có mũ: float,double,long double;
- X, x : Số nguyên hệ 16 không dấu ;
Đặc tả định dạng
%[cờ_hiệu][độ_rộng][.độ_chính_xác]kí_tự_định_kiểu
Mô tả cách thức hiển thị giá trị của các đối số trong phần “danh sách đối số” Khi in ra màn hình thì vị trí của đặc tả sẽ được thay thế bằng giá trị của các đối số
Trang 7Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
7
Cờ hiệu
Nếu không có Mặc định dữ liệu được canh lề phải
- Dữ liệu được canh lề trái
+ In dữ liệu với dấu tương ứng (+ hoặc -)
#
Phụ thuộc vào kí tự định kiểu, nếu:
• o : Chèn thêm 0 trước giá trị > 0
• X, x : Chèn thêm 0X hoặc 0x trước số này
• e, f : Luôn có dấu chấm thập phân kể cả khi không cần thiết
Trang 8Độ rộng
n Dành ra tối thiểu n vị trí, điền khoảng trắng vào vị trí còn trống
0n Dành ra tối thiểu n vị trí, điền số 0 vào vị trí còn trống
* Số vị trí tối thiểu sẽ được xác định dựa vào đối số tương ứng
Trang 9Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
9
Độ chính xác
.m - d, ld, u, lu, o, x, X: chỉ ra số chữ số tối thiểu cần in ra
- e, f: chỉ ra số chữ số cần in ra sau dấu chấm thập phân Độ chính xác mặc định là 6
- s: chỉ ra số kí tự tối đa có thể in ra được của một chuỗi
.* Độ chính xác dựa vào đối số tương ứng.
Trang 10
-Ví dụ :
Kết quả khi chạy chương trình :
Trang 11Cú pháp sử dụng:
Ví dụ: Nhập dữ liệu cho biến nguyên x và y như sau:
scanf(“%d%d”, &x, &y);
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
11
2.1.2 Hàm nhập có định dạng scanf
scanf ( “ chuỗi định dạng” , danh sách đối số);
Các đối số là địa chỉ của các biến dùng để lưu trữ dữ liệu khi nhập vào được viết sau
toán tử “&”, các đối số viết tách nhau bởi dấu phẩy;
Chú ý: Để tránh lỗi nhập dữ liệu không đúng khi nhập chuỗi thì trước khi dùng lệnh nhập, ta nên thêm vào
dòng lệnh “fflush( stdin ) ; ” để xóa toàn bộ dữ liệu trong bộ nhớ đệm.
Trang 12Cú pháp sử dụng:
2.1.3 Hàm nhập kí tự
Hàm getch (): Đọc ngay một kí tự nhập từ bàn phím Không hiển thị kí tự nhập trên màn hình;
Hàm getche (): Đọc ngay một kí tự nhập từ bàn phím Hiển thị kí tự khi nhập trên màn hình;
Hàm getchar () : Đọc một kí tự sau khi đã bấm enter Hiển thị kí tự nhập trên màn hình.
Tên_biến = getch() ; Tên_biến = getche() ; Tên_biến = getchar() ;
Lưu ý: Để sử dụng hàm getch() và hàm getche() cần phải khai báo tiền xử lý #include<conio.h>, biến sử dụng
thuộc kiểu kí tự.
Trang 13Cú pháp sử dụng:
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
13
2.1.4 Hàm xuất kí tự
Hàm putch () và hàm putchar () dùng để hiển thị một kí tự ra màn hình Riêng hàm putch () để sử dụng thì
cần khai báo #include<conio.h>
putch (Tên_biến);
putchar (Tên_biến);
Trang 14- Hàm xuất chuỗi puts () : hiển thị một chuỗi kí tự ra màn hình và sau đó đưa con trỏ lệnh xuống dòng
mới Mỗi lần nó chỉ có thể hiển thị một chuỗi duy nhất
puts(Tên_biến_kiểu_chuỗi) ;
Hoặc:
puts(“ Chuỗi ”) ;
Trang 15Kết quả khi chạy chương trình :
- 15 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
Ví dụ về xuất nhập chuỗi :
Trang 17Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
17
2.2.1 Lệnh điều kiện if
if ( Điều_kiện ) {
Trang 18if ( Điều_kiện ) {
lệnh ;
}
2.2.1 Lệnh điều kiện if
Trang 19Kết quả chạy chương trình khi nhập vào số -3:
-19 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
Ví dụ 1: Sử dụng if dạng đầy đủ
Trang 20Kết quả chạy chương trình khi nhập vào 3 số 2, 3, 4:
-Ví dụ 2: Sử dụng if lồng nhau
Trang 21Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
giá_trị_i thì các lệnh bắt đầu từ lệnh_i sẽ được thực hiện cho đến khi nào gặp lệnh
break hoặc dấu } thì thoát khỏi switch
Ngược lại thì lệnh_n sau từ khóa default sẽ
được thực hiện
Trang 222.2.2 Lệnh rẽ nhánh switch
Lưu ý :
Biến hoặc biểu thức trong cặp ngoặc ( ) của switch phải có giá trị là hằng nguyên hoặc kí tự;
Sau các từ khóa case có thể có nhiều lệnh mà không cần để trong cặp dấu { };
Lệnh default là tùy chọn, có thể có hoặc không có và nằm ở bất cứ vị trí nào trong switch ;
Nếu vắng lệnh default và các giá trị sau từ khóa case không trùng với giá trị của biến/biểu_thức chỉ ra
trong switch thì lệnh switch coi như không thực hiện.
Trang 23Kết quả khi chạy chương trình :
Trang 25Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
25
2.2.3 Vòng lặp while
Chú ý:
Lệnh while có thể lồng bên trong nó một lệnh while khác;
Vòng lặp sẽ lặp vô hạn nếu điều_kiện _lặp luôn có giá trị đúng;
Thân vòng lặp có thể không được thực hiện lần nào nếu điều_kiện_lặp nhận giá trị sai ngay từ đầu.
Trang 26Kết quả khi chạy chương trình:
-Ví dụ về sử dụng vòng lặp while
Trang 27Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
Trang 28Kết quả khi chạy chương trình:
-Ví dụ về sử dụng vòng lặp do…while
Trang 29Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
Trang 302.2.5 Vòng lặp for
Chú ý:
Thân vòng lặp có thể không được thực hiện lần nào nếu điều_kiện_lặp nhận giá trị sai ngay từ đầu;
Một câu lệnh for có thể lồng bên trong nó một lệnh for khác;
Ba thành phần trong lệnh for có thể vắng, nhưng vẫn phải có đủ hai dấu chấm phẩy ;
Các thành phần trong lệnh for có thể là các biểu thức ghép Mỗi biểu thức ghép phân cách nhau bởi toán
tử phẩy và được thực hiện từ trái sang phải (xem Ví dụ 2).
Trang 31Kết quả khi chạy chương trình:
Trang 32Kết quả khi chạy chương trình:
-Ví dụ 2: Sử dụng vòng lặp for với hai biến điều khiển
Trang 33Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
33
2.2.6 Lệnh nhảy break
Cách dùng:
Sử dụng trong một cấu trúc lặp để kết thúc sớm vòng lặp trước khi điều_kiện_lặp nhận giá trị sai ;
Sử dụng trong cấu trúc switch để kết thúc việc xử lí của mỗi case thỏa mãn và bỏ qua các case còn lại
trong switch;
Trong trường hợp lệnh break nằm trong các lệnh lặp lồng nhau thì nó chỉ có tác dụng với lệnh lặp trong
cùng chứa nó
break ;
Trang 34Kết quả khi chạy chương trình:
-Ví dụ : Kiểm tra số nguyên n có phải số nguyên tố không ?
Trang 35Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
Đối với vòng lặp while và do…while thì chương trình sẽ chuyển sang kiểm tra biểu thức điều_kiện_lặp;
Đối với lệnh for thì sẽ chuyển đến thực hiện biểu thức cập_nhật rồi mới kiểm tra điều_kiện_lặp.
continue ;
Trang 36Kết quả khi chạy chương trình:
-Ví dụ : In ra các số là bội của 3 trong đoạn [1,20]
Trang 37Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
37
2.2.8 Lệnh goto
Cách dùng:
Nhảy chương trình về thực hiện lệnh từ vị trí nhãn;
Trong đó nhãn có dạng như tên biến và có dấu “:” phía sau, nhãn có thể được gán cho bất kì câu lệnh nào
trong chương trình;
Lệnh goto và nhãn cần nằm chung trong một hàm;
Không cho phép dùng goto để nhày từ ngoài vào một khối lệnh tuy nhiên việc nhảy từ khối lệnh ra ngoài
là hợp lệ
goto nhãn ;
Trang 38Kết quả khi chạy chương trình:
-Ví dụ : Tính tổng 10 số nguyên dương đầu tiên
Trang 39Bài 1: Nhập vào ngày, tháng, năm và xuất ra màn hình dưới dạng "ngay/thang/nam" (chỉ lấy 2 số cuối của năm).
Bài 2: Viết chương trình nhập vào hai số nguyên x, y Xuất ra màn hình giá trị của các biểu thức sau:
a) x+2*y
b) x*x*x – Xuất kết quả kèm với dấu ‘+’ nếu là số dương.
c) x/y
d) x%y – Xuất kết quả với 10 kí tự, thêm các số 0 vào trước nếu kết quả có số kí tự bé hơn10.
e) x*x – Xuất kết quả dưới dạng số nguyên thập lục phân.
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
39Bài tập luyện tập
Trang 40Bài tập luyện tập
Bài 3: Viết chương trình nhập vào hai số thực x và y Xuất ra màn hình kết quả của các biểu thức sau:
a) x/y – Kết quả làm tròn đến 4 chữ số thập phân.
b) sinx – Để sử dụng hàm sin() cần khai báo #include<math.h> đầu chương trình.
c) – Nếu x>=0 (hàm tính căn bậc hai là sqrt(), cần khai báo thư viện #include<math.h> ).
d) – Hàm tính trị tuyệt đối là abs(), cần khai báo #include<math.h>.
Bài 4: Viết chương trình nhập vào một góc với số đo x có đơn vị là là độ Tính và xuất ra màn hình giá trị của biểu
thức cos(2x+1) ?
Trang 41
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
41
Bài tập luyện tập
Bài 5: Viết chương trình nhập vào họ và tên, giới tính và năm sinh của một người Xuất ra màn hình họ và tên, giới
tính và tuổi của người đó theo định dạng như ví dụ dưới:
Bài 6: Nhập vào số giây từ 0 đến 86399, đổi số giây nhập vào và xuất ra màn hình theo dạng "gio:phut:giay", mỗi
thành phần là một số nguyên có 2 chữ số
Trang 42Bài tập luyện tập
Bài 7: Viết chương trình nhập vào tọa độ cho ba điểm A, B, C nằm trong mặt phẳng với hệ trục tọa độ Đề-Các
vuông góc Oxy Hỏi ba điểm A, B, C đó có phải là ba đỉnh của một tam giác không ? Nếu phải, hãy giải tam giác ABC ( tính các cạnh, các góc, chu vi, diện tích, tam giác đó cân, vuông hay đều)
Bài 8: Nhập vào 3 số, in ra số lớn nhất.
Bài 9: Giải hệ phương trình bậc nhất:
Bài 10: Giải biện luận phương trình trùng phương: ax4+bx2+c=0.
Bài 11: Viết chương trình nhập vào thứ trong tuần Xuất ra màn hình thời khóa biểu của thứ đó ?
Trang 43
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
43
Bài tập luyện tập
Bài 12: Viết chương trình nhập vào tháng trong năm Xuất ra màn hình mùa tương ứng với tháng đó
Bài 13: Nhập vào tên của sinh viên A và điểm thi của A In ra màn hình xếp loại tổng kết của A trong đó: dưới 5
điểm ( không qua), 5 hoặc 6 ( trung bình), 7( khá), 8 hoặc 9( giỏi), 10 ( xuất sắc)
Bài 14: Tính chỉ số BMI và in ra kết qủa đánh giá
Hướng dẫn: BMI = cân nặng(kg)/(chiều cao(m))2
BMI < 18: Người gầy
BMI = 18 - 24,9: Người bình thường
BMI = 25 - 29,9: Người béo phì độ I
BMI = 30 - 34,9: Người béo phì độ II
BMI > 35: Người béo phì độ III
Trang 44Bài tập luyện tập
Bài 15: Nhập số nguyên có 4 chữ số In ra các số hàng nghìn, trăm, chục và đơn vị.
Bài 16: Tìm các số tự nhiên có 4 chữ số sao cho chia hết cho 3 nếu là số lẻ và chia hết cho 7 nếu là số chẵn.
Bài 17: Viết chương trình lặp lại công việc tính giai thừa của một số nguyên (nếu tồn tại) Để kết thúc việc lặp lại
đó và dừng chương trình thì người dùng ấn phím ‘t’
Bài 18: Viết chương trình xuất ra màn hình tất cả các số nguyên dương gồm 4 chữ số thỏa mãn điều kiện tổng
của chữ số hàng nghìn và chữ số hàng đơn vị luôn bằng tổng của chữ số hàng trăm và chữ số hàng chục ?
Trang 45Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
c) Tổng các số tự nhiên chẵn nhỏ hơn hoặc bằng n ?
d) Cho biết n có phải là số nguyên tố hay không ?
e) Số n có phải là số chính phương hay không ?
f) Số n có mấy chữ số ?
g) Tổng các chữ số của n ?
Trang 46Bài tập luyện tập
Bài 20: Hãy viết lại chương trình sau, sử dụng cấu trúc while :
#include<stdio.h>
main() {
int i, n, s=0;
printf("Nhap vao so nguyen : n = ");
scanf("%d",&n);
if(n>0) for(i=1; i<=n; i++) s+=2*n;
printf("s=%d", s);
}
Trang 47Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật
47Bài tập luyện tập
Bài 21: Viết chương trình cho thuật toán sau :
Trang 48Bài tập luyện tập
Bài 22: Hãy viết chương trình in ra màn hình n phần tử đầu tiên của dãy Fibonacci (dãy Fibonacci là dãy vô hạn
các số tự nhiên, bắt đầu từ số 0 và số 1, các số sau đó được tính bắng tổng các số liền kề trước nó Một số phần
tử đầu tiên của dãy Fibonacci : 0, 1, 1, 2, 3, 5, 8,…)
Bài 23: Xuất ra màn hình các số có 3 chữ số trong đó tổng ba chữ số của nó luôn chẵn.