0
Tải bản đầy đủ (.pdf) (125 trang)

Câu lê ̣nh goto

Một phần của tài liệu BÀI GIẢNG - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ C++ PDF (Trang 25 -26 )

Câu lê ̣nh goto cũng là mô ̣t câu lê ̣nh cơ bản của C ++ vì nó có trong C . Nói chung là chúng ta nên tránh dùng goto tuy vâ ̣y có mô ̣t số trƣờng hơ ̣p viê ̣c dùng goto cũng có thể chấp nhâ ̣n đƣơ ̣c nhƣ khi chú ng ta muốn thoát hoàn toàn ra khỏi tất cả các vòng lă ̣p lồng nhau tƣ̀ vòng lă ̣p trong cùng.

4.8Đê ̣ qui

Đê ̣ qui là mô ̣t kỹ thuâ ̣t thường được dùng để giải quyết các vấn đề có đô ̣ phức ta ̣p không xác đi ̣nh khi mà chúng ta thường k hông cần phải lo lăng về kích thước bô ̣ nhớ cần sử du ̣ng. Các bài toán đệ qui thường được giải quyết theo chiến lược chia để trị.

5. Các kiểu dữ liệu cơ bản của C++

Các kiểu dữ liệu cơ bản của C ++ hầu hết đều kế thừa của C ngoa ̣i trừ kiểu bool với hai hằng số true và false.

Đặc tả của ngôn ngữ C chuẩn cho các kiểu dữ liệu built – in không chỉ rõ cu ̣ thể các kiểu dữ liệu này cần bao nhiêu bit . Thay vào đó nó qui đi ̣nh các giá tri ̣ max và min các bit mà mỗi kiểu dữ liệu có thể chứa . Khi đó tuỳ thuô ̣c vào hê ̣ thống nền mà chúng ta sử du ̣ng các biến của cùng mô ̣t chương trình sẽ có kích thước khác nhau khi biên dịch trên các hệ thống khác nhau . Ví dụ với các chư ơng trình cha ̣y trên DOS các biến kiểu int sẽ có kích thước là 2 byte tức 16 bit nhưng trên Linux kiểu int sẽ là 32 bit tức 4 byte. Các giá trị giới hạn này được định nghĩa trong hai file header hệ thống là limit.h và float.h.

Về cơ bản cả C và C ++ đều có 4 kiểu dữ liê ̣u built -in là char, int, float và double. Kiểu char có kích thước nhỏ nhất là 8 bit mă ̣c dù thực tế có thể lớn hơn . Kiểu int có kích thước nhỏ nhất là 2 byte còn kiểu float và double là hai kiểu số thực có độ chính xác đơn và kép, chúng có format tuân theo chuẩn IEEE.

Như đã đề câ ̣p ở trên kiểu bool là mô ̣t kiểu chuẩn của ngôn ngữ C ++ với hai giá tri ̣ là true và false. Tuy nhiên rất nhiều chương trình vẫn dùng các giá trị kiểu int thay cho các giá trị kiểu bool nên trong các trường hợp cần đến một giá trị bool trình biên dịch thường thực hiê ̣n chuyển kiểu từ int sang bool hoă ̣c có cảnh báo cho chúng ta để chính xác hóa các trường hợp này.

Ngoài 4 kiểu trên ra chúng ta có thể sử du ̣ng các từ khóa bổ trợ sau để mở rô ̣ng khả năng lưu trữ của chúng . C++ cung cấp 4 từ khóa bổ trợ là : long, short, signed và unsigned.

long và short được dùng để chỉ đ ịnh các giá trị max và min mà một kiểu dữ liệu sẽ lưu giữ. Mô ̣t biến kiểu int sẽ có kích thước bằng kích thước nhỏ nhất của mô ̣t biến kiểu short int. Các kiểu dữ liệu số nguyên có thể là: short int và long int.

Với các kiểu thực ta có long float và long double , không có các kiểu số thực với từ khóa short.

Các từ khóa signed và unsigned được dùng để chỉ định cho trình biên dịch cách thức sử du ̣ng bit dấu với các kiểu nguyên và kiểu char . Với mô ̣t kiểu signed bit cao nhất đươ ̣c dùng làm bit dấu , kiểu này chỉ cần thiết với char . Với kiểu unsigned không cần dùng mô ̣t bit làm bit dấu nên số phần tử dương sẽ tăng lên gấp đôi.

Kiểu con trỏ và tham chiếu

Có thể có nhi ều cách nói khác nhau về các biến con trỏ , một trong những điểm mạnh mẽ và mềm dẻo nhất của ngông ngữ C , đồng thời cũng là nguyên nhân gây ra nhiều rắc rối với các chương trình viết bằng C. Con trỏ là mô ̣t kiểu dữ liê ̣u bình thường

23

như các kiểu dữ liê ̣u khác chỉ có mô ̣t điều đă ̣c biê ̣t là giá tri ̣ của nó là đi ̣a chỉ của các biến khác. Chính vì điều đặc biệt đó mà thông qua các biến con trỏ chúng ta có thể thực hiê ̣n các thao tác đối với mô ̣t biến số khác ví du ̣ như thay đổi giá tri ̣ ….

Xét ví dụ sau đây: #include <iostream.h>

int main(int argc, char *argv[]) {

int n = 9; int * pn = &n;

cout << pn << "\n" << *pn << "\n" << &pn << "\n" << &n; return 0;

}

output nhâ ̣n được khi cha ̣y chương trình trên là: 0x1491ffc0

9

0x1491ffbe 0x1491ffc0

Giá trị của pn đúng bằng địa chỉ của biến n và *pn bằng giá tri ̣ của n . Toán tử * đươ ̣c go ̣i là toán tử tham chiếu la ̣i (dereference), nó có thể được dùng để khai báo biến con trỏ, tham chiếu tới giá tri ̣ của biến mà mô ̣t biến con trỏ trỏ tới .

Hai ứng du ̣ng cơ bản của con trỏ là:

- thay đổi giá tri ̣ của các đối tượng bên ngoài mô ̣t hàm số . Đây là ứng dụng cơ bản nhất của các biến con trỏ.

- các kỹ thuật lập trình tinh vi khác mà chúng ta sẽ học sau .

Tham chiếu (reference)

Ấn tượng ban đầu của chúng ta về các tham chiếu là chúng không cần thiết . Chúng ta có thể viết các chương trình mà không cần tới các tham chiếu. Điều này nói chung là đúng trừ mô ̣t số truờng hợp mà chúng ta sẽ ho ̣c sau này . Thực ra khái niê ̣m truyền biến qua tham chiếu (pass by reference) không phải là mô ̣t khái niê ̣m chỉ có ở C++, nó cũng là một phần cơ bản trong một số ngôn ngữ khác.

Khái niệm về tham chiếu cũng có sự tương đồng với khái niệm con trỏ : chúng ta có thể truyền đi ̣a chỉ của mô ̣t tham biến (trong mô ̣t hàm) qua mô ̣t tham chiếu . Tuy nhiên sự khác nhau giữa con trỏ v à tham chiếu là truyền bằng tham chiếu có vẻ sạch sẽ hơn (cleaner) so vớ i con trỏ . Tham chiếu cho phép các hàm có thể thay đổi giá tri ̣ của các đối tươ ̣ng ngoài như con trỏ tuy nhiên trong cú pháp có sự khác nhau chút ít:

Trong danh sách tham số của hàm chúng ta dùng khai báo int & n để báo rằng chúng ta muốn truyền bằng tham chiếu và truy cập bình thường như một biến khác (con trỏ cần dùng dấu * để truy cập tới giá trị biến ). Khi go ̣i hàm cú pháp đối với việc truyền bằng tham chiếu tương tự như truyền bằng giá tri ̣ (với con trỏ cần thêm 1 dấu & trước tên biến).

Một phần của tài liệu BÀI GIẢNG - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ C++ PDF (Trang 25 -26 )

×