» נושאי לימוד
» נושאי לימוד
יום ראשון 22 בדצמבר 2024
case במבנה רשומה משתנה
דף ראשי  פרק 4: נושאים מתקדמים בפסקל  רשומות  case במבנה רשומה משתנה גרסה להדפסה

case  במבנה רשומה משתנה

 

נסתכל על הצהרת הרשומה הבאה העוסקת בצורות גיאומטריות:

 

 

 

ממבנה case זה בתוך רשומה, ניתן להבחין כי אפשר להגדיר רשומה באורך משתנה ובמספר שדות שונים.

תוכן השדה KIND הוא שיקבע איזה סוג רשומה זו.

 

בעצם, הגדרנו שלושה סוגי רשומות שונות (שיכולות להיכתב לקובץ אחד) תחת השם GEOMETRIC_STRUCTURE.

 

 אפשרויות הרשומה לפי KIND הן:

 

                

 

 

 

        

 

מבנה  case בתוך רשומה:

 

הצהרת שם=
               record
 
                   סוג:   שם השדה;
                   סוג:   שם השדה;
                   סוג:   שם השדה;
                         • 
                         • 
                         • 
                  סוג:   שם השדה;

 

               case  סוג:   שם השדה  of
                         סוג:שם שדה,שם שדה):קבוע);
                         סוג:שם שדה,שם שדה):קבוע);
                         סוג:שם שדה,שם שדה):קבוע);
                                 • 
                                 • 
                                 • 
                         סוג:שם שדה,שם שדה):קבוע);
               end;

*     ניתן להגדיר רק case אחד ברשומה.

*     לקבוע אחד ניתן להגדיר רק סוג אחד של משתנה.

*     בין המשתנים יופיעו פסיקים.

 

דוגמא:

כתוב תת-תוכנית הקוראת מקובץ קלט נתוני מבנים גיאומטריים ומדפיסה את שטחם של הצורות הגיאומטריות.

 

פתרון:

 

program NAME;

type

   GEOMETRIC_STRUCTURE = (* רשומה של צורות גיאומטריות *)

   record

      X,Y : real ; (* מיקום הצורה הגיאומטרית *)

      case KIND: string[10] of  (* איזו צורה גיאומטרית *)

            { מלבן }

      'RECTANGLE' : (HEIGHT,WIDTH: real); (* גובה ורוחב*)

            { משולש }

      'TRIANGLE' : (A,B,C: real);  (* צלעות המשולש *)

             { מעגל }

      'CIRCLE ' : (RADIUS: integer);  (* רדיוס המעגל *)

   end;  (* וגם את הרשומה case סוגר גם את ה- *)

 

INPUT_FILE = file of GEOMETRIC_STRUCTURE;

     ·       

     ·          קטע הבא לפני תת תוכנית זו

     ·       

 

procedure ARIA (var FILE_IN: INPUT_FILE)

   { תת תוכנית להדפסת שטח מצולעים}

   (* FILE_IN – קובץ הקלט *)

var

   INPUT_RECORD: GEOMETRIC_STRUCTURE;

                    (*הרשומה מקובץ הקלט *)

   S : real;  (* משתנה עזר לחישוב שטח המשולש *)

begin

   while not eof (FILE_IN) do  (* המשך עד סוף הקובץ *)

   begin

      read (FILE_IN, INPUT_RECORD); (* קרא רשומה *)

      with INPUT_RECORD do  (* ועם שדות הרשומה *)

      begin

         if KIND = 'RECTANGLE' then

   (* אך זה אסור, case לכאורה היה מתאים להשתמש ב- *)

   (* כיוון שהמשתנה צריך להיות מסוג שלם, בוליאני או תווי *)

            writeln (HEIGHT * WIDTH , '=שטח המלבן');

         if KIND = ' TRIANGLE' then

         begin

            S:= (A+B+C)/2;

            S:= sqrt ( S * (S-A) * (S-B) * (S-C) );

            writeln(S, ' = שטח המשולש');

         end;

         if KIND = 'CIRCLE' then

           writeln (3.14 * RADIUS * RADIUS, '= שטח המעגל');

     end;

  end;

end;

      ·       

      ·        קטע הבא אחרי תת תוכנית זו

      ·       

 

 23-03-04 / 22:36  עודכן ,  03-09-03 / 22:20  נוצר ע"י כפיר מרגי  בתאריך 
 with בפניה לשדה ברשומה - הקודםהבא - בחן את עצמך 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 14