1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 1 Cấu trúc dữ liệu và giải thuật (Data Structure and algorithms)

82 2,3K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 1 Cấu trúc dữ liệu và giải thuật (Data Structure and algorithms)
Trường học Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Giáo trình
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 82
Dung lượng 3,13 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhắc nhở một số quy định Đi học đúng giờ  Đeo thẻ SV  Không để chuông điện thoại reo trong giờ học  Không nghe điện thoại, nhắn tin trong giờ học  Không nói chuyện riêng, làm ồn khi

Trang 2

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Nội dung môn học

Chương 2: Đệ quy ( Recursion )

Chương 3: Tìm kiếm ( Searching )

Chương 4: Sắp xếp ( Sorting )

Chương 6: Danh sách liên kết ( Linked List )

Chương 7: Cây ( Tree )

2

Trang 3

Đánh giá kết quả

1. Kiểm tra giữa kỳ: thực hành

 Điểm Kiểm tra giữa kỳ < 4  không được thi kết thúc môn  học lại

2. Kiểm tra cuối kỳ: thực hành

 Điểm Kiểm tra cuối kỳ < 5  không được thi kết thúc môn  học lại

3. Bài tập lớn: làm các bài tập trong module

 Điểm Đề tài < 5  không được thi kết thúc môn  học lại

4. Thi kết thúc môn: trắc nghiệm

5. Kiểm tra thường kỳ

3

Trang 4

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Tài liệu học tập

 Giáo trình:

 C & Data Structures, P S Deshpande, O G Kakde -

CHARLES RIVER MEDIA, INC Hingham, Massachusetts.

Trang 5

Nhắc nhở một số quy định

 Đi học đúng giờ

 Đeo thẻ SV

 Không để chuông điện thoại reo trong giờ học

 Không nghe điện thoại, nhắn tin trong giờ học

 Không nói chuyện riêng, làm ồn khi nghe giảng

 Mang đầy đủ tài liệu học tập của môn học (khi học

LT và TH): giáo trình, bài tập, tập chép bài (hoặc

slide bài giảng), usb để lưu bài tập

 Phải làm bài tập ở nhà

 Nếu vi phạm: Nhắc nhở chung  Bị mời ra khỏi lớp

Trang 6

Chương 0: Giới thiệu chung

6

Trang 8

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

 (1) the logical arrangement of data elements, combined with

 (2) the set of operations we need to access the elements.

8

Trang 10

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Thuật toán

Tập các bước có thể tính toán được để đạt được

kết quả mong muốn (A computable set of steps to

achieve a desired result)

Trang 11

Mối quan hệ của CTDL và thuật toán

CTDL + Thuật toán = Chương

trình

11

Trang 12

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 13

Thời gian thực hiện thuật toán

 Thời gian giải quyết một bài toán phụ thuộc vào

Trang 14

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

 Thông thường số các phép tính được thực hiện phụ

thuộc vào cỡ của bài toán, tức là độ lớn của đầu vào

Vì thế độ phức tạp thuật toán là một hàm phụ thuộc đầu vào

 Tuy nhiên, không cần biết chính xác hàm này mà chỉ cần biết một ước lượng đủ tốt của chúng

 Để ước lượng độ phức tạp của một thuật toán ta thường

dùng khái niệm Big-O

14

Trang 15

– Nếu i < n, quay lại bước 2.

– Ngược lại, dừng thuật toán

Trang 16

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 17

Bảng so sánh các độ phức tạp của

thuật toán

 Một số lớp thuật toán

17

Trang 18

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Thứ tự độ phức tạp của thuật toán

Trang 19

(Tham khảo tài liệu môn Phương Pháp Lập Trình)

Chương 1: Ôn tập C/C++

19

Trang 22

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 25

2 Các cú pháp cơ bản

 Khai báo biến:

 Khai báo và khởi tạo biến:

Trang 26

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

2 Các cú pháp cơ bản

 Các kiểu dữ liệu cơ bản trong C/C++:

 C: void, int, float, double, char

 C++: bool, wchar_t

 Còn có các kiểu dữ liệu khác, được tạo bằng cách

sử dụng thêm: signed, unsigned, short, long

 unsigned int, signed int, …

 Kích thước và khoảng giá trị của từng kiểu phụ

thuộc vào trình biên dịch và kiến trúc máy tính

26

Trang 28

Chương 1: Ôn tập C/ C++

Trang 30

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

2 Các cú pháp cơ bản

Chuyển đổi kiểu:

 Trong biểu thức: kiểu thấp hơn sẽ được nâng thành kiểu cao hơn trước khi thực hiện phép toán

Trang 32

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 34

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

2 Các cú pháp cơ bản

switch ( biểu_thức_nguyên ) {

case hằng_1 :

các_câu_lệnh_1 [ break; ]

case hằng_2 :

các_câu_lệnh_2 [ break; ]

Trang 35

for ( bt_khởi_tạo ; bt_kiểm_tra ;

Trang 36

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 37

2 Các cú pháp cơ bản

37

Trang 38

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

2 Các cú pháp cơ bản

 Cấp phát bộ nhớ động:

Heap: vùng bộ nhớ đặc biệt dành riêng cho các biến

động Để tạo một biến động mới, hệ thống cấp phát không gian từ heap Nếu không còn bộ nhớ, new

không thể cấp phát bộ nhớ thì nó trả về giá trị NULL

 Trong lập trình, ta nên luôn kiểm tra lỗi này:

Trang 39

2 Các cú pháp cơ bản

 Hủy bộ nhớ động:

Trả lại vùng bộ nhớ trỏ bởi P, nhưng không sửa giá trị của P

 Dùng toán tử delete để hủy bộ nhớ động

Sau khi thực thi delete, giá trị của con trỏ không xác

định

 Ví dụ:

delete P;

39

Trang 41

3 Địa chỉ ( Address )

 Mỗi biến đều có 2 thuộc tính: địa chỉ (address) và giá trị (value)

Trong bộ nhớ:

+ Tại địa chỉ 3: giá trị là 45

+ Tại địa chỉ 2: giá trị là “Dave”

Lấy địa chỉ của biến: dùng &

int y=90;

cout << "Value of 'y' is: " << y << "\n";

42

Trang 43

4 Con trỏ ( Pointer )

 Là một biến mà giá trị của nó chứa một địa chỉ

Định nghĩa một con trỏ: thêm dấu * vào trước tên

Trang 44

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

 Các phép toán số học trên con trỏ:

Trang 45

cout<<" The address of i is "<< ia <<" \n ";

cout<<" The value at that location is "<< i <<" \n ";

cout<<" The value at that location is "<< *ia <<" \n ";

*ia = 50;

46

Trang 46

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 48

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 49

5 Mảng ( Array )

 Địa chỉ của mỗi phần tử trong mảng:

 Mỗi phần tử trong mảng có một địa chỉ trong bộ nhớ

(Each element of the array has a memory address)

Trang 50

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

void print_usingptr( int a[], int n)

{

int *b;

b=a;

cout<<" value in array\n ";

for ( int i=0; i<n; i++)

cout<<" value in array\n ";

for ( int i=0; i<n; i++)

{

cout<<*(a+i)<<" ";

} }

Trang 51

5 Mảng ( Array )

 Kích thước của mảng động không cần là hằng số mà

có thể có giá trị được quyết định tại thời gian chạy

new T[n] : cấp phát một mảng gồm n đối tượng kiểu

T và trả về một con trỏ tới đầu mảng

delete [] p : hủy mảng mà p trỏ tới

P phải trỏ tới đầu mảng động, nếu không, kết quả của

delete sẽ phụ thuộc vào trình biên dịch và loại dữ

liệu đang sử dụng Ta có thể nhận được lỗi runtime

error hoặc kết quả sai

53

Trang 52

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

5 Mảng ( Array )

54

Trang 53

5 Mảng ( Array )

55

Trang 55

6 Mảng con trỏ ( Pointer array )

 Có thể khai báo mảng con trỏ (tương tự như

int i1=4, i2=3, i3=2, i4=1, i5=0;

Trang 57

7 Mảng hai chiều ( Two-dimensional

Trang 59

struct Tên_kiểu_cấu_trúc {

các_thành_phần;

};

Trang 60

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

8 Cấu trúc ( Structure )

Khai báo biến kiểu cấu trúc (2 cách):

 Ví dụ:

Ngay n;

hoặc: struct Ngay ng;

 Khởi tạo cho một cấu trúc:

Trang 61

8 Cấu trúc ( Structure )

 Truy cập thành phần của cấu trúc:

Dùng toán tử “.”: Tên_biến_cấu_trúc.Tên_thành _phần

Trang 62

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

8 Cấu trúc ( Structure )

 Ví dụ

66

Chương 1: Ôn tập C/ C++

Trang 63

Bài tập

 Viết chương trình tính diện tích, chu vi hình chữ

nhật (yêu cầu khai báo cấu trúc hình chữ nhật)

 Viết chương trình tính diện tích, chu vi hình tròn (yêu cầu khai báo cấu trúc hình tròn)

67

Trang 65

9 Con trỏ cấu trúc ( Structure pointer )

 Giống như các kiểu dữ liệu khác, ta có thể khai

báo con trỏ cấu trúc

Trang 66

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

9 Con trỏ cấu trúc ( Structure pointer )

70

Chương 1: Ôn tập C/ C++

cout<<" Name is "<< sv->name<<" \n ";

cout<<" Marks are "<<sv->marks<<" \n ";

}

Trang 72

cout << "Length of s1= " << strlen(s1);

cout << "Length of s2= " << strlen(s2);

if (!strcmp(s1, s2)) cout << "These strings are equal\n";

strcat(s1, s2);

cout << "s1 + s2: " << s1 << endl;;

strcpy(s1, "This is a test.\n");

cout << s1;

if (strchr(s1, 'e')) cout << "e is in " << s1;

if (strstr(s2, "hi")) cout << "found hi in " <<s2;

76

Trang 74

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

 Ghi nội dung vào file:

 fwrite(&Address, sizeof(TYPE), count, fp);

 Đọc nội dung từ file:

 fread(&Address, sizeof(TYPE), count, fp);

 Đóng file (Lưu file):

 fclose(fp);

78

Trang 75

FILE *f;

f = fopen("D:\\songuyen.dat ", " wb ");

if ( f == NULL ) {

cout << " Cannot open file.\n ";

exit(0);

}

for ( int i=1; i<=10; i++ )

fwrite(&i, sizeof(int ), 1, f);

fclose(f);

79

Trang 76

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 78

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 79

 Cách gọi hàm:

 Bước 1: Chuẩn bị các tham số để gởi cho hàm nếu có:

 Khai báo biến tương ứng và cho nhập dữ liệu cho biến (nếu cần)

 Bước 2: Đối với:

Tên_Hàm (tham_số_1, tham_số_2,…);

 Khai báo một biến có kiểu trùng với kiểu trả về của hàm

 Viết lệnh gán: biến = Tên_Hàm (tham_số_1, tham_số_2,…);

 Sử dụng biến để xuất, tính toán, gọi hàm khác…

83

12 Hàm ( Function )

Trang 80

Chương 1: Ôn tập C/ C++

Chương 1: Ôn tập C/ C++

Trang 81

12 Hàm ( Function )

 Nguyên mẫu hàm (Prototype)

 Nguyên mẫu hàm được sử dụng để khai báo một hàm nhờ đó nó có thể được sử dụng trong chương trình trước khi hàm đó được định nghĩa thực sự

Ngày đăng: 12/05/2014, 10:27

HÌNH ẢNH LIÊN QUAN

Bảng so sánh các độ phức tạp của - Chương 1 Cấu trúc dữ liệu và giải thuật (Data Structure and algorithms)
Bảng so sánh các độ phức tạp của (Trang 17)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w