السبت، 11 أبريل 2009

الدرس الثاني ..., الجمل الشرطية ..

موضوعنا هو if statement وتنقسم الى ثلاثة أنواع :-
1. if .
2. if else .
3. if else if .
النوع الأول ( if ) وتكون تركيبتها على الشكل التالي : if ( condition ) Statement

مثال :-
أكتب برنامج تدخل له عدد اذا كان هذا العدد أقل من صفر اطبع له العدد وبجانبه is negative مثلا لو أدخلنا -1 يطبع لنا -1 is negative : ...
كما اتفقنا من قبل نحدد كلا من المدخلات ، العمليات ، المخرجات ...
المدخلات :- قيمة من نوع int .
العمليات :- فحص القيمة اذا كانت أقل من صفر .
المخرجات :-اذا تحقق الشرط اطبع العدد وبجانبه is negative .
البرنامج :-
كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter number =>");
        int no=in.nextInt();
        if(no<0)System.out.println(no+"is negative");
    }
}

على ماأعتقد أن البرنامج لا يحتاج لشرح ( واضح !؟ ) أ] استفسار أنا جاهز ...
********************
ولكن الان هنالك سؤال وهو :-
*كيف أريد أن أضيف الى السؤال بحيث انه اذا كان العدد أكبر من صفر أطبع العدد وبجانبه is positive ؟
* الاجابة في النوع الثاني من if statement ...
النوع الثاني ( if else if ) وتكون تركيبتها على الشكل التالي :-
if ( condition ) statement1 else statement2 ..

مثال 1:-
أكتب برنامج تدخل له عدد اذا كان هذا العدد أقل من صفر اطبع له العدد وبجانبه is negative أما اذا لم يكن أقل من صفر فاطبع العدد وبجانبه is positive ..
التحليل سأتركه لكم أما البرنامج فهو كالتالي :-

كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter number =>");
        int no=in.nextInt();
        if(no<0)System.out.println(no+"is negative");
        else System.out.println(no+"is positive");
    }
}

مثال 2:-أكتب برنامج تدخل له علامتين لطالب فيجمعهم ويجيب الـ ( average ) ويطبع بجانبه ما اذا كان الطالب ناجح أو راسب ( اذا معدله أكبر من 60 اطبع pass اذا اقل من60 اطبع fail ) ..
البرنامج :-
كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter first mark =>");
        int x=in.nextInt();
        System.out.print("Enter second mark =>");
        int y=in.nextInt();
        float avg=(float)(x+y)/2;
        if(avg>=60)System.out.println(avg+"pass");
        else System.out.println(avg+"fail");
    }
}

وايضا هنا قصور في البرنامج الأول وهو اذا كان العدد = صفر فالبرنامج سيطبع انه موجب !!!
كلنا يعرف أن الصفر عنصر محايد لا هو سالب ولا موجب ..
الحل في النوع الثالث وهو التالي شرحه ...


*******************************
النوع الثالث ( if else if ) وتركيبتها على الشكل :-

مثال 1:-
أكتب برنامج ( باستخدام الجافا ) برنامج تدخل له عدد اذا كان هذا العدد أقل من صفر اطبع له العدد وبجانبه is negative أما اذا لم يكن أقل من صفر فاطبع العدد وبجانبه is positive أما اذا كان العدد المدخل صفر اطبع Number is zero ..
البرنامج :-
كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter number =>");
        int no=in.nextInt();
        if(no<0)System.out.println(no+"is negative");else 
        if(no>0)System.out.println(no+"is positive");else
        System.out.println("Number is zero");
    }
}

مثال 2:-أكتب برنامج تدخل له علامتين لطالب فيجمعهم ويجيب الـ ( average ) ويطبع بجانبه التالي :-
E اذا كان معدل الطالب ≥ 90.
V.G اذا كان معدل الطالب ≥ 80.
Gاذا كان معدل الطالب ≥ 70.
P اذا كان معدل الطالب ≥ 60.
F اذا كان معدل الطالب ≤ 60 .
البرنامج :-
كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter first mark =>");
        int x=in.nextInt();
        System.out.print("Enter second mark =>");
        int y=in.nextInt();
        float avg=(float)(x+y)/2;
        if(avg>=90)System.out.println(avg+"E");else
        if(avg>=80)System.out.println(avg+"V.G");else
        if(avg>=70)System.out.println(avg+"G");else
        if(avg>=60)System.out.println(avg+"pass");else
        System.out.println(avg+"fail");
    }
}

ملاحظات :-1.ممكن أن يكون الشرط مركب مثلاً اذا كانت العلامة أكبر من 90 وأقل من 100 كيف سأكتب الشرط ؟؟
الاجابة :- if (avg>=90&&avg<=90)……………….
2.ممكن أن يكون جواب الشرط( أي الجملة التي سوف تنفذ ) مركبة ( أي تتكون من أكثر من جملة ) مثلااذا كان معدل الطالب في الفترة اكبر من 55 أريد أن أضيف للطالب 5 علامات عالمعدل ومن ثم أطبع المعدل وأطبع بجانبه PASS كيف يتم ذلك ؟؟
الاجابة أضع قوسين {} بين الشرط والـ else وأضع بداخلهم جواب الشرط مهما كان حجمه سواء جملة جملتين ..... الخ كما في البرنامج التالي :-
كود
import java.util.*;
class Q1{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter first mark =>");
        int x=in.nextInt();
        System.out.print("Enter second mark =>");
        int y=in.nextInt();
        float avg=(float)(x+y)/2;
        if(avg>=90)System.out.println(avg+"E");else
        if(avg>=80)System.out.println(avg+"V.G");else
        if(avg>=70)System.out.println(avg+"G");else
        if(avg>=60)System.out.println(avg+"pass");else
        if(avg>=55)
            {
            avg=avg+5;
            System.out.println(avg+"pass");
            }else
        System.out.println(avg+"fail");
    }
}

ليست هناك تعليقات:

إرسال تعليق