c programming tutorial - בקלות C++
מדריכי תכנות

שיעור 8: יסודות במערכים

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

חשוב על מערכים כך:

[][][][][][]

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

בואו נסתכל על המבנה של הגדרה של מערך:

int examplearray[100]; //זה מגדיר מערך

זה ייצור מערך של מספרים שלמים עם 100 משבצות, או מקומות לשים בהם ערכים (נקראים גם אלמנטים). כדי לגשת לאלמנט מסוים של המערך, אתה פשוט כותב את שם המערך ובסוגריים, מספר אינדקס. זה מתאים לאלמנט ספציפי של המערך. הטריק היחיד הוא שמספר האינדקס הראשון, ולכן האלמנט הראשון, הוא אפס, והאחרון הוא מספר האלמנטים פחות אחד. 0-99 במערך של 100 אלמנטים, לדוגמא.

מה אתה יכול לעשות עם הידע הפשוט הזה? נניח שאתה רוצה לאחסן מחרוזת, כיוון של ++C אין טיפוס נתונים בנוי בשפה למחרוזות, לפחות ב DOS, ניתן ליצור מערך של תווים.

לדוגמא:

chat astring[100];

יאפשר לך להגדיר מערך תווים של 100 אלמנטים, או משבצות. לאחר מכן אתה יכול לקבל קלט לתוכו מהמשתמש, ואם המשתמש מדפיס מחרוזת ארוכה, היא תכנס למערך. הדבר הנהדר הוא שקל מאוד לעבור עם מחרוזות בדרך זו, ויש אפילו קובץ כותרת בשם string.h. יש שיעור נוסף על השימושים של string.h, כך שזה לא הכרחי לדון בזה כאן.

ההיבט השימושי ביותר של מערכים הוא מערכים רבי ממדים.

הדרך בה אני חושב על מערכים רבי ממדים.

[][][][][]
[][][][][]
[][][][][]
[][][][][]
[][][][][]

זהו תרשים של איך נראה מערך דו ממדי כאשר אני מדמיין אותו.

לדוגמא:

int twodimensionalarray[8][8];

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

מתייחסים למערכים כמו כל משתנה אחר ברוב הצורות. ניתן לשנות ערך אחד בתוכו על ידי כתיבה:

משהו=[מספר_אינדקס_במערך]שם_המערך;

או, למערך דו-ממדי:

משהו=[מספר_אינדקס_במערך2][מספר_אינדקס_במערך1]שם_המערך;

אולם, אל תנסה אף פעם לכתוב נתונים מעבר לאלמנט האחרון של המערך, למשל כאשר יש לך מערך של 10 אלמנטים, ואתה מנסה לכתוב לאלמנט ה 11. הזיכרון למערך שהוקצה לו יהיה רק עשרה מקומות בזיכרון, אבל המקום האחד-עשר יכול להיות כל דבר, וזה יכול להפיל את המחשב שלך.

תמצא דברים שימושיים רבים לעשות עם מערכים, החל מלאחסן מידע לגבי דברים מסוימים, וכלה ביצירת משחקים כמו איקס-מיקס-דריקס. הצעה אחת שיש לי היא להשתמש בלולאות for כאשר ניגשים למערכים.

#include <iostream.h>

int main()
{
  int x, y, anarray[8][8];//declares an array like a chessboard
  for(x=0; x<8; x++)
  {
    for(y=0; y<8; y++)
    {
      anarray[x][y]=0;
	//sets the element to zero; after the loop all elements == 0
    }
  }
  for(x=0; x<8;x++)
  {
    for(y=0; y<8; y++)
    {
cout<<"anarray["<<x<<"]["<<y<<"]="<<anarray[x][y]<<" ";//you'll see
    } 
  }
 return 0;
}

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

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

char *ptr;
char str[40];
ptr=str; //gives the memory address without a reference operator(&)

בניגוד ל

int *ptr;
int num;
ptr=&num;//Requires & to give the memory address to the ptr



לדף הראשון

<< לדף הקודם

לדף הבא >>