intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Khánh Thành | Ngày: | Loại File: PDF | Số trang:45

31
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. Ví dụ (2) • Chương trình nhập/xuất dữ liệu cho mảng: (tiếp) for(i=0;i
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2