English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستتعلم كيفية استخدام الدوال لحل نفس المشكلة بطرق مختلفة.
تتحقق هذه البرامج الأربعة من صحة عدد المستخدم كعدد أولي.
كل هذه البرامج التي تظهر هنا تنتج نفس النتيجة، ونحن نقوم بإنشاء دالة مستخدم مخصصة في كل مثال. ولكننا نستخدم طرقًا مختلفة في كل مثال.
#include <stdio.h> void checkPrimeNumber(); int main() { checkPrimeNumber(); // لا يتم تمرير أي معاملات return 0; } // نوع العودة هو void، مما يعني عدم العودة بأي قيمة void checkPrimeNumber() { int n, i, flag = 0; printf("ادخل عدد صحيح:"); scanf("%d", &n); for(i = 2; i <= n / 2; ++i) { if(n % i == 0) { flag = 1; } } if (flag == 1) printf("%d ليس عدد أولي.", n); else printf("%d هو عدد أولي.", n); }
تستقبل الدالة checkPrimeNumber() إدخال المستخدم، وتتحقق مما إذا كان هو عدد أولي، وتظهر ذلك على الشاشة.
البارانtheses الفارغة في checkPrimeNumber() داخل main() تشير إلى عدم وجود معاملات يتم تمريرها إلى الدالة.
نوع العودة للدالة هو void. لذلك، لا تعود الدالة بأي قيمة.
#include <stdio.h> int getInteger(); int main() { int n, i, flag = 0; // لم يتم تمرير أي معاملات n = getInteger(); for(i = 2; i <= n / 2; ++i) { if(n % i == 0){ flag = 1; break; } } if (flag == 1) printf("%d ليس عدد أولي.", n); else printf("%d هو عدد أولي.", n); return 0; } // يعود المستخدم بالعدد الصحيح int getInteger() { int n; printf("ادخل عدد صحيح:"); scanf("%d", &n); return n; }
n = getInteger(); الكسرة الموجودة في البارانtheses الفارغة تشير إلى عدم وجود أي معاملات يتم تمريرها إلى الدالة. وسيتم تخصيص القيمة التي يتم إرجاعها من الدالة إلى n.
في هذا السياق، تقوم دالة getInteger() باستقبال المدخلات من المستخدم وإرجاعها. يحتوي دالة main() على كود لفحص ما إذا كان الرقم هو عدد أولي.
#include <stdio.h> void checkPrimeAndDisplay(int n); int main() { int n; printf("ادخل عدد صحيح:"); scanf("%d", &n); // يتم نقل n إلى الدالة checkPrimeAndDisplay(n); return 0; } // نوع العودة هو void، مما يعني عدم العودة بأي قيمة void checkPrimeAndDisplay(int n) { int i, flag = 0; for(i = 2; i <= n / 2; ++i) { if(n % i == 0){ flag = 1; break; } } if (flag == 1) printf("%d ليس عدد أولي.", n); else printf("%d هو عدد أولي.", n); }
سيتم نقل قيمة المدخل الصحيح من المستخدم إلى دالة checkPrimeAndDisplay().
في هذا السياق، تقوم دالة checkPrimeAndDisplay() بفحص ما إذا كان المعامل المرسل هو عدد أولي، وتظهر الرسالة المناسبة.
#include <stdio.h> int checkPrimeNumber(int n); int main() { int n, flag; printf("ادخل عدد صحيح:"); scanf("%d", &n); // يتم نقل n إلى دالة checkPrimeNumber() // يتم تخصيص القيمة المعدة للمعلمة flag flag = checkPrimeNumber(n); if (flag == 1) printf("%d ليس عدد أولي.", n); else printf("%d هو عدد أولي.", n); return 0; } // من نوع دالة return int int checkPrimeNumber(int n) { int i; for(i = 2; i <= n / 2; ++i) { if(n % i == 0) return 1; } return 0; }
سيتم نقل المدخلات من المستخدم إلى دالة checkPrimeNumber().
تقوم دالة checkPrimeNumber() بفحص ما إذا كان المعامل المرسل هو عدد أولي.
إذا كان المعامل المرسل هو عدد أولي، فإن الدالة تعود بـ 0. إذا كان المعامل ليس عدد أولي، فإن الدالة تعود بـ 1. يتم تخصيص القيمة المعدة للمعلمة flag.
بناءً على ما إذا كان flag يساوي 0 أو 1، سينشر دالة main() رسالة مناسبة.
حسنًا، هذا يعتمد على المشكلة التي تريد حلها. في هذه الحالة، من الأفضل نقل المعلمات وإرجاع القيمة من الدالة (مثال 4).
يجب على الوظيفة تنفيذ مهمة محددة. لا تقبل وظيفة checkPrimeNumber() أي إدخال مستخدم، ولا تظهر أي رسائل مناسبة. إنها تتحقق فقط مما إذا كان الرقم صحيحًا.