قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 08-12-2016, 04:12 PM المشاركة 1   
افتراضي ممكن تشرحو لي return في لغة c & MIKROc Twitter FaceBook Google+



السلام عليكم و رحمة الله تعالى و بركاته
كيف حالكم شباب اتمنى تكونو بالف الف خير
هل يمكنكم شرح دالة ريتورن الموجودة في الدوال و اذ كان ممكن بالامثلة في الميكرو سي الله يجازيكم بخير و هل هي ضرورية ام غير ضرورية
و شكرا

اعلانات

احمد شهيد جواد
:: مهندس متميز ::
تاريخ التسجيل: Apr 2015
الدولة: العراق
المشاركات: 324
نشاط [ احمد شهيد جواد ]
قوة السمعة:0
قديم 08-12-2016, 04:32 PM المشاركة 2   
افتراضي


وعليكم السلام ...
الــ return تعليمة محجوزة في الكومبايلر نستخدمها عندما نستدعي دالة لتنفيذ امر معين وحال تحقق ذلك الامر سيترك البرنامج الدالة ويعود الى الدالة التي استدعي منها .... لنأخذ مثال ع ذلك ...

كود:
if(portb.f0==1){delay_ms(250); show_number();}
هنا نختبر حالة الطرف RB0 اذا اصبح بواحد سيقوم بأستدعاء دالة show_number

ولنفترض ان دالة show_time بهذا الشكل

كود:
void show_number()
{
char x;
 while(1)
 {
 
 x++;
 ;(delay_ms(250
 if(x==10){return;}
 
 portb.f2=1;
 portb.f4=1;
 
 }
الان عند الدخول الى هذه الدالة سيبقى المايكرو في لوب مستمر
ونحن نريد عندما يصل المتغير x الى الــ 10 الخروج من هذه الدالة ...
الان يأتي دور return حيثما يتحقق الشرط سيترك البرنامج الدالة بأكملها والخروج منها والعودة الى النقطة التي تم استدعائها منها دون ان يلتفت لبقية الاوامر في ذات الدالة ....

هنالك ايضاً تعليمة break وهي تؤدي نفس الغرض ولكن تختلف في انها ستخرج من اللوب وتكمل تنفيذ بقية اوامر الدالة ومن ثم الرجوع ....

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 08-12-2016, 05:00 PM المشاركة 3   
افتراضي


مشكور اخي الله يجازيك الف خير
ممكن تشرح لي عندما نقوم بعمل ريتورن جانب متغير
مثال

char x;
char y = 11;
x=y;

return x;
الكود اللذي لم افهمه هو هذا


احمد شهيد جواد
:: مهندس متميز ::
تاريخ التسجيل: Apr 2015
الدولة: العراق
المشاركات: 324
نشاط [ احمد شهيد جواد ]
قوة السمعة:0
قديم 08-12-2016, 07:43 PM المشاركة 4   
افتراضي


السلام عليكم ...
لاحظ اخي هذه الصورة



اول ماتلاحظه هو ان الدالة ليس void بل متغير من نوع unsigned short
السؤال . لماذا جعلناها متغير ؟؟؟
الجواب : لاننا نريد ارجاع قيمة بعد تنفيذ اوامر الدالة ...

ارجع ثانية للصورة اعلاه وتابع الاوامر ..

1-بدأ عمل ال I2C واخراج الكلوكات ع طرفيه
2-تهيئة السليف للكتابة عليه
3- تحديد العنوان الذي سنقوم بتحديث بياناته وهذا يتم من خلال البراميتر الذي يتم اسناده في الدالة
4-اعادة تهيئة الـ I2C من اجل القراءه منه
5-تحديد حالة السليف للقراءه
6- القراءه من العنوان 0 وتسجيل القيمة في متغير
7- ايقاف الـ I2C
8- ارجاع قيمة العنوان 0 من السليف

بمعنى لو كان عندك عامل يعمل في فندق متكون من عدة طوابق وانت تريد تعرف كم شخص في الطابق الثاني .. ماذا تفعل ؟؟؟ ببساطة ستقول للعامل اذهب للطابق الثاني .. وهو هذا الامر
كود:
_i2c_read_ds1307(2);
ثم اعطني عدد الاشخاص اللذين يتواجدون فيه ... وهو هذا الامر
كود:
return i2c_read_data;
تحياتي

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً rigbi ( شكر العضو على هذه المشاركة )
اعجاب rigbi, abu-thabit ( أعجبته المشاركة )

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 08-12-2016, 07:52 PM المشاركة 5   
افتراضي


السلام عليكم ...
لاحظ اخي هذه الصورة



اول ماتلاحظه هو ان الدالة ليس void بل متغير من نوع unsigned short
السؤال . لماذا جعلناها متغير ؟؟؟
الجواب : لاننا نريد ارجاع قيمة بعد تنفيذ اوامر الدالة ...

ارجع ثانية للصورة اعلاه وتابع الاوامر ..

1-بدأ عمل ال I2C واخراج الكلوكات ع طرفيه
2-تهيئة السليف للكتابة عليه
3- تحديد العنوان الذي سنقوم بتحديث بياناته وهذا يتم من خلال البراميتر الذي يتم اسناده في الدالة
4-اعادة تهيئة الـ I2C من اجل القراءه منه
5-تحديد حالة السليف للقراءه
6- القراءه من العنوان 0 وتسجيل القيمة في متغير
7- ايقاف الـ I2C
8- ارجاع قيمة العنوان 0 من السليف

بمعنى لو كان عندك عامل يعمل في فندق متكون من عدة طوابق وانت تريد تعرف كم شخص في الطابق الثاني .. ماذا تفعل ؟؟؟ ببساطة ستقول للعامل اذهب للطابق الثاني .. وهو هذا الامر
كود:
_i2c_read_ds1307(2);
ثم اعطني عدد الاشخاص اللذين يتواجدون فيه ... وهو هذا الامر
كود:
return i2c_read_data;
تحياتي
مشكور اخي انا فاهم الكود جيدا لاكن الشيئ اللذي لا افهمه و هو الريتورن لم تدخل لي لراسي ههه
ارجوك هل يمكنك ان تفسر اكثر


احمد شهيد جواد
:: مهندس متميز ::
تاريخ التسجيل: Apr 2015
الدولة: العراق
المشاركات: 324
نشاط [ احمد شهيد جواد ]
قوة السمعة:0
قديم 08-12-2016, 09:17 PM المشاركة 6   
افتراضي


الامر بسيط جداً ...

لاحظ الكود وستفهمه ان شاء الله

كود:
char read()
{
 x=3;
 y=5
 i=x+y;
 
 return i;
 

}
كود:
كود:
void main()
{

 if(read()==8){led=1;}

}
الان ماذا سيحدث ؟؟؟؟
اول مايدخل البرنامج للــ void main
هيختبر >>>>>>>>>> هل دالة الــ read تساوي 8
هنا سيقف مباشرةً وسينتقل لدالة read وهيدخل يجعل الـ x=3 والـ y=5
وهيجمع الــ x والـ y ويحفظ قيمتهم بالمتغير i
بعد ذلك هيرجع قيمة الــ i من خلال امر ;return i

هيرجع معناها ان قيمة المتغير اصبحت هي قيمة الدالة .. كأنك شلت كلمة read ووضعت بمكانها 8 ....


افهم امر واحد وهو (الدالة ترجع قيمة) يعني دالة ترجع رقم . كم الرقم ؟ هو قيمة المتغير بعد كلمة return ....


لو فرضنا ان الــ x=100
ثم قلنا
return x
يعني الدالة اصبحت قيمتها 100 اي نرفع اسم الدالة ونضع 100 بمكانها

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً rigbi ( شكر العضو على هذه المشاركة )
اعجاب rigbi ( أعجبته المشاركة )

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 08-12-2016, 10:03 PM المشاركة 7   
افتراضي


الامر بسيط جداً ...

لاحظ الكود وستفهمه ان شاء الله

كود:
char read()
{
 x=3;
 y=5
 i=x+y;
 
 return i;
 

}
كود:
كود:
void main()
{

 if(read()==8){led=1;}

}
الان ماذا سيحدث ؟؟؟؟
اول مايدخل البرنامج للــ void main
هيختبر >>>>>>>>>> هل دالة الــ read تساوي 8
هنا سيقف مباشرةً وسينتقل لدالة read وهيدخل يجعل الـ x=3 والـ y=5
وهيجمع الــ x والـ y ويحفظ قيمتهم بالمتغير i
بعد ذلك هيرجع قيمة الــ i من خلال امر ;return i

هيرجع معناها ان قيمة المتغير اصبحت هي قيمة الدالة .. كأنك شلت كلمة read ووضعت بمكانها 8 ....


افهم امر واحد وهو (الدالة ترجع قيمة) يعني دالة ترجع رقم . كم الرقم ؟ هو قيمة المتغير بعد كلمة return ....


لو فرضنا ان الــ x=100
ثم قلنا
return x
يعني الدالة اصبحت قيمتها 100 اي نرفع اسم الدالة ونضع 100 بمكانها
مشكووووووووور اخي لقد افدتني كثيييييييرا انا اشكرك الله يعطيك ما تتمناه
هل تعلم ان دالة الريتورن 2 ايام و انا ابحث عن شرح لها لاكن اغلب الشروحات تكون غير مفهومة جيدا
المهم اللذي تعلمته منك هو ان دالة الريتورن تحذف الاستدعاء و تعوضه بالمتغير اللذي يكون بعد الريتورن
شكرا شكرا شكرا شكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكراشكرا شكرا شكرا

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 08:34 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025