ݺߣ

ݺߣShare a Scribd company logo
L.X.Địn
GV: Lê Xuân Địn
L.X.Địn 2
 Lập trình Mệnh lệnh (Imperative Programming)
 Ngôn ngữ LT: Hợp ngữ, C đơn giản, …
 Đơn vị của chương trình là lệnh.
 Lập trình Thủ tục (Procedural Programming)
 Ngôn ngữ LT: C, Pascal, …
 Đơn vị của chương trình là thủ tục / hàm / ctrình con.
 Lập trình Hướng đối tượng (Object Oriented Programming)
 Ngôn ngữ LT: C++, Java, C#, …
 Đơn vị của chương trình là đối tượng / lớp.
 Và nhiều kiểu lập trình khác: LTr Khai báo, LTr Hàm, LTr Logic,
LTr Hướng sự kiện, LTr Hướng dịch vụ, v.v.
Các Kiểu Lập trình
(Programming Paradigms)
_____________________________
Chú ý: Cách phân chia ra thành các “kiểu lập trình” như thế này chỉ mang tính tương đối.
L.X.Địn 3
 Chương trình là một danh sách các câu lệnh.
 Ví dụ: Chương trình “Vẽ hình vuông”
Lập trình Mệnh lệnh
drawRight(100);
drawDown(100);
drawLeft(100);
drawUp(100);
L.X.Địn 4
 Chương trình là một danh sách các câu lệnh.
 Ví dụ 2: Chương trình “Vẽ hai hình vuông”
Lập trình Mệnh lệnh
movePen(0, 0);
drawRight(100);
drawDown(100);
drawLeft(100);
drawUp(100);
movePen(50, 50);
drawRight(60);
drawDown(60);
drawLeft(60);
drawUp(60);
Dài!
Lặp
code
L.X.Địn 5
 Chương trình được chia ra thành nhiều chương
trình con (thủ tục, hàm).
 Mỗi chương trình con là một danh sách các câu lệnh.
 Chương trình con này có thể gọi ctrình con khác.
 Ví dụ: Chương trình “Vẽ ba hình vuông”
Lập trình Thủ tục
void main(){
vuong(100, 0, 0);
vuong(60, 50, 50);
vuong(50, 10, 40);
}
void vuong(int w,
int x, int y)
{ movePen(x, y);
drawRight(w);
drawDown(w);
drawLeft(w);
drawUp(w);
}
L.X.Địn 6
 Chương trình được chia ra thành nhiều chương
trình con (thủ tục, hàm).
 Ví dụ 2: Chương trình “Vẽ robot (vuông & chữ nhật)”
Lập trình Thủ tục
void main(){
color(8, 80, 145);
vuong(20, -10,0);
vuong(10, -5,20);
chuNhat(40,50, -20,30);
chuNhat(10,60, -30,30);
chuNhat(10,60, 20,30);
chuNhat(10,60, -15,80);
chuNhat(10,60, 5,80);
}
void vuong(int w,
int x, int y)
{ movePen(x, y);
drawRight(w);
...
}
void chuNhat(
int w, int h,
int x, int y)
{ movePen(x, y);
drawRight(w);
drawDown(h);
...
}
4
4
4
4
4
4
4
4
L.X.Địn 7
 Chương trình được chia ra thành nhiều chương
trình con (thủ tục, hàm).
 Ví dụ 3: Chương trình “Vẽ robot nhảy”
Lập trình Thủ tục
void robot(int w,
int r, int g, int b,
int x, int y){
color(r, g, b);
vuong(2*w, x-w, y);
vuong(w, x-w/2, y+2*w);
chuNhat(4*w,5*w, x-2*w, y+3*w);
chuNhat(w,6*w, x-3*w, y+3*w);
chuNhat(w,6*w, x+2*w, y+3*w);
chuNhat(w,6*w, x-3*w/2,y+8*w);
chuNhat(w,6*w, x+w/2,y+8*w);
}
void xoaRobot(int w,
int x, int y){
robot(w, 0,0,0, x,y);
}
void main()
{ for(int i=0;;i++)
{sleep(200);
xoaRobot(10, 0, 10*(i%2))
robot(10, 8,80,145,
0, 10*((i+1)%2) );
} }
4
4
4
4
4
4
4
4
L.X.Địn 8
 Chương trình được chia ra thành nhiều chương
trình con (thủ tục, hàm).
 Ví dụ 3: Chương trình “Vẽ robot nhảy”
Lập trình Thủ tục
void robot(int w,
int r, int g, int b,
int x, int y){
color(r, g, b);
vuong(2*w, x-w, y);
vuong(w, x-w/2, y+2*w);
chuNhat(4*w,5*w, x-2*w, y+3*w);
chuNhat(w,6*w, x-3*w, y+3*w);
chuNhat(w,6*w, x+2*w, y+3*w);
chuNhat(w,6*w, x-3*w/2,y+8*w);
chuNhat(w,6*w, x+w/2,y+8*w);
}
void xoaRobot(int w,
int x, int y){
robot(w, 0,0,0, x,y);
}
void main()
{ for(int i=0;;i++)
{sleep(200);
xoaRobot(10, 0, 10*(i%2))
robot(10, 8,80,145,
0, 10*((i+1)%2) );
} }
Dài!
Dài!
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
L.X.Địn 9
 Chương trình được chia ra thành nhiều chương
trình con cùng các cấu trúc dữ liệu (struct).
 Ví dụ: Chương trình “Vẽ robot nhảy”
Lập trình Thủ tục với Struct
void veRobot(Robot r){
color(r.r, r.g, r.b);
vuong(2*r.w, r.x-r.w, r.y);
...
}
struct Robot{ int w,
int r, int g, int b,
int x, int y };
4
4
4
4
4
4
4
4
void main()
{ Robot r={10, 8,80,145, 0,0};
for(int i=0;;i++)
{ sleep(200); xoaRobot(r);
doiRobot(r, 0, 10*(i%2));
veRobot(r);
} }
void doiRobot(Robot r,
int x, int y)
{ r.x = x; r.y = y; }
4
4
4
4
4
4
4
4
void xoaRobot(Robot r){
Robot rx = {r.w, 0,0,0, r.x, r.y};
veRobot(rx);
}
L.X.Địn 10
 Chương trình được chia ra thành nhiều chương
trình con cùng các cấu trúc dữ liệu (struct).
 Ví dụ 2: Chương trình “Vẽ robot nhảy & robot chào”
Lập trình Thủ tục với Struct
void main()
{ Robot r={10, 255,0,0, 0,0};
RobotChao rc={10,0,0,255,
-70,0, ‘E’};
helloRobot(rc);
nhayRobot(rc, 9);
byeRobot(rc);
nhayRobot(r, 100);
}
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
...
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
Hello
Bye
Khác kiểu tham số
L.X.Địn 11
 Chương trình được chia ra thành nhiều chương
trình con cùng các cấu trúc dữ liệu (struct).
 Ví dụ 2: Chương trình “Vẽ robot nhảy & robot chào”
Lập trình Thủ tục với Struct
struct RobotChao{ int w,
int r, int g, int b,
int x, int y, char nn };
struct Robot{ int w,
int r, int g, int b,
int x, int y };
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
void veRobot(RobotChao r){
color(r.r, r.g, r.b);
vuong(2*r.w, r.x-r.w, r.y);
...
}
void veRobot(Robot r){
color(r.r, r.g, r.b);
vuong(2*r.w, r.x-r.w, r.y);
...
}
void xoaRobot(Robot r){
Robot rx = {r.w, 0,0,0,
r.x, r.y};
veRobot(rx); }
void xoaRobot(RobotChao r){
Robot rx = {r.w, 0,0,0,
r.x, r.y};
veRobot(rx); }
L.X.Địn 12
 Chương trình là cuộc hội thoại giữa các đối
tượng (đối tượng = struct + hàm).
 Ví dụ: Chương trình “Vẽ robot nhảy & robot chào”
Lập trình Hướng đối tượng
class RobotChao
:public Robot {
char nn;
public:
void hello();
void bye();
};
class Robot{ int w,
int r, int g, int b,
int x, int y;
public:
void ve();
void xoa();
void doi(int x, int y);
void nhay();
};
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
void main()
{ RobotChao rc;
rc.hello();
rc.nhay(100);
}
Hello
L.X.Địn 13
 Qua mỗi bước phát triển, kiểu lập trình sau tích hợp
nhiều đơn vị của kiểu lập trình trước vào một đơn vị.
 Thủ thục là tập hợp các lệnh.
 Đối tượng là sự tích hợp của dữ liệu và thủ tục.
Thuận tiện cho việc phát triển ứng dụng lớn hơn!
 Nâng cao tính tái sử dụng (reusability).
 Nâng cao khả năng mở rộng (scalability).
Kết luận

More Related Content

Các kiểu Lập trình

  • 2. L.X.Địn 2  Lập trình Mệnh lệnh (Imperative Programming)  Ngôn ngữ LT: Hợp ngữ, C đơn giản, …  Đơn vị của chương trình là lệnh.  Lập trình Thủ tục (Procedural Programming)  Ngôn ngữ LT: C, Pascal, …  Đơn vị của chương trình là thủ tục / hàm / ctrình con.  Lập trình Hướng đối tượng (Object Oriented Programming)  Ngôn ngữ LT: C++, Java, C#, …  Đơn vị của chương trình là đối tượng / lớp.  Và nhiều kiểu lập trình khác: LTr Khai báo, LTr Hàm, LTr Logic, LTr Hướng sự kiện, LTr Hướng dịch vụ, v.v. Các Kiểu Lập trình (Programming Paradigms) _____________________________ Chú ý: Cách phân chia ra thành các “kiểu lập trình” như thế này chỉ mang tính tương đối.
  • 3. L.X.Địn 3  Chương trình là một danh sách các câu lệnh.  Ví dụ: Chương trình “Vẽ hình vuông” Lập trình Mệnh lệnh drawRight(100); drawDown(100); drawLeft(100); drawUp(100);
  • 4. L.X.Địn 4  Chương trình là một danh sách các câu lệnh.  Ví dụ 2: Chương trình “Vẽ hai hình vuông” Lập trình Mệnh lệnh movePen(0, 0); drawRight(100); drawDown(100); drawLeft(100); drawUp(100); movePen(50, 50); drawRight(60); drawDown(60); drawLeft(60); drawUp(60); Dài! Lặp code
  • 5. L.X.Địn 5  Chương trình được chia ra thành nhiều chương trình con (thủ tục, hàm).  Mỗi chương trình con là một danh sách các câu lệnh.  Chương trình con này có thể gọi ctrình con khác.  Ví dụ: Chương trình “Vẽ ba hình vuông” Lập trình Thủ tục void main(){ vuong(100, 0, 0); vuong(60, 50, 50); vuong(50, 10, 40); } void vuong(int w, int x, int y) { movePen(x, y); drawRight(w); drawDown(w); drawLeft(w); drawUp(w); }
  • 6. L.X.Địn 6  Chương trình được chia ra thành nhiều chương trình con (thủ tục, hàm).  Ví dụ 2: Chương trình “Vẽ robot (vuông & chữ nhật)” Lập trình Thủ tục void main(){ color(8, 80, 145); vuong(20, -10,0); vuong(10, -5,20); chuNhat(40,50, -20,30); chuNhat(10,60, -30,30); chuNhat(10,60, 20,30); chuNhat(10,60, -15,80); chuNhat(10,60, 5,80); } void vuong(int w, int x, int y) { movePen(x, y); drawRight(w); ... } void chuNhat( int w, int h, int x, int y) { movePen(x, y); drawRight(w); drawDown(h); ... } 4 4 4 4 4 4 4 4
  • 7. L.X.Địn 7  Chương trình được chia ra thành nhiều chương trình con (thủ tục, hàm).  Ví dụ 3: Chương trình “Vẽ robot nhảy” Lập trình Thủ tục void robot(int w, int r, int g, int b, int x, int y){ color(r, g, b); vuong(2*w, x-w, y); vuong(w, x-w/2, y+2*w); chuNhat(4*w,5*w, x-2*w, y+3*w); chuNhat(w,6*w, x-3*w, y+3*w); chuNhat(w,6*w, x+2*w, y+3*w); chuNhat(w,6*w, x-3*w/2,y+8*w); chuNhat(w,6*w, x+w/2,y+8*w); } void xoaRobot(int w, int x, int y){ robot(w, 0,0,0, x,y); } void main() { for(int i=0;;i++) {sleep(200); xoaRobot(10, 0, 10*(i%2)) robot(10, 8,80,145, 0, 10*((i+1)%2) ); } } 4 4 4 4 4 4 4 4
  • 8. L.X.Địn 8  Chương trình được chia ra thành nhiều chương trình con (thủ tục, hàm).  Ví dụ 3: Chương trình “Vẽ robot nhảy” Lập trình Thủ tục void robot(int w, int r, int g, int b, int x, int y){ color(r, g, b); vuong(2*w, x-w, y); vuong(w, x-w/2, y+2*w); chuNhat(4*w,5*w, x-2*w, y+3*w); chuNhat(w,6*w, x-3*w, y+3*w); chuNhat(w,6*w, x+2*w, y+3*w); chuNhat(w,6*w, x-3*w/2,y+8*w); chuNhat(w,6*w, x+w/2,y+8*w); } void xoaRobot(int w, int x, int y){ robot(w, 0,0,0, x,y); } void main() { for(int i=0;;i++) {sleep(200); xoaRobot(10, 0, 10*(i%2)) robot(10, 8,80,145, 0, 10*((i+1)%2) ); } } Dài! Dài! 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
  • 9. L.X.Địn 9  Chương trình được chia ra thành nhiều chương trình con cùng các cấu trúc dữ liệu (struct).  Ví dụ: Chương trình “Vẽ robot nhảy” Lập trình Thủ tục với Struct void veRobot(Robot r){ color(r.r, r.g, r.b); vuong(2*r.w, r.x-r.w, r.y); ... } struct Robot{ int w, int r, int g, int b, int x, int y }; 4 4 4 4 4 4 4 4 void main() { Robot r={10, 8,80,145, 0,0}; for(int i=0;;i++) { sleep(200); xoaRobot(r); doiRobot(r, 0, 10*(i%2)); veRobot(r); } } void doiRobot(Robot r, int x, int y) { r.x = x; r.y = y; } 4 4 4 4 4 4 4 4 void xoaRobot(Robot r){ Robot rx = {r.w, 0,0,0, r.x, r.y}; veRobot(rx); }
  • 10. L.X.Địn 10  Chương trình được chia ra thành nhiều chương trình con cùng các cấu trúc dữ liệu (struct).  Ví dụ 2: Chương trình “Vẽ robot nhảy & robot chào” Lập trình Thủ tục với Struct void main() { Robot r={10, 255,0,0, 0,0}; RobotChao rc={10,0,0,255, -70,0, ‘E’}; helloRobot(rc); nhayRobot(rc, 9); byeRobot(rc); nhayRobot(r, 100); } 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ... 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Hello Bye Khác kiểu tham số
  • 11. L.X.Địn 11  Chương trình được chia ra thành nhiều chương trình con cùng các cấu trúc dữ liệu (struct).  Ví dụ 2: Chương trình “Vẽ robot nhảy & robot chào” Lập trình Thủ tục với Struct struct RobotChao{ int w, int r, int g, int b, int x, int y, char nn }; struct Robot{ int w, int r, int g, int b, int x, int y }; 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 void veRobot(RobotChao r){ color(r.r, r.g, r.b); vuong(2*r.w, r.x-r.w, r.y); ... } void veRobot(Robot r){ color(r.r, r.g, r.b); vuong(2*r.w, r.x-r.w, r.y); ... } void xoaRobot(Robot r){ Robot rx = {r.w, 0,0,0, r.x, r.y}; veRobot(rx); } void xoaRobot(RobotChao r){ Robot rx = {r.w, 0,0,0, r.x, r.y}; veRobot(rx); }
  • 12. L.X.Địn 12  Chương trình là cuộc hội thoại giữa các đối tượng (đối tượng = struct + hàm).  Ví dụ: Chương trình “Vẽ robot nhảy & robot chào” Lập trình Hướng đối tượng class RobotChao :public Robot { char nn; public: void hello(); void bye(); }; class Robot{ int w, int r, int g, int b, int x, int y; public: void ve(); void xoa(); void doi(int x, int y); void nhay(); }; 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 void main() { RobotChao rc; rc.hello(); rc.nhay(100); } Hello
  • 13. L.X.Địn 13  Qua mỗi bước phát triển, kiểu lập trình sau tích hợp nhiều đơn vị của kiểu lập trình trước vào một đơn vị.  Thủ thục là tập hợp các lệnh.  Đối tượng là sự tích hợp của dữ liệu và thủ tục. Thuận tiện cho việc phát triển ứng dụng lớn hơn!  Nâng cao tính tái sử dụng (reusability).  Nâng cao khả năng mở rộng (scalability). Kết luận