لدي تساَؤل في تطبيق الحلقة For في أحد الأسئلة ..

من خلال الحلقة for ..

أنشئ حلقة تطبع لك جميع الأرقام من 1 إلى 10.

الإجابة كانت بهذا الشكل ..

و الناتج كما هو معروف لدي الجميع سيكون كالتالي ..

ولكن هذه النتيجة ليست ما أتطلع اليه فأنا أريد الناتج بهذا الشكل ..

ولكن الشرط الوحيد الذي أريد تطبيقه هو عدم وجود فاصلة بعد الرقم 10.

هل هذا الأمر ممكن أم مستحيل منطقيا من خلال الحلقة (for) فقط .. ؟


التعليق السابق

إجابه أكثر من رائعه لأنه التسأول نتج من خلال معرفتي بأن المتغير داخل الأقواس في الحلقه لا يمكن إستخدامه خارجها علشان كده قولت بإستحالة تنفيذ الناتج منطقيا بالشكل الموضح في الأعلي من خلال الفور فقط بدون إستخدام أي متغيرات أو أكواد خارجية .

  • أما بخصوص عدم استخدام الشروط أو الخروج خارج نطاق الحقلة أو تعريف متغيرات إضافية فهذا سيتطلب منك البحث عن حلول بديله كاستخدام نوع البيانات char لطباعة الرموز مع بعض من الرياضيات لتتلاشى طباعة الرمز في نهاية الحلقة كالتالي:

    for(int counter = 1; counter <= 10; counter = counter+1) {
        System.out.print(counter + ""+ (char)(44-(12*(1/(11-counter)))));
    }
    

الرقم 44 يعني الرمز , والرقم 32 يعني مسافة فارغة

في الحقيقة تعليقاتك دائما إبداعية وحلولك بالنسبالي عبارة عن فكرة مفيدة تثير فكرة أخري أكثر إفادة , أما بخصوصي فأنا مبتدئ هاوي أطمح للعمل في المجال البرمجي بشكل إحترافي كليا , و أما بخصوص التسأول فهو نتاج عدم التزامي بالشكل النهائي للناتج في التمارين الموجودة علي كل درس , محاولة مني في حصر كل الإحتمالات الممكنة للخروج بنتيجة مختلفة بطرق غير مألوفة نسبة لما درسته حتي الأن , وهذا أري مردوه الواضح في تقدمي في الكثير من الجوانب المنطقية والبرمجية ,

التساؤل مبني علي ملاحظتي انه عند طباعة الأرقام علي سطر واحد ومن ثم طباعة الفواصل ايضا مع الأرقام بعد كل رقم فإنه سيكون هناك فاصلة زيادة بعد الرقم عشرة وهذا ما لم أرغب به وبدا لي أن الأمر مستحيل منطقيا لأنه عند كل دورة في الحلقة سيتم طباعة الأرقام مع الفواصل بشكل متوازي ولن يتم الوصول للشكل المرغوب فهذا جعلني الوح بإستحالة تحقيق هذا الناتج منطقيا بإستخدام الحلقة فور فقط نظرا لطريقة كتابتها وطريقة عملها.

ومن هنا لابد أن يكون هناك ضرورة ملحه بإبتكار حلقات إخري تعمل بشكل مختلف , إضافة الي شروط وحيل رياضية اخري ليكمل كل عنصر الأخر للخروج بشكل نهائي متكامل للبرمجيات اعتمادا علي كل الأدوات والعناصر الموجودة وهذا ما اتضح لي من خلالكم أيها الرائعون ,

ومن هنا يأتي الإبتكار والإبداع .

ولما لا يستخدم الشروط المختصرة

for(int counter = 1; counter <= 10; counter = counter+1) {
  System.out.print(counter + (counter < 10 ? ", " : ""));
}
  • على ما أظن أنه سؤال في منهج دراسي يضيق الشروط ليبحث الطالب عن حلول أخرى ليصقل الطلاب مهارات حل المشكلات البرمجية، فشرط عدم استخدام الشروط شرط متعمدم حتى لا يلجأ الطالب لاستخدامه في الحل.

لا أرا ذالك ، السؤال هو طباعة من 1 إلى 10 وهذا سؤال يطرح للمبتدئين للتدريب على الحلقات

وأنت استخدمت char وكود الرمز وعمليات معقدة وهذا غير متوقع من مبتدأ

  • هذا ما اعتقدته من تأكيد @mohamed_el_dawansy على عدم استخدام الشروط أو تعريف متغيرات أو حتى الطباعة خارج الحلقة.

أرجو منك شرح الشروط المستخدمة داخل دالة الطباعة :)

ما كتبته مكافيء للكود التالي

for(int counter = 1; counter <= 10; counter = counter+1) {
  String str;
  if (counter < 10) {
    str = ",";
  } else {
    str = "";
  }
  System.out.print(counter + str);
}

وهذه الطريقة تسمى الشروط المختصرة (short if) وصيغتها كالتالي

x = (cond ? valueIfCondIsTrue : valueIfCondIsFalse);

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

  • إذا كنت تريد تنمية مهاراتك الرياضية والبرمجية إليك موقع

وما شابهه، وداخل المنتدى ستجد مشاراكات مفيدة في هذا المجال أيضاً.

كيف تعلمت الإعتماد علي المصادر الأجنبية وما هي قصتك مع اللغة الإنجليزية

مجهول
  • حذف بواسطة المستخدم

بارك الله فيك

  • قصتي سيئة مع اللغة الإنجليزية، فقط احتكاكي بالمجال البرمجي هو ما جعل لغتي الإنجليزية تتحسن بعض الشي بالحث عن ترجمة كلمة ما ومحاولة فهم موضوع ما وهكذا هو حالي لم أعتمد على منهجية محددة أو دراسة أكاديمية، كانت لدي النية عدة مرات لتعلمها بشكل جيد ولكن لم أجد الوقت الكاف بعد للبدأ، أأمل أن يجيبك الأعضاء ذوي الخبرة في اللغة الإنجليزية عن أفضل الأسالب لتعلمها بشكل جيد وبدون عشوائية.
mohamed_el_dawansy أضف ردا

يبدو أنني أسير علي نفس الدرب .