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

CÁC ĐẶC ĐIỂM CỦA C Object

48 347 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 48
Dung lượng 703 KB

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

Nội dung

Con trỏ đến hàm Ví dụ Gọi hàm check sử dụng con trỏ đến hàm như là 1 đối số... Tham số mặc nhiên Khái niệm  Gán các giá trị mặc nhiên cho các tham số của hàm..  Khai báo tham số mặc

Trang 2

Nội dung

 Các khái niệm cơ bản trong C++

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

Trang 3

Các khái niệm cơ bản

 Độ dài tối đa là 32

VD: x, hoten, a1, num_of_var, Delta, TEN,

Trang 4

Các khái niệm cơ bản

float 4 bytes 1.2e-38  3.4e38double 8 bytes 2.2e-308  1.8e308

Trang 5

Các khái niệm cơ bản

Biến

 Khai báo : bất kỳ vị trí nào trong chương trình

 Khởi tạo : có thể vừa khai báo và khởi tạo

VD: int x=5, y=10;

for( int i=0, tong =0 ; i<10 ; i++) tong +=i ;

 Biến khai báo trong 1 khối lệnh : chỉ có phạm

vi hoạt động trong khối lệnh đó.

VD: if( delta >0 ) {

float x1= (-b + sqrt(delta)) / (2*a);

float x2= (-b - sqrt(delta)) / (2*a);

.

}

Trang 6

Các khái niệm cơ bản

 Biến toàn cục : có tác dụng trong toàn bộ CT.

 Biến địa phương (cục bộ): chỉ có tác dụng trong phạm vi của nó.

VD: int so = 5;

void GanSo(int x) {

so = x;

} int NuaSo(int x) { int c=2;

int so =x/c ; return so;

}

Trang 7

Các khái niệm cơ bản

char *str=“Chuoi Ky Tu”;

char chuoi[50]; strcpy(chuoi,“ ”);

if ( strcmp(chuoi,“”)==0) cout << “Chuoi rong”;

Trang 8

Các khái niệm cơ bản

Cú pháp: ( Kiểu ) biểu thức ( Kiểu ) biểu thức

hoặc Kiểu ( biểu thức )

Ví dụ:

int a=10, b=3;

float c1 = a / b ; float c2 = float (a/b);

float c3 = (float) a / b ;

Trang 9

Các khái niệm cơ bản

/= , %= , -= , &= , |= , ^=

Trang 10

Các khái niệm cơ bản

Mảng

 Khai báo :

<Kiểu> <Tên mảng> [<Kích thước>];

VD : int m[10]; float ds[MAX];

 Sử dụng : phép toán lấy giá trị phần tử.

 Thứ tự phần tử : từ 0 đến (kích thước -1)

VD: // CT tính tổng của 10 số Fibonacci đầu tiên

long a[10]; a[0]=a[1]=1;

for (int i=2; i<10 ; i++) a[i] = a[i-1] + a[i-2];

long tong=0;

for(i=0 ; i<10 ; i++)

Trang 11

Các khái niệm cơ bản

# error

Trang 12

Các khái niệm cơ bản

Nhập xuất

 Thư viện hàm : # include <iostream.h>

 Nhập : cin >> Biến

 Xuất : cout << (Biểu thức)

 Các kiểu dữ liệu có thể nhập xuất :

char , int, unsigned, long, unsigned long, … float, double, char* , char []

(void*): lấy địa chỉ đầu của chuỗi

 Có thể nhập xuất liên tục trên một dòng.

VD: cout << “Gia tri x = “ << x << “ , y = “ <<y; cout << “Nhap n = “; cin >> n;

Trang 13

Các khái niệm cơ bản

Trang 14

Các khái niệm cơ bản

Cấu trúc 1 chương trình đơn giản

Trang 15

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

Tuần tự

 Khối lệnh :

Là dãy các lệnh viết trong cặp { }

Tương đương với 1 câu lệnh

Giá trị của biểu thức điều kiện

Bằng 0 : <=> SAI

 Khác 0 : <=> đúng

VD: int x=0;

if(x=2) cout<< “ x bang 2 “;

else cout<< “ x khac 2 “;

Trang 16

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

Rẽ nhánh

Lệnh 1;

else Lệnh 2;

Trang 17

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

Trang 18

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

Từ khóa break

 Thoát ra khỏi cấu trúc switch

 Thoát ra khỏi vòng lặp : while, do while, for

Từ khóa continue : Trở về đầu vòng lặp

Lệnh nhảy goto

 Dùng chung với nhãn lệnh

 Không nên sử dụng vì sẽ phá vở cấu trúc CT

 Ưu điểm : thoát khỏi các vòng lặp lồng sâu

Trang 19

Hàm và cấu trúc chương trình

 Cú pháp :

<Kiểu trả về> <Tên hàm> (Danh sách kiểu và tham số)

{ [ Khai báo dữ liệu cục bộ ] [ Thân hàm ]

[ Câu lệnh return ] }

VD: int Max ( int x, int y) {

int somax;

somax = (x>y) ? x : y;

return somax;

}

Trang 20

Hàm và cấu trúc chương trình

 Khai báo prototype :

<Kiểu trả về> <Tên hàm> ( Danh sách kiểu );

VD: int Max ( int , int );

int Min ( int , int );

void main() {

int a =10 , b =5;

cout<<“ So max= “<< Max(a,b)<<endl;

cout<<“ So min= “<< Min(a,b)<<endl;

} int Max (int x , int y) { } int Min (int x , int y) { }

Trang 21

cout<<“So max= “<< Max ( a , b ) << endl; }

Tham số (hình thức)

Đối số (Tham số thực tế)

Trang 22

 Dạng chung :

# include < Thư viện hàm >

Khai báo prototype;

Khai báo dữ liệu toàn cục Định nghĩa các hàm đã khai báo.

Định nghĩa hàm main().

Trang 23

Con trỏ và chuỗi ký tự

Khái niệm

 Con trỏ lưu địa chỉ của 1 đối tượng dữ liệu khác.

 Kích thước con trỏ = 1 ô nhớ của hệ điều hành

 Trên MS-DOS, kích thước của con trỏ là 2 bytes.

Khai báo : < Kiểu> *<Tên con trỏ>;

Trang 24

Cấp vùng nhớ : Con trỏ = new <Kiểu> [ Số lượng ];

Ví dụ: int *px= new int;

long *py; py= new long[20];

Thu hồi vùng nhớ : delete <con trỏ>;

Ví dụ: delete px;

delete[] py;

Trang 25

Con trỏ

Con trỏ và mảng

 Con trỏ là 1 mảng động => kích thước có thể thay đổi

 Mảng như là 1 con trỏ nhưng độ lớn vùng nhớ cố định

Cách sử dụng mảng và con trỏ gần như giống nhau

Trang 27

Con trỏ

Con trỏ đến con trỏ

 Tương tự (tổng quát hơn) mảng nhiều chiều

 Cẩn thận khi cấp vùng nhớ

Trang 28

int (*p1) (const char *, const char *);

long (*p2) (int a, int b);

 Thường dùng con trỏ này để gọi 1 hàm và gửi

Trang 29

Con trỏ đến hàm

Ví dụ

Gọi hàm check sử dụng con trỏ đến hàm như là 1 đối số

Trang 30

Con trỏ void*

 Có thể trỏ đến bất kỳ loại dữ liệu nào.

 Phải dùng phép ép kiểu khi thay đổi.

Trang 31

Con trỏ và chuỗi ký tự

Chuỗi ký tự

 Là 1 mảng ký tự hay con trỏ ký tự

=> truy xuất phần tử của chuỗi tương tự như mảng.

VD: char chuoi1[20], *chuoi2;

char c = chuoi1[0];

 Phải cấp vùng nhớ cho chuỗi dạng con trỏ.

VD: chuoi2 = new char [50];

Chuỗi sẽ được đánh dấu bởi ký tự kết thúc : ‘\0 \0

Trang 32

Con trỏ và chuỗi ký tự

Chuỗi ký tự

 Một số hàm xử lý chuỗi trong < string.h >:

Copy chuỗi: char* strcpy (char* s1, char* s2);

Tạo bản sao: char* strdup (char* s1);

Chiều dài: int strlen (char* s);

So sánh: int strcmp (char* s1, char* s2);

Ghép chuỗi: char* strcat (char* s1, char* s2);

Đảo ngược: char* strrev (char* s);

Đổi sang HOA: char* strupr (char* s);

Đổi sang thường: char* strlwr (char* s);

Gán n ký tự c:

char* strnset (char* s, int c , int n);

Trang 33

Tham số mặc nhiên

Khái niệm

 Gán các giá trị mặc nhiên cho các tham số của hàm

Ưu điểm

 Không cần phải hiểu rõ ý nghĩa tất cả các tham số

 Có thể giảm được số lượng hàm cần định nghĩa

Khai báo tham số mặc nhiên

 Tất cả các tham số mặc nhiên đều phải đặt ở cuối hàm

 Chỉ cần đưa vào khai báo, không cần trong định nghĩa

Gọi hàm có tham số mặc nhiên

 Nếu cung cấp đủ tham số => dùng tham số truyền vào

 Nếu không đủ tham số => dùng tham số mặc nhiên

Trang 34

Tham số mặc nhiên

Ví dụ

MessageBox( LPCTSTR lpszText,

LPCTSTR lpszCaption = NULL,

UINT nType = MB_OK )

Hàm thể hiện 1 cửa sổ thông báo trong Visual C++

MessageBox (“Hien thi thong bao ra man hinh");

MessageBox ( “Chuc nang khong su dung duoc",

“Bao loi“ );

Có thể gọi hàm theo các dạng sau:

MessageBox ( “Ban muon thoat khoi chuong trinh?",

“Thong bao“,

MB_YESNO | MB_ICONASTERISK );

Trang 35

Tham số mặc nhiên

Ví dụ

void Ham1 (int a=0, int b=1) {

cout<<“ tham so 1 = “<<a<<endl;

cout<<“ tham so 2 = “<<b<<endl;

Trang 36

Tái định nghĩa hàm

Khái niệm

C++ cho phép định nghĩa các hàm trùng tên

Quy tắc tái định nghĩa

 Các hàm trùng tên phải khác nhau về tham số:

Trang 39

Hàm inline

 Là 1 hàm nhưng tác dụng tương tự như một macro.

 Khắc phục được các nhược điểm của hàm và macro

 Giảm thời gian thực thi chương trình.

 Tăng kích thước của mã lệnh thực thi.

 Chỉ nên định nghĩa inline khi hàm có kích thước nhỏ.

Cú pháp : thêm từ khóa inline vào trước hàm.

VD: inline float sqr(float x) {

return (x*x);

} inline int Max(int a, int b) {

return ((a>b) ? a : b) ; }

Trang 41

Tham chiếu

Tham chiếu dùng như một biến

 Khởi tạo : int x=5; int &rx = x;

int &a; int &b=5; // SAI

 Tham chiếu hằng : không thể sửa đổi giá trị

const int &n=10;

<=> int x=3; const int &n=x;

n=5; // Báo lỗi vì n lúc này là hằng số

 Gán trị lại :

Không thể sửa đổi đối tượng tham chiếu.

Chỉ là thay đối giá trị.

int x = 5, y = 20; int &rx = x;

rx = y; // Chính là gán x=20

// không phải là rx tham chiếu đến y

Trang 42

Tham chiếu

Tham chiếu dùng như đối số của hàm

 Làm thay đổi giá trị của tham số.

 Hữu ích cho hàm trả về nhiều kết quả.

 Tiết kiệm được ô nhớ trung gian (tham số hình thức) trong hàm.

void Nhap ( int& a, float& b) { cout << “ Nhap tham so 1 : “; cin >>a;

cout << “ Nhap tham so 2 : “; cin >>b;

}

void main () { int n; float m;

Nhap( n , m );

}

Trang 43

Tham chiếu

Tham chiếu dùng như trị trả về của hàm

 Đối tượng trả về vẫn bền vững khi hàm kết thúc

 Trị trả về là 1 đối tượng toàn cục hay 1 vùng nhớ cục bộ

=> Ích lợi : che đi cách biểu diễn của dữ liệu.

( Chẳng hạn : ta đổi lại dùng CTDL là danh sách liên kết

=> chỉ viết lại hàm GiaTri(int ) mà thôi )

Trang 44

Truyền tham số

Truyền theo giá trị

Giá trị tham số khi ra khỏi hàm sẽ không thay đổi không thay đổi

void Swap1 ( int a, int b) {

x y

a b

main Swap1

STEP 01

5 10

x y

5 10

a b

main Swap1

STEP 02

5 10

x y

10 5

a b

main Swap1

STEP 03

Trang 45

Truyền tham số

Truyền theo địa chỉ (con trỏ)

Giá trị tham số khi ra khỏi hàm có thể thay đổi có thể thay đổi

void Swap2 ( int * a, int * b) {

x y

a b

x y

100 200

a b

x y

100 200

a b

main Swap2

STEP

200

Trang 46

Truyền tham số

Truyền theo tham chiếu:

Giá trị tham số khi ra khỏi hàm có thể thay có thể thay đổi

void Swap3 ( int & & a, int & & b) {

Trang 47

Khái niệm

Struct Là 1 dạng cấu trúc dữ liệu mà bản thân có thể chứa

nhiều loại dữ liệu có kiểu khác nhau.

*hoten masosv[]

Ngày đăng: 21/10/2014, 19:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w