Điều kiện trong lập trình C

82
Điều kiện trong lập trình C

Mục tiêu bài học

  • Tìm hiểu về cấu trúc lựa chọn
    – Lệnh if
    – Lệnh if – else
    – Lệnh nhiều if
    – Lệnh if lồng nhau
  • Lệnh switch

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

  • Các câu lệnh điều kiện cho phép chúng ta thay đổi hướng thực hiện của chương trình
  • Một câu lệnh điều kiện trả về giá trị đúng hoặc sai
  • Ví dụ: Để xác định một số là số chẵn hay số lẻ chúng ta tiến hành như sau :
    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Ẻ”

Các cấu trúc lựa chọn

C cung cấp hai dạng câu lệnh lựa chọn

  • Lệnh if
  • Lệnh switch

Lệnh if

Cú pháp:

if (expression)
statement;

Nếu biểu thức của lệnh if có giá trị đúng (khác 0) thì lệnh (hoặc khối lệnh ) theo sau lệnh if được thực thi

Chương trình hiển thị các giá trị dựa vào một điều kiện.

Ví dụ:

#include <stdio.h>
void main(){
int x, y;
char a = ‘y’; 
x = y = 0;
if (a == ‘y’){
x += 5;
printf(“The numbers are %d and \t%d”,x,y);
}
}

Lệnh if – else

if (expression)
statement;
else
statement;
  • Nếu biểu thức của if trả về giá trị true, khối lệnh theo sau lệnh if được thực thi
  • Nếu biểu thức của if không trả về giá trị true thì các lệnh theo sau else được thực thi
  • Lệnh else là một tùy chọn. Lệnh else được dùng để thực thi các lệnh khi biểu thức trong if trả về giá trị false

Chương trình xác định một số là số chẵn hay lẻ

Ví dụ:

#include <stdio.h>
void main(){ 
int num ,res ; 
printf(“Enter a number :”);
scanf(“%d”,&num);
res = num % 2;
if (res == 0)
printf(“Then number is Even”);
else
printf(“The number is Odd”);
}

Lệnh if–else–if

if (expression1)
statement1;
else if (expression2)
statement2;
else if (expression3)
statement3;
…
else
statement;
  • Lệnh if – else – if còn được gọi là lệnh if-else-if bậc thang
  • Các biểu thức được xác định giá trị theo hướng từ trên xuống

Lệnh if lồng nhau

  • Lệnh if lồng nhau là một lệnh if được đặt trong một lệnh if hoặc else khác
  • Trong C, một lệnh else luôn kết hợp với một lệnh if gần nhất cùng khối lệnh nếu lệnh else đó chưa được kết hợp với một lệnh if nào khác
  • Cú pháp:
if (exp1)
{
if (exp2) stetement1;
if (exp23) stetement1;
else statement3; /*with if (exp3)*/
}
else statement4; /*with if (exp1)*/
  • Lệnh else bên trong được kết hợp với if(exp3)
  • Theo chuẩn ANSI, một trình biên dịch hỗ trợ ít nhất là 15 mức lồng nhau
    Ví dụ:
#include <stdio.h>
#include <conio.h>
void main (){
int x, y; 
x = y = 0;
clrscr ();
printf (“Enter Choice (1 - 3) : “);
scanf (“%d”, &x);
if (x == 1){
printf(“\nEnter value for y (1 - 5) : “);
scanf (“%d”, &y);
if (y <= 5)
printf(“\nThe value for y is : %d”, y);
else
printf(“\nThe value of y exceeds 5 “);
}
else printf (“\nChoice entered was not 1”);
}

Lệnh switch

  • Lệnh switch là một bộ lựa chọn đa hướng, nó so sánh giá trị của một biểu thức với một danh sách các hằng số nguyên hoặc hằng ký tự
  • Khi gặp một sự so sánh khớp, các lệnh kết hợp với hằng đó được thực thi

Xem lại đoạn code sau

#include <stdio.h>
#include <conio.h>
main() {
int x;
x = 0;
clrscr ();
printf(“Enter Choice (1 - 3) : “);
scanf(“%d”, &x);
if (x == 1)
printf (“\nChoice is 1”);
else if ( x == 2)
printf (“\nChoice is 2”);
else if ( x == 3)
printf (“\nChoice is 3”);
else printf (“\nInvalid Choice “);
}
  • Là trường hợp đặc biệt của if. Khi biểu thức điều kiện chỉ bao gồm phép so sánh bằng với vế phải là 1 hằng
  • Cú pháp:
switch (expression)
{
case constant1:
statement sequence
break;
case constant2:
statement sequence
break;
case constant3:
statement sequence
break;
.
.
.
default:
statement sequence
}

Viết lại bằng switch:

#include <stdio.h>
#include <conio.h>
main() {
int x;
x = 0;
clrscr ();
printf(“Enter Choice (1 - 3) : “);
scanf(“%d”, &x);
switch(x){
case 1:
printf (“\nChoice is 1”);break;
case 2:
printf (“\nChoice is 2”);break;
case 3:
printf (“\nChoice is 3”);break;
default:
printf (“\nInvalid Choice “);}
}

Chương trình kiểm tra một ký tự thường được nhập vào là một nguyên âm, là ký tự ‘z’ hay là một phụ âm

Ví dụ:

#include <stdio.h>
#include <conio.h>
main (){
char ch;
clrscr ();
printf (“\nEnter a lower casedalphabet (a - z) : “);
scanf(“%c”, &ch);
if (ch < ‘a’ || ch > ‘z’)
printf(“\nCharacter not a lower cased alphabet”);
else
switch (ch) {
case ‘a’ :
case ‘e’ :
case ‘i’ :
case ‘o’ :
case ‘u’ :
printf(“\nCharacter is a vowel”);
break;
case ‘z’ :
printf (“\nLast Alphabet (z) was entered”);
break;
default :
printf(“\nCharacter is a consonant”);
break;
}
}