Bài giảng Tin học cơ sở - Chương 2: Nhập xuất dữ liệu và các lệnh điều khiển (Phần 2)

2.1.5 Hàm xuất/nhập chuỗi - Hàm nhập chuỗi gets(): Nhập 1 chuỗi từ bàn phím kể cả khoảng trắng, hàm dừng đọc khi ấn phím enter. gets(Tên_biến_kiểu_chuỗi) ; Chú ý: Để tránh xảy ra trường hợp không nhập được chuỗi, cần thêm lệnh fflush(stdin); trước khi gọi hàm gets(). - 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 ”) ;

pdf48 trang | Chia sẻ: thanhle95 | Lượt xem: 524 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học cơ sở - Chương 2: Nhập xuất dữ liệu và các lệnh điều khiển (Phần 2), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật2 NỘI DUNG CHÍNH Nhập/xuất dữ liệu Hàm xuất có định dạng: printf Hàm nhập có định dạng: scanf Hàm nhập/xuất kí tự Hàm xuất/nhập chuỗi: puts và gets Các lệnh điều khiển Câu lệnh rẽ nhánh: if, switch Câu lệnh lặp: while, dowhile, for Câu lệnh nhảy: break, continue, goto Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật3 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 ở đầu chương trình.  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); printf(“ %d + %d = %d”, 3, 4, 3+4); Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật4 2.1.1 Hàm xuất có định dạng printf printf(“chuỗi định dạng”, danh sách đối số); - \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; - \\ : In ra dấu \ - \" : In ra dấu " - \' : In ra dấu ' - %%: In ra dấu % Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật5 Các kí tự điều khiển và kí tự đặc biệt Dạ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 ; - u, lu : Số nguyên không dấu ( unsigned int, unsigned long) ; - o : Số nguyên bát phân không dấu . Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật6 Đặ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ố. Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật7 Cờ hiệu Cờ hiệu Ý nghĩa 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. Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật8 Độ rộng Độ rộng Ý nghĩa 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 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật9 Độ chính xác . Độ chính xác Ý nghĩa .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. ---------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật10 Ví dụ : Kết quả khi chạy chương trình : Cú 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ật11 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. Cú pháp sử dụng: Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật12 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, biến sử dụng thuộc kiểu kí tự. Cú pháp sử dụng: Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật13 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 putch(Tên_biến); putchar(Tên_biến); Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật14 2.1.5 Hàm xuất/nhập chuỗi - Hàm nhập chuỗi gets(): Nhập 1 chuỗi từ bàn phím kể cả khoảng trắng, hàm dừng đọc khi ấn phím enter. gets(Tên_biến_kiểu_chuỗi) ; Chú ý: Để tránh xảy ra trường hợp không nhập được chuỗi, cần thêm lệnh fflush(stdin); trước khi gọi hàm gets(). - 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 ”) ; Kết quả khi chạy chương trình : ---------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật15 Ví dụ về xuất nhập chuỗi : Nội dung chính : Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật16 2.2 Các lệnh điều khiển Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật17 2.2.1 Lệnh điều kiện if if ( Điều_kiện ) { lệnh_1 ; } else { lệnh_2 ; } Dạng đầy đủ ifelse: Cách thức hoạt động: Bắt đầu Điều_kiện Lệnh_1 Lệnh_2 Kết thúc Sai Đúng if ( Điều_kiện ) { lệnh ; } Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật18 2.2.1 Lệnh điều kiện if Dạng thiếu if : Cách thức hoạt động : Bắt đầu Điều_kiện Lệnh Kết thúc Sai Đúng Kết quả chạy chương trình khi nhập vào số -3: ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật19 Ví dụ 1: Sử dụng if dạng đầy đủ Kết quả chạy chương trình khi nhập vào 3 số 2, 3, 4: ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật20 Ví dụ 2: Sử dụng if lồng nhau Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật21 2.2.2 Lệnh rẽ nhánh switch switch(biến/biểu_thức) { case giá_trị_1: lệnh_1; break; case giá_trị_2: lệnh_2; break; . default: lệnh_n ; } Cấu trúc sử dụng: Hoạt động: Nếu biến/biểu_thức có giá trị là 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. Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật22 2.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. Kết quả khi chạy chương trình : ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------ Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật23 Ví dụ về sử dụng cấu trúc switch Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật24 2.2.3 Vòng lặp while while(điều_kiện_lặp) { /*thân vòng lặp*/ Lệnh; } Cấu trúc sử dụng: Hoạt động: Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật25 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. Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật26 Ví dụ về sử dụng vòng lặp while Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật27 2.2.4 Vòng lặp dowhile do { /*thân vòng lặp*/ Lệnh; } while(điều_kiện_lặp); Cấu trúc sử dụng: Hoạt động: Bắt đầu Điều_kiện_lặp Lệnh Kết thúc Đúng Sai Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật28 Ví dụ về sử dụng vòng lặp dowhile Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật29 2.2.5 Vòng lặp for for(khởi_tạo;điều_kiện_lặp;cập_nhật) { /*thân vòng lặp*/ Lệnh; } Cấu trúc sử dụng: Hoạt động: Bắt đầu Điều_kiện_lặp Khởi tạo Kết thúc Đúng Sai Lệnh Cập_nhật Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật30 2.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). Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật31 Ví dụ 1: Sử dụng vòng lặp for Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật32 Ví dụ 2: Sử dụng vòng lặp for với hai biến điều khiển Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật33 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 ; Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật34 Ví dụ : Kiểm tra số nguyên n có phải số nguyên tố không ? Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật35 2.2.7 Lệnh continue Cách dùng:  Lệnh continue chỉ được sử dụng trong các cấu trúc lặp để kết thúc lần lặp hiện hành và chuyển sang lần lặp kế tiếp;  Đối với vòng lặp while và dowhile 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 ; Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật36 Ví dụ : In ra các số là bội của 3 trong đoạn [1,20] Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật37 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 ; Kết quả khi chạy chương trình: ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật38 Ví dụ : Tính tổng 10 số nguyên dương đầu tiên Bà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ật39 Bài tập luyện tập Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật40 Bà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 đầu chương trình. c) x – Nếu x>=0 (hàm tính căn bậc hai là sqrt(), cần khai báo thư viện #include ). d) || – Hàm tính trị tuyệt đối là abs(), cần khai báo #include. 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) ? Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật41 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ố. Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật42 Bà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ứ đó ? Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật43 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. Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật44 Bà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 ? Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật45 Bài tập luyện tập Bài 19: Viết chương trình nhập vào một số nguyên dương n. Xuất ra màn hình : a) Các ước là số lẻ của n ? b) Tổng các ước của số n ? 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 ? Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật46 Bà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 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); } Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật47 Bài tập luyện tập Bài 21: Viết chương trình cho thuật toán sau : Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật48 Bà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.