IV.2 Cấu trỳc rẽ nhỏnh

Một phần của tài liệu §¹i häc quèc gia hµ néi khoa c«ng nghÖgi¸o tr×nh tin häc c¬ së phÇn lËp tr×nh potx (Trang 45 - 50)

IV Cỏc cấu trỳc điều khiển chương trỡnh

IV.2 Cấu trỳc rẽ nhỏnh

Chỳng ta hóy xem lại chương trỡnh trong vớ dụ 2 trờn, điều gỡ xảy ra nếu dữ liệu khụng thoả món, tức là khi bạn nhập 3 số a,b,c từ bàn phớm nhưng chỳng khụng thoả món là số đo 3 cạnh một tam giỏc trong khi chương trỡnh của chỳng ta vẫn cứ tớnh và in diện tớch.

Rừ ràng là cú hai khả năng:

− Nếu a,b,c thoả món là 3 cạnh tam giỏc thỡ tớnh chu vi, diện tớch và in kết quả

− Ngược lại phải thụng bỏo dữ liệu khụng phự hợp

Như vậy cần phải cú một sự lựa một trong hai nhỏnh tuỳ vào điều kiện a,b,c cú là ba cạnh một tam giỏc hay khụng. Điều này gọi là rẽ nhỏnh, và C cung cấp cho chỳng ta một cấu trỳc điều khiển rẽ nhỏnh if. Cỳ phỏp dạng đủ if (bt_E) S1; else S2; hoặc dạng khuyết if (bt_E) S1; Trong cỳ phỏp trờn S1, S2 chỉ là 1 lệnh, <bt_E> là biểu thức điều kiện của if Sự hoạt động của cấu trỳc if:

Trước hết biểu thức điều kiện <bt_E> được tớnh, cú hai khả năng:

→ Nếu giỏ trị của <bt_E> là ‘đỳng’ (!=0) thỡ S1 được thực hiện và ra khỏi cấu trỳc if.

→ Ngược lại nếu <bt_E> là ‘sai’ thỡ

- với dạng đầy đủ : thực hiện S2 rồi kết thỳc if - với dạng khuyết : kết thỳc cấu trỳc if

Vớ d 2.1: chương trỡnh nhập hai số nguyờn a, b từ bàn phớm, in số lớn nhất ra màn hỡnh. #include <stdio.h>

#include <stdio.h> void main() { int a,b;

printf(“\nNhap so thu nhat : “); scanf(“%d”, &a);

printf(“\nNhap so thu hai : “); scanf(“%d”, &b);

if (a>b)

printf(‘\nSo lon nhat la %d”, a); else

printf(‘\nSo lon nhat la %d”, b); getch();

}

Vớ dụ 2.2: Viết chương trỡnh theo vớ dụ 1.2 với yờu cầu nếu a,b,c thỏa món là 3 cạnh một tam giỏc thỡ tớnh và in chu vi, diện tớch, nếu khụng thoả món thỡ in thụng bỏo ra màn hỡnh. Giải: Chỳng ta biết 3 số a, b, c là 3 cạnh một tam giỏc nếu nú thoả món tớnh chất tổng hai cạnh lớn hơn cạnh thứ ba. Theo cỏch tớnh từ vớ dụ 1.2 chỳng ta cú chương trỡnh:

#include <stdio.h> #include <conio.h> #include <math.h> void main() { float a,b,c, p,q,s;

printf("Nhap so do 3 canh cua tam giac "); printf("\na = "); scanf("%f", &a);

printf("\nb = "); scanf("%f", &b); printf("\nc = "); scanf("%f", &c);

if(a+b>c)&&(a+c>b)&&(b+c>a) { p = a+b+c; q = p/2; s = sqrt(q*(q-a)*(q-b)*(q-c)); printf(" \n\nChu vi la %5.1f,\ dien tich la %5.2f ",p,s); } else

printf(“\nBa so da cho la ba canh tam giac”); getch();}

Lưu ý: Cấu trỳc if cũng như cỏc cấu trỳc khỏc của ngụn ngữ C, chỳng cú thể lồng nhau, tức là chỳng cú thể chứa cỏc cấu trỳc điều khiển khỏc.

Vớ dụ 2.3: Chương trỡnh giải phương trỡnh bậc 2: ax2+ bx + c = 0, với cỏc hệ số a, b, c là cỏc số thực nhập từ bàn phớm.

Giải: Để tỡm nghiệm của phương trỡnh bậc 2 một ẩn ta thực hiện theo cỏc bước sau: ƒ Nhập a,b,c từ bàn phớm

ƒ Tớnh delta = b2 + 4*a*c

ƒ Nếu delta = 0 (phương trỡnh cú nghiệm kộp x) à tớnh nghiệm x = -b/(2*a).

ƒ Ngược lại

à Nếu delta > 0 (phương trỡnh cú 2 nghiệm x1,x2 )

− x1 = (-b - sqrt(delta))/(2*a) − x1 = (-b + sqrt(delta))/(2*a) à Ngược lại (delta < 0) − phương trỡnh khụng cú thực Chương trỡnh giải phương trỡnh bậc 2 #include <stdio.h> #include <conio.h> #include <math.h> void main(){

float a,b,c, delta, x1,x2;

printf("\nNhap cac he so a,b,c : "); scanf("%f%f%f",&a,&b,&c);

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

printf("\nPhuong trinh co nghiem kep \ x = %5.2f", -b/(2*a));

else

if(delta > 0)

{ x1 =(-b-sqrt(delta))/(2*a); x2 =(-b+sqrt(delta))/(2*a);

} else

printf("\nPhuong trinh khong co nghiem thuc"); }

Một phần của tài liệu §¹i häc quèc gia hµ néi khoa c«ng nghÖgi¸o tr×nh tin häc c¬ së phÇn lËp tr×nh potx (Trang 45 - 50)

Tải bản đầy đủ (PDF)

(103 trang)