مقالات

2: المزيد عن الوظائف


أهداف التعلم

ستتعلم في هذا الفصل:

  • البحث عن المجال ومجموعة من الوظائف
  • ارسم سبع وظائف أساسية
  • تقييم الوظائف المعرفة متعددة التعريف
  • استخدم التحويلات لرسم الرسوم البيانية للوظائف
  • رسم وظائف تربيعية باستخدام الخصائص
  • ارسم وظائف كثيرة الحدود باستخدام السلوك النهائي
  • تحديد الخطوط المقاربة ورسم الرسوم البيانية للوظائف المنطقية
  • 2.1: العلاقات والوظائف
    • 2.1E: تمارين - العلاقات والوظائف
  • 2.2: رسم بياني للوظائف الأساسية
    سنقوم في هذا القسم برسم سبع وظائف أساسية سيتم استخدامها خلال هذه الدورة. يتم رسم كل وظيفة من خلال رسم النقاط.
    • 2.2E: تمارين - رسم بياني للوظائف الأساسية
  • 2.3: استخدام التحويلات إلى وظائف الرسم البياني
    • 2.3E: تمارين - استخدام التحويلات إلى وظائف الرسم البياني
  • 2.4: رسم وظائف تربيعية بيانية باستخدام الخصائص
    • 2.4E: تمارين - رسم وظائف تربيعية باستخدام الخصائص
  • 2.5: وظائف كثيرة الحدود
    كلمة الجذر "بولي" تعني "العديد" ، كما في المضلع (جوانب عديدة) أو متعدد اللغات (يتحدث العديد من اللغات - متعدد اللغات). في الجبر ، تعني كلمة كثير الحدود "العديد من المصطلحات" ، حيث يمكن تفسير عبارة "العديد من المصطلحات" على أنها تعني في أي مكان من واحد إلى عدد تعسفي ، ولكن محدود ، من المصطلحات. وبالتالي ، يمكن اعتبار أحادية الحدود متعددة الحدود ، كما يمكن اعتبارها ذات الحدين وثلاثية الحدود. في عملنا ، سوف نركز في معظم الأحيان على كثيرات الحدود لمتغير واحد.
    • 2.5E: تمارين - وظائف كثيرة الحدود
  • 2.6: وظائف عقلانية
    في هذا القسم ، ستقودنا دراستنا إلى الوظائف المنطقية. لاحظ جذر كلمة "نسبة" في المصطلح "عقلاني". هل يذكرك بكلمة "كسر"؟ يجب أن تكون ، لأن الوظائف المنطقية هي وظائف في شكل كسري محدد للغاية.
    • 2.6E: تمارين - وظائف عقلانية
    • 1.1: مراجعة الفصل 2

2.5 - لماذا الوظائف مفيدة ، وكيفية استخدامها بشكل فعال

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

غالبًا ما يسأل المبرمجون الجدد ، "ألا يمكننا وضع كل الشفرة داخل رئيسي وظيفة؟" بالنسبة للبرامج البسيطة ، يمكنك ذلك تمامًا. ومع ذلك ، توفر الوظائف عددًا من الفوائد التي تجعلها مفيدة للغاية في البرامج ذات الطول أو التعقيد غير التافهين.

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

على الرغم من أنه لا يبدو كذلك ، في كل مرة تستخدم فيها عامل التشغيل & lt & lt أو عامل التشغيل & gt & gt لإجراء الإدخال أو الإخراج ، فإنك تستخدم وظيفة توفرها المكتبة القياسية التي تلبي جميع المعايير المذكورة أعلاه.

استخدام الوظائف بشكل فعال

أحد أكبر التحديات التي يواجهها المبرمجون الجدد (إلى جانب تعلم اللغة) هو فهم متى وكيفية استخدام الوظائف بفعالية. فيما يلي بعض الإرشادات الأساسية لوظائف الكتابة:

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

عادةً ، عند تعلم C ++ ، ستكتب الكثير من البرامج التي تتضمن 3 مهام فرعية:

  1. قراءة المدخلات من المستخدم
  2. حساب قيمة من المدخلات
  3. طباعة القيمة المحسوبة

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

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


2: المزيد عن الوظائف

فلماذا من المفيد لمبرمجي لغة سي تقسيم برامجهم إلى وظائف منفصلة - لكن متعاونة -؟ لماذا لا تكتب كل برنامج على أنه جزء كبير من العبارات؟

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

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

يسلط هذا المثال الضوء على أهم سببين لاستخدام مبرمجي لغة سي للوظائف.

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

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

السبب الثاني هو التجريد. من أجل استخدام وظيفة معينة ، تحتاج إلى معرفة الأشياء التالية:

  1. اسم الوظيفة
  2. ماذا تفعل الوظيفة
  3. ما الحجج التي يجب أن تعطيها للوظيفة و
  4. ما نوع النتيجة التي ترجعها الدالة.

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

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

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

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


о многих проектах ункции можно разделить на логические группы ، которые следует развертватдеть ивать. апример، у вас может быть группа функций، используемых создания отчетов по метрикам:

ы можете поместить ти функции в группу при их экспорте в файл index.js:

ри развертывании ункции будут иметь префикс с именем их группы، поэтому в том примере ункцить.

ри развертывании ункций вы можете ограничить действие одной группой:


المعلمات الرسمية في مقابل المعايير الفعلية

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

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

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

داخل دالة average_grade الاسم list_of_grades سيتم استخدامه بدلاً من أي متغير قام مستخدم آخر بتخزين درجاته فيه. وبالتالي لاستدعاء الوظيفة ، قد أكتب:

في رمز "My" ، يتم تخزين الدرجات في المتغير "midterm_grades". داخل الوظيفة ، يتم تخزين الدرجات في المتغير "list_of_grades". وهكذا ، أثناء تنفيذ البرنامج ، كلا الاسمين سيشيران إلى نفس الشيء لكن في أوقات مختلفة.

المعلمة "list_of_grades" تسمى a رسمي paramater مرة أخرى ، هذا يعني فقط اسم صاحب مكان لأي مجموعة محتملة من الدرجات.

المتغير midterm_grades هو فعلي باراماتر. هذا يعني "ما يتم استخدامه بالفعل" لاستدعاء الوظيفة ، مثل [90 ، 100 ، 70]


استدعاء وظيفتين من نفس onclick [تكرار]

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

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

يمكنك إنشاء وظيفة واحدة تستدعي كلاهما ، ثم استخدامها في الحدث.

يمكنك استدعاء الوظائف من داخل وظيفة أخرى

ومع ذلك ، إذا كنت تستخدم عبارة إرجاع في وظيفة "الدفع" ، فسيتوقف التنفيذ ولن يتم تنفيذ "cls" ،

أحداث الربط من html غير مستحسن. هذه هي الطريقة الموصى بها:

فقط لتقديم بعض التنوع ، يمكن استخدام عامل الفاصلة أيضًا ولكن قد يقول البعض "noooooo!" ، لكنه يعمل:

ضع فاصلة منقوطة بين الوظيفتين كمنهي بيان.


وظائف الإدارة

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

قام خبراء مختلفون بتصنيف وظائف الإدارة. بالنسبة الى جورج & # 038 جيري، & # 147 هناك أربع وظائف أساسية للإدارة ، وهي التخطيط والتنظيم والتشغيل والتحكم & # 148.

وفقًا لهنري فايول ، فإن الإدارة تعني التنبؤ والتخطيط والتنظيم والقيادة & # 038 للتحكم & # 148. بينما أعطى لوثر جولليك الكلمة المفتاحية # 146بوسدكورب& # 146 حيث يشير P إلى التخطيط ، و O للتنظيم ، و S للتوظيف ، و D للتوجيه ، و Co للتنسيق ، و R للإبلاغ & # 038 B للموازنة. لكن الوظائف الأكثر قبولًا هي وظائف الإدارة التي قدمها KOONTZ و O & # 146DONNEL أي. تخطيط, تنظيم, التوظيف, توجيه و المتابعة.

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

تخطيط

إنها الوظيفة الأساسية للإدارة. إنه يتعامل مع تحديد مسار العمل المستقبلي & # 038 تحديد مسار الإجراءات الأنسب مسبقًا لتحقيق الأهداف المحددة مسبقًا. وفقًا لـ KOONTZ ، يقرر & # 147Planning مسبقًا - ما يجب القيام به ، ومتى يجب القيام به & # 038 كيفية القيام بذلك. إنه يسد الفجوة من حيث نحن & # 038 حيث نريد أن نكون & # 148. الخطة هي مسار العمل في المستقبل. إنه تمرين في حل المشكلات واتخاذ القرار # 038. التخطيط هو تحديد مسارات العمل لتحقيق الأهداف المرجوة. وبالتالي ، فإن التخطيط هو تفكير منهجي حول طرق & # 038 وسائل لتحقيق الأهداف المحددة مسبقًا. التخطيط ضروري لضمان الاستخدام السليم للموارد البشرية & # 038 غير البشرية. كل هذا منتشر ، إنه نشاط فكري ويساعد أيضًا في تجنب الارتباك والشكوك والمخاطر والهدر وما إلى ذلك.

تنظيم

إنها عملية الجمع بين الموارد المادية والمالية والبشرية وتطوير العلاقة الإنتاجية فيما بينها لتحقيق الأهداف التنظيمية. وفقًا لهنري فايول ، & # 147 لتنظيم العمل هو تزويده بكل شيء مفيد أو وظيفته ، أي المواد الخام والأدوات ورأس المال والموظفين & # 146s & # 148. يتضمن تنظيم الأعمال تحديد & # 038 توفير الموارد البشرية وغير البشرية للهيكل التنظيمي. يتضمن التنظيم كعملية ما يلي:

  • تحديد الأنشطة.
  • تصنيف تجميع الأنشطة.
  • احالة الواجبات.
  • تفويض السلطة وخلق المسؤولية.
  • تنسيق علاقات السلطة والمسؤولية.

التوظيف

إنها وظيفة إدارة الهيكل التنظيمي وإبقائه مأهولًا. اكتسب التوظيف أهمية أكبر في السنوات الأخيرة بسبب التقدم التكنولوجي ، وزيادة حجم الأعمال ، وتعقيد السلوك البشري وما إلى ذلك. الغرض الرئيسي من التوظيف هو وضع الرجل المناسب في الوظيفة المناسبة ، أي الأوتاد المربعة في الثقوب المربعة والأوتاد المستديرة في ثقوب مستديرة. وفقًا لـ Kootz & # 038 O & # 146Donell ، & # 147 تتضمن الوظيفة الإدارية للتوظيف إدارة الهيكل التنظيمي من خلال الاختيار السليم والفعال ، والتقييم & # 038 تطوير الموظفين لملء الأدوار المصممة للهيكل & # 148. التوظيف يشمل:

    (تقدير قوة الإنسان من حيث البحث واختيار الشخص وإعطاء المكان المناسب).
  • التوظيف والاختيار & # 038 التنسيب. . . .
  • الترقيات & # 038 النقل.

توجيه

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

إشراف- يعني الإشراف على عمل المرؤوسين من قبل رؤسائهم. إنه فعل مشاهدة & # 038 إخراج العمل & # 038 العمال.

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

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

مجال الاتصالات- هي عملية نقل المعلومات والخبرة والآراء وما إلى ذلك من شخص إلى آخر. إنه جسر من التفاهم.

المتابعة

إنه يعني قياس الإنجاز مقابل المعايير وتصحيح الانحراف إن وجد لضمان تحقيق الأهداف التنظيمية. الغرض من التحكم هو التأكد من أن كل شيء يحدث وفقًا للمعايير. يساعد نظام التحكم الفعال على التنبؤ بالانحرافات قبل حدوثها بالفعل. بالنسبة الى ثيو هايمان، & # 147 السيطرة هي عملية التحقق مما إذا كان يتم إحراز تقدم مناسب نحو الأهداف والغايات والتصرف إذا لزم الأمر ، لتصحيح أي انحراف & # 148. وفقًا لـ Koontz & # 038 O & # 146Donell & # 147Controlling هو قياس & # 038 تصحيح أنشطة الأداء للمرؤوسين من أجل التأكد من أن أهداف وخطط المؤسسة المطلوبة للحصول عليها قد تم إنجازها & # 148. لذلك فإن التحكم فيه الخطوات التالية:

  1. إنشاء الأداء القياسي.
  2. قياس الأداء الفعلي.
  3. مقارنة الأداء الفعلي بالمعايير ومعرفة الانحراف إن وجد.
  4. اجراء تصحيحي.

تعلم مفاهيم الإدارة والمهارات # 038 بسرعة من خلال وحدات التعلم الذاتية سهلة الفهم والموضحة بشكل غني و # 038 عروض PowerPoint التقديمية القابلة للتنزيل.

قم بتنزيل العرض التقديمي التجريبي الآن !.

بصفتك عضوًا متميزًا ، يمكنك الوصول إلى عرض محتوى الدورة التدريبية الكامل عبر الإنترنت وتنزيل عروض PowerPoint التقديمية لأكثر من 200 دورة تدريبية في مجال الإدارة والمهارات.


DOS Batch - البرنامج التعليمي للوظائف

ما هو ، لماذا هو مهم وكيف تكتب ما تريد.

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

استدعاء وظيفة - كيفية استدعاء دالة

إنشاء وظيفة - ما هي وظيفة

مثال - دالة مع وسيطات - مثال يوضح كيفية عملها

مثال - استدعاء دالة - مثال يوضح كيفية عملها

  1. النص الرئيسي: يبدأ من السطر 1 وينتهي بـ a GOTO: EOF الأمر الذي ينهي البرنامج النصي.
  2. قسم الوظيفة: ملء النصف الثاني من الملف الدفعي بواحدة أو أكثر من الوظائف لتكون قابلة للاستدعاء من البرنامج النصي الرئيسي.

مثال - إرجاع القيم باستخدام المرجع المتغير - مثال يوضح كيفية عمله

المتغيرات المحلية في الوظائف - كيفية تجنب تعارض الأسماء والحفاظ على التغييرات المتغيرة محلية للوظيفة

وصف: ال SETLOCAL يتسبب معالج الأوامر في إجراء نسخ احتياطي لجميع متغيرات البيئة. يمكن استعادة المتغيرات عن طريق الاتصال ENDLOCAL. التغييرات التي تم إجراؤها بين الرسائل محلية بالنسبة للدفعة الحالية. ENDLOCAL يتم استدعاؤه تلقائيًا عند الوصول إلى نهاية الملف الدفعي ، أي عن طريق الاتصال GOTO: EOF.
تسمح ترجمة المتغيرات باستخدام SETLOCAL باستخدام أسماء المتغيرات داخل دالة بحرية دون القلق بشأن تعارض الأسماء مع المتغيرات المستخدمة خارج الوظيفة.
النصي: تنزيل: BatchTutoFunc4.bat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@صدى خارج

set & quotaStr = لا تتوقع أي تغيير ، حتى لو استخدمت في دالة & quot
set & quotvar1 = لا تغيير لهذا. ماذا الان؟ & quot
echo.aStr قبل:٪ aStr٪
echo.var1 قبل:٪ var1٪
الاتصال: myGetFunc var1
echo.aStr بعد:٪ aStr٪
echo.var1 بعد:٪ var1٪

صدى. & amppause & ampgoto: eof

::--------------------------------------------------------
:: - قسم الوظيفة يبدأ أدناه هنا
::--------------------------------------------------------

: myGetFunc - تمرير متغير حسب المرجع
SETLOCAL
تعيين & quotaStr = نصائح & مثل
تعيين & quot٪

تحليل وسيطات الدالة - كيفية استرداد وسيطات الدالة داخل الدالة

تمرير وسيطات الوظيفة - كيفية تمرير الوسيطات إلى الوظيفة

الوظائف العودية - تداع.

مثال: يوضح المثال التالي أدناه كيفية حساب رقم فيبوناتشي بشكل متكرر. يتوقف العودية عندما تصل ألجورزمية فيبوناتشي إلى رقم أكبر أو يساوي رقم إدخال معين.
يبدأ المثال بالرقمين 0 و 1: تستدعي دالة myFibo نفسها بشكل متكرر لحساب رقم فيبوناتشي التالي حتى تجد رقم فيبوناتشي أكبر أو يساوي 1000000000.

1: إرجاع مرجع متغير ورقم فيبوناتشي الحالي
:: -- %

3: حد
SETLOCAL
تعيين / أ & quotNumber1 =٪

3 ومثل
تعيين / a & quotNumberN = Number1 + Number2 & quot
if / i٪ NumberN٪ LSS٪ Limit٪ call: myFibo NumberN،٪ Number1٪،٪ Limit٪
(ENDLOCAL
إذا & مثل٪

إرجاع المتغيرات المحلية - كيفية تمرير قيم الإرجاع عبر حاجز ENDLOCAL

وصف: السؤال هو: عند ترجمة دالة عبر SETLOCAL و ENDLOCAL، كيفية إرجاع قيمة تم حسابها قبل تنفيذها ENDLOCAL متي ENDLOCAL يعيد جميع المتغيرات إلى حالتها الأصلية؟
الجواب يأتي مع "التوسع المتغير". يقوم معالج الأمر بتوسيع جميع متغيرات الأمر قبل تنفيذ الأمر. السماح لمعالج الأمر بالتنفيذ ENDLOCAL و أ جلس الأمر في الحال يحل المشكلة. يمكن تجميع الأوامر بين قوسين.
النصي: تنزيل: BatchTutoFunc5.bat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@صدى خارج

set & quotaStr = لا تتوقع أي تغيير ، حتى لو استخدمت في دالة & quot
set & quotvar1 = توقع تغيير & quot
echo.aStr قبل:٪ aStr٪
echo.var1 قبل:٪ var1٪
الاتصال: myGetFunc var1
echo.aStr بعد:٪ aStr٪
echo.var1 بعد:٪ var1٪

صدى. & amppause & ampgoto: eof

::--------------------------------------------------------
:: - قسم الوظيفة يبدأ أدناه هنا
::--------------------------------------------------------

: myGetFunc - تمرير متغير حسب المرجع
SETLOCAL
تعيين & quotaStr = نصائح & مثل
(ENDLOCAL
تعيين & quot٪

1 =٪ aStr٪ & quot
)
غوتو: eof

: myGetFunc2 - تمرير متغير حسب المرجع
SETLOCAL
تعيين & quotaStr = نصائح & quot
ENDLOCAL & أمبير تعيين & quot٪

إرجاع القيم بالطريقة التقليدية - الطريقة الكلاسيكية لإرجاع القيم والقيود

إرجاع القيم عبر المراجع - دع المتصل يحدد كيفية إرجاع نتيجة الوظيفة وتجنب الحاجة إلى المتغيرات المخصصة

الملخص - تحديد تنسيق قياسي لوظيفة دفعة DOS

وصف: من خلال المعلومات التي تم تعلمها في هذا القسم ، يمكننا تحديد تنسيق قياسي لوظائف دفعة DOS كما هو موضح أدناه.
تحقق أيضًا من المجموعة الغنية لوظائف DOS الجاهزة للاستخدام التي توفرها مكتبة وظائف DosTips.com.
النصي: تنزيل: BatchFunctionTmpl.bat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
: myFunctionName - وصف الوظيفة هنا
:: -- %

1: وصف الحجة هنا
SETLOCAL
REM. - وظيفة الجسم هنا
تعيين LocalVar1 =.
تعيين LocalVar2 =.
(ENDLOCAL & amp REM - قيم الإرجاع
إذا & مثل٪


وظائف تحليلية

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

الدالات التحليلية هي آخر مجموعة من العمليات التي يتم إجراؤها في استعلام باستثناء جملة ORDER BY النهائية. يتم إكمال كل الصلات وكل عبارات WHERE و GROUP BY و HAVING قبل معالجة الدالات التحليلية. لذلك ، يمكن أن تظهر الوظائف التحليلية فقط في قائمة التحديد أو عبارة ORDER BY.

تُستخدم الوظائف التحليلية بشكل شائع لحساب المجاميع التراكمية والمتحركة والمركزة وإعداد التقارير.

تمت مناقشة دلالات بناء الجملة في الأقسام التالية.

حدد اسم دالة تحليلية (انظر قائمة الوظائف التحليلية بعد مناقشة الدلالات هذه).

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

"الأسبقية الرقمية" للحصول على معلومات حول الأسبقية الرقمية والجدول 2-10 ، "مصفوفة تحويل النوع الضمني" لمزيد من المعلومات حول التحويل الضمني

استخدم OVER analytic_clause للإشارة إلى أن الوظيفة تعمل على مجموعة نتائج استعلام. أي أنه يتم حسابه بعد جمل FROM و WHERE و GROUP BY و HAVING. يمكنك تحديد وظائف تحليلية باستخدام هذه الفقرة في قائمة التحديد أو عبارة ORDER BY. لتصفية نتائج استعلام استنادًا إلى دالة تحليلية ، قم بتداخل هذه الوظائف في الاستعلام الأصلي ، ثم قم بتصفية نتائج الاستعلام الفرعي المتداخل.

ملاحظات حول analytic_clause: تنطبق الملاحظات التالية على analytic_clause:

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

يمكنك تحديد OVER analytic_clause مع الوظائف التحليلية المحددة من قبل المستخدم بالإضافة إلى الوظائف التحليلية المضمنة. انظر إنشاء الوظيفة.

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

لاستخدام query_partition_clause في دالة تحليلية ، استخدم الفرع العلوي من بناء الجملة (بدون أقواس). لاستخدام هذه الجملة في استعلام نموذج (في model_column_clauses) أو صلة خارجية مقسمة (في external_join_clause) ، استخدم الفرع السفلي من بناء الجملة (مع أقواس).

يمكنك تحديد وظائف تحليلية متعددة في نفس الاستعلام ، ولكل منها نفس أو مفاتيح PARTITION BY مختلفة.

إذا كانت الكائنات التي يتم الاستعلام عنها لها السمة المتوازية ، وإذا قمت بتحديد وظيفة تحليلية باستخدام query_partition_clause ، فإن حسابات الوظيفة تكون متوازية أيضًا.

القيم الصالحة لـ value_expr هي ثوابت أو أعمدة أو دوال غير تحليلية أو تعبيرات دالة أو تعبيرات تتضمن أيًا من هذه.

استخدم order_by_clause لتحديد كيفية ترتيب البيانات داخل القسم. بالنسبة لجميع الوظائف التحليلية باستثناء PERCENTILE_CONT و PERCENTILE_DISC (التي تأخذ مفتاحًا واحدًا فقط) ، يمكنك ترتيب القيم في قسم على مفاتيح متعددة ، كل منها محدد بواسطة value_expr وكل منها مؤهل بتسلسل ترتيب.

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

عندما ينتج عن order_by_clause قيم متطابقة لصفوف متعددة ، تُرجع الدالة نفس النتيجة لكل من هذه الصفوف. يرجى الرجوع إلى المثال التحليلي لـ SUM للحصول على توضيح لهذا السلوك.

القيود المفروضة على فقرة ORDER BY تنطبق القيود التالية على بند ORDER BY:

عند استخدامها في دالة تحليلية ، يجب أن تأخذ order_by_clause تعبيرًا (expr). الكلمة الأساسية SIBLINGS غير صالحة (إنها ذات صلة فقط في الاستعلامات الهرمية). الموضع (الموضع) والأسماء المستعارة للعمود (c_alias) غير صالحة أيضًا. وبخلاف ذلك ، فإن order_by_clause هذا هو نفسه المستخدم في طلب الاستعلام العام أو الاستعلام الفرعي.

يمكن للدالة التحليلية التي تستخدم الكلمة الأساسية RANGE أن تستخدم مفاتيح فرز متعددة في عبارة ORDER BY الخاصة بها إذا كانت تحدد أيًا من هاتين النافذتين:

النطاق بين الصف السابق والصف الحالي غير المقيد. الشكل المختصر لهذا هو RANGE UNBOUNDED PRECEDING.

النطاق بين الصف الحالي وغير المحدود التالي. الشكل المختصر لهذا هو النطاق غير المحدود التالي.

يمكن أن تحتوي حدود النوافذ بخلاف هذين النوعين على مفتاح فرز واحد فقط في عبارة ORDER BY للوظيفة التحليلية. لا ينطبق هذا القيد على حدود النوافذ المحددة بواسطة الكلمة الأساسية ROW.

ASC | DESC حدد تسلسل الترتيب (تصاعدي أو تنازلي). ASC هو الإعداد الافتراضي.

NULLS أولا | NULLS LAST حدد ما إذا كانت الصفوف التي تم إرجاعها تحتوي على قيم خالية يجب أن تظهر أولاً أو أخيرًا في تسلسل الترتيب.

NULLS LAST هو الإعداد الافتراضي للترتيب التصاعدي ، و NULLS FIRST هو الإعداد الافتراضي للترتيب التنازلي.

تعمل الوظائف التحليلية دائمًا في الصفوف بالترتيب المحدد في order_by_clause للوظيفة. ومع ذلك ، فإن order_by_clause للوظيفة لا يضمن ترتيب النتيجة. استخدم order_by_clause من الاستعلام لضمان ترتيب النتيجة النهائية.

order_by_clause من SELECT لمزيد من المعلومات حول هذا البند

تسمح بعض الوظائف التحليلية لـ windowing_clause. في قائمة الوظائف التحليلية في نهاية هذا القسم ، تتبع الوظائف التي تسمح windowing_clause بعلامة النجمة (*).

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

تحدد ROWS النافذة بالوحدات المادية (الصفوف).

تحدد RANGE النافذة كإزاحة منطقية.

لا يمكنك تحديد هذا البند إلا إذا حددت order_by_clause. تتيح لك بعض حدود النافذة المحددة بواسطة عبارة RANGE تحديد تعبير واحد فقط في order_by_clause. يرجى الرجوع إلى "القيود المفروضة على بند ORDER BY".

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

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

إذا حذفت BETWEEN وحددت نقطة نهاية واحدة فقط ، فإن Oracle تعتبرها نقطة البداية ، ويتم تعيين نقطة النهاية افتراضيًا على الصف الحالي.

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

UNBOUNDED FOLLOWING Specify UNBOUNDED FOLLOWING to indicate that the window ends at the last row of the partition. This is the end point specification and cannot be used as a start point specification.

CURRENT ROW As a start point, CURRENT ROW specifies that the window begins at the current row or value (depending on whether you have specified ROW or RANGE , respectively). In this case the end point cannot be value_expr PRECEDING .

As an end point, CURRENT ROW specifies that the window ends at the current row or value (depending on whether you have specified ROW or RANGE , respectively). In this case the start point cannot be value_expr FOLLOWING .

value_expr PRECEDING or value_expr FOLLOWING For RANGE or ROW :

If value_expr FOLLOWING is the start point, then the end point must be value_expr FOLLOWING .

If value_expr PRECEDING is the end point, then the start point must be value_expr PRECEDING .

If you are defining a logical window defined by an interval of time in numeric format, then you may need to use conversion functions.

NUMTOYMINTERVAL and NUMTODSINTERVAL for information on converting numeric times into intervals

value_expr is a physical offset. It must be a constant or expression and must evaluate to a positive numeric value.

If value_expr is part of the start point, then it must evaluate to a row before the end point.

value_expr is a logical offset. It must be a constant or expression that evaluates to a positive numeric value or an interval literal. Please refer to "Literals" for information on interval literals.

You can specify only one expression in the order_by_clause

If value_expr evaluates to a numeric value, then the ORDER BY expr must be a numeric or DATE datatype.

If value_expr evaluates to an interval value, then the ORDER BY expr must be a DATE datatype.

If you omit the windowing_clause entirely, then the default is RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW .

Analytic functions are commonly used in data warehousing environments. In the list of analytic functions that follows, functions followed by an asterisk (*) allow the full syntax, including the windowing_clause .

Oracle Data Warehousing Guide for more information on these functions and for scenarios illustrating their use


شاهد الفيديو: كريم عبد العزيز سعيد بـ الاختيار 2 ويكشف عن المزيد من الأعمال (ديسمبر 2021).