Bài giảng Công nghệ phần mềm - Bài 2: Ngôn ngữ C++, các mở rộng so với C - Phạm Thị Bích Vân

1. Viết chương trình tính: 2. Nhập ma trận thực cấp mxn: Tìm phần tử lớn nhất Sắp xếp tăng dần In ma trận sau khi đã sắp xếp. 3. Xây dựng chương trình thao tác với phân số: nhập, in, tối giản, cộng, tích hai phân số 4. Xây dựng chương trình thao tác với vec tơ: Nhập 2 vec tơ In Tính tổng, tích hai vectơ

pptx54 trang | Chia sẻ: dntpro1256 | Lượt xem: 813 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ phần mềm - Bài 2: Ngôn ngữ C++, các mở rộng so với C - Phạm Thị Bích Vân, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 2: Ngôn ngữ C++ Các mở rộng so với C1Lịch sử phát triển của C++Được xây dựng trên nền của C.Phiên bản đầu tiên của C++ ra đời năm 1980 với tên là “C with classes”. Đến năm 1983 .Năm 1990, ANSI/ISO 9899 đã định nghĩa một chuẩn cho C.Năm 1998, ISO/IEC 14882 đã cụ thể hóa chuẩn cho C++2C++ và C C là tập con của C++.Tất cả các thư viện trong C đều có thể sử dụng trong C++.C++ cũng có cùng những yếu điểm như C (về con trỏ)Một số mở rộng của C++ so với C:Từ khóa mớiDữ liệu, khai báo biếnChuyển kiểu, tham chiếu, cấp phát bộ nhớ 3C++ và JavaJava là ngôn ngữ hoàn toàn hướng đối tượng. Tất cả các mã lệnh đều đóng gói trong các lớp.C++ là ngôn ngữ lai ghép. Nó hỗ trợ cả lập trình hướng chức năng và lập trình hướng đối tượng.Do vậy C++ mạnh hơn nhưng cũng khó kiểm soát hơn.4Nội dungPhân tích một ví dụ chương trình C++.Các kiểu dữ liệu, các toán tử, các hàm, vào ra (I/O).Các cấu trúc điều khiển.Các mảng, chuỗi, con trỏ.Một số mở rộng của C++ so với C.5Một chương trình cụ thể trên C++// Title: The program doing something#include void doSomething(int p);int main() { int p = 7; doSomething(p); cout , >=, >, ? :, ->, ., ,10Các toán tử trong C++Toán tử ++ and --:++ increment by 1-- decrement by 1 Chú ý rằng i++ và ++i được thực thi khác nhau.11Hàm (function) int someFunction(double f, char c) { // } 12NameBodyParameter ListReturn TypeHàm (function)Chú ý rằng các hàm được phân biệt bởi tên và danh sách các tham số. Các hàm sau là khác nhau.int exampleFunction(int i, char c);int exampleFunction(double f);int exampleFunction();int exampleFunction(char c, int i);Ngoài ra có sự khác nhau giữa biến truyền kiểu tham chiếu và biến truyền kiểu giá trị (giới thiệu phần sau)13Kiểu vào ra cơ bảnĐể xuất ra màn hình dùng hàm cout.cout > x;Khai báo thư viện#include 14Cấu trúc điều khiển – Rẽ nhánhThe if statement: if ( x > 0 ) { cout > x;switch(x) { case 1: doThis(); break; case 2: doThat(); break; case 3: doSomethingElse(); break; default: cout Tiết kiệm bộ nhớ.Hàm sẽ thao tác trực tiếp trên vùng nhớ của tham số -> Dễ dàng thay đổi giá trị của tham số khi cần.Ví dụ:void HoanVi( double &x, double &y){double tg=x;x=y;y=tg;}void main(){double a,b;cin>>a>>b;HoanVi(a,b);cout<<b<<a;}47Hàm trả về các tham chiếuHàm có thể có kiểu tham chiếu và trả về giá trị tham chiếuVí dụ:int z ;int &f() // Hàm trả về một bí danh của biến toàn cục z{ return z;}void main(void){f()=50; // z = 50 cout <<"\nz= " << z;getch();}48C++ _Một số mở rộng so với CStruct và unionTrong C++ tên của struct và union được xem luôn là tên kiểu giống như khai báo bằng lệnh typedefQuy định này cũng áp dụng cho cả union và enum. Tuy nhiên để tương thích với C, C++ vẫn chấp nhận cú pháp cũ49Trong C, chúng ta có thể có đoạn mã sau :struct Complex{ float Real; float Imaginary; };..struct Complex CTrong C++, vấn đề trở nên đơn giản hơn:struct Complex{float Real;float Imaginary; };..Complex C;C++ _Một số mở rộng so với CToán tử định phạm viToán tử định phạm vi ký hiệu là ::, nó được dùng truy xuất một phần tử bị che bởi phạm vi hiện thờiHàm inlineNhược điểm của hàm: Làm chương trình chậm hơn do phải thực hiện một số thao tác khi gọi hàm như: cấp phát vùng nhớ cho biến cục bộ, giải phóng vùng nhớ khi thoát khỏi hàm.Dùng hàm inline để khắc phục nhược điểm trênCú pháp:inline data_type function_name ( parameters ){}Chú ý khai báo hàm inline phải trước lời gọi hàm.Nguyên tắc thực hiện: Thay lời gọi hàm bằng đoạn chương trình thực hiện chức năng của hàm.50C++ _Một số mở rộng so với C Toán tử new và deleteTrong C tất cả các cấp phát bộ nhớ đều thông qua các hàm calloc(), malloc(), free(). Trong C++ việc cấp phát động bộ nhớ được thực hiện thông qua hai toán tử new và delete.Vd: int *p; p = new intNếu toán tử new cấp phát không thành công nó sẽ trả về giá trị null.Vừa cấp phát vừa khởi tạo giá trị ô nhớ. int *p; p = new int(100); // *p=100;Toán tử delete thay cho hàm free() của C delete p; Cấp phát một mảngint *P;P = new int[10];delete []p;51C++ _Một số mở rộng so với CCác giá trị tham số mặc địnhMột trong các đặc tính nổi bật nhất của C++ là khả năng định nghĩa các giá trị tham số mặc định cho các hàm. Xét ví dụ void MyDelay(long Loops); //prototypeChẳng hạn muốn gán giá trị mặc định cho tham số Loops là 1000. void MyDelay(long Loops = 1000); //prototypeMỗi khi gọi hàm MyDelay() mà không gởi một tham số tương ứng thì trình biên dịch sẽ tự động gán cho tham số Loops giá trị 100052C++ _Một số mở rộng so với C Phép nạp chồngNạp chồng hàmDùng cùng một tên để định nghĩa các hàm khác nhau.Dùng nạp chồng hàm khi nào?Thực hiện công việc như nhau trên các đối tượrg có kiểu khác nhau.Ví dụ:int TinhMax( int a, int b);int TinhMax( int a[], int n); Nạp chồng toán tử53Bài tập1. Viết chương trình tính: 2. Nhập ma trận thực cấp mxn:Tìm phần tử lớn nhấtSắp xếp tăng dầnIn ma trận sau khi đã sắp xếp.3. Xây dựng chương trình thao tác với phân số: nhập, in, tối giản, cộng, tích hai phân số4. Xây dựng chương trình thao tác với vec tơ:Nhập 2 vec tơInTính tổng, tích hai vectơ54

Các file đính kèm theo tài liệu này:

  • pptxbai2_c_morong_3782_1877386.pptx
Tài liệu liên quan