Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
843,6 KB
Nội dung
TIN HỌC ĐẠI CƯƠNG Ngôn ngữ lập trình: C Lý thuyết: buổi Thực hành: buổi NỘI DUNG CÁC BUỔI HỌC Tổng quan C (chương 1,2) Các cấu trúc điều khiển C (chương 3) Hàm cấu trúc chương trình (chương 4) Mảng, chuỗi trỏ (chương 5) Kiểu cấu trúc, đệ qui, tập tin (chương 6,7,8) Ôn tập CHƯƠNG 5: MẢNG, CHUỔI VÀ CON TRỎ Khái niệm mảng Các toán liên quan đến mảng Chuỗi ký tự Con trỏ nhớ Mối liên hệ mảng,chuỗi,con trỏ hàm KHÁI NIỆM VỀ MẢNG * Xét ví dụ: viết CT quản lí điểm trung bình 100 sinh viên Nhận xét: #include “stdio.h” #include “conio.h” Khai báo biến nhiều void main() => khó quản lí { float dtb1; Khó truy xuất thao float dtb2; tác float dtb100; … } KHÁI NIỆM VỀ MẢNG a/ Khái niệm mảng: tập hợp nhiều biến có kiểu liệu tên, phần tử mảng truy xuất thông qua số b/ Cú pháp khai báo mảng: * Ví dụ: int a[10], b[3][2]; => Dòng lệnh khai báo hai mảng: - Mảng a mảng chiều có 10 phần tử số nguyên - Mảng b mảng chiều (3 dòng, cột) có phần tử số nguyên (mảng chiều gọi ma trận) * Ví dụ: vừa khai báo vừa khởi tạo mảng: (xem trang 116) int a[3]={2,5,7}; KHÁI NIỆM VỀ MẢNG c/ Chỉ số mảng: phải giá trị kiểu int không vượt kích thước mảng * Ví dụ: int a[5] => Dòng lệnh cho biết: Mảng a gồm phần tử có kiểu số nguyên Chỉ số phần tử đánh số từ (a[0] , a[1] , a[2] , a[3] , a[4]) => Như vậy, để truy xuất phần tử mảng ta dùng cú pháp: Tên_mảng[chỉ_số_của_mảng] * Ví dụ: int so,a[5]; a[0] = 5; // gán giá trị cho phần tử thứ mảng a[3] = 8; // gán giá trị cho phần tử thứ mảng so = a[3]; // lấy giá trị phần tử thứ gán cho biến so CÁC BÀI TOÁN LIÊN QUAN ĐẾN MẢNG a/ Nhập / xuất mảng b/ Tìm kiếm giá trị mảng c/ Sắp xếp mảng tăng dần / giảm dần d/ Sửa giá trị cho phần tử thứ i mảng e/ Xóa phần tử thứ i mảng CÁC VẤN ĐỀ LIÊN QUAN ĐẾN MẢNG a/ Nhập / xuất mảng: (mảng chiều) // Nhập mảng … void main() { int a[5]; // Nhap gia tri cho cac ptu for (int i=0;i[...]... chiều dài trong chuỗi , kq: 8 ký tự strcat(s1, “ cac ban”); // nối thêm cho s1 chuỗi “ cac ban” if (strcmp(s1,s2)==0) // so sánh s1,s2: (0: s1=s2, -1: s1s2) printf(“s1 bang s2”); s1[4]= C ; // thay thế ký tự c trong chuỗi thành C } 4 CON TRỎ VÀ BỘ NHỚ a/ Khái niệm con trỏ b/ C c phép toán trên con trỏ c/ Con trỏ và c p phát vùng nhớ 4 CON TRỎ VÀ BỘ NHỚ a/ Khái niệm con trỏ: • Con trỏ là một... (2,3,7,6,5) Bư c 1: x c định chỉ số k c a phần tử c giá trị = 7 Bư c 2: di chuyển c c phần tử bên phải c a chỉ số k về một chỉ số Bư c 3: c p nhật lại kích thư c của mảng n=n-1 i n=4 n=5 Chỉ số mảng 0 1 2 3 4 2 3 7 6 5 x=7 3 CHUỖI KÝ TỰ a/ Khái niệm: • Chuỗi ký tự là một trường hợp riêng c a mảng một chiều mà mỗi phần tử trong mảng là một ký tự Tuy nhiên, kh c với mảng ký tự, chuỗi ký tự đư c kết th c bằng... ĐẾN MẢNG c/ Sửa giá trị cho phần tử thứ i trong mảng: C c bư c th c hiện: • B1: x c định chỉ số c a phần tử c n sửa giá trị trong mảng • B2: th c hiện c p nhật lại giá trị mới Ví dụ: thay thế phần tử c giá trị 3 trong mảng (2,3,7,6,5) bằng giá trị 5 i Chỉ số mảng 0 1 2 3 4 2 53 7 6 5 x=3 2 C C VẤN ĐỀ LIÊN QUAN ĐẾN MẢNG c/ Xóa phần tử thứ i trong mảng: Xét ví dụ: xóa phần tử c giá trị 7 trong mảng. .. Con trỏ là một kiểu biến đ c biệt dùng để lưu địa chỉ vùng nhớ • C pháp khai báo: *Tên _con_ trỏ; • Ví dụ: int a=3,*p; p=&a; // con trỏ p trỏ tới địa chỉ c a đối tượng là biến a *p=5 // con trỏ p c p nhật lại giá trị c a đối tượng là biến a = 5 4 CON TRỎ VÀ BỘ NHỚ b/ C c phép toán trên con trỏ: • C c phép toán 1 ngôi (xem trang 128) Toán tử &: lấy địa chỉ c a đối tượng Toán tử *:... đối tượng • C c phép toán kh c trên con trỏ (xem trang 130) Phép gán =: ta c thể th c hiện phép gán cho 2 con trỏ c c ng kiểu (nếu kh c kiểu thì phải ép kiểu) Phép truy nhập bộ nhớ Phép so sánh 4 CON TRỎ VÀ BỘ NHỚ c/ Con trỏ và c p phát vùng nhớ: (xem trang 155) * Xét ví dụ: viết CT quản lí điểm c a 1000 sinh viên void main() { float dtb[1000]; … } Nhận xét: Khi chương trình th c thi thì... th c hiện vi c sắp xếp 2 C C VẤN ĐỀ LIÊN QUAN ĐẾN MẢNG c/ Sắp xếp mảng tăng dần: Đổi chỗ tr c tiếp - Interchange Sort Thuật toán: • B1: i = 0 // bắt đầu từ đầu mảng • B2: j=i+1; // tìm c c phần tử a[j]i; • B3: Trong j lãng phí bộ nhớ Khi CT c n gia tăng số lượng h c viên lên 5000 sinh viên thì người lập trình phải chỉnh sửa lại code 4 CON TRỎ VÀ BỘ NHỚ c/ Con trỏ và c p phát vùng nhớ: (xem trang 155) => Để giải quyết bài toán này ta dùng c p phát vùng nhớ động khi th c hiện chương trình void main() { float *dtb; int n; printf(“Cho biet... printf(“Tim thay %d trong mang”,so); else printf(“Khong tim thay %d trong mang”,so); } 2 C C VẤN ĐỀ LIÊN QUAN ĐẾN MẢNG c/ Sắp xếp mảng tăng dần / giảm dần: C rất nhiều thuật toán dùng để sắp xếp: Đổi chỗ tr c tiếp (Interchange Sort) Nổi bọt (Bubble Sort) Chọn tr c tiếp (Selection Sort) Chèn tr c tiếp (Insert Sort) … => xem từ trang 162 – 167 (ho c giáo trình môn C u tr c dữ liệu 1) 2 C C VẤN ĐỀ LIÊN ... s1[4]= C ; // thay ký tự c chuỗi thành C } CON TRỎ VÀ BỘ NHỚ a/ Khái niệm trỏ b/ C c phép toán trỏ c/ Con trỏ c p phát vùng nhớ CON TRỎ VÀ BỘ NHỚ a/ Khái niệm trỏ: • Con trỏ kiểu biến đ c biệt...NỘI DUNG C C BUỔI H C Tổng quan C (chương 1,2) C c cấu tr c điều khiển C (chương 3) Hàm c u tr c chương trình (chương 4) Mảng, chuỗi trỏ (chương 5) Kiểu c u tr c, đệ qui, tập tin (chương 6,7,8)... 6,7,8) Ôn tập CHƯƠNG 5: MẢNG, CHUỔI VÀ CON TRỎ Khái niệm mảng C c toán liên quan đến mảng Chuỗi ký tự Con trỏ nhớ Mối liên hệ mảng, chuỗi ,con trỏ hàm 1 KHÁI NIỆM VỀ MẢNG * Xét ví dụ: viết CT quản lí