לדלג לתוכן

NET/מערכים

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
< NET
תכנות בסביבת NET








המערך ב-NET. מממש את מבנה הנתונים הבסיסי ביותר - רצף של ערכים מאותו סוג. ישנן כמה דרכים להגדרת מערך.

מערך ריק בעל חמש מקומות:

C#:

int[] intArr = new int[5];

מערך דו מימדי בגדול של 4X6:

C#:

int[,] intArr = new int[4,6];

מערך עם ערכים מוגדרים מראש:

C#:

int[] intArr = new int[] {1, 2, 3, 4, 5};

מערך בן חמש מקומות, שרק חלקם מאותחלים:

C#:

int[5] intArr = new int[] {1, 2, 3};

מערך ב-NET. הוא בלתי ניתן לשינוי (immutable). לאחר הגדרתו, לא ניתן לשנות את גודלו, אלא את הערכים של איבריו בלבד.

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

C#:

int n = intArr[0];

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

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

C#:

Array arr = new int[5];

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

מערכים רב מימדיים

[עריכה]

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

[עריכה]

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

מערך דו מימדי בגודל של 4 עמודות ו-6 שורות:

C#:

int[,] intArr = new int[4,6];

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

נסו לשרטט בעזרת מערך דו ממדי ולולאות את לוח הכפל.

מערכים ב-VB.NET

[עריכה]

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

הגדרות של מערכים ב-VB.NET

[עריכה]

מערכים בעלי גודל קבוע

 Dim TArray(100) As String


מערכים בעלי גודל משתנה

  Dim TArray() As String

  ReDim TArray(50)

  ReDim Preserve TArray(100)

פעולות על מערכים

[עריכה]

מספר האיברים במערך:

TArray.Length - 1

מיון

 Array.Sort(TArray)

איך להסיר תכנים כפולים ממערך מחרוזתי

[עריכה]

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

VB.NET

   Public Function RemoveDuplicityItemsFromArray(ByVal SArray() As String) As String()

        Dim TArray(SArray.Length - 1) As String
        Array.Sort(SArray)
        Dim IndexT As Integer = 0
        TArray(0) = SArray(0)

        For IndexS As Integer = 0 To SArray.Length - 1
            Do Until TArray(IndexT) <> SArray(IndexS)
                IndexS += 1
                If IndexS > SArray.Length - 1 Then Exit For
            Loop
            IndexT += 1
            TArray(IndexT) = SArray(IndexS)
        Next

        ReDim Preserve TArray(IndexT)
        Return TArray
    End Function