מבוא לתכנות תרגיל 8



בפרוצדורה זו יוגדר מערך מטיפוס .JOB כתבי תכנית ראשית אשר תקרא לפרוצדורה בשם
.אברים LEN שלם בעל
:תבצע את הפעולות הבאות JOB הפרוצדורה
מספרים אקראיים למערך LEN תקרא לפרוצדורה שתכניס
.[LEN..1] בתחום a,b,א. תקרא לפרוצדורה המגרילה 2 מספרים אקראיים שונים  .2
ב. תקרא לפונקציה מטיפוס שלם שתמנה את מספר המספרים הזוגיים במערך בין     
.הנ"ל a,b האינדקסים        
ג. התכנית (לא הפונקציה !!) תדפיס את מספרם.אם מספרם זוגי, תודפס מיד לאחר     
'EZUGI' ואם מספרם אי זוגי, תודפס מיד לאחר מספרם המילה 'ZUGI' מספרם המילה        
[1..LEN] בתחום a,b א. תקרא לפרוצדורה המגרילה 2 מספרים אקראיים שונים  .3
ב. תקרא לפרוצדורה שתחשב את סכום המספרים הנמצאים במקומות האי זוגיים     
.הנ"ל a,b במערך בין האינדקסים        
ג. התכנית (לא הפרוצדורה !!) תדפיס את הסכום. אם סכומם זוגי, תודפס מיד לאחר     
'EZUGI' ,ואם סכומם אי זוגי, תודפס מיד לאחר סכומם המילה ,'ZUGI' סכומם המילה        
.[LEN..1] בתחום a,b,א. תקרא לפרוצדורה המגרילה 2 מספרים אקראיים שונים  .4
.הנ"ל a,b ב. תקרא לפונקציה שתבדוק האם המספר אפס נמצא במערך בין האינדקסים     
ג. התכנית (לא הפונקציה !!) תודיע הודעה מתאימה לגבי נוכחות או אי נוכחות האפס     
.הנ"ל a,b במערך בין האינדקסים        


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







.כתבו תכנית המתרגלת ילד בבי"ס יסודי בפעולות חשבון במספרים שלמים
:התכנית הראשית תשאל את הילד
. מהו תחום המספרים בו הוא מעונין. הילד יתן 2 מספרים המהווים את גבולות התחום .1
.בכמה תרגילים הוא מעונין .2
.בכמה נסיונות הוא מעונין עבור כל תרגיל, אם התשובה שנתן היתה שגויה .3
לאחר שהתכנית הראשית תקבל מהילד את התשובות לשאלות אלה, היא תפעיל פרוצדורה בשם
שתתן לילד את מספר התרגילים שהוא ביקש, ותתן לו ציון (להלן יורחב ההסבר PLAY
.(PLAY אודות פעולתה של
תסיים התכנית תשאל את הילד אם הוא מעונין בסדרה נוספת של PLAY לאחר שהפרוצדורה
,תרגילים, או בסיום. אם הוא מעונין בסדרה נוספת, היא שוב תשאל אותו את שלש השאלות
הנ"ל וחוזר חלילה
: PLAY וכך היא עבודתה של
שתגריל 2 מספרים (בתוך תחום המספרים ,HAGRALA תקרא לפרוצדורה בשם PLAY הפרוצדורה
PLAY-שהילד ביקש) ופעולת חשבון (חיבור חיסור כפל או חילוק), ותחזיר תשובה ל
,ומותר שתוצאת הפעולה תהיה מספר החורג DIV בתכנית זו, פעולת החילוק תהיה פעולת)
.(מתחום המספרים שהילד ביקש
.שתציג בפני הילד על המסך BOY תקרא לפרוצדורה PLAY מצוידת בתשובה זו, הפרוצדורה
תחזיר BOY .את התרגיל שהוגרל עבורו בצורה נאה ובהירה, ותקלוט את התשובה שלו
.את התשובה של הילד PLAY-ל
שתבדוק אם התשובה נכונה. אם BDIKA תקרא לפונקציה PLAY ,מצוידת בתשובה זו של הילד
.לילד את מספר הנסיונות הנוספים שהוא ביקש בתחילת התכנית PLAY התשובה אינה נכונה, תתן
לאחר שהילד הגיע לתשובה נכונה, או סיים את כל הנסיונות הנוספים מבלי להגיע לתשובה
שתשמור את המידע: מהי התשובה שהילד ,TOZAOT לפרוצדורה בשם PLAY נכונה, תקרא
TOZAOT ,נתן, ומהי הסטיה בינה לבין התשובה הנכונה. לצורך שמירת מידע זה הפרוצדורה
חייבת לעבוד מול מערך, ולעניננו, אפשר להניח שהילד אף פעם לא יבקש יותר מ-20 תרגילים
שתחשב את MARK תקרא לפונקציה PLAY ,לאחר שהילד סיים את סדרת התרגילים שביקש
שתחשב את ממוצע הסטיות בין התשובות TAUT הציון של הילד (מספר מתוך 100), ולפונקציה
.הנכונות והשגויות
שתדפיס בצורה נאה את התוצאות HADPASA לפרוצדורה PLAY מצוידת במידע זה, תקרא
.MARK -ו TAUT שנתקבלו על ידי
.את עבודתה PLAY בכך סיימה
כל שגרה תתיחס רק: או לפרמטרים פורמליים שלה, או למשתנים מקומיים שלה, ולא לשום
.משתנה אחר
.כל משתנה יוגדר רק בשגרה בה נחוץ להגדירו, ולא בשום רמה מעליה
.כל פרמטר שאין צורך להעבירו ע"י הפניה, יועבר ע"י ערך