CNTT4A2 COMMUNITY

Thảo luận học tập


You are not connected. Please login or register

Go downThông điệp [Trang 1 trong tổng số 1 trang]

on 21/2/2011, 3:46 pm

. Lập trình cấu trúc và lập trình hướng đối tượng


Phương pháp lập trình cấu trúc
- Tư tưởng chính của lập trình cấu trúc là tổ chức chương trình thành các chương trình con. Trong PASCAL có 2 kiểu chương trình con là thủ tục và hàm. Trong C chỉ có một loại chương trình con là hàm.
Hàm là một đơn vị chương trình độc lập dùng để thực hiện một phần việc nào đó như: Nhập số liệu, in kết quả hay thực hiện một số tính toán. Hàm cần có đối và các biến, mảng cục bộ dùng riêng cho hàm.
Việc trao đổi dữ liệu giữa các hàm thực hiện thông qua các đối và các biến toàn bộ.
Các ngôn ngữ như C, PASCAL, FOXPRO là các ngôn ngữ cho phép triển khai phương pháp lập trình cấu trúc.
Một chương trình cấu trúc gồm các cấu trúc dữ liệu (như biến, mảng, bản ghi) và các hàm, thủ tục.



Nhiệm vụ chính của việc tổ chức thiết kế chương trình cấu trúc là tổ chức chương trình thành các hàm, thủ tục: Chương trình sẽ bao gồm các hàm, thủ tục nào.
Ví dụ xét yêu cầu sau: Viết chương trình nhập toạ độ (x,y) của một dẫy điểm, sau đó tìm một cặp điểm cách xa nhau nhất.
Trên tư tưởng của lập trình cấu trúc có thể tổ chức chương trình như sau:
+ Sử dụng 2 mảng thực toàn bộ x và y để chứa toạ độ dẫy điẻm
+ Xây dựng 2 hàm:
Hàm nhapsl dùng để nhập toạ độ n điểm, hàm này có một đối là biến nguyên n và được khai báo như sau:
void nhapsl(int n);
Hàm do_dai dùng để tính độ dài đoạn thẳng đi qua 2 điểm có chỉ số là i và j , nó được khai báo như sau:
float do_dai(int i, int j);
Chương trình C cho bài toán trên được viết như sau:
Code:

#include <stdio.h>
#include <conio.h>
#include <math.h>
float x[100],y[100];
float do_dai(int i, int j)
{
return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}
void nhapsl(int n)
{
int i;
for (i=1;i<=n;++i)
{

printf("\nNhap toa do x, y cua diem thu %d : ",i);
scanf("%f%f",&x[i],&y[i]);
}
}
void main()
{
int n,i,j,imax,jmax;
float d,dmax;
printf("\nSo diem N= ");
scanf("%d",&n);
nhapsl(n);
dmax=do_dai(1,2); imax=1;jmax=2;
for (i=1;i<=n-1;++i)
for (j=i+1;j<=n;++j)
{
d=do_dai(i,j);
if (d>dmax)
{
dmax=d;
imax=i;
jmax=j;
}
}
printf("\nDoan thang lon nhat co do dai bang: %0.2f",dmax);
printf("\n Di qua 2 diem co chi so la %d va %d",imax,jmax);
getch();
}



. Phương pháp lập trình hướng đối tượng


+ Khái niệm trung tâm của lập trình hướng đối tượng là lớp (class). Có thể xem lớp là sự kết hợp các thành phần dữ liệu và các hàm. Cũng có thể xem lớp là sự mở rộng của cấu trúc trong C (struct) bằng cách đưa thêm vào các phương thức (method) hay còn gọi là hàm thành viên (member function). Một lớp được định nghĩa như sau:

class Tên_Lớp
{
// Khai báo các thành phần dữ liệu
// Khai báo các phương thức
};
+ Các phương thức có thể được viết (xây dựng) bên trong hoặc bên ngoài (phía dưới) phần định nghiã lớp. Cấu trúc (cách viết) phương thức tương tự như hàm ngoại trừ quy tắc sau: Khi xây dựng một phương thức bên ngoài định nghĩa lớp thì trong dòng đầu tiên cần dùng tên lớp và 2 dấu : đặt trước tên phương thức để chỉ rõ phương thức thuộc lớp nào (xem ví dụ bên dưới).
+ Sử dụng các thành phần dữ liệu trong phương thức: Vì phương thức và các thành phần dữ liệu thuộc cùng một lớp và vì phương thức được lập lên cốt để xử lý các thành phần dữ liệu, nên trong thân của phương thức có quyền truy nhập đến các thành phần dữ liệu (của cùng lớp).
+ Biến lớp: Sau khi định nghĩa một lớp, có thể dùng tên lớp để khai báo các biến kiểu lớp hay còn gọi là đối tượng. Mỗi đối tượng sẽ có các thành phần dữ liệu và các phương thức. Lời gọi một phương thức cần chứa tên đối tượng để xác định phương thức thực hiện từ đối tượng nào.
+ Một chương trình hướng đối tượng sẽ bao gồm các lớp có quan hệ với nhau.
+ Việc phân tích, thiết kế chương trình theo phương pháp hướng đối tượng nhằm thiết kế, xây dựng các lớp.

+ Từ khái niệm lớp nẩy sinh *** loạt khái niệm khác như: Thành phần dữ liệu, phương thức, phạm vi, sự đóng gói, hàm tạo, hàm huỷ, sự thừa kế, lớp cơ sử, lớp dẫn xuất, tương ứng bội, phương thức ảo, ...
+ Ưu điểm của việc thiết kế hướng đối tượng là tập trung xác định các lớp để mô tả các thực thể của bài toán. Mỗi lớp đưa vào các thành phần dữ liệu của thực thể và xây dựng luôn các phương thức để xử lý dữ liệu. Như vậy việc thiết kế chương trình xuất phát từ các nội dụng, các vấn đề của bài toán.
+ Các ngôn ngữ thuần tuý hướng đối tượng (như Smalltalk) chỉ hỗ trợ các khái niệm về lớp, không có các khái niệm hàm.
+ C++ là ngôn ngữ lai , nó cho phép sử dụng cả các công cụ của lớp và hàm.
Để minh hoạ các khái niệm vừa nêu về lập trình hướng đối tượng ta trở lại xét bài toán tìm độ dài lớn nhất đi qua 2 điểm. Trong bài toán này ta gặp một thực thể là dẫy điểm. Các thành phần dữ liệu của lớp dẫy điểm gồm:
- Biến nguyên n là số điểm của dẫy
- Con trỏ x kiểu thực trỏ đến vùng nhớ chứa dẫy hoành độ
- Con trỏ y kiểu thực trỏ đến vùng nhớ chứa dẫy tung độ
Các phương thức cần đưa vào theo yêu cầu bài toán gồm:
- Nhập toạ độ một điểm
- Tính độ dài đoạn thẳng đi qua 2 điểm
Dưới đây là chương trình viết theo thiết kế hướng đối tượng. Để thực hiện chương trình này nhớ đặt tên tệp có đuôi CPP. Xem chương trình ta thấy thêm một điều mới trong C++ là:
Các khai báo biến, mảng có thể viết bất kỳ chỗ nào trong chương trình (tất nhiên phải trước khi sử dụng biến, mảng).
Code:

#include <stdio.h>
#include <conio.h>
#include <math.h>

#include <alloc.h>
class daydiem
{
public:
int n;
float *x,*y;
float do_dai(int i, int j)
{
return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}
void nhapsl(void);
};
void daydiem::nhapsl(void)
{
int i;
printf("\nSo diem N= ");
scanf("%d",&n);
x=(float*)malloc((n+1)*sizeof(float));
y=(float*)malloc((n+1)*sizeof(float));
for (i=1;i<=n;++i)
{
printf("\nNhap toa do x, y cua diem thu %d : ",i);
scanf("%f%f",&x[i],&y[i]);
}
}
void main()
{
daydiem p;
p.nhapsl();

int n,i,j,imax,jmax;
float d,dmax;
n=p.n;
dmax=p.do_dai(1,2); imax=1;jmax=2;
for (i=1;i<=n-1;++i)
for (j=i+1;j<=n;++j)
{
d=p.do_dai(i,j);
if (d>dmax)
{
dmax=d;
imax=i;
jmax=j;
}
}
printf("\nDoan thang lon nhat co do dai bang: %0.2f",dmax);
printf("\n Di qua 2 diem co chi so la %d va %d",imax,jmax);
getch();
}

__________________________________
Only You ...
[You must be registered and logged in to see this link.]
[You must be registered and logged in to see this image.]


http://vdvinh-nd.blogspot.com

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà whatsltd4us
on 21/2/2011, 7:03 pm

hiểu j chết liền :D

__________________________________
............/''''')Chỉ.......
..........,/`../Tay......
........../..../Lên.......
......__/..../_Trời.......
...../` /'...'/' __`,.......
.../'/.../..._/../''' \Hận....
...('(...'...' ~ /'...' )Đời....
....\...*Shock*...../Vô..
.....\'...\........_.'Đối.....
......\...........(..........

[You must be registered and logged in to see this image.] [You must be registered and logged in to see this image.] [You must be registered and logged in to see this image.]

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Google bot
on 21/2/2011, 8:17 pm

kung duoc nhug may kai code sao viet pang C the? Chjnh lai di a.

__________________________________
No Signal ...

[You must be registered and logged in to see this link.]
http://manhtuan-leo.blogspot.com/

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Ice.Tea
on 22/2/2011, 7:31 pm

huhu!!!
đọc mà chẳng hiểu gì cả
:ueu:

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà HoaiThu.na
on 27/2/2011, 10:31 pm

BTVN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
on 27/2/2011, 10:42 pm

bài 1 tìm max, min của dãy n số nguyên, thực

bài 2 tính tổng s=1+1/2+...+1/n

bài 3 sắp xếp dãy n số nguyên, thực bằng các phương pháp selection, Ínert, bubble, quicksort, mergesort

bài 4 quản lí danh sách n sinh viên thông tin gồm:họ tên, ngày sinh, giới tính, toán, lí, hóa, điểm trung bình môn.
viết các hàm trên thủ tục nhạp danh sách, in danh sách, xắp xếp theo họ tên, điểm trung bình môn

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
on 27/2/2011, 10:52 pm

thanks !

__________________________________
No Signal ...

[You must be registered and logged in to see this link.]
http://manhtuan-leo.blogspot.com/

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Ice.Tea
on 2/3/2011, 9:15 pm

k co chj hjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà tinhbandep
on 21/3/2011, 9:31 pm

lop minh co ai lam thao luan tin chua vay boss len di cho moi nguoi xem voi

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà thao_bg91
on 22/3/2011, 8:04 pm

post chứ ko phải boss e ơi , có phải quái chúa đâu mà boss hehe

__________________________________
............/''''')Chỉ.......
..........,/`../Tay......
........../..../Lên.......
......__/..../_Trời.......
...../` /'...'/' __`,.......
.../'/.../..._/../''' \Hận....
...('(...'...' ~ /'...' )Đời....
....\...*Shock*...../Vô..
.....\'...\........_.'Đối.....
......\...........(..........

[You must be registered and logged in to see this image.] [You must be registered and logged in to see this image.] [You must be registered and logged in to see this image.]

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Google bot
Today at 5:16 am

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà Sponsored content

Về Đầu TrangThông điệp [Trang 1 trong tổng số 1 trang]

« Xem bài trước | Xem bài kế tiếp »

Bài viết mới cùng chuyên mục

      Quyền hạn của bạn:

      Bạn không có quyền trả lời bài viết