Ề ƯƠ

Ọ Ớ

Đ  C

NG ÔN T P MÔN TIN H C L P 11

ữ ậ ệ ậ 1. Khái ni m l p trình và ngôn ng  l p trình.

 Khái ni m l p trình. ệ

ữ ậ ạ ợ

 Các lo i NNLT: Ngôn ng  máy, h p ng , NNLT b c cao ữ

ợ ị ị ị

 Trình H p d ch, Biên d ch, Thông d ch

ầ ủ 2. Các thành ph n c a NNLT

ầ ơ ả ữ ữ

 Các thành ph n c  b n: b ng ch  cái, cú pháp, ng  nghĩa ả

ệ ừ ặ ẩ

 Khái ni m: t

khóa, tên chu n, tên dành riêng – cách đ t tên

ệ ế ằ

 Khái ni m h ng, bi n.

ố ự ạ ằ ằ ằ ằ ố ự ự ằ

 Có 4 lo i h ng: h ng s  nguyên, h ng s  th c, h ng kí t

/xâu kí t , h ng logic.

ệ ặ ạ

 Khái ni m chú thích, các cách đ t chú thích: //dòng chú thích, /* đo n chú thích*/ ấ

ươ ng trình 3. C u trúc ch

ầ ầ ấ ầ ươ

 C u trúc chung: có 2 ph n g m ph n khai báo và ph n thân ch ồ

ng trình

ầ ươ ắ ầ ằ

 Ph n thân ch

ng trình b t đ u b ng hàm main:

int main() {

các câu lệnh; return 0;

}

 Ph n khai báo:

ư ệ ư ệ : #include 

 Khai báo th  vi n

ư ệ

ữ ệ

ư

L u ý thêm các hàm đ nh d ng in d  li u khác trong th  vi n iomanip

// tương tự cout.width(n)

// tương tự cout.precision(n)

ệ ầ ề #include 

ể ử ụ Đ  s  d ng các hàm này c n khai báo t p tiêu đ   setw(n) setprecision(n)

Ví d :ụ

ố ậ Làm tròn s  th p phân trong C++:

ấ C u trúc:

cout<

ế ệ ầ ậ ầ ố ỏ ẽ

#include // cau lenh goi tat ca thu vien trong C/C++ using namespace std; int main(){ float n, m, a; cout<<"Nhap n: "; cin>>n;

ế ầ ậ trong đó n là s  ph n th p phân c n làm tròn. N u b  qua l nh fixed thì khi làm tròn s ị không làm tròn đ n ph n th p phân không còn giá tr .

kiểu_dữ_liệu tên_hằng = giá_trị_hằng ;

cout<<"Nhap m: "; cin>>m; a=n/m; cout<<"\n Ket qua la: "< tên_hằng giá_trị_hằng ; ho c:           Ví d : ụ #define sohs 50 ;

const int sohs = 50 ; const int CHIEUDAI = 10; const int CHIEURONG = 5;

 Khai báo bi n: ế ở ạ a. Khai báo không kh i t o

tên_biến_1 ; tên_biến_2 ; tên_biến_3 ;

ế ề ể ộ c khai báo trên cùng m t dòng:

ể ượ Nhi u bi n cùng ki u có th  đ tên_biến_1, tên_biến_2, tên_biến_3 ;

ở ạ b. Khai báo có kh i t o

ể ượ ệ ế ầ ở Trong câu l nh khai báo, các bi n có th  đ ị c gán ngay giá tr  ban đ u b i phép

toán gán (=) theo cú pháp: tên_biến_1 = gt_1, tên_biến_2 = gt_2, tên_biến_3 = gt_3;

ứ ể ế ể ằ ặ ị

const int n = 10 ; int main() {

// khai báo biến nguyên I, j, k và khởi tạo I bằng 2, k bằng 15 int I = 2, j , k = n + 5; // khai báo biến thực eps và khởi tạo bằng 10-6 float eps = 1.0e-6 ; // khai báo biến kí tự c và khởi tạo bằng ‘Z’ char c = ‘Z’; // khai báo xâu kí tự d và khởi tạo d bằng “Tin học” char d[100] = “Tin học”;

}

trong đó các giá tr  gt_1, gt_2, gt_3 có th  là các h ng, bi n ho c bi u th c. Ví d :ụ

ệ ự ủ

ế

c. Ph m vi hi u l c c a bi n

ộ ậ ư ệ ợ

ụ ứ ế ế ộ ơ ộ

ế ử ụ ượ ệ ế

ư ạ ố ệ ươ ộ ử ụ ượ ở ư ươ ế t ch Nh  đã bi ng trình là m t t p h p các hàm, các câu l nh cũng nh  các khai báo. ệ ự ủ Ph m vi hi u l c c a m t bi n là n i mà bi n có tác d ng. T c là bi n thu c hàm hay ệ ấ c phép s  d ng bi n đó? M t bi n xu t hi n trong kh i l nh nào? Câu l nh nào đ ở ể ượ ử ụ c b i hàm khác ch ế c s  d ng b i hàm này nh ng không s  d ng đ ng trình có th  đ

ặ ể ử ụ ụ ế ề ặ ộ

ở ả ầ ắ ể ừ ị ụ ộ ơ ị ượ  v  trí nó đ ượ   c   c khai báo

ố ệ ứ ế ế ẽ ho c có th  s  d ng b i c  hai, đi u này ph  thu c ch t ch  vào v  trí n i bi n đ ế ẽ khai báo. M t nguyên t c đ u tiên là bi n s  có tác d ng k  t cho đ n h t kh i l nh ch a nó.

ế

ị d. Gán giá tr  cho bi n

ụ ướ ư ượ Trong các ví d  tr c chúng ta đã s  d ng phép gán dù nó ch a đ ơ   c trình bày, đ n

ế ả ạ ộ ộ ử ụ ị ớ gi n m t phép gán mang ý nghĩa t o giá tr  m i cho m t bi n.

ị ớ ượ ế ị ấ ể ướ đ ng xoá đi b t k  tr c đó nó

Khi bi n đ ị ư ứ ư ẽ ượ ự ộ c gán giá tr  m i, giá tr  cũ s  đ c t ủ ị ặ ch a giá tr  nào (ho c ch a có giá tr ). Cú pháp c a phép gán nh  sau:

ị ủ ứ ẽ ể ế ả ặ

= ; ng trình s  tính toán giá tr  c a bi u th c bên v  ph i và gán

// khởi tạo I bằng 3

// gán cho n giá trị 10

// in ra: 10, 3

// gán lại giá trị của I bằng n/2 = 5

// in ra: 10, 5

Khi g p phép gán ch ế ở ế ị ươ  v  trái.

ườ ư ớ V i ý nghĩa thông th

L u ý:  ị ả ạ ộ ộ

ợ ụ ứ ể

ị ở ề ậ giá tr  này cho bi n   Ví d : ụ int n, I = 3; n = 10; cout << n <<”, “ << I << endl; I = n / 2; cout << n <<”, “ << I << endl; ủ ộ   ạ i m t ng c a phép toán (nghĩa là tính toán và cho l ị ả ạ ủ   ị ụ ữ ệ giá tr ) thì phép toán gán còn m t nhi m v  n a là tr  l i m t giá tr . Giá tr  tr  l i c a ả ấ ề ị ủ phép toán gán chính là giá tr  c a bi u th c bên ph i d u gán. L i d ng đi u này C++ cho   ộ ế phép chúng ta gán “kép” cho nhi u bi n nh n cùng m t giá tr  b i cú pháp:

ế ẽ

t c  các bi n s  nh n cùng giá tr

ị gt.

biến_1 = biến_2 = … = biến_n = gt ; ậ ấ ả ớ v i cách gán này t Ví d : ụ int I, j, k ; I = j = k = 1; ệ

ư ượ ấ ệ c phép xu t hi n trong b t k Ngoài vi c gán kép nh  trên, phép toán gán còn đ

ộ ể ể ứ ỉ

ị ứ ụ n = 3 + (I = 2) s  cho ta

ệ ọ ơ

ộ ở ộ ư ệ ẳ ứ ọ ng h p) nh ng cũng tr  nên khó đ c, ch ng h n câu l nh trên có th  vi

ể ế ớ ắ ầ ẽ ễ ọ ơ ấ ố ớ ợ ệ ạ

ể ấ ỳ  ứ ề bi u th c nào, đi u này cho phép m t bi u th c ch a phép gán, nó không ch  tính toán mà   ệ ử ụ   ẽ ế I = 2 và n = 5. Vi c s  d ng còn gán giá tr  cho các bi n, ví d   ộ   ươ ề ng trình g n gàng h n (trong m t nhi u ch c năng g p trong m t câu l nh làm cho ch ạ ố ườ   s  tr t tách I = 2; n = 3 + I; s  d  đ c h n ít nh t đ i v i các b n m i b t đ u tìm   thành 2 câu l nh:  ề ậ hi u v  l p trình.

ộ ố ể ữ ệ

4. M t s  ki u d  li u chu n

ế

ộ ố

M t bi n trong ch ế

ế ươ ng trình là m t s  ô nh  liên ti p nào đó trong b  nh  dùng đ  l u tr ạ ộ ả

ể ử ụ

ữ ệ

ể ớ ẽ

ể ữ ệ

ỉ ộ

ề ậ

ế

ể ư ộ ữ  ượ ắ   ươ ữ ệ c g n ng trình và đ d  li u (vào, ra hay k t qu  trung gian) trong quá trình ho t đ ng c a ch ữ ệ   ủ ể ế ế ớ v i m t tên do NSD khai báo. Đ  s  d ng bi n, NSD khai báo: tên bi n và ki u c a d  li u ớ ượ ắ ch  có các d  li u cùng ki u v i nhau m i đ ớ   ế ứ c phép làm toán v i ch a trong bi n. Nguyên t c:  ế ố ẩ ế nhau. Do đó, khi đ  c p đ n m t ki u d  li u chu n, ta s  xét đ n các y u t  sau:

(cid:0)

ộ ừ

ể ủ ữ ệ

ể ỉ

Tên ki uể : là m t t

ị  dành riêng đ  ch  đ nh ki u c a d  li u.

(cid:0)

ườ

ớ: Thông th ỉ ở

ệ ố

ế

ụ ng s  byte này ph  thu c vào các trình   ệ    đây ta ch  xét đ n h  th ng máy PC thông d ng hi n

ữ ư S  byte l u tr  trong b  nh ệ ố biên d ch và h  th ng máy khác nhau,  nay.

(cid:0)

ị ủ

Mi n giá tr  c a ki u

ị ữ ệ ị

ị ớ ế

ể : Quy đ nh m t đ n v  d  li u thu c ki u này s  có th  ch a ộ ơ ể ứ   ế   ề ầ ị giá tr  trong pham vi nào. NSD c n nh  đ n mi n giá tr  này đ  khai báo ki u cho các bi n ộ ầ ử ụ c n s  d ng m t cách thích h p.

ườ

ộ ố ể M t s  ki u th

ng dùng:

ướ

c/ precision

ể ữ ệ Ki u d  li u Ký tự

Tên ki uể char

Kích th 1 byte

số nguyên

int

4 byte

ữ ố ậ

float

4 byte (1.2E­38 ­> 3.4E+38), 6 ch  s  th p phân

Số thực (dấu chấm động)

ữ ố ậ

double

8 byte (2.3E­308 ­> 1.7E+308), 15 ch  s  th p phân

Lôgic

bool

1 byte

ứ 5. Phép toán, bi u th c

ề ậ ấ ạ C++ có r t nhi u phép toán lo i 1 ngôi, 2 ngôi và th m chí 3 ngôi.

ầ ượ ạ ạ ặ ọ ứ c g i là h ng th c ho c toán h ng,

ử ệ ọ Các thành ph n tên g i tham gia trong phép toán đ ượ ọ các kí hi u phép toán đ c g i là toán t .

ố ọ a. Các phép toán s  h c: + , ­ , * ,  / , %

(cid:0) ừ ộ Các phép toán + (c ng), ­ (tr ), * (nhân)

(cid:0) ượ ứ ể ạ

Phép toán a / b (chia) đ ố ầ ạ ế   ủ c th c hi n theo ki u c a các toán h ng, t c n u ượ   ỉ ấ ế c

ệ ả ủ ả ố ự ự ạ

// do 13 và 5 là 2 số nguyên

13/5 = 2 13.0/5 = 13/5.0 = 13.0/5.0 = 2.6 // có ít nhất 1 toán hạng là thực

ự ả c  hai toán h ng là s  nguyên thì k t qu  c a phép chia ch  l y ph n nguyên, ng ế ạ ế l i n u 1 trong 2 toán h ng là th c thì k t qu  là s  th c.  Ví d : ụ

(cid:0) ư ả ạ ầ ư ủ ầ i ph n d  c a phép chia a/b, trong đó a

ấ Phép toán a % b (l y ph n d ) tr  l ố và b là 2 s  nguyên.

// phần dư của 13/5

// phần dư của 5/13

13%5 = 3 ; 5%13 = 5 ;

Ví d :ụ

b. Các phép toán t

tự ăng, gi m: i++ , ++i , i­­ , ­­i

(cid:0) ẽ ị ứ ươ

ng đ ặ ươ ể ứ ệ

ớ ượ ứ ượ ể ớ ượ ạ i++ s  tăng

c l ệ ụ ạ Phép toán ++i  và  i++ s  cùng tăng  l nh ệ ế +i khác v i ớ i++. C  th  ++ i s  tăng  ẽ ứ bi u th c. Ng ượ ể cũ). Đi m khác bi ớ ơ i  lên 1 đ n v  t c t ng v i câu ằ i = i+1. Tuy nhiên n u 2 phép toán này n m trong câu l nh ho c bi u th c thì + i, sau đó i m i đ c tham gia vào tính toán trong   ị i  ể i sau khi bi u th c đ c tính toán xong (v i giá tr   ả ử i = 3, j = 15. c minh ho  thông qua ví d  sau, gi ụ ể i  t này đ s

Phép toán i = ++j ; // tăng trư cớ i = j++ ; // tăng sau j = ++i + 5 ; j = i++ + 5 ;

Tương đương j = j + 1; i = j ; i = j ; j = j + 1 ; i = i + 1 ; j = i + 5 ; j = i + 5; i = i + 1;

K t quế i = 16 , j = 16 i = 15 , j = 16 i = 4, j = 9 i = 4, j = 8

ệ ự ứ ệ ả ặ ẽ

ể  tăng gi m vào trong bi u th c ho c câu l nh s ơ ể ế ợ Chú ý: Vi c k t h p phép toán t ư ọ ươ ng trình g n nh ng khó hi u h n. làm ch

c. Các phép toán so sánh và lôgic

ị ủ ứ ế ể ặ

Đây là các phép toán mà giá tr  tr  l ị ể ị

ứ ở ộ ậ ơ ệ ộ

ượ ạ c l ệ ị ị ả ạ   i là đúng ho c sai. N u giá tr  c a bi u th c là ậ i là sai thì bi u th c nh n giá tr  0. Nói cách khác 1 và đúng thì nó nh n giá tr  1, ng   ị  ị ụ ể ủ 0 là giá tr  c  th  c a 2 khái ni m "đúng", "sai". M  r ng h n C++ quan ni m m t giá tr ấ ỳ b t k  khác 0 là " đúng" và giá tr  0 là " sai".

// nhận giá trị 1 vì đúng

// = 0 vì sai

// = 1

// = 3 vì 5<2 bằng 0

// = 4 vì 5>=2 bằng 1

ạ ủ ể ả

ị ủ ạ ả

ị + Các phép toán so sánh  == (bằng nhau), != (khác nhau), > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng). ụ Hai toán h ng c a các phép toán này ph i cùng ki u. Ví d : 3 == 3 hoặc 3 == (4 - 1) 3 == 5 3 != 5 3 + (5 < 2) 3 + (5 >= 2) ệ ầ Chú ý: C n phân bi t phép toán gán (=) và phép toán so sánh (==). Phép gán v a gán ả ạ ế ừ ị giá tr  cho bi n v a tr  l i giá tr  b t k  (là giá tr  c a toán h ng bên ph i), trong khi phép ả ạ so sánh luôn luôn tr  l ị ấ ỳ ặ i giá tr  1 ho c 0.

ủ ứ ộ ỉ

ậ ể ệ ạ ể ệ ở ố ở + Các phép toán lôgic:  && (và), || (hoặc ), ! (không, phủ định) ể ả Hai toán h ng c a lo i phép toán này ph i có ki u lôgic t c ch  nh n m t trong hai ị c th  hi n b i các s  nguyên khác 0) ho c "sai" (th  hi n b i 0). Khi

a 1 1 0 0

b 1 0 1 0

a && b 1 0 0 0

a || b 1 1 1 0

! a 0 0 1 1

ượ ặ ả ạ ượ giá tr  "đúng" (đ ị ả ạ ủ i c a phép toán là 1 ho c 0 và đ đó giá tr  tr  l ặ c cho trong b ng sau:

Tóm l i:ạ

(cid:0) ạ ỉ Phép toán "và" đúng khi và ch  khi hai toán h ng cùng đúng

(cid:0) ạ ặ ỉ Phép toán "ho c" sai khi và ch  khi hai toán h ng cùng sai

// = 0 vì có hạng thức (4>5) sai

// = 1 vì cả hai hạng thức cùng đúng

// = 0

// = 1 vì (4+3<7) bằng 0

// = 1 vì có một hạng thức (5) đúng

// = 0 vì cả hai hạng thức đều sai

(cid:0) ủ ị ủ ạ ặ ỉ Phép toán "không" (ho c "ph  đ nh") đúng khi và ch  khi toán h ng c a nó

sai. Ví d :ụ 3 && (4 > 5) (3 >= 1) && (7) !1 !(4 + 3 < 7) 5 || (4 >= 6) (5 < !0) || (4 >= 6)

ể ệ ừ c ti n hành t

Chú ý: vi c đánh giá bi u th c đ ờ ả ẽ ừ ữ ả ẽ

ế ự ủ ư ể ế   t ả     tăng

cho kết quả x = 0 , i = 3 , j = 4

cho kết quả y = 0 , i = 2 , j = 4

ụ ể ế  trái sang ph i và s  d ng khi bi ứ ế k t qu  mà không ch  đánh giá h t bi u th c. Cách đánh giá này s  cho nh ng k t qu ụ ph  khác nhau n u trong bi u th c ta "tranh th " đ a thêm vào các phép toán t ứ ả gi m. Ví d  cho ứ ượ ể ế ế ứ  i = 2, j = 3, xét 2 bi u th c sau đây:

x = (++i < 4 && ++j > 5) // y = (++j > 5 && ++i < 4) //

ạ ủ ứ ư

ả ậ ấ

ạ ừ ả ệ ẽ

ầ ươ ổ ị ể ứ ị  thi ị ủ i và j sau khi th c hi n xong hai bi u th c này s  có k t qu ể i < 4 là đúng nên ch

ể ứ ượ ậ

c bi u th c. Do v y sau khi đánh giá xong c   j > 5 là sai nên ch ế ộ ể ượ

ươ ượ

ỉ ụ

ế j đ ộ ầ ể ứ ự ứ ả t hai bi u th c là nh  nhau (ngo i tr  hoán đ i v  trí 2 toán h ng c a phép ế i = 2 và j = 3 ta th y c  hai bi u th c trên cùng nh n giá tr  0. ể   ứ ả  ế ả ế ụ   ng trình ph i ti p t c ả i và j đ uề   ươ   ng trình i < 4. Nghĩa là  c tăng 1,   ắ   ữ i = 2, j = 4 khác v i k t qu  c a bi u th c trên. Ví d  này m t l n n a nh c  đó ta có  ể    tăng gi m trong bi u th c và trong

ế cách vi ớ toán &&). V i gi t  ự Tuy nhiên các giá tr  c a  ể ụ ể ớ khác nhau. C  th  v i bi u th c đ u vì ++ ứ ể ế j > 5 đ  đánh giá đ tính ti p ++ ể ớ ượ ứ i=3, j=4). Trong khi đó v i bi u th c sau do ++ c tăng 1 ( đ ầ ứ ậ ể ế c toàn b  bi u th c là sai mà không c n tính ti p ++ có th  k t lu n đ ẽ ừ ậ j > 5 s  d ng và vì v y ch  có bi n  sau khi ch ng trình đánh giá xong ++ ể ả ủ ừ ớ ế t ỹ ệ ử ụ ta chú ý ki m soát k  vi c s  d ng các phép toán t câu l nh.ệ

ẩ ủ

ậ 6. L nh xu t / nh p chu n c a C++

ậ ữ ệ

L nh cin nh p d  li u vào t

ữ ệ ể ậ ử ụ

bàn phím ế

Đ  nh p d  li u vào cho các bi n có tên var1, var2, var3  chúng ta s  d ng câu

l nh:ệ

cin >> var1 ; cin >> var2 ; cin >> var3 ; ho c:ặ cin >> var1 >> var2 >> var3 ; ượ ử ụ Các bi n ế var1, var2, var3 đ

ừ ữ ị

ể ế ề ậ ơ c s  d ng đ  l u tr  các giá tr  NSD nh p vào t ế ể ư ằ ế ế ế ậ  bàn t ti p ti p các tên bi n vào

ể ủ ả ấ phím. Hi n nhiên có th  nh p nhi u bi n h n b ng cách vi ệ bên ph i các d u >> c a câu l nh.

ệ ữ ậ ng trình tính chu vi và di n tích hình ch  nh t.

ươ Ví d :ụ  Ch #include using namespace std; int main() { int cd, cr; cout << "Nhap hai canh hinh chu nhat: "; cin >> cd >> cr; cout << "Dien tich = "<

ệ l nh sau:

cout << "Chieu dai la " ; cout << 23 ; cout << " met"; ể ỉ ằ ho c có th  ch  b ng 1 l nh: cout << "Chieu dai la 23 met" ;

ệ ặ

ợ ế ư ườ ề ng h p ch a bi

t giá tr  c  th  c a chi u dài, ch  bi ụ ạ ị ụ ể ủ ậ ố c l u trong bi n ị   i giá tr  này đã cướ cin >> cd tr

ệ ế ầ ị Tr ượ ư đ đó) và ta c n bi ế cd (ví d  b n nh p s  23 t t giá tr  này là bao nhiêu thì có th  s  d ng câu l nh:

ệ ạ ỉ ế t hi n t ệ ở ừ  bàn phím b i câu l nh  ể ử ụ cout << "Chieu dai la " << cd << " met" ;

ị ầ ứ ể ể ế ộ ộ ộ ỉ M t giá tr  c n in không ch  là m t bi n nh ư cd, cr, ... mà còn có th  là m t bi u th c.

ươ

ứ ị

ấ ữ ệ

Ph

ng th c đ nh d ng xu t d  li u   ộ ộ

ị ỉ n 1) cout.width(n): Ch  đ nh đ  r ng in ra màn hình là

ứ ươ ộ

ng th c này cho phép in ra các giá tr  v i đ  r ng  ơ ị

ề ớ ộ ộ ộ ộ ơ ộ ộ ị ị ớ ộ ộ ế n bé h n đ  r ng th c s  c a giá tr , thì in giá tr  v i s ự ự ủ ự ế n  l n h n đ  r ng th c, thì in giá tr  canh theo l ằ   n  c t trên màn hình b ng ị ớ ố  ề

ị ượ ể ố ướ ộ Ph l nh ệ cout<< li n sau đó. N u  ự ự ộ ằ c t b ng v i đ  r ng th c s . N u  ừ ả ph i, và đ  tr ng các c t th a phía tr ớ c giá tr  đ c in.

// độ rộng thực của a là 2, của b là 3

// chiếm 2 cột màn hình

// đặt độ rộng giá trị in tiếp theo là 7

// b in trong 7 cột với 4 dấu cách đứng trước

ị ầ ụ ớ ỉ ươ ụ ng th c này ch  có tác d ng v i giá tr  c n in ngay sau nó. Ví d :

ế ẽ ứ Ph int a = 12; b = 345; cout << a; cout.width(7); cout << b; ả K t qu  in ra s  là:

12 345 ỉ

ộ ị ố ướ ị ầ . 2) cout.fill(ch): Ch  đ nh đ n kí t c giá tr  c n in

ầ ấ ả ự ch vào kho ng tr ng tr ủ

ộ ộ ướ

ị ầ ự ộ  đ n ng m đ nh là d u cách. Nghĩa là, khi đ  r ng c a giá tr  c n in bé h n đ ị c giá tr  c n in cho đ  v i đ ị Kí t ỉ ỉ ị ầ ấ ằ ộ ộ ị ấ ẽ ộ ộ r ng ch  đ nh thì máy s  đ n thêm các d u cách vào tr ấ ỳ ầ ể ộ r ng ch  đ nh. Có th  yêu c u đ n m t kí t ự ch b t k  thay cho d u cách b ng ph ộ  ơ ủ ớ ộ  ươ   ng

ệ ế ệ ướ cout.fill('*')  tr c khi in b thì

12****345.

ụ ẽ ả

ứ th c trên. Ví d  trong dãy l nh trên, n u ta thêm dòng l nh  ế k t qu  in ra s  là:  ươ ớ ọ ứ ụ ệ ế ặ ộ ỉ ị Ph ng th c này có tác d ng v i m i câu l nh in sau nó cho đ n khi g p m t ch  đ nh

m i.ớ

ị ự ể ầ ộ ớ ỉ ị

3) cout.precision(n): Ch  đ nh đ  chính xác c n in v i các giá tr  th c (hi u là

ấ ấ ậ ố ữ ố s  ch  s  sau d u ch m th p phân).

ươ ố ự ẽ ầ ữ ố ẻ ng th c này yêu c u các s  th c in ra sau đó s  có n­1 ch  s  l ố ự   . Các s  th c

ứ ẽ ượ ướ Ph c khi in ra s  đ tr ế c làm tròn đ n ch  s  l

// độ rộng thực của a là 4, của b là 7

// chiếm 4 cột màn hình

// đặt độ rộng giá trị in tiếp theo là 10

// đặt độ chính xác đến 2 số lẻ

// b in trong 10 cột với 4 dấu cách đứng trước

ữ ố ẻ ứ n­1.  ộ th   ặ ứ ớ ỉ ị ụ ươ ế ng th c này có tác d ng cho đ n khi g p m t ch  đ nh m i.

ế

12.3 345.68

Ph Ví d :ụ int a = 12.3; b = 345.678; cout << a; cout.width(10); cout.precision(3); cout << b; K t qu  in ra s  là:

7. C u trúc r  nhánh

ệ Câu l nh if

+ Ý nghĩa

ộ ệ ươ ệ

ụ ế ộ c vi

M t câu l nh if cho phép ch ề ộ ươ ố   ố ệ ể ự ng trình có th  th c hi n kh i l nh này hay kh i ệ ệ   t trong câu l nh là đúng hay sai. Nói ệ ượ ẽ ỉ ự ệ l nh khác ph  thu c vào m t đi u ki n đ ệ cách khác câu l nh if cho phép ch ng trình r  nhánh (ch  th c hi n 1 trong 2 nhánh).

+ Cú pháp  (cid:0) D ng thi u: ế

if (điều kiện)

{

khối lệnh;

}

(cid:0) D ng đ y đ :

ầ ủ if (điều kiện)

{

khối lệnh 1;

} else {

khối lệnh 2;

}

ạ ề if có hai d ng: có else và không có else.  đi u ki n ệ  là

Trong cú pháp trên câu l nh ệ ể ứ ứ ộ ặ ằ ị

m t bi u th c lôgic, t c là nó có giá tr  đúng (khác 0) ho c sai (b ng 0). ể ẽ ệ ệ ng trình th c hi n câu l nh if, ch

ự ươ ươ ng trình s  tính bi u th c  ệ ự ẽ ế ụ ươ Khi ch ệ   đúng ch ề N u  ế đi u ki n ệ .  ứ đi u ki n ề ố ệ ệ   ng trình s  ti p t c th c hi n các l nh trong kh i l nh 1,

ề ẽ ự ệ ế ượ ạ c l ệ i (đi u ki n sai) ch ặ   ố ệ ng trình s  th c hi n kh i l nh 2 (n u có else) ho c

ươ ng ế không làm gì (n u không có else).

ể ặ + Đ c đi m:

(cid:0) ặ ủ ứ ệ ể

ệ   ấ Đ c đi m chung c a các câu l nh có c u trúc là b n thân nó ch a các câu l nh ể ồ ệ ề ả khác. Đi u này cho phép các câu l nh if có th  l ng nhau.

(cid:0) ế ệ ệ ể

ư ẽ ầ ắ ấ ả ớ ề ầ ồ ớ N u nhi u câu l nh if (có else và không else) l ng nhau vi c hi u if và else nào   ượ   c

ặ đi v i nhau c n ph i chú ý. Qui t c là else s  đi v i if g n nó nh t mà ch a đ ớ ghép c p v i else khác.

if (n>0) if (a>b) c = a; else c = b; ớ ươ ng v i:

ụ ệ Ví d  câu l nh:

ươ t

ng đ if (n>0) { if (a>b) c = a; else c = b;}

ố ớ ề ệ ể ấ ố + Ví d  1: ụ ằ Ví dụ: B ng phép toán gán có đi u ki n có th  tìm s  l n nh t max trong 2 s  a, b

max = (a > b) ? a: b ;

ư nh  sau:

ở ặ ệ ượ

ế ế ứ ư

ế ế ậ ế ậ ộ ố

c tính b i dùng câu l nh if: ho c max đ if (a > b) max = a; else max = b; Ví d  2ụ : Tính năm nhu n. Năm th  n là nhu n n u nó chia h t cho 4, nh ng không   ầ   ặ ế chia h t cho 100 ho c chia h t 400. Chú ý: m t s  nguyên a là chia h t cho b n u ph n ằ ư ủ d  c a phép chia b ng 0, t c a%b == 0.  #include using namespace std; int main() { int year; cout << "Nam = " ; cin >> year ; if (year%4 == 0 && year%100 !=0 || year%400 == 0) cout << year << "la nam nhuan"; else cout << year << "la nam khong nhuan"; return 0; }

2 + bx + c = 0, bi

ả ươ ậ t a ế (cid:0) 0, b, c. Tìm x? i ph ng trình b c 2: ax

int main() { float a, b, c, delta, x1, x2;

Ví d  3ụ : Gi #include #include // sử dụng hàm sqrt() using namespace std;

cout << "Nhap a , b, c: " ; cin >> a >> b >> c ;

if (a==0){ cout<<"Ban da nhap a=0"; return 0; }

delta = b*b - 4*a*c ; if (delta < 0)

cout << "PT vo nghiem"<

else if (delta==0)

cout<<"PT co nghiem kep x= " << -b/(2*a) <

else {

x1 = (-b+sqrt(delta))/(2*a); x2 = (-b-sqrt(delta))/(2*a); cout << "x1 = " << x1 << " x2 = " << x2 ;

}

return 0; }

ấ ỳ ộ ị

ế ị ể ế ọ ặ

ượ ạ ế thay vì vi (x != 0) đúng thì ta có x (cid:0) c l

(cid:0) ặ t if (x != 0) ho c if (x == 0) ta có th  vi  0 và vì x (cid:0) ươ 0 nên (x) cũng đúng. Ng ượ ươ ự ễ ấ Chú ý: Do C++ quan ni mệ  "đúng" là m t giá tr  khác 0 b t k  và "sai" là giá tr  0 nên   ế   t g n thành if (x) ho c if (!x) vì n u   i n u (x) đúng thì x ươ   ng đó (x != 0) cũng đúng. T ta d  dàng th y đ c (x == 0) là t ng đ ng t

ừ  0, t ớ v i (!x).