الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الفرق بين ( I++ و ++i ) ....؟

بدأه dagash في 23 يونيو 2009 · 4 رد · 9,720 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ....

أود أن أستفسر .... عن الفرق بين ( i ++ , ++ i ) ....؟

مع مثال للشرح .....

كيفية عمل goto .... ؟

لأني تعبت معها ... حتى في المانيوال الخاص بالبرنامج لم أفهم منه الشيء الكثير ..

#2
اقتباس
أود أن أستفسر .... عن الفرق بين ( i ++ , ++ i ) ....؟

الفرق هو ان ++i تقوم بإرجاع قيمة i الحاليه ثم يتم زيادتها بواحد اما i++ فتقوم بزايدة i اولا بواحد ثم ثقوم بإرجاع قيمة i بعد زيادتها، أنظر معى هذا المثال

 

[color= #007f00;]#include <iostream>

[color= #0000ff;]using [color= #0000ff;]namespace std;

 

[color= #0000ff;]void main[color= #000000;]([color= #000000;])

[color= #000000;]{

    [color= #0000ff;]int i [color= #000000;]= [color= #ff0000;]0;

    cout [color= #000000;]<< [color= #A31515;]"i = " [color= #000000;]<< i[color= #000000;]++ [color= #000000;]<< endl;    [color= #007f00;]// i = 0

    cout [color= #000000;]<< [color= #A31515;]"i = " [color= #000000;]<< i     [color= #000000;]<< endl;    [color= #007f00;]// i = 1

    cout [color= #000000;]<< [color= #A31515;]"i = " [color= #000000;]<< [color= #000000;]++i [color= #000000;]<< endl;    [color= #007f00;]// i = 2

[color= #000000;]}

فى البدايه قمنا بتعريف متغير i و جعلنا قيمته صفر.

بعد ذلك جعلنا البرنامج يطبع قيمة i اولا ثم يزيدها بواحد و بالتالى فقام بطباعة قيمة i = 0 اما فى الرمه الثانيه فقد تم فعليا زيادة قيمة i و بالتاى عندما جعلنا البرنامج يطبع قيمة i قام بطابعة i = 1 فى المرة الأخيره قمنا بزيادة i بمقدار واحد اولا ثم قمنا بطباعة قيمتها و التى اصبحت i = 2.

اقتباس
كيفية عمل goto .... ؟

يستخدم الأمر goto فى جعل البرنامج يتطى مجموعة من الأوامر وصولا لمنطقه معينه تحمل اسم معين هذا الإسم يتم وضعه بجوار الأمر goto، لاحظ معى هذا المثال

 

[color= #0000ff;]void main[color= #000000;]([color= #000000;])

[color= #000000;]{

    [color= #0000ff;]int i [color= #000000;]= [color= #ff0000;]5;

 

    [color= #0000ff;]if [color= #000000;](i[color= #000000;]<[color= #ff0000;]10[color= #000000;])

         [color= #0000ff;]goto less_than;

 

    cout [color= #000000;]<< [color= #A31515;]"i more than 10" [color= #000000;]<< endl;

 

less_than[color= #000000;]:

       cout [color= #000000;]<< [color= #A31515;]"i less than 10" [color= #000000;]<< endl;

[color= #000000;]}

قمنا بتعريف متغير i و جعلنا قيمته بخمسه ثم بعذ ذلك نتحقق من قيمته فإذا كانت اقل من 10 نجعل البرنامج يقفز ليصل الى النقطه less_than لينفذ ما بعدها و هو طباعة الكلمة i less than 10 لاحظ ان البرنامج لن يعود ليتحقق من قيمة i مره اخرى بمعنى ان البرنامج وصل لنقطة less_than و هذا يعنى ان المؤشر الخاص بتنفيذ الكود لن يعود ادراحه لما قبل less_than إلا لو كان هناك امر goto اخر يجعله يذهب لهذا المكان.

ارجو ان اكون وفقت فى الشرح.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#3

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

،،

بســم الله الـرحمــن الرحيــم

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

#include <iostream.h>

// function main begins program execution

int main()

{

int x; // x declared here " x"هذا لتعريف المتغير

// loop 10 times i هي لزيادة قيمة i++

for ( x = 1; x <= 10; x++ ) {

// if x is 5, terminate loop

if ( x == 5 )

break; // break loop only if x is 5

cout << x << " "; // display value of x

} // end for

cout << "\nBroke out of loop at x:" << x << endl;

return 0; // indicate successful termination

} // end function main

it means to increment the value { i }

#4

السلام عليكم ....

أخي Muhammad alaa أشكرك بصورة كبيرة على التوضيح وجعل الله ذلك في ميزان حسناتك ....

لدي استفسار بسيط ... هل ( i++) تقوم بإرجاع الـ i إلى قيمتها الأساسية ( الإبتدائية ثم الزيادة عليها ) ... هل هذا ما تقصده ؟

ما فهمته من كلامك في ( ++i ) أنها فقط تنظر للقيمة الحالية للـ ( i ) وتقوم بالزيادة عليه .....

بالنسبة لــ goto كفيت ووفيت ...

أخي aibrahem ...

أرجو أن تضع ردك ضمن الوسوم الخاصة بالأكواد البرمجية حتي يسهل قرائتها .... ...

#5
اقتباس
لدي استفسار بسيط ... هل ( i++) تقوم بإرجاع الـ i إلى قيمتها الأساسية ( الإبتدائية ثم الزيادة عليها ) ... هل هذا ما تقصده ؟

ما فهمته من كلامك في ( ++i ) أنها فقط تنظر للقيمة الحالية للـ ( i ) وتقوم بالزيادة عليه .....

أخي الكريم سأحاول الشرح بطريقة أخرى, عسى أن تصل الفكرة..

i++

هنا سيتم التعامل مع قيمة المتغير دون إضافة 1 إليه

وتتم الإضافة بعد تنفيذ السطر الحالي من الكود

هذا مثال يوضح الفكرة

i = 5;
x = 2 * i++;  // i = 5,		2 * 5 = 10
y = 2 * i; // i = 6,	2 * 6 = 12;

هنا ستكون قيمة المتغير x تساوي 10، لأننا نتعامل مع قيمة i قبل الإضافة

أما بالنسبة لـ

 ++i

فهي بعكس السابقة

أي,, يتم إضافة 1 إلى قيمة المتغير قبل تنفيذ السطر الحالي

أنظر إلى المثال

i = 5;
x = 2 * ++i; // i = 6,,,	   2 * 6 = 12
y = 2 * i; // i = 6,,, 2 * 6 = 12

أرجو أن تكون الفكرة قد وصلت,, والسلام عليكم

تم تعديل هذه المشاركة بواسطة MoHammaD_93 في 30 يونيو 2009 في 19:48

SAFETY TIP : Always delete what you new, and free what you malloc, never mix new with free or malloc with delete.

مواضيع مشابهة