مراجعة وإتقان البرمجة بلغة السى من خلال أسئلة ؟؟ وأجوبة !!! للمراجعة :
السؤال الأول :
مطلوب إنشاء الإعلان المناسب للحالات الأتية :
أ- ثابت يسمى "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) والقيم المتعاقبة تتبعها على التسلسل .