Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

מבוא לשפות תכנות באמצעות שפת C פרק 12 – מערכים Arrays

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


#include <stdio.h>

int main() {
int number1;
int number2;
int number3;
int number4;
int number5;

number1 = 10;
number2 = 20;
number3 = 30;
number4 = 40;
number5 = 50;

printf( "number1: %d\n", number1);
printf( "number2: %d\n", number2);
printf( "number3: %d\n", number3);
printf( "number4: %d\n", number4);
printf( "number5: %d\n", number5);
}

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

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

 

טבלה מערכים
טבלה מערכים

 

הקמת מערכים Arrays 

על מנת להקים מערך array בשפת C, על המתכנת להגדיר את סוג המשתנים, ואת כמות המשתנים. לפניכם דוגמה פשוטה להקמת מערך array בשפת C:


type arrayName [ arraySize ];

דוגמה זו נקראת מערך חד מימדי, כאשר ה-arraySize הוא כמות המשתנים, ערך זה חייב להיות גדול מ-0, ו-type הוא סוג המשתנים, שיכול להיות סוג אחד מכל סוגי הנתונים האפשריים בשפת C. לדוגמה אם נרצה להקים מערך של 10 אלמנטים שנקרא number והוא מכיל משתנים מסוג int, אז נשתמש בביטוי הבא:


int number[10];

בדוגמה שמעל number הוא משתנה array אשר מכיל 10 מספרים מסוג int.

אתחול מערכים arrays

בשפת C ניתן לאתחל מערך על ידי כתיבת הערכים אחד אחד, או בשורת קוד אחת כפי שניתן לראות בדוגמה הבאה:


int number[5] = {10, 20, 30, 40, 50};

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


int number[] = {10, 20, 30, 40, 50};

בדוגמה הבאה נזין ערך אחד בלבד למערך:


number[4] = 50;

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

 

טבלה מערכים 1
טבלה מערכים 1

 

שימוש במערכים arrays

ניתן לגשת לאלמנטים שנמצאים בתוך המערך על ידי שימוש בשם המערך ואחריו את מיקום האלמנט בתוך סוגריים מרובעות [ ]:


int var = number[9];

הביטוי שמעל ייקח את האלמנט העשירי מתוך המערך number ויזין אותו לתוך משתנה בשם var מסוג int. בדוגמה הבאה נשתמש בכל הכלים שלמדנו בפרק זה על מנת לכתוב תוכנית בשפת C שמשתמשת במערכים arrays:


#include <stdio.h>

int main () {
int number[10]; /* number is an array of 10 integers */
int i = 0;

/* Initialize elements of array n to 0 */
while( i < 10 ) {

/* Set element at location i to i + 100 */
number[ i ] = i + 100;
i = i + 1;
}

/* Output each array element's value */
i = 0;
while( i < 10 ) {

printf("number[%d] = %d\n", i, number[i] );
i = i + 1;
}

return 0;
}

וכשנריץ את התוכנית נקבל את התוצאה הבאה:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

מערכים arrays בשפת Java

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


public class Main {
public static void main(String []args) {
int[] number = new int[10];
int i = 0;

while( i < 10 ) {

number[ i ] = i + 100;
i = i + 1;
}

i = 0;
while( i < 10 ) {
System.out.format( "number[%d] = %d\n", i, number[i] );
i = i + 1;
}
}
}

על מנת שנקבל את התוצאה הרצויה:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

מערכים arrays בשפת Python

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


# Following defines an empty list.
number = []
i = 0

while i < 10:
# Appending elements in the list
number.append(i + 100)
i = i + 1

i = 0
while i < 10:
# Accessing elements from the list
print ("number[", i, "] = ", number[ i ])
i = i + 1

על מנת שנקבל את התוצאה הרצויה:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109
הזמינו אותי לכוס קפה
buy me coffee

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

ניתן לתרום 10, 15, 20 או כל סכום אחר שתרצו באמצעות כרטיס אשראי \ Paypal

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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