Tải bản đầy đủ (.pptx) (62 trang)

Bài giảng lập trình hướng đối tượng dùng c + +chương 2 giới thiệu ngôn ngữ c++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.95 MB, 62 trang )

Chương 2
Giới thiệu ngôn ngữ C+
+
TRẦN MINH THÁI
Email:
Website: www.minhthai.edu.vn
Cập nhật: 05 tháng 01 năm 2015
#2
Nội dung
1. Khái niệm cơ bản về ngôn ngữ C++
2. Một số thay đổi so với ngôn ngữ C
3. Một số bổ sung so với ngôn ngữ C
#3
Lịch Sử Của C++
C được phát minh trước 1970 bởi Dennis Ritchie
Ngôn ngữ cài đặt hệ thống cho hệ điều hành Unix
C++ được phát minh bởi Bijarne Stroustroup, bắt
đầu năm 1979, dựa trên ngôn ngữ C
Các chuẩn ngôn ngữ C++ hiện tại được điều khiển
bởi ANSI và ISO
#4
Đặc điểm C++
C

Đa dụng

Hiệu quả

Gần với ngôn ngữ
máy


Khả chuyển
C++
Các mở rộng

Tham chiếu

Overloading

Exception handling

Template


OOP

Lớp và đối tượng

Kế thừa

Đa hình


#5
Cấu trúc chương trình C++ cơ bản
#include <iostream.h>
int main (void)
{
cout << "Hello World\n";
}
Hello.cpp

Hello.cpp
Hello.obj
Hello.exe
C++
Program
C
Code
Object
Code
Execut-
able
C+ +
COMPILER
NAT IVE
C+ +
T RANSLAT OR
LINKER
C
COMPILER
C++
Program
#6
Những khác biệt & bổ sung so với C
Từ khoá
Chú thích
Kiểu dữ liệu
Kiểm tra kiểu, đổi kiểu
Cảnh báo của trình biên
dịch
Phạm vi và khai báo

Không gian tên
Cấp phát bộ nhớ
Tham chiếu
#7
Những từ khoá mới
 Thay đổi định danh trong chương trình C khi
chuyển qua C++ nếu trùng với keyword
asm catch class delete friend
inline new operator private protected
public template this throw try
virtual
#8
Bổ sung chú thích
Chú thích một dòng: //
Bao ngoài các chú thích một dòng: /* */
/*
//This is a variable
int x;
//This is the variable
//being given a value
x = 5;
*/
#9
Kiểu dữ liệu
Bổ sung kiểu Boolean: bool
Giá trị: true/ false
Các toán tử logic (!, &&, ||), phép toán quan hệ (>,
>=, <, <=, !=, ==)  giá trị kiểu bool

Các biểu thức điều kiện (if, while, for, do … while)

đòi hỏi phải là một giá trị kiểu bool
#10
Kiểu dữ liệu
Để tương thích ngược với C, C++ ngầm chuyển từ int
sang bool khi cần
Giá trị 0 → false
Giá trị ≠ 0 → true
#11
Kiểu dữ liệu
Kiểm soát kiểu dữ liệu chặt chẻ hơn C
Hàm phải được khai báo trước khi sử dụng
Không cho phép gán giá trị nguyên cho các biến kiểu enum

enum Temperature {hot, cold};

enum Temperature t = 1; //Error in C++

enum Temperature t = cold; //OK
#12
Kiểu dữ liệu
C++ không cho phép gán trực tiếp con trỏ không
kiểu (void *)

void * vp;

int *ip = vp; //Error in C++

int * ip = (int *) vp; //OK
#13
Dòng nhập/ xuất chuẩn (Standard I/O

stream)
Nhập: lấy dữ liệu từ bàn phím, file, …
Xuất: xuất kết quả lên màn hình, ra file, …
Sử dụng hai đối tượng (object stream)

cout (console output)

cin (console input)
#14
Dòng nhập/ xuất chuẩn
Sử dụng thư viện thông thường
#include <iostream.h>
void main()
{
int x, y;
cout<< "Nhap vao mot so x:";
cin>>x;
cout<< "Nhap vao mot so y:";
cin>>y;
cout<<"Tong cua chung:"<<x+y<<"\n";
cout<<"Hieu cua chung:"<<x-y<<"\n";
}
#15
Dòng nhập/ xuất chuẩn
Sử dụng thư viện theo không gian tên (namespace): C++
trên .Net
#include <iostream>
using namespace std;
void main()
{

int x, y;
cout<< "Nhap vao mot so x:";
cin>>x;
cout<< "Nhap vao mot so y:";
cin>>y;
cout<<"Tong cua chung:"<<x+y<<"\n";
cout<<"Hieu cua chung:"<<x-y<<"\n";
}
#16
Dòng nhập/ xuất chuẩn
cout là một đối tượng được định nghĩa trước trong
C++, tương ứng với dòng xuất chuẩn
Toán tử << là toán tử chèn, định hướng nội dung
cần hiển thị
Ví dụ
cout<<“Tong cua 2 so:”<<x+y<<endl<<“Hieu cua 2
so:”<<x-y<<endl;
!!! endl (end of line)
#17
Dòng nhập/ xuất chuẩn
cin là một đối tượng được định nghĩa trước trong
C++, tương ứng với dòng nhập chuẩn
Toán tử >> là toán tử trích, đưa nội dung từ dòng
nhập chuẩn vào biến
Ví dụ
cin>>x>>y;
#18
Xuất có định dạng
Thư viện iomanip.h hoặc iomanip (trên .Net)
cout<<setw(n)<<tênbiến;

 Xuất cách giá trị trước n-1 khoảng trắng
Ví dụ:
int a=7, b=9;
//Xuất giá trị b cách giá trị a 4 khoảng trắng
cout<<a<<setw(5)<<b;
#19
Xuất có định dạng
Xuất số thập phân gồm n-1 chữ số lẻ (phần thập phân)
cout<<setprecision(n);
Ví dụ:
float a=7.56745, b=5.339;
cout<<a<<endl;
cout<<setprecision(3)<<a<<endl;
cout<<setprecision(2)<<b<<endl;
cout<<setprecision(4)<<b;
Kết quả:
7.56745
7.57
5.3
5.339
#20
Phạm vi và khai báo
Cho phép khai báo biến ở bất kỳ vị trí nào trong
chương trình  Giới hạn phạm vi chính xác hơn
Bổ sung thêm phạm vi

Phạm vi không gian tên (namespace scope)

Phạm vi lớp (class scope)
#21

Chuyển kiểu dữ liệu
Tự động chuyển kiểu từ kiểu có giá trị thấp thành
kiểu có giá trị cao hơn cho phù hợp với phép toan
char

short

int

long

float

double
Tuy nhiên nếu chuyển ngược lại có thể gây mất dữ
liệu  TBD sẽ sinh warning đối với các trường
hợp này
#22
Chuyển kiểu dữ liệu
Chuyển kiểu

C: float x = (float) 3/4;

C++: float x = float(3)/4;

Để hạn chế các lỗi, C++ cung cấp một cách mới sử
dụng 4 loại chuyển kiểu tường minh:

static_cast



reinterpret_cas
t
 const_cast  dynamic_cast
float x = static_cast<float>(3)/4;
#23
Hằng số (const)
C định nghĩa nghĩa hằng bằng tiền xử lý #define, hạn
chế:
Biên dịch chậm hơn (do trình tiền xử lý tìm và thay
thế)
Không gắn được kiểu dữ liệu với giá trị hằng
Trình debug không biết đến tên hằng
#24
Hằng số
const của ANSI C ít dùng hơn và có ý nghĩa khác:
Không dùng để khai báo mảng
//Error in C
const int SIZE=100;
int a[SIZE];
//OK in C++
const int SIZE=100;
int a[SIZE];
#25
Toán tử định phạm vi (scope resolution
oprator)
Ký hiệu: ::
Công dụng: truy xuất đến phần tử bị che khuất bởi
phạm vi hiện thời
int x=5;

void main()
{
int x=16;
cout <<"Bien x toan cuc:"<<x;
cout<<"Bien x trong ham main:"<<x;
cout<<"Bien x toan cuc:"<<::x;
}

×