NET/מערכים
תכנות בסביבת NET |
---|
|
המערך ב-NET. מממש את מבנה הנתונים הבסיסי ביותר - רצף של ערכים מאותו סוג. ישנן כמה דרכים להגדרת מערך.
מערך ריק בעל חמש מקומות:
C#:
מערך דו מימדי בגדול של 4X6:
C#:
מערך עם ערכים מוגדרים מראש:
C#:
מערך בן חמש מקומות, שרק חלקם מאותחלים:
C#:
מערך ב-NET. הוא בלתי ניתן לשינוי (immutable). לאחר הגדרתו, לא ניתן לשנות את גודלו, אלא את הערכים של איבריו בלבד.
בדומה לשפות אחרות ממשפחת שפת C, גם ב-#C הגישה אל איברים במערך נעשית בעזרת אינדקס, כאשר האיבר הראשון ממוספר באפס. כדי לקבל את האיבר הראשון במערך שהוגדר לעיל, נכתוב
C#:
כמו במשתנים רגילים, גם מערכים לא מחזיקים את האובייקט עצמו, אלא רק התייחסות למיקומו בזיכרון.
כל המערכים ב-NET. הם למעשה אובייקטים של המחלקה System.Array. מחלקה זו מממשת את הממשקים IList ו-IEnumerable הנפוצים במחלקות מבני הנתונים של NET. משתנה מסוג מערך מכיל את השגרות של מחלקה זו. המחלקה גם מכילה מספר שגרות סטטיות שניתן להפעיל על משתני מערך, כדי להשיג מידע עליהם. למעשה תיאורטית ניתן להשתמש ישירות במחלקה Array
, אך היא אינה מכילה בנאי, וניתן ליצור אובייקט שלה רק באחת הדרכים שהוזכרו למעלה. למשל, ההגדרה הבאה היא הגדרה חוקית:
C#:
אך בדרך כלל לא נשתמש בצורה זו. בין היתר, משום שלא ניתן לגשת לאיבר מסויים בעזרת האינדקס המתואר לעיל, אלא רק בעזרת השגרה Array.GetValue.
מערכים רב מימדיים
[עריכה]מערכים מרובעים
[עריכה]בנוסף למערך חד מימדי, שהוא סדרה יחידה של נתונים כמתואר לעיל, ניתן לבנות גם מערכים רב מימדיים. למשל, מערך דו מימדי הוא מערך ריבועי בן מספר שורות ומספר עמודות. כל איבר במערך זה מיוצג על ידיי שני אינדקסים - מספר השורה שלו ומספר העמודה שלו.
מערך דו מימדי בגודל של 4 עמודות ו-6 שורות:
C#:
באותו אופן, ניתן להגדיר מערך תלת מימדי, או בכל מספר רצוי של מימדים. מערכים בני יותר משלוש מימדים קשה יותר להקביל למושגי אורך, רוחב ועומק, אך מבחינה מתמטית, אין מניעה מלהשתמש בהם.
נסו לשרטט בעזרת מערך דו ממדי ולולאות את לוח הכפל.
מערכים ב-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