פירוט שפת תכנות - הגדרת משתנים - static

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

פירוט שפת תכנות - הגדרת משתנים - static

הודעהעל ידי Alex » ב' יולי 17, 2017 2:31 pm

משתמשים במילת מפתח static כדי להגדיר משתנה שאפשר לגשת אליו רק מפונקציה אחת, אבל בשונה ממשתנה מקומי (local variable) שנוצר ונהרס בכל פעם שקוראים לפונקציה בה הוא מוגדר, משתנה שהוגדר כ-static מתקיים גם מעבר לפונקציה ושומר על הנתונים בין הקריאות לפונקציה.

משתנים שהוגדרו כ-static נוצרים ומאותחלים רק בפעם הראשונה שהפונקציה בה הם הוגדרו נקראת.

דוגמה
קוד: בחר הכל
/* RandomWalk
* Paul Badger 2007
* RandomWalk wanders up and down randomly between two
* endpoints. The maximum move in one loop is governed by
* the parameter "stepsize".
* A static variable is moved up and down a random amount.
* This technique is also known as "pink noise" and "drunken walk".
*/

#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;

int thisTime;
int total;

void setup()
{
  Serial.begin(9600);
}

void loop()
{        //  tetst randomWalk function
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
   delay(10);
}

int randomWalk(int moveSize){
  static int  place;     // variable to store value in random walk - declared static so that it stores
                         // values in between function calls, but no other functions can change its value

  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange){                    // check lower and upper limits
    place = place + (randomWalkLowRange - place);     // reflect number back in positive direction
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     // reflect number back in negative direction
  }

  return place;
}


ראו גם:
פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של Static לפי רישיון Creative Commons Attribution-ShareAlike 3.0.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7890
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]