Bai 3- Dong dieu khien.pdf

download Bai 3- Dong dieu khien.pdf

of 16

Transcript of Bai 3- Dong dieu khien.pdf

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    1/41

    TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

    Ngôn ngữ lập trình C và C++

    Bài 3: Dòng Điều Khiển

    TS. Đỗ Đăng Khoa

    Bộ môn Cơ học Ứng dụngViện Cơ khí

    http://chud-dhbkhn.blogspot.com/

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    2/41

    Điều khiển Tuần Tự: Lệnh Đơn & Lệnh Phức

    Các câu lệnh được xử lýtuần tự theo thứ tự từ trên

    xuống dưới

    Lệnh đơn: là một câu lệnhriêng lẻ được kết thúc bằng

    {

    int min i

    Ví dụ:

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

    u c m p y   ;   .

    Lệnh phức: Nhóm nhiềulệnh đơn thành một lệnhphức bằng cách rào chúngbên trong các dấu ngoặcnhọn {...}.

     

    min = (i < j ? i : j);cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    3/41

    Dòng điều khiển

     Điều khiển rẽ nhánh

      Câu lệnh điều kiện if 

      Câu lệnh lựa chọn switch

     Điều khiển chu trình

     

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

      u r n   w e  Chu trình do while

     Chu trình for 

      Lệnh continue: bắt đầu chu trình tiếp theo   Lệnh break: kết thúc chu trình

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    4/41

    Điều khiển Rẽ Nhánh

    Cho phép thay đổi hướng thực hiện của chươngtrình

    Biểu thức điều kiện trả về giá trị đúng hoặc sai

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

    ụ: c n m s s c n ay s :1) Nhập vào một số2) Chia số đó cho 2 để xác định số dư3) Nếu số dư là 0, số đó là “SỐ CHẴN”

    4) Ngược lại số dư không bằng 0, số đó là“SỐ LẺ”

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    5/41

    Điều khiển Rẽ Nhánh: If 

    Cú pháp:if (điều kiện)

    lệnh đơn / lệnh phức;Ý nghĩa:Nếu biểu thức điều kiện có giá trị

     

    Điều kiện

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

    ng rue , n eo saulệnh if được thực thi.Điều kiện:   biến, hằng, biểuthức, hàm

    Chú ý: “đúng” là một giá trịkhác 0“sai” là giá trị 0

    Lệnh Đơn/ Lệnh Phức

    Đúng  Sai

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    6/41

    Điều khiển Rẽ Nhánh: If 

    •Ví dụ 1: lấy trị tuyệt đốiif(value < 0)

    value = -value;•Vídụ2: xếp 2 số từ nhỏ đến lớn

     

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

    f(value1 > value2){temp = value1;value1 = value2;

    value2 = temp;}

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    7/41

    Điều khiển Rẽ Nhánh: If - Else

    Cú pháp:if (điều kiện)

    lệnh đơn 1 / lệnh phức 1;else

    lệnh đơn 2 / lệnh phức 2; 

    Biểu thứcđiều kiện

    TRƯỜNG ĐẠI HỌC

    BÁCH KHOA HÀ NỘI

     Nếu biểu thức điều kiện trả vềgiá trị đúng, lệnh đơn 1/ lệnh phức1 được thực hiện.

    Nếu biểu thức của if không trả vềgiá trị đúng thì lệnh đơn 2/ lệnhphức 2 được thực hiện.

    Lệnh đơn 1/

    Lệnh phức 1

    Đúng   Sai

    Lệnh đơn 2/

    Lệnh phức 2

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    8/41

    Điều khiển Rẽ Nhánh: If - Else

    •Ví dụ 1:   tìm số lớn hơntrong 2 số

    if(value1 > value2)larger = value1;

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    elselarger = value2;

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    9/41

    Điều khiển Rẽ Nhánh: If - Else

    Ví dụ 2: Kiểm tra một số là chẵn hay lẻ#include 

    int main (){

    int n;

    #include 

    using namespace std;int main (){

    int n;cout  n;

    if (n%2 == 0)cout 

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    10/41

    Điều khiển Rẽ Nhánh: If – Else - If 

    Cú pháp:if  (điều kiện 1)

    lệnh đơn 1 / lệnh phức 1;else if (điều kiện 2 )

    lệnh đơn 2 / lệnh phức 2;

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    .......else if (điều kiện n-1)lệnh đơn n-1 / lệnh phức n-1;

    else

    lệnh đơn n / lệnh phức n;

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    11/41

    Điều khiển Rẽ Nhánh: If – Else - If Ý nghĩa:Khi biểu thức điều kiện mang

    nhiều giá trịCác biểu thức được kiểm tra theothứ tự đã viết

    if Ngày =={

    học Toán;

    }

    else if Ngày=={

    học C++;

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    thì câu lệnh tương ứng sẽ đượcthực hiện và rồi kết thúc toàn bộkết cấuPhần else xử lý khi không có điêukiện nào được thỏa mãn. Phần nàycó thể được bỏ đi

    else if Ngày=={

    chơi;

    }

    else{ngủ;

    }

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    12/41

    Điều khiển Rẽ Nhánh: If – Else - If 

    •Ví dụ 1:if(diem_so >= 90)

    cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    13/41

    Điều khiển Rẽ Nhánh: If – Else - If 

    #include 

    #include using namespace std;

    int main ()

    {

    cout 

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    14/41

    Điều khiển Rẽ Nhánh: If lồng nhau

    Lệnh if lồng nhau là mộtlệnh if được đặt trong mộtlệnh if hoặc else khácSự nhập nhằng khi dẫy if lồng nhau (else luôn được

    int a=-1, b=1,c=1;

    if(a>0)

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    g n v ng c e segần nhất trước đó)Nên sử dụng móc nhọn{..} để làm rõ các khối lệnh

    trong mọi trường hợp

    if(b>0)c = 2;

    else

    c = 3;

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    15/41

    Điều khiển Rẽ Nhánh: Switch

    Cú pháp:Switch (Biểu thức ){

    case giá trị hằng 1:khối lệnh 1;

     

    Điều kiện

    Khối lệnh 1Case 1

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    case g r ng :khối lệnh 2;......

    default:

    khối lệnh n;}

    Khối lệnh 2Case 2

    Khối lệnh ndefault

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    16/41

    Câu lệnh lựa chọn switch

    Cú phápswitch (expression){case value1:Statement-1;break;

    Biến, hằng, biểu thức,

    hàm (kiểu trả về) có kiểukí tự hoặc số nguyên

    Hằng kí tự hoặc nguyên

    - Tùy chọn- Không có lệnh break, tất cả các

    case sẽ được thực hiện sau khiso khớ iá trị

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    case va ue :Statement-2;break;......

    default:Statement;}

    - Dùng  break  để thoát ngay khỏiswitch   (không phải tiếp tụcchuyển sang các case còn lại).

    - Tùy chọn

    - Các lệnh trong default   sẽ đượcthực hiện nếu tất cả các   caseđều không khớp giá trị

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    17/41

    Câu lệnh lựa chọn switch

    Cú pháp

    Thứ tự của các case và default tùy ý

    switch (expression){case value2:Statement-2;break;

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    default:Statement;case value1:Statement-1;break;

    ......}

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    18/41

    Câu lệnh lựa chọn switch

    Cú pháp

    Gộp lại các case để thực hiện cùngcác lệnh

    switch (expression){case value1:case value2:Statement-x;

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    break;......

    default:Statement;

    }

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    19/41

    Điều khiển Rẽ Nhánh: Switch

    Ý nghĩa:•Tạo quyết định nhiều nhánh đặc biệt (Nếu dùng if 

    rẽ nhiều nhánh khiến chương trình khó đọc )• Kiểm tra xem một biểu thức có ứng với một trongsố giá trị hằng hay không (từ đầu) và nhảy đến lệnh

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    • Dùng câu lệnh  break  để thoát ra ngay khỏi switchkhi không muốn kiểm tra tiếp các trường hợp cònlại

    •Không cần bao dãy lệnh bởi cặp dấu {}•Nhánh default có thể nằm bất cứ đâu, không cần ởcuối cùng

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    20/41

    Điều khiển Rẽ Nhánh: Switch

    Minh họa switch và case

    int x,y,z;char  a,b;float f;hàm func() có giá trị trả về là số nguyên.

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    switch đúng   switch sai   case đúng   case saiswitch(x)   switch(f)   case 3:   case 2.5:

    switch(x>y)   switch(x+2.5)   case 'a‘:   case x:

    switch(a+b-2)   case 1+2:   case x+2:

    switch(func(x,y))   case 'x'>'y‘:   case 1,2,3:

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    21/41

    Điều khiển Rẽ Nhánh: Switch

    •Ví dụ:int th;

    cout > th ;

    switch (th) {

    case 1: case 3: case 5: case 7: case 8: case 10:

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    case 12: cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    22/41

    Điều khiển Vòng Lặp

    Vòng lặp: Một đoạn mã lệnh trong chương trìnhthực hiện lặp đi lặp lại cho đến khi một điều kiệnxác định được thỏa mãn

    Ba điều khiển vòng lặp:

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    • Vòng lặp For • Vòng lặp While• Vòng lặp Do.. While

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    23/41

    Điều khiển Vòng Lặp- For 

    Cú pháp:for (khởi gán biến lặp ;điều kiện lặp ; thay đổibiến lặp){ khối lệnh lặp; }

      Điều kiện lặp

    Khởi gán biến lặp

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    •Ví dụ:int i;for(i=1; i

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    24/41

    Điều khiển Vòng Lặp- For 

    Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì

    thực hiện khối lệnh và cập nhật, sai thì dừng.

    Cú phápfor (initialization;condition;incr/decr){

    Statement

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    - Thực hiện đầu tiên- Các lệnh khai báo hoặc

    khởi tạo biến

    for (i = 0;   Khởi tạo

    for (i = 0, j = 5;for (int i = 0;   Khai báofor (int i = 0, j = 0;  và khởi tạo

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    25/41

    Điều khiển Vòng Lặp- For 

    Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì

    thực hiện khối lệnh và cập nhật, sai thì dừng.

    Cú phápfor (initialization;condition;incr/decr){

    Statement

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    - hằng, biến, biểu thức vàhàm

    - Nếu đúng, thực hiện cáclệnh trong chu trình

    - Nếu   sai   thì kết thúc chu

    trình

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    26/41

    Điều khiển Vòng Lặp- For 

    Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì

    thực hiện khối lệnh và cập nhật, sai thì dừng.

    Cú phápfor (initialization;condition;incr/decr){

    Statement

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    - Thực hiện ngay sau cáclệnh trong chu trình

    - Các lệnh cập nhật cácbiến đã khởi tạo (thườnglà tăng/giảm các biến

    đếm)for (...; ....; i++)for (...; ....; i ++, j ++)

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    27/41

    Điều khiển Vòng Lặp- For 

    Thực hiện khởi tạo. Lặp quá trình kiểm tra điều kiện đúng thì

    thực hiện khối lệnh và cập nhật, sai thì dừng.

    Cú phápfor (initialization;condition;incr/decr){

    Statement

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    28/41

    Điều khiển Vòng Lặp- For 

    Ý nghĩa: Khởi gán biến lặp: là một lệnh gán để khởi tạo biến điều

    khiển của vòng lặp

     Điều kiện lặp: là một biểu thức quan hệ qui định khi nào

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    v ng p s c

    Thay đổi biến lặp: định nghĩa cách thức thay đổi của biếnđiều khiển vòng lặp mỗi khi vòng lặp được thực thi

    Ba phần của vòng lặp for  phải được phân cách bởi dấuchấm phẩy(;)

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    29/41

    Điều khiển Vòng Lặp- For 

    Ý nghĩa:Ba phần này có thể để trống nhưng vẫn phải phân cách bởidấu chấm phẩy ;

    Phần lệnh tạo nên thân vòng lặp có thể là một lệnh đơn

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    hoặc một lệnh phức (một tập nhi u lệnh)Vòng lặp for  tiếp tục được thực thi khi biểu thức kiểm trađiều kiện vẫn có giá trị đúng(true). Khi điều kiện trở thành

    sai(false), chương trình thực hiện lệnh theo sau vòng lặp   for 

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    30/41

    Điều khiển Vòng Lặp- For 

    •Ví dụ: tính n!int n, giai_thua, i;

    cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    31/41

    Điều khiển Vòng Lặp- For 

    Một số trường hợp đặc biệt:•Vòng lặp   for  có thể được mở rộng bằng cách chứa nhiềugiá trị khởi tạo và nhiều biểu thức tăng trị trong đặc tả củavòng lặp for #include

     

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

     

    void main(){int i, j , max;coutmax;for(i = 0 , j = max ; i

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    32/41

    Điều khiển Vòng Lặp- For 

    •Vòng lặp   for  có thể để trống các biểu thứcChu trình sau là một chu trình vô hạn:

    for ( ; ; ) {...

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    }

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    33/41

    Điều khiển Vòng Lặp- For 

    Vòng lặp for  có thể lồng nhau:

    for (i = 1; i

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    34/41

    Điều khiển Vòng Lặp- dowhile

    Cú pháp:do{

    khối lệnh;} while (điều kiện);

    Ý nghĩa:

    Khối lệnh

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

      n c a v ng p ược ựctrước khi biểu thức điều kiện đượckiểm tra Khi điều kiện mang giá trị sai

    (False), vòng lặp do while sẽ được kếtthúc, và điều khiển chuyển đến lệnhxuất hiện ngay sau lệnh  while

    ng

    sai

    Điều kiện

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    35/41

    Điều khiển Vòng Lặp- do..while

    •Ví dụ: tính n!int n, giai_thua, i;

    cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    36/41

    Điều khiển Vòng Lặp- while

    Cú pháp:while (điều kiện){

    khối lệnh;}Ý nghĩa:

    Điều kiện

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    •Vòng lặp   while lặp lại các lệnhtrong khi một biểu thức điềukiện mang giá trị đúng (True)   Khối lệnh

    đúng sai

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    37/41

    Điều khiển Vòng Lặp- while

    •Ví dụ: tính n!int n, giai_thua, i;

    cout

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    38/41

    Cách chọn vòng lặp?

    Vòng lặp For Dùng khi số lần lặp biết trước

    Vòng lặp while•Dùng khi số lần lặp chưa biết trước•Điều kiện lặp hay dừng phụ thuộc biểu thức logic

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    •Sử dụng khi khả năng thực hiện kh i lặp không xảyra lần nào

    Vòng lặp do-whileGiống với vòng lặp while, khác biệt duy nhất là sửdụng khi ta biết chắc chắn khối lệnh lặp phải đượcthực hiện ít nhất một lần

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    39/41

    Một số lệnh chuyển điều khiển

    Lệnh Break: Lệnh break được sử dụng để kết thúc một mệnh đề

    case trong câu lệnh switch Nó cũng có thể được sử dụng để kết thúc ngang

    giữa vòng lặp 

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

     Khi gặp lệnh break, vòng lặp sẽ k t thúc ngay vàđiều khiển được chuyển đến lệnh kế tiếp bên ngoàivòng lặp

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    40/41

    Một số lệnh chuyển điều khiển

    Lệnh Continue:

     Lệnh continue dùng để bắt đầu thực hiện lần lặp kếtiếp của vòng lặp

     Khi gặp lệnh continue, các câu lệnh còn lại trong 

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    n v ng p qua v u n ược c uy nđến lần lặp kế tiếp

  • 8/19/2019 Bai 3- Dong dieu khien.pdf

    41/41

    Một số lệnh chuyển điều khiển

    Lệnh Continue:

    Đoạn mã sau xử lý các phần tử dương trong bảng a,bỏ qua các giá trị âm.

     

    TRƯỜNG ĐẠI HỌCBÁCH KHOA HÀ NỘI

    or = ; < n; ++if (a[i] < 0) /* nhảy qua các

    phần tử âm */continue;

    ... /* xử lý phần tử dương*/