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

Bài giảng môn học Tin đại cương: Bài 9&10 - Lý Anh Tuấn

Chia sẻ: BDBC BDBC | Ngày: | Loại File: PDF | Số trang:26

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

Bài giảng bài 9 và 10 cung cấp những kiến thức về kiểu chung, lớp string, lớp vector. Những nội dung chính được trình bày trong chương này gồm có: Chương trình con chung, kiểu chung; lớp, lớp string; các toán tử với xâu kí tự; các hàm kí tự; lớp vector; khai báo vector;... mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn học Tin đại cương: Bài 9&10 - Lý Anh Tuấn

  1. Môn học Tin đại cương Lý Anh Tuấn Bộ môn Khoa học máy tính, Khoa Công nghệ thông tin, Trường đại học Thủy Lợi 1
  2. Buổi 9&10: Kiểu chung, lớp string, lớp vector  Chương trình con chung, kiểu chung  Lớp string  Lớp vector  Vector của các vector 2
  3. Chương trình con chung, kiểu chung  Để hoán đổi giá trị của 2 biến thực chúng ta viết thủ tục sau: void hoandoi(double & a , double & b) { double tmp; tmp = a; a = b; b = tmp; }  Thủ tục này hoạt động tốt nếu ta hoán đổi giá trị 2 biến thực, tuy nhiên không thể sử dụng nó để hoán đổi giá trị 2 biến nguyên hoặc 2 biến xâu kí tự. 3
  4. Chương trình con chung, kiểu chung  C++ cung cấp các chương trình con chung, một chương trình con chung sẽ tham số hóa các kiểu dữ liệu dự định sẽ sử dụng  Thủ tục hoandoi được viết dưới dạng thủ tục chung template void hoandoi(T & a, T & b) { T tmp; tmp = a; a = b; b = tmp; }  T là một kiểu chung và sẽ được thay thế bởi một kiểu dữ liệu cụ thể khi thủ tục được gọi 4
  5. // Hóa đổi giá trị hai số thực, hai xâu kí tự #include using namespace std; template void hoandoi(T & a, T & b) { T tmp; tmp = a; a = b; b = tmp; } int main() { double x=5, y=10; cout
  6. Lớp  Lớp là sự mở rộng của cấu trúc dữ liệu: thay vì chỉ lưu trữ dữ liệu, lớp lưu trữ cả dữ liệu và hàm (phương thức)  Đối tượng là sự thể hiện cụ thể của một lớp. Có thể coi một lớp là một kiểu, và một đối tượng là một biến.  Khai báo một đối tượng x thuộc lớp T: T x(danh_sách_tham_số);  Các phương thức của lớp thường được sử dụng để truy cập tới dữ liệu của đối tượng thuộc lớp, cú pháp: x.tên_phương_thức(danh_sách_tham_số); 6
  7. Lớp string  C++ hỗ trợ xâu kí tự thông qua lớp string, để sử dụng lớp string cần khai báo #include ở đầu chương trình  Các đối tượng kiểu string có thể được khai báo và sử dụng như các kiểu dữ liệu khác  Ngoài ra, lớp string cung cấp cách thức truy cập tới các kí tự của xâu kí tự và một tập các phép toán xử lý xâu. VD: ghép xâu, trích một đoạn trong xâu, tìm kiếm xâu,… 7
  8. Lớp string  Có thể coi xâu kí tự kiểu string là một mảng các kí tự kiểu char và có thể truy cập tới các kí tự riêng biệt của xâu thông qua chỉ số  Ví dụ: string s = “Dai hoc Thuy Loi"; //khai báo, gán g/trị cho xâu s char c; c=s[0]; //gán ‘D’ cho c c=s[5]; //gán ‘o’ cho c s[0]=‘n’; //gán ‘n’ vào vị trí đầu tiên của xâu 8
  9. Các toán tử với xâu kí tự s[i] Truy cập đến phần tử thứ i của xâu ký tự (i nguyên) s=s2 Gán nội dung của xâu s2 cho xâu s ss2, Các phép toán so sánh hai xâu, s==s2, s=s2, s!=s2 trả về false s + s2 Trả về xâu mới là xâu s nối với xâu s2 (xem trang 473-474) 9
  10. Các thao tác với xâu kí tự (tr.473-474): Phương thức Ý nghĩa s.push_back(c) Gắn ký tự c vào xâu s s.append(s2) Gắn xâu s2 vào xâu s s.erase(pos,len) Xóa bỏ len kí tự khỏi s, bắt đầu từ pos s.find(s2) Trả về ví trí của s2 trong s, hoặc s.npos nếu không tìm thấy s2 s.insert(pos,s2) Chèn xâu s2 vào s bắt đầu từ pos Thay thế các kí tự trong xâu s bằng s.replace(pos,num, toàn bộ xâu s2, bắt đầu từ vị trí pos s2) trong xâu s Xác định lại chiều dài của xâu s là s.resize(len) len, bỏ bớt đi hoặc thêm vào xâu s các kí tự null khi cần s.size() Trả về số phần tử trong xâu s Trả về xâu mới gồm các phần tử của xâu s.substr(pos,len) s từ s[pos]...s[pos+len] 10
  11. Các hàm kí tự (nhắc lại)  Một số hàm kí tự trong thư viện cctype(tr.463-464):  int isalnum(char c): trả về true nếu c là một ký tự hay số  int isalpha(char c): trả về true nếu c là một ký tự  int isdigit(char c): trả về true nếu c là một số hệ 10  int isspace(char c): trả về true nếu c là một khoảng trống  int isupper(char c): trả về true nếu c là một chữ hoa  int tolower(char c): đổi kí tự c sang chữ thường  int toupper(char c): đổi kí tự c sang chữ hoa 11
  12. //Đổi một xâu kí tự thành dạng viết hoa #include #include using namespace std; string upperCase(string s); int main() { cout
  13. // Sử dụng một số thao tác với xâu kí tự #include #include using namespace std; int main () { string str="Dao duc cao nhat cua con nguoi la gi?“ "Do chinh la long yeu nuoc."; string str2, str3; int pos; str2 = str.substr (0,33); // "Dao duc cao nhat cua con nguoi la" pos = str.find("long"); // vị trí của "long" trong str str3 = str.substr (pos); // lấy từ "long" đến hết xâu cout
  14. Lớp vector  Lớp vector là một kiểu cấu trúc dữ liệu mảng động, làm việc giống như mảng thông thường tuy nhiên có thêm khả năng tự động thay đổi kích cỡ khi chèn và loại bỏ đối tượng  vector có thể chứa được hầu hết các kiểu dữ liệu, thậm chí là các vector khác (vector của các vector)  Lớp vector cung cấp một tập các phương thức chuẩn để truy cập tới các phần tử, thêm các phần tử vào đầu hoặc cuối, xóa các phần tử và kiểm tra số phần tử được lưu trữ 14
  15. Khai báo vector  Để sử dụng lớp vector cần khai báo #include ở đầu chương trình  Các cách khai báo một vector 1. vector tên_vector; 2. vector tên_vector(so_pt); 3. vector tên_vector(so_pt, e); trong đó: - so_pt là biểu thức trả về số phần tử của vector - e là giá trị khởi tạo của các phần tử 15
  16. Khai báo vector  Ví dụ:  vector A; //Khai báo vector nguyên A, chưa có phần tử nào  vector data(20); //Khai báo vector data có 20 phần tử kiểu double:  vector B(10, 1.0); //Khai báo vector B gồm 10 phần tử kiểu double có giá trị khởi tạo là 1.0  vector C(10, ”Hi!”); //Khai báo vector C gồm 10 phần tử kiểu string có giá trị khởi tạo là “Hi!” 16
  17. Các thao tác cơ bản Phương thức Ngữ nghĩa v.assign(n, e) Thay thế nội dung của v bằng n bản sao của e v[i] hoặc v.at(i) Tham chiếu đến phần tử thứ i của vector v v.back() Tham chiếu đến phần tử cuối cùng của vector v v.clear() Làm rỗng vector v v.empty() Trả về true nếu vector v rỗng v.front() Tham chiếu đến phần tử đầu tiên của vector v v.pop_back() Xóa phần tử cuối cùng của vector v v.push_back(e) Ghép thêm phần tử e vào cuối vector v v.resize(newsSize) Đổi cỡ của vector v thành newSize v.size() Trả về số phần tử của vector v 17
  18. Nhập giá trị cho vector  Cách 1: Khai báo vector sau khi nhập số phần tử của vector int n; cout > n; vector A(n); cout
  19. Nhập giá trị cho vector  Cách 2: Khai báo vector, nhập số phần tử của vector, sau đó điều chỉnh kích cỡ vector cho phù hợp int n; vector A; cout > n; A.resize (n); cout
  20. Nhập giá trị cho vector  Cách 3: Nhập giá trị cho các phần tử của vector cho đến khi người dùng muốn dừng lại vector A; double x; char traloi; cout > traloi; while (traloi == 'y') { cout > x; A.push_back(x); //gắn giá trị vừa nhập vào cuối vertor cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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