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

העגלה ריקה

פירוט שפת תכנות - arrays (מערכים)


2022-06-14 10:43:54
מערך (array) הוא אוסף של משתנים שאפשר לגשת אליהם עם מספר מפתח (index). מערכים בשפת C, שעליה מתבוססת Arduino, יכולים להיות די מסורבלים, אבל שימוש במערכים פשוטים הוא יחסית מובן.

הגדרה של מערך (Declaring an array)

כל השיטות הבאות הן דרכים להגדרה או יצירה של מערך.
קוד: בחר הכל
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";

אתם יכולים להגדיר מערך ללא אתחול של הערכים שלו כמו במקרה של myInts.
במקרה של myPins אנחנו מגדירים מערך ללא ציון מפורש של הגודל שלו. המהדר (compiler) סופר את מספר הערכים ומייצר את המערך בגודל המתאים.
אתם יכולים גם להגדיר את גודל המערך וגם את הערכים שימלאו אותו, כמו במקרה של mySensVals.
שימו לב כי במקרה של הגדרת מערך של תווים צריך להשאיר מקום אחד נוסף לסיומת ה-NULL.

גישה למערך

מיקום המשתנים במערך מתחילים במיקום 0, כך שאם נקח את מערך ה-mySensVals מדוגמאות הגדרות המערכים, הערך הראשון של המערך יהיה במיקום 0, לדוגמה mySensVals[0] == 2, הערך השני יהיה במיקום 1, לדוגמה mySensVals[1] == 4 וכך הלאה.
זה גם אומר שבמערך של 10 תאים, המשתנה התשיעי הוא האחרון. לדוגמה:
קוד: בחר הכל
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
     // myArray[9]    contains 11
     // myArray[10]   is invalid and contains random information (other memory address)

תא במיקום 9 מכיל ערך 11. גישה לתא מספר 10 היא לא חוקית ותכלול ערכים אקראיים (זהו איזור זכרון של משתנים אחרים).

מסיבה זו צריך להיזהר עם גישות למערכים. גישה לתאים של המערך מעבר לגודל שלה (הגודל שהגדרתם פחות אחד) תקרא את הזכרון שנועד לצרכים אחרים ולא למערך עצמו. קריאה של זכרון ממקומות כאלה כנראה שלא תגרום לנזק, חוץ מלהחזיר ערכים לא הגיוניים. כתיבה לזכרון אקראי הוא רעיון בהחלט לא טוב ויכול להוביל לתוצאות לא משמחות כמו התרסקות או פעילות לא רצויה של התוכנית. זה יכול גם להוביל לבעיות בתוכנה שיהיה קשה לאתר.
בניגוד לשפות תכנות כמו BASIC או Java, מהדר של שפת C לא בודק שהגישות למערך נעשות בגבולות המותרות של הגודל שהגדרתם למערך.

השמה של ערך בתא של מערך:

קוד: בחר הכל
mySensVals[0] = 10;


קריאה של ערך מתא של מערך:

קוד: בחר הכל
x = mySensVals[4];


מערכים ולולאות FOR:

גישות למערכים מטופלות לעתים קרובות בתוך לולאות FOR, כאשר המונה של הלולאה משמש כמספר מפתח (index) של המערך. לדוגמה, כדי להדפיס את ערכי המערך לתקשורת טורית תוכלו להשתמש בקוד הבא:
קוד: בחר הכל
int i;
for (i = 0; i < 5; i = i + 1) {
  Serial.println(myPins);
}


דוגמה

לתוכנית שלמה המדגימה את השימוש במערכים, ראו דוגמה Knight Rider (קישור TODO) ממחלקת הדוגמאות.

ראו גם:

הגדרת משתנים
PROGMEM

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


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