גישה לאיברי מערך דו־ממדי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 3 מתוך 66.
הגישה לאיברים במערך דו־ממדי משתמשת בתחביר דומה לזה של מערכים רגילים, אך דורשת שני אינדקסים: אחד לשורה ואחד לעמודה.
הערה: ב־C# יש שני סוגים של מערכים רב־ממדיים: מערכים מלבניים (int[,]) ומערכים משוננים (int[][]). השיעור הזה עוסק במערכים משוננים, שבהם כל שורה היא מערך בפני עצמה.
צרו מערך משונן עם 3 שורות ו־4 עמודות:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];השמה של ערך במיקום ספציפי (אינדקס שורה 1, אינדקס עמודה 2):
grid[1][2] = 42;קרא ערך ממיקום מסוים (אינדקס שורה 0, אינדקס עמודה 3):
int value = grid[0][3];מכיוון שהאינדקסים מתחילים ב־0, אינדקס שורה 0 הוא השורה הראשונה ואינדקס עמודה 3 הוא העמודה הרביעית.
זכור שמדדי מערך מתחילים ב־0, ולכן טווחי המדדים התקינים הם:
- שורות: מדד 0 עד 2 (עבור מערך עם 3 שורות: השורה הראשונה היא במדד 0, השנייה במדד 1 והשלישית במדד 2)
- עמודות: מדד 0 עד 3 (עבור מערך עם 4 עמודות: העמודה הראשונה היא במדד 0, השנייה במדד 1 וכן הלאה)
grid[3][2]), תקבל IndexOutOfRangeException.אתגר
בינוניכתבו מתודה בשם getElement שמקבלת שלושה ארגומנטים:
- מערך דו־ממדי של מספרים שלמים (
int[][] matrix) - אינדקס של שורה (
int row) - אינדקס של עמודה (
int col)
המתודה צריכה להחזיר את האיבר במיקום שצוין אם האינדקסים תקינים. אם אחד האינדקסים מחוץ לטווח, המתודה צריכה להחזיר -1.
נסו בעצמכם
public class GetElement
{
public static int getElement(int[][] array, int row, int col)
{
// כתבו את הקוד שלכם כאן
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין