الخميس، 26 يونيو، 2014

second lesson in c++



 درس 2 سي بلس بلس 



بسم الله الرحمن الرحيم
بعد ان تكلمنا عن كيفية تعريف متغير وأيضا وكيف أعطيله قيمة ابتدائية
وأيضا كيف أطبع على الشاشة جملة وكيف أجعل المستخدم يدخل قيمة
وفى المرة السابقة اخذنا برنامج لطباعة كلمة welcome أكتر من مرة وكان حوالى عدد المرات 5
طب لو كان عدد المرات كبييير جدا حوالى 100 مثلا
هكتتب حوالى ميت سطر علشان تطبع كلمة welcome
طب والحل هو الloop or iterations
الان هنبدأ فى حاجة جديدة تسمة بiterations or loop
وهى عبارة عن تكرار جملة أو أكثر لفترة محددة عندما يكون الشرط الاختبار صحيح حيث يوجد أربع أشياء ممكن يمثل بها الiteration
وهى for or while or do-while or goto
أولا الfor
تستخدم لتكرار جملة معينة او اكثر (body loop )لفترة محددة (number of time)
يكرر الbody عندما يكون الcodtion is true وعندما يكون false تنتهى عملية التكرار والتحكم ينتقل الى السطر الذى يلى الloop
تكتب

For(intializaton; testing; increment and decrement)
أولا :
ال intializaton
وهو أعاء قيمة ابتدائية لloop variable (حيث هو المتغير المستخدم داخل اللوب فى الزيادة او النقصان )
ثانيا :
الtesting
وهو المستخدم فى عملية اختبار الشرط أذا كان true ينفذ الstatement loop body
واذا كان false
فيخرج من الloop كما قلنا
ثالثا:
هو المستخدم فى زيادة الloop variable بقدار محدد او نقصانة بمقدار محدد
خلى بالك من الsemi colon التى تفصل بين كل شق فى الloop
وحلى بالك أيضا ان body of loop تكون جملة واحدة
طب لو اكتر من جملة يبقى لازم الbody of loop يضع داخل {}
مثال

#include <iostream>
#include <conio>
void main()
{
 int i;
 for( i=1;i<10;i++)
  cout<<i<<"\n";
 getch();
}

فى بداية الامر عرفت متغير أسمة I من النوع int حيث هذا المتغير يسمى بloop varible
For(i=1;i<10;i++)
فى بداية الامر عملت initial للمتغير I =1
ثم بعد ذلك الجزء الثانى وهو الtesting
أذا كانت قيمة الi
أقل من أو يساوى ال12
ينفذ الbody of loop
ثم بعد ذلك الجزء الثالث هو الincrement
أزود قيمة المتغير I بمقدار واحد
بمعنى ان تلك الجملة i++
تعادل
I=i+1
أو i+=1
وكدة البرنامج دة هيطبع الاعداد من 1 الى 9
حيث عند عمل run للبرنامج
أو شق من الloop سينفذ مرة واحدة
أما عن الشق الاختبار سينفذ n+1 وبما n=10 يعنى سينفذ 11 مرة
أما عن الincrement سينفذ n مرة يعنى 10
وكذلك الbody سينفذ 10 مرات


وبالتالى يكون البرنامج السابق بتاع طباعة كلمة welcome اكتر من مرة سيكون

#include <iostream>
#include <conio>
void main()
{
 for(int i=0;i<5;i++)
  cout<<"welcome\n";
 getch();


طب لو عندى more statement يعنى اكثر من جملة الحل ان الfor تكتب كما
For(initial; testing; increment or decrement )
{
// Body Of The Loop
}

مثال برنامج يجمع الاعداد من 1 الى 5 وكذلك يضربهم
#include <iostream>
#include <conio>
void main()
{
 int i=1;
 for(;i<=5;i++)
  {
    cout<<i<<"*"<<i<<"="<<(i*i)<<"\n";
    cout<<i<<"+"<<i<<"="<<(i+i)<<"\n";
    cout<<"\n\n";
  }
   getch();
}

الشرح:
اولا : لاحظ طريقة كتابة الloop عملت initial للمتغير قبل اللوب بس لازم يكون لة مكان داخل جسم اللوب وبالتالى تركت مكانة فاضى كما هو فى البرنامج
أنا عاوز البرنامج يضرب الاعداد من 1 الى 5
تبقى عملية اtesting تكون
I<=5
لاحظ وجود ال= حتى يكون ال5 معاى فى عملية الضرب والجمع
طب لو كانت
I<5
يبقى أخرة عند 4 وبس حيث ان ال5 ليست اقل من ال5

طب وجود أكتر من جملة داخل الloop وبالتالى علشان يتنفذوا كلهم وضعت ال body of the loop داخل أقواس {}
كذلك ممكن تكتب اللوب كما يلى
int i=1;
 for(;i<=5;)
  {
    cout<<i<<"*"<<i<<"="<<(i*i)<<"\n";
    cout<<i<<"+"<<i<<"="<<(i+i)<<"\n";
    cout<<"\n\n";
    i++;
  }


Nested loop معناها وجود اكتر من loop
مثال بسيط جدا لطباعة شوية نجوم :
#include <iostream>
#include <conio>
void main()
{
 int i,j;
 for(i=0;i<=10;i++)
  {
    for(j=0;j<i;j++)
     cout<<"*";
   cout<<"\n";
  }
  getch();
}

لاحظ الكود جيدا
فى بداية الامر عند عمل run للبرنامج ستجد
أن الi=0 طب والbody of this loop عبارة عن another loop
وبالتالى سينفذ الj=0 ثم يختبر هل ال0<0
لا طبعا وبالتالى لا ينفذ الbody of inner loop وبالتالى يتجاهل
Cout<<"*";
وينفذ
Cout<<"\n";

ثم يزود الi تبقى بتساوى 1
ثم يدخل يعمل intial to j=0 ويختبر هل ال0<1 تمام وبالتالى
ينفذ
Cout<<"*";

ثم يزود الj تبقى بتساوى j=1
ثم يختبر هل 1<1 لا وبالتالى يطلع من تللك اللوب (المقصود هنا اللوب الداخلية)
ثم ينفذ
Cout<<"\n";
ثم بعد كدة يزود الi تبقى ب 2 ويختبر هل 2<10 نعم
يدخل ينفذ الbody سيجد ان الbody عبارة عن loop وبالتالى يعمل initial
للمتغير j=0
ثم يختبر هل ال0<2 نعم وبالتالى ينفذ
Cout<<"*";

ثم يزود القيمة المتغير jتبقى j=1
ثم يختبر هل 1<2 نعم
وبالتالى يبفذ ال body بتاع اللوب الداخلية يعنى يطبع *
ثم يزود تبقى الj=2 هل ال2<2 لا وبالتالى يخرج من تلك اللوب وينفذ
Cout<<"\n";

حيث هذا السطر تابع للexternal for
و
وهكذا حتى تجد الoutput

ثانى نوع يتم تمثيل بة الiteration هو الwhile loop
وتستخدم فى حالة عدم علمك كم مرة سيتم تنفيذ ذلك الكود
وتكتب
//initialize loop variable 
While(testing )
{
//Body of While Loop
//increment or decrement
}

مثال لطباعة الاعداد من االى 10
#include <iostream>
#include <conio>
void main()
{
 int i=1;
 while(i<=10)
  {
   cout<<i<<"\n";
   i++;
  }
  getch();
}

معنى الكود نفذ الbody عندما يكون الشرط صحيحا
طب ممكن يبقى اكتر من while داخل بعض
نعم لاحظ ذلك الكود
void main()
{
 int i=0,j;
 while(i<=10)
  {
    j=0;
    while(j<i)
     {
       cout<<"*";
       j++;
     }
    cout<<"\n";
    i++;
  }
  getch();
}


طب أما الdo-while()
زى الwhile لووب شرطية نفذ الbody طالما ان الشرط سليم
وتكتب
//initial loop variable
Do
{
//body of loop
}while(condition is true);


بمعنى نفذ ثم أختبر الشرط

مثال لطباعة الاعداد من1 الى 10
#include <iostream>
#include <conio>
void main()
{
 int i=0;
 do
  {
    cout<<i<<"\n";
    i++;

  }while(i<=10);

  getch();
}

فى بداية الامر أعطيت للمتغير I قيمة أبتدائية وثانيا
كتبت الbody بتاع اللى انا عاوزوة ينفذ اكتر من مرة
داخل

Do{
}while();
لاحظ معى ذلك الكود

#include <iostream>
#include <conio>
#include <process.h>
void main()
{
 char w='y';
 int x,y;
  do
  {     clrscr();
    cout<<"enter the frist number:\t";
     cin>>x;
    cout<<"enter the second number:\t";
     cin>>y;
   cout<<"the result is\t"<<x+y<<"\n";
   cout<<"are u want to enter another data(y,n)==>";
    cin>>w;
  }while(w!='N'&&w!='n');
  exit(0);
getch();
}


عرفت متغير من النوع char وأعطيتة قيمة ابتداية وهى y
ثم عرفت متغيرين من النوع int وهما x,y

ثم
داخل الdo-while
أول أمر هو clrscr()
وهو clear screen أى يمسح الشاشة
ثم
طبعت رسالة تجعل المستخدم يدخل اول رقم وخزنتة فى الx
وكذلك مع الy
ثم طبعت لة ناتج الجمع
ثم أخبرتة هل انت تريد ادخال بيانات اخرى ام لا فاذا قال نعم يمسح الشاشة ويدخل من جديد اما اذا زهق من البرنامج وقال لا يطلع من البرنامج خالص
عن طريق دالة تسمى exit(0)
ومعرفة فى header file أسمة process.h وأيضا موجودة فى stdlib.h


أخيرا الgoto وقليلة الاستخدام وتكتب
X:
//code
//condition
Goto x;
لاحظ ذلك الكود البسيط وانت هتفمها

#include <iostream>
#include <conio>
void main()
{
 int i=0;
 x:
   cout<<i;
   cout<<"\n";
   i++;
  if(i<10)
 goto x;

  getch();
}


الجديد هو ذلك الشرط
If(i<10)

ودة شرط أذا كان true ينفذ السطر اللى بعدية مباشرا أما اذا كان false
يخرج من الgoto loop
وبأذن الله هنشرح الif condition حالا


If conditions
وتكتب

If(codition u want to testing)
//if true do statement 
Else                                       
//do statement
بمعنى مثال بسيط

If(value<=100)
Cout<<"the value is grater than or equal 100";
Else                   
Cout<<"the value is less than 100";
لاحظ ان الشرط الif ينفذ على جملة واحدة فاذا كان أكتر من جملة تكتب
If(condition)
{
//body
}

مثال بسيط:
#include <iostream>
#include <conio>
#include <stdlib.h>
void main()
{
int x;
cout<<"enter the value:\t";
 cin>>x;
 if(x==1)
  {
    cout<<"hello wolrd\n";
    cout<<"wellcome:)'";
  }
 else
  cout<<"good bye\n";
getch();
}

طب ممكن يكون اكتر من شرط
انظر الى ذلك الكود
#include <iostream>
#include <conio>
#include <stdlib.h>
void main()
{
int x;
cout<<"enter the value:\t";
 cin>>x;
 if(x==1)
  {
    cout<<"hello wolrd\n";
    cout<<"wellcome:)'";
  }
 else
 if(x==2)
 {
  cout<<"good bye";
  cout<<"\n";
 }
 else
 cout<<"try again\n";
getch();
}

وليكن القيمة اللى المستخدم لازم يدخلها تكون محصورة مثلا ما بين ال50 to 100

int x;
  cin>>x;
 if(x>=50&&x<=100)
  cout<<"good\n";
 else
  cout<<"bad\n";

حيث ان &&
تعنى لازم يكون الشرطين true حتى ينفذ الامر
فاذا كان احدهما true والاخر false
وبالتالى الناتج النهائى false وبالتالى لا ينفذ الامر وبالتالى لا يطبعgood

طب لو كان || ودى تعنى or
أى احداهما يكون صحيح
أى لاحظ ذلك الكود
int x;
  cin>>x;
 if(x>=50||x<=100)
  cout<<"good\n";
 else
  cout<<"bad\n";

وجاء الuser ودخل 12
بما ان ال12>50 لا وبالتالى يكون ذلك false
طب 12<100 أة وبالتالى يرجع true
وبما ان true | false ==true
وبالتالى يطبع good
لاحظ الفرق بين break and continue
أولا معنى كلمة continue يعنى تخطى تلك المرحلة اى تجاهلها
أما معنى كلمة break يعنى أقف لا تكمل اى ماتعملش اى حاجة
لاحظ تلك الكود:

#include <iostream>
#include <conio>
#include <stdlib.h>
void main()
{
 int x;
 for(int i=0;i<10;i++)
  {
   if(i==5)
    continue;
   else
    cout<<i<<"\n";
  }
getch();
}

حيث اذا كانت i==5
اعمل continue يعنى تخطى تلك المرحلة اى تجاهلها
ولا تطبع ال5
وبالتالى يطبع البرنامج 1 2 3 4 6 7 8 9
أما break
معناها أقف
لاحظ ذلك الكود
for(int i=0;i<10;i++)
  {
   if(i==5)
    break;
   else
    cout<<i<<"\n";
  }

أى عند ما يكون الi==5 يقف
وبالتالى يطبع 1 2 3 4 ويقف


طب الان أفرض ان البرنامج محتاج اكتر من condtion
مثل
If(condtion)
{
//do statement
}
Else

If(condtion)
{
//do statement
}
Else

If(condtion)
{
//do statement
}

يعنى اكتر من امر زى ما انت شايف ويكون تلك الاوامر معتمدة على متغير واحد لا غير وبالتالى الافضل ان اعمل switch يعنى اعمل مفتاح يتحكم افضل
وبكدة نستخدم الswitch case
وتكتب

Switch(variable )
{
Case x:
// statement
Break;
Case x:
// statement
Break;
Default:
//print error or do any thing
{

أولا

Switch(variable)
اعملى switch على ذلك المتغير
أما
Case x
كلمة case معناها حالة اى اذا كانت حالة المتغير اللى انت عامله swtch
تساوى تلك الحالة أدخل نفذ الجملة اللى داخل تلك الcase
حيث الx ممكن ان يكون رقم بس لازم يكون ثابث
وممكن ان يكون character

//statement
وهى الجملة التى سينفذها طب لو اكتر من جملة اضعهم فى اقواس مجموعة
{}

طب كلمة break
حتى ينفذ الامر اللى انا محتاجة ولا يدخل على باقى الاوامر
أما كلمة default
أى غير كدة لم يدخل الارقام او البيانات اللى انا عامل عليها switch
أطلع لة رسالة خطأ او أطلعة من البرنامج
مثال : برنامج بسيط اذا اختار المستخدم 1 يطبع welcome
2 يطبع hello
3 يطبعbad
4 يخرج من البرنامج
#include <iostream>
#include <conio>
#include <stdlib.h>
void main()
{
 int x;
 cout<<"select u wanna:\n";
  cout<<"1- print welcome\n";
  cout<<"2-print hello\n";
  cout<<"3-print bad luck\n";
  cout<<"4-exit from programm\n";
    cin>>x;
 switch(x)
  {
    case 1:
      cout<<"welcome";
    break;
    case 2:
      cout<<"hello";
    break;

    case 3:
      cout<<"bad luck";
    break;

    case 4:
      exit(0);
    break;
    default:

      {
          cout<<"SYNTAX ERROR ";
            getch();
           exit(0);
         }
  }
getch();
}

شرح البرنامج
عملت swtch على القيمة اللى يدخلها الuser كما قلت طب لو غير ذلك أى default
يطبع رسالة خطأ وينتظر من المستخدم اى تكة على الكيبور ويخرجة من البرنامج
ودة كدة اكتر من جملة وبالتالى وضعتهم ما بين أقواسtwo braces
طب لو كان الswitch على character وليس متغير int
سيكون
Char x;
Cin>>x;
Switch(x)
{
Case 'a':
Cout<<"hello";
Break;
Case 'b':
Cout<<"god";
Break;
Default:
Cout<<"error"
 
}
 

                                  لا تنسونا من صالح الدعاآآء 
                                        #zero_one_team 
                                             sammour#

مواضيع ذات صلة

second lesson in c++
4 / 5
Oleh