الأحد، 25 سبتمبر 2011

Scope of variables


عندما نعرف اي متغير

1- إما نعرف المتغير خارج أي فنكشن = global
2- أو نعرف المتغير داخل الفنكشن = local



الـ global يعني ان المتغير متغير عام , يقدر اي فنكشن يتعامل معاه الـ main وغيرها من الفنكشنات الموجوده داخل البرنامج

أما فكرة الـ local  هي أننا  نعرف متغيرات داخل الفنكشن كمثال الـ main   هذا الفنكشن هو اللي يتعامل مع متغيراته فقط

أما اي فنكشن آخرى " أي غير الـ main في مثالنا هنا " ماتقدر توصل لها وتتعامل معاها 

فلو عرفنا المتغيرات قلوبل , فنقدر نتعامل معاها هالمتغيرات بدون ما يطلع لنا error

كمثال

#include <iostream> using namespace std; int z // global ..  void fun () { int a // local ..  
;
cout<< <<endl;

}
int main 
()
{
 
int a=2;               
// local ..

 
3
;
 
-1
; cout<< <<endl; fun ();
 return 
0
;
-------------------------------- 
output : 4
9
 


هنا الـ z عرفناه قلوبل يعني فنكشن fun  و الـ main  يقدروا يتعاملوا مع هالمتغير ويغيروا الاثنين من قيمتها
أما الـ a عرفناها مرتين من نوع local  وحده داخل المين والثانيه داخل فنكشن fun .. وكل واحد يتعامل مع متغير الـ a  كمتغير خاص فيه ومختلف تماما عن الآخر حتى لو كان نفس الأسم , لانه local  مايتطلع عليه الا الفنكشن المعرف فيه





 

if statement .. الإف



فكرتها شرط الاف اذا كان صحيح يتنفذ اللي تحت الأف اذا كان خاطئ ما يتنفذ


1- if (condition) statement
if (x == 100)
 cout << "x is 100";


اذا كان الـ x يساوي 100 راح يتنفذ السطر اللي تحت الأف ويطبع الأوت بوت , اذا ما يساوي 100 ماراح يتنفذ السطر اللي تحت الأف اذا كنت ابغى انفذ كذا امر تحت الأف لازم احط الأومر في بلوك بهذا الشكل

if (x == 100)
{
 cout << "x is ";
 cout << x;
}
if (x == 100)
 cout << "x is ";
 cout << x;

الفرق بين الاف الاول والثاني , الاول ماراح يتنفذ السطرين الا اذا كان الشرط صحيح x= 100 , المثال الثاني دائما السطر الثاني راح يتنفذ بغض النظر كان الشرط صحيح او لا لذلك تنتبهي اذا تبغي تنفذي كذا امر تحت الأف تحطيها ببلوك {} بين الاقواس هذي


2- if (condition) statement1 else statement2

if (x == 100)
cout << "x is 100";
else
cout << "x is not 100";


هنا عندنا نختبر هل الـ x = 100 اذا تساوي الـ 100 يطبع الجمله اللي تحت الاف اذا ما تساوي الـ 100 والشرط مو صحيح يروح للـ else وينفذها على طول يعني الـ else متى تتنفذ ؟؟؟ اذا كان شرط الـ if مو متحقق


3- Nested if .. else

 هي مجموعة من الـ if و else متداخله , يعني نقدر نحط كذا وحده جوات بعض

if (x > 0)
cout << "x is positive";
else if (x < 0)
cout << "x is negative";
else
cout << "x is 0";



اذا كان الـ x اكبر من الصفر يتنفذ السطر اللي تحت الأف ويطبع الـ" x موجب " اذا الشرط مو متحقق والـ x اقل من الصفر يروح للـ else على طول ويدخل بـ if ثانية ويختبر هل الـ x اقل من الـ صفر , اذا الشرط صحيح يطبع الـ" x سالب " اذا الشرط مو متحقق , الـ x لا عدد موجب ولا عدد سالب يعني اكيد الـ x = 0 اذا يروح للـ else الأخيره ويطبع الـ" x صفر "