SlideShare a Scribd company logo
CTDL - C – Trang 1
Chương 1. CÁC KHÁI NIỆM CƠ BẢN
1.1. Thuật toán và cấu trúc dữ liệu
- Dữ liệu: nói chung là bất kỳ những gì mà máy tính xử lý
- Kiểu dữ liệu: Mỗi kiểu dữ liệu gồm các giá trị có cùng chung các tính chất nào đó và
trên đó xác định các phép toán
- Cấu trúc dữ liệu: là cách tổ chức và lưu trữ dữ liệu trong máy tính
- Thuật toán (hay giải thuật): là tập hợp các bước theo một trình tự nhất định để giải một
bài toán
- Giữa cấu trúc dữ liệu và thuật toán có quan hệ mật thiết. Nếu ta biết các tổ chức cấu trúc
dữ liệu hợp lý thì thuật toán sẽ đơn giản hơn. Khi cấu trúc dữ liệu thay đổi thì thuật toán
sẽ thay đổi theo
1.2. Các kiểu dữ liệu cơ bản trong ngôn ngữ C
1.2.1. Các kiểu dữ liệu đơn giản
Có giá trị là đơn,
- Kiểu ký tự: có giá trị là một ký tự bất kỳ đặt giữa hai dấu nháy đơn, có kích
thước 1 Byte và biểu diễn được một ký tự thông qua bảng mã ASCII, gồm 2 kiểu:
Kiểu Phạm vi biểu diễn Kích thước
char từ -128 đến 127 1 Byte
unsigned char từ 0 đến 255 1 Byte
- Kiểu số nguyên: có giá trị là một số nguyên, gồm các kiểu:
Kiểu Phạm vi biểu diễn Kích thước
int từ -32768 đến 32767 2 Byte
unsigned int từ 0 đến 65535 2 Byte
long từ -2147483648 đến 2147483647 4 Byte
unsigned long từ 0 đến 4294967295 4 Byte
Nhận xét: Các kiểu ký tự cũng có thể xem là một dạng của kiểu số nguyên
- Kiểu số thực: Có giá trị là một số thực, gồm các kiểu:
Kiểu Phạm vi biểu diễn Kích thước
float từ 3.4E-38 đến 3.4E+38 4 Byte
double từ 1.7E-308 đến 1.7E+308 8 Byte
long double từ 3.4E-4932 đến 1.1E4932 10 Byte
1.2.2. Các kiểu dữ liệu có cấu trúc
1.1.1.1. Kiểu mảng
Các thành phần có cùng kiểu dữ liệu, mỗi thành phần gọi là một phần tử, các phần
tử được đánh chỉ số từ 0 trở đi. Ví dụ với khai báo
float A[5]
Khai báo A là một mảng các số thực gồm 5 phần tử là A[0] , A[1] , A[2] , A[3] , A[4]
1.1.1.2. Kiểu bản ghi
Các thành phần có thể có kiểu dữ liệu khác nhau, mỗi thành phần gọi là một
trường
Ví dụ: struct SVIEN
{ char ten[7];
int namsinh;
float cao;
};
CTDL - C – Trang 2
Khai báo SVIEN là kiểu bản ghi gồm 3 trường ten, namsinh, cao
1.3. Kiểu con trỏ
1.3.1. Định nghĩa
Con trỏ là một biến mà nội dung của nó là địa chỉ của một đối tượng khác. Đối tượng ở
đây có thể là một biến hoặc một hàm
1.3.2. Khai báo kiểu con trỏ
kiểudữliệu *tênbiếncontrỏ ;
Vd char c, *pc; // pc là con trỏ kiểu ký tự char
int i, n, *p, *p2;
float f, r, *pf;
1.3.3. Hàm địa chỉ
&biến
Trả về địa chỉ của một biến trong bộ nhớ, ví dụ &n
1.3.4. Các phép toán trên kiểu con trỏ
- Phép gán: Ta có thể gán giá trị của hai biến con trỏ cùng kiểu cho nhau, hoặc gán địa
chỉ của một biến cho biến con trỏ cùng kiểu
- Phép cộng thêm vào con trỏ một số nguyên (đối với con trỏ liên quan đến mảng)
- Phép so sánh bằng nhau = = hoặc khác nhau !=
- Hằng con trỏ NULL: cho biết con trỏ không chỉ đến đối tượng nào cả, giá trị này có thể
được gán cho mọi biến con trỏ kiểu bất kỳ
- Phép cấp phát vùng nhớ
Lệnh biếncontrỏ = NEW kiểudữliệu;
Vd lệnh p = new int;
- Phép thu hồi vùng nhớ
Lệnh DELETE biếncontrỏ;
Vd lệnh delete p;
1.4. Kiểu tham chiếu
1.4.1. Định nghĩa
Trong C++ có 3 loại biến
Biến giá trị chứa một giá trị dữ liệu thuộc về một kiểu nào đó (nguyên, thực, ký tự . . . )
Biến con trỏ chứa địa chỉ của một đối tượng. Hai loại biến này đều được cấp bộ nhớ và
có địa chỉ
Loại thứ ba là biến tham chiếu, là biến không được cấp phát bộ nhớ, không có địa chỉ
riêng, được dùng làm bí danh cho một biến khác và dùng chung bộ nhớ của biến này
1.4.2. Khai báo kiểu tham chiếu
Cú pháp: kiểu dữ liệu &tên biến tham chiếu = tên biến;
Tên biến là tên biến cùng kiểu với biến tham chiếu đang được khai báo, biến tham chiếu
sẽ tham chiếu đến biến cùng kiểu này
Vd float u, v;
Float &x=u;
Khai báo 2 biến thực u và v
Biến tham chiếu x tham chiếu đến biến u cùng kiểu thực, dùng chung vùng nhớ với biến
u. Khi đó những thay đổi của biến u cũng là những thay đổi của biến x và ngược lại
Vd int m;
int &n=m;
m=25;
cout << “n m=” << m;
cout << “n n=” << n;
CTDL - C – Trang 3
n=n+10;
1.4.3. Ứng dụng kiểu tham chiếu
#include <iostream.h>
#include <conio.h>
void doi(int x, int &y, int *z)
{ x=x+1;
y=y+2;
*z=*z+4;
}
void main()
{ int i=10, j=20, k=30;
cout << "n Truoc khi goi:" << i << j << k;
doi(i,j,&k);
cout << "n Sau khi goi:" << i << j << k;
getch();
}
1.5. Đệ qui
1.5.1. Định nghĩa
Một chương trình gọi ngay chính nó thực hiện gọi là tính đệ qui của chương trình
1.5.2. Các nguyên lý khi dùng kỹ thuật đệ qui
- Tham số hóa bài toán: để thể hiện kích cỡ của bài toán
- Tìm trường hợp dễ nhất: mà ta biết ngay kết quả
- Tìm trường hợp tổng quát: để đưa bài toán với kích cỡ lớn về bài toán có
kích cỡ nhỏ hơn
1.5.3. Ví dụ
Bài toán Tháp Hà Nội: Cần chuyển n đĩa từ cọc A (trong đó đĩa lớn ở dưới, đĩa nhỏ ở
trên) sang cọc B với các điều kiện:
. Mỗi lần chỉ được chuyển một đĩa
. Trên các cọc, luôn luôn đĩa lớn ở dưới, đĩa nhỏ ở trên
. Được dùng cọc trung gian thứ ba C
Giải: - Tham số hóa bài toán:
Gọi n: là số lượng đĩa cần chuyển
x: cọc xuất phát
y: cọc đích
z: cọc trung gian
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int i;
void chuyen(int &n, char x, char y, char z)
{ if (n==1)
{ i++;
cout << "n" << i << ":" << x << "->" << y;
}
else
{ chuyen(n-1,x,z,y);
CTDL - C – Trang 4
chuyen(1,x,y,z);
chuyen(n-1,z,y,x);
}
}
void main()
{ int n;
cout <<"n Nhap n:";
cin >> n;
chuyen(n,'A','B','C');
getch();
}
---o-O-o---

More Related Content

What's hot

Ctdl C11
Ctdl C11Ctdl C11
Ctdl C11
giang
 
Kịch bản dạy học - Lớp 11 - Bài 5
Kịch bản dạy học - Lớp 11 - Bài 5Kịch bản dạy học - Lớp 11 - Bài 5
Kịch bản dạy học - Lớp 11 - Bài 5
Mr K
 
Pplthdt c00 gioi_thieumonhoc_v13.09a
Pplthdt c00 gioi_thieumonhoc_v13.09aPplthdt c00 gioi_thieumonhoc_v13.09a
Pplthdt c00 gioi_thieumonhoc_v13.09a
Pix Nhox
 
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biếnBài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
Châu Trần
 
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biếnBài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
indochinasp
 
Một số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩnMột số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩn
vothanhdoit
 
Ctdl C06
Ctdl C06Ctdl C06
Ctdl C06
giang
 
Ctdl C10
Ctdl C10Ctdl C10
Ctdl C10
giang
 
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
tin_k36
 

What's hot (20)

Lớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảngLớp 11 --chương 4 -- bài 11 --Kiểu mảng
Lớp 11 --chương 4 -- bài 11 --Kiểu mảng
 
Vinhthuy
VinhthuyVinhthuy
Vinhthuy
 
csdl bai-thuchanh_01
csdl bai-thuchanh_01csdl bai-thuchanh_01
csdl bai-thuchanh_01
 
BáO CáO Lý ThuyếT Java
BáO CáO Lý ThuyếT JavaBáO CáO Lý ThuyếT Java
BáO CáO Lý ThuyếT Java
 
Chapter 3 (cont)
Chapter 3 (cont)Chapter 3 (cont)
Chapter 3 (cont)
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
 
Ctdl C11
Ctdl C11Ctdl C11
Ctdl C11
 
Kịch bản dạy học - Lớp 11 - Bài 5
Kịch bản dạy học - Lớp 11 - Bài 5Kịch bản dạy học - Lớp 11 - Bài 5
Kịch bản dạy học - Lớp 11 - Bài 5
 
Bai1 nhom6
Bai1 nhom6Bai1 nhom6
Bai1 nhom6
 
Pplthdt c00 gioi_thieumonhoc_v13.09a
Pplthdt c00 gioi_thieumonhoc_v13.09aPplthdt c00 gioi_thieumonhoc_v13.09a
Pplthdt c00 gioi_thieumonhoc_v13.09a
 
Python Beginner Class day-02-strings
Python Beginner Class day-02-stringsPython Beginner Class day-02-strings
Python Beginner Class day-02-strings
 
Python Beginner Class day-03-flow
Python Beginner Class day-03-flowPython Beginner Class day-03-flow
Python Beginner Class day-03-flow
 
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biếnBài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
Bài 4&5: Một số kiểu dữ liệu chuẩn và khai báo biến
 
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biếnBài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
Bài 4,5:Một số kiểu dữ liệu chuẩn,Khai báo biến
 
Một số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩnMột số kiểu dữ liệu chuẩn
Một số kiểu dữ liệu chuẩn
 
Ctdl C06
Ctdl C06Ctdl C06
Ctdl C06
 
Ctdl C10
Ctdl C10Ctdl C10
Ctdl C10
 
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
Bài 12: Kiểu xâu (Bùi Thị Duyên - Nguyễn Thị Lệ Ngân)
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
 

Viewers also liked

Product slide
 Product slide Product slide
Product slide
rossayu05
 
Workshop Greenwich BV
Workshop Greenwich BVWorkshop Greenwich BV
Workshop Greenwich BV
GREENWICHBV
 
Heathcare brochure v3
Heathcare brochure v3Heathcare brochure v3
Heathcare brochure v3
suryauk
 
At udl project -science
At udl project -scienceAt udl project -science
At udl project -science
smmeyer2010
 
Workshop social media 16 mei 2011
Workshop social media 16 mei 2011Workshop social media 16 mei 2011
Workshop social media 16 mei 2011
Anja Gruteke
 
Presentacion tijuana inovadora
Presentacion tijuana inovadoraPresentacion tijuana inovadora
Presentacion tijuana inovadora
tjtacko
 
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
LiveOnlineEvents
 

Viewers also liked (19)

Suite Software for RITMARE
Suite Software for RITMARESuite Software for RITMARE
Suite Software for RITMARE
 
Filipino men’s familial roles and domestic violence
Filipino men’s familial roles and domestic violenceFilipino men’s familial roles and domestic violence
Filipino men’s familial roles and domestic violence
 
Miriam College eLearning Moodle Experience & the Bigger Picture
Miriam College eLearning Moodle Experience & the Bigger PictureMiriam College eLearning Moodle Experience & the Bigger Picture
Miriam College eLearning Moodle Experience & the Bigger Picture
 
Product slide
 Product slide Product slide
Product slide
 
Vernacular Architecture, Robertus Nugroho and Moediartianto
Vernacular Architecture, Robertus Nugroho and Moediartianto  Vernacular Architecture, Robertus Nugroho and Moediartianto
Vernacular Architecture, Robertus Nugroho and Moediartianto
 
Workshop Greenwich BV
Workshop Greenwich BVWorkshop Greenwich BV
Workshop Greenwich BV
 
Photoblogging
PhotobloggingPhotoblogging
Photoblogging
 
Heathcare brochure v3
Heathcare brochure v3Heathcare brochure v3
Heathcare brochure v3
 
At udl project -science
At udl project -scienceAt udl project -science
At udl project -science
 
Inovação e Tendências em Mídias Digitais - 11/4/16
Inovação e Tendências em Mídias Digitais - 11/4/16Inovação e Tendências em Mídias Digitais - 11/4/16
Inovação e Tendências em Mídias Digitais - 11/4/16
 
Cawasa e source newsletter - 3rd Quarter 2014
Cawasa e source newsletter - 3rd Quarter 2014Cawasa e source newsletter - 3rd Quarter 2014
Cawasa e source newsletter - 3rd Quarter 2014
 
GIS Day - Facilitare la creazione di servizi web OGC: la suite software open ...
GIS Day - Facilitare la creazione di servizi web OGC: la suite software open ...GIS Day - Facilitare la creazione di servizi web OGC: la suite software open ...
GIS Day - Facilitare la creazione di servizi web OGC: la suite software open ...
 
Workshop social media 16 mei 2011
Workshop social media 16 mei 2011Workshop social media 16 mei 2011
Workshop social media 16 mei 2011
 
Catalogo golf ed. 2011 incipit
Catalogo golf ed. 2011   incipitCatalogo golf ed. 2011   incipit
Catalogo golf ed. 2011 incipit
 
Designing medea
Designing medeaDesigning medea
Designing medea
 
Presentacion tijuana inovadora
Presentacion tijuana inovadoraPresentacion tijuana inovadora
Presentacion tijuana inovadora
 
Communication over the time
Communication over the time Communication over the time
Communication over the time
 
Inovação e Tendências em Mídias Digitais - 28/3/16
Inovação e Tendências em Mídias Digitais - 28/3/16Inovação e Tendências em Mídias Digitais - 28/3/16
Inovação e Tendências em Mídias Digitais - 28/3/16
 
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
Lezing Jean-Pierre Wilken #srhRINO jubileumcongres
 

Similar to Ctdl c1

Tin11 chuong04 bai_13
Tin11 chuong04 bai_13Tin11 chuong04 bai_13
Tin11 chuong04 bai_13
HaBaoChau
 
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Ngoc Vu Thi Quynh
 
C cho 8051
C cho 8051C cho 8051
C cho 8051
Nhan Bui
 

Similar to Ctdl c1 (20)

Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
Bai02 java introduction
Bai02 java introductionBai02 java introduction
Bai02 java introduction
 
Pointer
PointerPointer
Pointer
 
More about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu structMore about structure - Tìm hiểu sâu về kiểu struct
More about structure - Tìm hiểu sâu về kiểu struct
 
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
 
Bai 1 tong quan ve ctdl&amp;gt
Bai 1   tong quan ve ctdl&amp;gtBai 1   tong quan ve ctdl&amp;gt
Bai 1 tong quan ve ctdl&amp;gt
 
Kieumang
KieumangKieumang
Kieumang
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Tin11 chuong04 bai_13
Tin11 chuong04 bai_13Tin11 chuong04 bai_13
Tin11 chuong04 bai_13
 
Bài tập CTDL và GT 3
Bài tập CTDL và GT 3Bài tập CTDL và GT 3
Bài tập CTDL và GT 3
 
Baigiang022 bien va kieu
Baigiang022 bien va kieuBaigiang022 bien va kieu
Baigiang022 bien va kieu
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngocGiao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
Giao an tin hoc 11 - Tuan 08 - On tap chuong 04 - vtq ngoc
 
Lect05 array
Lect05 arrayLect05 array
Lect05 array
 
C cho 8051
C cho 8051C cho 8051
C cho 8051
 
Oop 2
Oop 2Oop 2
Oop 2
 
Session 19
Session 19Session 19
Session 19
 
Session 19
Session 19Session 19
Session 19
 
On thitotnghiep
On thitotnghiepOn thitotnghiep
On thitotnghiep
 
Chuong 4 mo hinh hoa du lieu
Chuong 4 mo hinh hoa du lieuChuong 4 mo hinh hoa du lieu
Chuong 4 mo hinh hoa du lieu
 

Ctdl c1

  • 1. CTDL - C – Trang 1 Chương 1. CÁC KHÁI NIỆM CƠ BẢN 1.1. Thuật toán và cấu trúc dữ liệu - Dữ liệu: nói chung là bất kỳ những gì mà máy tính xử lý - Kiểu dữ liệu: Mỗi kiểu dữ liệu gồm các giá trị có cùng chung các tính chất nào đó và trên đó xác định các phép toán - Cấu trúc dữ liệu: là cách tổ chức và lưu trữ dữ liệu trong máy tính - Thuật toán (hay giải thuật): là tập hợp các bước theo một trình tự nhất định để giải một bài toán - Giữa cấu trúc dữ liệu và thuật toán có quan hệ mật thiết. Nếu ta biết các tổ chức cấu trúc dữ liệu hợp lý thì thuật toán sẽ đơn giản hơn. Khi cấu trúc dữ liệu thay đổi thì thuật toán sẽ thay đổi theo 1.2. Các kiểu dữ liệu cơ bản trong ngôn ngữ C 1.2.1. Các kiểu dữ liệu đơn giản Có giá trị là đơn, - Kiểu ký tự: có giá trị là một ký tự bất kỳ đặt giữa hai dấu nháy đơn, có kích thước 1 Byte và biểu diễn được một ký tự thông qua bảng mã ASCII, gồm 2 kiểu: Kiểu Phạm vi biểu diễn Kích thước char từ -128 đến 127 1 Byte unsigned char từ 0 đến 255 1 Byte - Kiểu số nguyên: có giá trị là một số nguyên, gồm các kiểu: Kiểu Phạm vi biểu diễn Kích thước int từ -32768 đến 32767 2 Byte unsigned int từ 0 đến 65535 2 Byte long từ -2147483648 đến 2147483647 4 Byte unsigned long từ 0 đến 4294967295 4 Byte Nhận xét: Các kiểu ký tự cũng có thể xem là một dạng của kiểu số nguyên - Kiểu số thực: Có giá trị là một số thực, gồm các kiểu: Kiểu Phạm vi biểu diễn Kích thước float từ 3.4E-38 đến 3.4E+38 4 Byte double từ 1.7E-308 đến 1.7E+308 8 Byte long double từ 3.4E-4932 đến 1.1E4932 10 Byte 1.2.2. Các kiểu dữ liệu có cấu trúc 1.1.1.1. Kiểu mảng Các thành phần có cùng kiểu dữ liệu, mỗi thành phần gọi là một phần tử, các phần tử được đánh chỉ số từ 0 trở đi. Ví dụ với khai báo float A[5] Khai báo A là một mảng các số thực gồm 5 phần tử là A[0] , A[1] , A[2] , A[3] , A[4] 1.1.1.2. Kiểu bản ghi Các thành phần có thể có kiểu dữ liệu khác nhau, mỗi thành phần gọi là một trường Ví dụ: struct SVIEN { char ten[7]; int namsinh; float cao; };
  • 2. CTDL - C – Trang 2 Khai báo SVIEN là kiểu bản ghi gồm 3 trường ten, namsinh, cao 1.3. Kiểu con trỏ 1.3.1. Định nghĩa Con trỏ là một biến mà nội dung của nó là địa chỉ của một đối tượng khác. Đối tượng ở đây có thể là một biến hoặc một hàm 1.3.2. Khai báo kiểu con trỏ kiểudữliệu *tênbiếncontrỏ ; Vd char c, *pc; // pc là con trỏ kiểu ký tự char int i, n, *p, *p2; float f, r, *pf; 1.3.3. Hàm địa chỉ &biến Trả về địa chỉ của một biến trong bộ nhớ, ví dụ &n 1.3.4. Các phép toán trên kiểu con trỏ - Phép gán: Ta có thể gán giá trị của hai biến con trỏ cùng kiểu cho nhau, hoặc gán địa chỉ của một biến cho biến con trỏ cùng kiểu - Phép cộng thêm vào con trỏ một số nguyên (đối với con trỏ liên quan đến mảng) - Phép so sánh bằng nhau = = hoặc khác nhau != - Hằng con trỏ NULL: cho biết con trỏ không chỉ đến đối tượng nào cả, giá trị này có thể được gán cho mọi biến con trỏ kiểu bất kỳ - Phép cấp phát vùng nhớ Lệnh biếncontrỏ = NEW kiểudữliệu; Vd lệnh p = new int; - Phép thu hồi vùng nhớ Lệnh DELETE biếncontrỏ; Vd lệnh delete p; 1.4. Kiểu tham chiếu 1.4.1. Định nghĩa Trong C++ có 3 loại biến Biến giá trị chứa một giá trị dữ liệu thuộc về một kiểu nào đó (nguyên, thực, ký tự . . . ) Biến con trỏ chứa địa chỉ của một đối tượng. Hai loại biến này đều được cấp bộ nhớ và có địa chỉ Loại thứ ba là biến tham chiếu, là biến không được cấp phát bộ nhớ, không có địa chỉ riêng, được dùng làm bí danh cho một biến khác và dùng chung bộ nhớ của biến này 1.4.2. Khai báo kiểu tham chiếu Cú pháp: kiểu dữ liệu &tên biến tham chiếu = tên biến; Tên biến là tên biến cùng kiểu với biến tham chiếu đang được khai báo, biến tham chiếu sẽ tham chiếu đến biến cùng kiểu này Vd float u, v; Float &x=u; Khai báo 2 biến thực u và v Biến tham chiếu x tham chiếu đến biến u cùng kiểu thực, dùng chung vùng nhớ với biến u. Khi đó những thay đổi của biến u cũng là những thay đổi của biến x và ngược lại Vd int m; int &n=m; m=25; cout << “n m=” << m; cout << “n n=” << n;
  • 3. CTDL - C – Trang 3 n=n+10; 1.4.3. Ứng dụng kiểu tham chiếu #include <iostream.h> #include <conio.h> void doi(int x, int &y, int *z) { x=x+1; y=y+2; *z=*z+4; } void main() { int i=10, j=20, k=30; cout << "n Truoc khi goi:" << i << j << k; doi(i,j,&k); cout << "n Sau khi goi:" << i << j << k; getch(); } 1.5. Đệ qui 1.5.1. Định nghĩa Một chương trình gọi ngay chính nó thực hiện gọi là tính đệ qui của chương trình 1.5.2. Các nguyên lý khi dùng kỹ thuật đệ qui - Tham số hóa bài toán: để thể hiện kích cỡ của bài toán - Tìm trường hợp dễ nhất: mà ta biết ngay kết quả - Tìm trường hợp tổng quát: để đưa bài toán với kích cỡ lớn về bài toán có kích cỡ nhỏ hơn 1.5.3. Ví dụ Bài toán Tháp Hà Nội: Cần chuyển n đĩa từ cọc A (trong đó đĩa lớn ở dưới, đĩa nhỏ ở trên) sang cọc B với các điều kiện: . Mỗi lần chỉ được chuyển một đĩa . Trên các cọc, luôn luôn đĩa lớn ở dưới, đĩa nhỏ ở trên . Được dùng cọc trung gian thứ ba C Giải: - Tham số hóa bài toán: Gọi n: là số lượng đĩa cần chuyển x: cọc xuất phát y: cọc đích z: cọc trung gian #include <iostream.h> #include <conio.h> #include <stdio.h> int i; void chuyen(int &n, char x, char y, char z) { if (n==1) { i++; cout << "n" << i << ":" << x << "->" << y; } else { chuyen(n-1,x,z,y);
  • 4. CTDL - C – Trang 4 chuyen(1,x,y,z); chuyen(n-1,z,y,x); } } void main() { int n; cout <<"n Nhap n:"; cin >> n; chuyen(n,'A','B','C'); getch(); } ---o-O-o---