تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثامن ( 8 ) -- التعرف على جملة الـ Switch وكيفية التعامل معها
#1
كاتب الموضوع : lo2i


السلام عليكم ورحمة الله وبركاته

(( وماأوتيتم من العلم إلا قليلاً ))
-------------------------------------------------------------------------------------------------------------------------------
الدرس الثامن في دورة السي بلس بلس
-------------------------------------------------------------------------------------------------------------------------------

سنتعلم في هذا الدرس ان شاء الله :_

- ماهي جملة ال switch
- ماهي فائدة جملة ال switch
- كيفية كتابتها
- ماهو وجه التشابه والاختلاف بينها وبين ال else if في الجمل الشرطية .
- امثلة على استخداماتها ..

------------------------===-------------------------

اولاً :- ماهي جملة ال switch :-

جملة ال switch هي نفسها جملة ال select case التي نقوم باستخدامها في الفيجوال 6 او في الفيجوال دوت نيت وكثير من اللغات الاخرى ..

---------------------------------------

ثانياً :- ماهي فائدة جملة ال switch :-

لنفرض ان لديك متغير يحمل قيمة 10

وقمنا بتعريفه بهذا الشكل داخل الاجراء main

كود :
[color=#000000][COLOR=#0000bb]int x [/color][color=#007700]= [/color][color=#0000bb]10 [/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

واردت اذا كان الرقم مثلاً يساوي 10 ان يخرج لك رسالة معينة

واذا كان الرقم يساوي 9 ان يخرج لك رسالة معينة

واذا كان الرقم يساوي 8 ان يخرج لك رسالة معينة

إلى اخرى

واذا كان غير الارقام التي قمت بكتابتها جميعها ,,

بإخراج رسالة انت تحدد قيمتها ....

---------------------------------------------
كيفية كتابتة جملة ال switch


كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]int x[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]) ;
switch ([/COLOR][color=#0000bb]x[/color][COLOR=#007700])
{
case [/COLOR][color=#0000bb]10[/color][COLOR=#007700]:
      {
      [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is equal to 10\n\n"[/color][COLOR=#007700];
      }
      break;
default:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is not equal to 10"[/color][COLOR=#007700];
    }
}
[/COLOR][color=#0000bb]system[/color][color=#007700]([/color][color=#dd0000]"pause"[/color][COLOR=#007700]);
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

في الكود السابق عرفنا متغير باسم x واخد قيمة العشرة

ثم بدأنا بجملة ال switch بهذا الشكل

كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]switch ([/color][color=#0000bb]x[/color][COLOR=#007700])
{

}  
[/COLOR][color=#0000bb][/color][/COLOR]

كما هو موضح في الكود السابق ,,

اشترطنا او وضعنا مؤشر ال switch على المتغير x وبمعنى اخر قيمة ال x
-------------
الان بندأ باعطاءه الخيارات المتعدد له ولشروطه

بهذ الشكل



كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]case [/color][color=#0000bb]1[/color][COLOR=#007700]:
      {
      [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is equal to 1\n\n"[/color][COLOR=#007700];
      }
      break;  
[/COLOR][color=#0000bb][/color][/COLOR]

في الكود السابق بدأنا بالكلمة المحجوزة case واعطيناها القيمة 1
اي اذا كان قيمة المتغير x = 1 اذا ثم نفتح قوسيين{ }
ثم نكتب الكود الذي سيطبق اذا كان المتغير يساوي 1
ركز معي هنا انا متأكد انك تتسأئل الان عن الكلمة break
هي بالفعل اهم كلمة ينبغي التنبيه عليها وخصوصاً مع ال switch
فالكلمة التالية تعمل على الخروج من حلقة ال switch عند مطابقة لرقم او لاختيار من الاختيارات السابقة ..

وهكذا مع باقي الاختيارات

وهذا ايضاً خيار اذا كان قيمة ال x = 2 بهذ الشكل ,,


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]case [/color][color=#0000bb]2[/color][COLOR=#007700]:
      {
      [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is equal to 2\n\n"[/color][COLOR=#007700];
      }
      break;  
[/COLOR][color=#0000bb][/color][/COLOR]

وكما هو الحال في اي لغة برمجية يجب ان تنتهي جملة ال switch او ال select case باختيار افتراضي في الفيجوال دوت نيت

كنا نستخدم الكلمة else case
او هنا فسوف نستخدم الكلمة default

بهذا الشكل ,,

كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#007700]default:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is not equal to 10"[/color][COLOR=#007700];
    }  
[/COLOR][color=#0000bb][/color][/COLOR]

ويصبح الكود كاملاً بهذا الشكل ..

كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]int x[/color][color=#007700]([/color][color=#0000bb]3[/color][COLOR=#007700]) ;
switch ([/COLOR][color=#0000bb]x[/color][COLOR=#007700])
{
case [/COLOR][color=#0000bb]1[/color][COLOR=#007700]:
      {
      [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is equal to 1\n\n"[/color][COLOR=#007700];
      }
      break;
      case [/COLOR][color=#0000bb]2[/color][COLOR=#007700]:
      {
      [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is equal to 2\n\n"[/color][COLOR=#007700];
      }
      break;
default:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"the number is not equal to 10"[/color][COLOR=#007700];
    }
}
[/COLOR][color=#0000bb]system[/color][color=#007700]([/color][color=#dd0000]"pause"[/color][COLOR=#007700]);
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

شرح الكود باختصار ,,

قمنا بتعريف متغير واسندنا له قيمة العشرة

ثم عملنا جملة switch على المتغير x التي تساوي العشرة

واعطينا اختيارين لل switch اذا كان الرقم يساوي 1 يخرج شيء محدد
واذا كان الرقم 2 يخرج شيء اخر محدد مسبقاً في الكود

واذا كانت قيمة ال x لاتساوي ال1 او لاتساوي ال 2 اذا فسوف ينتقل
التنفيذ
للـ defalut

وهو الذي تتنهي من خلاله جملة ال switch


وهذه صورة توضح بعض الكلمات المستخدمة في الفيجوال بيسك 6 والفرق بينها
وبين السي بلس بلس ,,






ولكن بالفعل فالفيجوال بيسك دوت نيت اصبح يحمل هذه الخاصية وهي خاصية ال break لل select case او لل switch

وكما تكلمنا في الاعلى ان ال select case هي نفسها ال switch

ولكن تختلف من لغة للغة اخرى !

-------------
وهذا مثال اخر يقوم باخد اي حرف من المستخدم ثم يخرج له الحرف الذي كتبه
ولكن كل ذلك يعتمد على ال cases الذي قمت بكتابتها

اليك المثال ,,


كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
#include <string>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];

[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]char letter[/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"enter any leteer here\n"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]cin [/color][color=#007700]>> [/color][color=#0000bb]letter[/color][COLOR=#007700];
switch([/COLOR][color=#0000bb]letter[/color][COLOR=#007700])
{
case [/COLOR][color=#dd0000]'a'[/color][COLOR=#007700]:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'a'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    }
    break;
case [/COLOR][color=#dd0000]'b'[/color][COLOR=#007700]:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'b'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    }
    break;
    case [/COLOR][color=#dd0000]'c'[/color][COLOR=#007700]:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'c'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    }
    break;
case [/COLOR][color=#dd0000]'d'[/color][COLOR=#007700]:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'd'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    }
    break;
default:
    {
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"wrong input!!\n\n"[/color][COLOR=#007700];
    }
}
[/COLOR][color=#0000bb]system[/color][color=#007700]([/color][color=#dd0000]"pause"[/color][COLOR=#007700]);
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

شرح سريع للكود

عرفنا متغير من نوع char وهو ليدخل فيه المستخدم اي حرف
ثم يقوم بالبحث في ال switch فإذا تحقق الشرط كان بها واخرج لك الرسالة
التي حددتها وان لم يكن ضمن الخيارات التي قدمتها في الكود
سيتم الانتقال للـ default


ويمكن اختصار جملة ال switch بهذه الطريقة ,,


كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
#include <string>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]char letter[/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"enter any leteer here\n"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]cin [/color][color=#007700]>> [/color][color=#0000bb]letter[/color][COLOR=#007700];
switch([/COLOR][color=#0000bb]letter[/color][COLOR=#007700])
{
case [/COLOR][color=#dd0000]'a'[/color][COLOR=#007700]:
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'a'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    break;
case [/COLOR][color=#dd0000]'b'[/color][COLOR=#007700]:
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'b'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    break;
    case [/COLOR][color=#dd0000]'c'[/color][COLOR=#007700]:
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'c'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    break;
case [/COLOR][color=#dd0000]'d'[/color][COLOR=#007700]:
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"you are press 'd'" [/color][color=#007700]<< [/color][color=#0000bb]endl [/color][COLOR=#007700];
    break;
default:
    [/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"wrong input!!\n\n"[/color][COLOR=#007700];
}
[/COLOR][color=#0000bb]system[/color][color=#007700]([/color][color=#dd0000]"pause"[/color][COLOR=#007700]);
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]


ولو لاحظت الفرق ,, الفرق هو عدم استعمال ال
{ }

اثناء عمل ال cases

وباقي الكود تم شرحه مسبقاً (في الاعلى !)
-------------------------------
انتهى الدرس !!

ماكان صواباً فمن الله وماكان خطأ فمن نفسي ومن الشيطان !

واي سؤال انا حاضر


والان جرب واعطيني النتيجة
====================
========
==

انتظروا الدرس التاسع !!
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الأول (1) RaggiTech 0 2,828 19-10-12, 11:17 AM
آخر رد: RaggiTech
  الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الثاني (2) RaggiTech 0 2,616 19-10-12, 11:15 AM
آخر رد: RaggiTech
  الدرس العاشر ( 10 ) - - جملة التكرار Do While وكيفية التعامل معها RaggiTech 0 7,372 19-10-12, 11:07 AM
آخر رد: RaggiTech
  الدرس التاسع ( 9 ) - - جملة التكرار For وكيفية التعامل معها RaggiTech 0 3,135 19-10-12, 11:03 AM
آخر رد: RaggiTech
  الدرس السابع ( 7 ) -- الانتقال للعمل على مكتبة ال Stdafx والتعرف على ملفات ال Header RaggiTech 0 5,156 19-10-12, 10:59 AM
آخر رد: RaggiTech
  الدرس السادس ( 6 ) -- حل لمشكلة التعليق على ال Ctrl + F5 اثناء تشغيل البرنامج RaggiTech 0 2,645 19-10-12, 10:55 AM
آخر رد: RaggiTech
  الدرس الخامس ( 5 ) -- الجمل الشرطية if statement شرح تفصيلي RaggiTech 0 4,137 19-10-12, 10:37 AM
آخر رد: RaggiTech
  الدرس الرابع ( 4 ) -- المتغــيرات والثوابــت ... ( نظرة مفصلة ) الجزء الثاني ( 2 ) RaggiTech 0 2,649 19-10-12, 10:20 AM
آخر رد: RaggiTech
  الدرس الرابع ( 4 ) -- المتغــيرات والثوابــت ... ( نظرة مفصلة ) الجزء الأول ( 1 ) RaggiTech 0 3,908 19-10-12, 10:08 AM
آخر رد: RaggiTech
  الدرس الثالث ( 3 ) -- كتابة اول برنامج الــ HELLO WORLD و استخدام المكتبة String RaggiTech 0 2,456 19-10-12, 10:02 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم