طباعة هذه الصفحة
كتبه اللغة ج 5784
حلول تمارين اللغة البرمجية ج - الجزء 2 حلول تمارين اللغة البرمجية ج - الجزء 2
قيم الموضوع
(1 تصويت)

 

تجد هنا حلول لبعض التمارين في جميع فقرات هذا الدرس.

 
 

التمارين 11.37، 11.38، 11.39، 11.40، 11.41، 11.42، 11.43

 
*(------------------------------------------------------------------
برنامج لحساب المصفوفات
جميع الحقوق محفوظة للمؤلف، د. محمد عمار السلكة ،  1420 هجري - 2000 م
--------------------------------------------------------------------)*

الثابت أعظم_عدد_أسطر = 10
الثابت أعظم_عدد_أعمدة = 10

النوع مصفوفة : مركب
{
  س ، ع : صحيح
  م : صفيفة [أعظم_عدد_أسطر ] [ أعظم_عدد_أعمدة] من حقيقي
}

الخوارزمية أقرأ_المصفوفة ( مص : مصفوفة)
{
  أكرر
  {
  أكتب "أدخل أبعاد المصفوفة:  "
   أقرأ مص.س ، مص.ع
   إذا (مص.س >  أعظم_عدد_أسطر) أو (مص.ع >  أعظم_عدد_أعمدة)
    أكتب "هذه المصفوفة كبيرة جداً ! الرجاء إدخال أبعاد مصفوفة أخرى:"، سطر
  } حتى  (مص.س <= أعظم_عدد_أسطر) و (مص.ع <=  أعظم_عدد_أعمدة)

  المتحول د ، ذ : صحيح
  أكتب "أدخل المصفوفة: "، سطر
  أكرر من د=1 إلى مص.س
    أكرر من ذ=1 إلى مص.ع
      أقرأ مص.م[د][ذ] 
}

الخوارزمية أكتب_المصفوفة (  مص : مصفوفة)
{
  المتحول د ، ذ: صحيح
  أكرر من د=1 إلى مص.س
  {
    أكرر من ذ=1 إلى مص.ع
      أكتب مص.م[د][ذ]، "   "
    أكتب سطر
  }
}

التابع المصفوفة_متناظرة ( مص : مصفوفة) -> منطقي
{
المتحول د  ، ذ : صحيح
  إذا مص.س <> مص.ع
    أرجع خطأ
  أكرر من د = 1 إلى مص.س
    أكرر من ذ  = 1 إلى مص.ع
      إذا مص.م [د][ذ] <> مص.م[ذ][د]
        أرجع خطأ
أرجع صواب
}

الخوارزمية منقول_المصفوفة ( مص ، مق : مصفوفة)
{
  المتحول د ، ذ : صحيح
  أجعل مق.س = مص.ع
  أجعل مق.ع = مص.س

  أكرر من د =1 إلى مق.س
    أكرر من ذ=1 إلى مق.ع
      أجعل مق.م [د][ذ] = مص.م [ذ][د]
}

التابع أجمع_مصفوفتين ( مص1 ، مص2 ، مج : مصفوفة) -> منطقي
{
  إذا ( مص1.س <> مص2.س) أو (مص1.ع <> مص2.ع)
  {
   أكتب "لا يمكن جمع المصفوفتين لأن عدد أسطر (أو أعمدة) الأولى"
أكتب " لا يساوي عدد أسطر 
(أو أعمدة) الثانية" ، سطر
   أرجع (خطأ)
  }
  المتحول د ، ذ : صحيح
  أكرر من د = 1 إلى مص1.س
    أكرر من ذ=1 إلى مص2.ع
      أجعل مج.م [د][ذ] = مص1.م  [د][ذ] + مص2.م [د][ذ]
  أرجع (صواب)
}

التابع أضرب_مصفوفتين (مص1 ، مص2 ، مض : مصفوفة) -> منطقي
{
  إذا مص1.ع <> مص2.س
  {
    أكتب "لا يمكن الحصول على جداء المصفوفتين لأن عدد أعمدة "
أكتب "المصفوفة الأولى لا يساوي عدد أسطر المصفوفة  الثانية
" ، سطر
    أرجع (خطأ)
  }
  المتحول د ، ذ ، ر: صحيح
  المتحول ق: حقيقي
  أكرر من د= 1 إلى مص1.س
    أكرر من ذ= 1 إلى مص2.ع
    {
      أجعل ق = 0   
      أكرر من ر  = 1 إلى مص1.ع
         أجعل ق = ق + مص1.م [د][ر] × مص2.م [ر][ذ]
      أجعل مض.م [د][ذ] = ق
    }
أرجع (صواب)
}

المتحول أ ، ب ، ج : مصفوفة
المتحول م: منطقي

أقرأ_المصفوفة (أ)
أقرأ_المصفوفة (ب)

أكتب "المصفوفة الأولى : " ،سطر
أكتب_المصفوفة (أ)
إذا المصفوفة_متناظرة (أ) أكتب "المصفوفة الأولى متناظرة" ، سطر
منقول_المصفوفة (أ ، ج)
أكتب "منقول المصفوفة الأولى  :" ، سطر
أكتب_المصفوفة (ج)

أكتب "المصفوفة الثانية : " ،سطر
أكتب_المصفوفة (ب)
إذا المصفوفة_متناظرة (ب) أكتب "المصفوفة الثانية متناظرة" ، سطر
منقول_المصفوفة  (ب ، ج)
أكتب "منقول المصفوفة الثانية :" ، سطر
أكتب_المصفوفة (ج)

أجعل م = أجمع_مصفوفتين ( أ ، ب ، ج )
إذا م
{
  أكتب "مجموع المصفوفتين :" ، سطر
  أكتب_المصفوفة ( ج )
}
 
أجعل م = أضرب_مصفوفتين  ( أ ، ب ، ج )
إذا م
{
  أكتب "جداء المصفوفتين  : " ، سطر
  أكتب_المصفوفة ( ج ) 
}


 
 
 
التمرين 12.13

تواتر ورود الحروف في نص عربي
أدرج "حروف"
الثابت نه = 255
 
المتحول ع : صفيفة [255] من صحيح
المتحول ح : حرف
 
!! أولاً لنقم بتصفير العدادات
المتحول د : صحيح
أكرر من د = 1 إلى 255
أجعل ع[د] = 0
 
المتحول ملف_النص : ملف
المتحول اسم_الملف : صفيفة [25] من حرف
أكتب "أدخل اسم الملف الذي يحوي النص الذي تريد دراسته : "
أقرأ اسم_الملف
أفتح ملف_النص للقراءة من اسم_الملف
أقرأ من ملف_النص : ح
المتحول مج : صحيح
مج =0
أكرر طالما ح <> 255 !! نهاية الملف
{
مج = مج +1
ع[ح] = ع[ح] + 1
أقرأ من ملف_النص : ح
}
أغلق ملف_النص
 
أكتب مج ، سطر
أكرر من ح = ‘ء‘ إلى ‘ي‘
{
إذا أبجدي (ح)
أكتب " تواتر الحرف : " ، ح ، " = "، ع[ح]، سطر
}
ويبين الشكل التالي تنفيذ البرنامج على الملف ".txtأدعية" الموجود في المجلد "لغة عربية" ضمن مجلد الأمثلة المرفق مع برنامج الخوارزمي .



التمرين 12.17: تشفير ملف

أدرج "حروف"
 
التابع تشفير (ح:حرف - ف : حرف)-> حرف
{
المتحول ص : صحيح
إذا عكس (أبجدي (ح))
أرجع ح
 
ص = ح
أكرر
{
ص = ص + ف
إذا ص > ‘ي‘ ص = ص - ‘ي‘ -1 + ‘ء‘
ح = ص
}حتى أبجدي (ح)
أرجع ح
}
 
المتحول ملف_النص ، ملف_الشيفرة : ملف
المتحول ح ، المفتاح : حرف
المتحول اسم_الملف : صفيفة [128] من حرف
 
أكتب "أدخل المفتاح:"
أقرأ المفتاح
أكتب "أدخل اسم الملف المراد تشفيره : "
أقرأ اسم_الملف
أفتح ملف_النص للقراءة من اسم_الملف
إذا ملف_النص = 0
{
أكتب "لا يمكن فتح الملف" ، سطر
قف
}
 
أكتب "أدخل اسم الملف الذي سيحوي النص المشفّر : "
أقرأ اسم_الملف
أفتح ملف_الشيفرة للكتابة في اسم_الملف
إذا ملف_الشيفرة = 0
{
أكتب "لا يمكن فتح الملف" ، سطر
قف
}
أقرأ من ملف_النص : ح
أكرر طالما ح <> 255
{
أكتب في ملف_الشيفرة : تشفير (ح ، المفتاح)
أقرأ من ملف_النص : ح
}
أغلق ملف_النص
أغلق ملف_الشيفرة
فك تشفير ملف
أدرج "حروف"
 
التابع فك_تشفير (الثابت ح:حرف - ف : حرف)-> حرف
{
المتحول ص : صحيح
 
إذا عكس (أبجدي (ح))
أرجع ح
ص = ح
أكرر
{
ص = ص - ف
إذا ص < ‘ء‘ ص = ‘ي‘ - (‘ء‘ - ص) + 1
ح = ص
}حتى أبجدي (ح)
أرجع ح
}
 
المتحول ملف_النص ، ملف_الشيفرة : ملف
المتحول ح ، المفتاح : حرف
المتحول اسم_الملف : صفيفة [128] من حرف
 
أكتب "أدخل المفتاح (حرف) :"
أقرأ المفتاح
أكتب "أدخل اسم الملف المشفر : "
أقرأ اسم_الملف
أفتح ملف_الشيفرة للقراءة من اسم_الملف
إذا ملف_الشيفرة = 0
{
أكتب "لا يمكن فتح الملف" ، سطر
قف
}
 
أكتب "أدخل اسم ملف النص : "
أقرأ اسم_الملف
أفتح ملف_النص للكتابة في اسم_الملف
إذا ملف_النص = 0
{
أكتب "لا يمكن فتح الملف" ، سطر
قف
}
أقرأ من ملف_الشيفرة : ح
أكرر طالما ح <> 255
{
أكتب في ملف_النص : فك_تشفير (ح ، المفتاح)
أكتب فك_تشفير (ح ، المفتاح)
 
أقرأ من ملف_الشيفرة : ح
}
أغلق ملف_النص
أغلق ملف_الشيفرة
التمرين 13.1

المتحولس : صحيح
أكررمنس=0 إلىحدس
أرسمالنقطة(س، 200)


 

 

التمرين 13.2

*(-------------------------------------------------------------------
برنامج بلغة ج لرسم منحني الجيب: ع = م جب (س)
جميع الحقوق محفوظة للمؤلف: د. محمد عمار السلكة، 1420 هجري - 2000 م
---------------------------------------------------------------------)*
 
الثابت بي = 3.14
المتحول س، ع : صحيح
المتحول م : حقيقي
 
أكتب "أدخل قيمة المطال: "
أقرأ م
 
أجعل س = 0
أكرر طالما س < حدس
{
أجعل ع = حدع÷2 + م × جب (س × بي ÷ 180)
أرسم النقطة (س،ع)
أجعل س = س + 1
}
 

 

التمرين 13.3

أرسم مستقيم من (100،100) إلى (200،100) إلى (200،200) إلى (100،200) إلى (100،100)
أرسم دائرة مركزها (150،150) قطرها 50
 

 

التمرين 13.4

*(------------------------------------------------------------------
برنامج مطور لرسم منحني الجيب : ع = م جب (س)
جميع الحقوق محفوظة للمؤلف:د. محمد عمار السلكة، 1420 هجري - 2000 م
--------------------------------------------------------------------)*
 
الثابت بي = 3.14
المتحول س1، س2 : صحيح
المتحول ع1 ، ع2 ، م : حقيقي
المتحول ق : صحيح
 
أدرج "ألوان"
ألون باللون الفستقي ، الورقة
أرسم باللون الأحمر
 
أكتب "أدخل قيمة القفزة: "
أقرأ ق
أكتب "أدخل قيمة المطال: "
أقرأ م
 
أجعل س1 = 0
أكرر طالما س1 < حدس
{
أجعل س2= س1 + ق
أجعل ع1 = حدع÷2 + م × جب (س1 × بي ÷ 180)
أجعل ع2 = حدع÷2 + م × جب (س2 × بي ÷ 180)
أرسم مستقيم من (س1،ع1) إلى (س2،ع2)
أجعل س1 = س1 + ق
}
 

 

التمرين 13.5
المتحول س ، ع ، ق : صحيح
 
أكرر طالما صواب
{
أكتب"أدخل إحداثيتي مركز الدائرة (أدخل قيمة سالبة لإنهاء البرنامج): "
أقرأ س ، ع
إذا(س<0) أو(ع<0) أنتهي
 
أكتب"أدخل قطر الدائرة: "
أقرأ ق
إذا ق< 0
أكتب" يجب أن يكون القطر عدداً موجباً !" ، سطر
وإلا
أرسمدائرة مركزها(س،ع) قطرها ق
}
 

 

 
التمرين 13.8: منحني الوردة
*(-------------------------------------------------------------------
برنامج بلغة ج لرسم منحني حلزون أرخميدس
جميع الحقوق محفوظة للمؤلف: د. محمد عمار السلكة، 1420 هجري - 2000 م
--------------------------------------------------------------------)*
!! المعادلة العامة لمنحني الحلزون في الإحداثيات
!! القطبية ر = ثا × يه
!!============================================
 
أدرج "ألوان"
 
الثابت بي = 3.1415
المتحول ر ، يه ، س ، ع ، ثا : حقيقي
المتحول ن : صحيح
المتحول س0 ، ع0 : صحيح
 
!! ألون شاشة الرسم باللون السماوي
!!-------------------------------
ألون باللون السماوي ، الورقة
 
!! مبدأ الإحداثيات القطبية يقع في منتصف ورقة الرسم
!!-----------------------------------------------
أجعل س0 = حدس \ 2
أجعل ع0 = حدع \ 2
 
!! أرسم محوري الإحداثيات المتعامدة
!!-------------------------------
أرسم مستقيم من (س0، 0) إلى (س0، حدع)
أرسم مستقيم من (0، ع0) إلى (حدس، ع0)
 
!! أرسم المنحني باللون الأحمر
!!--------------------------
أرسم باللون الأحمر
 
!! أقرأ قيمة الثابت ثا وعدد اللفات ن
 
أكتب "أدخل قيمة الثابت ثا:"
أقرأ ثا
أكتب "أدخل عدد لفات الحلزون:"
أقرأ ن
 
!! أرسم المنحني نقطة فنقطة بخطوة للزاوية يه قدرها0.01 راديان
!!----------------------------------------------------------
أجعل يه = 0
أكرر طالما يه < 2×بي×ن
{
أجعل ر = ثا × يه
أجعل س = ر × تجب (يه) + س0
أجعل ع = ر × جب (يه ) + ع0
أرسم النقطة (س ، ع)
أجعل يه = يه + 0.01
}
 
التمرين 13.8: منحني الوردة
*(-------------------------------------------------------------------
برنامج بلغة ج لرسم منحني الوردة
جميع الحقوق محفوظة للمؤلف: د. محمد عمار السلكة، 1420 هجري - 2000 م
---------------------------------------------------------------------)*
 
!! المعادلة العامة لمنحني الوردة في الإحداثيات القطبية ر=ثا×تجب(ن × يه)
!! حيث ثا ثابت حقيقي و ن ثابت صحيح
 
أدرج "ألوان"
 
الثابت بي = 3.14
المتحول ر1، ر2 ، يه1 ، يه2 ، ثا : حقيقي
المتحول ن : صحيح
المتحول س1، ع1، س2، ع2 : حقيقي
المتحول س0 ، ع0 : صحيح
 
أجعل س0 = حدس \ 2
أجعل ع0 = حدع \ 2
أرسم مستقيم من (س0، 0) إلى (س0، حدع)
أرسم مستقيم من (0، ع0) إلى (حدس، ع0)
 
أكتب "أدخل قيمة الثابت ن:"
أقرأ ن
 
أرسم باللون الأحمر
أجعل ثا = 100
أجعل يه1 = 0
أكرر طالما يه1 < 2×بي
{
أجعل يه2 = يه1 + 0.01
أجعل ر1 = ثا × تجب(ن×يه1)
أجعل ر2 = ثا × تجب(ن×يه2)
أجعل س1 = ر1 × تجب(يه1) + س0
أجعل ع1 = ر1 × جب(يه1) + ع0
أجعل س2 = ر2 × تجب(يه2) + س0
أجعل ع2 = ر2 × جب(يه2) + ع0
أرسم مستقيم من (س1،ع1) إلى (س2،ع2)
أجعل يه1 = يه1 + 0.01
}
 
;التمرين 13.9: التسديد على هدف ثابت
*(--------------------------------------------------------------------
برنامج بلغة ج يحاكي عملية التسديد على هدف ثابت
جميع الحقوق محفوظة للمؤلف: د. محمد عمار السلكة ، 1420 هجري - 2000 م
---------------------------------------------------------------------)*
 
أدرج "ألوان"
 
الثابت ثقا = 9.8 !! ثابت الثقالة الأرضية
الثابت حه = 0.03 !! حجم الهدف كنسبة من بعده عن نقطة الإطلاق
الثابت عه = 30 !! ارتفاع الجزء البني الذي يمثل الأرض
 
المتحول سه: حقيقي
المتحول سر0 ، يه : حقيقي
المتحول ز : حقيقي
المتحول س ، ع ، سظ ، عظ : حقيقي
المتحول المقياس : حقيقي
المتحول م : حقيقي
 
ألون باللون السماوي ، الورقة
 
أكتب "ماهو بعد الهدف عن نقطة الإطلاق (بالمتر) :"
أقرأ سه
 
المقياس = حدس ÷ (سه × 1.5)
 
أكرر طالما صح
{
ألون باللون البني، مستطيل من (0،0) إلى (حدس ، عه)
ألون باللون الأحمر، مستطيل من (سه×(1-حه)×المقياس، عه)
إلى (سه×(1+حه) × المقياس ، سه × حه × المقياس+عه)
أرسم باللون الأصفر، مستقيم من (سه×المقياس ، عه)
إلى (سه×المقياس ، سه × حه × المقياس+عه + 15 )
أرسم باللون الأسود
أنقش عند (سه×(1+حه) × المقياس + 30، سه×حه× المقياس + عه + 15)"الهدف"
أكتب "أدخل سرعة القذف (م//ثا) : "
أقرأ سر0
إذا سر0 = 0 قف
أكتب "أدخل زاوية القذف (درجة) : "
أقرأ يه
أجعل يه = يه ÷ 180 × 3.14
أجعل ز = 0
س = 0
ع = عه
أكرر
{
سظ = س × المقياس
عظ = ع × المقياس + عه
إذا (سظ<حدس) و (عظ<حدع) و (عظ > حه)
{
أرسم النقطة (سظ ، عظ)
ألون باللون الأحمر
ألون دائرة مركزها (سظ ، عظ) قطرها 4
 
م = 0
أكرر طالما م < 100 × المقياس
{
أجعل ز = ز
م = م + 1
}
 
أرسم باللون السماوي
ألون باللون السماوي
ألون دائرة مركزها (سظ،عظ) قطرها 4
أرسم باللون الأسود ، النقطة (سظ،عظ)
}
ز = ز + 0.1
أجعل س = سر0 × تجب(يه) × ز
أجعل ع = -0.5 × ثقا × ز^2 + سر0 × جب(يه) × ز
} حتى (ع <=0 ) أو (سظ > حدس)
 
إذا (|س - سه| <= سه × حه ) و (ع<=0)
{
أكتب " ****** أصبت الهدف ! ******" ، سطر
أكرر 10 مرة
{
أكرر 10000 مرة س = س !! حلقة تأخير زمني
ألون باللون الأحمر ، الورقة
أكرر 10000 مرة س =س !! حلقة تأخير زمني
ألون باللون السماوي ، الورقة
}
قف
}
}
التمرين 14.15
!! برنامج بلغة ج لحل مسألة أبراج هانوي
!! عدد الخطوات = 2^ن -1 حيث ن عدد الأقراص
!!---------------------------------------
 
!!--تعريف المتغيرات العامة---------------
!!---------------------------------------
المتحول عدد_الأقراص : صحيح
المتحول الخطوة : صحيح
 
!!--تعريف الخوارزميات والدوال------------
!!---------------------------------------
الخوارزمية أنقل (العدد ، المصدر ، الهدف ، الوسيط : صحيح)
{
إذا العدد > 0
{
أنقل (العدد -1 ، المصدر ، الوسيط ، الهدف)
الخطوة = الخطوة + 1
أكتب الخطوة ، " : " ، "انقل قرصاً واحداً من " ، المصدر ، " إلى " ، الهدف ، سطر
أنقل (العدد -1 ، الوسيط ، الهدف ، المصدر)
}
}
 
 
!!--البرنامج الرئيسي---------------------
!!---------------------------------------
الخطوة = 0
أكتب "أدخل عدد الأقراص : "
أقرأ عدد_الأقراص
أنقل (عدد_الأقراص ، 1، 3، 2)



تأليف

المؤلف الأصلي: الدكتورمحمد عمار السَلكة (دمشق - سوريا)
الموقع الشخصي:   http://www.drsalka.com
البريد الإلكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

ضبط بتصرف: محمد عبد الرحمان (الدار البيضاء - المغرب)

المراجع
  http://www.jeemlang.com