1
Chương 2:
NGÔN NGỮ C++
Giáo viên: Võ Hồng Bảo Châu
Khoa CNTT trường ĐH Lạc Hồng
LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
MỤC TIÊUMỤC TIÊU
Sử dụng được một trình biên dịch C/C++ nào đó để viết
chương trình.
Viết được chương trình cơ bản dùng các cấu trúc điều
khiển trên các kiểu dữ liệu cơ bản
2OOP-CHƯƠNG 2-NGÔN NGỮ C++
NỘI DUNG CHI TIẾTNỘI DUNG CHI TIẾT
Khái quát về ngôn ngữ C++
Kiểu dữ liệu bản, phép toán
Nhập xuất dữ liệu
Các cấu trúc điều khiển
Hàm
Mảng và mẫu tin
Con trỏ và tham chiếu
Nhập xuất và tập tin
3OOP-CHƯƠNG 2-NGÔN NGỮ C++
KHÁI QUÁT VỀ C++KHÁI QUÁT VỀ C++
1970, Denis Ritchie (Bell Lab.) phát triển ngôn ngữ C.
Dạng System Implementation Language (SIL)
Phát triển từ ngôn ngữ CPL (Combined Programming Language),
BCPL (Basic CPL) và ngôn ngữ B.
Brian Kernighan, D. Ritchie (1978), The C Programming
Language, Prentice-Hall
4OOP-CHƯƠNG 2-NGÔN NGỮ C++
2
KHÁI QUÁT VỀ C++KHÁI QUÁT VỀ C++
Đầu 1980, Bjarne Stroustrup phát triển ngôn ngữ C++
Trên sở ngôn ngữ Simula 67
Tương thích hoàn toàn với C
Mở rộng C với cấu trúc OOP
Tên gi “C with Classes”
m 1983, Ricj Mascitti đề nghị C++
Bjarne Stroustrup (1985), The C++ Programming Language,
Prentice-Hall
5OOP-CHƯƠNG 2-NGÔN NGỮ C++
CẤU TRÚC CHƯƠNG TRÌNH C++CẤU TRÚC CHƯƠNG TRÌNH C++
C++
Program
C
Code
Object
Code
Execut-
able
C++
COMPILER
NATIVE
C++
TRANSLATOR
LINKER
C
COMPILER
C++
Program
Hello.cpp
Hello.obj
Hello.exe
#include <iostream.h>
void main (void)
{
cout << "Hello World\n";
}
Hello.cpp
6OOP-CHƯƠNG 2-NGÔN NGỮ C++
MỞ RỘNG CỦA C++MỞ RỘNG CỦA C++
Biến, đối tượng:
thể khai báo bất kỳ vị trí nào (trước khi sử dụng)
Khai báo biến còn mang ý nghĩa thực thi câu lệnh, tạo đối tượng
Sử dụng ghi chú
Cách 1: /* Nội dung ghi chú*/
Cách 2: //Dòng ghi chú
7OOP-CHƯƠNG 2-NGÔN NGỮ C++
Khai báo hằng số
Cách 1: #define Tên_hằng Giá_trị
Cách 2: const Kiểu_dl Tên_hng = Giá_trị
Trong cách 1:
Không xác định được kiểu d liu của hằng số
Giá trị hằng không thể cấu trúc
Không thể xác định địa chỉ của hằng
Trong cách 2:
Kiu dữ liệu của hằng số được xác định
Giá trị hằng thể có cấu trúc
thể xác định địa chỉ của hng
8OOP-CHƯƠNG 2-NGÔN NGỮ C++
3
LỆNH ĐƠN & LỆNH PHỨCLỆNH ĐƠN & LỆNH PHỨC
Lệnh đơn một
sự tính toán được
kết thúc bằng dấu
chấm phẩy.
Nhiều lệnh đơn có
thể kết nối lại
thành một lệnh
phức bằng cách
rào chúng bên
trong các dấu
ngoặc xoắn.
{
int min, i = 10, j = 20;
min = (i < j ? i : j);
min + 5;
cout << min << '\n';
;
}
Ví d:
Lnh rng Lnh vô dng
9OOP-CHƯƠNG 2-NGÔN NGỮ C++
NHẬP XUẤT DỮ LIỆUNHẬP XUẤT DỮ LIỆU
C++ cung cấp các lệnh nhập xuất dữ liệu trong thư
viện <iostream.h>, trong đó có các đối tượng
Để lấy dữ liệu từ bàn phím vào biến ta dùng lệnh sau:
cin>>Biến 1>>Biến 2>>....;
Toán tử >> của đối tượng cin lấy dữ liệu từ bàn phím đặt
vào biến bên phải theo thứ tự
Với lệnh này, khi nhập g trị cho các biến thì giữa các g
trị phải phân cách nhau bằng Enter hoặc Space hoặc Tab
dụ: cin >> intVar >> floatVar;
10 OOP-CHƯƠNG 2-NGÔN NGỮ C++
NHẬP XUẤT DỮ LIỆUNHẬP XUẤT DỮ LIỆU
Để nhập dữ liệu cho một chuỗi n ký tự
Hàm cin.getline(Tên_biến,Số_ký_tự_tối_đa) trong đó:
Tên_biến: tên của biến chuỗi
Số tự tối đa mà biến chuỗi có thể nhận
dụ: char hoten[30]; cin.getline(hoten,30);
Hàm cin>> để lại ký tự “\n” trong bộ đệm có thể làm trôi
phương thức cin.getline()
khắc phục: dùng cin.ignore(1) để bỏ qua ký tự “\n”
11 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Để đưa dữ liệu ra màn hình ta ng lệnh sau:
cout<<Biểu thức1<<Biểu thức 2<...;
Toán tử << sẽ đưa giá trị các biểu thức bên phải tới
màn hình.
Muốn đặt con trỏ màn hình xuống đầu dòng tiếp theo ta
phải đưa ra tự xuống dòng ’\n’ hoặc dùng endl
cout<<Biểu thức<<’\n’;
dụ:cout<<a<<c+b<<’\n’; cout<<100<<endl;
12 OOP-CHƯƠNG 2-NGÔN NGỮ C++
4
DỤ NHẬP XUẤTDỤ NHẬP XUẤT
13 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Các hàm xử nhập xuất: thư viện “iomanip.h”
Để thiết lập đ rộng cho giá trị cần in
Hàm cout.width(Số_cột)
Hàm setw(Số_cột)
dụ: cout<<setw(5)<<X;
Để hiển thị số thực
Hàm setf(c hiệu)
Hàm precision(n) thiết lập
n số phần l thập phân
dụ: cout.setf(ios::showpoint)
cout.precision(2)
showpoint dấu của các biến kiểu số
hex In ra số dưới dạng hexa
dec In ra số dưới dạng số 10
oct In ra số dưới dạng số 8
left Căn lề bên trái
right Căn lề bên phải
internal Căn lề giữa
14 OOP-CHƯƠNG 2-NGÔN NGỮ C++
#include <iostream.h>
main(){
int age;
cout << "When were you born? ";
cin >> age;
cout << "After 10 years, you will be "
<< 2008 age + 10 << "years old\n"
return 1;
}
15 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Phép toán gán
int y, x;
y = (x = 100);
Hay
y = x = 100;
16 OOP-CHƯƠNG 2-NGÔN NGỮ C++
5
int n, m = 10;
n = m++;
cout << n++ << endl;
int n,m = 10;
n = ++m;
cout << ++n << endl;
int n, m = 10;
n = m;
m = m + 1;
cout << n << endl;
n = n + 1;
int n,m = 10;
m = m + 1;
n = m;
n = n + 1;
cout << n << endl;
Phép toán tăng, gim
17 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Phép toán điều kiện
if ( a > 100.0 )
m = 5;
else m = a > 100.0 ? 5 : a + 10;
m = a + 10;
if ( a > b )
max = a; max = a > b ? a : b;
else
max = b;
18 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Độ ưu tiên phép toánĐộ ưu tiên phép toán
Phép
toán
Mô tả Ưu tiên Thứ tự trong
biểu thức
Toán
hạng
dụ
:: Truy cập biến toàn cục 17 Phải sang 1 ::x
:: Phân định thành phần của lớp 17 Trái sang 2 NAME::x
.Truy cập thành phần của đối tượng
hay mẩu tin
16 - nt - - nt - obj.n
-> Truy cập đến thành phần của con trỏ
đối tượng (hoặc mẩu tin)
16 - nt - - nt - obj->n
[] Truy cập chỉ số 16 - nt - - nt - a[i]
() Gọi hàm 16 - nt -
() Chuyển đổi kiểu 16 - nt - int(ch)
++ Tăng sau 16 Phải sang 1 n++
-- Giảm sau 16 - nt - - nt - n--
19 OOP-CHƯƠNG 2-NGÔN NGỮ C++
Phép
toán
Mô tả Ưu
tiên
Thứ tự trong
biểu thức
Toán
hạng
dụ
sizeof Kích thước của đối tượng
hoặc của kiểu dữ liệu
15 - nt - - nt - sizeof(a)
++ Tăng trước 15 - nt - - nt - ++n
-- Giảm trước 15 - nt - - nt - --n
~Bitwise NOT 15 - nt - - nt - ~s
!Phủ định 15 - nt - 1 !q
+Chuyển thành dương 15 - nt - - nt - +n
-Chuyển thành âm 15 - nt - - nt - -n
*Lấy giá trị tại địa chỉ 15 Phải sang - nt - *ptr
&Truy cập địa chỉ 15 - nt - - nt - &x
20 OOP-CHƯƠNG 2-NGÔN NGỮ C++