1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Lập trình C/C++ - CĐ Giao thông Vận tải TP.HCM

98 73 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 98
Dung lượng 1,31 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Lập trình C/C++ giúp người học tìm hiểu thế giới của ngôn ngữ C/C++ từ những khái niệm ban đầu cơ bản nhất. Giáo trình gồm có 12 chương với những nội dung cụ thể của từng chương như sau: Chương 1: ngôn ngữ lập trình & phương pháp lập trình; chương 2: làm quen lập trình c/c++ qua các ví dụ đơn giản; chương 3: các thành phần trong ngôn ngữ c/c++; chương 4: biểu thức; chương 5: nhập - xuất dữ liệu; chương 6: cấu trúc điều khiển; chương 7: vòng lặp; chương 8: hàm; chương 9: mảng và con trỏ; chương 10: chuỗi; chương 11: kiểu dữ liệu cấu trúc; chương 12: tập tin – file.

Trang 1

ỦY BAN NHÂN THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG CAO ĐẲNG GIAO THÔNG VẬN TẢI

Trang 3

Kỹ thuật điều khiển và tự động hóa là ngành nghiên cứu, ứng dụng các kỹ thuật

cơ khí hiện đại, kỹ thuật điều khiển, kỹ thuật máy tính vào việc vận hành, điều khiển quá trình sản xuất nhằm thực hiện một công việc mà không cần đến sự can thiệp trực tiếp của con người

Vậy để thực hiện những công việc này thì bắt buộc chúng ta phải lập trình tạo ra những chương trình vận hành mà C/C++

là ngôn ngữ lập trình vạn năng có thể giúp chúng ta giải quyết các vần đề này

Sử dụng thành thạo ngôn ngữ C/C++ còn giúp sinh viên học tốt các môn học Lập trình PLC và lập trình vi xử lý

Giáo trình này chúng ta đi tìm hiểu thế giới của ngôn ngữ C/C++ từ những khái niệm ban đầu cơ bản nhất

Trang 5

.MỤC LỤC

Chương 1: NGÔN NGỮ LẬP TRÌNH & PHƯƠNG PHÁP LẬP TRÌNH 1

1.1 Ngôn ngữ lập trình (Programming Language) 1

1.2 Các bước lập trình 1

1.3 Kỹ thuật lập trình 1

I-P-O Cycle (Input-Process-Output Cycle) (Quy trình nhập-xử lý-xuất) 1

Sử dụng lưu đồ (Flowchart) 3

1.4 Bài tập 6

Chương 2: LÀM QUEN LẬP TRÌNH C/C++ QUA CÁC VÍ DỤ ĐƠN GIẢN 7

2.1 Khởi động Dev C++ 7

2.2 Các ví dụ đơn giản 7

Ví dụ 1 7

Ví dụ 2 9

Ví dụ 3 9

Ví dụ 4 10

Ví dụ 5 10

Chương 3: CÁC THÀNH PHẦN TRONG NGÔN NGỮ C/C++ 11

3.1 Từ khóa 11

3.2 Tên 11

3.3 Kiểu dữ liệu 12

3.4 Ghi chú 12

3.5 Khai báo biến 12

Tên biến 12

Khai báo biến 13

Vừa khai báo vừa khởi gán 13

Vị trí đặt các khai báo biến 13

Chương 4: BIỂU THỨC 14

4.1 Biểu thức 14

4.2 Các phép toán số học 14

4.3 Các phép toán quan hệ và logic 15

4.4 Phép toán tăng giảm 15

4.5 Thứ tự ưu tiên các phép toán 16

4.6 Chuyển đổi kiểu 17

4.7 Các hàm toán học thường dùng 17

abs 17

rand 17

pow 18

sqrt 18

atoi 18

Chương 5: NHẬP - XUẤT DỮ LIỆU 19

5.1 Các hàm vào ra chuẩn - getchar() và putchar() 19

Hàm getchar () 19

Hàm putchar() 19

5.2 Đưa kết quả ra màn hình - Hàm printf 20

5.3 Vào số liệu từ bàn phím - Hàm scanf 21

5.4 Đưa kết quả ra màn hình - Hàm cout 21

5.5 Vào số liệu từ bàn phím - Hàm cin 23

Trang 6

5.6 Bài tập 23

Chương 6: CẤU TRÚC ĐIỀU KHIỂN 25

6.1 Cấu trúc có điều kiện: 25

Lệnh if-else: 25

Lệnh else-if: 28

6.2 Lệnh nhảy không điều kiện - toán tử goto: 29

6.3 Lệnh break 31

6.4 Cấu trúc rẽ nhánh - toán tử switch: 31

6.5 Bài tập 33

Sử dụng lệnh if 33

Sử dụng lệnh switch 34

Bài tập làm thêm 35

Chương 7: VÒNG LẶP 36

7.1 Lệnh continue 36

7.2 Vòng lặp for 36

7.3 Vòng lặp while 39

7.4 Vòng lặp do…while 40

7.5 Vòng lặp lồng nhau 42

7.6 So sánh sự khác nhau của các vòng lặp 43

7.7 Bài tập 43

Chương 8: HÀM 46

8.1 Cơ sở 46

8.2 Hàm không cho các giá trị trả về: 48

8.3 Các ví dụ về hàm 49

Ví dụ 1 49

Ví dụ 2 49

Ví dụ 3 50

8.4 Bài tập 50

Chương 9: MẢNG VÀ CON TRỎ 52

9.1 Mảng 52

Mảng một chiều 52

Mảng nhiều chiều 54

9.2 Con trỏ 57

Khái báo biến con trỏ 57

Phép toán số học trên con trỏ 59

Con trỏ và mảng một chiều 60

9.3 Bài tập 60

Chương 10: CHUỖI 62

10.1 Cách khai báo chuỗi 62

10.2 Hàm nhập, xuất chuỗi 63

10.3 Bộ đệm và hiện tượng trôi lệnh 64

Bộ đệm (Buffer) 64

Hiện tượng trôi lệnh 64

10.4 Các phương thức, phép toán tiện ích của kiểu string 65

Các phép toán và phương thức cơ bản 65

Lấy chiều dài chuỗi 66

Truy cập một phần tử bất kỳ trong chuỗi 67

Chèn chuỗi 67

Trang 7

Xoá chuỗi 68

Lấy chuỗi con 68

Tìm kiếm chuỗi con 69

Thay thế một đoạn con trong chuỗi ban đầu 69

Đổi chữ hoa thành thường với tolower(char ch)và đổi chữ thường thành chữ hoa với toupper(char ch) 70

10.5 Bài tập 70

Chương 11: KIỂU DỮ LIỆU CẤU TRÚC 72

11.1 Kiểu cấu trúc (Structure) 72

Khai báo kiểu structure 72

Cách khai báo biến có kiểu structure 72

Tham chiếu các phần tử trong structure 72

Structure lồng nhau 74

11.2 Danh sách liên kết 75

Khái niệm danh sách liên kết đơn 75

Khai báo danh sách liên kết đơn 76

Thêm 1 phần tử vào danh sách liên kết đơn 76

Khởi tạo danh sách liên kết đơn 77

Chèn phần tử vào danh sách liên kết đơn 78

Xóa bỏ phần tử trong danh sách 78

11.3 Bài tập 79

Mảng cấu trúc 79

Danh sách liên kết 79

Chương 12: TẬP TIN – FILE 81

12.1 Một số khái niệm về tập tin 81

12.2 Các thao tác trên tập tin 82

Khai báo biến tập tin 82

Mở và đóng tập tin 82

12.3 Truy cập tập tin văn bản 83

12.4 Truy cập tập tin nhị phân 87

12.5 Bài tập 88

Tài Liệu Tham Khảo 90

Trang 9

Ngôn ngữ lập trình & Phương pháp lập trình

Chương 1: NGÔN NGỮ LẬP TRÌNH & PHƯƠNG PHÁP LẬP TRÌNH 1.1 Ngôn ngữ lập trình (Programming Language)

Ngôn ngữ lập trình là hệ thống các ký hiệu để miêu tả những tính toán qua máy tính trong một dạng mà cả con người và máy đều có thể hiểu được và phải tuân theo các qui ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng thành các

chương trình cho máy tính

Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi là chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi được trên máy tính

1.2 Các bước lập trình

Bước 1: Phân tích vấn đề và xác định các đặc điểm (xác định I-P-O)

Bước 2: Lập ra giải pháp (đưa ra thuật giải)

Bước 3: Cài đặt (viết chương trình)

Bước 4: Chạy thử chương trình (dịch chương trình)

Bước 5: Kiểm chứng và hoàn thiện chương trình (thử nghiệm bằng nhiều số liệu

và đánh giá)

1.3 Kỹ thuật lập trình

I-P-O Cycle (Input-Process-Output Cycle) (Quy trình nhập-xử lý-xuất)

Quy trình xử lý cơ bản của máy tính gồm I-P-O

Ví dụ 1: Xác định Input, Process, Output của việc làm 1 ly cà phê

khuấy đều, cho đá lạnh vào

Process Output Input

Trang 10

Ngôn ngữ lập trình & Phương pháp lập trình

Ví dụ 2: Xác định Input, Process, Output của chương trình tính tiền lương

công nhân tháng 07/2016 biết rằng lương = lương căn bản * ngày công+phụ cấp

Input : Lương căn bản, ngày công, phụ cấp

Process : Nhân lương căn bản với ngày công sau đó cộng với phụ cấp

Xác định Input, Process, Output của các chương trình sau:

1 Đổi từ tiền VND sang tiền USD

2 Tính điểm trung bình của học sinh gồm các môn Toán, Lý, Hóa

3 Giải phương trình bậc 2: ax2 + bx + c = 0

4 Đổi từ độ sang radian và đổi từ radian sang độ

(công thức / = a/180, với : radian, a: độ)

5 Kiểm tra 2 số a, b giống nhau hay khác nhau

6 Tính diện tích hình tròn

7 Tính chu vi hình chữ nhật

8 Tính tiền học phí phải đóng trong 1 học kỳ

Trang 11

Ngôn ngữ lập trình & Phương pháp lập trình

Quyết định (Decision), sử dụng điều kiện

Luồng xử lý (Flow lines)

Gọi CT con, hàm…

(Procedure, Function…) Bắt đầu, kết thúc (Begin, End)

Điểm ghép nối (Connector)

Trang 12

Ngôn ngữ lập trình & Phương pháp lập trình

Ví dụ 5: Chuẩn bị cà phê Ví dụ 6: Mô tả ví dụ 2 Ví dụ 7: Mô tả ví dụ 3

Ví dụ 8: Cộng 2 số Ví dụ 9: so sánh 2 số

Bắt đầu

Kết thúc

Cà phê, nước sôi

Hòa cà phê vào nước sôi

Trang 13

Ngôn ngữ lập trình & Phương pháp lập trình

Ví dụ 10: Kiểm tra tính hợp lệ của điểm Ví dụ 11: Xếp lon vào thùng

Ví dụ 12: Kiểm tra loại số Ví dụ 13: Kiểm tra tính hợp lệ của điểm

Thùng = 0 Lon

1 Lon

Thêm 1 Lon vào thùng

Bằng

Trang 14

Ngôn ngữ lập trình & Phương pháp lập trình

1.4 Bài tập

Vẽ lưu đồ cho các chương trình sau:

1 Đổi từ tiền VND sang tiền USD

2 Tính điểm trung bình của học sinh gồm các môn Toán, Lý, Hóa

3 Giải phương trình bậc 2: ax2 + bx + c = 0

4 Đổi từ độ sang radian và đổi từ radian sang độ

(công thức / = a/180, với : radian, a: độ)

5 Kiểm tra 2 số a, b giống nhau hay khác nhau

Trang 15

Làm quen lập trình C/C++ Qua các ví dụ đơn giản

Chương 2: LÀM QUEN LẬP TRÌNH C/C++ QUA CÁC VÍ DỤ ĐƠN GIẢN 2.1 Khởi động Dev C++

Click đúp chuột vào biểu tượng Dev C++

Hình 2-1 Giao diện trình biên dịch Dev C++

▪ Sau khi giao diện Dev C++ được mở click vào File -> New -> Source File để bắc đầu lập trình

• Nhấn F11 để biên dịch và chạy chương trình

Dòng thứ 1: bắt đầu bằng /* và kết thúc bằng */ Là dòng diễn giải (chú thích)

Khi dịch và chạy chương trình, dòng này không thực hiện Mục đích của việc ghi chú này giúp chương trình rõ ràng hơn Sau này đọc lại chương trình biết chương trình làm gì

Trang 16

Làm quen lập trình C/C++ Qua các ví dụ đơn giản

Dòng thứ 2: chứa phát biểu tiền xử lý #include <iostream> Vì trong

chương trình này ta sử dụng hàm thư viện của C++ là cout, do đó cần phải có

khai báo của hàm thư viện này để báo cho trình biên dịch C++ biết Nếu không khai báo chương trình sẽ báo lỗi

Dòng thứ 3: là câu lệnh using namespace std, Chúng ta có thể khai báo

hoặc không khai báo tùy thích Nhưng nếu không khai báo thì khi sử dụng các hàm trong iostream thì phải gọi std cho nó trước, ví dụ thay vì viết cout <<"Bai hoc C dau tien."; thì phải viết std:: cout <<"Chao Cac Ban";

Dòng thứ 4: main() là thành phần chính của mọi chương trình C/C++, Mọi

chương trình C/C++ đều bắt đầu thi hành từ hàm main Cặp dấu ngoặc () cho

biết đây là khối hàm (function)

Dòng thứ 5 và 7: cặp dấu ngoặc móc {} giới hạn thân của hàm Thân hàm bắt đầu bằng dấu {và kết thúc bằng dấu}

Dòng thứ 6: cout <<"Chao Cac Ban";, chỉ thị cho máy in ra chuỗi ký tự

nằm trong nháy kép "" Dòng này được gọi là một câu lệnh, kết thúc một câu lệnh trong C/C++ phải là dấu chấm phẩy (;)

Chú ý:

✓ Các từ include, iostream, using, namespace, std, main, cout phải viết bằng chữ thường

✓ Chuỗi trong nháy kép cần in ra “có thể viết chữ HOA, thường tùy, ý”

✓ Kết thúc câu lệnh phải có dấu chấm phẩy

✓ Kết thúc tên hàm không có dấu chấm phẩy hoặc bất cứ dấu gì

✓ Ghi chú phải đặt trong cặp /* … */

✓ Thân hàm phải được bao bởi cặp { }

✓ Các câu lệnh trong thân hàm phải viết thụt vào

Trang 17

Làm quen lập trình C/C++ Qua các ví dụ đơn giản

Dòng thứ 6: int i; là lệnh khai báo, mẫu tự i gọi là tên biến Biến là một vị trí

trong bộ nhớ dùng lưu trữ giá trị nào đó mà chương trình sẽ lấy để sử dụng Mỗi biến phải thuộc một kiểu dữ liệu Trong trường hợp này ta sử dụng biến i kiểu số nguyên (integer) viết tắt là int

Dòng thứ 8: cin>> i Sử dụng hàm cin để nhận từ người sử dụng một trị nào đó Dòng thứ 9: cout << "So ban vua nhap la: " << i; Hàm này có 2 “<<”, “<<” đầu tiên dùng đề in ra chuỗi So ban vua nhao la:, “<<” thứ hai là để in ra giá trị

Trang 18

Làm quen lập trình C/C++ Qua các ví dụ đơn giản

Dòng thứ 4: #define PI 3.14, dùng chỉ thị define để định nghĩa hằng số PI có

giá trị 3.14 Trước define phải có dấu # và cuối dòng không có dấu chấm phẩy

Trang 19

float for goto huge

if int interrupt

long near pascal register return short static

struct signed sizeof switch typedef union unsigned

void volatile while

Lưu ý: Các từ khóa phải viết bằng chữ thường

3.2 Tên

Tên thường được đặt cho hằng, biến, mảng, con trỏ, nhãn… Chiều dài tối

đa của tên là 32 ký tự

Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự chữ, số và dấu

gạch dưới Ký tự đầu của tên phải là chữ hoặc dấu gạch dưới Khi đặt tên

không được đặt trùng với các từ khóa

Ví dụ 1:

 Các tên đúng: tamgiac, a_1, So_ODD, Case

 Các tên sai:

5t_1 (ký tự đầu là số) so-odd (sử dụng dấu gạch ngang) int (đặt tên trùng với từ khóa) tam giac (có khoảng trắng)

f(x) (có dấu ngoặc tròn)

Lưu ý: Trong C/C++, tên phân biệt chữ hoa, chữ thường

Ví dụ 2: number khác Number

case khác Case (case là từ khóa, do đó đặt tên là Case vẫn đúng)

Trang 20

Miền giá trị (Range)

0 đến 65,535 – 32,768 đến 32,767 – 32,768 đến 32,767

0 đến 4,294,967,295 – 2,147,483,648 đến 2,147,483,647

3.4 * 10–38 đến 3.4 * 1038

1.7 * 10–308 đến 1.7 * 10308

3.4 * 10–4932 đến 1.1 * 104932

3.4 Ghi chú

Trong khi lập trình cần phải ghi chú để giải thích các biến, hằng, thao tác

xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa và để người khác đọc vào dễ hiểu Trong C/C++ có các ghi chú sau: // hoặc /* nội dung ghi chú */

• // dùng để ghi chú một hàng

• /* … */ có thể ghi chú một hàng hoặc nhiều hàng

3.5 Khai báo biến

Tên biến

Mỗi biến khi sử dụng trong chương trình điều phải được đặt tên theo quy định như cách đặt tên biến như mục 3.2

Trang 21

Các thành phần trong ngôn ngữ C/C++

Khai báo biến

Mọi biến đều phải được khai báo trước khi sử dụng

Cú pháp:

Kiểu dữ liệu Danh sách tên biến;

o Kiểu dữ liệu: 1 trong các kiểu ở mục 3.3

o Danh sách tên biến: gồm các tên biến có cùng kiểu dữ liệu, mỗi tên biến cách nhau dấu phẩy (,), cuối cùng là dấu chấm phẩy (;)

Ví du:

int i; // Khai báo i là kiểu nguyên

float x,y,z; // Khai báo x,y,z là kiểu thực

Vừa khai báo vừa khởi gán

Có thể kết hợp việc khai báo với toán tử gán để biến nhận ngay giá trị cùng lúc với khai báo

Ví dụ:  Khai báo trước, gán giá trị sau:

int x, y;

x = 1; y = 2;

 Vừa khai báo vừa gán giá trị:

int a = 1, b = 2, c = 5;

Vị trí đặt các khai báo biến

Khi lập trình, phải nắm rõ vị trí của biến Nếu khai báo và sử dụng không đúng, không rõ ràng sẽ dẫn đến sai sót khó kiểm soát được, vì vậy cần phải xác định đúng vị trí, phạm vi sử dụng biến trước khi sử dụng biến

Khai báo biến ngoài (biến toàn cục): Vị trí biến đặt bên ngoài tất cả các hàm, cấu trúc Các biến này có ảnh hưởng đến toàn bộ chương trình Chu trình sống của nó là bắt đầu chạy chương trình đến lúc kết thúc chương trình

Khai báo biến trong (biến cục bộ): Vị trí biến đặt bên trong hàm, cấu trúc… Chỉ ảnh hưởng nội bộ bên trong hàm, cấu trúc đó… Chu trình sống của

nó bắt đầu từ lúc hàm, cấu trúc được gọi thực hiện đến lúc thực hiện xong

Trang 22

Biểu thức

Chương 4: BIỂU THỨC 4.1 Biểu thức

Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng để diễn đạt một công thức toán học nào đó Mỗi biểu thức sẽ có một giá trị Như vậy hằng, biến, phần tử mảng và hàm cũng được xem là biểu thức

Trong C/C++, ta có hai khái niệm về biểu thức: Biểu thức gán và Biểu thức điều kiện

Biểu thức được phân loại theo kiểu giá trị: nguyên và thực Trong các mệnh đề logic, biểu thức được phân thành đúng (giá trị khác 0) và sai (giá trị bằng 0)

Biểu thức thường được dùng trong:

▪ Vế phải của câu lệnh gán

(Chia số nguyên sẽ chặt phần thập phân)

(Cho phần dư của phép chia x cho y)

Ví dụ: 14/3=4

11%7=4

Trang 23

Biểu thức

4.3 Các phép toán quan hệ và logic

Phép toán quan hệ và logic cho giá trị đúng (1) hoặc giá trị sai (0)

i<n-1 được hiểu là i < (n-1)

4.4 Phép toán tăng giảm

C/C++ đưa ra hai phép toán một ngôi để tăng và giảm các biến (nguyên và thực) Toán tử tăng là ++ sẽ cộng 1 vào toán hạng của nó, toán tử giảm thì sẽ trừ toán hạng đi 1

Ví dụ: n=7

++n Cho ta n=8 ; n Cho ta n=6

Ta có thể viết phép toán ++ và trước hoặc sau toán hạng như sau: ++n, n++,

n, n

Trang 24

Biểu thức

Sự khác nhau của ++n và n++: trong phép n++ thì tăng sau khi giá trị của nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng Sự khác nhau giữa n và n cũng như vậy

Ví dụ: n=6

4.5 Thứ tự ưu tiên các phép toán

Các phép toán có độ ưu tiên khác nhau, điều này có ý nghĩa trong cùng một biểu thức sẽ có một số phép toán này được thực hiện trước một số phép toán khác

Thứ tự ưu tiên của các phép toán được trình bày trong bảng sau:

2 ! ~ & * - ++ (type ) sizeof Phải qua trái

14 = += -= *= /= %= <<= >>= &= ^=

|=

Phải qua trái

Trang 25

Biểu thức

4.6 Chuyển đổi kiểu

Trong một biểu thức các toán hạng có thể có các kiểu dữ liệu khác nhau Vì vậy để tính toán được chính xác cần phải chuyển đổi kiểu cho phù hợp

Có hai cách chuyển đổi kiểu dữ liệu:

• Chuyển kiểu tự động: Khi có hai toán hạn trong một phép toán khác kiểu dữ liệu thì toán hạn có độ ưu tiên thấp hơn sẽ tự động chuyển thành kiểu cao hơn trước khi thực hiện phép toán

Ví dụ int i ; thì sau lệnh gán i=3.23 thì kết quả là i = 3

• Chuyển kiểu bắt buộc: Thực hiện theo cú pháp sau

Phải khai báo tiền xử lý #include<cstdlib>

Cho giá trị tuyệt đối của số x

Ví dụ: int num = - 123;

num = abs(num); //kết quả num = 123

rand

rand();

Phải khai báo tiền xử lý #include<cstdlib>

Cho 1 giá trị ngẫu nhiên từ 0 đến 32767

Ví dụ: int num;

srand(time(NULL)); //dùng hàm này để khởi đầu bộ số ngẫu nhiên

Trang 26

Biểu thức

Phải khai báo tiền xử lý #include <ctime>

num = rand(); //kết quả num = 1 con số trong khoảng 0 32767

Tạo ngẫu nhiên 1 số trong khoảng (a,b)

x=rand()%(b-a+1)+a

pow

double pow(double x, double y);

Phải khai báo tiền xử lý #include<math.h>

int atoi(const char *s);

Phải khai báo tiền xử lý #include<cstdlib>

Chuyển đổi 1 chuỗi sang giá trị int

Ví dụ: int i;

char *str = "12345.67";

i = atoi(str);

Kết quả i = 12345

Trang 27

hình Hàm sẽ trả về ký tự nhận được và lưu vào biến

Ký tự sẽ được hiển thị với màu trắng

Trang 28

Nhập – Xuất dữ liệ

5.2 Đưa kết quả ra màn hình - Hàm printf

printf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]);

- Phải khai báo tiền xử lý #include<stdio.h>

- printf: tên hàm, phải viết bằng chữ thường

- đối mục 1,…: là các mục dữ kiện cần in ra màn hình Các đối mục này có thể là biến, hằng hoặc biểu thức phải được định trị trước khi in ra

- chuỗi định dạng: được đặt trong cặp nháy kép (" "), gồm 3 loại:

✓ Đối với chuỗi kí tự ghi như thế nào in ra giống như vậy

✓ Đối với những kí tự chuyển đổi dạng thức cho phép kết xuất giá trị của các đối mục ra màn hình tạm gọi là mã định dạng Sau đây là các dấu

%x : Số nguyên thập phân không dấu

%u : Số nguyên hex không dấu

%o : Số nguyên bát phân không dấu

l : Tiền tố dùng kèm với %d, %u, %x, %o để chỉ số nguyên dài (ví dụ %ld)

✓ Các ký tự điều khiển và ký tự đặc biệt

\n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên

\t : Canh cột tab ngang

\r : Nhảy về đầu hàng, không xuống hàng

\a : Tiếng kêu bip

\\ : In ra dấu \

\" : In ra dấu "

\' : In ra dấu '

%% : In ra dấu %

Trang 29

Nhập – Xuất dữ liệ

5.3 Vào số liệu từ bàn phím - Hàm scanf

 Cú pháp:

scanf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]);

- Phải khai báo tiền xử lý #include<stdio.h>

- scanf: tên hàm, phải viết bằng chữ thường

- khung định dạng: được đặt trong cặp nháy kép (" ") là hình ảnh dạng dữ liệu nhập vào

- đối mục 1,…: là danh sách các đối mục cách nhau bởi dấu phẩy, mỗi đối mục sẽ tiếp nhận giá trị nhập vào

- Ta phải dùng toán tử & để lấy địa chỉ của một biến Giã sử x là biến thì &x

là địa chỉ của biến x

5.4 Đưa kết quả ra màn hình - Hàm cout

Để xuất một biểu thức ra màn hình (Standard output device), ta thực hiện như sau:

<< expression_n;

Kết quả thu được là hoàn toàn tương tự cout cùng với toán tử << có thể

xuất được nhiều kiểu dữ liệu khác nhau mà không cần sự can thiệp của lập

trình viên C++ tự động nhận biết và xuất ra dưới định dạng phù hợp

Định dạng kết quả xuất:

Khi xuất dữ liệu ra màn hình, đôi khi ta cần định dạng theo một yêu cầu

nào đó Ngôn ngữ C++, cung cấp cho người lập trình một số cách để định dạng

dữ liệu xuất như sau:

Trang 30

Nhập – Xuất dữ liệ

• endl: Tương đương với kí tự xuống dòng '\n'

• setw(n): Bình thường các giá trị được in ra bởi lệnh cout << sẽ thẳng theo lề trái với độ rộng phụ thuộc vào độ rộng của giá trị đó Phương thức này qui định độ rộng dành để in ra các giá trị là n cột màn hình Nếu n lớn hơn độ dài thực của giá trị, giá trị sẽ in ra theo lề phải, để trống phần thừa (dấu cách) ở trước

• setfill(‘*’) Thiết đặt ký tự sẽ được cộng thêm vào dữ liệu xuất khi chiều dài nhỏ hơn chiều dài được thiết đặt

• << fixed <<setprecision(n) : ấn định số chữ số thập phân sẽ hiển thị

• dec: hiển thị giá trị số ở hệ thập phân

• hec: hiển thị giá trị số ở hệ thập lục phân

• oct : hiển thị giá trị số ở hệ bát phân

Ghi chú: Để sử dụng setw(n), setfill(‘*’), fixed và setprecision(n) thì phải khai báo tiền xử lý #include <iomanip>

cout << fixed <<setprecision(2) << a; // kết quả là 5678.68

cout <<endl<< setw(5)<<12; //kết qủa " 12"

cout <<endl<<setw(10)<<hex <<15; // kết quả f

cout <<endl<<oct <<10; // kết quả 12

cout <<endl<<dec <<0x10; // kết quả 16

cout<<"\n Xuat :” <<setw(3)<<setfill('0')<<b; // kết quả Xuat: 003 }

Trang 31

Nhập – Xuất dữ liệ

5.5 Vào số liệu từ bàn phím - Hàm cin

Bàn phím là thiết bị nhập chuẩn (standard input device) Để vào dữ liệu từ

bàn phím cho các biến ta có thể dùng cin vùng toán tử >> Cú pháp sẽ như sau:

 Cú pháp

cin >> variable;

Hoặc cho nhiều biến:

cin >> variable_1 >> variable_2 >> … >> variable_n;

Khi gặp những câu lệnh như thế này chương trình sẽ dừng lại để chờ chúng

ta nhập dữ liệu vào từ bàn phím Câu lệnh cin >> variable_1 >> variable_2

>> … >> variable_n; coi các ký tự trắng là ký tự phân cách các lần nhập dữ

liệu Các ký tự trắng (white space characters) bao gồm: dấu cách, dấu tab, và

ký tự xuống dòng (new line) Ví dụ a, b là hai biến kiểu int, thì câu lệnh:

cin >> a >> b;

Sẽ đợi người dùng nhập dữ liệu hai lần, cách nhau bởi ít nhất một ký tự

trắng Ví dụ ta nhập vào bàn phím như sau : 1989 2011 ↵ thì biến a sẽ nhận giá trị 1989, còn biến b sẽ nhận giá trị 2011 Chúng ta cũng không cần quan tâm đến kiểu của các biến, C++ tự động nhận biết điều này

Trang 32

Nhập – Xuất dữ liệ

6 Nhập a, b, c In ra màn hình dòng chữ phương trình có dạng ax^2 + bx + c = 0, trong đó các giá trị a, b, c chỉ in 2 số lẻ (ví dụ với a = 5.141, b =

Ví dụ: 02:11:05

Trang 33

Cấu trúc điều khiển

Chương 6: CẤU TRÚC ĐIỀU KHIỂN

Một chương trình bao gồm nhiều câu lệnh Thông thường các câu lệnh được thực hiện một cách lần lượt theo thứ tự mà chúng được viết ra Các cấu trúc điều khiển cho phép thay đổi trật tự nói trên, do đó máy có thể nhảy thực hiện một câu lệnh khác ở một ví trí trước hoặc sau câu lệnh hiện thời

Xét về mặt công dụng, có thể chia các cấu trúc điều khiển thành các nhóm chính:

Nhảy không có điều kiện

Toán tử if cho phép lựa chọn chạy theo một trong hai nhánh tuỳ thuộc vào

sự bằng không và khác không của biểu thức Nó có hai cách viết sau:

if ( biểu thức ) khối lệnh 1;

/* Dạng một */

if ( biểu thức ) khối lệnh 1;

else khối lệnh 2 ; /* Dạng hai */

Hoạt động của biểu thức dạng 1:

Máy tính giá trị của biểu thức Nếu biểu thức đúng (biểu thức có giá trị khác 0) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau lệnh if trong chương trình Nếu biểu thức sai (biểu thức có giá trị bằng 0) thì máy bỏ qua khối lệnh 1 mà thực hiện ngay các lệnh tiếp sau lệnh if trong chương trình

Trang 34

Cấu trúc điều khiển

Hoạt động của biểu thức dạng 2:

Máy tính giá trị của biểu thức Nếu biểu thức đúng (biểu thức có giá trị khác 0) máy sẽ thực hiện khối lệnh 1 và sau đó sẽ thực hiện các lệnh tiếp sau khối lệnh 2 trong chương trình Nếu biểu thức sai (biểu thức có giá trị bằng 0) thì máy bỏ qua khối lệnh 1 mà thực hiện khối lệnh 2 sau đó thực hiện tiếp các lệnh tiếp sau khối lệnh 2 trong chương trình

Ví dụ: Chương trình nhập vào hai số a và b, tìm max của hai số rồi in kết quả

lên màn hình Chương trình có thể viết bằng cả hai cách trên như sau:

Trang 35

Cấu trúc điều khiển

Sự lồng nhau của các toán tử if:

C/C++ cho phép sử dụng các toán tử if lồng nhau có nghĩa là trong các khối lệnh (1 và 2) ở trên có thể chứa các toán tử if - else khác Trong trường hợp này, nếu không sử dụng các dấu đóng mở ngoặc cho các khối thì sẽ có thể nhầm lẫn giữa các if-else

Chú ý là máy sẽ gắn toán tử else với toán tử if không có else gần nhất Chẳng hạn như đoạn chương trình ví dụ sau:

Trang 36

Cấu trúc điều khiển

Đoạn chương trình trên tương đương với:

Trang 37

Cấu trúc điều khiển

Nếu biểu thức thứ i (1,2, n-1) có giá trị khác 0, máy sẽ thực hiện khối lệnh i, rồi sau đó đi thực hiện lệnh nằm tiếp theo khối lệnh n trong chương trình

Nếu trong cả n-1 biểu thức không có biểu thức nào khác 0, thì máy sẽ thực hiện khối lệnh n rồi sau đó đi thực hiện lệnh nằm tiếp theo khối lệnh n trong chương trình

Ví dụ: Chương trình giải phương trình bậc hai

6.2 Lệnh nhảy không điều kiện - toán tử goto:

Nhãn có cùng dạng như tên biến và có dấu: đứng ở 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

Ví dụ: ts: s=s++;

thì ở đây ts là nhãn của câu lệnh gán s=s++

Toán tử goto có dạng:

Trang 38

Cấu trúc điều khiển

goto nhãn;

Khi gặp toán tử này máy sẽ nhảy tới câu lệnh có nhãn viết sau từ khoá goto

Khi dùng toán tử goto cần chú ý:

Câu lệnh goto và nhãn cần nằm trong một hàm, có nghĩa là toán tử goto chỉ cho phép nhảy từ vị trí này đến vị trí khác trong thân một hàm và không thể dùng để nhảy từ một hàm này sang một hàm khác

Không cho phép dùng toán tử goto để nhảy từ ngoài vào trong một khối lệnh Tuy nhiên việc nhảy từ trong một khối lệnh ra ngoài là hoàn toàn hợp lệ

Ví dụ như đoạn chương trình sau là sai

Trang 39

Cấu trúc điều khiển

6.3 Lệnh break

Thông thường lệnh break dùng để thoát khỏi vòng lặp không xác định điều kiện dừng hoặc muốn dừng vòng lặp theo điều kiện chỉ định Việc dùng lệnh break để thoát khỏi vòng lặp thường sử dụng phối hợp với lệnh if Lệnh break dùng trong for, while, do…while, switch Lệnh break thoát khỏi vòng lặp chứa

6.4 Cấu trúc rẽ nhánh - toán tử switch:

Là cấu trúc tạo nhiều nhánh đặc biệt Nó căn cứ vào giá trị một biểu thức nguyên để chọn một trong nhiều cách nhảy

Cấu trúc tổng quát của nó là:

switch ( biểu thức nguyên )

{

case n1

khối lệnh 1 case n2

khối lệnh 2

case nk khối lệnh k [ default

khối lệnh k+1 ] }

➢ Với ni là các số nguyên, hằng ký tự hoặc biểu thức hằng Các ni cần có giá trị khác nhau Đoạn chương trình nằm giữa các dấu { } gọi là thân của toán tử switch

➢ default là một thành phần không bắt buộc phải có trong thân của switch

➢ Sự hoạt động của toán tử switch phụ thuộc vào giá trị của biểu thức viết trong dấu ngoặc ( ) như sau:

➢ Khi giá trị của biểu thức này bằng ni, máy sẽ nhảy tới các câu lệnh có nhãn là case ni

Trang 40

Cấu trúc điều khiển

➢ Khi giá trị biểu thức khác tất cả các ni thì cách làm việc của máy lại phụ thuộc vào sự có mặt hay không của lệnh default như sau:

➢ Khi có default máy sẽ nhảy tới câu lệnh sau nhãn default

➢ Khi không có default máy sẽ nhảy ra khỏi cấu trúc switch

Chú ý:

Máy sẽ nhảy ra khỏi toán tử switch khi nó gặp câu lệnh break hoặc dấu ngoặc nhọn đóng cuối cùng của thân switch Ta cũng có thể dùng câu lệnh goto trong thân của toán tử switch để nhảy tới một câu lệnh bất kỳ bên ngoài switch

Khi toán tử switch nằm trong thân một hàm nào đó thì ta có thể sử dụng câu lệnh return trong thân của switch để ra khỏi hàm này (lệnh return sẽ đề cập sau)

Khi máy nhảy tới một câu lệnh nào đó thì sự hoạt động tiếp theo của nó sẽ phụ thuộc vào các câu lệnh đứng sau câu lệnh này Như vậy nếu máy nhảy tới câu lệnh có nhãn case ni thì nó có thể thực hiện tất cả các câu lệnh sau đó cho tới khi nào gặp câu lệnh break, goto hoặc return Nói cách khác, máy có thể đi từ nhóm lệnh thuộc case ni sang nhóm lệnh thuộc case thứ ni+1 Nếu mỗi nhóm lệnh được kết thúc bằng break thì toán tử switch sẽ thực hiện chỉ một trong các nhóm lệnh này

Ví dụ: Lập chương trình phân loại học sinh theo điểm sử dụng cấu trúc switch:

case 0:

case 1:

case 2:

Ngày đăng: 15/11/2021, 15:32

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w