النتائج 1 إلى 6 من 6
الموضوع:

البرمجة غير المرئية

الزوار من محركات البحث: 200 المشاهدات : 1776 الردود: 5
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    من المشرفين القدامى
    تاريخ التسجيل: July-2012
    الدولة: بغدادية الهوى
    الجنس: أنثى
    المشاركات: 2,734 المواضيع: 229
    صوتيات: 57 سوالف عراقية: 2
    التقييم: 3920
    أكلتي المفضلة: قورمة سبزي
    مقالات المدونة: 25

    البرمجة غير المرئية

    البرمجة غير المرئية

    أولاً : مقدمة .
    سنتعرض في هذا الدرس لدراسة عبارات التحكم بمسار البرنامج في الماتلاب والتي تشبه لحد كبير عبارات التحكم في لغات البرمجة الأخرى , وسندرس :
    -الاختبار الشرطي if .
    -الاختبار switch .
    -حلقة while .
    -حلقة For .
    - إيقاف الحلقةBreak .
    -متابعة الحلقة Continue.
    -العبارة try .

    ثانياً : الحلقات .
    1.أمر التحكم (الاختبار) الشرطي If: الشكل العام

    if logical expression
    statements
    elseif logical expression
    statements
    else
    statements
    end
    عبارة else لا تحتوي على شرط منطقي ولكن يجري تنفيذ العبارات المرتبطة بعبارة else إذا كانت نتيجة الشرط المنطقي في عبارة if (أو elseif) خطأ أو مساوي للصفر.
    عبارة elseif تحتوي على شرط منطقي يتم تنفيذه إذا كان الشرط المنطقي عبارة if خطأ أو تساوي الصفر ويتم تنفيذ جميع العبارات المرتبطة بها إذا كانت نتيجة الشرط المنطقي في عبارة elseif تساوي الواحد (لا تساوي الصفر).

    2.الاختبارswitch : الشكل العام
    Switch expression
    case value1
    statements
    case value2
    statements
    otherwise
    statements
    end
    تنفذ عبارة switch مجموعة من العبارات عن قيم معينة للمتحول المراد اختباره .
    تتألف العبارة من كلمة switch متبوعة بالعلاقة المراد اختبارها , وتنفذ العلاقة وتقارن النتيجة مع القيم التي تتبع عبارة case وعند حدوث أول تطابق بين نتيجة العلاقة وبين القيمة الموجودة على يمين عبارة case يتم تنفيذ التي تطابقت القيمة الموجودة على يمينها مع نتيجة العلاقة , حيث أن الماتلاب لا يتابع المقارنة بعد حدوث اول تطابق.
    في حال لم يحدث تطابق مع القيم الموجودة على يمين عبارة case ونتيجة العلاقة المراد اختيارها يتم تنفيذ العبارات التي تلي otherwise وعبارة otherwise اختيارية , ويجب إنهاء عبارة switch ب end.

    3.حلقة while : الشكل العام
    while expression
    statements
    end
    تنفذ حلقة while عبارة أو مجموعة من العبارات بشكل متكرر طالما أن قيمة عبارة التحكم تساوي الواحد (أي عبارة التحكم أو الشرط محقق) و إذا كانت عبارة التحكم مصفوفة فيجب أن تحقق جميع عناصر المصفوفة الشرط ليستمر الحساب.

    4.حلقة For : الشكل العام
    for expression
    statements
    end
    تقوم حلقة for بتكرار عبارات معينة لعدد محدد من المرات .


    5.عبارة الإيقاف break :
    تقوم هذه العبارة بإيقاف تنفيذ حلقة For أو حلقة while عند وضعها ضمن الحلقة ... وتتوضح هذه العبارة أكثر بالأمثلة.

    6.عبارة المتابعة Continue :
    تقوم هذه العبارة بوقف التكرار الحالي للحلقة ويبدأ في التكرار التالي له بمعنى أن الحلقة تستمر بالعمل لكن عند تعرضها لهذه التعليمة ستقوم بتجاهل التعليمات التي تحتها وتعود لمتابعة الحلقة ... وتتوضح هذه العبارة اكثر بالأمثلة.


    7.العبارة try : الشكل العام
    try statement, … , statement, catch statement, … , statement, end

    يتم بشكل طبيعي تنفيذ العبارات بين try و catch ولكن عند حدوث أي خطأ في تنفيذ أي عبارة من العبارات عند ذلك يتم الانتقال إلى تنفيذ العبارات الواقعة بين catch و end وعند حصول خطأ أيضاً من أحد العبارات يوقف الماتلاب تنفيذ الأوامر ويضع عبارة الخطأ في متحول اسمه lasterr.

    ملاحظات :
    1 - العبارة return تنهي تسلسل تنفيذ الأوامر في الإجراء وتحول القيادة إلى البرنامج الرئيسي وبشكل عام عندما تنتهي أوامر الإجراء فإن القيادة بشكل آلي تنتقل إلى البرنامج الرئيسي ولكن يمكن وضع هذه التعليمة في أي مكان من الإجراء لإعادة القيادة قسرياً إلى البرنامج الرئيسي.

    2 – إظهار رسالة الخطأ على الشاشة يتم بواسطة تابع الخطأ بالشكل :
    error(‘error_message’)
    حيث عند استدعاء رسالة الخطأ من قبل البرنامج فإن البرنامج يظهر العبارة الموضحة بين إشارات التنصيص.

    3 – يمكن إدخال المعلومات إلى البرنامج أثناء تنفيذ ملف m وذلك باستخدام التابع input بالشكل :
    n = input(‘Prompt_string’)
    حيث يظهر على الشاشة سلسلة الحروف بين إشارتي التنصيص.

    4 – يمكن التوقف أثناء تنفيذ البرنامج لمراجعة نتائج الحسابات أو لفحص المخططات ولتحقيق ذلك نستعمل الأوامر :
    Pause بدون مضمون هذا يسبب توقف البرنامج حتى يضغط المستخدم أي زر من لوحة المفاتيح.

    Pause(n) هذا يسبب توقف البرنامج لمدة n ثانية .



    ثالثاً : ملاحظات ...
    عند كتابة أي برنامج يمكن أن تكون طريقة البرمجة بطريقتين وهما إما أن يكتب البرنامج بشكل مباشر وهذه الطريقة تسمى (script) أو أن ننشئ تابع ونضع ضمنه التعليمات البرمجية اللازمة لتنفيذ البرنامج وهذه الطريقة (function) وهناك عدة فروق بين هاتين الطريقتين نذكر منها :
    1-الfunction يبدأ بكلمة function بينما الscript يبدأ بالبرنامج مباشرة.
    2-الشكل الافتراضي للكتابة بعد كلمة function هو أن تضع وسطاء الخرج ومن ثم اسم الfunction وبعدها وسطاء الدخل بينما الscripts لا يحتاج إلى كل هذا.
    3-يمكنك التابع (function) عند تنفيذه من تغيير وسطاء الدخل بينما لا يكون هذا ممكن في الscripts.
    4-المتغيرات التي تحسب في داخل الfunction لا تحفظ في الworkspace بينما في الscripts تحفظ في الworkspace (أي في لوحة الدخل والخرج الرئيسية لبرنامج الماتلاب).
    كما أننا عندما نريد البدء بكتابة البرنامج لابد في أن نقوم بفتح ملف من نوع M-file من أجل أن نكتب البرنامج فيه بدلاً من الكتابة في الworkspace لبرنامج الماتلاب وهناك عدة طرق للوصول إلى محرر الM-file وهي إما من اعلى الشاشة نختار file à new à M-file أو أن تكتب edit في الworkspace أو أن نضغط على الملف النصي الظاهر في الصفحة الرئيسية للماتلاب , وعند الإنتهاء من كتابة البرنامج في هذا الملف بقوم بحفظه ومن ثم نقوم بتشغيله من الزر المبين باللون الأخضر اعلى الصفحة ومقاطع الفيديو توضح ذلك أكثر.

    رابعأً : أمثلة عملية ...
    ·المثال الأول
    clear
    n=5
    m=6
    for i=1:n
    for j=1:m
    i;
    j;
    c(i,j)=i^j
    end
    end
    تم وضع clear في بداية البرنامج لحذف جميع المتغيرات الموجودة في الworkspace وفي هذا البرنامج تكمن وظيفة وضع حلقتي for المتداخلتين في توليد مصفوفة ثنائية البعد حيث تكمن وظيفة حلقة for الأولى في توليد أسطر المصفوفة أما حلقة for الثانية فهي لتوليد أعمدة المصفوفة , حيث هذا البرنامج يقوم بحساب قيمة العنصر من المصفوفة بحيث يساوي رقم السطر الموجود به مرفوعاً بالأس إلى رقم العمود الموجود به هذا العنصر , فلو كان السطر رقمه 3 والعمود رقمه 4 فنلاحظ أن قيمة العنصر ستكون : 81 والمصفوفة الناتجة تكون :



    ·المثال الثاني
    clear
    n=-6;
    if n<0
    disp('input must be positive')
    elseif rem(n,2)==0
    disp('input is even')
    else
    disp('input is odd')
    end
    هذا البرنامج يسمح بإدخال رقم n له قيمة موجبة حصراً ليميز هذا العدد إن كان فردياً أم زوجياً وفي حال إدخال رقم سالب فإنه يعطي العبارة input must be positive ويكون خرج هذا البرنامج في الworkspace .
    اعتمدنا في هذا البرنامج على التابع rem(n,2) حيث يقوم هذا التابع بتقسيم العددn على 2 ففي حال وجود باقي للقسمة فلا يتحقق شرط المساواة .




    ·المثال الثالث
    clear
    x = 8
    units = 'mm'
    switch units
    case {'inch''in'}
    x = x*2.54
    case {'feet''ft'}
    x=x*12/2.54
    case {'millimeter''mm'}
    x=x*0.1
    case {'centimeter''cm'}
    x=x
    otherwise
    disp(['هذه الواحدة غير معروفة'])
    x=nan
    end

    يقوم هذا البرنامج بتحويل الرقم الذي نكتبه من الواحدة المعطاة (المحددة في السطر الثاني للبرنامج) إلى cm , حيث نلاحظ في المثال الموضح بالبرنامج يكون خرج البرنامج x=0.8.


    ·المثال الرابع
    for i=1:1000
    elem = input('==>');
    if isempty(elem)
    break
    end
    x(i)=elem
    end
    x
    إن التعليمة input تقوم بطباعة مابين إشارتي التنصيص وتوقف عمل البرنامج حتى يدخل المستخدم قيمة ما ويضغط على الزر Enter , حيث هذا البرنامج يطلب إدخال قيم شعاع قيمة قيمة حتى يدخل المستخدم قيمة فارغة لتقوم break بإنهاء البرنامج.


    ·المثال الخامس
    function vals1(a,b,c)
    delta = b^2-4*a*c
    if delta>0
    x1=(-b+sqrt(delta))/(2*a)
    x2=(-b-sqrt(delta))/(2*a)
    elseif delta<0
    disp('the roots are complex')
    else
    x1_2=(-b/(2*a))
    end
    برنامج حل معادلة من الدرجة الثانية بشرط أن تكون حلول هذه المعادلة لا تحوي أي عدد عقدي , نلاحظ أننا انشأنا تابع لحل المعادلة.
    إن اسم التابع vals1 هو اختياري للمستخدم ويمكن له تغييره كما يشاء ولكن يجب ملاحظة انه عند حفظ البرنامج يجب حفظه بنفس اسم التابع ومابين قوسين هي الدخل أي القيم التي سيقوم المستخدم بإدخالها , ولإستدعاء هذا التابع نكتب في الworkspace
    vals1(4,6,2)
    فيعطي
    Delta = 4 x1=-0.5 x2=-1
    أو بطريقة ثانية نكتب :
    a=6 b=8 c=3
    vals1(a,b,c)
    delta = -8
    the roots are complex



    ·المثال السادس
    function max1(a,b,c)
    if a>b
    max=a;
    if c>max
    max=c;
    end
    else
    max=b;
    if c>max
    max=c;
    end
    end
    max
    يقوم هذا البرنامج بتحديد القيمة الأكبر من بين ثلاثة أعداد يدخلها المستخدم , حيث يتم استدعاء التابع الخاص بهذا البرنامج كما يتم الاستدعاء في البرنامج السابق وبإحدى الطريقتين.





    ·المثال السابع
    function c=factor1(n)
    v=1
    for i=1:n
    v=v*i;
    end
    v
    يقوم هذا البرنامج بحساب قيمة العاملي لرقم ما يحدده المستخدم , حيث انشأنا تابع كما في الأمثلة السابقة وطريقة الاستدعاء أيضاً كما ذكرنا في الجلسة السابقة.






    ·المثال الثامن
    function g=sort1(a)
    s=length(a);
    for i=1:s-1
    for j=i+1:s
    if a(i)<a(j)
    x=a(i);
    a(i)=a(j);
    a(j)=x;
    end
    end
    end
    a

    يقوم هذا البرنامج بترتيب عناصر مصفوفة (شعاعية) أي مكونة من سطر واحد ترتيباً تنازلياً , حيث يقارن هذاالتابع قيمة كل عنصر من المصفوفة مع قيمةالعنصر التالي وبناءً على هذا الترتيب يقوم بترتيب عناصر من المصفوفة من جديد.






    ·المثال التاسع
    function prod22(num)
    if length(num)~=1|~isnumeric(num)
    disp('please enter one number')
    else
    for i=1:10
    disp([num2str(num) 'x' num2str(i) '=' num2str(num*i)])
    end
    end
    يقوم هذا البرنامج بإظهار جدول الضرب لأي رقم يحدده المستخدم , حيث في السطر الثاني من البرنامج يقوم البرنامج بفحص القيمة المدخلة ويتأكد أن لا تكون لا محرف ولا أكثر من رقم , حيث نقوم بتحويل الأرقام إلى محارف بالتعليمة num2str أي number to string وبعد القيام بالعملية المطلوبة بعيد هذه القيمة الرقمية لمحارف بتعليمة معاكسة للسابقة num2str.






    ·المثال العاشر
    function calcul2(a,b,operate)
    if operate=='+' | operate=='*' | operate=='-' | operarte=='/'
    eval([num2str(a) operate num2str(b)])
    else
    disp('enter one of this operation{+,-,*,/}')
    end
    برنامج آلة حاسبة بسيطة حيث يقوم المستخدم بإدخال الرقم الأول والثاني ومن ثم العملية المطلوبة فيعطي البرنامج ناتج العملية بين الرقمين , وفي حال ادخل المستخدم عملية غير معروفة يعطي البرنامج العبارة
    'enter one of this operation{+,-,*,/}
    في هذا البرنامج نلاحظ أننا استخدمنا التابع eval وتكمن وظيفة هذا التابع في الماتلاب في تنفيذ العبارات المحرفية التي لها معنى في الماتلاب , فلو كتبنا في السطر الثالث للبرنامج العبارة :
    z=([num2str(a) operate num2str(b)])
    بدلاً من العبارة السابقة أي دون استخدام التابع eval نلاحظ أن البرنامج سيكون خرجه (a+b) "في حال الجمع ومهما كانت قيم a و b"






    ·المثال الحادي عشر
    function game4(c)
    n=randperm(c);
    for i=1:inf
    f=input('enter the number please:')
    if f<n(4)
    disp('the number is greater than your number')
    elseif f>n(4)
    disp('the number is smaller than your number')
    else
    disp('that is right')
    disp('congratulaion!!!')
    disp(['there are ' num2str(i) 'attempts'])
    break
    end
    end
    هذا البرنامج عبارة عن لعبة مسلية يقوم فيها البرنامج بتخزين رقم ويطلب من اللاعب إدخال قيمة للرقم الموجود في ذاكرة البرنامج ليخبره إن كان الرقم أصغر أو أكبر أو يساوي الرقم المخزن في الذاكرة , وبعد إدخال الرقم الصحيح يعطي البرنامج عدد المحاولات التي قام بها اللاعب حتى توصل للرقم الصحيح.
    تعليمة randperm تقوم بتوليد أرقام وبترتيب عشوائي والرقم الأعظمي لهذه الأرقام يحدد من قبل المستخدم ويرمز له في برنامجنا هذا c.


    المصدر :
    - خطوات في احتراف الماتلاب - دار شعاع
    - كتاب البرمجة 3 - منشورات جامعة دمشق



  2. #2
    من المشرفين القدامى
    برنس
    تاريخ التسجيل: July-2012
    الدولة: ع ْـآلـمٌ لآ يليق إلآ بسموّيْ
    الجنس: ذكر
    المشاركات: 8,664 المواضيع: 1,654
    صوتيات: 24 سوالف عراقية: 0
    التقييم: 3966
    مزاجي: حسب الجو
    أكلتي المفضلة: برياني
    موبايلي: Galaxy S3
    آخر نشاط: منذ 3 أسابيع
    الاتصال: إرسال رسالة عبر Yahoo إلى prïnċë häïdër
    مقالات المدونة: 8
    طرح رائع .. تقييم

  3. #3
    من المشرفين القدامى
    اقتباس المشاركة الأصلية كتبت بواسطة prïnċë häïdër مشاهدة المشاركة
    طرح رائع .. تقييم
    تسلم ورد بس هو نقل رائع لا اكثر

  4. #4
    مدير المنتدى
    تاريخ التسجيل: January-2010
    الدولة: جهنم
    الجنس: أنثى
    المشاركات: 84,951 المواضيع: 10,518
    صوتيات: 15 سوالف عراقية: 13
    التقييم: 87300
    مزاجي: متفائلة
    المهنة: Sin trabajo
    أكلتي المفضلة: pizza
    موبايلي: M12
    آخر نشاط: منذ ساعة واحدة
    مقالات المدونة: 18
    شكرا جزيلا اسنات

  5. #5
    من المشرفين القدامى
    ابو منتظر
    تاريخ التسجيل: March-2013
    الدولة: نيبور
    الجنس: ذكر
    المشاركات: 16,168 المواضيع: 4,113
    صوتيات: 164 سوالف عراقية: 2
    التقييم: 6186
    مزاجي: الحمدلله والشكرتمام
    المهنة: موظف حكومي
    أكلتي المفضلة: ارضئ بما قسم الله
    موبايلي: Nokia
    آخر نشاط: 1/September/2021
    الاتصال: إرسال رسالة عبر MSN إلى عماد الحمزاوي
    مقالات المدونة: 18

  6. #6
    من المشرفين القدامى
    اقتباس المشاركة الأصلية كتبت بواسطة Suzana مشاهدة المشاركة
    شكرا جزيلا اسنات
    اشكر لطفك غلاتي

تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال