Chương 1
CÁC ĐẶC ĐIỂM CỦA C++
• 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++
1
Nội dung
•
•
•
•
•
•
•
•
•
•
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
Tái định nghĩa hàm
Hàm tại chổ (inline)
Truyền tham số
Tham chiếu
Struct
2
Các khái niệm cơ 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ữ HOA và chữ thường
Gồm chữ, 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, ...
3
Các khái niệm cơ bản
• Kiểu dữ liệu
Tên kiểu
Kích thước
Phạm 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
4
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);
...
}
5
Các khái niệm cơ bản
• Biến
– Biến tồ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;
}
6
Các khái niệm cơ bản
• Hằng
– Khai báo: Vd:
#define
MAX 100
const int MAX=100;
– Một số hằng quan trọng :
•
•
•
•
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
• Kiểu: Chuyển đổi kiểu :
– Mặc nhiên (tự động) :
float
int
x = 3.1416;
y = x ; float sole = x - y;
– Do người lập trình sử dụng :
( Kiểu ) biểu thức
hoặc Kiểu ( biểu thức )
int
a=10, b=3;
float c1 = a / b ;
float c2 = float (a/b);
float c3 = (float) a / b ;
float c4 = float (a)/b;
Cú pháp:
Vd:
8
Các khái niệm cơ bản
• Các phép tốn
–
–
–
–
–
–
–
Số học:
Luận lý:
==,
Gán :
Lấy kích thước:
Điều kiện :
Lấy địa chỉ :
Tăng giảm :
+ , - , * , / , %
!=, >, <, >=, <=, &&, ||, !
=
sizeof (đối tượng dữ liệu )
e1 ? e2 : e3
&(biến)
x++ , x-- , ++x , --x
tong+= i ; tich *= i;
/= , %= , -= , &= , |= , ^=
9
Tìm lỗi biến?
int x = 10;
int x = 10;
---------------------int 1x = 10;
---------------------int x1 = 10;
---------------------int x=3, y=4;
int tong = X+Y;
int if = 10;
-------------------int diem so = 10;
-------------------int diem_so = 10;
-------------------int @diem = 10;
-------------------int diem@ = 10;
10
Tìm lỗi tên biến?
int x = 10;
int x = 10;
---------------------int 1x = 10;
---------------------int x1 = 10;
---------------------int x=3, y=4;
int tong = X+Y;
int if = 10;
-------------------int diem so = 10;
-------------------int diem_so = 10;
-------------------int @diem = 10;
-------------------int diem@ = 10;
11
Biến toàn cục và cục bộ?
int x1 = 5;
int x2 = 2;
void GanSo(int x) {
int x1 = x;
Kết quả cuối in ra x1,
x2 = x; }
x2 bằng mấy?
int main(void){
GanSo(3);
cout<<"x1: "<
cout<<"; x2: "<
getch();
}
12
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];
– 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++)
tong += a[i];
13
Bài tập – mảng
• Dùng mảng lưu số tự nhiên từ 1 đến 10.
• In dãy số này ra màn hình.
• Tính tổng của dãy số và in ra màn hình.
14
Các khái niệm cơ bản
• Chú thích
– Trên 1 dịng:
//chú thích trên 1 dịng
– 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:
#define
#if
#if
#ifdef
#ifndef
#error
#undefine
#else
#elif
#else
#else
#include
#endif
#else
#endif
#endif
#endif
15
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 =
cout << “Nhap n = “; cin >> n;
“ <
16
Các khái niệm cơ bản
• Nhập xuất
– Một số hàm định dạng tồn cục:
• cin.width(n)
• cout.width(n)
– Ký tự đặc biệt : \n, \t
– Định dạng khác: endl, ends, flush, …
17
Bài tập – nhập xuất
• Viết đoạn lệnh cho phép người dùng
nhập một chuỗi và in chuỗi đó ra màn
hình.
18
Các khái niệm cơ bản
• Cấu trúc 1 chương trình đơn giản
19
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ặ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 “;
20
Cấu trúc điều khiển
• Rẽ nhánh
– if (biểu thức)
Lệnh 1;
else
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;
}
21
Cấu trúc điều khiển
• Lặp
– while (biểu thức)
Lệnh ;
– 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ặp
22
Cấu trúc điều khiển
• Từ khóa break
– Thốt ra khỏi cấu trúc switch
– Thốt ra khỏi vịng lặp : while,
do while, for
• Từ khóa continue: Trở về đầu vịng lặp
23
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 ]
}
Vd:
int Max ( int x, int y) {
int somax;
somax = (x>y) ? x : y;
return somax;
}
24
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:
Định
nghĩa
hàm
int Max ( int , int );
Khai báo
int Min ( int , int );
hàm
void main() {
int
a =10 , b =5;
cout<<“So max= “<< Max(a,b)<
cout<<“So min= “<< Min(a,b)<
}
int Max (int x , int y) { ... }
int Min (int x , int y) { ... }
25