Tải bản đầy đủ (.pptx) (32 trang)

BÀI GIẢNG TỔNG QUAN CTDL VÀ GT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (178.14 KB, 32 trang )

CHƯƠNG 1. TỔNG QUAN
VỀ CTDL & GT
Trần Minh Thái
Email:
Website: www.minhthai.edu.vn
1


Mục tiêu
Giới thiệu vai trò của tổ chức dữ liệu
Mối quan hệ giữa GT & CTDL
Các khái niệm và yêu cầu về CTDL
Nhắc lại các kiểu dữ liệu trong C++
Tổng quan về đánh giá độ phức tạp GT
2


Suy nghĩ

?

Theo bạn: trước khi viết một chương

trình để giải quyết một bài toán nào đó trên máy
tính thì cần phải làm những việc gì?

3


Xét đoạn chương trình sau
void main()


{
int n;
cout<<"Nhap vao so nguyen n: ";
cin>>n;
if(n%2==0)
cout<<"La so chan";
else
cout<<"La so le";
}
4


Vai trò của CTDL & GT

Cấu trúc
dữ liệu

Giải thuật

Chương trình
5


Các tiêu chuẩn đánh giá CTDL
Phản ánh đúng thực tế
Phù hợp với thao tác
Tiết kiệm tài nguyên hệ thống 

6



Khái niệm về kiểu dữ liệu
T = <V, O>
V = {Tập các giá trị}
O = {Tập các thao tác xử lý}
Ví dụ: Kiểu dữ liệu số nguyên short trong
ngôn ngữ C
T = short
V = {-32768, 32767}
O = {+, -, *, /, %}
7


Khái niệm về kiểu dữ liệu
Các thuộc tính của một kiểu dữ liệu gồm:





Tên
Miền giá trị
Kích thước lưu trữ
Tập các thao tác tác động lên kiểu dữ liệu đó

Các loại kiểu dữ liệu
 Kiểu dữ liệu cơ bản: Cơ sở, mảng, cấu trúc cơ bản
 Kiểu dữ liệu có cấu trúc hướng giải quyết vấn đề:
Danh sách liên kết, hàng đợi, ngăn xếp, cây, bảng
băm, …

8


Khái niệm về kiểu dữ liệu
Tĩnh
Động
• Được định nghĩa ở thời • Được gắn kết với một con
điểm biên dịch.
trỏ (tại thời điểm biên dịch
chưa có).
• Được cấp phát ở thời • Phát sinh lúc thực thi.
điểm liên kết.
• Có thể có giá trị ban đầu • Không xác định giá trị ban
tùy theo từng ngôn ngữ lập đầu.
trình.
• Được giải phóng khỏi bộ
• Tồn tại đến khi kết thúc nhớ khi cần.
chương trình.

9


Nhắc lại các kiểu dữ liệu C++
Kiểu cơ sở: Số nguyên, số thực và kiểu logic
Kiểu mảng, chuỗi
Kiểu có cấu trúc

10



Kiểu số nguyên
Stt
1
2
3
4
5
6
7
8

Tên kiểu

Ghi chú
Ký tự
char
Số nguyên
unsigned char Số nguyên dương
short
Số nguyên
unsigned short Số nguyên dương
int
Số nguyên
unsigned int
Số nguyên dương
long
Số nguyên
unsigned long Số nguyên dương
11


Kích thước
1 byte
1 byte
1 byte
2 bytes
2 bytes
4 bytes
4 bytes
4 bytes
4 bytes


Kiểu số thực
Stt
Tên kiểu
1 float
2 double
3 long double

Ghi chú
 
 
 

Kích thước
4 bytes
8 bytes
8 bytes

Kiểu luận lý

Stt
Tên kiểu
1 bool

Ghi chú
Kích thước
Gồm 2 giá trị: true hoặc false
12


Kiểu mảng 1 chiều
Khai báo
<KDL> <Tên mảng> [<Số phần tử max>] ;
VD: int a[100];
Gán giá trị ban đầu
VD1: int a[100] = {0};
VD2: int a[5] = {3, 6, 2, 10, 17};
hoặc: int a[] = {3, 6, 2, 10, 17};
13


Kiểu mảng 1 chiều
Phát sinh ngẫu nhiên
 Khởi tạo phát sinh ngẫu nhiên
srand((unsigned int)time(NULL));
 Phát sinh giá trị ngẫu nhiên
int x = rand()%k;
k: Số nguyên dương
x  [0..k-1]
14



Kiểu chuỗi ký tự
Khai báo

char <Tên chuỗi> [<Số phần tử max>] ;
VD: char hoten[50];
Xem lại các hàm
 cin.getline, cin.ignore
 strcpy, strcat, strlen
 strcmp, stricmp
 strchr, strstr
15


Kiểu mảng – Khai báo kiểu con trỏ
 Mảng 1 chiều
<KDL> *<Tên mảng>;
VD: int *a;
 Chuỗi ký tự
char *<Tên chuỗi>;
VD: char *hoten;

16


Bài tập
1. Cài đặt hàm nhập mảng số nguyên, n phần tử
2. Cài đặt hàm phát sinh n phần tử ngẫu nhiên
cho mảng số nguyên

3. Cài đặt hàm phát sinh n phần tử ngẫu nhiên
có giá trị tăng dần cho mảng số nguyên
17


Kiểu mảng – Khai báo kiểu con trỏ
Lưu ý khi sử dụng phải cấp phát biến con trỏ
bằng lệnh new, hủy bằng lệnh delete
VD:
int *a;
int n = 10;
a = new int[n];
…..
delete a;

18


Kiểu dữ liệu có cấu trúc
struct tên_struct
{
khai báo các thuộc tính;
};
typedef struct tên_struct tên_kiểu;

19


Ví dụ kiểu dữ liệu có cấu trúc
struct ttDate

{
char thu[9];
unsigned char ngay;
unsigned char thang;
int nam;
};
typedef struct ttDate DATE;
20


Truy cập thành phần có cấu trúc
Biến cấu trúc kiểu tĩnh
<tên biến>.thành phần cấu trúc
VD:
DATE d;
d.nam = 2012;
21


Bài tập
Viết hàm nhập và hàm xuất thông tin của một
sinh viên gồm các thông tin:
 Mã số
 Họ tên
 Điểm trung bình

22


Truy cập thành phần có cấu trúc

Biến cấu trúc kiểu con trỏ
<tên biến>->thành phần cấu trúc
VD:
DATE *d;
d->nam = 2012;
23


Các phương pháp mô tả giải thuật
Lưu đồ
Mã giả
Mã tự nhiên

24


Các ký hiệu lưu đồ
Bắt đầu/ kết thúc

Điều kiện

Rẽ nhánh

Giá trị trả về

Luồng xử lý

Điểm nối

Khối xử lý

Nhập/ Xuất

25


×