שאלה

שאלה../images/Emo9.gif../images/Emo53.gif

יש לי בעוד יומיים מגן במחשבים ותהיה שם שאלה בפרק השלישי (שפת פסקל) עם פירוק לתתי-משימות. מכיוון שבכלל לא תרגלנו פירוק עם המורה שלנו, יש מצב שתוכלו לפתור בצורה של פירוק לתתי-משימות את השאלות 9 ו10 בפרק השלישי ואז אני אבין מה אמורים לעשות
{אפילו שלא מבקשים שם פירוק, סתם כדי שאני אדע
} תודה רבה
 

vinney

Well-known member
פירוק למשימות

הכוונה היא לכתוב פרוצדורות ופונקציות שמבצעות את הדרוש, ולא לכתוב הכל ברצף אחד, זה הכל. השאלות נורא פשוטות, אתה בטוח שאתה לא יכול להסתדר איתן?
 
לא רק

זה אמור להיות גם עם טבלת משתנים וטענות כניסה ויציאה ואין לי פשוט שמץ על מה הוא יכול להוריד לי נקודות, ומה הסדר בדיוק של כל מה שאמורים לעשות... וחבל לקבל במגן כזה פחות מ95
 
מצטער על הבורות, אבל...../images/Emo26.gif

מה זה "טענות כניסה ויציאה" (pre/post conditions
)? ומה זה "טבלת משתנים"?
 

ררדד

New member
הסבר

טבלת משתנים זה טבלה שהעמודות שלה זה: שם המשתנה,טיפוס ותפקיד (מכניסים רק משתנים עיקריים ולא את הI/J של הלולאות למשל). תתי משימות זה לפרק את מה שצריך לעשות בתוכנית ככה שכל פעולה תתבצע בפונקציה או פרוצדורה נפרדת, גם אם נוח לקלוט ולחשב לדוגמה באותה אחת- חייבים בנפרדות. טענות כניסה ויציאה זה מתחת לכותרת השגרה (פונ'/פרו') כותבים מה תפקידה: מה היא מקבת כפרמטרים, מה היא מחזירה/מחשבת/מדפיסה וכו'. בתתי משימות פשוט חייבים במילים להסביר מה כל שגרה עושה ולהעתיק מהתוכנית את הטענות כניסה ויציאה שלה ככה שיהיה מסודר לבודקים..
 
אני לא בטוח שלזה הכוונה...../images/Emo26.gif

"טבלת מעקב" זה לא ל"הרצה יבשה"?... כלומר, אתה כותב מה מכיל כל משתנה בזמן ריצה?... לפי מה שהוא מתאר "טבלת משתנים", זה פשוט תיעוד שנותן הסבר מה תפקידו של כל משתנה... (בלי ערכים ספציפיים)... [או שלא?...
]
 
אוריארד...אתה צודק ../images/Emo13.gif

טבלת מעקב זו הדרך שלך לבדוק "על יבש" שהתוכנית באמת מבצעת את מה שאתה רוצה. אתה כותב בכל שורה של התוכנית מה כל משתנה מכיל (וכאן אתה רושם גם את מוני הלולאה!). "טבלת משתנים"? זה נקרא "הצהרת משתנים" בשפה הנורמלית
אתה כותב ככה: שם משתנה- תפקיד, טיפוס נתונים, גודל אם יש. בהצהרת המשתנים אתה אמור לרשום הצהרות Type, Var, Const אם יש לך ואת כל המשתנים החשובים בתוכנית. חלוקה לתת משימות (כמו שאחרים אמרו...ככה כותבים): משימה + כותרת הפונקציה או הפרוצדורה+ טכנת כניסה ויציאה. דוגמא: |כוכב| קליטת הנתונים. טענת כניסה: הפרוצדורה מקבלת כקלט מערך A ריק. טענת יציאה: הפרוצדורה מחזירה את המערך A מלא בבחירת התלמידים (לדוגמא).
Procedure Kelet (var a:ar);​
ככה עושים לכל משינה שיש לך. בתוכנית עמצה אין צורך לחזור על טענות הכניסה והיציאה.
 
אם יש לי../images/Emo61.gif../images/Emo80.gif../images/Emo96.gif

משתנה מסוג סטרינג אז מה הטווח שלו
ואם נתון לי מערך עם מספרים ואני צריכה להשתמש בו בפרוצדורה אז איפה אני צריכה להגדיר אותו, כי בתכלס הוא נתון לי ואני משתמשת בו בלי לקלוט אליו כלום...
 
אז ככה: ../images/Emo13.gif

משתנה מסוג string: יש לזה שתי אפשרויות: 1. או שאת לא מגדירה גודל ואז הגודל הוא 255 תאים (מקסימום):
St : string ;​
כאן הגדרתי מחרוזת בשם ST בגודל מקסימלי של 255. 2. אם אני יודע מה הגודל המקסימלי שאפשר להכניס לתוך המחרוזת ואני רוצה לחסוך בזיכרון אז מגדירים מקום ככה:
St: string[25];​
כאן הגדרתי את המחרוזת ST בגודל של 25 תאים בלבד. מערך שאת משתמשת בו בפרוצדורה נכנס בטענת הכניסה: {טענת כניסה: הפרוצדורה מקבלת כקלט מערך מספרים A וכו'..}
דבר אחרון שאולי את לא יודעת- אם את משתמשת במערך ובמחרוזות בפרוצדורה- את חייבת להגיד אותם ב Type. למשל:
Type Ar= array [1..10] of integer; St_type = string; Var A:ar; St:st_type;​
אם לא תגדירי את הטיפוסים האלה ב type אז לא תוכלי להכניס אותם לפונקציה/ פרוצדורה.
 
כן את זה אני יודעת הכוונה שלי הייתה

בטבלת המשתנים יש עמודה של הגדרת טווח, אז מה לרשום שם
כמה תאים הטווח יכול להיות
ואם אני צריכה לכתוב תכנית שלמה כולל כל הפרוצדורות והפונקציות וכולל התכנית הראשית, אז איך אני אתייחס למערך הנתון בשאלה, מאיפה להתחיל להתייחס אילו, להגדיר אותו אחרי הVAR
ואח"כ פשוט להתייחס אליו כעובדה קיימת
 
OK...אני אנסה לענות.. ../images/Emo13.gif

אם הבנתי נכון בכלל
אם יש לך מחרוזת בגודל 25 (את קבעת את זה)- אז תכתבי ככה: St, מחרוזת בגודל 25. או אם זה מערך בעל 10 תאים המכילים מספרים שלמים: A, מערך בגודל 10 המכיל מספרים שלמים (INTEGER).
הטווח המקסימלי של מחרוזת הוא 255. הגודל המקסימלי של מערך הוא 256 תאים.
אם את כותבת תוכנית שלמה- ואת המערך A את מכניסה לתוך פונצקיה או פרוצדורה כפרמטר
אזי שאת חייבת להגדיר את טיפוס הנתונים של המערך ב Type! דוגמא להגדרה כזו יש בהודעה הקודמת שלי. את מגדירה array_type כטיפוס חדש ואז ב Var את מכריזה על
A: array_type;​
ורק ככה את יכולה להכניס את A לתוך פונקציה/פרוצדורה. הגדרת משתנים את עושה רק פעם אחת בתחילת התוכנית (או לפי ההוראות..איפה שהם רוצים). אם תרצי אני אנסה למצוא זמן ואפתור תרגיל שלם בחלק ג' מההתחלה ועד הסוף. יותר מאוחר..
 
לא... אני יודעת מה זה TYPE../images/Emo9.gif

אני מתכוונת, יש לי מערך נתון בשאלה, לדוגמא בגודל 10 שמכיל נניח מספרים בסדר עולה מ1 עד 10. המערך הזה נתון, אני לא צריכה לקלוט לתוכו. אבל אני רוצה נניח להגדיל את כל איבריו ב1... אז מה אני אתייחס למערך הזה כעובדה קיימת ככה
, בלי להגדיר אותו אחרי הVAR או עם להגדיר וזהו
{כמו בדוגמה מתחת} וחוצמזה, אני צריכה פשוט להניח שהתכנית יודעת שהתוכן של המערך הוא התוכן הנתון לעיל, כי זה לא הגיוני שאני צריכה לקלוט אותו מחדש לפי הדוגמא שנתנו
 
אההההה- עכשיו הבנתי... ../images/Emo13.gif ../images/Emo8.gif

את חייבת להגדיר אותו ב Var- כמובן. מה שכן- אם כתוב לך בשאלה "נתון מערך..."- אז את לא צריכה לקלוט אותו (זה הכל). בכל מקרה את חייבת לרשום אותו ב Var.
 

ררדד

New member
אתה טועה

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

ררדד

New member
תגיד את זה למשרד החינוך

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

vinney

Well-known member
תשמע... תראה...

אני ממש לא יודע מה מלמדים בבתי ספר, בדרך כלל זה שטויות. תיעוד זה חלק מאוד חשוב בכתיבת התוכנה, רק שבניגוד ל"טבלת המשתנים" הזאת, תיעוד הוא חלק בלתי נפרד מהקוד. עושים אותו במסגרת הערות בקוד ובנוסף במסגרת אפיון הטכני שמפרט את האלגוריתמים שמאחורי הקוד. אני עובד בתחום הרבה זמן, ובחיים לא נתקלתי ב"טבלת משתנים" הזאת שדורשים מכם... משהו מיוחד למשרד החינוך כנראה. טבלת מעקב אני עוד יכול להבין שצריכים אותה בבגרויות, את טבלת המשתנים, כמו שהיא מתוארת פה, אני ממש לא מבין. צריך לעשות תיעוד לקוד כמו שצריך, וזה לא בטבלה לא מחוברת.
 
וואלה... פעם פשוט קראו לזה...../images/Emo26.gif

תעוד
אז זה מה שאמרתי בעצם... (pre/post conditions)
 
למעלה