1 / 42

CHƯƠNG 2: NHỮNG VẤN ĐỀ CƠ BẢN TRONG C++

CHƯƠNG 2: NHỮNG VẤN ĐỀ CƠ BẢN TRONG C++. 1. Cấu trúc chương trình. #include: yêu cầu chương trình dịch chèn thêm file vào mã nguồn. using namespace cout nằm trong namespace std; Hàm main() Câu lệnh: kết thúc bởi dấu “;”

willow
Télécharger la présentation

CHƯƠNG 2: NHỮNG VẤN ĐỀ CƠ BẢN TRONG C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHƯƠNG 2: NHỮNG VẤN ĐỀ CƠ BẢN TRONG C++

  2. 1. Cấu trúc chương trình • #include: yêu cầu chương trình dịch chèn thêm file vào mã nguồn. • using namespace • cout nằm trong namespace std; • Hàm main() • Câu lệnh: kết thúc bởi dấu “;” • Câu chú thích: Câu chú thích bắt đầu bằng dấu // hoặc nằm trong /* */. • Xét ví dụ sau: #include <iostream> using namespace std; int main() { cout << “Hello world \n”; return 0; } http://www.uniqueness-template.com/devcpp/

  3. 2. Biến • Phải khai báo biến trước khi sử dụng • Có thể khai báo biến ở mọi nới trong chương trình • Tên biến • Phân biệt chữ hoa, chữ thường • Sử dụng các ký tự từ a-z, 0-9 và dấu “_” • Ví dụ: • int var1; • int var2=10;

  4. Kiểu dữ liệu đơn giản • Kiểu nguyên: int, long, short • Kiểu ký tự: char – lưu mã ASCII của ký tự • Ký tự nằm trong dấu ‘’. Ví dụ: ‘a’ • Ký tự đặc biệt: \n, \tab, \\, \’, \”, … • Kiểu không dấu: unsigned char, unsigned int, unsigned short, unsigned long • Kiểu dấu phẩy động: float, double, long double • Kiểu bool: có giá trị True/False

  5. Kiểu dữ liệu đơn giản …

  6. Kiểu string • string không phải là kiểu cơ bản trong C++ • string được định nghĩa trong lớp chuẩn string #include <iostream> #include <string> using namespace std; int main () { string mystring; mystring = "This is the initial string content"; cout << mystring << endl; mystring = "This is a different string content"; cout << mystring << endl; return 0; }

  7. Biến hằng (Constant Variables) • Giá trị của hằng không thay đổi. • Có 2 cách khai báo hằng: • const float PI=3.14; • #define PI 3.14 • Định nghĩa ở đầu chương trình • Không xác định kiểu của PI

  8. 3. Toán tử • Toán tử toán học • Toán tử quan hệ • Toán tử logic

  9. Toán tử toán học • +, -, *, /, % • int i = 1/3; // kết quả i = 0 • float x = 1.0/3; // kết quả x=0.3333 • int j = 7 % 3; // kết quả j=1 • ++, -- int i=3; int j=7; • cout << 10 * i++; // hiển thị 30, sau đó i=4 • cout << 10 * ++j; // hiển thị 80, sau đó j=8 • +=, -=, *=, /= float x=6.0; x+=3.5; tương tự x=x+3.5;

  10. Toán tử quan hệ • So sánh 2 giá trị. • Kết quả trả về là true hoặc false • >, <, ==, !=, >=, <= • Ví dụ: int x=44; int y=12; (x == y) // false (x >= y) // true (x != y) // true

  11. Toán tử logic • logical and : && • (x >= 5) && ( x <= 15) // true nếu x nằm trong [5,15] • logical or : || • (x == 5) || ( x == 10) // true nếu x=5 hoặc x=10 • logical negation : ! • ! (x == 5) // true nếu x khác 5 • Tương tự x != 5 • Toán tử điều kiện (conditional operator) : ? … : • <condition> ? <true expression> : < false expression> • Ví dụ: • min = (alpha<beta) ? alpha : beta; • Tương tự if (alpha < beta) min = alpha; else min = beta;

  12. 4. Thao tác vào/ra chuẩn • Sử dụng đối tượng stream để thực hiện các thao tác input/output • Được khai báo trong header file iostream

  13. Sử dụng cout • cout là một đối tượng được định nghĩa trước trong C++, tương ứng với luồng ra chuẩn (standard output stream). • Toán tử << là toán tử chèn, định hướng nội dung cần hiển thị. • Ví dụ: string str=”Hello world”; int i=8; cout << str << endl; // endl (hoặc \n) là dấu hiệu xuống dòng. cout << ”i=” << i << endl; • Để định dạng nội dung hiển thị, sử dụng setw (nằm trong iomanip) • cout<< setw(12) << str << setw(5) << i; • Kết quả: Hello world 8

  14. Sử dụng cin • cin là toán tử được định nghĩa trước trong C++, tương ứng với luồng vào chuẩn (standard input stream). • Toán tử >> đưa nội dung từ luồng vào chuẩn vào biến. • Ví dụ: • int temperature; cout << ”Enter temperature in Celsius: ”; cin >> temperature; • int a,b; cin>>a>>b; // tương đương cin>>a; cin>>b;

  15. cin và string cin>>mystring • cin dừng khi nhập dấu cách • Để lưu cả dòng khi nhập, sử dụng getline #include <iostream> #include <string> using namespace std; int main () { string mystr; cout << "What's your name? "; getline (cin, mystr); cout << "Hello " << mystr << ".\n"; cout << "What is your favorite team? "; getline (cin, mystr); cout << "I like " << mystr << " too!\n"; return 0; }

  16. Header File và Library File • Một số nhiệm vụ được thực hiện bởi Library Function. • Header File chứa khai báo các hàm mà ta cần sử dụng trong chương trình. • Ví dụ: • #include <math.h> • #include ”myprog.h” • <>: yêu cầu chương trình dịch tìm từ thư mục chuẩn. • ” ” : yêu cầu chương trình dịch tìm từ thư mục hiện tại. • Nếu không include Header File thích hợp thì chương trình dịch sẽ báo lỗi.

  17. library header file #include <somelib.h> myprog.cpp somelib.h user header file #include ”myprog.h” myprog.h compiler object file library file myprog.obj cs.lib linker executable file myprog.exe

  18. 5. Các câu lệnh • Vòng lặp • Rẽ nhánh • Một số lệnh điều khiển khác

  19. initialization expression false test expression exit true body of loop increment expression Vòng lặp for for ( i=0; i<15; i++ ) initialization expression test expression increment expression • Có thể đặt nhiều biểu thức trong các phần của vòng for ( ; ; ); các biểu thức đó cách nhau bởi dấu phẩy. • Ví dụ: • for(int j=0, float alpha=100.0; j<50; j++, alpha--) • { • // body for • }

  20. Vòng lặp for ... int i; for (i=1; i<=15; i++) // thân vòng lặp for có 1 lệnh cout << i*i << ” ”; cout << endl; for (i=1; i<=15; i++) // thân vòng lặp for có nhiều lệnh { cout << setw(4) << i << ” ”; // setw(n) gán kích thước của trường hiển thị bằng n int cube = i*i*i; cout << setw(6) << cube << endl; }

  21. Vòng lặp while • Vòng lặp while được sử dụng khi không biết trước số lần lặp. • Lặp cho đến khi biểu thức kiểm tra vẫn có giá trị True. • Ví dụ: • char c=’n’; • while ( c != ’y’) • { • cout << ”Do you want to continue: (y/n)” << endl; • cin >> c; • }

  22. while ( c != ’y’ ) { … } test expression false test expression exit true body of loop Vòng lặp while ...

  23. Vòng lặp do • Trong vòng lặp do, biểu thức kiểm tra được đánh giá ở cuối vòng lặp. • Thân vòng lặp được thực hiện ít nhất một lần. • Ví dụ: • char c; • do • { • cout << ”Do you want to continue: (y/n)” << endl; • cin >> c; • } • while ( c != ’y’);

  24. do { … } while ( c != ’y’ ); test expression body of loop false test expression exit true Vòng lặp do ...

  25. If … Else • Phụ thuộc vào điều kiện kiểm tra là true hay false • để quyết định nhánh thực hiện • Ví dụ: • int x; • cout << ”Enter a number: ”; • cin >> x; • if ( x > 100) • cout << x << ” is greater than 100” << endl; • else • cout << x << ” is not greater than 100” << endl;

  26. test expression if ( x > 100) { … } else { … } test expression false true body of if body of else exit If … Else

  27. Lệnh switch • Lệnh switch được sử dụng khi có nhiều nhánh rẽ • phụ thuộc vào giá trị của cùng một biến. • switch(<variable>) • { • case <constant1>: • … • break; • case <constant2>: • … • break; • default : • … • }

  28. Lệnh switch ... char c; cout << ”Enter your choice (a/b/c) : ”; cin >> c; switch (c) { case ’a’: cout << ”You picked a!” << endl; break; case ’b’: cout << ”You picked b!” << endl; break; case ’c’: cout << ”You picked c!” << endl; break; default: cout << ”You picked neither a,b,c !” << endl; }

  29. true variable equals const 1 first case body false variable equals const 2 true second case body false default body exit Lệnh switch ...

  30. Một số lệnh điều khiển khác • break: thoát khỏi vòng lặp hoặc switch • continue: trở lại đầu vòng lặp. • goto: nhảy tới một nhãn xác định

  31. 6. Kiểu dữ liệu cấu trúc • Structure là một tập hợp các biến đơn giản, tương tự như record trong Pascal. • Khai báo Structure: struct part { int modelnumber; int partnumber; float cost; }; • Định nghĩa biến kiểu Structure: part part1; • Khởi tạo các thành phần của Structure: part part1={6244, 373, 217.55}; • Truy cập vào các thành phần của Structure part1.modelnumber = 6244; part.modelnumber = 6244; //sai • Hai biến cùng kiểu structure có thể gán cho nhau part part2; part2=part1;

  32. Structure lồng • Thành phần của Structure có thể là một structure khác. struct Distance struct Room { { int feet; Distance length; float inches; Distance width; }; }; • Truy cập vào các thành phần của Structure lồng Room dining; dining.length.feet=13; • Khởi tạo Structure lồng: Room dining = {{13, 6.5}, {10, 0.0}};

  33. 7. Kiểu liệt kê (Enumeration) • Định nghĩa enum: enum days_of_week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; • Khai báo biến kiểu enum days_of_enum day1, day2; • Giá trị của các biến kiểu enum là những giá trị mà enum đã định nghĩa trước. • Các giá trị của enum được lưu dưới dạng số nguyên, bắt đầu từ 0. • Ta có thể thay đổi giá trị nguyên của giá trị đầu trong enum enum days_of_week {Sun=1, Mon, Tue, Wed, Thu, Fri, Sat}; days_of_enum day=Mon; cout << day; // Hiển thị 2

  34. 8. Hàm • Khai báo hàm xác định tên hàm, kiểu trả về, và các tham số cần thiết trong lời gọi hàm. • Khai báo hàm thường nằm trong Header File (.h) • Định nghĩa hàm chứa thân hàm. • Định nghĩa hàm thường nằm trong source file (.cpp) • Ví dụ • int fac(int); // function declaration • int fac(int n) // function definition { int result=1; for (int i=1; i<=n; i++) result*=i; return result; } • int x=7; cout << ”fac(” << x <<”)=” << fac(x); // call to a function;

  35. Truyền trị (Passing by Value) • Khi truyền trị, hàm sẽ tạo ra một biến cục bộ để lưu giá trị của biến được truyền. • Giá trị của biến được truyền không thay đổi. • Ví dụ: void f(int val) { val++; } int x=4; f(x); cout << x; // x = 4

  36. Truyền tham chiếu (Passing by Reference) • Tham chiếu cung cấp bí danh (alias) cho biến. • Khi truyền tham số theo kiểu tham chiếu thì biến cục bộ là bí danh của biến được truyền. • Địa chỉ của biến được truyền cho hàm. • Hàm có thể truy cập trực tiếp trên biến được truyền. • Ví dụ: void swap (int & a, int& b) { int tmp; tmp = a; a = b; b = tmp; } int x=3; int y=5; swap(x,y); // a,b là bí danh của x,y

  37. Tham số hằng • Tham chiếu hằng không cho phép hàm thay đổi giá trị của biến được truyền. • Ví dụ: void f( int& a, const int& b ) // b là tham số hằng { a=5; // ok b=7; // fail }

  38. Hàm có tham số mặc định #include <math.h> double logn (double x, double base=10) // mặc định gán base = 10 { return log(x)/log(base); } double y=5.6; cout << ”log(y) = ” << logn(y) << endl; // sử dụng giá trị mặc định cout << ”ln(y) = ” << logn(y,2.71828) << endl; // base = e cout << ”ld(y) = ” << logn(y,2) << endl; // base = 2

  39. Hàm không có kiểu trả về • Sử dụng kiểu void • void cũng được sử dụng để khai báo hàm không có tham số. #include <iostream> using namespace std; void printmessage () { cout << "I'm a function!"; } int main () { printmessage (); return 0; } void printmessage (void) { cout << "I'm a function!"; }

  40. main() main() …. …. Function1() …. …. Function1() …. …. Function1() …. …. …. …. …. …. …. …. Function1() …. …. Inline Fuction …. …. …. …. void Function1(); inline void Function1(i);

  41. Chồng hàm (Overloaded Function) • Hàm chồng thực hiện các nhiệm vụ khác nhau phụ thuộc vào các tham số truyền. • Ví dụ: void print(int a) // in số nguyên { cout << ”integer : ” << a; } void print(string s) // in xâu ký tự { cout << ”string : ” << s; } int x=4; print(x); string st=“Hello”; print(st);

  42. Phạm vi của biến • Một khối lệnh (block) nằm trong dấu { … } • Phạm vi của biến là khối lệnh mà biến được khai báo • Biến được khai báo ở ngoài hàm là biến toàn cục (global variable), ở trong hàm là biến cục bộ (local variable).

More Related