CHƯƠNG 2: NHỮNG VẤN ĐỀ
CƠ BẢN TRONG C++
1. Cấu trúc chương trình
Xét ví dụ sau:
#include <iostream>
using namespace std;
int main()
{
cout << “Hello world \n”;
return 0;
}
•#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 /* */.
/>
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;
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
Kiểu dữ liệu đơn giản …
Type Low High Bytes
char -128 127 1
short -32768 32767 2
int -2147483648 2147483647 4
long -2147483648 2147483647 4
float 3.4x10
-38
3.4x10
38
4
double 1.7x10
-308
1.7x10
308
8
long
double
3.4x10
-4932
3.4x10
4932
10
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;
}
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
3. Toán tử
Toán tử toán học
Toán tử quan hệ
Toán tử logic
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;
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
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;
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
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
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;
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;
}
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.
myprog.cpp
somelib.h
myprog.h
#include <somelib.h>
#include ”myprog.h”
myprog.obj
myprog.exe
cs.lib
user header file
compiler
linker
library header file
library fileobject file
executable file
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
Vòng lặp for
increment expressiontest expressioninitialization expression
for ( i=0; i<15; i++ )
initialization
expression
body of loop
increment
expression
test
expression exit
true
false
• 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
}
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;
}
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;
}
Vòng lặp while
test expressionwhile ( c != ’y’ )
{
…
}
body of loop
test
expression
exit
true
false
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’);
Vòng lặp do
body of loop
test expression
do
{ … }
while ( c != ’y’ );
test
expression exit
true
false
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;