facebook pixel מדריך: פירוט שפת תכנות - הגדרת פונקציות - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

לקוחות נכבדים, אלה שעות הפעילות של המחסן במהלך פסח 2024:
ערב חג וחג ראשון (22-23/04) - המחסן סגור
חול המועד (24-25/04) - המחסן יפעל בין 8:00 עד 15:00
ערב חג וחג שני (28-29/04) - המחסן סגור
נחזור לפעילות רגילה ביום שלישי 30/04
חג שמח!

פירוט שפת תכנות - הגדרת פונקציות


2022-06-14 09:49:58
חלוקה של התוכנית לפונקציות מאפשרת למתכנת לייצר מודולים עם קטעים של קוד שמבצעים פעולות מסוימות וחוזרים לאיזור התוכנית ממנו הם "נקראו". המקרה הטיפוסי ליצירה של פונקציה הוא כשצריך לבצע את אותה הפעולה מספר רק של פעמים בתוכנית.

לחלוקה של הקוד לפונקציות יש מספר יתרונות:
  • פונקציות מאפשרות למתכנת להיות מאורגן יותר. בדרך כלל זה עוזר למקד את התוכנית על נושאים חשובים.
  • פונקציות ממקדות פעולה אחת במקום אחד, כך שצריך להתרכז על המימוש וניפוי שגיאות רק פעם אחת.
  • מפחית סיכוי לשגיאות אחרי שינויים, אם צריך לשנות משהו, יש מקום אחד מריכז.
  • פונקציות גורמות לכל התוכנית להיות קטנה יותר מכיוון שנעשה שימוש חוזר בחלקים של הקוד.
  • פונקציות מאפשרות גם שימוש חוזר באותו הקוד בתוכניות אחרות, כך שהתוכניות נהיות מודולריות יותר. כתופעת לוואי נחמדה, השימוש בפונקציות בדרך כלל הופך את התוכנית ליותר קריאה.

בתוכנית Arduino יש שתי פונקציות שחייבות להופיע: ()setup ו-()loop. פונקציות אחרות צריכות להיות מוגדרות מחוץ לסוגריים מסולסלים ({}) של שתי פונקציות אלה. כדוגמה, ניצור פונקציה פשוטה שמכפילה שני מספרים:


כדי "לקרוא" לביצוע של הפונקציה הפשוטה שלנו, אנחנו מעבירים לה משתנים מהסוג שהיא מצפה לקבל:
קוד: בחר הכל
void loop(){
  int i = 2;
  int j = 3;
  int k;

  k = myMultiplyFunction(i, j); // k now contains 6
}


הפונקציה שלנו צריכה להיות מוצהרת מחוץ לפונקציות אחרות, כך ש-()myMultiplyFunction יכול להיות ממוקם לפני או אחרי הפונקציה ()loop.

כל התוכנית תראה כך:
קוד: בחר הכל
void setup(){
  Serial.begin(9600);
}

void loop() {
  int i = 2;
  int j = 3;
  int k;

  k = myMultiplyFunction(i, j); // k now contains 6
  Serial.println(k);
  delay(500);
}

int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}



דוגמה נוספת

פונקציה זו תקרא 5 פעמים ערך מחיישן בעזרת קריאה לפונקציה ()analogRead ותחשב מומצא של הערכים. אחרי זה הפונקציה ממירה את התוצאה לתחום של 8bit (מספרים בין 0 ל-255) והופכת את מה שיצא. הפונקציה מחזירה את התוצאה ההפוכה.
קוד: בחר הכל
int ReadSens_and_Condition(){
  int i;
  int sval = 0;

  for (i = 0; i < 5; i++){
    sval = sval + analogRead(0);    // sensor on analog pin 0
  }

  sval = sval / 5;    // average
  sval = sval / 4;    // scale to 8 bits (0 - 255)
  sval = 255 - sval;  // invert output
  return sval;
}


כדי לקרוא לפונקציה אנחנו פשוט מבצעים השמה של השם שלה למשתנה:
קוד: בחר הכל
int sens;

sens = ReadSens_and_Condition();


כמו שאתם רואים, גם אם פונקציה לא מקבלת פרמטרים, עדיין צריך להצמיד לה את הסוגריים "(" ו-")" וגם ";" בסוף.


ראו גם:

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של Functions לפי רישיון Creative Commons Attribution-ShareAlike 3.0.