Bài giảng Công nghệ Phần mềm - Bài 10: Chuỗi

ppt 20 trang huongle 8511
Bạn đang xem tài liệu "Bài giảng Công nghệ Phần mềm - Bài 10: Chuỗi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_cong_nghe_phan_mem_bai_10_chuoi.ppt

Nội dung text: Bài giảng Công nghệ Phần mềm - Bài 10: Chuỗi

  1. Chuỗi Bài 10
  2. Mục tiêu bài học § Giải thích biến và hằng chuỗi. § Giải thích con trỏ đến chuỗi. § Thực hiện các thao tác nhập/xuất chuỗi. § Giải thích các hàm thao tác chuỗi. § Giải thích cách thức truyền mảng vào hàm. § Mô tả cách thức sử dụng chuỗi như các đối số của hàm.
  3. Các Biến Chuỗi § Chuỗi là mảng ký tự kết thúc bởi ký tự null (‘\0’). § Có thể gán các hằng chuỗi cho các biến chuỗi. § Hằng chuỗi là một chuỗi các ký tự nằm trong dấu nháy kép. § Ký tự null ‘\0’ được tự động thêm vào biểu diễn bên trong của chuỗi. § Khi khai báo một biến chuỗi, hãy dành thêm một phần tử trống cho ký tự kết thúc.
  4. Khai Báo Biến Chuỗi § Khai báo một biến chuỗi tiêu biểu: char str[10]; § str là một biến mảng ký tự có thể lưu giữ tối đa 10 ký tự bao gồm cả ký tự kết thúc.
  5. Các thao tác Nhập/Xuất chuỗi § Sử dụng các hàm trong thư viện nhập/xuất chuẩn stdio.h để thực hiện các thao tác nhập/xuất chuỗi. § Hàm gets() là cách đơn giản nhất để nhập vào một chuỗi thông qua thiết bị nhập chuẩn. § Các ký tự được nhập vào cho đến khi ấn phím Enter § Hàm gets() thay thế ký tự sang dòng mới ‘\n’ bằng ký tự ‘\0’ § Cú pháp: gets(str);
  6. Các thao tác Nhập/Xuất chuỗi - tt § Hàm puts() được dùng để hiển thị một chuỗi trên thiết bị xuất chuẩn. § Cú pháp : puts(str); § Các hàm scanf() và printf() được sử dụng để nhập và hiển thị các kiểu dữ liệu hỗn hợp trong cùng một câu lệnh. § Cú pháp để nhập chuỗi: scanf(“%s”, str); § Cú pháp để hiển thị chuỗi: printf(“%s”, str);
  7. Các hàm về chuỗi Các hàm xử lý chuỗi nằm trong tập tin string.h. Một số thao tác được thực hiện bởi các hàm này là: • Ghép chuỗi • So sánh chuỗi • Xác định vị trị một ký tự trong chuỗi • Sao chép một chuỗi sang chuỗi khác • Tính chiều dài chuỗi Elementary Programming with C/Session 1/ Slide of 20
  8. Hàm strcat() § Nối hai giá trị chuỗi vào một chuỗi. § Cú pháp: strcat(str1, str2); § Nối str2 vào cuối chuỗi str1 § Trả về str1 Elementary Programming with C/Session 1/ Slide of 20
  9. Hàm strcmp() §So sánh hai chuỗi và trả về một giá trị số nguyên dựa trên kết quả của sự so sánh. §Cú pháp: strcmp(str1, str2); §Hàm trả về một giá trị: • Nhỏ hơn 0, nếu str1 str2 Elementary Programming with C/Session 1/ Slide of 20
  10. Hàm strchr() § Xác định vị trí xuất hiện của một ký tự trong một chuỗi. § Cú pháp: strchr(str, chr); § Hàm trả về : • con trỏ trỏ đến vị trí tìm được đầu tiên của ký tự (trỏ bởi chr) trong chuỗi str. • NULL nếu chr không có trong chuỗi Elementary Programming with C/Session 1/ Slide of 20
  11. Hàm strcpy() § Sao chép giá trị trong một chuỗi vào một chuỗi khác. § Cú pháp: strcpy(str1, str2); § Giá trị của str2 được chép vào str1 § Hàm trả về str1 Elementary Programming with C/Session 1/ Slide of 20
  12. Hàm strlen() § Xác định chiều dài của chuỗi. § Cú pháp: strlen(str); § Hàm trả về một giá trị nguyên là độ dài của str. Elementary Programming with C/Session 1/ Slide of 20
  13. Truyền Mảng vào Hàm § Khi mảng được truyền vào hàm như một đối số, chỉ có địa chỉ của mảng được truyền. §Tên mảng chính là là địa chỉ của mảng. void main() { int ary[10]; fn_ary(ary); } Elementary Programming with C/Session 1/ Slide of 20
  14. Truyền Mảng vào Hàm - tt #include void main() { int num[5], ctr, sum=0; int sum_arr(int num_arr[]); /* Function declaration */ clrscr(); for(ctr=0;ctr<5;ctr++) { /*Accepts numbers into the array */ printf("\nEnter number %d:",ctr+1); scanf("%d", &num[ctr]); } Elementary Programming with C/Session 1/ Slide of 20
  15. Truyền Mảng vào Hàm -tt sum=sum_arr(num);/*Invokes the function*/ printf("\nThe sum of the array is %d",sum); getch(); } int sum_arr(int num_arr[]){ /*Function definition*/ int i, total; for(i=0,total=0;i<5;i++) /* Calculates the sum */ total+=num_arr[i]; return total; /* Returns the sum to main() */ } Elementary Programming with C/Session 1/ Slide of 20
  16. Truyền Mảng vào Hàm - tt Kết quả của chương trình trên: Enter number 1: 5 Enter number 2: 10 Enter number 3: 13 Enter number 4: 26 Enter number 5: 21 The sum of the array is 75 Elementary Programming with C/Session 1/ Slide of 20
  17. Ví dụ Truyền Mảng vào Hàm #include #include void main() { char lines[5][20]; int ctr, longctr=0; int longest(char lines_arr[][20]); /* Function declaration */ clrscr(); for(ctr=0;ctr<5;ctr++) { /*Accepts string values into the array*/ printf("\nEnter string %d:",ctr+1); scanf("%s", lines[ctr]); } Elementary Programming with C/Session 1/ Slide of 20
  18. Vd Truyền Mảng vào Hàm - tt longctr=longest(lines); /*Passes the array to the function*/ printf("\n The longest string is %s", lines[longctr]); getch(); } int longest(char lines_arr[][20]) { /*Function definition*/ int i=0, l_ctr=0, prev_len, new_len; prev_len=strlen(lines_arr[i]); /*Determines the length of the first element*/ Elementary Programming with C/Session 1/ Slide of 20
  19. Vd Truyền Mảng vào Hàm - tt for(i++;i prev_len) l_ctr=i; /* Stores the subscript of the longer string */ prev_len=new_len; } return l_ctr; /* Returns the subscript of the longest string */ } Elementary Programming with C/Session 1/ Slide of 20
  20. Vd Truyền Mảng vào Hàm - tt Kết quả của chương trình trên: Enter string 1: The Enter string 2: Sigma Enter string 3: Protocol Enter string 4: Robert Enter string 5: Ludlum The longest string is Protocol Elementary Programming with C/Session 1/ Slide of 20