1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình Các cấu trúc dữ liệu cơ bản (tiếp) GV. Hà Đại Dương

32 347 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

Định dạng
Số trang 32
Dung lượng 535,04 KB

Nội dung

Bài giảng Kỹ thuật lập trình do GV. Hà Đại Dương biên soạn trình bày về nội dung cấu trúc dữ liệu con trỏ (pointer), cấu trúc dữ liệu xâu ký tự (string),... Tài liệu hữu ích để cho các bạn sinh viên ngành Công nghệ thông tin bổ trợ thêm kiến thức lập trình của mình.

Trang 1

Tuần 6 - Các cấu trúc dữ liệu cơ

Trang 2

Con trỏ (Pointer)

Con trỏ

• Cho phép quản lý vùng nhớ: Ghi, đọc dữ liệu

từ vùng nhớ này (như biến)

• Biến thông thường

int a; float b; char c

a,b,c: Biến (thường), lưu giá trị

• Biến con trỏ (con trỏ): lưu địa chỉ của vùng

nhớ

Trang 3

– Tại địa chỉ: FF01có giá trị là678

– Tại địac chỉFF02có giá trị là34.1

Địa chỉ Giá trị

Trang 4

Địa chỉ và giá trị …

• Biến thường

int a; float b; char c

Quan tên của nó -> Biết giá trị

• Con trỏ:

int *pa; float *pb; char *pc;

Qua tên của nó -> Biết địa chỉ ô nhớ

– Ví dụ: &a, &b, &c

Toán tử *: Tác động đến giá trị ô nhớ tại địa

chỉ biến con trỏ

– Cú pháp: *Tên_Biến_Con_trỏ

– Ví dụ: *pa, *pb, *pc

Trang 5

Ví dụ 1

Ví dụ 1…

Trang 6

Ví dụ 2

Ví dụ 2 …

Trang 7

Cấp phát bộ nhớ

• Xét chương trình sau:

Cấp phát bộ nhớ …

• Khi chạy báo lỗi

Sử dụng pa khi chưa khởi tạo

Trang 8

Lý do

• Khi gặp khai báo con trỏ -> chương trình chưa

dành chỗ (ô nhớ) để lưu giá trị nên

Trang 9

• N: kích thước (byte) mỗi phần tử

– Trả về địa chỉ (đầu) vùng nhớ k*n (bytes) cấp phát

Trang 11

Quản lý mảng bằng con trỏ …

• Phép cộng/trừ con trỏ với 1 số nguyên

– Phép công: pb + N cho phép truy cập đến phần tử

(ô nhớ) thứ N+1 tính từ địa chỉ con trỏ pb.

– Phép công: pb - N cho phép truy cập đến phần tử

(ô nhớ) trước con trỏ pb N.

Ví dụ 4

Trang 13

• Con trỏ cho phép tạo và quản lý vùng nhớ với

kích thước có thể thay đổi được -> Cấp phát

Trang 14

• Ý nghĩa: cấp phát lại vùng nhớ quản lý bởi con

trỏ p với kích thước mới là N (bytes)

• Ví dụ 6:

Trang 15

9/26/2016 29

Ví dụ 6

Trang 17

Bài tập

(Sử dụng con trỏ thay vì dùng mảng)

1 Viết chương trình chuyển số thập phân về

bát phân, thập lục phân

2 Viết chương trình chuyển số nhị phân, bát

phân, thập lục phân về dạng thập phân

Trang 18

Xâu ký tự (string)

Định nghĩa

• Xâu ký tự (hay chuỗi ký tự) là một dãy (hoặc

mảng) các ký tự liên tiếp được kết thúc bằng

ký tự ‘\0’ (còn được gọi là ký tự NULL trong

bảng mã ASCII)

• Hằng xâu ký tự là dãy ký tự nằm trong cặp “”

• Ví dụ:

“Ky thuat lap trinh”

“Hoc vien Ky thuat Quan su”

Trang 19

Xâu ký tự …

• Trong C++: có kiểu xâu ký tựstring.

• Trong C: xâu là cách tổ chức dữ liệu (không

Trang 21

– Cộng 2 xâu: “Sinh Vien” và “Hoc vien KTQS” để

được “Sinh Vien Học vien KTQS” (khác với 2 mảng)

– ….

Xâukhông chỉ là mảng các ký tự

Trang 22

Các hàm xử lý xâu

Hàm strcat()

– Ý nghĩa: Cộng (nối) 2 xâu thành một

– Cú pháp

char *strcat(char *des, const char *source)

– Nối xâu 2 vào xâu 1.

– Ví dụ

Trang 23

• Sao chép (copy) 1 xâu

char *strcpy(char *Des, const char *Source)

Trang 24

Các hàm xử lý xâu …

• Sao chép n ký tự đầu tiên

char *strncpy(char *Des, const char *Source,

size_t n)

• Tìm kiếm nội dung

char *strstr(const char *s1, const char *s2)

– Tìm kiếm sự xuất hiện đầu tiên của chuỗi s2 trong

chuỗi s1

– Kết quả trả về của hàm là một con trỏ chỉ đến

phần tử đầu tiên của chuỗi s1 có chứa chuỗi s2

hoặc giá trị NULL nếu chuỗi s2 không có trong

chuỗi s1

Ví dụ

Trang 25

• Đổi năm dương lịch thành năm âm lịch

– Xem lại chương trình đã viết ở tuần 2

– Chương trình

Trang 26

Ví dụ 8 …

Ví dụ 9

• Viết chương trình đếm số từ đơn trong 1 xâu

Ví dụ: “Ky thuat lap trinh” có 4 từ đơn

• Viết chương trình (10)

(Kiểm tra và thảo luận)

Trang 27

Ví dụ 10

• Tạo dòng chữ chạy trên màn hình

• Cách làm ?: Ví dụ với xâu “Ky thuat lap trinh ”

– Chạy qua bên trái

“Ky thuat lap trinh ”

“y thuat lap trinh K”

“ thuat lap trinh Ky”

“thuat lap trinh Ky ”

“huat lap trinh Ky t”

….

Ví dụ 10 …

Trang 28

Ví dụ 10 …

• Để cảm nhận dòng chữ chạy ngang trên màn

hình thì cần viết các dòng

“Ky thuat lap trinh ”

“y thuat lap trinh K”

“ thuat lap trinh Ky”

cùng 1 vị trí

• Lệnh system(“cls”) trong thư viện stdlib.h; cho

phép xoá màn hình và đưa con trỏ về góc trên

bên trái

Trang 29

Ví dụ 10 …

Chưa thêm system(“cls”)

Thêm vào system(“cls”)

Ví dụ 10 …

• Để thực sự tạo hiệu ứng dòng chữ chạy ngang

màn hình cần viết ra liên tục, liên tục các dong

“Ky thuat lap trinh ”

“y thuat lap trinh K”

“ thuat lap trinh Ky”

ở cùng 1 vị trí

• Viết chương trình hoàn chỉnh (10 phút)

Trang 30

Ví dụ 10 …

Ví dụ 10 …

• Chương trình trên đến khi nào dừng?

• Muốn dừng khi người sử dụng nhấn 1 phím

bất kỳ? Làm thế nào?

• Để tốc độ chữ chạy chậm hơn? Làm thế nào?

• Để chữ chạy từ qua phải làm thế nào?

Trang 31

Bài tập

Bài tập

1 Viết chương trình thể hiện dòng chữ chạy

ngang trên màn hình từ phải qua trái

2 Chuẩn hoá xâu họ tên người việt

3 Đổi ngày tháng năm thành chữ Ví dụ

27/9/2016 đổi thành dòng chữ “Ngày hai

mươi bảy tháng chín năm hai nghìn không

trăm mười sáu”

4 Nhập vào 1 biểu thức đơn giản gồm 2 toán

hạng và 1 toán tử, tính kết quả biểu thức đó

Trang 32

• Tìm hiểu trong VS C/C++ làm thế nào để giữ

chậm 1 khoảng thời gian nào đó?

Ngày đăng: 16/05/2017, 16:13

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w