Rust/מערכים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
יצירת דף עם התוכן "{{Rust}} בשיעור זה נלמד על '''מערכים'''. מערך הוא מבנה נתונים שמאפשר שמירה של משתנים רבים מאותו..."
(אין הבדלים)

גרסה מ־22:34, 1 ביוני 2019

Rust

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

מהו מערך?

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

בתרשים הבא, לדוגמה, מוצג המשתנה grade, שהוא כעין תיבה (המורכבת משני בתים, לצורך העניין מסוג u16), ובתוכה כעת המספר 80. בתרשים גם מוצג המערך grades, מערך באורך ארבע, שהוא כעין שורה של ארבע תיבות (שכל אחת מהן מורכבת משני בתים), ובתיבות כעת המספרים 90, 80, 56, ו-100.

 
משתנה ומערך

הגדרת מערך

הצהרה על מערך תעשה בצורה הבאה:

let <name>: [<type>; <size>] = [ <values> ];

כאשר name הוא השם שאנו בוחרים למערך כולו, type הוא סוג המשתנה של המערך ו-size (שחייב להיות מספר שלם חיובי) הוא מספר האיברים שיכיל המערך. values הם האיברים שאנחנו נשים בכל אחד מתאי המערך והם יופרדו ביניהם בפסיקים, אשר יעטפו סוגריים מרובעות.

נתבונן בדוגמת הקוד הבאה:

let array1: [char; 3] = ['a', 'b', 'c'] ;
let array2 = [1, 2, 3];
let mut array3: [f64; 10];
  1. השורה הראשונה מכריזה על מערך של תווים בשם array1 שיש בו שלושה האיברים. האיבר הראשון הוא 'a', האיבר השני הוא 'b' והאיבר השלישי הוא 'c'. שימו לב שהמערך מוגדר כ-immutable כברירת מחדל ולכן לא נוכל לשנות את איברי המערך.
  2. השורה השנייה מכריזה על מערך של מספרים שלמים בשם array2 שבו שלושה איברים. שימו לב שלא חובה לציין את גודל המערך ואת סוג המשתנה מפני שכאשר מאתחלים את האיברים של המערך, הקומפיילר יודע לזהות את הסוג שלו ואת הגודל אוטומטית.
  3. השורה השלישית מכריזה על מערך של מספרי עשרוניים (float) בשם array3. בדוגמה זו איננו מאתחלים את איברי המערך. שימו לב שבניגוד לשתי הדוגמאות האחרות איברי המערך מוגדרים כ-muttable ולכן נוכל לשנות אותם במהלך התוכנית. כמו כן, חובה לציין את סוג המערך (במקרה זה f64) ואת הגודל שלו (10), כדי שהקומפיילר כמה מקום בזיכרון להקצות.