You are on page 1of 76

1

—  
 
  
  

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


2

„   !"

D Tài liӋu đӑc thêm cho chương này:


± Section 2.1. Complete C++ Language Tutorial (CCLT)
± Day 7. Teach Yourself C++ in 21 Days (TY21)
± Namespace (Sec.5-2.CCLT) (Không bҳt buӝc)

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


3
Chương 2 ± KiӇu dӳ liӋu và phép toán cơ bҧn
Cҩu trúc điӅu khiӇn và cҩu trúc chương trình
ĐӅ mөc
2.1 Các kiӇu dӳ liӋu cơ bҧn
2.2 Các phép gán tҳt, phép tăng, phép giҧm
p.3 Các phép toán logic
2.4 Thuұt toán, mã giҧ, điӅu khiӇn cӫa chương trình, sơ đӗ khӕi
2.5 Sơ lưӧc vӅ các cҩu trúc điӅu khiӇn
2.6 Cҩu trúc lӵa chӑn  ,  
2.7 Phép toán lӵa chӑn 3 ngôi
2.8 Cҩu trúc lһp 
2.9 ThiӃt lұp thuұt toán
2.10 ĐiӅu khiӇn lһp bҵng con đӃm và giá trӏ canh

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


4
Chương 2 ± KiӇu dӳ liӋu và phép toán cơ bҧn
Cҩu trúc điӅu khiӇn và cҩu trúc chương trình
ĐӅ mөc (tiӃp theo)

2.11 Các cҩu trúc lӗng nhau


2.12 Vòng lһp 
2.13 Cҩu trúc đa lӵa chӑn 

2.14 Vòng lһp 
2.15   và
 
2.16 Sơ lưӧc vӅ lұp trình cҩu trúc

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


5

#$ 

char ký tӵ hoһc sӕ nguyên 8 bit


short sӕ nguyên 16 bit
long sӕ nguyên 32 bit
int sӕ nguyên đӝ dài bҵng 1 word (16 bit
hoһc 32 bit)
float sӕ chҩm đӝng 4 byte
double sӕ chҩm đӝng 8 byte
long double sӕ chҩm đӝng 10 byte
bool giá trӏ Boolean, true hoһc false
wchar_t ký tӵ 2 byte, lưu bҧng chӳ cái quӕc tӃ
| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.
6

#  %&

D phép gán ± assignation (=)


ð   €€ : lvalue, 5: rvalue
± là biӇu thӭc có giá trӏ là giá trӏ đưӧc gán
D các phép toán sӕ hӑc - Arithmetic operators
ü 
D các phép gán kép - Compound assignation
operators
ü  

   


D phép tăng và phép giҧm (++, ´´)

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


7

#  %&

D các phép quan hӋ - relational operators


(  
 
)
D các phép toán logic - Logic operators (   )
D phép điӅu kiӋn - Conditional operator ( ).
üA       cho kӃt quҧ  do khác .
D các toán tӱ bit - Bitwise Operators
(   

 ).

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


8

#  % '

D Các biӇu thӭc gán tҳt - Assignment e pression


abbreviations
± Phép gán cӝng


  viӃt tҳt thành
 
D Các lӋnh có dҥng

  
    
có thӇ đưӧc viӃt lҥi thành

    
D Các phép gán khác
´   ´ 
      
    
    

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


9

#  %( )  "

D Phép tăng - Increment operator ()


± có thӇ đưӧc dùng thay cho
 
D Phép giҧm - Decrement operator (´´)
± có thӇ đưӧc dùng thay cho
´ 
D Tăng€giҧm trưӟc ± Preincrement€Predecrement
D 
hoһc ´´

D iá trӏ cӫa biӃn bӏ thay đәi, sau đó biӇu thӭc chӭa nó đưӧc tính giá trӏ.
D BiӇu thӭc có giá trӏ là giá trӏ cӫa biӃn sau khi tăng€giҧm
D Tăng€giҧm sau - Postincrement€Predecrement
D
 hoһc
´´
D BiӇu thӭc chӭa biӃn đưӧc thӵc hiӋn, sau đó biӃn đưӧc thay đәi.
D BiӇu thӭc có giá trӏ là giá trӏ cӫa biӃn trưӟc khi tăng€giҧm

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


10

#  %( )  "

D Ví dө: nӃu
 
½
  

D
nhұn giá trӏ ;, rӗi đưӧc in ra
½
 

D in giá trӏ  (
 đưӧc chҥy trưӟc phép tăng).
D sau đó,
nhұn giá trӏ ;

D Khi biӃn không nҵm trong biӇu thӭc


± Tăng trưӟc và tăng sau có kӃt quҧ như nhau



 





 

là như nhau
| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.
11
$     

 
    
  
*
    
+ † 
,  
 ü†
-   
.
/ 
        
 
0    
$1 
$$ 
 
 
  ;
$

$*      

;
$+
      

;
$,
 
     
$-
 
         

$.
 
        ;
$/
$0     

1
      

$
 
     

  
    
   ;
*
 
     ;
+
,      
 

   


-
.   
   |2004 Trҫn Minh Châu.
FOTECH. VNU.
12

#*  %&& 

D đưӧc dùng làm điӅu kiӋn trong các vòng lһp và


lӋnh if
D ÖÖ (logical L )
½  nӃu cҧ hai điӅu kiӋn là 
     ÖÖ   ; 
 

D  (logical @ )
½  nӃu ít nhҩt mӝt trong hai điӅu kiӋn là 
  L
          

        L   

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


13

#*  %&& 

D  (logical @, phӫ đӏnh logic ± logical negation)


± trҧ vӅ giá trӏ  khi điӅu kiӋn là , và ngưӧc lҥi
         

             
tương đương vӟi:
       

             

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


14
— 2" 3 4
 % 5&5 6 7889)  % 789
D Lӛi thưӡng gһp
± Thưӡng không tҥo lӛi cú pháp (synta error)
D Các khía cҥnh cӫa vҩn đӅ
± biӇu thӭc có giá trӏ có thӇ đưӧc dùng làm điӅu kiӋn
D bҵng không = false, khác không = true
± Các lӋnh gán cũng tҥo giá trӏ (giá trӏ đưӧc gán)

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


15
— 2" 3 4
 % 5&5 6 7889)  % 789
D Ví dө
      

       
± NӃu mã tiӅn lương (paycode) là 4 thì thưӣng

D NӃu  bӏ thay bӣi 


      

       
± Paycode đưӧc gán giá trӏ 4 (không cҫn biӃt giá trӏ cӫa
paycode trưӟc đó)
± lӋnh gán cho giá trӏ true (vì 4 khác 0)
± trưӡng hӧp nào cũng đưӧc thưӣng

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


16
— 2" 3 4
 % 5&5 6 7889)  % 789
D Lvalue
± là biӇu thӭc có thӇ uҩt hiӋn tҥi vӃ trái cӫa phép gán
± ác đӏnh mӝt vùng nhӟ có thӇ đưӧc gán trӏ (i.e, các biӃn)
D   
D value
± chӍ uҩt hiӋn bên phҧi phép gán
± hҵng, các giá trӏ (literal)
D không thӇ viӃt   
D Lvalue có thӇ đưӧc dùng như các rvalue, nhưng
chiӅu ngưӧc lҥi là không thӇ

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


17

i:  


D Trưӟc khi viӃt chương trình


± HiӇu kӻ bài toán
± Lұp kӃ hoҥch giҧi quyӃt bài toán
D Trong khi viӃt chương trình
± BiӃt lӡi giҧi có sҹn cho các bài toán con
± Sӱ dөng các nguyên lý lұp trình tӕt

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


18

„ &; < &  "

D Các bài toán tin hӑc


± đưӧc giҧi bҵng cách thӵc hiӋn mӝt chuӛi hành đӝng theo
mӝt thӭ tӵ cө thӇ
D Thuұt toán: mӝt quy trình quyӃt đӏnh
± Các hành đӝng cҫn thӵc hiӋn
± Thӭ tӵ thӵc hiӋn
± Ví dө: cách nҩu mӝt món ăn
D ĐiӅu khiӇn cӫa chương trình ± Program Control
± ChӍ ra thӭ tӵ thӵc hiӋn các lӋnh

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


19

a  ; =5>&&>

D Mã giҧ: ngôn ngӳ không chính thӭc đưӧc dùng đӇ


mô tҧ thuұt toán
± tương tӵ vӟi ngôn ngӳ hàng ngày
D Không chҥy đưӧc trên máy tính
± dùng đӇ mô tҧ chương trình trưӟc khi viӃt chương trình
D dӉ chuyӇn thành chương trình C++
± chӍ gӗm các lӋnh chҥy
i 
D không cҫn khai báo biӃn 
    

  
ð
  ð       
  ! "   ð   

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


20
       ; & &?  >5
@ "
D Thӵc thi tuҫn tӵ - Sequential e ecution
± Các lӋnh đưӧc thӵc hiӋn theo thӭ tӵ tuҫn tӵ
D ChuyӇn điӅu khiӇn - Transfer of control
± LӋnh tiӃp theo đưӧc thӵc thi không ph̫i lӋnh tiӃp theo trong
chuӛi lӋnh.
D 3 cҩu trúc điӅu khiӇn
± Cҩu trúc tuҫn tӵ - Sequence structure
D theo mһc đӏnh, chương trình chҥy tuҫn tӵ tӯng lӋnh
± Các cҩu trúc chӑn lӵa - Selection structures
D  ,  , 

± Các cҩu trúc lһp - epetition structures
D , , 

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


21

  

D Các tӯ khóa cӫa C++


± Không thӇ dùng làm tên biӃn hoһc tên hàm
C++ Keyw o rd s

Ë  cn t th
C an C++ pgaing
languag 
   

 


       
      
       
     
 


     


  
C++ nl k 
 


 
 

   

 
  
    
   

  
  
  

 

     
    
  

 

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


22

  


xrue
grade >= 60 prinx ³Passed´

false

D Sơ đӗ khӕi - Flowchart
± mô tҧ thuұt toán bҵng hình vӁ
± gӗm các ký hiӋu đһc biӋt đưӧc nӕi bҵng các mũi tên
(flowlines)
± Hình chӳ nhұt (ký hiӋu hành đӝng)
D kiӇu hành đӝng bҩt kǤ
± ký hiӋu oval
D Bҳt đҫu hoһc kӃt thúc mӝt chương trình,
hoһc mӝt đoҥn mã (hình tròn)
D Các cҩu trúc điӅu khiӇn có đúng 1 đҫu vào, 1 đҫu ra
± KӃt nӕi đҫu ra cӫa mӝt cҩu trúc điӅu khiӇn vӟi đҫu vào cӫa
cҩu trúc tiӃp theo
± Ӄp chӗng các cҩu trúc điӅu khiӇn

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


23

   A4   B

D Cҩu trúc lӵa chӑn - Selection structure


± chӑn giӳa các tuyӃn hành đӝng khác nhau
± ví dө bҵng mã giҧ:
Ž tu nt¶ ga i g at  than  ual t 60
Pint ³Pa 
± NӃu điӅu kiӋn thӓa mãn (có giá trӏ 
D lӋnh Print đưӧc thӵc hiӋn, chương trình chҥy tiӃp lӋnh tiӃp theo
± NӃu điӅu kiӋn không thӓa mãn (có giá trӏ 
D lӋnh Print bӏ bӓ qua, chương trình chҥy tiӃp
± Cách viӃt thөt đҫu dòng làm chương trình dӉ đӑc hơn
D C++ bӓ qua các ký tӵ trҳng (tab, space, etc.)

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


24

   A4   B

D Dӏch sang C++


Ž tu nt¶ ga i g at  than  ual t 60
Pint ³Pa  xrue
grade >= 60 prinx ³Passed´

    ; 

     false

D ký hiӋu hình thoi (ký hiӋu quyӃt đӏnh)


± đánh đҩu chӑn lӵa cҫn thӵc hiӋn Mӝt biӇu thӭc bҩt kǤ đӅu
± chӭa mӝt biӇu thӭc có giá trӏ true hoһc false có thӇ đưӧc sӱ dөng làm
điӅu kiӋn cho lӵa chӑn.
D kiӇm tra điӅu kiӋn, đi theo đưӡng thích hӧp
bҵng ? - 
D cҩu trúc 
khác ? - 
± Single-entry€single-e it
Ví dө:
 ´  có giá trӏ 

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


25

     A4  

D 
± Thӵc hiӋn hành đӝng nӃu điӅu kiӋn thӓa mãn
D  
± thӵc hiӋn nhӳng hành đӝng khác nhau tùy theo điӅu kiӋn đưӧc
thӓa mãn hay không
D mã giҧ
i tu nt¶ ga i g at  than  ual t 60
pint ³Pa 
l
pint ³Fail 
D mã C++
    ; 

    


    
| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.
26

     A4  

D phép toán điӅu kiӋn 3 ngôi ()


± ba tham sӕ (điӅu kiӋn, giá trӏ nӃu , giá trӏ nӃu )
D mã có thӇ đưӧc viӃt:

     ;         

   
 

 

$%
# #
#  *+

  &'%#(   &)

#(

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


27

     A4  

D Các cҩu trúc   lӗng nhau


± lӋnh này nҵm trong lӋnh kia, kiӇm tra nhiӅu trưӡng hӧp
± Mӝt khi điӅu kiӋn thӓa mãn, các lӋnh khác bӏ bӓ qua
i tu nt¶ ga i g at  than  ual t 90
Pint ³A
l
i tu nt¶ ga i g at  than  ual t 80
Pint ³B
l
i tu nt¶ ga i g at  than  ual t 70
Pint ³C
l
i tu nt¶ ga i g at  than  ual t 60
Pint ³D
l
Pint ³F

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


28

     A4  

D Ví dө
         


  L
        ´

  
     A   A´A

  
     ;   ;´;

  
     ;

  

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


29

     A4  

D lӋnh phӭc ± compound statement


± tұp lӋnh bên trong mӝt cһp ngoһc
    ; 

     
 

     

     
  

± nӃu không có ngoһc,

     
  
sӁ luôn đưӧc thӵc hiӋn
D Khӕi chương trình - Block
± tұp lӋnh bên trong mӝt cһp ngoһc

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


30

   C D >

D Cҩu trúc lһp - epetition structure


± hành đӝng đưӧc lһp đi lһp lҥi trong khi mӝt điӅu kiӋn nào đó
còn đưӧc thӓa mãn
± mã giҧ
„ng khi v̳n còn tên hàng tng anh 
ch đi chͫ cͯa tôi
Mua  t hàng ti͇p th  và g̩ch tên nó a kh͗i anh 
ch
± vòng  lһp đi lһp lҥi cho đӃn khi điӅu kiӋn không thӓa
mãn

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


31

   C D >

D Ví dө
  
 
  
  
 
   

D Sơ đӗ khӕi cӫa vòng 


 
   
   



| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


32
„ :  &
7E   C6 &:"9
D Vòng lһp đưӧc điӅu khiӇn bҵng con đӃm (counter)
± Lһp đӃn khi con đӃm đҥt đӃn giá trӏ nào đó
D Lһp hӳu hҥn - Definite repetition
± sӕ lҫn lһp biӃt trưӟc
D Ví dө
M͡t lͣp g͛ 10 inh viên là ͡t bài thi. Ch bi͇t c
c đi͋
thi ( nguên tng kh̫ng tͳ 0 đ͇n 100). „ nh tung bình
đi͋ thi cͯa lͣp.

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


33
„ :  &
7E   C6 &:"9
D Mã giҧ cho ví dө:
U t t͝ng b̹ng 0
U t cn đ͇ b̹ng 1
„ng khi cn đ͇ nh͗ hơn h c b̹ng 10
Nh̵p đi͋ ti͇p th 
C͡ng đi͋ đó và t͝ng
„hê 1 và cn đ͇n
U t tung bình lͣp b̹ng t͝ng chia ch 10
Žn tung bình lͣp

D TiӃp theo: Mã C++ cho ví dө trên

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


34
$   A  A

  
      
 ´
    
*
    
+ †  
,  
 ü†
-  

.   
/
0 
        
 
$1   
$$
$           
$*               
$+      

$, 
  
    
$-
$.       
$/          
$0          
 
1

|2004 Trҫn Minh Châu.


FOTECH. VNU.
35
$  
  
            
*
          
+
          †  
,               ü†
-           

 
.  †  
/  ü†
0     
*1
       Con đӃm đưӧc 

    tăng thêm 1 mӛi lҫn vòng lһp chҥy.
*$ Cuӕi cùng, con đӃm làm vòng lһp kӃt thúc.
*    
**
   
    
    
    
*+     A;
*,      
      

      A
*-     A
*.   
       
    
    A
    A
    
    
 
   

|2004 Trҫn Minh Châu.


FOTECH. VNU.
36
„ :  &
7E   C6 F 4 9
D iҧ sӱ bài toán trӣ thành:
ii͇t ͡t chương tình t nh đi͋ tung bình cͯa lͣp, chương
tình  x͵ lý ͡t  lưͫng đi͋ tù ý i khi ch̩ chương
tình.
± Sӕ sinh viên chưa biӃt
± Chương trình sӁ làm thӃ nào đӇ biӃt khi nào thì kӃt thúc?
D iá trӏ canh
± Ký hiӋu ³KӃt thúc cӫa dӳ liӋu vào´
± Vòng lһp kӃt thúc khi nhұp canh
± Canh đưӧc chӑn đӇ không bӏ lүn vӟi dӳ liӋu vào thông
thưӡng
D trong trưӡng hӧp này là -1

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


37
„ :  &
7E   C6 F 4 9
D ThiӃt kӃ tӯ trên uӕng, làm mӏn tӯng bưӟc
± Bҳt đҫu bҵng mã giҧ cho mӭc cao nhҩt
„ nh tung bình đi͋ thi cͯa lͣp
± Chia thành các nhiӋm vө nhӓ hơn, liӋt kê theo thӭ tӵ
Ëhͧi t̩ c
c bi͇n
Nh̵p, t nh t͝ng, và đ͇ c
c đi͋ thi
„ nh và in tung bình đi͋ thi

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


38
„ :  &
7E   C6 F 4 9
D NhiӅu chương trình có 3 pha
± Khӣi tҥo - Initialization
D Khӣi tҥo các biӃn chương trình
± Xӱ lý - Processing
D Nhұp dӳ liӋu, điӅu chӍnh các biӃn trong chương trình
± KӃt thúc - Termination
D Tính và in kӃt quҧ cuӕi cùng
± iúp viӋc chia nhӓ chương trình đӇ làm mӏn tӯ trên uӕng

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


39
„ :  &
7E   C6 F 4 9
D Làm mӏn pha khӣi tҥo
Ëhͧi t̩ c
c bi͇n
thành
Ëhͧi t̩ t͝ng b̹ng 0
Ëhͧi t̩ bi͇n đ͇ b̹ng 0
D Xӱ lý
Nh̵p, t nh t͝ng, và đ͇ c
c đi͋ thi
thành
Nh̵p đi͋ đ̯u tiên (có th͋ là canh)
„ng khi ngưͥi ùng còn chưa nh̵p canh
C͡ng đi͋ vͳa nh̵p và t͝ng
C͡ng thê 1 và bi͇n đ͇ đi͋
Nh̵p đi͋ ti͇p th  (có th͋ là canh)

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


40
„ :  &
7E   C6 F 4 9
D KӃt thúc
„ nh và in tung bình đi͋ thi
thành
N͇u cn đ͇ kh
c 0
U t tung bình b̹ng t͝ng chia ch cn đ͇
Žn gi
t tung bình
N͇u không
Žn ³Ëhông nh̵p đi͋ nà
D TiӃp theo: chương trình C++

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


41
$     

  
        ´
    
*
    
+ † 

,  
 ü†
-  

.   
/   
0
$1
              
$$
$   
    
  

$*
$+ 
        
 
$,   
$-
$.    Dӳ liӋu kiӇu 0 dùng đӇ
    
$/
biӇu diӉn sӕ thұp phân.
           
$0      

1
$  
       
   
 

*       
+          
,          
  |2004 Trҫn Minh Châu.
FOTECH. VNU.
42
-
.  
  
/       
0
      ´         † 

*1
          ü†
*$
*      
   
**     ´  
*+              
*,           

 
*-
*.
      ´        
*/
        
*0
+1    
+$
+     
+*           
++        
+,
+- 

 
       
+.
    

           
+/
 

     coi   như mӝt   tҥm thӡi (casting).
Cҫn thiӃt vì phép chia sӕ nguyên bӓ qua phҫn dư. |2004 Trҫn Minh Châu.
   là mӝt biӃn  , nhưng nó đưӧc nâng lên kiӇu  .FOTECH. VNU.
43
+0   
         

,1
   
      
  
,$   
    
, † 

,*          ü†
,+
,,                 † 

,-
              ü†
,.
,/      
      

 
,0
-1   
    làm sӕ liӋu ra đưӧc in  
 in hai
theo dҥng thông thưӡng chӳ sӕ sau dҩu phҧy (làm tròn
(không phҧi dҥng ký hiӋu theo đӝ chính ác quy đӏnh).
khoa hӑc); qui đӏnh in cҧ các
    ´    A
chӳ sӕ 0 ӣ sau và in dҩu chҩm CÔc chương trình dùng hàm
    ´    
thұp phân. này phҧi include  
    ´    A
    ´     Include   
    ´    A
    ´    ;
    ´    
    ´    
    ´    ´
 
   
|2004 Trҫn Minh Châu.
FOTECH. VNU.
44

  G  4

D Phát biӇu bài toán


M͡t tưͥng có anh 
ch k͇t u̫ thi (1 = đ, 2 = tưͫt) cͯa
10 inh viên. ii͇t ͡t chương tình phân t ch k͇t u̫ thi.
N͇u có nhi͉u hơn 8 inh viên đ thì in a àn hình òng
chӳ ³„ng ti͉n h͕c ph .
D Lưu ý
± Chương trình ӱ lý 10 kӃt quҧ thi
D sӕ lҫn lһp cӕ đӏnh, sӱ dөng vòng lһp điӅu khiӇn bҵng biӃn đӃm
± Có thӇ sӱ dөng hai con đӃm
D Mӝt con đӃm đӇ đӃm sӕ lưӧng đӛ
D Mӝt con đӃm khác đӃm sӕ lương trưӧt
± Mӛi kӃt quҧ thi chӍ là 1 hoһc 2
D NӃu không phҧi 1 thì coi là 2

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


45

  G  4

D Phác thҧo mӭc cao nhҩt - Top level outline


Anal xa  ult an  ci i tuitin hul b ai 
D Làm mӏn lҫn mӝt - First refinement
Žnitiali vaiabl 
Žnput th t n ui ga  an cunt pa  an ailu 
Pint a ua  th xa  ult an  ci i tuitin
hul b ai 
D Làm mӏn - efine
Žnitiali vaiabl 
to
Žnitiali pa  t  
Žnitiali ailu  t  
Žnitiali tu nt cunt  t n

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


46

  G  4

D efine
Žnput th t n ui ga  an cunt pa  an ailu 
to
hil tu nt cunt  i l  than  ual t t n
Žnput th n xt xa  ult
Ž th tu nt pa 
A n t pa 
l
A n t ailu 
A n t tu nt cunt 

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


47

  G  4

D tiӃp tөc làm mӏn


Pint a ua  th xa  ult an  ci i tuitin hul
b ai 
to
Pint th nub   pa 
Pint th nub   ailu 
Ž  than ight tu nt pa 
Pint ³Rai tuitin
D Program ne t

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


48
$     

 L       
*
    
+ † 
,  
 ü†
-  

.   
/
0 
        
 
$1   
$$
$    
   
  
$*           
$+         
$,            
 
$-       
$.
$/  
      
 ´
  
$0          
1
$        
  

            
*
  
+
|2004 Trҫn Minh Châu.
FOTECH. VNU.
49
,     
        
-            
.       
/ † 
0       
  ü†
*1     
*$
*  
        
    
**             
*+
*,    
*-
*.              
*/
          
*0
         
+1
+$                   
+      
+*
         
++
+,     

   


+-
+.   
  

|2004 Trҫn Minh Châu.


FOTECH. VNU.
50
          
          
          
           † 
            ü†
          
          
          
          
          
  ;
  

          


          
          
          
          
          
          
          
          
          
  
   |2004 Trҫn Minh Châu.
   FOTECH. VNU.
51
—  "H4  )
)I C 6 &:"
D vòng lһp điӅu khiӇn bҵng con đӃm đòi hӓi
± Tên cӫa biӃn điӅu khiӇn(control variable) hay biӃn đӃm
(loop counter)
± iá trӏ khӣi tҥo cӫa biӃn điӅu khiӇn
± ĐiӅu kiӋn kiӇm tra giá trӏ cuӕi cùng
± Tăng€giҧm biӃn đӃm khi thӵc hiӋn vòng lһp

  , #   --  %.

/ %# 0 , # 1 + 2 3 -- ## , 


, 11 , # 11 # % -- 
% , #
44, # --  ,# # 
5
| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.
52
$   ;  ;

  ´
    
*
    
+ †  
,  
 ü†
-   
.
/ 
        
 
0   
$1
$$ 
        
$
$* 
         
  
$+
 
       
 
$, 
   

$- 
$.     
$/ 

$0      
 

   



1
;
$   
   A




|2004 Trҫn Minh Châu.


FOTECH. VNU.
53

 )I CB&


D Dҥng tәng quát cӫa vòng 
   ! ! "  # 
 

D Ví dө
 
   
   
  

 
    
± In các sӕ nguyên tӯ 1 đӃn 10
Không có dҩu ӣ cuӕi

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


54
$   A  A

  ´
          

*
    
+ †  
,  
 ü†
-   
.
/ 
        
 
0   
$1
$$  "      
    
 
$    
      
  
$*
$+  
   
   
   
$,
 
     
$- 
$.      
 

    


$/ 
;
$0   
  
A




|2004 Trҫn Minh Châu.


FOTECH. VNU.
55

 )I CB&


D vòng  thưӡng có thӇ viӃt đưӧc thành vòng
 tương đương
 
 ! !
 
"  # $ !$


D Khӣi tҥo và tăng biӃn đӃm


± nӃu sӱ dөng nhiӅu biӃn đӃm, sӱ dөng dҩu phҧy đӇ tách
     #   #     # 

  #     

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


56
$     

     
*
    
+ † 
,  
 ü†
-   
. † 
/ 
        
   ü†
0   
$1
$$         
$
$*   
        
$+               
$,         
$-
$.
             
$/     

   


$0
1   
  

  

|2004 Trҫn Minh Châu.


FOTECH. VNU.
57

iFJ5KJ )I B&

D Chương trình tính lãi kép (compound interest)


D M͡t ngưͥi đ̯u tư $1000.00 và ͡t tài kh̫n ti͇t ki͏ vͣi lãi ṷt
5%. Gi̫ ͵ ti͉n lãi đưͫc g͡p vͣi v n tng tài kh̫ng, t nh và in a 
ti͉n tng tài kh̫n và cu i i n tng vòng 10 n. S͵ ng
công thͱc au đ͋ t nh c
c kh̫n ti͉n đó:

n
a = p(1+)

D p : khoҧn đҫu tư ban đҫu (i.e., the principal),


 : lãi suҩt hàng năm, (interest rate)
n : sӕ năm, và
a : lưӧng tiӅn có trong tài khoҧn (amount on deposit)
vào cuӕi năm thӭ n

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


58
$     

  
 
   
*
    
+ † 
,  
 ü†
-   
.  
/   
0
$1
    
  header cҫn cho
$$ hàm  (chương trình sӁ
$    không dӏch nӃu không có khai
$*   
 báo này).
$+
$,
  
          
 
$-
$. 
        
 
$/   
$0
1       
$   
        
 
           
*

|2004 Trҫn Minh Châu.


FOTECH. VNU.
59
+    
  
,
          L      
- Đһt đӝ rӝng cӫa output ít nhҩt 21 ký
.     ´    tӵ. NӃu output ít hơn 21 ký† 
tӵ thì căn
/
     
   phҧi. ü†
0
*1 

      
    
*$              
  = më y
*
** 

     
   
*+   
         
*,
*-      
*.
        
*/          
*0
+1    
+$
+      
 

   


+*
++   
  

|2004 Trҫn Minh Châu.


FOTECH. VNU.
60
  L  
 
 
 A;
† 
 
 A;
 ü†
; 
A A
 AA;
 
 ;

Các sӕ đưӧc căn phҧi do các lӋnh


setw (vӟi tham sӕ có giá trӏ 4 và 21).

|2004 Trҫn Minh Châu.


FOTECH. VNU.
61

 4A4 5D


D 

± Test biӃn vӟi nhiӅu giá trӏ
± chuӛi các nhãn

± trưӡng hӧp   không bҳt buӝc



   


   
  

  
   
    







   
  
  

  
 

     
  
   

  
 

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.
62

 4A4 5D

#

  ,
#  , 0
2  

$%
#

#

 6 ,
# 6 , 0
2  
$%
#





#

 . ,
# . , 0
2  
$%
#

  , 0
2

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


63

 4A4 5D

D Ví dө sҳp tӟi
± Chương trình đӑc Ӄp loҥi điӇm (A-F)
± HiӋn sӕ lưӧng mӛi Ӄp loҥi đưӧc nhұp
D Chi tiӃt vӅ các ký tӵ
± Các ký tӵ đơn thưӡng đưӧc lưu bҵng kiӇu dӳ liӋu
 
D
  sӕ nguyên 1-byte, có thӇ đưӧc lưu dưӟi dҥng các giá trӏ 
± Có thӇ coi ký tӵ là  hoһc
 
D 97 là biӇu diӉn dҥng sӕ cӫa chӳ µa¶ thưӡng (ASCII)
D dùng cһp nháy đơn đӇ lҩy biӇu diӉn chӳ cӫa ký tӵ


  
 
   $ $     
 
  

    $ $    
In ra dòng:


 
    
 A

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


64
$     

      
*
    
+ † 
,  
 ü†
-  

.   
/
0 
        
 
$1   
$$
$       
$*         L
$+         
$, 
       
$-         
$.         
$/
$0
           
1     @
 
       
$

|2004 Trҫn Minh Châu.


FOTECH. VNU.
65
        ´ ´   %

*    
     @     kӃt thúc lӋnh 
 và chương trình
+ chҥy tiӃp tҥi lӋnh đҫu tiên sau cҩu trúc 
.
,    
      † 
- 
      
  
     ü†
.

   sӱ dөng dot notation
/
 $L$      
 L
(ký hiӋu kiӇu dҩu chҩm). Hàm này
0
 $ $   

đӑc mӝt ký tӵ tӯ bàn phím (sau khi
*1    
 
nhҩn nt ), và gán giá trӏ đó cho
*$    
    

biӃn  .
*
Các lӋnh gán là biӇu thӭc có
**
 $$      
 
   trҧ vӅ EOF (end-of-
giá trӏ bҵng biӃn bên trái dҩu
*+
 $ $   
 file), sau khi ký tӵ EOF đưӧc nhұp,
gán . iá trӏ cӫa lӋnh này
*,    
  đӇ đánh dҩu kӃt thúc cӫa dӳ liӋu vào.
bҵng giá trӏ trҧ vӅ bӣi hàm
*-     
 EOF có thӇ là ctrl-d hoһc ctrl-z, tùy

  .
*. theo hӋ điӅu hành. (MS-Windows:
*/
 $$  điӇm
Đһc  này 
còn 

đưӧc sӱ  ctrl-z, Uni €Linu : ctrl-d)
*0
 $
$  
dөng 

đӇ khӣi tҥo nhiӅu
biӃn
+1 
  lúc:
mӝt 


+$    



 
+

So sánh   (mӝt biӃn  )


vӟi biӇu diӉn sӕ cӫa L và .

|2004 Trҫn Minh Châu.


FOTECH. VNU.
66
+*
 $$      
 
++
 $ $   

+,    
 
+-     
 † 
+. ü†
KiӇm tra này là cҫn thiӃt vì nt  đưӧc nhҩn sau
+/
 $$      
  Ӄp loҥi đưӧc nhұp. ViӋc nhҩn nt 
mӛi chӳ cái
+0
 $ $   
 tҥo mӝt ký tӵ uӕng dòng cҫn đưӧc loҥi bӓ. Cũng
,1   như vұy, ta muӕn bӓ qua các ký tӵ trҳng.
 
 
,$     

,
,*
 $ $    
,+
 $ $  
,,
 $ $   
  
,-     
 Lưu ý trưӡng hӧp   bao gӗm tҩt
,. cҧ các trưӡng hӧp còn lҥi (chưa ét đӃn).
,/    

   
 

,0
  "

      
-1          
-$         
  
-
-*    

-+
-,    
--
|2004 Trҫn Minh Châu.
FOTECH. VNU.
67
-.        
-/
       
     
-0   L          L  
.1                † 
.$     
          ü†
.               
.*               
.+   
.,
.-      
 

   


..
./   
  

|2004 Trҫn Minh Châu.


FOTECH. VNU.
68
      
   @
 
    

 † 

 ü†

L



"

           

L

&'

   
     
L 
 
 
 
 
|2004 Trҫn Minh Châu.
FOTECH. VNU.
69

   C &LD >

D Tương tӵ cҩu trúc 


± KiӇm tra điӅu kiӋn tiӃp tөc lһp ӣ
cuӕi, không kiӇm tra ӣ đҫu

 
± Thân vòng lһp chҥy ít nhҩt mӝt
lҫn
D Công thӭc
  
  
  
 
   


| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


70
$     

 %       

*
    
+ † 
,  
 ü†
-   
. † 
Chú ý phép tăng trưӟc (preincrement)
/ 
        
   ü†
0    trong phҫn kiӇm tra điӅu kiӋn lһp.
$1
$$ 
       
 
$
$*  
$+
 
       
 
$,  
       
$-
$.
   
$/
$0      
 

   


1
$   
  

     ; A   

|2004 Trҫn Minh Châu.


FOTECH. VNU.
71

   >4) &>

D  
± Thoát ngay ra khӓi các cҩu trúc , , ,


± Chương trình tiӃp tөc chҥy tҥi lӋnh đҫu tiên ngay sau cҩu
trúc
D thưӡng đưӧc sӱ dөng đӇ
± Thoát khӓi vòng lһp sӟm hơn bình thưӡng
± bӓ qua phҫn còn lҥi cӫa 


| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


72
$   ;  ;

 %         

*
    
+
†  
,  
    
-   
ü†
      
 
.
/ 
        
 
0   
$1
$$
$     
    
     
$*
$+    
$,           Thoát khӓi vòng  khi
$-   đưӧc thӵc thi.
$.        
$/     
$0           
1
$
        
  

*    
+

         
      
-
.      
 

   


/
0   
   |2004 Trҫn Minh Châu.
FOTECH. VNU.
73

   >4) &>

D
 
± đưӧc dùng trong , , 
± bӓ qua phҫn còn lҥi cӫa thân vòng lһp
± chҥy tiӃp lҫn lһp tiӃp theo
D vӟi các vòng  và 
± thӵc hiӋn kiӇm tra điӅu kiӋn lһp ngay sau lӋnh
 
D vӟi vòng 
± biӇu thӭc tăng€giҧm biӃn đӃm đưӧc thӵc hiӋn
± sau đó, điӅu kiӋn lһp đưӧc kiӇm tra

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


74
$   A  A

 % 
       

*
    
+ †  
    ; A   
,  
 ü†
%
      
 
-   
.
/ 
        
 
0   
$1 Bӓ qua phҫn còn lҥi cӫa thân vòng
$$     , nhҧy đӃn lҫn lһp tiӃp theo.
$           
$*
$+     
         
$,     
$-
     
     
$.
$/
        
  
$0
1      

$

   %
      
 
*   
+
,      
 

   


-
.   
   |2004 Trҫn Minh Châu.
FOTECH. VNU.
75
Î 
   
?  >;= & 4""
D Lұp trình cҩu trúc ± Structured programming
± Chương trình dӉ hiӇu, test, tìm lӛi (debug) và dӉ sӱa đәi hơn
D Các quy tҳc lұp trình cҩu trúc
± ChӍ sӱ dөng các cҩu trúc điӅu khiӇn mӝt đҫu vào mӝt đҫu ra
± Quy tҳc
1) Bҳt đҫu bҵng mӝt sơ đӗ khӕi đơn giҧn nhҩt
2) Mӛi hình chӳ nhұt (hành đӝng) có thӇ đưӧc thay bҵng mӝt
chuӛi gӗm 2 hình chӳ nhұt khác
3) Mӛi hình chӳ nhұt (hành đӝng) có thӇ đưӧc thay bҵng mӝt cҩu
trúc điӅu khiӇn tùy ý (tuҫn tӵ, if, if€else, switch, while,
do€while hoһc for)
4) Các quy tҳc 2 và 3 có thӇ đưӧc áp dөng nhiӅu lҫn và theo thӭ
tӵ tùy ý

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.


76
Î 
   
?  >;= & 4""
Mô tҧ quy tҳc 3 (thay mӝt hình chӳ nhұt tùy ý bҵng mӝt cҩu trúc điӅu khiӇn)

Ûui x  3

Ûui x  3 Ûui x  3

| 2004 Trҫn Minh Châu. FOTECH. VNU Chương 2.

You might also like