الجملة الشرطية IF
الجمل الشرطية هي مجموعة من الأوامر البرمجية التي لا تُنفذ إلا عندما يتحقق شرط ما ويستخدم الif للتعامل مع الجمل الشرطية .
انواع الجمل الشرطية
if
if (condition) {
// هنا يتنفذ الكود عندما يتحقق الشرط
}
if..else
if (condition) {
//يتنفذ عندما يتحقق الشرط
}else{
//يتنفذ عندما لا يتحقق الشرط
}
if..else if..else
if (condition1) {
//يتنفذ عندما يتحقق الشرط الاول
}else if (condition2) {
//يتنفذ عندما يتحقق الشرط الثاني
}else{
//يتنفذ عندما لا يتحقق ولا شرط
}
IF
مثال اول في هذا المثال عرفنا متغيرين واعطينا لكل منهما قيمة 4 وقمنا بعمل شرط وهو اذا تساوى قيمة المتغيرين نفذ ما داخل الشرط :
public class Example {
public static void main(String[] args) {
int a=4;
int b=4;
if(a==b)
{
System.out.println("االقيمة متساوية");
}
}
}
Output :
االقيمة متساوية
مثال ثاني
في هذا المثال عرفنا متغير نصي واعطينا قيمة نصية welcome ثم استخدمنا الدالة length وهي دالة تعيد لنا عدد احرف المتغير النصي وقمنا بعمل شرط وهو اذا عدد احرف المتغير النصي اكبر من 5 نفذ ما داخل الشرط :
String str="welcome";
if(str.length()>5)
{
System.out.println("تحقق:طول النص اكبر من 5 احرف");
}
Output :
تحقق:طول النص اكبر من 5 احرف
if else
وتعني اذا لم يتحقق الشرط فنفذ ماهو ضمن الelse .
مثال يسمح للطالب بادخال الدرجة ومعرفة هل هو ناجح او راسب
Scanner myObj = new Scanner(System.in);
System.out.print("Enter Degree :");
int grade = myObj.nextInt();
if(grade>=50)
{
System.out.println("ناجح");
}
else
{
System.out.println("راسب");
}
Output :
Enter Degree : 70
ناجح
Output :
Enter Degree : 39
راسب
if else if
وتعني اذا لم يتحقق الشرط الاول فأنتقل الى الشرط الثاني واذا لم يتحقق الشرط الثاني فأنتقل الى الشرط الثالث وهكذا حتى يتم تجربة كل الشروط واذا لم يتحقق ولا شرط ينفذ ما هو موجود ضمن الelse الأخيرة .
مثال اول يسمح للطالب بادخال الدرجة ومعرفة التقييم
Scanner myObj = new Scanner(System.in);
System.out.print("Enter Degree :");
int degree = myObj.nextInt();
if(degree>=90)
{
System.out.println("ممتاز");
}
else if(degree>=80)
{
System.out.println("جيد جدا");
}
else if(degree>=70)
{
System.out.println("جيد");
}
else if(degree>=60)
{
System.out.println("متوسط");
}
else if(degree>=50)
{
System.out.println("حالفك الحظ");
}
else
{
System.out.println("راسب");
}
Output :
Enter Degree : 64
متوسط
Output :
Enter Degree : 39
راسب
Output3 :
Enter Degree : 87
جيد جدا
if else if
مثال ثاني
في هذا المثال عملنا داخل كل if شرطين بينهما علامة && – AND والتي ترجع صحيح اذا تحقق الشرطين .
Scanner myObj = new Scanner(System.in);
System.out.print("Enter Degree :");
int degree = myObj.nextInt();
if(degree>=90)
{
System.out.println("ممتاز");
}
else if(degree>=80 && degree<90)
{
System.out.println("جيد جدا");
}
else if(degree>=70 && degree<80)
{
System.out.println("جيد");
}
else if(degree>=60 && degree<70)
{
System.out.println("متوسط");
}
else if(degree>=50 && degree<60)
{
System.out.println("حالفك الحظ");
}
else
{
System.out.println("راسب");
}
Output :
Enter Degree : 99
ممتاز
Output2 :
Enter Degree : 22
راسب
الشروط المتداخلة Nested if
وتعني اذا تحقق شرط ما ارتبط مع شرط اخر داخل هذا الشرط ليقوم بالتحقق منه .
Nested if
if (condition) {
if (Nested condition) {
//يتنفذ عندما يتحقق الشرط الداخلي
}else{
//يتنفذ عندما لا يتحقق الشرط الداخلي
}
}else{
//يتنفذ عندما لا يتحقق الشرط الرئيسي
}
مثال
Scanner myObj = new Scanner(System.in);
System.out.print("Enter Degree :");
int grade = myObj.nextInt();
if(grade>=50)
{
System.out.println("ناجح");
}
else
{
if(grade>=45)
{
System.out.println("ناجح بقرار");
}
else
{
System.out.println("راسب");
}
}
Output :
Enter Degree : 48
ناجح بقرار
Output2 :
Enter Degree : 52
ناجح
Output3 :
Enter Degree : 22
راسب
Statements Switch
تستخدم عبارة التبديل switch لاختيار تنفيذ كتلة تعليمية من مجموعة كتل يعتمد الاختيار على محتوى القيمة المدخلة
Syntax
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
خطوات العمل:
- يتم ادخال القيمة ضمن switch
- مقارنة القيمة مع كل الكتل التعليمية
- تنفيذ الكتلة التتي تتطابق مع القيمة المدخلة وترك الباقي
- break and default كلمات مفتاحية اختيارية
Syntax
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
مثال اول لمعرفة اسم اليوم في الاسبوع تطابقاً مع الرقم
public class Example {
public static void main(String[] args) {
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("No Day");
}
}
}
Output :
Thursday
break
يقوم باخبار مترجم اللغة ان يتوقف عن مقارنة باقي شروط عندما تتطابق الكتلة الخاصة به , اي وكما في المثال السابق قمنا باعطاء الرقم 4 الى المتغير day وعندما يصل الى الكتلة التعليمية التي قيمتها 4 يقوم بتنفيذ هذه الكتلة والbreak الموجودة داخل هذه الكتلة تمنع استمرار switch من التحقق من باقي الكتل
default
وهي شبيهة بelse في الشروط ,وتعني اذا لم يتم تطابق القيمة مع اي من الكتل التعليمية فيتم تنفيذ ما داخل الdefault , ولنفرض في المثال السابق لو قمنا باعطاء المتغير day قيمة 10 فهنا سينفذ ما داخل الdefault لان لا يوجد لدينا حالة تتطابق مع day =10
Statements Switch
مثال ثاني كما في المثال السابق لكن هنا المستخدم يقوم بادخال رقم اليوم من شاشة التنفيذ
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in);
System.out.print("Enter Day :");
int day = myObj.nextInt();
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("No Day");
}
}
}
Output :
Enter Day :7
Sunday
Output :
Enter Day :3
Wednesday
Output :
Enter Day :9
No Day