Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

‫‪LEC_13‬‬ ‫مالحظة‪ :1‬القيم الفرديه ليست جميعها تقبل القسمه على ‪3‬‬

‫والعدد ‪ 6‬زوجي ويقبل القسمه على ‪3‬‬ ‫فالعدد ‪ 7‬فردي وال يقبل القسمة على ‪3‬‬
‫مالحظة‪ :2‬لمعرفه ان كان الرقم ‪ n‬عدد زوجي فيتم استخدام الشرط ‪ if mod( n , 2) == 0‬فان تحقق الشرط‬
‫فالرقم ‪ n‬زوجي وبحاله عدم تحقق الشرط فالرقم ‪ n‬هو عدد فردي‪.‬‬
‫وبالتالي‪ :‬نستخدم ‪ mod( n , 2) == 0‬لفحص ان العدد زوجي وعدم تحقق الشرط فالعدد ‪ n‬فردي‬
‫نستخدم ‪ if mod( n , 2) ~= 0‬لفحص ان العدد فردي وعدم تحقق الشرط فالعدد ‪ n‬زوجي‬
‫سؤال‪ : 1‬اكتب برنامج اليجاد عدد القيم الزوجيه وعدد القيم الفرديه من بين ‪ 5‬اعداد ؟ الحل بطريقتين وكالتالي ‪:‬‬
‫الطريقه ‪ :1‬استخدام جملتي ‪ if : if‬األولى لمعرفه ان كان العدد زوجي و ‪ if‬الثانية لفحص الفردي‬
‫‪ -1‬نحتاج الى استخدام معدادين فرضا ‪ i‬لعدد القيم الزوجية و ‪ j‬لعدد القيم الفردية‬
‫‪ -2‬قراءه العدد‬
‫‪ -3‬اذا كان العدد زوجي فيزداد معداد الزوجي ‪ i‬بواحد‬
‫‪ -4‬اذا كان العدد فردي فيزداد معداد ‪ j‬بواحد‬
‫‪ -5‬تكرار الخطوات ‪ 2‬و ‪ 3‬و ‪ 4‬لحين االنتهاء من قراءه وفحص ‪ 5‬قيم عندها يتم طباعه المعدادين ‪ i‬و ‪j‬‬
‫;‪i=0‬‬ ‫‪ Run‬تصفير معداد القيم الزوجيه‬ ‫‪i=0‬‬
‫;‪j=0‬‬ ‫تصفير معداد القيم الفرديه‬ ‫‪j=0‬‬
‫‪for k = 1 : 5‬‬ ‫‪No. = 6‬‬ ‫‪i=1‬‬
‫;)' = ‪a= input (' No.‬‬ ‫‪No. = 8‬‬ ‫‪i=2‬‬
‫‪if mod (a , 2) == 0‬‬ ‫‪No. = 5‬‬ ‫‪j=1‬‬
‫; ‪i = i +1‬‬ ‫‪No. = 12‬‬ ‫‪i=3‬‬
‫‪end‬‬ ‫‪No. = 9‬‬ ‫‪j=2‬‬
‫‪if mod (a , 2) ~= 0‬‬
‫; ‪j = j +1‬‬
‫‪3 2‬‬
‫‪end‬‬
‫‪end‬‬
‫;) ] ‪disp( [ i j‬‬
‫الطريقه ‪ :2‬استخدام جمله شرط واحده ‪ if … else‬فان لم يكن العدد زوجي فاكيد يكون العدد فردي‬
‫‪ -1‬نحتاج الى استخدام معدادين فرضا ‪ i‬لعدد القيم الزوجية و ‪ j‬لعدد القيم الفردية‬
‫‪ -2‬قراءه العدد‬
‫‪ -3‬اذا كان العدد زوجي فيزداد معداد الزوجي ‪ i‬بواحد‬
‫‪ -4‬بحاله عدم تحقق الشرط أعاله فنستدل على ان العدد فردي فيزداد معداد ‪ j‬بواحد‬
‫‪ -5‬االنتقال الى خطوه ‪ 2‬لحين قراءه ‪ 5‬قيم‬
‫‪ -6‬بعد انتهاء ادخال ‪ 5‬قيم يتم طباعه المعدادين ‪ i‬و ‪j‬‬
‫;‪i=0‬‬ ‫‪ Run‬تصفير معداد الزوجي‬ ‫‪i=0‬‬
‫;‪j=0‬‬ ‫تصفير معداد الفردي‬ ‫‪j= 0‬‬
‫‪for k = 1 : 5‬‬ ‫‪No. = 6‬‬ ‫‪i=1‬‬
‫;)' = ‪a= input (' No.‬‬ ‫‪No. = 8‬‬ ‫‪i=2‬‬
‫‪if mod (a , 2) == 0‬‬ ‫‪No. = 5‬‬ ‫‪j=1‬‬
‫; ‪i = i +1‬‬ ‫‪No. = 12‬‬ ‫‪i=3‬‬
‫‪else‬‬ ‫‪No. = 9‬‬ ‫‪j=2‬‬
‫;‪j=j+1‬‬
‫‪end‬‬
‫‪end‬‬ ‫‪3 2‬‬
‫;) ] ‪disp( [ i j‬‬
‫سؤال‪ : 2‬اكتب برنامج اليجاد عدد القيم الزوجيه وعدد القيم التي تقبل القسمه على ‪ 5‬من بين ‪ 7‬اعداد ؟‬
‫نالحظ ان العدد ‪ 11‬و ‪ 21‬كالهما زوجي ويقبل القسمه على ‪ 5‬فيزداد كل من المعداد ‪ e‬و ‪d‬‬
‫;‪e=0‬‬ ‫‪ Run‬تصفير معداد القيم الزوجيه‬ ‫‪e=0‬‬
‫;‪d=0‬‬ ‫تصفير معداد مضاعفات الرقم ‪5‬‬ ‫‪d=0‬‬
‫‪for k = 1 : 7‬‬
‫;)' = ‪a= input (' No.‬‬ ‫‪No. = 6‬‬ ‫‪e=1‬‬
‫‪if mod (a , 2) == 0‬‬ ‫‪No. = 8‬‬ ‫‪e=2‬‬
‫; ‪e = e +1‬‬ ‫‪No. = 10‬‬ ‫‪e=3‬‬
‫‪d=1‬‬
‫‪end‬‬
‫‪if mod (a , 5) == 0‬‬ ‫‪No. = 12‬‬ ‫‪e=4‬‬
‫; ‪d = d +1‬‬ ‫‪No. = 5‬‬ ‫‪d=2‬‬
‫‪No. = 7‬‬
‫‪end‬‬
‫‪end‬‬ ‫‪No. = 20‬‬ ‫‪e=5‬‬
‫;) ] ‪disp( [ e d‬‬ ‫‪d=3‬‬
‫‪5 3‬‬

‫‪ :Quiz‬هل باإلمكان حل المساله أعاله باستخدام الشرط ‪ if… else‬؟ ( نعم ‪ /‬ال ) ؟ وضح السبب ؟‬

‫مالحظه‪ :3‬كيف يتم إيجاد مجموع تراكمي لرقم معلوم أي جمع الرقم مع نفسه عده مرات (تستخدم في حاله الضرب)‬
‫متغير = ‪0‬‬ ‫‪ -1‬يتم تصفير المجموع (يوضع قبل الحلقه)‬
‫‪s = s + constant number‬‬ ‫‪ -2‬متغير = متغير ‪ +‬القيمة المطلوب اضافتها‬
‫‪ -3‬تكرار خطوه ‪ 2‬لحين جمع كل القيم (أي ان خطوه ‪ 2‬يتم وضعها داخل الحلقه ‪) for‬‬
‫مثال‪ :1‬استخدام المجموع التراكمي لعمليه الضرب ‪ :3*4‬وذلك بجمع العدد ‪ 4‬مع نفسه ل ‪ 3‬مرات ‪s = 4 + 4 + 4‬‬
‫;‪s=0‬‬ ‫‪s=0‬‬ ‫;‪s = 0‬‬ ‫‪RUN‬‬
‫‪s = s + 4 ; s = 0 + 4 = 4 for i =1 : 3‬‬
‫‪s=s+4; s=4+4=8‬‬ ‫‪s = s + 4 ; 12‬‬
‫‪s = s + 4 ; s = 8 + 4 = 12 end‬‬
‫; )‪disp(s‬‬
‫حل اخر للمسأله أعاله ‪ 3 * 4‬وذلك بجمع العدد ‪ 3‬مع نفسه ل ‪ 4‬مرات ‪s = 3 + 3 + 3 + 3‬‬
‫;‪s=0‬‬ ‫‪s=0‬‬ ‫;‪s = 0‬‬ ‫‪RUN‬‬
‫‪s = s + 3 ; s = 0 + 3 = 3 for i =1 : 4‬‬
‫‪s=s+3; s=3+3=6‬‬ ‫‪s = s + 3 ; 12‬‬
‫‪s = s + 3 ; s = 6 + 3 = 9 end‬‬
‫; )‪s = s + 3 ; s = 9 + 3 = 12 disp(s‬‬
‫مالحظه‪ : 4‬لجمع أي مجموعه من القيم (جمع درجات ‪ ...‬جمع قيم موجبه‪ ...‬جمع قيم زوجيه‪ ...‬الخ)‬
‫لحل هكذا نوع من المسائل نحتاج ‪:‬‬
‫‪ -1‬تصفير المجموع قبل الحلقه ( نفرض المجموع ‪) s = 0‬‬
‫‪ -2‬ادخال الرقم ( نفرضه ‪) x‬‬
‫‪s=s+x‬‬ ‫‪ -3‬اضافه ‪ x‬الى المجموع التراكمي ‪: s‬‬
‫‪ -4‬تكرار خطوة ‪ 2‬و ‪ 3‬بقدر عدد القيم المطلوب جمعها‬
‫‪ -5‬طباعه المجموع بعد انتهاء الحلقه‬
‫‪s=7+9+5+8‬‬ ‫مثال‪ :2‬استخدام المجموع التراكمي لجمع القيم ‪ 8 5 9 7 = x :‬بمعنى‬
‫;‪s=0‬‬ ‫‪s=0‬‬
‫‪s=s+7; s=0+7=7‬‬
‫‪s = s + 9 ; s = 7 + 9 = 16‬‬
‫‪s = s + 5 ; s = 16 + 5 = 21‬‬
‫‪s=s+8‬‬ ‫‪s = 21 + 8 = 29‬‬
‫مثال‪ :3‬جد مجموع ‪ 5‬درجات والمعدل ( الدرجات ‪) 6 8 5 9 7 :‬‬
‫‪ -1‬تصفير المجموع قبل الحلقه ( نفرض المجموع ‪) s‬‬
‫‪ -2‬تكرار خطوة ‪ 3‬و ‪ 4‬بقدر عدد الدرجات‬
‫‪ -3‬ادخال درجه ( نفرض الدرجة ‪) x‬‬
‫‪ -4‬اضافه الدرجه على المجموع التراكمي‪s = s + x :‬‬
‫‪ -5‬طباعه المجموع واحتساب المعدل وطباعته بعد انتهاء الحلقه‬
‫;‪s = 0‬‬ ‫‪Run‬‬ ‫‪Run‬‬
‫‪for i =1 : 5‬‬ ‫‪7‬‬ ‫‪5‬‬
‫;)' = ‪x = input (' mark‬‬ ‫‪9‬‬ ‫‪8‬‬
‫;‪s=s+x‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪end‬‬ ‫‪8‬‬ ‫‪4‬‬
‫; ) ] ‪disp([ s s/5‬‬ ‫‪6‬‬ ‫‪9‬‬
‫‪35‬‬ ‫‪7‬‬ ‫‪32‬‬ ‫‪6.4‬‬

‫سؤال‪ :3‬اكتب برنامج لطباعه جدول الضرب للعدد ‪5‬‬


‫‪5*1‬‬ ‫‪5*2‬‬ ‫الحل‪ -1 :‬نحتاج الى ضرب ‪5 * 3 … 5 * 10‬‬
‫‪ -2‬لذا نحتاج لحلقه ‪ for‬للمضروب ‪10 ...1‬‬
‫‪ -3‬طباعه نتيجه الضرب تكون داخل الحلقه الن يوجد ‪ 10‬نتائج بالتاكيد‬
‫‪Run‬‬
‫‪5‬‬ ‫‪k=1‬‬
‫‪for k = 1 : 10‬‬ ‫‪10‬‬ ‫‪k=2‬‬
‫;‪c=5*k‬‬ ‫‪15‬‬ ‫‪k=3‬‬
‫;) ] ‪disp( [ c‬‬ ‫‪20‬‬ ‫‪k=4‬‬
‫‪end‬‬ ‫‪25‬‬ ‫‪k=5‬‬
‫‪30‬‬ ‫‪k=6‬‬
‫‪35‬‬ ‫‪k=7‬‬
‫‪40‬‬ ‫‪k=8‬‬
‫‪45‬‬ ‫‪k=9‬‬
‫‪50‬‬ ‫‪k = 10‬‬

You might also like