Bài giảng Kỹ thuật lập trình - Chương 4: Các kiểu dữ liệu có cấu trúc
lượt xem 3
download
Bài giảng Kỹ thuật lập trình - Chương 4: Các kiểu dữ liệu có cấu trúc, cung cấp cho người học những kiến thức như: Kiểu mảng; Kiểu xâu ký tự; Kiểu cấu trúc. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình - Chương 4: Các kiểu dữ liệu có cấu trúc
- BÀI GIẢNG HỌC PHẦN KỸ THUẬT LẬP TRÌNH CHƯƠNG 4: CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC
- Nội dung 4.1. Kiểu mảng 4.2. Kiểu xâu ký tự 4.3. Kiểu cấu trúc 2
- 4.1. Kiểu mảng • Khái niệm mảng • Khai báo và sử dụng mảng • Các thao tác cơ bản trên mảng • Một số chương trình với mảng 3
- Khái niệm mảng • Là một kiểu dữ liệu có cấu trúc, bao gồm một tập hữu hạn các phần tử có cùng kiểu dữ liệu, có tên chung, được lưu trữ kế tiếp nhau trong bộ nhớ • Kích thước của mảng được xác định ngay khi khai báo và là cố định • Các phần tử trong mảng có tên chung là tên của mảng và được phân biệt với nhau thông qua chỉ số của chúng • Mảng thường được dùng để lưu một dãy giá trị như: dãy số nguyên, dãy số thực, dãy kí tự, ma trận, … 4
- Khai báo và sử dụng mảng (1) • Khai báo mảng: kiểu_dữ_liệu tên_mảng[N1][N2]…[Nn] trong đó: - kiểu_dữ_liệu: là kiểu dữ liệu của các phần tử mảng - tên_mảng: tên biến mảng - N1, N2, …, Nn: kích thước các chiều của mảng Số phần tử của mảng: N1 * N2 * … * Nn • Ví dụ: - int a[10], b[20]; - float matran[10][20]; 5
- Khai báo và sử dụng mảng (2) • Có thể sử dụng chỉ thị #define để xác định kích thước các chiều của mảng Ví dụ: #define N1 20 #define N2 30 int a[N1]; float b[N1][N2]; 6
- Khai báo và sử dụng mảng (3) • Kết hợp khởi tạo giá trị trong khai báo mảng: - Khởi tạo giá trị cho mọi phần tử của mảng Ví dụ: int a[3] = {4,5,9}; float x[2][3] = {{2,1.5,3}, {1,3,4.25}}; - Khởi tạo giá trị cho một số phần tử đầu mảng Ví dụ: int b[5] = {2,6,1}; - Khi không khai báo kích thước, kích thước mảng bằng với số lượng giá trị khởi tạo Ví dụ: int c[] = {15,20,36,54}; 7
- Khai báo và sử dụng mảng (4) • Khai báo hằng kiểu mảng: - Cách 1: #define tên_mảng {giá_trị_1, …, giá_trị_n} Không truy cập được vào các phần tử của mảng - Cách 2: const kiểu_dữ_liệu tên_mảng[N1] … [Nn] = {giá_trị_1, …, giá_trị_n} Ví dụ: const int hangmang1[4] = {10,20,25,40}; const float hangmang2[] = {4.5,9.25}; const float hangmang3[5] = {1.5,2,5}; 8
- Khai báo và sử dụng mảng (5) • Lưu trữ dữ liệu kiểu mảng: - Các phần tử của mảng được lưu trữ tại các ô nhớ kế tiếp nhau trong bộ nhớ - Kích thước bộ nhớ lưu trữ: N1 * N2 * … * Nn * sizeof(kiểu_dữ_liệu) - Các phần tử trong mảng được đánh chỉ số, phần tử đầu tiên có chỉ số là 0, phần tử thứ i có chỉ số là i-1 - Biến mảng lưu trữ địa chỉ của ô nhớ đầu tiên trong vùng nhớ được cấp phát 9
- Khai báo và sử dụng mảng (6) • Sử dụng mảng: - Cú pháp truy cập vào các phần tử mảng: tên_mảng[chỉ_số_1][chỉ_số_2] … [chỉ_số_n] - Ví dụ: int a[4]; Các truy cập hợp lệ: a[0], a[1], a[2], a[3] Các truy cập không hợp lệ: a[-2], a[-1], a[4], a[5], … 10
- Khai báo và sử dụng mảng (7) • Sử dụng mảng: (tiếp) - Lấy địa chỉ của phần tử mảng (áp dụng cho mảng 1 chiều): &tên_mảng[chỉ_số]; Ví dụ: &a[1] - Tên mảng biểu thị địa chỉ đầu của mảng, tức là: a = &a[0] 11
- Các thao tác cơ bản trên mảng (1) • Phép gán mảng: - Không được thực hiện phép gán thông thường cho một biến mảng - Chỉ có thể thực hiện phép gán giá trị cho các phần tử của mảng - Ví dụ: int a[3] = {4,5,9},b[3],i; Phép gán không hợp lệ: b = a; Phép gán hợp lệ: for(i=0;i
- Các thao tác cơ bản trên mảng (2) • Nhập dữ liệu cho mảng từ bàn phím: Sử dụng hàm scanf để nhập dữ liệu cho từng phần tử của mảng Ví dụ: int a[10]; Nhập dữ liệu cho phần tử a[1]: scanf("%d",&a[1]); Nhập dữ liệu cho tất cả các phần tử của mảng: sử dụng cấu trúc lặp for int i; for(i=0;i
- Các thao tác cơ bản trên mảng (3) • Nhập dữ liệu cho mảng từ bàn phím (tiếp): Lưu ý: Phép lấy địa chỉ không áp dụng cho các phần tử của mảng nhiều chiều (trừ trường hợp mảng 2 chiều gồm các số nguyên) cần sử dụng biến trung gian khi nhập dữ liệu cho mảng nhiều chiều Ví dụ: float a[10][20]; Nhập dữ liệu cho các phần tử của mảng: int i,j; float x; for(i=0;i
- Các thao tác cơ bản trên mảng (4) • Xuất dữ liệu của mảng ra màn hình: Sử dụng hàm printf để xuất dữ liệu từng phần tử của mảng ra màn hình Ví dụ: int a[10]; Xuất dữ liệu của phần tử a[1]: printf("a[1] = %d",a[1]); Xuất dữ liệu của tất cả các phần tử mảng sử dụng cấu trúc lặp for: int i; for(i=0;i
- Ví dụ (1) • Chương trình nhập/xuất dữ liệu cho mảng: #include int main(void) { int a[50]; int n,i; lap: printf("Nhap so phan tu n = "); scanf("%d",&n); if (n50) { printf("So phan tu khong hop le, hay nhap lai!\n"); goto lap; } 16
- Ví dụ (2) • Chương trình nhập/xuất dữ liệu cho mảng: (tiếp) for(i=0;i
- Một số chương trình với mảng • Viết chương trình tính tổng, trung bình cộng cho dãy số nguyên a1, a2 , …, an • Viết chương trình tìm giá trị lớn nhất, nhỏ nhất của dãy số nguyên a1, a2 , …, an • Viết chương trình tìm phần tử có giá trị là x trong dãy số nguyên a1, a2 , …, an (số nguyên x nhập từ bàn phím) • Viết chương trình sắp xếp dãy số nguyên a1, a2 , …, an theo chiều tăng/giảm dần • Viết chương trình nhập vào ma trận số nguyên (aij)mxn, in lại các giá trị vừa nhập theo dạng ma trận, tính tổng các phần tử trong ma trận và thông báo kết quả ra màn hình 18
- 4.2. Kiểu xâu ký tự • Khái niệm xâu ký tự • Khai báo và sử dụng xâu ký tự • Các hàm xử lý ký tự • Các hàm xử lý xâu ký tự • Một số chương trình với xâu ký tự 19
- Khái niệm xâu ký tự • Là một kiểu dữ liệu có cấu trúc, bao gồm một dãy các ký tự liên tiếp, kết thúc bởi ký tự '\0' (null – mã ASCII là 0) • Mỗi ký tự được lưu trong 1byte • Độ dài xâu là số ký tự có trong xâu • Xâu rỗng là xâu không có ký tự nào • So sánh: - Xâu ký tự & mảng ký tự - 'A' và "A" 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình - Phạm Thế Bảo
0 p | 220 | 32
-
Bài giảng Kỹ thuật lập trình: Chương I - Lưu Hồng Việt
48 p | 194 | 23
-
Bài giảng Kỹ thuật lập trình: Chương IV - Lưu Hồng Việt
32 p | 151 | 17
-
Bài giảng Kỹ thuật lập trình: Chương III - Lưu Hồng Việt
51 p | 147 | 15
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 127 | 15
-
Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT
37 p | 114 | 10
-
Bài giảng Kỹ thuật lập trình - Bài 1: Tổng quan về kỹ thuật lập trình
65 p | 165 | 8
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 129 | 7
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - ThS. Dương Thành Phết
26 p | 92 | 7
-
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 p | 15 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 6 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 4 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn