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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 22-02-2013, 10:49 PM المشاركة 1   
افتراضي مراجعة وإتقان البرمجة بلغة السى من خلال أسئلة ؟؟ وأجوبة !!! للمراجعة : Twitter FaceBook Google+



مراجعة وإتقان البرمجة بلغة السى من خلال أسئلة ؟؟ وأجوبة !!! للمراجعة :

السؤال الأول :

مطلوب إنشاء الإعلان المناسب للحالات الأتية :

أ‌- ثابت يسمى "x" والذى سوف يتم تحديده بالقيمة "789"

الإجابة

كود:
cons int16 x = 789 ; //typical for CCS-PICC OR // if #TYPE SHORT=8 , INT=16 , LONG=32 const int x = 789 ;

ملحوظة :
فى هذه الحالة يتم إعلان قيمة لعدد صحيح (int16) لأن 789" هو عدد "16 بت" 16-bit
(+/- 32767 or 0 – 65535) وأكبر حجم لمتغير نوع char هو 8 بت فقط ( +/- 128 or 0-255) .

ب‌- متغير يسمى "fred" والذى سوف يحفظ عدد من 3 إلى 456

الإجابة :

كود:
unsigned int16 fred ; // typical for CCS-PICC OR Int16 fred ; OR // if #TYPE SHORT=8 , INT=16 , LONG=32 unsigned int fred ; OR int fred ;

ملحوظة :
فى هذه الحالة الأعداد دائما موجبة , لذلك يمكن استخدام أى من int أو unsigned int , لكن مدى العدد لا يتناسب مع char أو unsigned char ( +/- 128 or 0-255) .

ت‌- متغير يسمى "sensor_out" والذى يتضمن الأعداد من "-10" إلى "+45" .

الإجابة :

كود:
signed char sensor_out ;

ث‌- مصفوفة متغيرات والتى بها 10 عناصر كل منها يحفظ الأعداد من "-23" إلى "345" .

الإجابة :

كود:
int array[10] ; // if #TYPE SHORT=8 , INT=16 , LONG=32 OR int16 array[10] ; // typical for CCS-PICC

ملحوظة :
فى هذه الحالة لايمكن استخدام char أو int8 لأن الأعداد يمكن أن تزيد عن 128 (8 bits) .

ج‌- حروف سلسلة نصية ثابتة والتى تتضمن السلسلة النصية "Press here to end " .

الإجابة :

كود:
const char press_string[ ] = "Press here to end "; OR const int8 press_string[ ] = "Press here to end ";
ملحوظة :
يعتبر كل من const char و const int8 من نفس النوع للذاكرة الثابتة . هذه الإعلانات سوف تولد نفس الكود .

ح‌- مؤشر يسمى "array_ptr" والذى سوف يشير إلى مصفوفة أعداد فى المدى من 3 إلى 567 .

الإجابة :

كود:
// if #TYPE SHORT=8 , INT=16 , LONG=32 unsigned int *array_ptr ; OR unsigned int16 *ARRAY_PTR ; // typical for CCS-PICC.
ملحوظة :
عند إعلان نوع مؤشر , لا نعطى اهتمام لحجم المؤشر ولكن لحجم المتغير المشار إليه . فى هذه الحالة , المؤشر يشير إلى قيم والتى هى أكبر من 8 بت , لكن سوف يناسبها بسهولة عدد صحيح موجب 16 بت .

خ‌- استخدم قوائم السرد enumeration لتحديد "uno" , "dos" , "tres" بالقيم (21 , 22 , 23 ) على الترتيب .

الإجابة :
كود:
enum { uno=21 , dos , tres } ;
ملحوظة :
القيمة الأفتراضية لمسمى بداية قائمة السرد هى الصفر "0" . لذلك يجب تخصيص المسمى الأول لقيمة البداية المطلوبة (uno=21) والقيم المتعاقبة تتبعها على التسلسل .

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 22-02-2013, 11:10 PM المشاركة 2   
افتراضي


السؤال الثانى :
قيم بصواب true أو بغير صواب false العبارات التالية عند استخدامها كعبارة شرط :
مع العلم أنه فى جميع الحالات :

كود:
x = 0x45 ; y = 0xC6 ;


أ‌- (x == 0x45) :

الإجابة : TRUE .

ب‌- (x | y ) :

الإجابة : TRUE :
لأن 0x45 | 0xC6 = 0xC7 والقيمة 0x0C7 غير صفرية .

ت‌- ( x > y ) :

الإجابة : FALSE .

ث‌- ( y – 0x06 == 0xC ) :

الإجابة : FALSE
لأن ( 0xC6 – 0x06 = 0xC0) وهذه القيمة لا تساوى القيمة (0x0C) .

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 23-02-2013, 11:33 AM المشاركة 3   
افتراضي


السؤال الثالث :
قيم قيمة المتغيرات بعد قطعة الكود التالية :

كود:
unsigned char cntr = 10 ; unsigned int16 value = 10 ; do { value++ ; }while (cntr < 10 ) ; // value = ?? , cntr + ??

الإجابة : value = 11 و cntr = 10 .

ملاحظة :
عند الدخول من قمة الحلقة , قيمة المتغير value يحدث لها تزايد بواحد فتصبح "11" , ثم يتم اختبار المتغير cntr ولكن لا يتم تعديله ويتم الخروج من الحلقة نتيجة لتقييم الاختبار "غير صواب" FALSE .


السؤال الرابع :
أكتب قطعة كود بلغة السى لإعلان المصفوفة المناسبة , ثم إملء المصفوفة بالعدد "2" مرفوع للأس من واحد إلى 6 .

الإجابة :

أحد الحلول الممكنة والتى تعتمد على فكرة أن إزاحة العدد الثنائى إلى اليسار لبت واحد فى كل مرة يكافىء ضرب هذا العدد فى "2" فى كل مرة :

كود:
unsigned char twos[6]; // size array to hold the 6 figures char x , y ; // declare a couple of indexes // y is the index , x is the value
y = 0 ; for(x = 2 ; x != 0x80 ; x <<1) // shift one left until it is 27 twos[y++] = x ; // store value into array and increment index
.




الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:0
قديم 03-03-2013, 07:21 AM المشاركة 4   
افتراضي


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


التعديل الأخير تم بواسطة : كرار العامري بتاريخ 03-03-2013 الساعة 07:39 AM

derkaoui849
:: مهندس ::
تاريخ التسجيل: May 2006
المشاركات: 27
نشاط [ derkaoui849 ]
قوة السمعة:0
قديم 03-03-2013, 06:56 PM المشاركة 5   
افتراضي


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


إضافة رد

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

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

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


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

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