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

Bài giảng lập trình hướng đối tượng chương 2 các đặc điểm của c

10 276 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 258,61 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 ỏ 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 25 Cấp vùng nh

Trang 1

CÁC ðẶ C ð I Ể M C Ủ A C++

CÁC ðẶ C ð I Ể M C Ủ A C++

Ch ươ ng 2

1

• Các khái ni ệ m c ơ b ả n c ủ a C++

• L ậ p trình c ấ u trúc trong C++

• Các ñặ c ñ i ể m m ớ i c ủ a C++

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

• C ấ u trúc ñ i ề u khi ể n

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

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

• Tham s ố m ặ c nhiên c ủ a hàm

• Tham s ố m ặ c nhiên c ủ a hàm

• Tái ñị nh ngh ĩ a hàm

• Hàm t ạ i ch ổ (inline)

• Truy ề n tham s ố

• Tham chi ế u

• Struct

2

Các

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

• T ừ khóa

– Dành riêng cho ngôn ngữkhông ñược ñặt tên

trùng với từkhóa

– Là chữthường

Vd : char, int, return, for, else, const,

static

• Tên

– Phân biệt chữHOAvà chữth ườ ng

– Gồmchữ, số, ‘_’ và phải bắtñầu bằng chữcái

– ðộdài tối ña là 32

– Nên theo quy cáchñặt tên

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

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

• Ki ể u d ữ li ệ u

Tên Tên ki ki ể ể u u Kích Kích th th ướ ướ c c Ph Ph ạ ạ m m vi vi

char 1 byte -128  127 unsigned char 1 byte 0  255 int 2 bytes -32768  32767 unsigned int 2 bytes 0  65535 short 2 bytes 0  65535 long 4 bytes -231  231 - 1 unsigned long 4 bytes 0  232 - 1 float 4 bytes 1.2e-38  3.4e38 double 8 bytes 2.2e-308 1.8e308

Trang 2

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

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

for( int i=0, tong =0 ; i<10 ; i++) 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);

}

5

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

• Bi ế 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;

so = x;

}

return so;

}

6

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

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

• H ằ ng

– Khai báo: Vd: #define MAX 100

– Một số hằng quan trọng :

• Sốnguyên: 10 , -5, 300000, 1000L,

• Sốnguyên: 10 , -5, 300000, 1000L,

• Sốthực : 3.1416, .5 , 123E-5,

• Ký tự: char ch1 = ‘A’ , ch2=97;

• Chuỗi ký tự:

char *str=“Chuoi Ky Tu”;

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

if ( strcmp(chuoi,“”) ==0)

cout << “Chuoi rong”;

7

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

• Ki ể u: Chuyể n ñổ i ki ể u :

– M ặ c nhiên (t ự ñộ ng) :

float x = 3.1416;

– Do ng ườ i l ậ p trình s ử d ụ ng : – Do ng ườ i l ậ p trình s ử d ụ ng :

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

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

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

float c3 = (float) a / b ;

Trang 3

• Các phép toán

– S ố h ọ c: + , - , * , / , %

– Lu ậ n lý: ==, !=, >, <, >=, <=, &&, ||, !

– L ấ y kích th ướ c:

– L ấ y kích th ướ c: sizeof ( ñố i t ượ ng d ữ li ệ u )

– ð i ề u ki ệ n : e1 ? e2 : e3

– L ấ y ñị a ch ỉ : &(bi ế n)

tong+= i ; tich *= i;

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

9

– Khai báo: < <Ki Ki ể ể u u> < > <Tên Tên m m ả ả ng ng> [< > [<Kích Kích th th ướ ướ c c>]; >];

– 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++)

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

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

• Chú thích

– Trên nhi ề u dòng: /*

chú thích trên nhi ề u dòng

*/

• Các ch ỉ th ị ti ề n biên d ị ch:

#error

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

• Nh ậ p xu ấ t

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

– Nhập: cin cin >> >> Bi Bi ế ế n n

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

– Các kiểu dữliệu có thể nhập xuất : – 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 4

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

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

• Nh ậ p xu ấ t

– M ộ t s ố hàm ñị nh d ạ ng toàn c ụ c:

cin.width(n)

cout.width(n)

– Ký t ự ñặ c bi ệ t : \n, \t, \0, \b, \r

– ðị nh d ạ ng khác: endl, ends, flush, …

13

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

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

14

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

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

• Tu ầ n t ự

– Câu l ệ nh: vi ế t trên m ộ t hay nhi ề u dòng

– Kh ố i l ệ nh:

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

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

• 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 “;

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

• R ẽ nhánh

if (bi ể u th ứ c)

L ệ nh 1;

else

L ệ nh 2;

L ệ nh 2;

switch (bi ể u th ứ c) {

case ‘giá tr ị 1’ : L ệ nh 1; [ break ; ]

case ‘giá tr ị 2’ : L ệ nh 2; [ break ; ]

case ‘giá tr ị n’ : L ệ nh n; [ break ; ]

default : L ệ nh n+1;

}

Trang 5

• L ặ p

while (bi ể u th ứ c)

L ệ nh ;

do

do

L ệ nh ;

while (bi ể u th ứ c);

for ( e1 ; e2 ; e3 )

L ệ nh;

e1 : biểu thức khởi tạo e2 : biểu thứcñiều kiện e3 : biểu thức lặ 17

• 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

18

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

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

• Hàm - 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]

[ Câu lệ nh return]

}

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

return somax;

}

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

• Hàm - 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() {

Khai báo hàm

void main() {

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

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

ðịnh nghĩa hàm

Trang 6

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

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

• Hàm

– Cách gọi :

Tên hàm(tham s ố theo th ứ t ự t ừ trái sang)

– Tham sốvàñối số: Tham số

(hình thức)

int Max ( int x , int y ) {

if(x>y) return x;

return y;

}

void main () {

int a =10 , b = 5;

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

(hình thức)

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

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

• C ấ u trúc ch ươ ng trình

– Chương trình theo dạng lập trình cấu trúc gồm

tập hợp nhiều hàmñộc lập nhau

– Hàm main() làhàm thực thi – Một chương trình chỉcó thể có1 hàm main() duy

nhất

nhất

– Dạng chung :

22

#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()

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

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 ỏ >;

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

VD: long x = 20;

long *y; y = &x;

• Các phép toán

– ðịa chỉ: & y

– Giá trị: y

– Giá trịdữliệu mà con trỏ ñang trỏtới : ** y

20

1036H

x

1036

1080H

*y

Con trỏ Con trỏ

• Cách tính ñị a ch ỉ

int x=10;// Ch ẳ ng h ạ n bi ế n x ñ ang ở ñị a ch ỉ 1000

int *px = &x;// px =1000

(*px)++; // Gán x=11

px++; // px = 1002 vì px là con tr ỏ ki ể u int

px +=n; // px ñ ang tr ỏ ñế n ñị a ch ỉ (1002 + 2*n )

px +=n; // px ñ ang tr ỏ ñế n ñị a ch ỉ (1002 + 2*n )

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

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

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

Vd: delete px;

delete[] py;

Trang 7

• 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

25

Cấp vùng nhớ

vừa ñủ

cho con trỏ

Thu hồi lại vùng

nhớ

Phân bi ệ t m ả ng con tr ỏ và con tr ỏ ñế n m ả ng

26

Mảng Mảng gồm gồm 10 con 10 con trỏ trỏ

Con Con trỏ trỏ ñến ñến 1 1 mảng mảng

10

10 phần phần tử tử kiểu kiểu int int

Tham số mặc nhiên Tham số mặc nhiên

• Khái ni ệ m

– Gán cácgiá trịmặc nhiêncho cáctham 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

– 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ấ ñủtham số=> dùng tham sốtruyền vào – Nếukhông ñủtham số=> dùngtham sốmặc nhiên

Trang 8

Tham số mặc nhiên

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++

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

29

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

MessageBox ( “Chuc nang khong su dung duoc",

“Bao loi“ );

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

“Thong bao“,

MB_YESNO | MB_ICONASTERISK );

Tham số mặc nhiên 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 ; }

void main () {

30

void main () {

int x=10, y=20;

cout << “ Goi Ham1 4 lan, ta duoc : “<< endl ; Ham1(x,y);

Ham1(x);

Ham1(y);

Ham1();

}

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

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àmtrùng tênphảikhácnhau vềtham số:

• Sốlượng

• Thứtự

• Kiể

• Quy t ắ c g ọ i hàm

– Tìm hàm có kiểu tham sốphù hợp

– Dùng phép ép kiểu tự ñộng

– Tìm hàm gầnñúng (phù hợp) nhất

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

Vd

int Max ( int a, int b) { return (a>b) ? a : b; }

float Max ( float a, float b) { return (a>b) ? a : b; } SinhVien Max (SinhVien a, SinhVien b) SinhVien Max (SinhVien a, SinhVien b) { return (a.diemtb > b.diemtb) ? a : b; }

void main() {

int x1=1, y1=2;

float x2=3, y2=4;

long x3=5, y3=6;

cout << Max (x1,y1)<<“\t”<< Max (x2,y2)<< endl ;

cout << Max (x3,y1) << endl ;

cout << Max (x3,y2) << endl ;

cout << Max (x3,y3) << endl ; }

Trang 9

{ … }

float F ( float a=5, float b=9) { … }

33

void main() {

float x2=3, y2=4;

cout << F (x1)<<“\t”<< F (y2)<< endl ;

cout << F (x3) << F () << endl ; }

• 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) { VD: inline float sqr(float x) {

return (x*x);

}

inline int Max(int a, int b) { return ((a>b) ? a : b) ;

}

34

Truyền tham số

Truyền tham số

• Truy ề n theo giá tr ị

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

void Swap1 ( int a, int b) {

int temp = a;

a = b;

b = temp;

5 10

x y

a b

main Swap1 STEP

01

b = temp;

}

void main (){

int x = 5 , y = 10 ;

Swap1 ( x , y );

cout << “ x = “ << x

<< “ y = “ << y

<< endl;

}

10

5 10

x y

5 10

a b

main Swap1 STEP

02

5 10

x y

10 5

a b

main Swap1 STEP

03

Truyền tham số Truyền tham số

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

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

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

int temp = * a;

* a = * b;

* b = temp;

5 10

x y

a b

main Swap2 STEP

01 100

200

* b = temp;

}

void main (){

int x = 5 , y = 10 ;

Swap2 ( & x , & y );

cout << “ x = “ << x

<< “ y = “ << y

<< endl;

}

10

y 200 b

5 10

x y

100 200

a b

main Swap2 STEP

02 100

200

10 5

x y

100 200

a b

main Swap2 STEP

03 100

200

Trang 10

• 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.

• Khai báo

37

SinhVien a;

2 bytes

2 bytes

4 bytes

8 bytes

diemtb namsinh

*hoten masosv[]

Struct

• Bi ế n ki ể u struct :

• Truy xu ấ t các thành ph ầ n c ủ a struct :

cin >> a.masosv;

cout << “Tuoi cua b la : “<<b.tuoi;

cin >> ds[19].namsinh;

ds2->hoten = new char[50];

• Gán struct :

• Con tr ỏ struct :

SinhVien *ds= new SinhVien[100];

38

Bài Bài tập tập

• Vi ế t struct cho qu ả n lý kho hàng hóa (t ồ n kho) g ồ m các thông tin tên hàng,

» Tên hàng

» S ố l ượ ng,

• Khi nh ậ p hàng s ẽ cho bi ế t tên hàng,

» s ố l ượ ng,

• Khi xu ấ t s ẽ ch ọ n hàng có trong kho

» s ố l ượ ng bán

Ngày đăng: 04/12/2015, 01:06

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