قائمة طعام
مجاني
التسجيل
الصفحة الرئيسية  /  تعليم/ هياكل التحكم في PHP. يبني التحكم في لغة C

يبني التحكم في PHP. يبني التحكم في لغة C

8. البرمجة الهيكلية.

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

    يجب أن يتكون نص البرنامج من ثلاثة تراكيب أساسية: الاتصال المتسلسل (التالي) ، الجملة الشرطية (المتفرعة) والتكرار (الحلقة).

    يجب تجنب استخدام مشغلي القفز مثل GOTO قدر الإمكان (إذا لم تكن القيود المفروضة على الحجم ووقت التنفيذ حرجة ، فحينئذٍ في كل مكان). أسوأ استخدام لـ GOTO هو القفز إلى عبارة أعلى (سابقًا) في نص البرنامج.

    إذا كان ذلك ممكنًا ، تجنب استخدام عامل التشغيل ELSE ، فعادة ما يكون غير ضروري لأنه يعادل IF (لا<условие>) من ثم. لا يلزم إنشاء ELSE إلا في حالة نادرة عندما يغير البناء بعد ذلك أحد المتغيرات في الحالة.

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

    يجب أن تحتوي كل وحدة على إدخال واحد ومخرج واحد بالضبط.

    البرنامج حل بسيط وواضح للمشكلة.

8.1 مراقبة التركيبات للبرامج المهيكلة

تتكون البرامج الهيكلية من ثلاث وحدات بناء أساسية للتحكم في عملية الحوسبة:

    التالية- يشير إلى التنفيذ المتسلسل للإجراءات ؛

    المتفرعة- يتوافق مع اختيار أحد خياري الإجراءات حسب الحالة (قيمة المسند) ؛

    حلقة الشرط المسبق- يحدد تكرار الإجراءات حتى يتم انتهاك شرط معين ، ويتم التحقق من تحقيقه قبل بداية كل تكرار.

بالإضافة إلى الهياكل الأساسية ، يمكن استخدام ثلاثة هياكل تحكم أخرى ، والتي يمكن تنفيذها بسهولة على أساسها:

    خيار- يشير إلى اختيار خيار واحد من الإجراءات من عدة خيارات ، اعتمادًا على قيمة قيمة أو شرط معين ؛

    حلقة مع حالة لاحقة- يحدد تكرار الإجراءات حتى يتم استيفاء شرط معين ، ويتم التحقق منه بعد كل تكرار ؛

    حلقة مع عدد معين من التكرارات (دورة العد) - يحدد تكرار الإجراءات لعدد محدد من المرات.

الإجراءات التي هي مكونات هياكل البرمجة المهيكلة هي إما عبارات بسيطة للغة المستخدمة (على سبيل المثال ، تعيين ، إدخال ، إخراج ، عبارات استدعاء روتين فرعي) ، أو أجزاء البرنامج التي هي عبارة عن تكوين لهياكل التحكم الأساسية.

    بنيات البرمجة المهيكلة

8.2. مفهوم أسلوب البرمجة وخصائصها.

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

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

    يجب أن يكون لكل كائن برنامج اسم هادف وذو مغزى يحدد الغرض منه.

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

    يجب تجنب المتغيرات الوسيطة غير الضرورية.

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

    يجب ألا تضع عبارات متعددة اللغات على نفس السطر.

    يجب كتابة نص البرنامج باستخدام فجوات الأسطر والمسافات البادئة.

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

    يجب أن تلتزم بأسلوب موحد عند كتابة كود البرنامج.

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

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

9- الوسائل الرسمية لتمثيل عمليات الرقابة
في البرامج المنظمة.

9.1 المخططات القُطرية (المخططات الهيكلية) وتصاميمها.

تُستخدم التركيبات الأساسية التالية لوصف البرامج باستخدام المخططات الكتل.

    الإنشاءات الأساسية لتشكيل المخططات القُطرية

1) بلوك "المنشئ / المنهي". يستخدم للإشارة إلى بداية ونهاية الرسم التخطيطي الهيكلي. يجب أن تبدأ كل دائرة وتنتهي بهذا البناء.

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

3) منع "القرار". تُستخدم لتمثيل عملية نقل التحكم وفقًا لشرط معين. لكل كتلة من هذا القبيل ، يجب تعيين الحالة الفعلية (السؤال) ، والتي تحدد المخطط مزيد من التطويرالعملية الحسابية ، وكذلك النتائج المحتملة للتحقق من هذا الشرط (الإجابات) المقابلة لخيارات نقل التحكم.

4) منع "الإدخال / الإخراج". يتم استخدامه للإشارة إلى العمليات المتعلقة بإدخال البيانات أو الإخراج. يجب أن تتوافق الأجهزة المنطقية الفردية أو وظائف الاتصال مع الكتل الفردية. تشير كل كتلة إلى العملية المطلوب إجراؤها ، ونوع الجهاز أو الملف ، ونوع البيانات المتضمنة في التبادل.

5) –6) كتل "عملية محددة مسبقًا". تستخدم للإشارة إلى مكالمات الروتين الفرعي. تهدف الكتلة ذات الخط الأفقي إلى وصف المكالمات إلى الإجراءات الفرعية التي تم تطويرها خصيصًا للبرنامج والتي يتم تمثيلها في التوثيق من خلال مخططها الهيكلي. تشير الكتلة ذات الخطوط الرأسية إلى استدعاء الإجراءات الفرعية الخارجية للبرنامج ، على سبيل المثال ، تلك التي تعد جزءًا من بيئة نظام التشغيل.

7) بلوك "رابط". يتم استخدامه عندما يكون من الضروري التقسيم بسبب الحجم الكبير مخطط كتلةإلى عدة أجزاء ، موضوعة على أوراق منفصلة. في هذه الحالة ، في نهاية ورقة واحدة ، يتم وضع هذه الكتلة ، التي يدخل فيها خط التوصيل ، وفي بداية الورقة التالية ، يتم استخدام نفس الكتلة التي يخرج منها خط التوصيل.

8) بلوك "التعليق". يسمح لك بتضمين الرسم التخطيطي التفسيرات اللازمة لبعض الكتل. يمكن أن يقلل عدد كبير من هذه الكتل من وضوح المخطط الهيكلي.

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

9.2 أشكال التدفق (المخططات الانسيابية).

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

    تصاميم نموذج التدفق الأساسية

9.3 مخططات (رسوم بيانية) لناسي شنايدرمان.

مخططات Nassi-Schneiderman هي تطوير لأشكال التدفق. يتمثل الاختلاف الرئيسي بينهما في أنه في الكتل التي تمثل التفرع والاختيار ، تُستخدم المثلثات لتمثيل الظروف ، مما يجعل من الممكن تحقيق وضوح أكبر في وصف البرنامج. فيما يلي التركيبات الأساسية لمخططات ناسي شنايدرمان.

    الإنشاءات الأساسية لمخططات ناسي شنايدرمان

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

10. نهج البرمجة الشيئية.

10.1 المفاهيم والمبادئ الأساسية للنهج الكينوني في البرمجة.

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

    التحليل الكينوني. يتم إنشاء نموذج موجه للكائنات لمجال نظام البرنامج ، حيث تمثل كائنات النموذج كائنات كيان حقيقي أو مفاهيمي ، وكذلك يتم تحديد العمليات التي يتم إجراؤها عليها.

    التصميم الكينوني. يتم تطوير نموذج برمجي موجه للكائنات (بنية النظام) ، مع مراعاة المتطلبات الحالية ، حيث يخضع تعريف جميع الكائنات لحل مشكلة معينة.

    البرمجة الشيئية. يتم تنفيذ بنية (نموذج) النظام باستخدام لغة برمجة موجهة للكائنات.

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

10.2 نهج البرمجة الشيئية: مفهوم الشيء وخصائصه ، الروابط بين الأشياء.

شيءهو تمثيل ملموس للتجريد. يحدد الفصل بنية وسلوك الكائنات المتشابهة / المتشابهة ، أي يصف تجريدهم. الكائن له شخصية وحالة وسلوك. الفرديةهي خاصية مميزة للكائن الذي يميزه عن كل الأشياء الأخرى. ولايةالكائن هو قائمة بجميع خصائصه / سماته والقيم الحالية لكل منها. سلوكيميز كيفية تأثير كائن ما على الكائنات الأخرى (أو يتأثر) من حيث التغييرات في حالته ونقل الرسائل. يعتمد سلوك الكائن على حالته ومجموعة العمليات المقابلة له. عمليةيمثل خدمة يقدمها الكيان للاستخدام. هناك خمسة أنواع من العمليات على الكائن: المعدل - يغير حالة الكائن ؛ محدد - يوفر الوصول إلى الحالة ، لكنه لا يغيرها ؛ مكرر - يوفر الوصول إلى محتوى الكائن في أجزاء ، بترتيب محدد بدقة ؛ المُنشئ - يُنشئ كائنًا ويُهيئ حالته ؛ المدمر - يدمر الكائن ويحرر الموارد التي يشغلها. يضمن تنفيذ العملية أن المطابق رسائلالتي يمكن إرسالها إلى هذا الكائن. الطرق الفرعية (الطرق) هي وسائل تنفيذ العمليات. وبالتالي ، فإن الرسالة هي استدعاء لبعض الإجراءات الفرعية التي تنفذ إحدى العمليات المتأصلة في الكائن. تسمى مجموعة الإجراءات التي تنفذ عمليات كائن ما بروتوكولأو واجهه المستخدم (رسائل).

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

10.3 نهج البرمجة الشيئية: مفهوم الطبقة وخصائصها ، العلاقات بين الطبقات.

فصل- وصف لمجموعة من الكائنات تشترك في نفس الخصائص والعمليات والعلاقات والدلالات. أي كائن هو مجرد مثيل لفئة. في الفصل ، يتم تمييز التمثيل الخارجي (الواجهة) و التنظيم الداخلي(تطبيق). واجهه المستخدميصف قدرات (خدمات) الفئة ، أي يمثل للبيئة الخارجية تجريدًا للفئة ، مظهرها "المرئي". تتكون الواجهة من إعلانات العمليات التي تدعمها مثيلات الفئة ، وإعلانات النوع ، والمتغيرات ، والثوابت ، والاستثناءات التي تعمل على تحسين التجريد الذي يعبر عنه الفصل. يمكن تقسيم الواجهة إلى ثلاثة أجزاء: مفتوحة أو عامة ( عام) ، الإعلانات المتوفرة لجميع العملاء ؛ محمي ( محمي) ، والتي تكون الإعلانات متاحة فقط للفئة نفسها وفئاتها الفرعية وأصدقائها ؛ خاص أو خاص ( نشر) ، إعلاناتها متاحة فقط للفصل نفسه وأصدقائه. يتم تعيين حالة الكائن في فئته من خلال تعريفات الثوابت أو المتغيرات الموضوعة في الجزء المحمي أو الخاص. وبالتالي ، فهي مخفية (مغلفة) ولا تؤثر تغييراتها على العملاء. تطبيقالطبقة تعكس ملامح سلوكها. يتضمن وصفاً مفصلاً (التنفيذ) لجميع العمليات المحددة في واجهة الفصل.

تكون تجريدات كل مجال موضوع في علاقات مختلفة مع بعضها البعض ، ونتيجة لذلك يتم تشكيل بنية فئات النظام. هناك أربعة أنواع رئيسية من العلاقات بين الطبقات: الارتباط - إصلاح العلاقات الهيكلية ، أي الروابط بين حالات الطبقات ؛ الاعتماد - يعرض تأثير فئة على أخرى ؛ التعميم - التخصص - العلاقات "العامة - الخاصة" ؛ جزء كامل - علاقات التجميع / التضمين. للتعبير عن هذه الأنواع من العلاقات ، تدعم معظم اللغات الموجهة للكائنات مجموعات مختلفة من أنواع العلاقات التالية: الارتباط ، الوراثة ، التجميع ، التبعية ، إنشاء مثيل ، الطبقة الوصفية ، التنفيذ. منظمةيشير إلى الاتصال الدلالي (الدلالي) ثنائي الاتجاه بين الفصول. إنها العلاقة الأكثر عمومية وغير محددة ، لأنها لا تشير إلى الاتجاه والتنفيذ الدقيق للعلاقة. ميراث- علاقة تشترك فيها فئة ما في البنية والسلوك المحدد في فئة أخرى (وراثة واحدة) أو في عدة فئات أخرى (وراثة متعددة). الميراث هو نوع من علاقة التعميم والتخصص. يرتبط مفهوم تعدد الأشكال بالوراثة. تعدد الأشكالهي القدرة على استخدام اسم واحد للدلالة على عمليات من فئات مختلفة ، ولكنها تنتمي إلى نفس الطبقة الفائقة. ينتج عن استدعاء الخدمة باسم متعدد الأشكال تنفيذ عملية واحدة من مجموعة مقابلة لتسلسل وراثة الفئة. صلة التجمعاتبين الفئات تشبه تلك الموجودة بين الكائنات. مدمن- العلاقة التي تشير إلى أن التغيير في فئة واحدة (مستقلة) يمكن أن يؤثر على فئة أخرى (تابعة) تستخدمها. تسمح لك التبعية بتوضيح أي التجريد هو العميل ومن هو مقدم خدمة معينة. التحجيم- عملية ملء أو تخصيص قالب (فئة معممة أو ذات معلمات) من أجل الحصول على فئة يمكن من خلالها إنشاء مثيلات. يعبر التجسيد عن نوع آخر من علاقة التعميم والتخصص. ميتاكلاس- فئة الفصول ، أي فئة تمثل حالاتها فئات. تطبيق- العلاقة التي توفر فيها الفئة المستقبلة التنفيذ الخاص بها للواجهة الخاصة بفئة مصدر أخرى.

11. البرمجة الدفاعية.

11.1 مفهوم الصحيح و برنامج موثوق... المفاهيم الأساسية لتطوير البرمجيات الموثوقة. مفهوم البرمجة الدفاعية.

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

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

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

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

11.2 أنواع الأخطاء المرتبطة بالبيانات الأصلية وكيفية الحماية منها.

يتم تمييز الأنواع التالية من الأخطاء المرتبطة بالبيانات الأصلية:

    أخطاء النقل- ناتج عن جهاز قد يؤدي ، على سبيل المثال ، بسبب عطل في الوظائف ، إلى تزوير البيانات. عادة ما يتم التحكم في مثل هذه الأخطاء من خلال الأجهزة.

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

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

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

11.3 الطرق الرئيسية لمنع الأخطاء.

تتضمن المفاهيم الأساسية لمنع الأخطاء في برنامج قيد التشغيل ما يلي:

    التحقق من صحة بيانات الإدخال وعمليات الإدخال والإخراج ؛

    التحقق من مقبولية النتائج الوسيطة ؛

    منع تراكم الأخطاء.

تهدف هذه الأفكار إلى التحكم في صحة البيانات الأصلية أو الوسيطة للبرنامج. قد تظهر بيانات غير صالحة كنتيجة خطأ داخليأخطاء ، مثل أخطاء في أجهزة الإدخال / الإخراج أو البرامج ، أو نتيجة خطأ خارجي ، مثل خطأ مستخدم أو برنامج مرتبط.

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

يتيح لك التحقق من النتائج الوسيطة تقليل احتمالية الظهور المتأخر ليس فقط لأخطاء البيانات المحددة بشكل غير صحيح ، ولكن أيضًا لبعض الأخطاء التي حدثت في مرحلة التصميم والتشفير. لتنظيم مثل هذا الفحص ، من الضروري استخدام المتغيرات في البرنامج التي توجد بها قيود من أي نوع ، على سبيل المثال ، تلك المرتبطة بخصائص مجال الموضوع. يجب أن يؤخذ في الاعتبار أن أي عمليات إضافية تتطلب موارد إضافية (على سبيل المثال ، الوقت أو الذاكرة) وقد تحتوي أيضًا على أخطاء. لذلك ، يُنصح بالتحقق من النتائج الوسيطة فقط في الحالات التي لا يكون فيها الأمر صعبًا ويسمح لك حقًا باكتشاف الأخطاء. على سبيل المثال:

    تكمن قيمة معلمة الإدخال للروتين الفرعي في النطاق العددي المحدد أو تتطابق مع إحدى القيم المحددة مسبقًا ؛

    مؤشر عنصر الصفيف ضمن الحدود المقبولة ؛

    قيمة المتغير الذي يحدد عدد التكرارات الحلقية ليست سالبة ؛

    الملف المطلوب موجود أو يمكن فتحه للقراءة / الكتابة ؛

    يكون مؤشر الملف في البداية أو النهاية ، إلخ.

لتقليل الأخطاء في نتائج الحساب ، يوصى بما يلي:

    تجنب طرح الأرقام القريبة (آلة الصفر) ؛

    تجنب الانقسام أعداد كبيرةصغير؛

    البدء في إضافة سلسلة طويلة من الأرقام من تلك التي لها قيمة مطلقة أقل ؛

    لا تستخدم شرط المساواة في الأعداد الحقيقية ؛

    نسعى جاهدين لتقليل عدد المعاملات قدر الإمكان ؛

    تطبيق طرق مع تقديرات الخطأ المعروفة ؛

    معلومة الملخص

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

مرحبا أعزائي المبرمجين المبتدئين.

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

يحدد المبرمج ترتيب تنفيذ البرنامج ، ولهذا يطبق هياكل التحكم في اللغة. أي أن بنية التحكم هي أمر يتعلق بأمر أو آخر لتنفيذ البرنامج.

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

يمكن أن تكون الإنشاءات (التعريفات ممكنة - التعليمات ، الأوامر) إما من سطر واحد أو مركب ، أي مجمعة في كتلة. الكتلة هي أيضًا بنية منفصلة ، تؤدي باستمرار الإنشاءات المرفقة بها.

هناك ست مجموعات رئيسية من بنيات التحكم في PHP. هو - هي:

1. العوامل الشرطية.
2. دورات.
3. تصاميم الاختيار.
4. تصميمات الإعلانات.
5. يبني لإرجاع القيم.
6. انشاءات الادراج.

دعونا ننظر إليهم بالتفصيل ، وكل شيء بالترتيب.

العوامل الشرطية

لقد التقينا بالفعل بالعوامل الشرطية إذا ، وإلا ، في المقالة " بيانات php"، لذا ، الآن ، باعتبارهم هياكل تحكم ، سوف نحصل على تكرار لما مررنا به ، والذي ، كما تعلم ، ليس ضروريًا أبدًا.

العوامل الشرطية هي التركيبات الأكثر استخدامًا ، ليس فقط في php ، ولكن في جميع لغات البرمجة الخوارزمية.

مثال على سطر واحد عبارات إذا

إذا ($ التالي == 0)
{
صدى "هذا بناء لغة برمجة" ؛
}
?>

في هذا المثال عبارة if ، يتم إعطاء الشرط: يجب أن يكون المتغير $ next يساوي صفرًا. إذا كان هذا الشرط صحيحًا ، فسيتم تنفيذ الصدى. إذا لم يتم فتحه صفحة فارغة.

ما يلي سيكون مثالاً على البناء المركب.

التالي $ = 0 ؛
إذا ($ التالي == 0)
{
صدى $ الخضار. "الخضار
";
صدى $ الفاكهة. " الفاكهة
";
صدى $ التوت. "التوت
";
}
?>

هنا ، يتم أيضًا تعيين القيمة 0 للمتغير التالي $ ، وتنفذ تعليمة if ، بعد التحقق منها ، كتلة صدى البنيات.

يرجى ملاحظة أنه بالنسبة لفواصل الأسطر في php ، يتم استخدام العلامة المألوفة لنا من علامة html
... في المستقبل سوف نلتقي أكثر من مرة علامات htmlالمستخدمة في كود php.

وألاحظ أيضًا أن المسافة البادئة في قيم phpليس لديك ، ويتم تطبيق تحسينات قراءة الكود فقط.

في المثال السابق ، اعتبرنا الخيار عند تنفيذ العبارة إذا كان الشرط المحدد صحيحًا.

تخيل الآن أننا بحاجة إلى تنفيذ بعض العمليات ليس فقط عندما يكون شرط عبارة if صحيحًا ، ولكن أيضًا عندما يكون الشرط غير صحيح.

في هذه الحالة ، فإن بناء آخر

التالي $ = 1 ؛
إذا ($ التالي == 0)
{
صدى $ الخضار. "خضروات"؛
}
آخر
{
صدى $ الفاكهة. "الفاكهة"؛
}
?>

في هذه الحالة ، لا يتم فتح صفحة فارغة ، ولكن يتم فتح إدخال "الفاكهة".

السيف الانشاء

هذا البناء يوسع من قدرات بناءات if and else. تخيل أن لدينا أكثر من بيانين ، إحداهما بحاجة إلى التنفيذ.

في هذه الحالة ، يتم إضافة بناء elseif إلى الإنشاءات السابقة.

التالي $ = 0 ؛
إذا ($ التالي == 0)
{
صدى $ الخضار. "خضروات"؛
}
elseif ($ next == 0)
{
صدى $ الفاكهة. "الفاكهة"؛
}
آخر
{
صدى $ التوت. "التوت" ؛
}
?>

من الناحية النظرية ، لا يوجد حد لعدد العناصر الأخرى. وبغض النظر عن العدد الموجود ، سيقوم البرنامج بفحص كل واحد حتى يجد الخيار الصحيح ، أي صحيح.

بنيات الاختيار

في كثير من الأحيان ، مع وجود عدد كبير من المشغلين ، يصبح استخدام elseif غير مريح بسبب الكمية الكبيرة من التعليمات البرمجية.

في هذه الحالة ، يأتي الإنقاذ بناء حالة التبديل، يمكنك التبديل

يتشابه بناء حالة المحول في عمله مع بنية if-else ، ولكن على عكس الأخير ، فإنه يسمح لك بالحصول على أكثر من خيارين نتيجة لذلك.

يتم وضع جسم البناء في أقواس معقوفة ، ويتم تطبيق بيان الحالة المنتهي بنقطتين وبيان كسر الإنهاء لكل قيمة تتم معالجتها.

$ التالي = "الفاكهة" ؛
التبديل ($ التالي) (
حالة "خضروات":
صدى "البطاطس" ؛
استراحة؛
حالة "فاكهة":
صدى "التفاح" ؛
استراحة؛
حالة "التوت":
صدى "الكرز" ؛
استراحة؛
}
// يعرض التفاح

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

للقيم غير المحددة في التخصيص ، في بناء حالة التبديل ، يتم استخدام العبارة الافتراضية.

$ next = "الفطر"؛
التبديل ($ التالي) (
حالة "خضروات":
صدى "البطاطس" ؛
استراحة؛
حالة "فاكهة":
صدى "التفاح" ؛
استراحة؛
حالة "التوت":
صدى "الكرز" ؛
استراحة؛
إفتراضي:
صدى "شامبينونس" ؛
}
// يتم عرض الفطر
?>

إذا حذفت تعليمة break ، فسيقوم البرنامج بمعالجة وعرض جميع قيم إنشاء حالة التبديل

التالي $ = "خضروات" ؛
التبديل ($ التالي) (
حالة "خضروات":
صدى "البطاطس" ؛
حالة "فاكهة":
صدى "التفاح" ؛
حالة "التوت":
صدى "الكرز" ؛
إفتراضي:
صدى "شامبينونس" ؛
}
/ * انتاج
البطاطس
تفاح
الكرز
شامبينيون * /

?>

ميزة أخرى لبناء علبة التبديل هي القدرة على دمج عدة خيارات في تعبير واحد.

$ next = "Maple" ؛
التبديل ($ التالي) (
حالة "خضروات":
حالة "فاكهة":
حالة "التوت":
صدى "البطاطس
تفاح
الكرز"؛
استراحة؛
حالة "القيقب":
الحالة "بلوط":
الحالة "شجرة التنوب":
صدى "غابة" ؛
استراحة؛
إفتراضي:
صدى "شامبينونس" ؛
}
// يتم عرض الغابة
?>

الحلقات ، أو بنيات التكرار.

الحلقات مخصصة للتنفيذ المتعدد (على عكس بناء إذا) للعبارات التي تشكل جسم البناء.

تسمى عملية تنفيذ حلقة التكرار (iteration).

توجد ثلاثة أنواع من الحلقات في php:

1. while و do-while هي حلقات ذات عدد غير محدد من التكرارات.
2. for - حلقة مع عدد محدد مسبقًا من التكرارات.
3. foreach - حلقة لمعالجة (تكرار) مصفوفة.

أثناء البناء

مثال على أبسط حلقة مع عامل واحد ، وعادة ما يكون هناك المزيد منها.

التالي $ = 1 ؛
بينما ($ next<= 8 )
{
صدى $ التالي. "
" ;
التالي ++ دولار ؛
}
// يطبع الأرقام من 1 إلى 8. علامة
يضعها في عمود

?>

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

يعلن السطر الأول عن المتغير $ next ، والذي يتم تعيين القيمة واحد له. يسمى تعيين قيمة التهيئة المتغيرة.

في السطر الثاني ، يتحقق البرنامج من الحالة بينما ($ next<= 8) , которое будет являться истиной (true).

السطر الثالث ينفذ الحلقة الأولى ، لأن واحدًا أقل من 8 ، وهذا يطابق تعريف صحيح

في الحالة الرابعة ، المتغير ، الذي يكون في هذه الحالة عاملًا ، يتم تعيين عامل الزيادة (++) ، والذي يزيد كل قيمة لاحقة من عامل التشغيل التالي بمقدار واحد.

وسيقوم البرنامج بمعالجة وعرض كل عدد صحيح يتبع واحدًا حتى يصل إلى 9. وبما أن الرقم 9 خاطئ ، تنتهي الحلقة.

افعل أثناء البناءيختلف في أن حالة الحلقة يتم فحصها ليس قبل التكرار ، ولكن بعد التكرار.

نتيجة لذلك ، قبل نهاية الحلقة ، يجب تنفيذ تكرار واحد ، وهو خطأ.

التالي $ = 1 ؛
فعل
{
صدى $ التالي؛
}
بينما ($ next ++<= 8 );
// يطبع الأرقام من 1 إلى 9 في سطر واحد.
?>

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

للبناء، أو حلقة مع عداد ، في عملها تشبه حلقة while ، لكن لها شكل تدوين أكثر إحكاما.

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

في المثال التالي ، سنكتب جدول محتويات لكتاب صغير.

لـ ($ next = 1؛ $ next< 5 ; $next++)
{
صدى "- الصفحة". $ التالي. "
";
}
/ * النواتج
-صفحة 1
-الصفحة 2
-الصفحة 3
-صفحة 4
-الصفحة 5 * /

?>

دعونا نفكر بالتفصيل في التعبيرات الثلاثة المكتوبة في حالة (أقواس) الحلقة.

التالي $ = 1 ؛ - عداد متغير ، يبدأ العد من واحد.
$ التالي< 5; — определяет продолжительность цикла.
$ next ++ - يحدد خطوة تغيير قيمة العداد. في حالتنا ، إنها تساوي واحدًا.

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

لـ ($ next = 1 ، نيف دولار = 1 ، $ page = "-Page" ؛ $ التالي<= 5 ; $nev++, $next=$nev)
{
الصفحة $ = $ page. "-" ؛
صدى $ page، $ next. "
";
}
/ * النواتج
-صفحة 1
-صفحة - 2
-الصفحة 3
-صفحة 4
-الصفحة ----- 5 * /

?>

ميزة أخرى لـ for هي القدرة على الاستغناء عن بناء الصدى.

صحيح أن هذا الخيار غير مرحب به بشكل خاص ، لأنه يعقد إلى حد ما إمكانية قراءة الكود ، نظرًا لكونه غير عادي ، ولكن لا يزال له الحق في الوجود.

في ذلك ، يتم إدخال بنية الطباعة في حالة الحلقة

لـ ($ next = 1؛ $ next<= 5 ; print $next, print "
"، $ next ++)؛
/ * النواتج
1
2
3
4
5 */

?>

لا يمكن إدخال بنية الصدى في جملة for.

جميع التركيبات المذكورة أعلاه ، باستثناء do-while ، لها تدوين بديل - بدون الأقواس المتعرجة.

في هذه الحالة ، ينتهي السطر الذي يحتوي على الإنشاء والشرط بنقطتين ، ويتم إغلاق الكتلة بأكملها بنقطة نهائية ، ويكون استمرارها هو البنية التي يتم تطبيقها عليها: endif ، و endif ، وما إلى ذلك.

التالي $ = 1 ؛
بينما ($ next<= 10 ):
صدى $ التالي؛
التالي ++ دولار ؛
في غضون ذلك
?>

بناء Foreachهي نوع خاص من الحلقات مصممة فقط للتكرار عبر مصفوفة.

$ next ["tomato"] = "Red" ؛
$ next ["apple"] = "أخضر" ؛
$ next ["grapes"] = "Sweet"؛
$ next ["mushroom"] = "أبيض" ؛
foreach ($ التالي كـ $ key => $ value)
{

صدى "$ value $ key
";
}
/ * النواتج
طماطم حمراء
تفاحة خضراء
عنب حلو
فطر أبيض * /

?>

للخروج من الحلقة على الفور ، إذا لزم الأمر ، هناك كسر البناء... بعد تنفيذه ، يتم نقل التحكم إلى التعبير الذي يلي الحلقة.

التالي $ = 0 ؛
بينما ($ next ++< 10 )
{
إذا ($ التالي == 7) استراحة ؛
صدى "$ التالي
";
}
/ * النواتج
1
2
3
4
5
6 */

?>

كما ترون ، في التكرار السابع ، تم مقاطعة الحلقة.

البناء المستمر، على عكس كسر ، يقطع فقط التكرار الحالي وينتقل إلى التالي.

التالي $ = 0 ؛
بينما ($ next ++< 5 )
{
إذا ($ التالي == 3) تابع ؛
صدى "$ التالي
";
}
/ * النواتج
1
2
4
5 */

?>

كما ترون ، التكرار 3 مفقود ، لأنه تم مقاطعته بواسطة عبارة المتابعة.

الانشاءات الاعلانية

يتم تمثيل بنيات الإعلان في php بواسطة عنصرين. هذه هي بنيات التصريح والتنضيد.

في الواقع ، هما متطابقان تمامًا ، وبنجاح متساوٍ يمكنك استخدام أحدهما والآخر للحصول على نفس النتيجة.

لتسهيل فهم الكود ، يتم استخدام تصميم الإعلان بشكل أساسي. يتم استخدامه لتعيين الأوامر (التوجيهات) لتنفيذ الكتلة.

حاليًا ، يتم التعرف على توجيهين - هما علامات التجزئة والتشفير.

يحدد توجيه التجزئة عدد التكات

أعلن (القراد = 1) ؛

register_tick_function ("معالج القراد") ؛

// وظيفة ، سيتم تنفيذها عند كل علامة
?>

يتم استخدام توجيه الترميز لتحديد تشفير البرنامج النصي بأكمله.

أعلن (ترميز = "UFT-8") ؛
?>

إنشاءات الشمول

تُستخدم بنيات التضمين لإدخال البرامج النصية والملفات الفردية في البرنامج. بفضلهم ، يمكن تجميع البرنامج من مواد جاهزة.

تُستخدم إنشاءات التضمين أيضًا لتقليل مقدار كود البرنامج النصي عندما تحتاج إلى إدخال بعض النص في الكود. ثم يتم إدخال ملف txt في البرنامج.

صحيح ، في هذه الحالة ، هناك تهديد لأمن البرنامج النصي ، ولحل هذه المشكلة ، مع ملف txt ، يجب إدخال ثابت في البرنامج ، والتحقق من وجوده في الملفات المضمنة.

هناك 4 أنواع من بنيات التضمين في php ، وكلها تقبل وسيطة واحدة فقط - المسار إلى الملف:

Include - يتضمن الملف إلى البرنامج ، إذا كان غائبًا ، فإنه يصدر تحذيرًا ؛
يتطلب - يربط الملف بالبرنامج ، إذا كان غائبا ، يتوقف البرنامج النصي عن العمل ؛
include_once - يسمح بإدراج الملف المضمن لمرة واحدة فقط ، وإذا كان غائبًا ، فإنه يصدر تحذيرًا ؛
Required_once - يسمح فقط بإدراج الملف المضمن لمرة واحدة ، وإذا كان غائباً ، يتوقف البرنامج النصي عن العمل ؛

تعتبر التركيبات include_once و need_once ملائمة لأنها تتجنب الارتباك عند التضمينات المتداخلة ، عندما يكون من الممكن إعادة تضمين الملفات التي تحتوي على تعريفات الوظائف.

هل حقا لا توجد أسئلة متبقية؟


منعطف أو دور

هنا فقط كلمة "نعم" مرادفة لكلمات "من فضلك" و "شكرًا لك" و "مساء الخير" و "لا شيء لذلك" و "آسف" ، وفي معظم الحالات تحل كلمة "هيا" محل كلمة "وداعًا" .

لا تتوقع أي حب مثل الحافلة عند -30 درجة.

بناء جملة اللغة معاملات SQLيشمل نوعين رئيسيين من الهياكل الحاكمة. هؤلاء هم المشغلون: لو, في حين... كل من هذه الهياكل لها قيود ومتطلبات مقابلة لكتابتها من حيث المعايير. هناك أيضًا بعض المتطلبات العامة لجميع هذه الهياكل. يتم تشكيل كل هذه المتطلبات والقيود على أساس مبادئ سهولة القراءة اللاحقة للنصوص المصدر.

قواعد كتابة هياكل التحكم

الكل مصدريجب أن تكون المسافة البادئة الموجودة داخل هياكل التحكم ، بالإضافة إلى الهياكل المنطقية المتداخلة ، مسافة بادئة بحرفين.

لا يجوز استخدام تعليمات أخرى مع تعليمات واحدة على نفس الخط.

4.2.1.3 يجب أن يبدأ إنشاء "بداية النهاية" دائمًا على سطر جديد.

يُسمح بتداخل هياكل التحكم ، باستثناء الاستثناءات المحددة صراحة.

عبارة IF الشرطية

صيغة:

يُسمح أيضًا بكتابة:

صيغة: إذا [تعبير منطقي 1]

يجب وضع جميع أجزاء المعامل الشرطي (إذا ، إذا ، آخر ، تبدأ ، نهاية) بدءًا من نفس الموضع

4.2.2.2 داخل "الأقواس المنطقية" للعبارة الشرطية ، يجب دمج عبارات SQL للعمليات وفقًا لعلامة التبويب القياسية المكونة من حرفين

عند كتابة عوامل منطقية في تعبيرات منطقية ، يجب أن تضع مسافات قبلها وبعدها

عند كتابة تعبيرات منطقية معقدة ، يُمنع إدخال مسافات بين قوسين وجزء من التعبير المنطقي

بينما هيكل التحكم

صيغة: بينما ([شرط استمرار الحلقة])

(العاملين)

4.2.3.1 داخل "الأقواس المنطقية" لبنية while ، يجب أن تكون عبارات SQL للعمليات متداخلة وفقًا لعلامة التبويب القياسية المكونة من حرفين

يعد استخدام البنية while أمرًا أساسيًا لتنظيم مختلف التمريرات باستخدام المؤشر.


المشغلين الأساسيين

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

يتكون أي نص PHP من عدد من التركيبات. يمكن أن يكون البناء عبارة عن عوامل تشغيل ، ووظائف ، وحلقات ، وعوامل شرطية ، وحتى التركيبات التي لا تفعل شيئًا (بنيات فارغة). عادةً ما تنتهي الإنشاءات بفاصلة منقوطة. بالإضافة إلى ذلك ، يمكن تجميع الهياكل في مجموعة ، لتشكيل مجموعة من الهياكل ذات الأقواس المنحنية المنحنية (...). مجموعة الهياكل هي أيضًا بنية منفصلة. تكوينات PHP تشبه بنيات C.

هناك ست مجموعات رئيسية من بنيات التحكم في PHP. إذن ، المجموعات الرئيسية لهياكل التحكم في PHP وتكوينها:

  • العوامل الشرطية:
    • آخر
    • آخر
  • الدورات:
    • في حين
    • افعل اثناء
    • foreach
    • استراحة
    • استمر
  • تصاميم التحديد:
    • حالة التبديل
  • انشاءات الاعلان:
    • يعلن
    • إرجاع
  • إنشاءات التضمين:
    • يتطلب ()
    • يشمل ()
    • مطلوب ()
    • include_once ()
  • بناء الجملة البديل لبنى PHP

جمل PHP الشرطية

ربما تكون العبارات الشرطية هي البناء الأكثر شيوعًا في جميع لغات البرمجة الخوارزمية. لنفكر في العوامل الشرطية الأساسية للغة PHP.

إذا البيان

يتشابه بناء جملة عبارة if مع عبارة if في لغة C:

وفق تعبيرات PHP، يحتوي بناء if على تعبير منطقي. إذا كان التعبير المنطقي صحيحًا (صحيحًا) ، فسيتم تنفيذ العبارة التالية لتعليمة if ، وإذا كان التعبير المنطقي خاطئًا (خطأ) ، فلن يتم تنفيذ العبارة التي تلي if. وهنا بعض الأمثلة:

ب) صدى "قيمة a أكبر من b"; ?>

في المثال التالي ، إذا كان المتغير $ a غير صفري ، فسيتم إخراج السلسلة "قيمة a صحيحة":

"قيمة a صحيحة"; ?>

في المثال التالي ، إذا كان المتغير $ a يساوي صفرًا ، فسيتم عرض السلسلة "قيمة a خاطئة":

"قيمة a خاطئة"; ?>

غالبًا ما ستحتاج إلى كتلة من العبارات التي سيتم تنفيذها وفقًا لمعيار شرطي معين ، ثم يجب وضع هذه العبارات بين أقواس معقوفة (...) مثال:

$ b) (صدى الصوت "a أكبر من b" ؛ $ b = $ a ؛)؟>

المثال أعلاه سيطبع الرسالة "a أكبر من b" إذا كان $ a> $ b ، ثم سيتم تعيين المتغير $ a على المتغير $ b. لاحظ أنه يتم تنفيذ هذه العبارات في نص عبارة if.

بناء آخر

غالبًا ما تكون هناك حاجة لتنفيذ العبارات ليس فقط في نص عبارة if ، إذا تم استيفاء أي شرط من شرط if ، ولكن أيضًا في حالة عدم استيفاء شرط عبارة if. في هذه الحالة ، لا يمكنك الاستغناء عن بناء else. بشكل عام ، سيُطلق على مثل هذا البناء اسم `` إذا لم يكن كذلك ''.

بناء الجملة الخاص ببناء if-else هو كما يلي:

if (boolean_expression) statement_1 ؛ بيان آخر_2 ؛

يكون الإجراء الخاص ببناء if-else كما يلي: إذا كان التعبير المنطقي صحيحًا ، فسيتم تنفيذ التعليمات_1 ، وبخلاف ذلك - التعليمات_2. كما هو الحال في أي لغة أخرى ، يمكن حذف جملة else ، وفي هذه الحالة لا يتم فعل أي شيء عند الحصول على القيمة المناسبة.

إذا كان يجب أن تتكون التعليمات_1 أو التعليمات_2 من عدة تعليمات ، فإنها ، كما هو الحال دائمًا ، محاطة بأقواس معقوفة. على سبيل المثال:

$ b) (echo "a أكبر من b" ؛) else (echo "أ ليس أكبر من ب"; } ?>

بنية if-else لها صيغة بديلة أخرى:

إذا (boolean_expression): أوامر ؛ elseif (other_boolean_expression): أوامر أخرى ؛ آخر: else_commands ؛ إنهاء إذا

انتبه لموقع القولون (:)! في حالة تخطيها ، سيتم إنشاء رسالة خطأ. وشيء آخر: كالعادة ، يمكن حذف الكتل elseif و else.

السيف الانشاء

elseif هو مزيج من عبارات if و else. هذا البناء يوسع بناء if-else الشرطي.

هنا صيغة بناء elseif:

إذا (boolean_expression_1) المشغل_1 ؛ elseif (boolean_expression_2) المشغل_2 ؛ عامل آخر_3؛

مثال عملي على استخدام بنية elseif:

$ b) (echo "a أكبر من b" ؛) elseif ($ a == $ b) (echo "a يساوي b" ؛) وإلا (echo "a أقل من b" ؛)؟>

بشكل عام ، فإن بناء elseif ليس مناسبًا جدًا ، لذلك لا يتم استخدامه كثيرًا.

الدورات:

في المرتبة الثانية من حيث تكرار الاستخدام ، بعد العبارات الشرطية (العبارات الشرطية) ، هي حلقات.

تسمح لك الحلقات بتكرار عدد معين (وحتى غير محدد - عندما يعتمد عمل الحلقة على الحالة) عدد مرات المشغلين المختلفين. تسمى هذه العوامل بجسم الحلقة. المشي خلال الحلقة يسمى التكرار.

تدعم PHP ثلاثة أنواع من الحلقات:

  1. حلقة مع شرط مسبق (بينما) ؛
  2. حلقة مع حالة لاحقة (افعلها) ؛
  3. حلقة مع عداد (ل) ؛
  4. حلقة خاصة عبر المصفوفات (foreach).

عند استخدام الحلقات ، من الممكن استخدام عبارات break and continue. الأول يقاطع الدورة بأكملها ، والثاني - فقط التكرار الحالي.

ضع في اعتبارك حلقات PHP:

حلقة مع شرط مسبق

تعمل حلقة while loop وفقًا للمبادئ التالية:

  • يتم تقييم قيمة التعبير المنطقي.
  • إذا كانت القيمة صحيحة ، يتم تنفيذ جسم الحلقة ، وإلا ننتقل إلى العبارة التالية بعد الحلقة.

"صيغة الحلقة ذات الشرط المسبق هي: "

بيان while (boolean_expression) ؛

في هذه الحالة ، يكون جسم الحلقة عبارة عن تعليمات. عادةً ما يتكون جسم الحلقة من عدد كبير من العبارات. فيما يلي مثال على حلقة ذات شرط مُسبَق لفترة:

انتبه إلى تسلسل عمليات الشرط $ x ++<10. Сначала проверяется условие, а только потом увеличивается значение переменной. Если мы поставим операцию инкремента перед переменной (++$x<10), то сначала будет выполнено увеличение переменной, а только затем - сравнение. В результате мы получим строку 123456789. Этот же цикл можно было бы записать по-другому:

// زيادة العدادصدى $ x؛ ) // يطبع 12345678910؟>

إذا قمنا بزيادة العداد بعد تنفيذ تعليمة echo ، نحصل على السلسلة 0123456789. على أي حال ، لدينا 10 تكرارات. التكرار هو تنفيذ عبارات داخل جسم الحلقة.

على غرار بناء جملة if الشرطية ، يمكنك تجميع العبارات داخل جسم حلقة while باستخدام الصيغة البديلة التالية:

while (boolean_expression): بيان ؛ ... في النهاية ؛

مثال على استخدام بناء جملة بديل:

حلقة مع ما بعد الشرط تفعل حين

على عكس حلقة while ، تتحقق هذه الحلقة من قيمة التعبير ليس قبل ذلك ، ولكن بعد كل تمريرة (التكرار). وبالتالي ، يتم تنفيذ جسم الحلقة مرة واحدة على الأقل. تكون صيغة الحلقة ذات الشرط اللاحق كما يلي:

افعل (حلقة الجسم ؛) بينما (التعبير المنطقي) ؛

بعد التكرار التالي ، يتم التحقق مما إذا كان التعبير المنطقي صحيحًا ، وإذا كان الأمر كذلك ، يتم نقل التحكم مرة أخرى إلى بداية الحلقة ، وإلا يتم إنهاء الحلقة. لم يقدم مطورو PHP صيغة بديلة لـ do-while (على ما يبدو ، بسبب حقيقة أنه ، على عكس برمجة التطبيقات ، نادرًا ما تُستخدم هذه الحلقة عند برمجة تطبيقات الويب).

مثال على برنامج نصي يُظهر تشغيل حلقة مع شرط ما بعد التنفيذ:

12345678910

حلقة مع عداد

يتم استخدام حلقة العداد لتنفيذ جسم الحلقة لعدد محدد من المرات. باستخدام حلقة for ، يمكنك (ويجب) إنشاء بنيات تؤدي إجراءات ليست تافهة على الإطلاق مثل التكرار البسيط لقيمة العداد.

صيغة حلقة for هي:

لـ (أوامر التهيئة ؛ loop_condition ؛ أوامر post_iteration) (جسم الحلقة ؛)

تبدأ حلقة for بتنفيذ أوامر التهيئة. يتم تنفيذ هذه الأوامر مرة واحدة فقط. بعد ذلك ، يتم فحص الحلقة loop_condition ، إذا كانت صحيحة ، فسيتم تنفيذ حلقة الحلقة. بعد تنفيذ آخر جملة من النص ، يتم تنفيذ أوامر after_iteration. ثم يتم فحص loop_condition مرة أخرى. إذا كان هذا صحيحًا ، فسيتم تنفيذ أوامر نص الحلقة وما بعد التكرار ، وهكذا.

مخرجات هذا البرنامج النصي: 0123456789

يوجد متغير لإخراج الخط 12345678910:

في هذا المثال ، تأكدنا من زيادة العداد عند اختبار تعبير منطقي. في هذه الحالة ، لم نكن بحاجة إلى تنفيذ الأوامر بعد التكرار.

إذا كنت بحاجة إلى تحديد عدة أوامر ، فيمكن فصلها بفاصلات ، على سبيل المثال:

إليك مثال آخر أكثر عملية لاستخدام أوامر متعددة في حلقة for:

// إخراج النقاط. النقاط ... النقاط ... النقاط .... ?>

المثال المدروس (وفي الواقع أي لحلقة) يمكن تنفيذه خلال الوقت ، إلا أنه سيبدو أقل أناقة ومقتضبة.

هناك أيضًا صيغة بديلة لحلقة for:

لـ (أوامر التهيئة ؛ loop_condition ؛ post_iteration_commands): العبارات ؛ نهاية

حلقة تكرار مجموعة Foreach

يقدم PHP4 نوعًا خاصًا آخر من الحلقات يسمى foreach. تم تصميم هذه الحلقة خصيصًا للتكرار عبر المصفوفات.

يكون بناء جملة حلقة foreach كما يلي:

أوامر Foreach (مصفوفة مثل $ key => $ value) ؛

هنا يتم تنفيذ الأوامر بشكل دوري لكل عنصر من عناصر المصفوفة ، بينما يظهر المفتاح التالي => زوج القيمة في متغيرات $ key و $ value. فيما يلي مثال على كيفية عمل حلقة foreach:

قيمة $) (صدى " $ value $ key
" ; } ?>

مخرجات البرنامج النصي المدروسة:

أندريه إيفانوف بوريس بيتروف سيرجي فولكوف فيودور ماكاروف

تحتوي حلقة foreach على رمز آخر يجب استخدامه عندما لا نهتم بالقيمة الأساسية للعنصر التالي. تبدو هكذا:

أوامر Foreach (مصفوفة كقيمة $) ؛

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

قيمة دولار
"
; } ?>

انتباه: حلقة Foreachلا يعمل على المصفوفة الأصلية ، ولكن على نسختها. هذا يعني أن أي تغييرات يتم إجراؤها على المصفوفة لا يمكن أن تكون "مرئية" من جسم الحلقة. يسمح ذلك ، على سبيل المثال ، باستخدام متغير ليس فقط كمصفوفة ، ولكن أيضًا نتيجة تشغيل بعض الوظائف التي تُرجع مصفوفة (في هذه الحالة ، سيتم استدعاء الوظيفة مرة واحدة فقط - قبل بدء الحلقة ، وبعد ذلك يتم تنفيذ العمل بنسخة من القيمة المعادة).

كسر البناء

في كثير من الأحيان ، من أجل تبسيط منطق الحلقة المعقدة ، من الملائم أن تكون قادرًا على مقاطعتها أثناء التكرار التالي (على سبيل المثال ، عند استيفاء شرط خاص). لهذا ، هناك بناء كسر ، والذي يخرج على الفور من الحلقة. يمكن تحديده بمعلمة اختيارية واحدة - رقم يشير إلى أي حلقة متداخلة يجب الخروج منها. القيمة الافتراضية هي 1 ، والتي تخرج من الحلقة الحالية ، ولكن في بعض الأحيان يتم تطبيق قيم أخرى. صيغة الفاصل هي:

استراحة؛ // بشكل افتراضي فاصل (cycle_number) ؛ // للحلقات المتداخلة (يشار إلى رقم الحلقة المتقطعة)

وهنا بعض الأمثلة:

تكرار x دولار
"
; } // عندما يكون $ x 3 ، تنكسر الحلقة ?>

مخرجات البرنامج النصي المدروسة:

التكرار 1 التكرار 2

إذا احتجنا إلى مقاطعة عمل حلقة معينة (متداخلة) ، فسنحتاج إلى تمرير معامل إلى بنية الفاصل - loop_number ، على سبيل المثال ، break (1). يتم ترقيم الدورات على النحو التالي:

لـ (...) // الدورة الثالثة (لـ (...) // الدورة الثانية (لـ (...) // الدورة الأولى ()))

البناء المستمر

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

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

تكرار x دولار
"
; } // ستقاطع الحلقة عند التكرار الثالث فقط ?>

مخرجات البرنامج النصي المدروسة:

التكرار 1 التكرار 2 التكرار 4 التكرار 5

استخدام ذكي استراحةو استمريسمح لك بتحسين "قابلية قراءة" الكود وعدد كتل else بشكل ملحوظ.

تصاميم التحديد:

في كثير من الأحيان ، بدلاً من العديد من عبارات if-else المتتالية ، يُنصح باستخدام بنية اختيار حالة التبديل الخاصة. تم تصميم هذا البناء لتحديد الإجراءات بناءً على قيمة التعبير المحدد. يذكرنا بناء علبة التبديل إلى حد ما ببناء "إذا كان آخر" ، والذي يعتبر في الواقع نظيره. يمكن استخدام بناء الاختيار إذا كان هناك العديد من الخيارات المقترحة ، على سبيل المثال ، أكثر من 5 ، ويلزم تنفيذ إجراءات محددة لكل خيار. في هذه الحالة ، يصبح استخدام بنية if-else أمرًا غير مريح حقًا.

يكون بناء الجملة الخاص ببناء حالة التبديل كما يلي:

التبديل (التعبير) (قيمة الحالة 1: الأوامر 1 ؛ قيمة الحالة 2: الأوامر 2 ؛ ... قيمة الحالة N: الأوامر N ؛])

مبدأ تشغيل هيكل صندوق التبديل هو كما يلي:

  • يتم حساب قيمة التعبير ؛
  • يتم عرض مجموعة من القيم. دع value1 تساوي قيمة التعبير المحسوب في الخطوة الأولى. إذا لم يتم تحديد فاصل البنية (المشغل) ، فسيتم تنفيذ الأوامر i ، i + 1 ، i + 2 ، ... ، N. وإلا (هناك فاصل) ، فسيكون الأمر الذي يحمل الرقم i فقط أعدم.
  • إذا لم تتطابق أي من القيم في المجموعة مع قيمة التعبير ، فسيتم تنفيذ الكتلة الافتراضية ، إذا تم تحديدها.

فيما يلي أمثلة على استخدام إنشاء علبة التبديل:

// استخدم if-elseإذا ($ x == 0) (echo "x = 0
"؛) elseif ($ x == 1) (echo" x = 1
"؛) elseif ($ x == 2) (echo" x = 2
" ; } // استخدم حالة التبديلالتبديل ($ x) (الحالة 0: echo "x = 0
"؛ كسر ؛ الحالة 1: صدى" x = 1
"؛ كسر ؛ الحالة 2: صدى" x = 2
"؛ كسر ؛)؟>

يطبع السيناريو أعلاه x = 1 مرتين. مثال آخر على استخدام بناء علبة التبديل:

يعرض هذا البرنامج النصي "This is a Apple".

يتم تنفيذ إنشاء المفتاح على مراحل. في البداية ، لم يتم تنفيذ أي كود. فقط عندما يتم العثور على بنية حالة ذات قيمة تطابق قيمة تعبير التبديل ، تبدأ PHP في تنفيذ التركيبات. تستمر PHP في تنفيذ التركيبات حتى نهاية كتلة التبديل ، حتى يتم العثور على تعليمة break. إذا لم تستخدم تركيبات break (عوامل التشغيل) ، فسيبدو البرنامج النصي بالشكل التالي:

"؛ الحالة 1: echo" x = 1
"؛ الحالة 2: echo" x = 2
" ; } // بدون استخدام كسر المخرجات// س = 0 // س = 1 // س = 2؟>

يمكن أيضًا أن تكون قائمة بيان الحالة فارغة ، فهي ببساطة تنقل عنصر التحكم إلى قائمة البيان حتى بيان الحالة التالي:

"x أقل من 3 ، لكنها ليست سالبة"؛ استراحة؛ الحالة 3: صدى "x = 3" ؛ )؟>

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

"x ليس 0 أو 1 أو 2"; } ?>

ينتج هذا البرنامج النصي "x ليس 0 أو 1 أو 2" لأن المتغير $ x = 3.

يحتوي بناء حالة التبديل أيضًا على بناء جملة بديل:

رمز التبديل (التعبير): قيمة الحالة 1: أوامر 1 ؛ ... ... ... قيمة الحالة N: أوامر N ؛ ] endswitch.

مثال عملي على استخدام بناء جملة بديل لبناء حالة التبديل:

"x ليس 0 أو 1 أو 2"؛ Endswitch. ؟>

كما فهمت بالفعل ، فإن مخرجات هذا البرنامج النصي "x لا تساوي 0 أو 1 أو 2" ، حيث أن $ x = 3.

انشاءات الاعلانات:

أعلن البناء

يتم استخدام بنية التصريح لتعيين توجيهات التنفيذ لكتلة من التعليمات البرمجية. يشبه بناء جملة التصريح بناء جملة تكوينات تحكم PHP الأخرى:

التصريح (التوجيهي) البيان ؛

يسمح لك التوجيه بتعيين سلوك كتلة التصريح. حاليًا ، هناك توجيه واحد فقط متاح في PHP - التجزئة. البيان جزء من كتلة التصريح.

تعتمد كيفية تنفيذ التعليمات على التوجيه.

تصميم يعلنيمكن استخدامها في النطاق العالمي ، مما يؤثر على كل التعليمات البرمجية التي تليها.

توجيه علامة

القرادهو حدث يحدث لكل تعليمات ذات مستوى منخفض N ينفذها المحلل اللغوي داخل كتلة يعلن... يتم تحديد الأحداث التي تحدث عند كل علامة من خلال الوظيفة register_tick_function ().

بنيات قيمة الإرجاع:

بناء العودة

ترجع بنية rerurn القيم ، بشكل أساسي من UDFs ، كمعلمات لطلب دالة. عندما يتم استدعاء الإرجاع ، تتم مقاطعة تنفيذ الوظيفة المعرفة من قبل المستخدم ، ويعيد بناء الإرجاع قيمًا معينة.

إذا تم استدعاء بناء الإرجاع من النطاق العام (خارج الوظائف المعرفة من قبل المستخدم) ، فسينهي البرنامج النصي أيضًا عمله ، وسيعيد الإرجاع أيضًا قيمًا معينة.

في الغالب ، يتم استخدام بناء الإرجاع لإرجاع القيم بواسطة وظائف محددة من قبل المستخدم.

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

مثال على استخدام بناء الإرجاع لإرجاع قيم عدد صحيح:

مثال على إرجاع المصفوفات بواسطة بناء الإرجاع:

لكي تقوم الدالة بإرجاع نتيجة بالرجوع إليها ، تحتاج إلى استخدام عامل التشغيل & عند وصف الوظيفة وعند تعيين قيمة إرجاع إلى متغير:

كما نرى ، البناء إرجاعمناسب جدًا للاستخدام في الوظائف المخصصة.

إنشاءات التضمين:

تسمح لك بنيات التضمين بإنشاء برنامج PHP (نص برمجي) من عدة برامج ملفات فردية.

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

يتطلب بناء

تسمح لك عبارة "تتطلب" بتضمين الملفات في نص PHP قبل تنفيذ نص PHP. الصيغة العامة لطلب هو:

تتطلب اسم الملف ؛

عند بدء التشغيل (بالضبط عند بدء التشغيل ، وليس عند التنفيذ!) للبرنامج ، سيستبدل المترجم ببساطة التعليمات بمحتويات اسم الملف (قد يحتوي هذا الملف أيضًا على نص PHP ، مؤطر ، كالمعتاد ، بعلامات). علاوة على ذلك ، سيفعل ذلك على الفور قبل بدء البرنامج (على عكس التضمين ، الذي تمت مناقشته أدناه). يمكن أن يكون هذا مفيدًا تمامًا لتضمين صفحات قوالب متنوعة في تعليمات HTML البرمجية في إخراج البرنامج النصي. دعنا نعطي مثالا:

ملف Header.html:

إنه عنوان

ملف Footer.html:

شركة المنزل ، 2005.

ملف Script.php

// يخرج النص نص المستند نفسهتتطلب "footer.htm" ؛ ؟>

وبالتالي ، تسمح لك البنية المطلوبة بتجميع نصوص PHP من عدة ملفات منفصلة ، والتي يمكن أن تكون صفحات html ونصوص php.

يدعم بند الطلب تضمين الملفات البعيدة (منذ PHP 4.3.0). على سبيل المثال:

// يعمل المثال التالييتطلب؛ ؟>

يسمح لك البناء المطلوب بتضمينه الملفات المحذوفةإذا تم تمكين هذه الميزة في التكوين ملف PHP. معلومات مفصلةبالإضافة إلى ذلك.

قم بتضمين التركيبات

يهدف بناء التضمين أيضًا إلى تضمين الملفات في كود البرنامج النصي PHP.

على عكس بناء الطلب ، يسمح لك بناء التضمين بتضمين الملفات في التعليمات البرمجية الخاصة بك. نص PHPأثناء تنفيذ النص. صيغة التضمين هي كما يلي:

تضمين اسم الملف ؛

دعونا نشرح الفرق الأساسي بين طلب وإدراج الإنشاءات مع مثال عملي محدد. دعنا ننشئ 10 ملفات بأسماء 1.txt و 2.txt وما إلى ذلك حتى 10.txt ، محتويات هذه الملفات هي مجرد أرقام عشرية 1 ، 2 ... ... 10 (رقم واحد في كل ملف). لنقم بإنشاء نص PHP مثل هذا:

// قم بإنشاء حلقة ، في جسمها تشتمل على البناءلـ ($ i = 1 ؛ $ i<= 10 ; $i ++ ) { include "$ i .txt "; } // يتضمن عشرة ملفات: 1.txt ، 2.txt ، 3.txt ... 10.txt // النتيجة - الإخراج 12345678910 ?>

نتيجة لذلك ، نحصل على مخرجات تتكون من 10 أرقام: "12345678910". من هذا يمكننا أن نستنتج أنه تم تضمين كل ملف مرة واحدة مباشرة أثناء تنفيذ الحلقة! إذا وضعنا الآن "يتطلب" بدلاً من "include" ، فسينشئ البرنامج النصي خطأً فادحًا. قارن النتيجة.

تقوم PHP بتحويل البرنامج النصي إلى تمثيله الداخلي عن طريق تحليل سطور البرنامج النصي واحدًا تلو الآخر حتى يصل الأمر إلى جملة include. عند الوصول إلى التضمين ، تتوقف PHP عن ترجمة النص وتتحول إلى الملف المحدد في التضمين. وبالتالي ، وبسبب هذا السلوك للمترجم ، فإن أداء البرنامج النصي ينخفض ​​، خاصة مع وجود عدد كبير من الملفات المضمنة مع ملفات التضمين. مع طلب ، لا توجد مثل هذه المشاكل ، حيث يتم تضمين الملفات باستخدام يتطلب قبل تنفيذ البرنامج النصي ، أي في وقت الترجمة ، يكون الملف مدرجًا بالفعل في البرنامج النصي.

وبالتالي ، من الأنسب استخدام الإنشاء المطلوب حيث لا توجد حاجة لتضمين الملفات ديناميكيًا في البرنامج النصي ، ولكن تشمل البناءتستخدم فقط لغرض تضمين الملفات ديناميكيًا في كود البرنامج النصي PHP.

تصميم يشمليدعم تضمين الملفات البعيدة (منذ PHP 4.3.0). على سبيل المثال:

// لا يعمل المثال التالي لأنه يحاول تضمين ملف محلي// يعمل المثال التالييشمل "http://www.example.com/file.php؟foo=1&bar=2"; ?>

يسمح لك بناء التضمين بتضمين الملفات البعيدة ، إذا تم تمكينها في ملف تكوين PHP. مزيد من المعلومات أدناه.

تتضمن التركيبات لمرة واحدة تتطلب_ مرة واحدة و include_once

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

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

تتطلب تركيبات التضمين لمرة واحدة أيضًا_ مرة واحدة و include_ because أيضًا تسمح بتضمين الملفات البعيدة إذا تم تمكينها في ملف تكوين PHP. مزيد من المعلومات أدناه.

يشمل الملفات البعيدة

يتيح لك PHP العمل مع كائنات URL مثل الملفات العادية. تُستخدم الحزم الافتراضية للعمل مع الملفات البعيدة باستخدام ملفات بروتوكول بروتوكول نقل الملفاتأو http.

إذا تم تمكين "أغلفة URL fopen" في PHP (كما في التكوين الافتراضي) ، يمكنك تحديد الملف المراد تضمينه باستخدام عنوان URL (عبر HTTP) بدلاً من المسار المحلي. إذا فسر الخادم الهدف الملف الهدف على أنه كود PHP ، فيمكن تمرير المتغيرات إلى ملف التضمين باستخدام سلسلة استعلام عنوان URL ، كما هو الحال في HTTP GET. بالمعنى الدقيق للكلمة ، هذا ليس هو نفسه تضمين ملف ووراثة النطاق المتغير للملف الرئيسي ؛ لأن البرنامج النصي يعمل على خادم بعيد ، ثم يتم توصيل النتيجة بالبرنامج النصي المحلي.

لكي يكون التضمين عن بعد للملفات متاحًا ، من الضروري تعيين allow_url_fopen = 1 في ملف التكوين (php.ini).

ملحوظة: إصدارات PHPلا يدعم Windows قبل إصدار PHP 4.3.0 القدرة على استخدام الملفات البعيدة مع هذه الميزة حتى إذا تم تمكين خيار allow_url_fopen.

/ * هذا يفترض أن www.example.com تم تكوينه لتحليل ملفات .php * وليس ملفات .txt. تعني كلمة "Works" هنا أيضًا أن المتغيرين * $ foo و $ bar متاحان في الملف المضمن. * / // لن يعمل لأن file.txt لا تتم معالجته بواسطة www.example.com مثل PHPيشمل "http://www.example.com/file.txt؟foo=1&bar=2"; // لن يعمل لأنه يبحث عن الملف "file.php؟ Foo = 1 & bar = 2" في المحلي // نظام الملفات.تضمين "file.php؟ foo = 1 & bar = 2" ؛ // يعمل المثال التالي:يشمل "http://www.example.com/file.php؟foo=1&bar=2"؛ $ foo = 1 ؛ شريط الدولار = 2 ؛ تشمل "file.txt" ؛ // تتضمن الأعمال "file.php" ؛ // يعمل؟>

انظر أيضًا الملفات البعيدة لـ fopen () و file () للحصول عليها معلومة اضافية.

بالإضافة إلى:

ربما تعرف بالفعل كيفية إدراج كود HTML في نص البرنامج النصي. للقيام بذلك ، تحتاج فقط إلى إغلاق الدعامة؟> ، الرمز ، ثم إعادة فتحه باستخدام

ربما لاحظت كيف تبدو قبيحة. ومع ذلك ، إذا بذلت القليل من الجهد لتزيينها ، فلن يكون الأمر بهذا السوء. خاصة إذا كنت تستخدم الصيغة البديلة لـ if-else وبنيات اللغة الأخرى.

في أغلب الأحيان ، لا تحتاج إلى إدخال HTML داخل البرنامج النصي ، ولكنك تحتاج إلى إدخال التعليمات البرمجية داخل HTML. هذا أسهل بكثير للمصمم الذي قد يرغب في إعادة تصميم البرنامج النصي في المستقبل ، لكنه لن يكون قادرًا على معرفة ما يجب تغييره وما لا يجب أن يلمسه. لذلك ، يُنصح بفصل كود HTML عن البرنامج (البرنامج النصي) ، على سبيل المثال ، لوضعه في ملف منفصل ، والذي يتم توصيله بعد ذلك بالبرنامج النصي باستخدام بنية التضمين. على سبيل المثال ، إليك ما سيبدو عليه البرنامج النصي الذي يحيي المستخدم بالاسم ، باستخدام الصيغة البديلة if-else:

مهلا، !

طريقة = الحصول على> اسمك:

توافق على أنه حتى الشخص الذي ليس على دراية كاملة بـ PHP ، ولكنه على دراية جيدة بلغة HTML ، يمكنه بسهولة فهم ما في هذا السيناريو. ضع في اعتبارك صيغة بديلة لبعض التركيبات في سياق استخدامها مع HTML:

بناء جملة بديل لـ if-else

... كود HTML ...... كود HTML ...

الصيغة البديلة لـ while loop

... كود HTML ...

مثال على استخدام صيغة بديلة لحلقة while:

كما نرى ، فإن استخدام بناء الجملة البديل يجعل نصوص PHP قابلة للقراءة في الحالات التي يكون فيها من الضروري معالجة PHP مع تعليمات HTML البرمجية.

حاشية. ملاحظة: تعتبر هياكل التحكم في لغة C: الفروع "if-else" و "if-else if" ، حلقات "while" و "for". هناك أيضًا تركيبات يجب تجنبها: "switch" و "do-while" و "goto". يتم النظر في عرض البرنامج في شكل مجموعة من الوظائف ، والنماذج الأولية للوظائف ، وطرق نقل معلمات الإدخال والإخراج. يتم تعداد أنواع مختلفة من الذاكرة: ثابتة ، ومكدسة ، وديناميكية (كومة) وطرق للعمل مع الذاكرة في C. تم تقديم "هيكل" نوع البيانات المركبة. يتم توضيح المادة من خلال العديد من الأمثلة للبرامج: حل معادلة تربيعية ، وحساب الجذر التربيعي ، وحساب GCD لرقمين ، والخوارزمية الإقليدية الممتدة ، وطباعة الأعداد الأولية N ، واجتياز الشجرة العودية ، إلخ.

يبني التحكم

تسمح لك بنيات التحكم بتنظيم الحلقات والفروع في البرامج. لا يوجد سوى عدد قليل من التركيبات في C ، ويمكن حذف نصفها (يتم تنفيذها من خلال البقية).

الأقواس

تسمح لك الأقواس المتعرجة بدمج العديد من العوامل الأولية في عامل أو كتلة واحدة مركبة. في جميع التركيبات النحوية ، يمكن استخدام عامل مركب بدلاً من عامل بسيط.

في C ، يمكنك وضع إعلانات المتغيرات المحلية في بداية الكتلة. يتم إنشاء المتغيرات المحلية الموصوفة داخل الكتلة عند إدخال الكتلة وتدميرها عند الخروج من الكتلة.

في C ++ ، يمكن الإعلان عن المتغيرات المحلية في أي مكان ، وليس فقط في بداية الكتلة. ومع ذلك ، كما هو الحال في C ، يتم تدميرها تلقائيًا عند الخروج من الكتلة.

هذا جزء من البرنامج يتبادل قيم متغيرين حقيقيين:

مزدوج x ، y ؛ ... ... ... (tmp مزدوج = x ؛ x = y ؛ y = tmp ؛)

هنا ، لمبادلة قيم متغيرين x و y ، نقوم أولاً بتخزين قيمة x في متغير مساعد tmp. ثم تكتب x إلى قيمة y ، و y هي قيمة x السابقة المخزنة في tmp. نظرًا لأن المتغير tmp مطلوب فقط داخل هذا المقتطف ، فقد وضعناه في كتلة وأعلننا عن المتغير tmp داخل هذه الكتلة. عند الخروج من الكتلة ، سيتم تحرير الذاكرة التي يشغلها المتغير tmp.

إذا البيان

تسمح لك عبارة if ("if") بتنظيم التفريع في البرنامج. له شكلين: عامل التشغيل "if" وعامل التشغيل "if ... else". عامل التشغيل "if" لديه النموذج

إذا (الشرط) العمل ؛

عامل التشغيل "إذا ... خلاف ذلك" لديه النموذج

إذا (الشرط) الإجراء 1 ؛ آخر action2؛

يمكن استخدام أي تعبير منطقي أو عدد صحيح كشرط. تذكر أنه عند استخدام تعبير عدد صحيح ، فإن true هي أي قيمة غير صفرية. عند تنفيذ عبارة "if" ، يتم تقييم التعبير الشرطي بعد if أولاً. إذا كان هذا صحيحًا ، فسيتم تنفيذ الإجراء ، وإذا كان خطأً ، فلن يحدث شيء. على سبيل المثال ، في الجزء التالي ، تتم كتابة الحد الأقصى لقيم المتغيرين x و y إلى المتغير m:

مزدوج x ، y ، m ؛ ... ... ... م = س ؛ إذا (y> x) m = y ؛

عندما يتم تنفيذ عامل التشغيل "إذا ... وإلا" ، في الحالة التي يكون فيها الشرط صحيحًا ، يتم تنفيذ الإجراء المكتوب بعد if ؛ خلاف ذلك ، يتم تنفيذ الإجراء بعد آخر. على سبيل المثال ، تتم إعادة كتابة المقتطف السابق على النحو التالي:

مزدوج x ، y ، m ؛ ... ... ... إذا (س> ص) م = س ؛ آخر م = ص ؛

عندما تحتاج إلى تنفيذ عدة إجراءات اعتمادًا على حقيقة الحالة ، يجب عليك استخدام الأقواس المتعرجة ، والجمع بين العديد من العوامل في كتلة ، على سبيل المثال ،

مزدوج x ، y ، d ؛ ... ... ... إذا (د> 1.0) (س / = د ؛ ص / = د ؛)

هنا المتغيران x و y يقبلان القسمة على d فقط إذا كانت d أكبر من واحد.

يمكن استخدام الأقواس المتعرجة حتى في حالة وجود عبارة واحدة فقط بعد if or else. إنها تعمل على تحسين بنية نص البرنامج وتسهيل تعديله المحتمل. مثال:

مزدوج x ، y ؛ ... ... ... إذا (س! = 0.0) (ص = 1.0 ؛)

إذا احتجنا إلى إضافة إجراء آخر يتم تنفيذه على الشرط "x غير صفري" ، فإننا ببساطة نضيف خطًا داخل الأقواس المتعرجة.

الاختيار من عدة احتمالات: إذا ... وإلا إذا ...

يمكن كتابة العديد من العبارات الشرطية مثل "if ... نتيجة لذلك ، يتحقق ذلك الاختيار من بين عدة احتمالات... يتم استخدام بناء الاختيار في كثير من الأحيان في البرمجة. مثال: بالنظر إلى المتغير الحقيقي x ، فأنت بحاجة إلى كتابة قيمة علامة الدالة (x) إلى المتغير الحقيقي y.