Đến với Bài giảng Tin học đại cương Phần 2: Bài 4 - Con trỏ và mảng các bạn sẽ được tìm hiểu các vấn đề tổng quan về con trỏ; mảng; sử dụng con trỏ làm việc với mảng.
Trang 1 4.2.3 Các thao tác cơ bản làm việc trên mảng
4.3 Sử dụng con trỏ làm việc với mảng
Trang 24.1.1 Tổng quan về con trỏ
a Địa chỉ và giá trị của một biến
Bộ nhớ như một dãy các byte nhớ.
Các byte nhớ được xác định một cách duy nhất qua
một
một địa chỉ địa chỉ
Biến được lưu trong bộ nhớ.
Khi khai báo một biến
Chương trình dịch sẽ cấp phát cho biến đó một số ô nhớ liên
tiếp đủ để chứa nội dung của biến Ví dụ một biến số nguyên
(int) được cấp phát 2 byte.
Địa chỉ của một biến chính là địa chỉ của byte đầu tiên trong
số đó
4
a Địa chỉ và giá trị của một biến (tiếp)
Một biến luôn có hai đặc tính:
Địa chỉ của biến.
Giá trị của biến.
Trang 3b Khái niệm và khai báo con trỏ
Con trỏ là một biến mà giá trị của nó là địa chỉ của
một vùng nhớ.
Khai báo con trỏ:
Cú pháp khai báo một con trỏ như sau:
Một con trỏ chỉ có thể trỏ tới một đối tượng cùng kiểu.
Biến Địa chỉ Giá trị
4.2.3 Các thao tác cơ bản làm việc trên mảng
4.3 Sử dụng con trỏ làm việc với mảng
Trang 4tên (và cũng là tên mảng) nhưng
phân biệt với nhau ở
phân biệt với nhau ở chỉ số chỉ số cho cho
biết vị trí của chúng trong mảng
biết vị trí của chúng trong mảng
c[6]
-45 6 0 72 1543 -89 0 62 -3 1 6453 78
Trang 5Mảng Hai Hai chiều chiều::
Mỗi Mỗi phần phần tử tử của của mảng mảng cũng cũng là là một một mảng mảng khác khác
Cú Cú pháp pháp khai khai báo báo mảng mảng 2 2 chiều chiều::
Kiểu_dữ_liệu tên_mảng tên_mảng[[số_hàng số_hàng][ ][số_cột số_cột]; ];
ten_mang[ [chi_so_cua_phan_tu chi_so_cua_phan_tu] ]
Ví dụ 1: Ví dụ 1: int mang_nguyen[3]; int mang_nguyen[3];
Trang 64.2.2 Khai báo và sử dụng mảng
b Sử dụng mảng (tiếp):
Ví dụ 2: Ví dụ 2: int a[6][5]; int a[6][5];
a[0]là phần tử đầu tiên của mảng là phần tử đầu tiên của mảng, là 1 mảng , là 1 mảng
Trang 7a Nhập dữ liệu cho mảng (tiếp):
Trường hợp không biết mảng sẽ có bao nhiêu
phần tử mà chỉ biết số phần tử tối đa có thể có
của mảng Ví dụ:
int a[100];//Khai bao mang, so phan tu toi da la 100
int n; // Bien luu giu so phan tu thuc su cua mang
Trang 84.2.3 Các thao tác cơ bản làm việc
trên mảng
a Nhập dữ liệu cho mảng (tiếp):
Mảng có thể được khởi tạo giá trị ngay khi khai
Trang 9b Xuất dữ liệu chứa trong mảng:
printf(“
printf(“\ \n”); // Xuong dong moi n”); // Xuong dong moi
// Hien thi gia tri cua tat ca cac phan tu mang a
// tren 1 dong, cac phan tu cach nhau 1 dau tab
for(i = 0; i < KT; i++)
printf(“%d
printf(“%d\ \t“, a[i]); t“, a[i]);
// Hien thi k phan tu tren mot dong
Trang 11max = a[0];
//Lan luot so sanh voi cac phan
//tu con lai trong mang
for(i = 1; i < n; i++)
if(max < a[i])
max = a[i];
printf("
trong mang la: %d", max);
4.2.3 Các thao tác cơ bản làm việc
trên mảng
Tìm kiếm trên mảng
Sắp xếp mảng
Trang 12 Hiển thị dãy số người dùng vừa nhập.
Hiển thị lên màn hình: Số luợng phần tử
(trong dãy vừa nhập) có giá trị bằng k
Vd: có 3 phần tử có giá trị bằng k thì hiện
lên: Trong dãy vừa nhập có 3 số có giá
trị bằng k)
Trang 13 Duyệt lần lượt các phần tử của
mảng và đếm xem có bao nhiêu
Trang 14{ printf("\ \n Nhap gia n Nhap gia
tri cho m[%d]:",i);
scanf("%f ",&m[i]);
}
Trang 15printf("
printf("\ \nHay nhap vao nHay nhap vao
mot so de tim kiem:");
printf("\ \n So phan tu co n So phan tu co
gia tri bang %8.3f
la:%d",k,dem);
getch();
}
Trang 16 Tìm kiếm số lượng các số thỏa mãn tính
chất nào đó: vd: chẵn, lẻ, chia hết cho 5,
nguyên tố…
Tìm kiếm kết hợp với thao tác trên các
giá trị tìm được: tính tổng các số âm,
các số nguyên tố,…
Trang 17Bài toán sắp xếp
Bài toán:
Viết chương trình cho phép nhập vào n số
kiểu int (n do người dùng nhập vào, tối đa
là 100, chưa cần kiểm tra đầu vào n)
1)Hiển thị dãy người dùng đã nhập ra màn
Trang 18Bài toán sắp xếp (tiếp)
Giải thuật (tiếp):
Bước 1:Bước 1: Tìm phần tử nhỏ nhất trong n Tìm phần tử nhỏ nhất trong n
Bài toán sắp xếp (tiếp)
Giải thuật (tiếp):
Trang 20printf("\ \n Nhap gia n Nhap gia
tri cho m[%d]:",i);
printf("\ \n Day truoc n Day truoc
khi sap xep:
khi sap xep:\ \n"); n");
for (i=0;i<n;i++)
printf("%5d",m[i]);
Trang 21printf(“Phan tu nho nhat trong
so cac phan tu tu %d den %d la
Trang 22//In giá trị của mảng sau khi xếp
printf("
printf("\ \nMang sau khi nMang sau khi
sap xep theo thu tu
Trang 232 Viết chương trình tính tổng bình phương
của các số âm trong một mảng các số
nguyên
Trang 25Câu hỏi?