תכנות נומרי עם Matlab ו-Octave/רשומות



רשומה (struct) היא סוג של רשימה המכילה תאים (מכל הסוגים!!).

רשומה טובה לניהול נתונים בצורה מסודרת.


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



בניית רשומה

עריכה

נבנה רשומה של עובד הכוללת את שמו , גילו והמשכורת. נאתחל עם הפקודה struct .

octave:77> worker=struct('name','avi','age',44,'salary',5000)
worker =
{
  name = avi
  age =  44
  salary =  5000
}

יש לנו רשומה בשם worker עם תא בודד בתוכו קיימים השדות "name" "age "salary

אופס, העובד avi בעצם בן 42 והמשכורת שלו עלתה. נשנה את השדות האלו.

octave:51> worker.age=42;
octave:52> worker.salary=6000
worker =
{
  name = avi
  age =  42
  salary =  6000
}

עכשיו נפנה לשדה name ולשדה age

octave:53> worker.name
ans = avi
octave:54> worker.age
ans =  42

אבל אבי אינו העובד היחיד. נוסיף עוד אחד.

octave:55> worker(2).name='tom';
octave:56> worker(2).age=29;
octave:57> worker(2).salary=4500;
octave:58> worker
worker =
{
  name =

  (,
    [1] = avi
    [2] = tom
  ,)

  age =

  (,
    [1] =  42
    [2] =  29
  ,)

  salary =

  (,
    [1] =  6000
    [2] =  4500
  ,)

}

ואם נרצה להוסיף את כל העובדים בחברה?

נשתמש בלולאת for. לדוגמה לחברה בת 5 עובדים:

octave:59> for i=3:5
> worker(i).name=input('insert name ','s');%char type!
> worker(i).age=input('insert age ');
> worker(i).salary=input('insert salary ');
> end
 

כדאי לדעת:

שימו לב שהתחלנו את הלולאה מהמקום ה- 3 , יש לנו כבר 2 עובדים רשומים

ניתן לבנות תתי רשומות (או תתי שדות)


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



פונקציות לרשומות

עריכה

יצירת מבנה או בניית רשומה. ראו דוגמה למעלה.

fieldname

עריכה

הפונקציה מחזירה את השמות של שדות הרשומה.

 fieldnames(worker)
ans =

{
  [1,1] = name
  [2,1] = age
  [3,1] = salary
}

מחיקת שדות ברשומה. שימו לב שצריך להציב לתוך הרשומה.

octave:68> worker=rmfield(worker,'age');
octave:69> fieldnames(worker)
ans =

{
  [1,1] = name
  [2,1] = salary
}




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

מבנה הפונקציה:

isfield (EXPR, NAME)

כאשר EXPR הוא מסוג רשומה ו NAME הוא מחרוזת.

isstruct

עריכה

פונקציה לוגית המחזירה 1 אם הפרמטר הוא מסוג רשומה ו-0 אם לא.


הפרק הקודם:
מספרים מרוכבים
רשומות הפרק הבא:
מערך תאים