من كتاب كيف تفكر كعالم كمبيوتر لغه جافا الفصل الثامن السلاسل المحرفية : تمرينات - لغات برمجة المواقع
أهلا وسهلا بك إلى معهد توب ماكس تكنولوجي.
  1. ما شاء الله تبارك الله ( يا ربي لك الحمد كما ينبغي لجلال وجهك وعظيم سلطانك )
  2. معهد توب ماكس تكنولوجي | أعلى قمة للتكنولوجيا الحديثة في الشرق الأوسط - صرح علمي متميز
  3. طريقة تسجيل عضوية في معهد توب ماكس تكنولوجي بشكل سريع
    مع ملاحظة أن التسجيل مجاني ومفتوح طيلة أيام الأسبوع عند تسجيل العضوية تأكد من البريد الالكتروني أن يكون صحيحا لتفعيل عضويتك وأيضا أن تكتبه بحروف صغيره small و ليست كبيرة تستطيع أيضا استخدام الروابط التالي : استرجاع كلمة المرور | طلب كود تفعيل العضوية | تفعيل العضوية
  4. اشترك ألان في خدمة رسائل المعهد اليومية لتعرف كل جديد اضغط هنا للاشتراك
التفاصيل : الردود : 0 المرفقات : 0 المشاهدات: 908 مشاهدة
مشاهدة صفحة طباعة الموضوع
أرسل هذا الموضوع إلى صديق…

المواضيع المتشابهه

  1. مشاركات: 0
    آخر مشاركة: 03-27-2014, 05:50 PM
  2. مشاركات: 0
    آخر مشاركة: 03-27-2014, 05:45 PM
  3. مشاركات: 0
    آخر مشاركة: 03-27-2014, 05:35 PM
  4. مشاركات: 0
    آخر مشاركة: 03-27-2014, 05:33 PM
  5. من كتاب كيف تفكر كعالم كمبيوتر لغه جافا الفصل الثامن السلاسل المحرفية : Length
    بواسطة عماد الكامل في المنتدى لغات برمجة المواقع
    مشاركات: 0
    آخر مشاركة: 03-27-2014, 05:32 PM

النتائج 1 إلى 1 من 1
  1. #1
    وزير في مجتمع توب ماكس الصورة الرمزية عماد الكامل
    تاريخ التسجيل
    Nov 2010
    الدولة
    اليمن _ تعز _ المسبح
    العمر
    27
    المشاركات
    1,282
    معدل تقييم المستوى
    15

    افتراضي من كتاب كيف تفكر كعالم كمبيوتر لغه جافا الفصل الثامن السلاسل المحرفية : تمرينات

    تمرينات

    تمرين 8.4
    الغرض من هذا التمرين هو مراجعة التغليف والتعميم.
    a. غلف كسرة الشفرة التالية، لتحويلها إلى عملية تأخذ سلسلة محرفية كمعامل وتعيد قيمة count النهائية.
    b. في جملة واحدة أو اثنتين، اشرح ما تفعله العملية الناتجة بصورة مجردة (بدون الدخول في تفاصيل كيفية العمل).
    c. بفرض أنك عممت هذه العملية بحيث تعمل على أية سلسلة محرفية، ماذا يمكنك أن تفعل لتعميمها أكثر؟
    كود:
    String s = "((3 + 7) * 2)";
    int len = s.length ();
    int i = 0;
    int count = 0;
      while (i < len) {
        char c = s.charAt(i);
        if (c == ’(’) {
          count = count + 1;
        } else if (c == ’)’) {
          count = count - 1;
        }
        i = i + 1;
      }
    System.out.println (count);

    تمرين 8.5

    الغرض من هذا التمرين هو استكشاف أنواع المتغيرات في Java وتغطية بعض التفاصيل التي لم يغطها هذا الفصل.
    a. أنشئ برنامجاً جديداً باسم Test.java واكتب عملية main تحتوي على عدة عبارات تجمع بين أنواع مختلفة باستخدام عامل +. مثلاً، ماذا يحدث إذا "جمعت" String مع char؟ هل يتم تنفيذ عملية الجمع أم ربط السلاسل؟ ما هو نوع النتيجة؟ (كيف يمكنك تحديد نوع النتيجة؟)
    b. اصنع نسخة مكبرة من الجدول التالي واملأها. عند تقاطع كل زوج من الأنواع، عليك أن تبين ما إذا كان استخدام عامل (+) مشروعاً مع هذه الأنواع، ما هي العملية التي سينفذها (جمع أو ربط)، وما هو نوع النتيجة.


    c. فكر ببعض القرارات التي اتخذها مصممو لغة Java عندما ملؤوا هذا الجدول. كم عنصراً يبدو معقولاً، بحيث لا توجد أية خيارات معقولة أخرى؟ كم واحداً يبدو اختياراً عشوائياً من بين عدة احتمالات معقولة؟ كم واحداً من هذه العناصر يبدو غبياً؟
    d. إليك حزورة: عادة، تعليمة x++ مطابقة تماماً لتعليمة x = x + 1. إلا إذا كان x من نوع char ! في تلك الحالة، x++ مشروعة، لكن x = x + 1 تسبب خطأ. جربها وانظر إلى رسالة الخطأ التي ستحصل عليها، ثم حاول أن تعرف ماذا يجري.

    تمرين 8.6

    ما هو خرج هذا البرنامج؟ صِف، في جملة واحدة ما تفعله العملية bing (ليس كيفية عملها).
    كود:
    public static String bing (String s) {
      int i = s.length() - 1;
      String total = "";
      while (i >= 0 ) {
        char ch = s.charAt (i);
        System.out.println (i + " " + ch);
        total = total + ch;
        i--;
      }
        return total;
      }
      public static void main (String[] args) {
        System.out.println (bing ("Allen"));
      }
    }

    تمرين 8.7

    أعطاك أحد أصدقاءك العملية التالية ويقول أنه إذا كان المتغير number يحتوي على أية عدد مؤلف من خانتين، فإن البرنامج سيطبع الرقم بالمقلوب. هو يدعي أنه في حال كانت قيمة number تساوي 17، ستطبع العملية 71.
    هل هو محق؟ إذا لم يكن كذلك، اشرح ما يفعله البرنامج فعلاً وقم بتعديله لينفذ الإجراء الصحيح.
    كود:
    int number = 17;
    int lastDigit = number%10;
    int firstDigit = number/10;
    System.out.println (lastDigit + firstDigit);

    تمرين
    8.8
    ما هو خرج هذا البرنامج؟
    كود:
    public class Enigma {
     
      public static void enigma(int x) {
        if (x == 0) {
          return;
        } else {
          enigma(x/2);
        }
        System.out.print (x%2);
      }
      public static void main (String[] args) {
        enigma(5);
        System.out.println ("");
      }
    }
    اشرح في 4-5 كلمات ما تفعله العملية enigma فعلاً.

    تمرين 8.9

    a. أنشئ برنامجاً جديداً باسم Palindrome.java.
    b. اكتب عملية باسم first تأخذ سلسلة محرفية وتعيد الحرف الأول، وأخرى باسم last تعيد الحرف الأخير.
    c. اكتب عملية باسم middle تأخذ سلسلة محرفية وتعيد سلسلة فرعية تحتوي كل شيء عدا الحرفين الأول والأخير.
    مساعدة: اقرأ توثيق العملية substring الموجودة في صنف String. قم ببعض الاختبارات لتتأكد أنك تفهم آلية عمل substring قبل أن تحاول كتابة middle.
    ماذا يحدث لو استدعيت middle على سلسلة مؤلفة من حرفين فقط؟ حرف واحد؟ أو سلسلة لا تحوي أية حروف؟
    d. إن التعريف المعتاد للكلمة المتناظرة (palindrome) هو كلمة يمكن قراءتها بشكل صحيح بكلا الاتجاهين، مثل "deed" و "level". لتعريف صفة مثل هذه بطريقة مختلفة يجب تحديد طريقة لاختبار وجود الصفة. مثلاً، يمكننا القول أن "الحرف المفرد هو كلمة متناظرة، وأن أي كلمة مؤلفة من حرفين تكون متناظرة إذا كان الحرفين متطابقين، وأن أي كلمة أخرى تكون متناظرة في حال تطابق الحرفين الأول والأخير وكان وسط الكلمة متناظراً أيضاً".
    اكتب عملية تعاودية اسمها isPalindrome تأخذ سلسلة محرفية وتعيد قيمة بوليانية تبين فيما لو الكلمة متناظرة أو لا.
    e. بعد أن يعمل فاحص الكلمات المتناظرة الذي كتبته، ابحث عن طرق لتبسيطه من خلال تخفيض عدد الشروط التي يتحقق منها. مساعدة: قد يكون من المفيد تبني فكرة أن السلسلة الفارغة تعتبر كلمة متناظرة.
    f. على ورقة، قم بابتكار استراتيجية للتحقق من تناظر الكلمات باستخدام التكرار. توجد عدة أساليب ممكنة، لذا تأكد من امتلاك خطة محكمة قبل البدء بكتابة الشفرة.
    g. نفذ استراتيجيتك في عملية باسم isPalindromeIter.
    h. اختياري: يوجد في الملحق B شفرة تقرأ قائمة كلمات من ملف. اقرأ قائمة كلمات واطبع المتناظرة منها.
    تمرين 8.10 يقال عن كلمة أنها "أبجدية - abecedarian" إذا كانت حروف الكلمة تظهر وفق الترتيب الأبجدي. مثلاً، كافة الكلمات التالية هي كلمات إنكليزية أبجدية مؤلفة من 6 حروف.
    abdest, acknow, acorsy, adempt, adipsy, agnosy, befist, behint, beknow, bijoux, biopsy, cestuy, chintz, deflux, dehors, dehort, deinos, diluvy, dimpsy
    a. صف خوارزمية للتحقق من كلمة معطاة (سلسلة محرفية) فيما إذا كانت أبجدية أو لا، بفرض أن الكلمة مكتوبة بالأحرف الصغيرة فقط. يمكن لخوارزميتك أن تكون تكرارية أوتعاودية.
    b. نفذ خوارزميتك في عملية اسمها isAbecedarian.
    تمرين 8.11 dupledrome هي كلمة تحتوي على أحرف مضاعفة فقط، مثل "llaammaa" أو "ssaabb". أنا أظن بأنه لا توجد أي dupledromes في اللغة الإنكليزية المعتادة. لاختبار ذلك التخمين، أنا أرغب ببرنامج يقرأ الكلمات من القاموس واحدة تلو لأخرى ويفحصها للتحقق من كونها dupledrome أو لا.
    اكتب عملية باسم isDupledrome تأخذ سلسلة محرفية وتعيد قيمة بوليانية تبين فيما إذا كانت الكلمة dupledrome أو لا.
    تمرين 8.12
    a. تعمل حلقة فك شفرة الكابتن كرنش (Captain Crunch) بأخذ كل حرف في سلسلة محرفية وإضافة 13 إليه. مثلاً، 'a' سيصبح 'n' و'b' سيصبح 'o'. ستلتف الحروف عندما تصل للنهاية، لذا فإن 'z' سيصبح 'm'.
    اكتب عملية تأخذ سلسلة محرفية وتعيد سلسلة جديدة تحتوي على النسخة المشفرة. عليك أن تفترض أن السلسلة تحتوي على حروف كبيرة وصغيرة، وفراغات، لكنها لن تحوي أية علامات ترقيم أخرى. يجب تحويل الحروف الصغيرة إلى حروف صغيرة أخرى؛ والكبيرة إلى كبيرة. عليك عدم تشفير المسافات.
    b. عمم عملية كابتن كرنش حتى تضيف كمية معطاة إلى الحروف بدلاً من الرقم 13. الآن يجب أن تكون قادراً على تشفير الأشياء بإضافة 13 وفك التشفير بإضافة 13-. جربها.
    تمرين 8.13 إذا حللت تمارين GridWorld من الفصل 5، فقد تستمتع بهذا التمرين. الهدف هو استخدام قوانين المثلثات لجعل الحشرات تلاحق بعضها.
    اصنع نسخة من BugRunner.java باسم ChaseRunner.java واستوردها إلى بيئة البرمجة عندك. قبل عمل أي شيء، تأكد أنك قادر على تجميعه وتشغيله.
    · اصنع حشرتين، حمراء وزرقاء.
    · اكتب عملية باسم distance تأخذ حشرتين وتحسب المسافة بينهما. تذكر أنك تستطيع الحصول على إحداثي السينات (x-coordinate) للحشرة كما يلي:
    كود:
    int x = bug.getLocation().getCol();
    · اكتب عملية باسم turnToward تأخذ حشرتين وتدوّر إحداهما لتواجه الأخرى. مساعدة: استخدم Math.atan2، لكن تذكر أن النتيجة ستكون بالراديان، وعليك التحويل إلى الدرجات. أيضاً، بالنسبة للحشرات، 0 درجة تشير إلى الشمال، وليس الشرق.
    · اكتب عملية باسم moveToward تأخذ حشرتين، تدوّر الأولى لتواجه الثانية، ثم تحرك الأولى، إذا كانت قادرة على الحركة.
    · اكتب عملية باسم moveBugs تأخذ حشرتين وعدد صحيح n، وتحرك كل حشرة باتجاه الأخرى n حركة. يمكنك كتابة هذه العملية تعاودياً، أو استخدام حلقة while.
    · اختبر كل من عملياتك أثناء تطويرها. عندما تعمل كل العمليات بشكل صحيح، ابحث عن طرق لتحسينها. مثلاً، إذا كنت تملك شفرة فائضة في distance و turnToward، يمكنك تغليف الشفرة المكررة في عملية.
    التعديل الأخير تم بواسطة عماد الكامل ; 03-30-2014 الساعة 02:55 PM

 

 

الكلمات الدلالية لهذا الموضوع

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
لتوفير الجهد والوقت عليك ابحث عن ما تريد في جوجل من هنا

جميع الحقوق محفوظة لـ شبكة توب ماكس تكنولوجي

Copyright © 2007 - 2010, topmaxtech.net . Trans by topmaxtech.

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