إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

شرح الحلقات التكرارية " for , repeat , while " والإيقاف الإجبارى وكسر حلقة التكرار break

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

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


    أدرج الكود التالى فى التطبيق وعاين :

    كود:
    --
    tInputProperties = {};
    tInputProperties.Width = 25;
    tInputProperties.Height = 25;
    for i=1,6 do
    tInputProperties.Y = 50;
    tInputProperties.X = 50+(i*30);
    Page.CreateObject(OBJECT_INPUT, "Input"..i, tInputProperties);
    end
    
    color = {"FFCC00","FFCCCC","3366FF","CC99FF","00FF00","000000"};
    x = {};
    
    repeat
    for i=1,#color do
       Input.SetProperties("Input"..i, {BackgroundColor=Math.HexColorToNumber(color[i])});
       Table.Insert(x, (#color+1)-i, color[i]);
       Application.Sleep(500);
       if i==#color then
          for i=1,#color do
             Input.SetProperties("Input"..i, {BackgroundColor=16711163});
          end
          for i=2,#x do
             Input.SetProperties("Input"..i-1, {BackgroundColor=Math.HexColorToNumber(tostring(x[i]))});
             Application.Sleep(500);
             if i==#x then
                x = {};
             end
          end
       end
    end
    until t==5
    ملاحظة كود Application.Sleep له عيب قاتل لأنه يوقف إستجابة التطبيق للخروج أو إستخدام أزرار وأشياء أخرى لكن إضطررت لإستخدامة لتوضيح فكرة دمج التكرار لآداء مهمة وهو محور الشرح الحالى .


    أتمنى منك سعة الصدر فى تقبل الهروب من تنفيذ فكرة بحد ذاتها متكاملة وليس لدى ما يكفى من الوقت للتركيز :abc_145: سامحنى أخى فى هذه النقطة

    بالنسبة لمصفوفة الألوان التى وضعتها أنت كانت بها ألوان متطابقة لذلك حذفت منها فى هذا الكود لملاحظة التطبيق .

    تعليق


    • #17
      المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
      ب

      أتمنى منك سعة الصدر فى تقبل الهروب من تنفيذ فكرة بحد ذاتها متكاملة وليس لدى ما يكفى من الوقت للتركيز :abc_145: سامحنى أخى فى هذه النقطة

      بالنسبة لمصفوفة الألوان التى وضعتها أنت كانت بها ألوان متطابقة لذلك حذفت منها فى هذا الكود لملاحظة التطبيق .
      كود اكثر من رائع .......و فيه لقطات جميلة جدا ........... اما سعة الصدر فنحن من نطلبه من حضرتكم ........الكود يوحي باكثر من فكرة الالوان ...جميل جدا ........بارك الله فيك

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

      لكن ما دور t=5 ........هل للقيمة دلالة او شرط معين ؟

      تعليق


      • #18
        المشاركة الأصلية بواسطة المحترف اقلي مشاهدة المشاركة
        لكن ما دور t=5 ........هل للقيمة دلالة او شرط معين ؟
        هو شرط لن يتحقق لأنى لا أريدة أن يتحقق لإستمرار دوران الحلقة ريبيت " repeat " دون نهاية أو إلى ما لا نهاية

        تعليق


        • #19
          تم وضع باقى شرح الموضوع وأصبح شاملا للحلقات التكرارية

          تحياتى

          تعليق


          • #20
            المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
            تم وضع باقى شرح الموضوع وأصبح شاملا للحلقات التكرارية

            تحياتى
            متابع معكم استاذ ..........شكرا جزيلا

            تعليق


            • #21
              بعد إذن الاستاذ عبود :

              تطبيق سريع بسيط جدا لكل الدوال السابقة الخاصة بالتكرار .

              تمرين ( الحل في الدرس ) :نريد خمسة اكواد مختلفة تعرض ديالوج تظهر فيه بالتوالي الارقام من 1 الى 5 بالترتيب ..............أؤكد بخمس طرق ؟؟؟

              ملاحظة 1 :
              لانريد مثالا مفتوحا بل اكواد
              ملاحظة 2 : ان كان فيه طرق اكثر اكثر فهذا جد مرحب به

              تعليق


              • #22
                من اجل التحفيز ......وجدت 7 طرق

                تعليق


                • #23
                  المشاركة الأصلية بواسطة المحترف اقلي مشاهدة المشاركة
                  من اجل التحفيز ......وجدت 7 طرق
                  ---------------------------------

                  بسم الله الرحمن الرحيم
                  اخي المحترف اعتقد انني لم افهم السؤال ؟
                  وما فهمة هو تطبيق
                  كود PHP:
                  for var=1,do
                       
                  Dialog.Message("Notice", var, MB_OKMB_ICONINFORMATIONMB_DEFBUTTON1);
                  end 
                  هل هذا ما تقصد ؟

                  ان ايضا اريد ان تظهر بالترتيب في 5 انبت لا في الديلوج كيف؟
                  موفق بإذن الله ... لك مني أجمل تحية .

                  تعليق


                  • #24
                    المشاركة الأصلية بواسطة ياسرهتهت مشاهدة المشاركة
                    ---------------------------------

                    كود PHP:
                    for var=1,do
                         
                    Dialog.Message("Notice", var, MB_OKMB_ICONINFORMATIONMB_DEFBUTTON1);
                    end 
                    هل هذا ما تقصد ؟

                    ممتاز ......وجدت حل واحد يا استاذ ياسر ....السؤال هو ......... هل فيه طرق اخرى تجد نفس النتيجة و تظهر الارقام بالترتيب من 1 الى 5 في الديالوج ..........و لاداع للاخراج في انبوتات .....فهي مسالة اخراج و نحن هنا نبحث عن كود يؤدي التكرار من 1 الى 5

                    بالتوفيق

                    تعليق


                    • #25
                      بعد انتهاء مهلة التفكير ساجيب على تساؤلي ...... من اجل ان يظهر لنا ديالوج تظهر فيه الارقام من 1 الى 5 بالترتيب

                      الطريقة الاولى :
                      كود PHP:

                      ;
                      repeat
                      Dialog
                      .Message("Aboud1"i);
                      ;
                      until  i == 
                      الطريقة الثانية :
                      كود PHP:
                      for i=1,do
                      Dialog.Message("Aboud2",i);
                      end 


                      الطريقة الثالثة :

                      كود PHP:

                      1;
                      while 
                      i<do
                      Dialog.Message("Aboud3"i);
                      i+;
                      end 


                      الطريقة الرابعة :

                      كود PHP:

                      num 
                      = {1,2,3,4,5};
                      for 
                      i,n in pairs(num) do
                      Dialog.Message("Aboud4");
                      end 
                      الطريقة الخامسة:
                      كود PHP:

                      num 
                      = {1,2,3,4,5};
                      for 
                      i=1,#num do
                      Dialog.Message("Aboud5"num[i] );
                      end 


                      الطريقة السادسة:

                      كود PHP:

                      for i=5,1,-do
                      Dialog.Message("Aboud6"6-i);
                      end 
                      الطريقة السابعة:
                      كود PHP:

                      txt 
                      "12345";
                      for 
                      i=1,do
                      Dialog.Message("Aboud7"String.Mid(txt,i,1));
                      end 
                      الطريقة الثامنة :
                      كود PHP:
                      txt "12345";
                      for 
                      i=1,do
                      Dialog.Message("Aboud8",String.Mid(String.Left(txti),i,1));
                      end 
                      الطريقة التاسعة :
                      كود PHP:
                      txt 1;
                      repeat
                      Dialog
                      .Message("Aboud9",String.Length(txt));
                      txt String.ToNumber(txt)*10
                      until  txt 
                      == 100000
                      بعض الطرق تتشابه و قد تكون نفسها لكن تعمدت وضعها ليفهمها المستخدم للبرنامج و ما تؤدي اليه

                      حتى نتعرف طريقة اخرى بالتوفيق للجميع

                      تعليق


                      • #26
                        ماشاء الله عليك اخي عبود .. شرح ممتاز

                        بالتوفيق دائما

                        تعليق


                        • #27
                          المشاركة الأصلية بواسطة المحترف اقلي مشاهدة المشاركة
                          بعد انتهاء مهلة التفكير ساجيب على تساؤلي ...... من اجل ان يظهر لنا ديالوج تظهر فيه الارقام من 1 الى 5 بالترتيب

                          الطريقة الاولى :
                          كود PHP:

                          ;
                          repeat
                          Dialog
                          .Message("Aboud1"i);
                          ;
                          until  i == 
                          الطريقة الثانية :
                          كود PHP:
                          for i=1,do
                          Dialog.Message("Aboud2",i);
                          end 


                          الطريقة الثالثة :

                          كود PHP:

                          1;
                          while 
                          i<do
                          Dialog.Message("Aboud3"i);
                          i+;
                          end 


                          الطريقة الرابعة :

                          كود PHP:

                          num 
                          = {1,2,3,4,5};
                          for 
                          i,n in pairs(num) do
                          Dialog.Message("Aboud4");
                          end 
                          الطريقة الخامسة:
                          كود PHP:

                          num 
                          = {1,2,3,4,5};
                          for 
                          i=1,#num do
                          Dialog.Message("Aboud5"num[i] );
                          end 


                          الطريقة السادسة:

                          كود PHP:

                          for i=5,1,-do
                          Dialog.Message("Aboud6"6-i);
                          end 
                          الطريقة السابعة:
                          كود PHP:

                          txt 
                          "12345";
                          for 
                          i=1,do
                          Dialog.Message("Aboud7"String.Mid(txt,i,1));
                          end 
                          الطريقة الثامنة :
                          كود PHP:
                          txt "12345";
                          for 
                          i=1,do
                          Dialog.Message("Aboud8",String.Mid(String.Left(txti),i,1));
                          end 
                          الطريقة التاسعة :
                          كود PHP:
                          txt 1;
                          repeat
                          Dialog
                          .Message("Aboud9",String.Length(txt));
                          txt String.ToNumber(txt)*10
                          until  txt 
                          == 100000
                          بعض الطرق تتشابه و قد تكون نفسها لكن تعمدت وضعها ليفهمها المستخدم للبرنامج و ما تؤدي اليه

                          حتى نتعرف طريقة اخرى بالتوفيق للجميع
                          شكرا جزيلا التطبيق هو الوسيلة الاسرع للتعلم أو تثيبت المعلومة لكن
                          الطرح للسؤال قد يكون له عدة أجوبة حتى بدون حلقات تكرارية مثال فقط سريع
                          لو كتبنا في on show
                          كود:
                          x=0
                          وفي عنصر xButton1 الكود:
                          كود:
                          if x == 5 then
                          x=0;Application.ExitScript();
                          end;x=x+1;Dialog.Message("Notice", x);
                          Page.ClickObject("xButton1")
                          ترى هل حقق الطلب و مثل هذا الاجراء الكثير و الكثير
                          فالسؤال الذي يطرح نفسه هو هل يمكن عدم استعمال تعابير الحلقات التكرارية
                          وتحقيقه دون وسائط أو تخزين أو الاعلان المباشر ؟ لغات برمجية أخرى أي نعم توصلت أما الاوتوبلاي فلم أقرأ ذلك
                          جيد لو أقرأه يوما
                          سلامي

                          تعليق


                          • #28
                            المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
                            شكرا جزيلا التطبيق هو الوسيلة الاسرع للتعلم أو تثيبت المعلومة لكن
                            الطرح للسؤال قد يكون له عدة أجوبة حتى بدون حلقات تكرارية مثال فقط سريع
                            لو كتبنا في on show
                            كود:
                            x=0
                            وفي عنصر xButton1 الكود:
                            كود:
                            if x == 5 then
                            x=0;Application.ExitScript();
                            end;x=x+1;Dialog.Message("Notice", x);
                            Page.ClickObject("xButton1")
                            ترى هل حقق الطلب و مثل هذا الاجراء الكثير و الكثير
                            فالسؤال الذي يطرح نفسه هو هل يمكن عدم استعمال تعابير الحلقات التكرارية
                            وتحقيقه دون وسائط أو تخزين أو الاعلان المباشر ؟ لغات برمجية أخرى أي نعم توصلت أما الاوتوبلاي فلم أقرأ ذلك
                            جيد لو أقرأه يوما
                            سلامي

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

                            تعليق


                            • #29
                              أعتذر لم انتبه أن السؤال متعلق بحلقات التكرار

                              تعليق


                              • #30
                                بارك الله فيك أخى المحترف اقلي جزاك الله خيرا .......... تركيز جميل ينتج عن فهم عميق

                                بالنسبة للأخ ياسر :

                                ركز فى على سبيل المثال الحلقة التالية :

                                كود:
                                --
                                for i=1,5 do
                                Dialog.Message("Aboud2",i);
                                end
                                ما هو المتغير i ولماذا تم وضعة وهل قابل للتغيير بأى إسم تريد ؟

                                المتغير i هو عبارة عن وسيط يعمل على تخزين قيمة التكرار فى كل مرة بداخلة
                                أى أن فى أول دورة للحلقة سوف يكون القيمة المخزنة فية هى 1
                                فى الدورة الثانية سوف تكون القيمة المخزنة فية هى 2
                                فى الدورة الثالثة سوف تكون القيمة المخزنة فية هى 3
                                فى الدورة الرابعة سوف تكون القيمة المخزنة فية هى 4
                                فى الدورة الخامسة سوف تكون القيمة المخزنة فية هى 5

                                لاحظ أن القيمة القصوى أو الحد الأقصى كان 5 أى أن جميع الأكواد التى توضع بين الكلمتين do و end سوف يتم تكرارها 5 مرات تنفيذ لها .
                                كيف نستطيع الإستفادة مما ينتجة التكرار ؟ يمكننا عن طريق ما يتم تخزينة فى المتغير i حيث هو المعبر عن كل حلقة تكرارية أوتوماتيكيا .

                                هل لديك عدد 5 إينبوتات ؟ إذن لديك أسمائهم ..... إذن إذا كان الإينبوت الأول تحت إسم input1 والثانى تحت إسم input2 والثالث تحت إسم input3 والرابع تحت إسم input4 والخامس تحت إسم input5
                                هل يمكننا إستخدام الحلقة التكرارية for لتوفر علينا كثرة الأكواد ؟

                                نعم سوف نستخدم ما يخزن فى المتغير i كى يعبر لنا عن جزء من إسم الإينبوتات حيث يشترك جميع أسماء الإينبوتات فى جزء من الإسم فيكونوا متشابهين فى الجزء التالى input أما وجة الإختلاف بينهم هو فى رقم كل إينبوت .
                                فعندما نريد كتابة رقم الإينبوت فى كل حلقة أوتوماتيكيا سوف نستخدم الجزء المتشابة من الإسم موصول بـــــ الجزء المختلف والذى سيتم توليدة أوتوماتيكيا فى كل دورة للحلقة التكرارية وتخزينة فى المتغير i فتكون النتيجة المطلوب كتابتها فى الحلقة هى :

                                input..i لاحظ النقطتين " .. " هى علامة الوصل بين المتغير والجزء المشترك المتشابة من الإسم لكل إينبوت .


                                فإذا كنا نريد مثالا بسيطا نبدأ به ترجمة ما ذكرتة لك فيكون كالتالى :
                                ضع 5 إينبوتات input1 و input2 و input3 و input4 و input5


                                نريد تكوين حلقة تضع فى كل الإينبوتات كلمة مرحبا سوف نستخدم الكود Input.SetText

                                فتكون شكل الحلقة كالتالى :

                                كود:
                                --
                                for i = 1, 5 do
                                    Input.SetText("Input"..i, "مرحبا");
                                end
                                إنتهى التوضيح وفى إنتظار أن تكتب لى نفس الكود بأى زيادة تريدها بحيث يظهر فى كل إينبوت كلمة أخرى أو نص مختلف عن جميع الإينبوتات
                                إستخدم المصفوفة والتكرار معا وضع الكود بحسب ما توصلت إلية .



                                تحياتى للجميع " أخى هيثم وأخى أبوبلقيس " ترحيب حار وإحترام شديد

                                تعليق

                                مواضيع تهمك

                                تقليص

                                المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                                المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                                المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                                المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                                المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                                يعمل...
                                X