Visual basic 6 : ערכת כלים

עורך ראשי – יצחק עמיהוד | 406, [32] עמודים : איורים ; 24 ס"מ. – ISBN 965-361-185-2

OCR (הסבר)
וסט5ו ערכת כלים 6 5 יוסי שריקי שפת 8056 |סטפו הינה שפה קלה ללימוד שאפשר לעשות איתה כמעט הכל. אך אל תניח לעושרה ולפשטותה להטעות אותך. בנוסף ללימוד התחביר אתה חייב ללמוד גם הרגלי חשיבה טובים ולתרגל. ספר זה יקנה לך יסודות מוצקים בעבודה עם 80516 |סטפו החל מהכרה בסיסית ועד לתכנות נושאים מורכבים. הספר מלווה בתרגילים שיעזרו לך לבחון את מה שלמדת, ולהוכיח כי אתה יכול ליישם זאת. המחבר יוסי שריקי, מפתח ב- 8056 |סע8ו/ בעל ניסיון רב, אחראי על צוות פיתוח ומרצה במרכז הדרכה סיון. הספר מיועד: / ללומדים תכנות שזוהי שפת התכנות הראשונה שלהם. / למתכנתים בעלי ניסיון בעבודה עם 8056 |סטפו/ בגרסאות קודמות הרוצים להתעדכן ביכולות של גירסה 6 וללמוד דבּרים נוספים. 6% התקליטור המצורף כולל: ְּ , שק בקרו אותנו באינטרנט / 6 80516 |0ש8!/ בגירסה מיוחדת. ,/ 2 וחוס- -00ח נטטטועש |/] קוד מקור. , 7/ 6 - /) תוכנות עזר. 4 ב /. 0 | /] בונוסים. ו 4 לחה מומלץ לצרכן 119 ש"ח . " % * 0 5% ! רמת משתמש ש מו 00 - אק 0 דאנאקוד 259-10214 מתחיל בינוני מתקדם מסת"ב 965-361-185-2 %58| )ו תי 0 = 0 / ערכת כלים יוסי שריקי |/|למתכנת המתחיל כלי פיתוח ויזואליים |/|למתכנת שפיתח בגרסאות קודמות / תרגול, תרגול, תרגול 6 53516 ובּט5ו ערכת כלים ואו פיק [פ 5/0591 0/ 516/75 3//5ו19 - כ[ס9 וכקו2ץ 4 ו עורך ראשי: יצחק עמיהוד עיצוב ועריכה לשונית: שרה עמיהוד עיצוב עטיפה: שרון רז תודה ליהודה כץ על הערותיו שמות מסחריים שמות המוצריס והשירותיס המוזכריס בספר הינס שמות מסחרייס רשומיס של החברות שלהס. הוצאת הוד-עמי עשתה כמיטב יכולתה למסור מידע אודות השמות המסחרייס המוזכריס בספר גה ולציין את שמות החברות, המוצרים והשירותים. שמות מסחריים רשומים (8765 1480670 -68)) המוזכריס בספר צוינו בהתאמה. 5ססחו/צ הינו מוצר רשוס של חברת +₪1670501 6 ]1508 הינו מוצר רשום של חברת +0501ז6וו הודעה ספר זה מיועד לתת מידע אודות מוצרים שונים. נעשו מאמצים רבים לגרום לכך שהספר יהיה שלם ואמין ככל שניתן, אך אין משתמעת מכך כל אחריות שהיא. המידע ניתן ''כמות שהוא'' ("5ו 5"). הוצאת הוד-עמי אינה אחראית כלפי יחיד או ארגון עבור כל אובדן או נזק אשר ייגרס, אם ייגרם, מהמידע שבספר זה, או מהתקליטור שמצורף לו. לשם שטף הקריאה כתוב ספר זה בלשון זכר בלבד. ספר זה מיועד לגברים ונשים כאחד ואין בכוונתנו להפלות או לפגוע בציבור המשתמשים/ות. ב טלפון: 09-9564716 1-700-7000-44 ב פקס: 09-9571582 ב דואר אלקטרוני: |ו.60.והחו00-3ח62ס!חו נ) אתר באינטרנט: |ו.ס6.והחב-6סח.שעצצ 6 23516 ו|הט5ו ערכת כלים יוסי שריקי זסז 60ח6ו65ס !700 6 23516 |הטפו ואוזחפ עְ055+ עם )6( כל הזכויות שמורות הוצאת הוד-עמי לספרי מחשבים בע''מ ת.ד. 6108 הרצליה 46160 טלפון: 09-9564716 פקס: 09-9571582 |ו.ס6.ורח6000-8סזחו אין להשאיל ו/או לעשות שימוש מסחרי ו/או להעתיק, לשכפל, לצלם, לתרגם, להקליט, לשדר, לקלוט ו/או לאחסן במאגר מידע בבל דרך ו/או אמצעי מכני, דיגיטלי, אופטי, מגנטי ו/או אחר - בחלק כלשהו מן המידע ו/או התמונות ו/או האיורים ו/או כל תוכן אחר הכלולים ו/או שצורפו לספר זה, בין אם לשימוש פנימי או לשימוש מסחרי. כל שימוש החורג מציטוט קטעים קצרים במסגרת של ביקורת ספרותית אסור בהחלט, אלא ברשות מפורשת בכתב מהמוציא לאור. הודפס בישראל 1999, 2000, 2001, 2002 הדפסה 10/2003 0 פזחסוה ווה .+ | ואה-ספסה 8ו|672 ,6108 .0.8.ק 3 , םה חהפ| מסת'יב 965-361-185-2 אספ!ן תוכן העניינים חלק א': צעדים ראשונ'ם........ורווורוו9יוו203011111111655005 1: מרכיבי המסך 21 שורת התפריטים (ז8טחסוש) 7 הטופס (חזזס=) 2 עורך הקוד (0זו0=) 37 סרגל הכלים (ז8ם!|ססד) 29 ארג הכליס (אספ!ססד) - 0 חלון הפרויקט (ז6זס|סאם 60%][סזק) 2 חלון המאפייניס (שססחו// 5סוזו6ססזק) .12.0.02 חלון המתאר (ששססחו/ +טסץ8 .| חחזס-) ל דפדפן האובייקטים (86;שסזם 00[60%) 2 2: צעד ראשון בפיתוח יישום 39 יצירת ממשק המשתמש כ[ קביעת המאפיינים 0 כתיבת הקוד 0 תכנות מוכוון אירועיס 7 חזרה לכתיבת הקוד 5 6 קוד אוטומטי ל סדר במבנה הקוד 0 סיכוס הנושאיס העיקרייס שנלמדו בפרק 7 תרגול ב 53 3: פקדים (600%7015) 0 הכרת הפקדיס 5 שימוש בפקדיס 0 א. אסשסזטזוק - תיבת תמונה 0 ב. |1806 - תווית 5 כ ב מ מש מש ב בב ש מכל ב ‏ ש מב נש כל ל ג. | 0%ם1א6ד - תיבת טקסט 0 ד. 6חח8ז= - מסגרת 6 ה. חסאטם0חהח ה סס - לחצן פקודה 2 ו. | 00%א60ח0 - תיבת סימון 6 .| חסאטםח0סו0ק0 - לחצן אפשרויות || ח. אספסטו 00 - תיבה משולבת ו תוכן העניינים 5 ט. א0ם91!! - תיבת רשימה 6 י | ז9ם]||0ז50 - פס גלילה ל יא. זסחזוד - מונה ב ב ב ב 69 יב. 80% |8עו1כ - תיבת רשימת כונניס 0 יג. | אסםפו |זום - תיבת רשימת תיקיות בכב ל ל- ט 5- 705 יד. א0ם)8! 1!81= - תיבת רשימת קבצים 7 טו. 5806 - צורה 1 טז. 6חו/ - קו 71 יז. 6חָ8ח! - דמות / תמונה 1 יח. 818 - נתוניס ל שר ₪5 ללשל כ סל מ הככ 5 ל שר 71 יט. ם01 - קישור והטבעת אובייקטיס 0 מערכי פקדיס .בלכל מתי נשתמש במערך של פקדים! 0 בניית המערך סש מ ו כיצד יודעיס מהו הסדר! ב ב :73 השימוש במערך בכתיבת קוד 1/7 כיצד נעשה זאת: 0 הוספת פקד לסרגל הכליס 7 תרגיל לסיכוס הנושאיס העיקרייס שנלמדו בפרק 0 תרגול ממ סט הפר ב ב סש םשכ מ - ל שש 2-0 80 4: מאפיינים (7700670065) + רררררררווווווווווווווווווווווי1111111111111 ₪10 הכרת המאפיינים || המשפט זוסו|קְא= חסוזקס .בב 7 המשתנה זחהּוזה8/ לב סוגי משתניס 0 7 משתניס מספרייס || || משתנה מחרוזת || משתנה בוליאני 2 שב שש בש טפול ב מ שב כ בש ספב 055 ל 2 פס 255 ש902 המרת סוגי משתניס 4 דשה רכ תסו דכ ל ד 7.,ריקו).- ית תי שו הש ערכים מיוחדים 7 עסוחם - ריק 9 ווטא - יאיניי ל מבניס המוגדריס על ידי המשתמש (06עד 60ח68כ-ז156)) 9 הצהרה על משתניס כ כ ד יר לשה כ 3-כ ה שמות משתניס 0 0 7 ל קידומת למשתניס סש ל:- ב5. דל ,דבו ללככ ל סוגי הצהרה 1 משתנה סטטי 1 6 26 - ערכת כלים 6: פקודות השמה ב אתחול משתניס ו ביטוייס 0 אופרטוריס נוספיס .- 0 סדר קדימויות 0 אופרטורי השוואה 0 אופרטוריס לוגייס 0 שרשור משתניס 0 פונקציות לבדיקת משתניס 0 פקודות קלט ופלט .|| תיבת קלט אסםשזטסח! 7 תיבת פלט א0ם 150 7 תיבת הודעה מותאמת אישית 0 7: מערכים 0 אופן ההצהרה ב המשפט 8856 חסוזקס 0 קביעת גבולות למערך 0 השמת ערכיס 1 מטריצות ופול 0 הפונקציה ()ץ8זזה 0 חריגה מתחוס המערך 0 הפונקציה סחטססנ - 0 הפונקציה סחטסס. | 1 8: מבני קבלת החלטה 7 המבנה חפחד..1! 1 משפט תנאי עס משתנה (אופרנד) אחד 1 המבנה 86!ם.. חפחד. .11 0 תוכן העניינים 7 הלולאה ססס )]..6כם ל הלולאה |טחנ..6ם 7 הלולאה )אפצז..זס= ל לולאות מקוננות - ו הלולאה +%א146..ח₪806 זס= ה 0: שגרות 1 מבנה השיגרה --- 0 תכנות מודולרי - 7 הפונקציה פַחו8₪155! 0 ערך ברירת מחדל 8 מה בין שיגרה לפונקציה 1 סוגי שגרות וטווח הכרה -/ ו הקריאה לשיגרה מטופס אחר 6זק 0 שיגרה ברמת המודול -[ ו המשפט זוא= 2 1ד: קבצים 1 סוגי קבציס 0 קבצי טקסט 7 פתיחת קוב 7 סוגי פתיחת קובצ טקסט 2 קריאה מקוב ב[ הפונקציה זטסחו - 0 הפונקציה 566% 8 כתיבה לקובצ 0 סגירת קוב 0 8 26 - ערכת כלים פונקציות לעבודה עס קבציס 00 של כ 156 הפונקציה חוס 1 הפונקציה ח161.6= ל 1 הפונקציה =0. 1 םכל שש 90 90 בש שמ בע 7 8 1 הפונקציה ]₪01 1 הפונקציה /ץ18600= 189 הפונקציה 6ו1608161= 1 הפונקציה 06| 1 הפונקציה 66=116ז= 1 הפונקציה )2614) - ל הפונקציה 59% 1 פונקציות לעבודה עס מחרוזות 1 הפונקציה ח6 | 1 הפונקציה 31001 2 שו 1 הפונקציה 6% 0 ל מ מ ב 192 הפונקציה ₪8 7 המשפט סו 1 הפונקציה ז5%ח! 06 ב 1 הפונקציה וחוזך 1 הפונקציה וז ד 1 הפונקציה חחוזד | 1 הפונקציה 0856 90 פקדים למיפוי דיסק 1 הפקד א8150! |6צוזס 1 הפקד אסםזפו וזוס 1 הפקד 800% 161= 1 שילוב שלושת הפקדיס 201 תיבות דו-שיח 2 הפקד פס|א8וסחסוהוחהס6 20 חססכצסחס 207 6 שוסחס ב 20 זס|ס/שסח5 50502 20 חס סח 27 זסז חק עוסתפ 2 שליחת הפלט למדפסת 0 21 הדפסת טופס 2 תרגול 212 תוכן העניינים 9 2: תפריטים 21 עורך התפריטיס 2 בניית ההיררכיה 2 תת-תפריט 2 מאפייניס 7 ביצוע אפשרות התפריט בשורות קוד 2 הוספת תפריטים באופן דינמי 2 טחסו/! קגוססק 220 תרגול .|| 0 חלק ב': תכנות מקצו/ ....56161114111245000005090000090909 22050 3: מבוא ל-*6צו6% ב ל 1 א8ע0%ה ל 22 מדוע ליצור א6%ש40% או 11ס! || מחלקה (00!6ס! 01855) 0 2286 משתנים (67008675!! בז8כ) 22 מאפייניס (65ז6ססזק) בס 0 0 20 שירותיסם (16%%005) 2 הידור הפרויקט לקובצ 11ס - 0 קוב |ו0 לדוגמה .2 המחלקה פוו= עו 2 שירותי המחלקה 23 פתיחת קוב 23 קריאת שורה מקוב 2 סגירת קובצ || השימוש ב-!/0 מכלי פיתוח אחר 2 5 0[60ז 2 שימוש בשירותי ה- |ו6 בקוד 2 |%0ח0) 6%עו ה 28 יצירת פרויקט |ס%ח60) א6צ00 2 בניית ממשק משתמש -[[[ 0 קביעת מאפייניס ב 500 0 כתיבת הקוד ל 1 אשף ממשק הבקרה של 40/6 (0ז28ו/ 806 סוח! |סזחס6 6עוזס) 2 קביעת מאפייני הפקד -///- ל מיפוי המאפיינים 2 בדיקת הפקד 2 שילוב הפקד בפרויקט 5 מש ימש מש מ לט לש טש במ כ מב לכש שש ב לשל 2 הידור פרויקט |%0ח0) 6%ע6 2 תרגול 40 0 6ם - ערכת כלים 4: אובייקטים ו-01166 051%ז6וו₪ 7 הצהרה על משתנה אובייקט 0 הפונקציה 62768%6000[601 0 ניהול מסמך סזס// מוויז'ואל בייסיק 8 השירות 0חו-₪011 -/- 2 5: מבוא לשפת .591 0 סוגי שאילתות || שאילתת בחירה (581804) 7-ו קריטריוניס (616ח//) 8 אופרטוריס להשוואה ב אופרטוריס לוגייס 0 קריטריוניס נוספיס 0 סוגי משתניס 0 שאילתות סיכוס 0 שאילתות על מספר טבלאות 0 שאילתות ביצוע .0 6 מסדי נתונים 1 הפקד 8%8 0 בניית מסד נתוניס באמצעות ויז'ואל בייסיק .... התוכנית 180818/ ב יצירת מסד נתוניס 2 בניית טבלה 8 הוספת שדות לטבלה ונ אינדקסיס 0 הוספת אינדקסיס 0 עריכת טבלה 0 ניהול מסד הנתוניס משורות הקוד 7 קישור היישוס עס מנוע מסד הנתוניס 0 הצהרה על משתניס 7 פתיחת מסד נתוניס ל 0 הפונקציה ()זוסזטוס - 0 מסד נתוניס מרוחק 0 פתיחת טבלה ְ[נְ|/ 0 הפניה לשדה בטבלה ב השירות 3806010561 006 עס משפט ‏ 501 הפניה לשדה בשאילתה 0 תוכן העניינים 11 עריכת רשומות דפדוף ברשומות איתור רשומות טרנזקציות סגירת מסד נתוניס השירות ש01%6/ השירות 50/0 השירות 00818 השירות 6/8186 השירות +9זו 6ץסו השירות 35% |6עסו/! השירות )א6צז6טסו המאפיין ₪0 השירות פטסוע6זםק סטסו המאפיין 80 השירות 6טסו! המאפיין +0ט36607000 המאפיין :360070000 במשפט 501 המאפיין אססח! המאפיין 560% המאפיין חסזה וס השירות ז9זו0חו= השירות %א6צ]סחו= השירות 85% |סחו= השירות פגוסוט6זק 0חו= השירות ₪0!!580% ניהול מסד נתוניס בזמן פעולת התוכנית. השירות 60016א= הוספת טבלה מחיקת טבלה הוספת שדה הוספת אינדקס מחיקת אינדקס ב 6 - ערכת כלים 7: הוספת סרגל כלים ליישום הפקד 18% 8061ח! קביעת גודל התמונה בחירת תמונה הפקד ז8ם|ססך קישור ז8ם|סס ד ל- 150 8961ח! הוספת לחצניס לסרגל קביעת מאפייניס ללחצן לחצני עזר נוספיס 8: דוחות יצירת דוח סוגי דוחות שלבים בבניית דוח בחירת מסד הנתוניס קשרים בין טבלאות יצירת קשר חדש מחיקת קשר בחירת השדות שיוצגו בדוח קביעת קריטריון מבט עיצוב (ח(ו065) חלקי הדוח (8חסו5601) עריכת שדה עורך הנוסחאות כתיבת נוסחה הוספת שדה שדה טקסט שדה ממסד הנתוניס שדה מקב (ץ5 קטסז) קביעת סגנון דוח הצגת הדוח מתוך ויז'ואל בייסיק המאפיין סחבּ4ז6!ו-1וסס6ה המאפיין 6חהּאסווִּהכ קביעת יעד לדוח הדפסת הדוח מה קורה כשאין מדפסת בחירת הרשומות שיוצגו בדוח תוכן העניינים 13 9: פונקציות ווף ב זסשוסו/ %א6ד ושםה 2 הקוב %%%.1ק328חו/ ב חיפוש פונקציה 0 הצגת הפונקציה 7 מבניס (068ע7) 8 העתקת הפונקציה לוויז'ואל בייסיק 7 הצהרה על הפונקציה במודול ל קריאה לפונקציה משורות קוד ל פונקציה לדוגמה 0 0: טיפול בשגיאות ה המשפט זסזום חכ 0/7 פתרון שגיאות ./ יר מספר השגיאה 0 תיאור השגיאה 7 המשפט 65006 3 המשפט )א6צ! ₪656 7 פונקציה הקוראת לפונקציה 7 מנפה השגיאות - זספָפָטס60ס 0 נקודת עצירה 0חו0קא8768 סופַפָסד) 0 צעד-אחר-צעד (סזח! ק5%6) 0 דילוג על פונקציה (81שכ0) ס5%8) 0 הרצת התוכנית מנקודה מסוימת - 0 צפייה בערכו של משתנה (ח916/ 106ט5)) - ו ו1ו2: הכנת ערכת התקנה 4:0 כט56) 0 יצירת קוב =א= 0 הגדרות הפרויקט | תוכניות ההתקנה 0ז28ו/ +חסוהץסוק6 8 800806 4 6ם - ערכת כלים שלב טי 2 שלב לי 2 ב בר 2 ב ב 2/3 שלב יי'א 7 שלב יייב לב 0 מש בכש לש ב בב ממ מב נש 27/6 נספח: התקליטור המצורף 0 מה בתקליטור? ב 508 0ב מב 5 ב 252 בב 379 התיקיות הרלוונטיות לספר לש 239022 היכן נמצאות התוכניות של ספר זה? 7 העתקת קבצי המקור לדיסק 0 התקנת |06ס!/ פָחואזס/ 6 28816 |808ו/ 2 קטלוג ספריס 0 זז - התקנה .363 מה עוד בתקליטור! מ ב לש כב שש ב שש 705 280 התקנת תוכנת גלישה לאינטרנט 6 זפזס|סאם +6חז6זח! א0ס8סזסוו 8 חא הס 0 תיקיה ראשית 6ז501)//39 (רשימה חלקית ועשויה להשתנות) 7 שאלות נפוצות 00 6 שש 6 0 25 הערה חשובה! 2 צור קשר ה[ אינדקס ב ן 39 תוכן העניינים 15 הקדמה בעידן המחשביס של ימינו נמצא כמעט בכל בית מחשב עס מערכת הפעלה פשוסטחו//. כך גס בכל עסק, קטן ככל שיהיה, במפעלים גדוליס וחברות, מכיון שהפעילות העסקית נעזרת כיוס יותר במערכות ממוחשבות. מערכות עסקיות וביתיות שפעלו בסביבות עבודה קודמות כבר הוסבו, או שהן מוסבות כעת למערכת הפעלה 5 פעוסחו/ ובעצס כבר למערכת ההפעלה החדשה 98 פצשוסטחו//. הדבר מתבטא בקורסי ההסבה הרבים המועברים למזכירות, למנהלים ולכל אדם אשר במסגרת תפקידו וקוק למחשב. מציאות זו צריכה להעמיד אותנו - המתכנתים - עירנייס למצב המשתנה והמתחדש, להכיר וללמוד את התוכנות ולתכנת בהן ברמה גבוהה ומקצועית. לאור הצורך הגדול בשפה חלונאית, ובפרט לסביבת 95 פוססחו/ וסביבת 8 פעוסחו/, דרושה שפה בעלת עוצמה וכלים לפיתוח יישומיס ברמה גבוהה, שתיתן פתרונות מקצועייס למיגווו הרחב של המשתמשים הזקוקים לשירותי מיחשוב. |1808/ 0 (בהמשך, נשתמש בכיתוב עברי: ויז'ואל בייסיק) הינה שפה העונה על דרישה זו. ויז'ואל בייסיק היא שפת תכנות ברמה מקצועית לסביבת פשססחו/ המאפשרת פתרונות יישומייס ברמה גבוהה בסביבת העבודה של המחשביס האישיים. חברת פיתחה בעזרת ויז'ואל בייסיק רבות מהתוכנות שלה, או חלק מהשירותים שהן מספקות. יתרון נוסף של ויז'ואל בייסיק הוא פשטות השפה ולכן - קלות הלימוד והיישוס. על אף מיגווו האפשרויות העצוס של השפה, היא קלה ללימוד ופשוטה לשימוש. מי שמכיר את שפת 88916 הישנה על מיגוון גרסאותיה, ימצא חידושים מרענניס ומתקדמיס. ספר וה מיועד למתכנתיס בשפת 28510 |808ו/ גירסה 6. הוא יאפשר למתכנתיס מתחילים, ללא ניסיון כלל בוויז'ואל בייסיק, ללמוד ולהתקדס שלב אחר שלב, מבסיס השפה ועד לרמה מקצועית גבוהה. גס מתכנתים בעלי ניסיון בשפה, יוכלו להפיק תועלת מהספר, החל בפרקיס העוסקיס בנושאיה המתקדמים של השפה, אשר לא הכירו קודם. מסיבה זו חילקתי את הספר לשני חלקים : החלק הראשון כולל צעדיםס ראשונים, ומכוון למי שאינו מכיר את השפה. בצעדיס קטנים הוא יוכל להתקדס מהכרה בסיסית ועד לשליטה באפשרויותיה הרבות. החלק השני הוא הדרכה לתכנות מקצועי, ומבוסס על הבסיס שניתן ללומד בחלק הראשון של הספר. הוא מתאיס גס לקורא שיש לו רקע קודס בגירסה קודמת של השפה. מטרתו להביא את הקורא לרמת מתכנת ויו'יואל בייסיק מקצועי מן השורה. מתכנתיס בעלי ניסיון בוויז'ואל בייסיק יוכלו לפנות ישירות לחלק השני, שבו הס ימצאו חומר מתקדס וגם המלצות לתכנות יעיל ונכון. הקדמה 17 הספר כתוב בשיטת צעד-אחר-צעד, או שיטת השלבים, שבה כל פרק מבוסס על החומר שנלמד בקודמו. מומלצ מאוד לקרוא וללמוד את הפרקיס לפי סדר כתיבתסם. קריאה בלבד אינה מאפשרת להפיק את מירב התועלת מן הלימוד. כדי לקצור פירות חייביס לעמול, והכוונה - לתרגל! התרגילים אינס המלצה בלבד כי אס חלק מהלימוד. הרוצה להפיק מירב מן הספר לא יפסח על אף תרגיל. לא זו בלבד שהתרגילים מקנים ניסיון והרגלי חשיבה והרגלי תכנות טובים, אלא שלרוב אפשר ללמוד בעזארתם דברים נוספיס לאלה שנלמדו במסגרת החומר התיאורטי. במהלך הלימוד בספר השתמשתי במונחיס המקצועיים המקובלים, וגס במונחיס המתורגמיס לעברית. כך יכול הלומד להעשיר את יכולתו גס לקריאה בספרות המקצועית באנגלית. ספר וה מבוסס על שתי גרסאות של 6 28510 |08פו: המהדורה המפעלית (150ז0ז6+ח=) והמהדורה המקצועית (|16551003סזק). בחלק מהנושאיס הוא מתאיס גס לגירסה הסטנדרטית (5+8700810), אך לא נעשתה בדיקה של התוכניות בגירסה זו. בתקליטור המצורף לספר זה תמצא את גרסת !₪066 פשחואזס/ - 6 28516 [ה508ו/. גירסה זו של התוכנה ניתנת לך כבונוס ואין הספר מתיימר ללמד אודותיה. כמו כן, קוד המקור בספר ה לא נבחן על גירסה זו (הוראות ההתקנה בתקליטור ובנספח). בתקליטור תמצא את קוד המקור של מרבית קטעי הקוד המוזכריס בספר. ראה הסבר בנספח בסוף הספר ובקוב 06 בתקליטור. לא נותר, אלא לאחל לך הקורא-לומד דרך צלחה, עבודה קשה וקריאה נעימה. 8 6ם - ערכת כלים מבוא תהליך פיתוח של יישוס ויזיואל בייסיק במחשב, חייב לכלול ארבעה שלבים, ללא תלות בגודלו. אנו מניחיס ששלב התכנון המוקדס הוא ברור מאליו, ונעשה עוד לפני שהמתכנת הדליק את המחשב. לאחר שביררנו לעצמנו מהי התוכנה שאנו עומדיס לפתח, ופרטיה מפורטיסם ומתוכנניס על הנייר, כל שנשאר הוא לתרגס את אשר נכתב לשפת תכנות ובמקרה שלנו - |1808/ 6. ארבעת השלבים הם: א. | יצירת ממשק משתמש. ב. | קביעת מאפיינים. ג. = כתיבת הקוד. ד. | יצירת קוב הרצה (וערכת התקנה). בניגוד לשפות פרוצדורליות, אנו מתחילים ביצירת ממשק משתמש עוד לפני שכתבנו אפילו שורת קוד אחת. אנו מעצביסם את המסך - או במונח המקצועי את הטופט (וחזס=) כפי שייראה למשתמש בסוף התהליך. עיצוב הטופס נעשה באמצעות ייפיזוריי פקדים (00₪0170!9 - הס כלי העבודה) על פניו. לדוגמה, נחליט כי התוכנית שלנו תציג הודעה ותאפשר קלט של מספר מהמשתמש. אחר כך הוא ילח על הלחצן, או פקד הפקודה, ויקבל כתוצאה את החזקה הריבועית של המספר שהקיש. לצורך כך ניצור טופס כמודגס בתרשיס: |<1ם)- | [חזזס-] .= הכנס מספר: | : ןאסד | העלאה בחזקה | 308| תרשים: טופס לדוגמה על פני הטופס מוצגים שלושה פקדים: פקד תווית (|ו1806) שבו נכתבה ההוראה המנחה ייהכנס מספר:''. פקד תיבת טקסט (א0%ם!א16) מאפשר למשתמש להקליד את המספר שבחר. הפקד לחצן פקודה, ובקיצור - לחצן (חסו)טם חחח 60), בו רשוס ייהעלאה בחזקהיי, ואשר בלחיצה עליו נקבל את התוצאה הרצויה. בשלב הבא עלינו לקבוע את המאפייניס. לכל פקד נקבעיס המאפייניסם המתאימים לו. בדוגמה שלנו, המאפיין חסו)087 (כותרת) של הפקד |1808 הוא יהכנס מספר:". במקוס לומר כי על התווית נכתבה ההוראה ייהכנס מספר:'י, נאמר בשפה מקצועית כי מבוא 19 המאפיין ח0וק08 של הפקד |1896 הוא ייהכנס מספר:יי (או, מכיל את הערך י'הכנס מספר:'). היכן נקבע כי המאפיין ח0ק68 של הפקד 18061 הוא ייהכנס מספר:יי : נראה בהמשך כי יש חלון מיוחד, חלון המאפיינים (שססחו/ 85וו6ססזק), בו רשומיס המאפייניס של כל פקד. בחלון זה נקבע ערכו של כל מאפיין. על חלון המאפיינים לא נרחיב כאן את הדיבור, נפגוש אותו בפרק הראשון ובמהלך לימוד התוכניות בפרקיס שלאחר מכן. ערך המאפיין שקיבל הפקד בראשונה אינו בהכרת קבוע לכל אורך התוכנית; הוא ניתן לשינוי כפי הצורך. השינוי לא ייעשה דרך חלון המאפיינים, כי אם באופן דינמי באמצעות שורות קוד בלבד. בשלב השלישי כותבים את הקוד. אין וה שלב הכרתי בכל יישוס, ויש יישומיס הפועלים ללא שורות קוד כלשהן. יישומיס אלה הס בדרך כלל פשוטיס ומוגבליס ביכולתם. מכיון שמטרתנו לפתח יישומיס ברמה מקצועית, נוסיף כתיבת קוד כפי הצורך. הזכרנו קודסם שבאפשרותנו לשלוט בערכי מאפייני הפקדיס באמצעות שורות קוד. אולס, נוח יותר לקבוע ערכיס ראשונייסם למאפיינים באמצעות חלון המאפייניס. באמצעות שורות הקוד נבצע את השינוי הדינמי של המאפייניס, אך אפשר לקבוע ערך באמצעותן גס בפעס הראשונה. קביעת ערכו של מאפיין בעזרת שורת הקוד תיעשה באופן הבא : "הכנס מספר:" = תסנסק608. 18061 תחילה נציין את שס הפקד, אחריו נקודה, שס המאפיין, אופרטור השוויון ‏ "=" (שווה) ולבסוף הערך הרצוי. בחלק זה באה לביטוי שפת 88516 יימשופרתיי (אשר דומה מאוד לזו שהכרנו בעבר), וככל שפה גס לה תחביר (אפ%חץ5) המאפשר למתכנת לתכנת על פי כללים מוסכמים. בשפת ויו'ואל בייסיק אין משמעות לכתיבה באותיות קטנות או גדולות, ואין הבדל בין שני סוגי האותיות לפיכך, חספ והה ל-+50 ו-ץזסזהסץה|א80ה0 והה ל- /ץזס%ח6/חוא60ח6. התוכנה עצמה צובעת באופן אוטומטי בכחול ומציינת באות רישית את המיליס השמורות לשפה. כאן המקוס לציין את תיעוד שורות הקוד. מיותר להדגיש את חשיבות התיעוד של עבודת התכנות, אשר מתבטא בעיקר בכתיבת הערות בין ובהמשך לשורות הקוד. נאמר רק, כי הדרך לתעד היא בעזרת התו גרש - ' - (הגרש נמצא במקש של האות /). ההערה נכתבת בשורה נפרדת, או בשורות נפרדות, וגם אפשר להוסיף אותה בסוף שורת הקוד. לא ניתן לשלב הערה באמצע שורת קוד! את ההערה ניתן לכתוב באנגלית או בעברית. 0 6ם - ערכת כלים הדוגמה הבאה ממחישה כיצד להוסיף הערה לשורות הקוד שלנו: 6 2858510 7185081 ם1 סססם' 5 מסם שםת1קססם' 0 20 1 = 1 עסע נ = תסנסק68. 18061 1 6אסא השלב האחרון בפיתוח היישוס הוא יצירת קוב הרצה (8א6), אשר יפעל ללא צורך בתוכנת ויו'ואל בייסיק. לצורך זה יש לבצע תחילה הידור ולוודא שאין שגיאות בתוכנית. לאחר שעובריס גס שלב זה בהצלחה, כל שנותר לעשות הוא ליצור את קוב ההרצה (8א6). אך עדיין לא ניתן למסור את היישוס למישהו אחר להפעלה. למרות שיש לנו קוב הרצה, הוא קשור לקבצי ₪11 שוניס והוא אינו יכול לפעול בלעדיהס. כדי להפעיל את היישוס שפיתחנו גס במחשבים שאין בהם ויזיואל בייסיק, נצטרך להכין ערכת התקנה מתאימה. לצורך בניית ערכת ההתקנה ניעזר בתוכנית 56600 20 שבה נעסוק בפרק החותס את הספר. כאן נסייס את המבוא ונאחל לך לימוד מהנה ומועיל. מבוא 21 הספר מוקדש באהבה לאשתי יפעת ולילדיי אראל שמעון איתן רפאל דוד הלל יוסי שריקי 2 6םש - ערכת כלים חלק א צעדים ראשונים 1: מרכיבי המסך בעבודתנו עס ויז'ואל בייסיק אנו פועליס בשני מצבים. האחד, זמן עיצוב או זמן פיתוח (סוחוד ₪ח651כ), בו אנו נמצאים ברוב זמן עבודת הפיתוח שלנו. המצב השני הוא זמן פעולה, או זמן ריצה (6וחוד חטא), הוא הזמן בו התוכנית שלנו פועלת ומבצעת דברים. במצב זה נמצא המשתמש בעת עבודתו. בפרק זה נציג את החלקים השונים המרכיבים את המסך בזמן פיתוח. נלמד להכיר את המרכיביס האלה באופן כללי, להציג אותס ולהסתירס בעת הצורך, וגם נכיר את תפקיד כל אחד מהם. |<1) - | [ח0ו465] 83510 [הט5ו/ ]]ס5סזסוא - 1וססןסז] ,א קופו אוסטחועל 5ח[-₪00 0|5ס חִבּזְחָבום צזפטס חטם הטספ הז הספןסזק שופוע. פובם 6ום לש 5% ו , |= ₪90 ₪ 5 |₪ ₪ -ם - | > 1 (016661ק) 66%1[סוק 5חזס= 7% ה (1חחזס=) 1וחזס= 5% ה ב |א. [חזס]- 5פטט | ₪ | :ה חח] ל [ 50500298 |‏ חכוה 6 8800001 ד 2-68 1חזס= = שד 05 6% שחש 5]5655חזססת וסוס זס זבפ וס 6665[פס חב חו (066:)) 1חזזס] - 1ו66ן0:] פה | - ו | - חזזס?] תרשים 1.1: מרכיבי המסך שורת התפריטים (ובּםטח₪6) כמו בכל תוכנה חלונאית, כך נמצא גם בוויז'ואל בייסיק את שורת התפריטים. בשלב אה של הלימוד לא נעסוק בכל האפשרויות שנמצאות בתפריטים. נעסוק כעת באפשרויות השימושיות ביותר, ובאחרות נרחיב את הדיבור במהלך הלימוד. נתחיל בתפריט 1!8=. בתפריט זה נמצא את האפשרויות השכיחות האלו: 4 ₪6 - ערכת כלים + זז שא - ליצירת פרויקט חדש. בבתירת אפשרות זו נקבל מבחר סוגי % פרויקטים ; נבחר באפשרות הראשונה המוצעת - 09105%5ח518 2 . זהו פרויקט סטנדרטי למטרת יצירת קוב הרצה. וצ | 77 0[60%"₪ ח006 - לפתיחת פרויקט קיים. תיבת דו-שיח תאפשר בחירה של הקובץ שאנו רוציס לפתוח. הקובצ שנבחר יאופיין בסיומת קפט (0ו₪85 |808ו/ %[0זק) הנהוגה עבור קבצי ויז'ואל בייסיק (ההבחנה בין קובץ פרויקט לבין קבציס אחריס המשתתפים ביישוס תידון בהמשך הפרק). ו % 588,868 - לשמירת הפרויקט. התוכנה אינה מבצעת שמירה אוטומטית, ולכן מומלצ לשמור את הפרויקט לעיתים קרובות. תפריט 61% מכיל את כלי העריכה המוכריס בסביבת פששסחו/ ובהס : .: ₪3 מתכנתיס מקצועיים ממעטיס להשתמש בתפריטים, ונעזריס בעיקר במקשי הקיצור (0ס+זסח5). השימוש במקלדת הופך את עבודת המתכנת לקלה, נוחה ומהירה. מומלצ מאוד להקנות הרגלי עבודה אלה כבר בהתחלה, ואת הפירות נקצור בהמשך. ץֶץ60 - להעתקת פקד או קטע קוד נבחר. % - לגזירת פקד או קטע קוד נבחר. 6 - להדבקת פקד או קטע קוד נבחר. גס הלחצניסם העומדים לרשותנו בסרגל הכליס ממלאיס פונקציה דומה למקשי הקיצור. ראוי ורצוי ללמוד את תפקידם, ובעיקר של אלה השימושיים יותר. אזכיר כי, כמקובל בסביבת פשסטחו//, הנחת סמן העכבר על פני הלחצן לשנייה או שתיים, תגרוס להופעת תיאור כלי (ק%!ססד) שמסביר את תפקיד הלחצן. בתפריט חטא נמצא את האפשרויות הבאות: * + - להרצת הפרויקט (העברתו מזמן פיתוח לזמן ריצה). עדיין אין הופכיס את הפרויקט לקובצ הרצה. "' חם - סיוס זּמן ריצה וחזרה לסביבת הפיתוח. בכל הנוגע לעזרה, מערכת העזרה בגירסה 6 שונה ממה שהכרת בגירסה 5. כדי לקבל עזרה, בומן ההתקנה של 28516 |ףטפו/ מתוך ה-6 50010 |פטפו/ע עליך להתקין גס את 52% שזו מערכת העזרה. תוכל להתקין את אספ גס לאחר שהתקנת את התוכנה עצמה. פרק 1: מרכיבי המסךך 25 פָ 5 - בה תמצא את מערכת העזרה של ויו'ואל בייסיק (אס מותקן אספוש). אני ממליץ להקדיש זמן מיוחד ללימוד מערכת העזרה ולהתנסות בדפדוף ובחיפוש מידע בנושאיס שונים. זכור, מתכנת טוב אינו בהכרת ווכר את כל הפקודות והפונקציות בעל פה, אך הוא בהחלט יודע היכן למצוא אותן לכשיצטרך. הטופס (חזוס-:) במקביל לשני מצבי העבודה שהזכרנו, גס הטופס (חחזס=) נמצא בשני מצבים: מבט עיצוב (00[66%) ש18/) המדמה מצב ומן ריצה, ומבט קוד (60069 8₪ו/) המציג את שורות הקוד. נקודות הרשת [חזס- = תרשים 1.2א: טופס במצב עיצוב |< |ם)=. (008:)) [חוזס] - 1ו66ן0;?) מ [- ו 2 רוס ] [)6116% 41מעס6 כגום ססהטנעק 8351014ת45213 18016תבהע' עסהססמך 25 1 אבת 10 סד 1 = ב מסץ 1 = מ610ק611.03מ8 1 סאשן תרשים 1.2ב: טופס במבט קוד 6 6ם - ערכת כלים כאשר על הטופס יימפוזריס" פקדיס שוניס, הוא נמצא במצב עיצוב. כך גס נראה אותו בומן ריצה וכך יראה אותו המשתמש. יינקודות הרשתיי הרבות לא יופיעו, כמובן, בומן ריצה; הן נמצאות שס בזמן בפיתוח לנוחות המתכנת. המצב השני, כמודגם בתרשים 1.2ב, הוא מבט קוד. עוד נעסוק במצב זה של הטופס, אך כעת נאמר שיש שתי אפשרויות להתבונן בשורות הקוד. שורות הקוד בנויות משגרות ופונקציות. בידינו הבחירה לצפות בכל שיגרה בנפרד, או לראות את כל השגרות זו אחר זו כאשר קו מפריד ביניהן. הבחירה מתבצעת באמצעות האפשרות 004005 שבתפריט 10015. הכרטיסיה ₪80 פורשת לפנינו אפשרויות שונות. סימון ₪ משמאל לאפשרות ש164/ 00016 וו 0+ !06180 תגרוס להצגת כל השגרות כשהן מופרדות זו מזו בקו (תרשיס 1.3). ביטול הבחירה יגרוס להצגת כל שיגרה בנפרד. )= (008;)) [חזזם- - 11 סןסז?) א [* ו [* חזזס?] שבהכהסבהת 25 ₪2 מנבכת [)א6116 ₪032%16 כגום פסהטבעק 3 מנבעטסמט' הבמס כגו5 במם ()2088 אעסץ כגום פסהטבעק 6 3353 מסקס' ( " כו . 2336ב סהפק1 ו6") בַּבּמבּסבבב6ק0 = כ 566 כגו5 המש וסו/ גוס וטת תרשים 1.3: הצגת כל השגרות זו אחר זו כאשר קו מפריד ביניהן אפשרות נוספת להחלפה מהירה ופשוטה בין שני המצביס האלה נעשית בעזרת שני הלחצנים שבפינה השמאלית התחתונה של הטופס. הלחצן הימני (שבו פסיס אחדיס) מציג את כל השגרות מופרדות בקו - 16 ₪16 ווטת, והלחצן השמאלי (בעל שני פסים) מציג כל שיגרה בנפרד - /ש16/ 660076סזם. פרק 1: מרכיבי המסך 27 עורך הקוד (זסא50) כשהטופס במבט קוד, הוא למעשה עורך (60ו0ם) שבו אנו עורכים את שורות הקוד המרכיבות את התוכנית. באפשרותנו לעצב באופן אישי את מראה העורך כרצוננו ולנוחותנו. העיצוב כולל שינוי גופן התווים, שינוי גודל וצבע. בנוסף, ניתן לשנות את צבע הרקע של משטח העורך, ועוד. את השינויים ניתן לבצע על ידי בחירה בכרטיסיה + חס ז0ש₪0% באפשרות ...6חסו+0 שבתפריט 5|ססד (תרשים 1.4). 7% ח0סו58|800 76% זסזזם אהלחץפ :16% לחוס: הספס6אם 16% לחוסקא63זם 16 לחשוחוחס-) ד סש תרשים 1.4 בכרטיסיה ₪0 (תרשים 1.5) נוכל לקבוע ולהגדיר לעורך הגדרות שונות. תרשים 1.5 8 ₪6 - ערכת כלים * 670606% אהּ)הץ5 40%0 - קובע אם ויז'ואל בייסיק תתריע על שגיאות תחביר בקוד שנכתב. + הסןהז266!3 313016 / 6זוטן₪60 - קובע האס חובה להצהיר על משתנים לפני השימוש בהם בקוד, או לא. + 151116700075 1 0+4₪ - קובע האס תיבת רשימה (ראה תרשים 2.7) תופיע באופן אוטומטי (בזמן שמקישיס נקודה לאחר שס הפקד), והאם היא תכלול את כל המאפיינים והשירותים השייכים לאותו פקד, או לא. + 0+ח] 016% %0+40 - קובע האס יופיע חלון מידע על הפרמטריס של הפונקציה (ראה תרשיסם 2.8) בכל פעס שכותבים את שמה בקוד, או לא. + 5סוד 0818 40+0 - מציג את ערך המשתנה (בזמן ריצה) בכל זמן שסמן העכבר מוצב על שמו, כדוגמת התרשים הזח: (008:)) [חוזס] - 66)1ן0:? מ [> ו [+ 0 ] )סו 1חםוחו0) סגו פופשוזק 5 = זטזחגום?) :זפ0)ח| 45 זטוחנום) חזום ] + זםזח0ום= = זטזחטוס6 זםזו6 = זפוחנוסס)] 0 ד = וזם חסו ד זפזהוס0 = | זו תרשים 1.6 סרגל הכלים (זבּם|ססד) סרגל הכלים (ראה תרשים 1.7) מכיל לחצני קיצור לפעולות שכיחות. את כל האפשרויות שמספק סרגל הכליס מספקת גם שורת התפריטים (ואפילו יותר), אך פעולות שכיחות החוזרות על עצמן מצויות כסמלים על הסרגל לנוחות המתכנת. | ₪ ב ?< ₪ 5 8% ₪ || | ₪99 0|₪ ש|0-. תרשים 1.7: סרגל הכלים כדי לדעת מהי משמעות כל לחצן בסרגל הכלים, הצב את סמן העכבר על הלחצן (ללא לחיצה עליו). לאחר שנייה או שתייס תתקבל תיבת טקסט (ראה תרשים 1.8) עס שס הלחצן ומשמעותו - זהו תיאור כלי (סודוססד). פרק 1: מרכיבי המסך 29 זסזס!קא= 66%[סו תרשים 1.8 הסרגל המוצג בתרשימיס הוא הסרגל הסטנדרטי. ניתן להוסיף לסרגל כלים נוספיס, כפי הצורך. בחירה באפשרות 318פ!ססד מתפריט שפו/ מציגה את התפריט הזחת: 5זהּם|ססד התפריט מאפשר להוסיף ולהסיר סרגליםס שוניס. בחירה באפשרות )!50 תגרוס להוספת הסרגל הזה: סרגל וה מסייע בעיקר לעריכת שורות הקוד. בחירה באפשרות 6₪5+0₪0126 תציג את החלון הזה : 6וחזס)5ו-) 1-ו 53 ₪ הַטפפס -] זססוט= וחזס= = ] חפ לטספ זסת5 - ] 0 ₪6 - ערכת כלים מחלון זה ניתן לערוך ולהתאיס אישית את סרגל הכלים ולהתאימו לדרישות. בכרטיסיה 5זפ!ססד ניתן ליצור, לשנות שס, למחוק או לאתחל מחדש את סרגל הכלים. הכרטיסיה 60778005 מכילה רשימת פעולות אשר ניתן לגרור אותן אל סרגל הכלים או אל שורת התפריטים, וכך להוסיף אותן באופן ידני. הכרטיסיה ח6%0ק0 מאפשרת לשנות את גודל הלחצנים, להוסיף לתיאור הכלי (המופיע עס הנחת סמן העכבר על פני הלחצן) את מקש הקיצור המקביל בפעולתו ללחצן. בנוסף, באמצעות כרטיסיה זו ניתן להוסיף ייתנועהיי לשורת התפריטים, כך שלחיצה על אחד התפריטיס בשורה תגרוס להצגת התפריט כולו בתנועה הדרגתית ולא בצורה פתאומית. את סרגל הכלים ניתן להציג או להסתיר על ידי האפשרות 5ז3פ!|ססד שבתפריט שסו/. ארגז הכלים (אסם!|ססד) | |8 חב תרשים 1.9: ארגז הכליס כל דבר הוא ''אובייקט'י. 'יפקדי' הוא סוג מסויס של אובייקט. בארגו הכליס מצוייסם פקדים (015ז+ח60) שוניס שניתן לשלבס בטופס. כל פקד הוא מחלקה (0!855) המספקת שירותים, והוא מיוצג לרוב על ידי קובץ אסס. לארגז הכליס ניתן להוסיף באופן דינמי פקדיס נוספים, ועל כך בפרק 3. אם ארגז הכלים אינו מופיע על המסך, ניתן להציגו בכל רגע בבחירת האפשרות אסט|ססד שבתפריט שפו/. פרק 1: מרכיבי המסך 31 בפרק 3 נעסוק בהרחבה בפקדים השונים ובתפקידיהם. ככלל, העבודה עם ארגו הכלים מתבצעת בבחירת הפקד מהארגז ותיחוס מקומו באזור הרצוי בטופס. תרשים 1.10: קביעת מקום הפקד על פני הטופס חלון הפרויקט (ו6זסוקאם +66[סזס) וז - )ספ|טזק (0[6661ז) 66%1[סוק 5וחיום] 05% (ח6קטוחיז]) השקטווחו 3 5 5 וכםם: וי 56ב 1ב ]| רח 1 תרשים 1.11: חלון הפרויקט חלון הפרויקט (זפזס!|קאם 601[סזק), ולמעשה - סייר הפרויקט, מציג את כל הקבציס הכלולים בפרויקט. יישום ויז'ואל בייסיק מורכב לרוב מטפסים - פוחזסת (קבצי וחז)) וממודולים - 8000165 שהס קבצי הגדרות (קבצי 585). כלומר, כל טופס הוא קוב המאופיין בסיומת 1 והמודול הוא קוב בעל סיומת 885. את כל הקבציס האלה (וחז1 ו-285) מאגד קוב אחד - קוב הפרויקט, המאופיין בסיומת מפט. פרויקט בוויז'ואל בייסיק יכול להכיל סוגי קבציס נוספים. יישוס המכיל שני טפסיס (פוחזס=) ומודול (6!ט0סו) אחד, יכלול למעשה ארבעה קבציס שוניס: שני קבצי חחז1 לשני הטפסים, קוב 85 אחד למודול, וקובצ קפסש אחד שהוא קוב הפרויקט. מלבד קבצי חז1 ו- 885 יכוליסם להשתתף בפרויקט קבציס מסוגיס נוספים ואף הס יוצגו בחלון זה. 2 6ם - ערכת כלים בחלון הפרויקט (זפזס|סאם 601[סזק) נמצא את שסם הפרויקט ואת שם הקוב בו הוא נשמר (בסיומת ספט). תחתיו מוצגת רשימת הטפסים ושמות הקבצים (11), ולבסוף שמו של המודול והקובצ בו הוא שמור (585). בראש החלון, תחת הכותרת המכילה את שס הפרויקט, נבחין בשלושה לחצנים. הימני - בעל צורת תיקיה ב- 95 פששסחו/ - מציג את רשימת הקבצים בחלון בפורמט הייסייריי של 95 פשוספחו/ (ומכאן שמו). משמאל נמצא הלחצן 20[80%1) שפו/, אשר לחיצה עליו מביאה את הטופס למבט עיצוב, שבו נוכל לראות את הפקדיס השוניס המרכיביס את הטופס. הלחצן השמאלי ביותר - 6006 6ו/ - מציג את הטופס במבט קוד. מחלון זה ניתן לשמור את הקבציסם, או לחילופין למחוק אותס מהפרויקט. לחיצה ימנית בעכבר כשהוא מצביע על אחד מהקבצים, תציג תפריט אישי עס מיגוון אפשרויות (ראה תרשים 1.12). ביניהן האפשרויות 586 |ו-₪6₪00/6 השומרות ומוחקות את הקבציס בהתאמה. 1 - ]60|סז (016661ז) 6661[סיוק 5וחיוס-] 05% (ח6קסחחז)) הסקסוחיו 35 5 )= ה 6) טסו 5 + א 338356 !וח 58%6 ...5 23:38833556]רח 53%6 33356 ]רה סרח ...-זחוזם 5 ₪ 6 6 תרשים 1.12 את חלון הפרויקט ניתן להציג בכל רגע בבחירת האפשרות זפזס!|קאם +66%[סזק שבתפריט 18/, או בלחיצה על המקשיסם 8+!ז+0. פרק 1: מרכיבי המסךך 33 חלון המאפיינים (שוססחו// 65ו1ו6כסזוק) [א' 1גנת סע - 6065 סע [חוזס] | 60268 שוצס | גפ רנוי בואפיינים 00 ך 3 -2 [* 1גננ סק חסוזקבּ:) ב מ 13/01 15310115 16 506 >מתנס מ % גנב זגיס[06 01 3 16 80+5[ 0 .100 הסבר איור 1.9: חלון המאפייניס חלון המאפיינים (עוססחו/ 65וז6קסזש) מכיל את כל מאפייני הפקד. לפקדים שוניס יש גם מאפייניס שוניס; יש מאפיינים ייחודיים לפקדים שונים, אך בדרך כלל רוב המאפייניס משותפים לכל הפקדים. בראש החלון נמצאת תיבה נפתחת - תיבת הפקדים, אשר מכילה את רשימת כל הפקדים שעל פני הטופס. בחירה באחד מהפקדיס שבתיבה תשנה בהתאמה את תוכן רשימת המאפיינים, לזו התואמת לפקד הנבחר. כלומר, רשימת המאפייניס משתנה בהתאס לפקד שנבחר מהרשימה. עדכון ערך המאפיין נעשה באופן פשוט ביותר. גולליסם את הרשימה עד להופעת המאפיין המבוקש. המאפיינים מסודרים בכרטיסיה אחת לפי קטגוריות ובכרטיסיה שנייה לפי סדר האייב, ומקלים בכך על החיפוש. מצד שמאל יוצג שם המאפיין ומצידו הימני יוצג ערכו (מספר, טקסט, שסם קוב וכדוי). כל שנשאר לעשות הוא, למחוק את הערך הקודם ולעדכן בערך חדש. במאפיינים מסוימיס נתבקש לבחור ערך מטוות ערכים מוגדר מראש. במקרה כזה לא ניתן להקנות ערך חדש השונה מהאפשרויות המוצעות. על משמעות המאפיינים נלמד בפרק 4. גסם את חלון המאפיינים ניתן להציג בכל רגע בבחירת האפשרות 665ז6קסזק שוסחוצ מתפריט שש6ו/, או להקיש 4=. 4 6 - ערכת כלים חלון המתאר (שססחוצ +ווסע3 | וחזוס-) חלון המתאר (עוססחו/ +טסץ8. 1 חזס=) מציג בצורה גרפית מסך קטן המדמה את המסך האמיתי. באמצעות מסך גרפי וה ניתן למקס את כל הטפסים בפרויקט ולבחון את מיקום כל טופס ביחס לטפסים האחרים. באותה צורה בה מוצגיס הטפסים בחלון כך הס יוצגו למשתמש. תרשים 1.13 מדגיס תצוגה של שני טפסים. במקרה זה 2חחזס= יחיה מעל 1וחזס= באותו מיקוס, באותו גודל ובאותו יחס. ]גוסעב. | חזזס -] תרשים 1.13: חלון המתאר להצגת חלון המתאר בחר באפשרות עשסוסח:/ +טסע3 1 וחזס] שבתפריט ששו/. דפדפן האובייקטים (ז6פצוסיום +00[66) תפקיד דפדפן האובייקטיס לספק מידע על הפקדים הקיימים בוויו'ואל בייסיק וביישומיס נוספים. בנוסף, ניתן לראות דרכו את כל השירותים והמאפייניס השייכים לפקדיס אלה, לקבל עליהס עזרה ולהדביקס לתוך שורות הקוד ביישוס. פרק 1: מרכיבי המסך 35 <1ם] = | ז5 סז זס6ן0 0 םי 5 2 461180 ₪5 <פובמ0ואָ> ‏ 9 535 | אצוי ו סוה 5% ₪5 300 טס ₪5 ₪5 300 זו 8 |= 5ז וו ₪5 1 6|]355 הטשוק 1 +01 זסמחזסו/] תרשים 1.14: דפדפן האובייקטים הפריטיס בדפדפן האובייקטיס מספקים מידע אודות מאפיינים, שירותים, שגרות וקבועיס אלה: 1. 8018[סז: - פרויקטים המוגדריס על ידי המתכנת. 2 (₪ ]0 0810ח9ז5) 51006 - פקד ₪ 01. 3 (28510 |808ו/) םש - חו זווגוס בוויו'ואל בייסיק. 4. (חסווהסו|סק/ זסז 28810 |1808/) 4ם / - שפת ויזיואל בייסיק ליישומיס. 5 (6חחוד חטח 23510 |הּטפוע) אשחם/ - זמןו ריצה של ויז'ואל בייסיק. רשימה זו מופיעה בתיבה נפתחת שנמצאת בחלק השמאלי העליון של חלון הדפדפן, כמודגס בתרשיסם 1.15. 6 6ם - ערכת כלים יו 5% 05 ה רתחטו|ת 0 3% וטוה 9 8 8 סה ₪ 50 > חח זתסוב6וומסה שב 10 >> ה ₪ 80 :3 | 60 דחפ מב <85וזזמו | |(> תרשים 1.15 תיבת הטקסט הנפתחת בחלון עזהזטו |86%[סז היא +א6ד ח56870. בתיבה זו ניתן להקליד מילה אחת או יותר, ובלחיצה על לחצן | 56801 להתחלל בחיפוש. חלון הדפדפן מתחלק לשלושה חלקיסם (ראה תרשיס 1.16). כדוגמה הקש את המילה '/+א8+'י ולחץ על לחצן החיפוש (כמודגס בתרשיס 1.16). בחלון מופיעיס כל המאפייניס והשירותיסם המכילים את המילה /%%א18'י. בכל שורה של תוצאת החיפוש (3850/15 ח0ז568) מופיע מידע על מקור המאפיין, השירות או הפקד (ץזפּזסו 1), המחלקה אליה הוא משתייך (0!855) וגס המאפייניס והשירותים, כאשר המילה היא מאפיין או שירות (08חח6). לחיצה על השורה תגרוס להצגת כל המאפייניס והשירותיס בחלק האמצעי של חלון הדפדפן (כאשר היא מתייחסת לפקד, לדוגמה). לחיצה על אחד המאפיינים או השירותים האלה תגרוס להצגת הסבר קצר בחלקו התחתון של החלון, על המאפיין או השירות שנבחר. פרק 1: מרכיבי המסך 37 <1ם). | זז 601ן 0 שש |9 || [+[+. [- ₪ מייזם ] ו אד ₪ 5 חז = 06|07ך >> הז ] 44 כ חו ]ו ך 368 אסספזטזוק ₪4 בי | ו ך > זסוחוזק ₪4 פ חו 4 + רד 6- וה הר ₪ ם/3 אא ד 1 זט רחשו 658 | ו 5 5-]]=. 05 ₪ 5וח 15 יס 568 הסחטםחטוס0 ₪4 אסספזטזסוק ₪4 זפזחוזה ₪4 טסו ₪ הז ₪ 8 ₪ טחוזז 5 )א ד עהפמםזק 0%ם)א6 ד פע 01 זסטחוטוון ]חס 176 חן חו9+ח60 151 106 5/5015הזווזסת תרשים 1.16 באמצעות הלחצן זה סקוו סד 600 ניתן להעתיק את שם הפקד או את שם המאפיין או השירות שנבחר, ולהדביקו בשורות הקוד של ויז'ואל בייסיק. בחירה באחד המאפייניס או השירותים ולחיצה על לחצן ₪ 6!0ה, תגרוס להצגת חלון עזרה בנושא הנבחר. כדי להציג את דפדפן האובייקטיס יש לבחור באפשרות 270581 +00[86 שבתפריט שש6ו/, או להקיש 2=. 8 6ם - ערכת כלים 2; צעד ראשון בפיתוח יישום עד כה עסקנו בהיבט התיאורטי של הכליםס העומדיס לרשותנו. בפרק זה נצעד צעד מעשי ראשון לפיתוח היישוס הראשון שלנו בוויז'ואל בייסיק. נבחן את תהליך פיתות היישוס מתחילתו ועד סופו. בשלב זה של הלימוד לא ניצור קובצ הרצה וערכת התקנה; נשאיר ואת לפרק המסייס את ספרנו. בראש ובראשונה יש לדעת איזה יישוס אנו עומדיס לפתח, מה ביכולתו לבצע ומה מצפה ממנו המשתמש. כלומר, מה המשתמש רוצה להשיג. נתחיל את העבודה בתכנון מקדים על הנייר ולאחר מכן ניישס את אשר למדנו בפרק המבוא לספר, שפיתוח כל יישוס בוויו'יואל בייסיק צריך לכלול ארבעה שלבים : א. ‏ יצירת ממשק משתמש. ב. | קביעת מאפיינים. ג. | כתיבת הקוד. ד. | יצירת קוב הרצה (וערכת התקנה). נחליט כי היישוס הראשון שלנו יהיה הדוגמה שהצגנו בפרק המבוא, בו נאפשר למשתמש להכניס מספר כלשהו. כאשר הוא ילחץ על הלחצן העלאה בחזקה תוצג לפניו החזקה הריבועית של המספר שבחר. עתה נפנה למחשב ונפעיל את תוכנת ויז'ואל בייסיק. הרצת ויז'ואל בייסיק תיעשה בסדר הבא: 1. לח על לחצן התחל |ופ. (1ז8ז5 בגירסה האנגלית). 2 בחר באפשרות תוכניות (פחזחָסז₪ בגירסה האנגלית). 3 בחר באפשרות 53516 |ה508ו/ +0501ז₪16. 4 בחר באפשרוה ‏ /] ויז/ואל בייסיק. פרק 2: צעד ראשון בפיתוח יישום 39 אחרי שהתוכנה סיימה את הטעינה לזיכרון, מופיע חלון דו-שיח +0[66ז 6 כמודגם בתרשיס 2.1: חסוסבּסווקקה 8/י ו = אסע וכ זהפוחוססם תרשים 2.1 אפשום |פשחס > 51 חוטבה ו 1 אששוססם | ₪אם 8%ש60ב = 3ו3)י-י ןה ל 9% 0% % 5% << %% חסוסבּשו|קקה 115 605[סזק 2858 | בזבק/א סל זהַבחבּו] 5% ₪5 > 5 > בחלון ה יש שלוש כרטיסיות: שפא - לפתיחת פרויקט חדש, פַחוַ%פ1אם - לפתיחת פרויקט קיים, ₪866 - לפתיחת פרויקט שרצ לאחרונה. מכיון שזהו הפרויקט הראשון שלנו, נבחר בכרטיסיה ש6א, ובה נבחר בסוג קובצ 5 5+40370. לחיצה על לחצן ח76ק0 תפתח פרויקט חדש ותכניס אותנו לסביבת הפיתוח של ויז'ואל בייסיק. 0 26 - ערכת כלים יצירת ממשק המשתמש בסיוס בניית ממשק המשתמש, הטופס אמור להיראות כמודגס בתרשים 2.2. <ום] = | [חוזס] .₪ הכנס מספר: | העלאה בחזקה תרשים 2.2 כדי ליצור את ממשק המשתמש נבצע את השלביס הבאים: 1. נבחר מארגז הכליס את האובייקט 43 |806 ]. 2 נציב את האובייקט במקומו על הטופס (ראה תרשים 2.2). אם שטח הפניס של האובייקט גדול או קטן מדי, ניתן לשנות את גודלו בגרירת אחת משמונה הנקודות הסובבות את האובייקט (כפי שאנו נוהגיס במקריס אחרים). אס נקודות אלו אינן קיימות, לחיצת עכבר בשטח האובייקט תגרוס להופעתן. 3 באופן דומה נבחר את ו א0ם)א6ד ונמקס אותו לשמאל התווית - |806 1. 4 כך נפעל גסם עס הלחצן, הוא הפקד ב- הסז ווה ס0. ניתן להזזט אובייקט ממקוס למקוס בטופס על ידי גרירתו. בהצבת שלושת האובייקטיס במקומם, סיימנו את שלב יצירת ממשק המשתמש ונעבור עתה לשלב הבא, קביעת המאפייניס. קביעת המאפיינים תוכל לקבוע ערכיס למאפייני האובייקטיס, בשתי דרכיס: באמצעות חלון המאפייניס או בשורות קוד. בספר זה נסגל לעצמנו את הכלל הבא: כאשר אנו קובעיס ערכיס ראשוניים למאפיינים, נקבע אותס באמצעות חלון המאפיינים. כדי לשנות ערכי מאפייניס באופן דינמי נשתמש בשורות קוד. יש לוודא שחלון המאפיינים מופיע על המסך. פתיחת תיבת האובייקטים הנגללת תגלה לנו 4 אובייקטים. שלושה מהס הצבנו בעצמנו על הטופס, והרביעי הוא הטופס (חחזסת) עצמו. פרק 2: צעד ראשון בפיתוח יישום 41 נתחיל בתהליך קביעת המאפייניס בסדר הבא : מתוך תיבת הפקדים נבחר ב- 1 חחזס=. נשנה את ערך המאפיין ההא מ-1חזסת ל-+ח6חסכאם זז כמודגם בתרשים 2.3. ₪ ]הפחספא =חזז] [ ספ 0 | גפ +משמסק אסמנת1 כנ-1 68 13000008 ךז 1-6 תרשים 2.3 המאפיין חא קובע את שס הפקד. שם זה נציין בכל פעס שנבצע פעולה הקשורה בפקד. סיבת שינוי התכונה 86 מ-1חזסת ל-)ח6חהססאם הזז נובעת ממניעיס מקצועיים. בתכנות מקצועי שמות הפקדים מקבלים משמעות המבטאת את תפקידם, ובפרט כאשר יש פקד אחד החוזר על עצמו מספר פעמים בטופס. נניח, לדוגמה, כי לצורך קליטת פרטי סטודנט במחשב האוניברסיטה נשתמש בשלושה פקדים מסוג אסם!)אפץ. במקוס ליצור שלושה פקדים 11א78, 12א6ך ו-8%%3ד לקליטת שס הסטודנט, כתובתו ומספר הטלפון שלו, ניטיב לעשות אס נקבע לשלושת הפקדיס את השמות 01%886, 1011007655 ו-6חסחק016!6, בהתאמה. הנוחות והמקצועיות יבואו לידי ביטוי בעיקר בפיתוח הקוד, בהן נעשה שימוש רב בשס הפקד. צירוף הקידומת 6% לשס הפקד מסוג א0סם)אפד וקידומת וח לשס הטופס, הוא מוסכמה בין מתכנתי ויז'ואל בייסיק, וכך ננהג גס אנו. בטבלה 2.1 מרוכזת רשימת הקידומות המקובלות לחלק מהפקדים. טבלה 2.1 |פקד | | משמשת | | קידומת | 00008 תיבתדרשית | | א | > 080₪| ושתמוצמדת | | 49 | | תיבת רשימה מוצמדת 2 6ם - ערכת כלים 1 0 ₪- כפי ששינינו ‏ את המאפיין ₪6ח8א, נקבע בטופס טח6חסקאםהח1) למאפיין חסוזופסקקז5187 את הערך השני המוצע ח66ז50ז10ח06 - 2. מאפיין ה קובע את מיקוס הטופס במסך. הערך שבחרנו יגרוס להצבת הטופס במרכז המסך. באופן דומה נמשיך עס שאר הפקדים בטופס, בהתאם לטבלה 2.2. ד סוה א חטא!ואז טבלה 2.2 ]אסך וח 1 ס6חחזה 1 הזגוצזוס! חסוזק8) הכנס מספר: 1 60 סחחזה 1 סקאס חסוק68 העלאה בחזקה פרק 2: צעד ראשון בפיתוח יישום 43 שיס לב, כי הערך ''%1א6ד'י הכתוב במאפיין 1א6ד של האובייקט וטא נמחק ונשאר ריק. הסיבה לכך היא, שאנו רוציס שבשעה שהיישוס יפעל התיבה וחטא)א% תהיה ריקה ולא תופיע בה המילה 'י%1א6דיי, וכך שהמשתמש יוכל להקליד בה מספר כרצונו. כמו כן, המאפיין 6וח8 של הפקד 80611 1 שונה ל- וחטאופו, למרות שניתן לוותר על כך. בעתיד לא נצטרך לפנות אל פקד ה משורות הקוד, כי והו ערך קבוע, אולס מסיבה מקצועית נשנה גס אותו. נרחיב מעט את הדיבור על טבלה 2.2. המאפיין +א6ד קובע מהו הטקסט אשר יהיה כתוב בתוך תיבת הטקסט (א180א76). במקרה שלנו, כפי שכבר הוזכר, פקד וטא משמש לקליטת מספר ולא להודעה, ולכן השארנו תיבה זו ריקה. המאפיין חסוק68 קובע את כותרת הפקד |1888 (מה שיהיה רשום בו). מאפיין גו מקביל למאפיין +א6דך באובייקט מסוג א0ם)16%. בפקדיס |806] ו-חסאטםסחהווהס6 לא קייס המאפיין %ד, אלא רק המאפיין המקביל לו - ח0%0ק08. לכך, בדוגמה שלנו, נקבע המאפיין הסו0ק68 של הפקדיס וחטאופו ו-1ח6חסקא= חס ל-ייהכנס מספר:י ו-'יהעלאה בתחזקהיי, בהתאמה. לשאר המאפיינים לא התייחסנו, כי אין צורך בכך. לצורך יישוס הדוגמה שלנו מספיק לשנות רק את המאפייניס שהתייחסנו אליהס. השלב השלישי חינו כתיבת הקוד. כתיבת הקוד פרויקט בוויו'ואל בייסיק אינו מחייב בהכרח כתיבת שורות קוד. יישומיס פשוטיס יכולים לפעול בהצלחה ולשביעות רצון גס ללא שורת קוד אחת. אולם, היישומיס המקצועיים אליהס אנו שואפים, יחייבו בוודאי כתיבת שורות קוד לא מעטות. גס ביישוס שלנו, על אף פשטותו, עלינו לכתוב שורות קוד. בסעיף וה נדון במושג מבט קוד (0006 שש6ו/) של הטופס. לכתיבת שורות הקוד עלינו להיעזר במרכיבי שפת ויז'ואל בייסיק (או במיליס אחרות בתחביר - אפ)חץ5 של השפה), אשר נלמד במהלך הפרקיס הבאים (פרקים 5 עד 11). אולס את עקרונות השימוש בחלון הקוד נלמד כאן ועכשיו. לחיצה על לחצן שפו/ 68 (השמאלי ביותר) שבחלון הפרויקט (זפזס!|קא= 8[סזק) מביאה אותנו למבט קוד של הטופס, כמודגם בתרשים 2.4. 4 6ם - ערכת כלים כ כ אירועים יי [008:)] | חוזס] - 66)1ן0:? א ()080. 1 וחזס= גוס פופשוזק סטש בח 0 6ז6!מהוס= 1 30 זסם 1 זמַ/יכְהָבּזסם 1 66000% חוכש 01 תרשים 2.4: מבט קוד - 0008 ש6ו בחלק העליון של חלון הקוד נמצאות שתי תיבות משולבות (נפתחות) 8008[ ו- 6 סס. התיבה השמאלית 20[8048) מכילה את רשימת כל הפקדים הקיימיס בטופס שיצרנו, כולל הטופס עצמו. בראש הרשימה מופיעה המילה (|819ח026). מילה זו אינה מציינת פקד, והיא מפנה אותנו להגדרות הכלליות של הטופס (להגדרות אלו נתייחס מאוחר יותר). אס אין לנו הגדרות כלליות, לא תהיה למילה זו משמעות עבורנו. התיבה הימנית 270060016 (בתרשים 2.4 היא פתוחה), מכילה את רשימת האירועיםס להם יודע להגיב כל פקד ופקד. תכנות מוכוון אירועים נעשה אתנחתא קצרה ונסביר את המושג אירוע (וחפעם). ויז'יואל בייסיק הינה שפה מונַעַת א*רועים (חסטוזס +חפעם). כל פקד יכול להימצא באירועיס שונים, או במיליס אחרות, יודע להגיב לאירועים מסוימים שהופעלו עליו. ניקח כדוגמה את הפקד הזחו 60 (לחצן פקודה), אשר ניתן ללחוץ עליו לחיצה אחת עס העכבר. בפעולה זו הפעלנו על הלחצן את האירוע אסו!0. ניתן לשנות את תוכן הפקד אסם)אסך (תיבת טקסט), או במיליס אחרות, להפעיל עליו את האירוע 86ח08. בפנותי לפקד זה הפעלתי עליו את האירוע 0010005, אך ברגע שייהסרתי את הזרקורים'י ממנו והפניתי אותס לפקד אחר, התרחש לגביו האירוע 5טסס-51ס 1. בהפעלת האירוע עדיין לא תס העניין. יש להגדיר איזו פעולה תתבצע בשעה שיתרחש האירוע. לחצן פקודה יודע להגיב לאירוע 6%ו01, אך מה שיתרחש כתוצאה מלחיצה פרק 2: צעד ראשון בפיתוח יישום 45 עליו - ואת עלינו המתכנתיסם להגדיר. אין הכרח להתייחס לכל האירועים הקיימיס לפקד. אס לא נגדיר לאירוע דבר, הפקד לא יגיב כאשר יתרחש אותו אירוע. בשלב זה נכנסות שורות הקוד. כשנרצה שפקד יגיב לאירוע מסוים, עלינו לכתוב עבורו את שורות הקוד המגדירות לו, או לתוכנית עצמה, כיצד להגיב ולהתנהג בזמן שהאירוע מתרחש. ראוי לשיס לב לכך, שישנס אירועיס המפעילים אירועיס אחריס בזמן התרחשותם. לדוגמה, כאשר נוצר האירוע 6סו!0!פ (לחיצה כפולה), הוא גורס גס להפעלת האירועים חעוס60פסו, ק(60פטסו ו-אסו01. על כן, כשכותבים קוד מתאיס לכל אחד מהאירועיס הללו, יש לקחת בחשבון שהקוד של כל האירועים ייצא אל הפועל. חזרה לכתיבת הקוד נחזור לתיבת האירועים 66001786סזק. בתיבה גו רשומיס כל האירועיס שהפקד יודע להגיב להם. התגובה עצמה תלויה בנו ובשורות הקוד שנכתוב לאותו אירוע. ביישוס שלנו יש לחצן פקודה +0780קא6705, אשר בלחיצה עליו אמור המשתמש לקבל כתוצאה את ריבוע המספר שבחר בו. מזכיר משהו?ז נכון! בפעולת לחיצה זו אנו מפעילים למעשה את האירוע 0110 על הפקד. ניישס עתה את מה שלמדנו. בתיבת 020[8₪) נבחר בפקד %ח6חססאם0 6 ובתיבת 06 נבחר באירוע א6116. באופן אוטומטי נקבל את שורות הקוד הבאות: ()01108% 6תסתסקאמסתס כמט5 1866-כ מט5 תמ לחיצה כפולה על הפקד במבט עיצוב תפתח באופן אוטומטי את חלון הקוד בשיגרה 6% של הלחצן (כמודגס בתרשים 2.5). |< |ם]=. [חזס] ₪ <וםו -- ו היווווו [+ ו ב החסקאו1 6 ] ₪ תרשים 2.5 6 6ם - ערכת כלים השורה הראשונה היא שורת ההצהרה על שיגרת האירוע א0ו01, המופעל על הפקד סקא ח6. השורה השנייה 5ט5 0ח₪ מסיימת את השיגרה. מה שנותר לנו לעשות הוא לכתוב בין שתי שורות אלו את שורות הקוד המתאימות, אשר יורו לתוכנית כיצד לפעול בעת התרחשות האירוע 06ו01. לפני שניגש למלאכת הכתיבה, ניוכר במה שלמדנו במבוא בדבר קביעת מאפייניס באמצעות קוד. שינוי או קביעת ערך למאפיין יתבצע באופן הבא : "צְמבהכ" = מ%610ק08. סתה8א101 או עס הפקד א80)א6ד: ".10פהת 81מ715 06םת1ם1082 ת8 1" = %6א06.716מם66ם656א6 באותו אופן נפעל גם ביישום שלנו. אנו מצפיסם, שכאשר נלחצ על הלחצן 'יהעלאה בחזקהיי תופיע בתיבת הטקסט וחטא!)א1 התוצאה שהיא ריבוע המספר שהמשתמש הקליד. יוצא, שהמאפיין העומד להשתנות הוא המאפיין +א6ד של האובייקט חחטאאא). בלחיצה על הלחצן ''העלאה בחזקה'י מאפיין זה אמור לקבל ערך חדש. לפי זה, תחילת שורת הקוד תיראה כך: = 76%%.תטאא> מהו הערך החדש שיתקבלז הערך החדש יקבל את התוצאה שהיא הריבוע של הערך הישן, או במילים אחרות הערך הישן כפול עצמו: %א76.תטא6א> * 6א76%.תטא6א> ובחיבור שני חלקי המשוואה נקבל: %%.תטאא6 * 6א76%.תטאא% = 6א76%.תטא6א6 המחשב מחשב תחילה את האגף הימני במשוואה (עם הערך הישן של וחטאאו) ורק אחר כך הוא מבצע את פעולת ההשמה באגף השמאלי (ומתקבל הערך החדש). זוהי גם התמונה השלמה כמודגס בתרשים 2.6 (בדוק בהתאמה את חלון הקוד שלך). |< וםן-. וארי וי כ | ו | 0 ] [)א6116 סמבמתסקאמבמש כגום בסהטנעק %%.טטוסא5 * 6א6ך.מעו5א5 = מא<שך.סעוסאם מגום במם תרשים 2.6 פרק 2: צעד ראשון בפיתוח יישום 47 לשמירה על תבנית התכנות נקפיד ללחוץ על מקש 780 ולכתוב את שורות הקוד הפנימיות מעט ימינה (ראה תרשיס 2.6). כל שנותר, הוא להפעיל את היישוס (בזמן ריצה של התוכנה). להפעלת היישוס לת , או הקש 5=. להפסקת פעולת היישוס ולחזרה למצב פיתוח לח4 = */ (אם שאלת את עצמך כיצד המשתמש יוכל לצאת מהתוכנית, היעזר בסבלנות והמתן לתרגיל מסי 1 בסוף הפרק). קוד אוטומטי בוויז'ואל בייסיק קייס קוד אוטומטי, במטרה להקל על כתיבת הקוד. כדי לקבוע כותרת לפקד תווית (|1886) יש לקבוע ערך למאפיין חסו1ק68. בשורת קוד הדבר יתבטא בכתיבת שס הפקד, נקודה מפרידה ולאחריה שסם המאפיין. אך אל דאגה, אין צורך ללמוד את כל רשימת המאפייניסם בעל פה. ברגע שכתבנו את הנקודה הבאה לאחר שס הפקד, מופיעה באופן אוטומטי רשימה נפתחת (ראה תרשים 2.7) המכילה את כל המאפייניס (והשירותים) של הפקד. כל שנותר הוא לבחור את המאפיין המתאיס וללחוצ על פד כדי לגרוס לכתיבתו בשורת הקוד. 3 ואו (008:)] [חוזם] - 1ו66ןס:?] א [* ו | - חספ ] []אסו!0) ]השהסכ;א שטותס פגו5 שובעחק .החגח)א! 1 הח הזה סמה ₪5 3600 ₪5 8 ₪ זוז 00 ₪5 3 ₪ 33 ₪ תרשים 2.7 באופן דומה, מתבצעת הפעולה האוטומטית הזו כאשר מתחילים בכתיבת פונקציה כלשהי. ברגע שמסיימיס את כתיבת שס הפונקציה, מופיע אוטומטית חלון (ראה תרשיס 2.8) המכיל את רשימת הארגומנטיס שצריכיס להישלת אל הפונקציה. 8 6ם - ערכת כלים |<1ם) =. (008:)] [חוזס] - 66)1ן0:? א [* ו [* 010 ] []אסו!0) ]הפהסכ<א שבחתס פגו5 שובשחק ]8 = ]6 [ .חטותזא! | מס 45 (5270 25 5070)וב/י פו5 8ח= תרשים 2.8 סדר במבנה הקוד בכתיבת הקוד חשוב להקפיד על כתיבה ברורה וקריאה. כמתכנתים, פעמים רבות עלינו לפענח קוד של מתכנת אחר, או אפילו קוד שאנו כתבנו לפני זמן רב. אס שורות הקוד לא תהינה קריאות וברורות, קשה יהיה להבין את אשר נכתב כבר, ובוודאי יהיה קשה לשלב קוד חדש בתוכנית. אחד הדבריס החשוביס בכתיבת הקוד הוא שימוש בשמות משמעותייס עבור הפקדים, משתנים, שגרות, פונקציות ועוד. כאשר בין שורות הקוד נמצאת השורה הבאה: סתהאת5 = 6₪א76. סתהאא> נבין כי הפקד 6חהּא6א> (מסוג 686%א16) מציג שס פרטי כלשהו והמשתנה 562886 מכיל אותו. לשורה הבאה, לעומת זאת, אין משמעות רבה עבורנו: 2 = %א76%%1.78% דבר חשוב נוסף הוא התיעוד של שורות הקוד שאנו כותבים. לפני כל שיגרה מורכבת או שורת קוד שאינה ברורה מייד עס קריאתה, מומלצ להוסיף שורת הערה המסבירה את משמעות שורות הקוד הבאות אחריה. כדי לגרוס לשורת קוד להיות מובנת על ידי ויז'יואל בייסיק כייהערה'י, נוסיף בתחילתה את הת יי * יי (גרש). שורת ההערה נצבעת באופן אוטומטי בירוק (או בכל צבע אחר שהוגדר על ידך), וכאשר ויז'ואל בייסיק מהדרת את היישוס אין היא מתייחסת לשורות הערה אלו; היא מדפיסה אותן בלבד. את ההערה ניתן להוסיף כשורה נפרדת (תרשים 2.9), או בסוף שורת קוד (תרשים 0). אין אפשרות יילשתוליי הערה באמצע שורת קוד. פרק 2: צעד ראשון בפיתוח יישום 49 > = (006:)] [חוזס] - 1ו66ן0:?] א [+ ו [+ חזס?] ()080 | וזזס= סוס פופשיוזק סכ הזכ 108 הפע פזוססס פזנוספסםזס 115 ' זפסטוח| 35 חטצ! מזום 2 = הגוא :פחו₪טוסזסגופ פנוסעוא סז הַחו[|8ס ' (החוגו]) ועו |281) תרשים 2.9 > = (06ס:)) [חוזס] - 1ו66ן0:?] א [+ טנופעו] [- (1ח66)] (זסס5זח| 45 הגוי טגוסעוא מטום וחזסז סז פ|משוזם/י סח )חוזכן ' = וחט4 זחוזיק תרשים 2.10 הדבר האחרון ברשימת הדבריס שעלינו לעשות הוא השמירה על סדר הכתיבה של שורות הקוד. כתיבה מסודרת כוללת הוחה קלה ימינה (בעזרת מקש 180) של שורות פנימיות. בנוסף, אס ישנס מבניס מקונניס, יש ליידחוףיי ימינה כל מבנה בפני עצמו (ראה תרשיס 2.11). 0 6ם - ערכת כלים <וםן-. [008:)) [חוזס-] - 1ו66ןם:?) א ב (8 00110 ] [> (073ח66)] ()סטובץו/ סגום זססטוח! 35 | ,זפסטוח| 35 | חחזום 0 םד ו=וזםת 0 םד = ן|זםת | * | +חוז | 44] ו 0 0טפ בח= | תרשים 2.11 אס צריך לכתוב שורת קוד אחת המכילה פרטיס רבים, אין צורך לכתוב את הכל בשורה אחת; ניתן לחלק את השורה על פני מספר שורות בעזרת התו יי יי (קו תחתון) בסוף הקטע היישבורי'י. ויז'ואל בייסיק תתייחס לכל השורות האלו כאל שורה אחת, והקוד יהיה קריא יותר (ראה תרשים 2.12). |<1ם = [008:)) [חוזס] - 1ו66ןם:?) א [+ ו [+ 0 ] )סו 1חח ה 0 סטש פופשוזק 8 ₪8 סכ חום סחוז5 45 950 חזום ", 0555 , כ , 08ח48] 85% ] , 8ה45] 1פזוח זסם|פ5" = |ס5זו5 " 088!מחז= הזסז ההסהמפוטד , עול" 8 "12345678 = כ] פזפה//".8 50 פווספא= שם = 50 ₪ תרשים 2.12 פרק 2: צעד ראשון בפיתוח יישום 51 לחילופין, ניתן לכתוב בשורת קוד אחת שני משפטים שוניס (תרשים 2.13). כדי שוויזיואל בייסיק תדע שלפניה שני משפטים שונים, יש להפריד ביניהס באמצעות נקודתיים (*:'). <ום]ן- | (008:)] [חוזס] - 66)1ן0:? מ [* ו [* 0 ] )סו 1חםוחוחס) סגום פופשוזק 5 = זטזחווס2) :ז88וזח! 35 זטוחנווס חחזום זבזחגום) זחוז סוס בח= תרשים 2.13 סיכום הנושאים העיקריים שנלמדו בפרק סקרנו ותרגלנו את ארבעת השלביס בפיתוח כל יישום: א. | יצירת ממשק משתמש. ב. | קביעת מאפיינים. ג. = כתיבת קוד. ד. הרצת הפרויקט. הכרנו את האובייקטים |806 ], אסם)א6ד ו- הסזטום 0 חחח 0ס6). למדנו כי המאפיין 6וח8 קובע את שס הפקד, ושם וה מציינים בכל פנייה אל הפקד. הקפדנו על מתן שמות משמעותיים לפקדים, הכוללים קידומת המעידה על סוג הפקד. המאפייניס חסו)ק08 ו- +6%ד של הפקדיס |8086] ו-אסם)%א6ד בהתאמה, קובעים את התוכן הנכתב בהס. למדנו מהו תכנות מוכוון אירועים. לכל פקד יש אירועיס שהוא יודע להגיב אליהס. תפקידנו לכתוב את שורות הקוד אשר יבוצעו כתגובה להתרחשות האירוע. הפנייה למאפיין של פקד בשורת קוד נעשית על פי הכלל הבא : ערך = מאפיין.פקד 2 6ם - ערכת כלים תרגול מומלצ מאוד לבצע את כל התרגיליס. הס מקניס למתרגל הכשרה וניסיון וגם יכולת חשיבה תכנותית, ובנוסף הס משלימים נושאים שנלמדו בגוף הפרק. 1 שפר את היישוס שבננו יחד במהלך הפרק, והוסף לו לחצן פקודה (חסוט חח 600) שכותרתו יייציאהיי. לחצן זה, כשמו כן הוא, יאפשר יציאה מהתוכנית. הנחיה: הפקודה המסיימת את התוכנית היא 06חם. 2 צור טופס המכיל שלושה לחצני פקודה ותיבת טקסט (אסם!)א6ד) אחת. לחצן ראשון 'ישסח5'י יציג את המשפט ייחוזס/ סו|6רזיי. לחצן שני 'י06ו4ז'יי ינקה את תיבת הטקסט והלחצן השלישי ישואם'י יסיים את התוכנית. 3 צור את הטופס המוצג בתרשים 2.14. תרשים 2.14 המשתמש יקליד שני מספריס לשתי תיבות הטקסט השונות. לחיצה על לחצן 6% תגרוס לכך שבתיבה +/₪850 תוצג תוצאת המכפלה של שני המספרים. פרק 2: צעד ראשון בפיתוח יישום 53 3 פקדים (0!5ז4%ח0ס6) השלב הראשון בכל יישוס הוא יצירת ממשק משתמש, ולכן חובה עלינו להכיר היטב את הכלים מהסם הוא מורכב. כלי העבודה הס הפקדים (0!8ז4ח00), אשר נמצא אותס בארגז הכלים (אספם|סס1). בפרק זה נלמד להכיר את הפקדים הסטנדרטיים שבארגז הכליס, את תפקידס ואת אופן השימוש בהס. במסגרת זו נכיר גס חלק מהמאפייניס המיוחדיס לכל פקד. את שאר המאפייניס, המשותפים לכלל הפקדים, נלמד בפרק הבא. הכרת הפקדים הפקדים (40|8ח00) אשר נמצאיס בארגז הכלים (א0!80ס1) הס הכלים המשרתיס אותנו ביצירת ממשק המשתמש. זס%חוסק הס וו 6 המצביע (ז16חוסש) אינו פקד. תפקידו להביא את העכבר למצבו הרגיל המאפשר תנועה במסך, שינוי גודל חלונות ופקדיס שעל הטופס. פקד וה מציג תמונות מסוג פ5סְהחזוס, פחססו ו- 5 פצססחועצ ואחריס. תפקיד הפקד להציג טקסט (בדרך כלל ככותרת, או הוראה למשתמש). המשתמש אינו יכול לשנות את הטקסט הכתוב בפקד. פקד וה מקצה מסגרת לכתיבת טקסט, או לשס הצגתו. בניגוד לקודמו, המשתמש יכול לערוך את הטקסט שבפקד. פקד זה מכיל בתוכו באופן ויזואלי ופונקציונלי פקדיס אחרים. לכל הפקדיס שבתחוס מסגרת הפקד יש מכנה משותף (בדרך כלל הס יהיו מערך של פקדים). זהו לחצן פקודה המבצע פעולה או פקודה כאשר המשתמש לוח עליו. כמתכנתים, אנו קובעיס מהי הפעולה שתתבצע עקב הלחיצה. פרק 3: פקדים (170|5ח0ס6) 55 ₪0 אס0םא6060 ₪ חסשטם הסוזסס אסם+פו | = זהּם|!|ס]56 זהּם]|סז50 6 6ם - ערכת כלים ₪ 1:06 פקד זה מציג אפשרויות של כן/לא (סא/65ץ), או אמת/שקר (8|!56-/17708). כאשר קיימות בפני המשתמש כמה אפשרויות מסוג זה, הוא יכול לבחור ביותר מאפשרות אחת, או לחילופין באף לא אחת מהן. לחצן אפשרויות זה מופיע בדרך כלל בקבוצה של מספר פקדים מסוגו (לרוב הס מהווים מערך פקדים), המאפשריס למשתמש לבחור באחד מהס. המשתמש יכול לבחור רק באחד מהפקדיס בקבוצה, ואין לו אפשרות לא לבחור כלל. מקובל לאגד קבוצת פקדים אלה בפקד 18₪08= בתוספת כותרת מתאימה, המהווה חלק מה- 6חפזח. זהו פקד המשלב בתוכו שני פקדים, הן מבחינה ויזגואלית והן מהבחינה הפונקציונלית. הפקדיס המשולביס בו הס: אסם!א6ד ו-א89+00ו 1 (ראה את הפקד הבא). מצד אחד יש למשתמש יכולת לשנות את הכתוב בתיבת הטקסט (בסגנון אחר של הפקד ניתן למנוע ואת מהמשתמש), ומצד שני הוא יכול לבחור פריט מהרשימה הנגללת. פקד וה מציג רשימת פריטים, שהמשתמש יכול לבחור באחד מהס. אלה הס סרגלי גלילה, אופקי ואנכי. סרגלי גלילה מוכריס לנו מסביבת פששס0חו// ותפקידס לאפשר טווח צפייה גדול יותר. בהמשך נלמד כי השימוש בפקדים אלה מגוון מאוד. פקד וה מבצע פעולה מוגדרת בפרקי זמן קצובים. הפעולה ופרקי הזמן נקבעים על ידי המתכנת. מציג למשתמש את הכוננים המוגדריסם אצלו במחשב ומאפשר לו לבחור מתוכס. מציג למשתמש את רשימת התיקיות הקיימות במחשב ומאפשר לו לבחור תיקיה או נתיב. מציג למשתמש את רשימת קבציס ומאפשר לו לבחור מתוכה קוב רצוי. פקד ‏ וה מאפשר להוסיף לטופס צורות גיאומטריות כמו ריבוע, מלבן, אליפסה ועיגול. - 6 | פקד זה מאפשר לצייר קו בטופס. הפקד מציג תמונות מסוג 5כ8חזוס, פחססו, 5 פשוססחוצו, 1וף ועוד. פקד וה שונה במקצת מהפקד אספשזטשסום. על שוני זה נעמוד בהמשך. בנוסף, פקד וה יכול להתנהג כלחצן ולהגיב ללתיצה עליו. פקד וה מאפשר להתקשר למסד נתוניס (28180880) קיים, ולאתזר ממנו נתונים אל הטופס. = 1 | בעורת פקד וה ניתן לשב אובייקטים מיישומי וססחו/\ שונים אל יישומי ויו'ואל בייסיק. תאריכים. הפקדיס דומיס לפקדיס אחרים, אלא ש-ז8א0ו ד הינו פקד בסגנון תיבה משולבת (אסםססוחס0). שימוש בפקדים בסעיף וה נלמד כיצד מנצלים את הפקדים בפיתוח יישום ויזיואל בייסיק, וכיצד יש להציב אותם על פני הטופס. בנוסף, נסביר גם את המאפיינים המייחדים כל פקד. כל פקד, ללא תלות בסוגו, חייב לעבור את שני השלביס הבאים כדי שיופיע בטופס : 1. לחיצה על הפקד ובחירתו מתוך ארגז הכליס (אסם!|ססד). 2 תיחומו בשטח כלשהו על פני הטופס. אופן התיחוס נעשה באמצעות גרירת העכבר על פני הטופס. תנועת סמן העכבר מסמנת מלבן (שייעלס אחר כך) המגדיר את אזור הפקד בטופס. כאשר משחרריס את העכבר בסיוס הגרירה נקבע תחוס הפקד בטופס. בשלב זה מופיעה סביב הפקד מסגרת שבה מסומנות 8 נקודות, המאפשרות להגדיל ולהקטין את הפקד (ראה תרשים 3.1). תרשים 3.1 פרק 3: פקדים (170!5ח00) 57 הנקודות שעל המסגרת קרויות גס נקודות אחיזה (1800185). העברת הפקד על פני הטופס ממקוס למקוס נעשית על ידי גרירתו באמצעות העכבר. לחיצה על מקוס כלשהו בטופס, מחוץ לשטח הפקד, תבטל את הייבחירהיי בו ותעליס את המסגרת המקיפה אותו ואת נקודות האחיזה. לחיצה נוספת על הפקד, תחזיר את סימון הנקודות ותציין שהפקד יינבחריי. ברגע שהפקד יינבחריי, כל פעולה שנעשה תתייחס אליו, כפי שפעולות מתייחסות לטקסט שנבחר. אס לדוגמה, נלח על מקש 8!946 הפקד יימחק. בחירת מספר פקדים יחד תיעשה באחד משתי דרכים אלו: 1. בחירת הפקד הראשון, לחיצה ממושכת על מקש 14ח5 או 6%1, ובחירת פקדיס נוספים. 2 גרירת סמן העכבר על פני הטופס (בדומה לסימון שטח עבור הפקד) ויצירת מלבן מקווקו תוחס. הדבר גורס לבחירת כל הפקדים (או אפילו קטע כלשהו מהס) שנמצאים באזור שסומן. במקרה זה, כל פעולה שתתבצע תחול על קבוצת הפקדיס שנבחרה. לדוגמה, לחיצה על מקש ₪8!8%6 במקרה זה תמחק את כל הקבוצה. עתה ניגש ללמוד כיצד פועלים עס הפקדים השוניס. א. אספס6זוש6וק - תיבת תמונה פקד זה מציג תמונה בגודלה האמיתי. אם שטח הפקד גדול מהגודל המקורי של התמונה נוכל לראות את התמונה בשלמותה. אס לתמונה יש מסגרת, נראה מרווח בין התמונה למסגרת, אלא אס נציב את הערך פטזד למאפיין 26ו40105. אולס, אס התמונה גדולה משטח הפקד, התמונה תחתך. יוצאי דופן במקרה זה הן תמונות מסוג 5 פעוססחו/ אשר מתאימות עצמן אוטומטית לגודל הפקד. המאפיין 16ט+₪16 של הפקד מכיל את שם קוב התמונה ואת הנתיב שלו. ויזיואל בייסיק שומרת את קוב התמונה. כאשר מכיניס ערכת התקנה ומפעילים את היישוס במחשב אחר, עדיין נראה בפקד את התמונה ששיבצנו, למרות שבמחשב החדש אין קוב תמונה דומה. ויז'ואל בייסיק שומרת את התמונה ו'ילוקחת'י אותה עימה אל קוב ההרצה. את קוב התמונה אנו קובעיס במאפיין 6ושסוש דרך חלון המאפיינים (69ז6קסזש שוססחו//). ניתן לבצע זאת גס באופן דינמי במהלך התוכנית, אולס הטעינה תיעשה בעזרת קוד ולא דרך חלון המאפייניס. שורת קוד כזו תיראה כך: ("שת62120.0חססת1ח:0") 0802100026 = 6עט2108.א2620מ106ק הפונקציה 6וט+1.08016 מקבלת כפרמטר מחרוזת, המציינת את שס קובצ התמונה ונתיב שיוצג ב-אסש6זטשסום. ניתן לשלוח לפונקציה משתנה מחרוזת (פַחו5%), המכיל את שס הקוב ואת נתיבו. הפונקציה פונה לקוב המתאים, טוענת אותו מהזיכרון ומציגה אותו בפקד. 8 6ם - ערכת כלים שימוש נוסף ב-א600ז₪10 הוא ביכולת הפקד הזה להכיל בתוכו פקדים אחרים. יכולת זו ניתן לנצל בבניית שורת מצב (ז8ם 518105) שנוכל להציבה בתחתית הטופס, אס נציב בתוך הפקד א0ם6זסוק מספר פקדיס מסוג |18068. במצב שבו פקד |6ס3 | מוכל בתוך פקד א7600ז₪1600, המאפיינים קסד ו-1684 של |1888 יתייחסו מעתה לפקד אס0ם6זסוק, ולא לטופס. כדי לשמור באופן קבוע על מיקומו של פקד א600זט₪10 בתחתית הטופס, נקבע את ערך המאפיין חטו| שלו ל- וחס0%סם תחטו| - 2. ווהי אחת האפשרויות או הערכיס של המאפיין חףו4 (במקרה וה הערך השנני). ב. |1806 - תווית פקד זה מציג טקסט על פני הטופס למטרת הודעה, הנחיה וכוי. המשתמש אינו יכול לשנות את הטקסט הכתוב בו. המאפיין העיקרי ב- |808 1 הוא ח0ו+680 (כותרת), או הטקסט אשר יוצג בו. השימוש במאפיין זה נעשה כך: ":שסתהא עטסץ עססםע" = ב610ק08. 61ס28 אס הטקסט קבוע ב-|1806 במהלך ביצוע התוכנית, נקבע את ערכו במאפיין חסו1ק68 שבחלון המאפייניס (שססחו/ 65ו6קסזק) ולא בשורת קוד. הסיבה היא שכך יותר נוח לעשות, ולא שאסור או אי-אפשר לעשות זאת. שני מאפיינים נוספיס, חשובים, מאפשריס שימוש בפקד בזמן ריצה. נניח שאנו רוציס להציג בעזרת |1808 את ציון המבחן לצד שס הסטודנט. בכל פעס שישתנה הטקסט ישתנה במקביל גודלו של הפקד מכיון שהשמות אינס שוויס באורכס. תופעה זו מעוררת את השאלה, מהו השטח שנקצה לפקד!ו אס נקצה שטח קטן, שס סטודנט ארוך לא ייכנס בו ולחילופין, הקצאת שטת גדול תגרוס לבזבוז מקוס. כאן נכנס לתמונה המאפיין 08126+4₪. מאפיין גה מאפשר לפקד לגדול או לקטון באופן אוטומטי על פי גודל הטקסט הכתוב בו. כדי שפעולה זו תתבצע ערך המאפיין צריך להיות 6טזד. מאפיין דומה, אס כי מעט שונה, הוא ס3ז//6זס/). קביעת ערך 6טזד במאפיין וה מאפשרת למשפט שבתוך הפקד לגלוש לשורה הבאה כאשר אורך הפקד אינו מספיק להכיל את המשפט בשלמותו (ראה תרשים 3.2). כדי שמאפיין ס8ז//6זס/ יאפשר גלישת שורות, חובה לקבוע את ערך המאפיין 4₪%05126 ל-6טזד. |<11 - | [חזם] .₪ למשפט זה נדרעשות שתי שורות תרשים 3.2 פרק 3: פקדים (170!58ח00) 59 ג. 0%ם)א6ד - תיבת טקסט בפקד 0%ם!1א6ד ניתן להציג טקסט, ובניגוד לקודמו - המשתמש יכול לערוך את הטקסט הכתוב בו ואף למחוק אותו. לפעמים נמצא את תיבת הטקסט ריקה ועל המשתמש למלא אותה בהתאם, כמו לדוגמה, כאשר אנו רוציס שהמשתמש ימלא את פרטיו כמו שם, כתובת וכדי. המאפיין הנפו של פקד וה הוא 16%%. השימוש בו נעשה באופן הבא: "טְתאתע" = 6א76%.א%620%א76 מאפיין חשוב נוסף הוא 8ח80!011. פקד אסם!א6ד רגיל מסוגל לקלוט אך ורק שורה אחת, ואף היא מוגבלת לאורך הפקד. מה יקרה אם נרצה להכניס כמה שורות! במקרה זה נשנה בחלון המאפייניס את ערך המאפיין 6חו ₪1!ט ל-6טזד. במיליס אחרות, נרשה ל-אסם!א6ד לקבל שורות. אך מה יקרה אם נרצה שורות רבות מעבר לקיבולת שטח הפקד! במקרה זה נפנה למאפיין 5010!!5375 ונבחר בערך המתאים. באפשרותנו לבחור בסרגל גלילה אופקי, בסרגל אנכי, בשניהס יחד, או כלל לא. בכל מקרה עלינו לקבוע את הערך הדרוש. כאשר נבחר בסרגל גלילה, אנו יכוליס לגלול את הטקסט שבתיבה אם הוא גולש מעבר ליכולת ההצגה של תיבת הטקסט אסם:אפד. שימו לב! איןו אלה פקדיס של סרגלי גלילה, מדובר במאפיין של הפקד אסם!א6ד, אשר למעשה ממלא תפקיד דומה לפקד סרגל הגלילה. נבצע אתנחתא קצרה לצורך תרגיל פשוט. מטרת התרגיל, ליצור טופס עס שני פקדיס א80+א6ד ו-ה0 ה ווח ס6. בלחיצה על פקד הלחצן נקבל בתיבת הטקסט שתי שורות כמודגם בתרשים 3.3. <11) - | [חזס ]₪ 58 חוחזב 6 | הזב | 5 0ו35 ₪ תרשים 3.3 לצורך ביצוע הפעולה נציב את הפקדים המתאימים על הטופס ונקבע להם את המאפיינים כמודגם בטבלה 3.1. 0 6ם - ערכת כלים טבלה 3.1 אסם)אפד 6חוהּ צ +אפך סח !שוגו וס כעת נעבור למבט קוד של הטופס. בתרגיל שלנו, האירוע הוא אסו|0 של הפקד ש0ח05חס. כדי לעבור באופן ישיר לשיגרה צריך להיות במבט עיצוב וללחוצ לחיצה כפולה על הפקד 60500 המופיע בטופס. בחלון הקוד יופיעו באופן אוטומטי שורת ההצהרה ושורת הסיוס של השיגרה. כל שנותר הוא לקבוע את ערך המאפיין 1א6ד של הפקד 8/!א1. בסיוס, שורות הקוד ייראו כך: ()א61106 טחטסםפסתס סט5 866ע1תק " 6 28810 715081 8ם1םע168 ת8 1" = 76%8%6.תע6א6 סטפ סמ להרצת התוכנית הקש 5=. המשפט 6 28516 |808ו/ חַחוחז63! זה ]יי יופיע בשתי שורות, בהנחה שאורך שטח הפקד אינו מכיל את כל המשפט בשורה אחת. להכנסת משפטים רבים ניעזר במאפיין 9ז3פ|ססזסס. הבה ונסקור שני מאפייניס נוספים : זה זס/55הּם. מוכרות לנו התוכניות בהן אין אנו רשאיס להשתמש אלא-אס-כן אנו מקישיס סיסמה. גס אס נרצה לייהציציי לבעל הסיסמה בזמן שהוא מקיש אותה, נכונה לנו הפתעה, כי במקוס אותיות הסיסמה מופיעות כוכביות (****). בדיוק כך פועל המאפיין ז8ח00ז0ש7855 כאשר נקבע את ערכו ל- * (כוכבית). בכל פעס שנכתוב לתיבת הטקסט, לא תופענה האותיות שנקיש כי אם כוכביות. ח+0ח6 |א3ו. מאפיין וה מגביל את מספר התוויס שאנו יכוליס להכניס לתיבת הטקסט. ערך המאפיין מציין את מספר התוויס שמותר לכתוב. אס נחזור לתרגיל הקודס ונקבע למאפיין חזּשַח6 |א3ו/! את הערך 4, נראה בתוך תיבת הטקסט ייחה | בלבד, כי רווח נחשב לתו. ניתן לשלב את שני המאפיינים יחד. במקרה וּה, קביעת ערך 4 למאפיין חְזְסֶַח6 |אהו והשמת * (כוכבית) במאפיין ז3ח885/0106= יבנו לנו תיבת סיסמה מושלמת, כדוגמת התרשים הבא: <1ם) -. [חזזס] .₪ | 7" .ָהָמַמיַמ‎ תרשים 3.4 פרק 3: פקדים )600%0|5(‏ 61 לסיום הדיון בפקד א0%ם+א78 הנה טיפ קטן. כאשר המשתמש כותב לתוך תיבת טקסט ריקה, הכל טוב ויפה. אך מה קורה כשהוא חוזר בו ורוצה לכתוב משפט או מילה אחרת! אין זה נוח למחוק תו אחר תו. מי שמכיר את סביבת העבודה בחלונות יודע, כי במצב כזה התיבה נבחרת (יינצבעת'י) באופן אוטומטי ובהקשת תו חדש כל הכתוב קודס נמחק. כל שנותר הוא לכתוב את המילה החדשה בלי לעמול במחיקת קודמתה. בוויז'ואל בייסיק הדבר נעשה בשתי שורות קוד בלבד. נחשוב יחד, מהו האירוע המתאיס לכתיבת שורות הקוד. המשתמש מצפה, כי בכל פעם שהוא יתמקד בתיבת הטקסט, המילים הכתובות בה יסומנו. במילים אחרות, בכל פעס שתיבת הטקסט מקבלת יימיקודיי (10009) מהמשתמש - תתבצע פעולת הצביעה. מעיון בתיבת השגרות בחלון הקוד נמצא כי האירוע העונה לדרישה זו הוא 604-0005. שלב ראשון, אם כן, יהיה פנייה למבט קוד של הטופס, בחירה בפקד אסם)א6ד ובשיגרה 898. מה שנקבל יהיח: () 60%90008 %61א76% מט5 1866-כ מט5 תמ לפקד 50%)א6ד יש שני מאפיינים שאינס מופיעים בחלון המאפיינים, אלא אך ורק בשורות הקוד. נוכור בהודמנות זו שיש מאפיינים שניתן לקבוע את ערכם אך ורק בשורת קוד (פחזוד חטף). נכיר שנייס ממאפיינים אלח: 9 מאפיין זו מורה לסמן, המהבהב בתוך תיבת הטקסט, באיזה מקוס לעמוד. באופן טבעי הסמן עומד בסוף המילה. בעזרת מאפיין ה נוכל לשנות את מיקומו בתיבה. אס נרצה לשנות את מיקוס הסמן לראש המילה או המשפט, נקבע את ערכו ל-0 (אפס). שורת קוד תיראה כך: 0 = 61.5615%82%א76% ח+0ח5611.6. מאפיין זו מסמן את מספר התוויס בתיבת הטקסט כפי שהוגדר לו, החל מהמקוס בו עומד הסמן והלאה. אם נרצה לצבוע 4 תוויס ממקוס הסמן והלאה, נכתוב: 4 = 2ם0%ם56126. 76861 שילוב של השניים, מיקוס הסמן בראש התיבה (בעזרת 56!5!94) וסימון מספר התוויס הרשומים בתיבה (בעורת חוַּפָח6 56!1), יניב את התוצאה שרצינו - צביעת המשפט, כדי לחסוך מהמשתמש את מחיקתו. לדוגמח: תרשים 3.5 2 6ם - ערכת כלים עדיין לא סיימנו. אנו יודעים למקס את הסמן בראש המשפט. אנו גם יודעים לצבוע ממקוס הסמן והלאה את מספר התווים שנרצה לצבוע, אך מהו אותו מספרז כיצד נדע מהו אורך המילה שהמשתמש יקליד! כיצד נדע לקבוע כמה תוויס לצבוע? לצורך כך ניעזר בפונקציה ()ח1.6. הפונקציה ()ח8 1 מקבלת כפרמטר מחרוזת מסוימת ומחזירה את מספר התוויס שנמצאיס בה. המאפיין המייצג את המחרוזת הכתובה בתיבת הטקסט הוא %א6ד. קריאה לפונקציה ()ח6 1 עס המאפיין %א6 ד כפרמטר תפתור לנו את הבעיה - מציאת אורך המחרוזת, או במיליס אחרות: את מספר התוויס הכתוביס בפועל בתיבת הטקסט. מכל האמור עד כאן למדנו שכדי לסמן מחרוזת (במידה והיא קיימת) בתיבת טקסט, עלינו לרשוס את שורות הקוד הבאות: () 60%20008 61א76% קט5 1866-כ 0 = %6ע76%8%1.5615%82 (168%. 26%%1) ם16 = ם6%6ת5616. 76%%1 סטפ סמ ד. 6וח3ּז= - מסגרת השימוש העיקרי של הפקד הוא, כפי שכבר למדנו, ליצור מסגרת סביב פקדיסם בעלי מכנה משותף, ולהציב להם כותרת בעלת משמעות. מבחינה פונקציונלית (שהיא הבחינה החשובה יותר), ניתן לאגד בתוכו קבוצת פקדיס כמערך, כפי שנלמד בסעיף הבא. השימוש הנפו במצב זה הוא, הצבת קבוצת פקדים מסוג חסאטפחסוזק0 בתוך מסגרת המאפשרת בחירת אפשרות אחת מתוך מספר אפשרויות (ראה תרשים 3.6). <וםן= | 6פחוה6 סחובּז-] .₪ 7 . | 3900 |בגופו/ 6 07 + הסמה 7+ תרשים 3.6 אנו קובעיס באמצעות המאפיין חסו1ק68 את אשר ייכתב בכותרת. ה. הסט חחח ס6 - לחצן פקודה לחיצה על הפקד מאפשרת לבצע פעולה מוגדרת, כאשר לוחצים עליו. הכיתוב שעל הלחצן מציין 1את, לנוחות המשתמש. הכיתוב נקבע באמצעות המאפיין חס%ק68. אס לדוגמה, נקבע כי פרק 3: פקדים (600%0|5) 63 "1%אם" = מס1סק08.תס66ט2מ8תת0ס0 נצפה, כי בלחיצה על הלחצן נצא מהמסך הפעיל, או נצא מהתוכנית. ישנה אפשרות לשייך יימקש חסיי ללחצן. אס נצמיד את הסימן ''ש'י לאחת מאותיות הכיתוב (ח7%0ק08) של הלחצן, נגרוס להצגת קו תחתון תחת אותה אות. במקרה הבא: "1%אמ6" = מסנסק08.תס66ט2ם8תתס0 יופיע קו תחתון תחת האות =, כמודגס בתרשים 3.7 : |<1םן- | חס!)ט 0 חהחוחוס:) .₪ תרשים 3.7 במקרה זה, לחיצה על מקש )4 עס האות המסומנת בקו תחתון, כמוה כלחיצה בעכבר על הלחצן, או הקשת = כאשר המיקוד הוא בלחצן. בדוגמה שלנו, הקשת =++:| תפעיל את האירוע ()אסו!0 הסז םחו 0ס0). שימוש נוסף בפקד הוא, הפיכתו ללחצן גרפי, אשר מוצגת בו תמונה במקוס כיתוב. הקבצת מספר לחצניס גרפייס בראש הטופס יכולה להוות סרגל כלים מאולתר (על בניית סרגל מקצועי נלמד בפרק 17). כיצד הופכים לחצן פשוט ללחצן גרפי עס תמונה? לצורך כך נבצע את שני השלבים הבאים: 1. נמחק את תוכן המאפיין חסו684 של הלחצן. אס נרצה שבתחתית התמונה יוצג כיתוב מתאים, עלינו להציב טקסט במאפיין זה. למאפיין 5/!6 יש שני ערכים : 30 מורה על לחצן רגיל עס כיתוב על גביו; הערך |163ח80ז6, שמעניין אותנו. בערך זה נבחר כדי להפוך את הלחצן ללחצן גרפי המציג תמונה. 2. במאפיין 16ט₪16% נציין את שס קובץ התמונה ונתיבו, אשר יוצג בתמונת הלחצן. שאר הפעולות הנעשות עס הלחצן, כבחירת האירוע וכתיבת הקוד בהתאם, והות בשני סוגי הלחצנים. שני מאפיינים חשוביס נוספיס של פקד וה הם: !68006 ו-+06180. למאפיינים אלה נציב את הערכים פטזד או 8!58=. 6טזד מחיל את הפעולה שהמאפיין אחראי לה; 6 מבטל פעולה זו. כאשר המשתמש מקיש על מקש 560ם, הוא כאילו לח על הלחצן (או הפקד חסאטם0חה ו 600) בו ערך המאפיין !06ח08 הוא 6טזד, למרות שהפוקוס הוא לא על הלחצן אלא על פקד אחר. באותו אופן פועל המאפיין /ו618כ, אך המקש במקרה זה הוא ז19ח=. חשוב לציין, שכאשר יש מספר לחצניסם על הטופס, 4 ₪6 - ערכת כלים רק אחד מהם יכול לקבל ערך פטזד באחד מן המאפיינים או בשניהס. לא בהכרת שלחצן אחד יפעיל את שתי הפעולות גס יחד. לחצן אחד יכול להשתמש במאפיין |08006 ואחר - ב-6180|1. ו. | 050%א66ח6 - תיבת סימון פקד וה מאפשר למשתמש לבחור באפשרות מסוג כן/לא (סא/85+ץ) או אמת/שקר (6/=8/50ד). במילים אחרות, סימון * בתיבת הסימון כמוה כבחירת הפעולה שהיא מייצגת. ביטול הסימון והשארת התיבה ריקה, מבטלת את הבחירה. כיצד נוכל, אנו המתכנתים, לדעת אם המשתמש לחי על התיבה וביקש לבחור בפעולה שהיא מייצגת, או שמטרת לחיצתו היתה ביטול הבחירה! לצורך זה עומד לרשותנו המאפיין 6טון8//, שערכו מורה לנו על בחירת המשתמש. כאשר ערך המאפיין הוא 0 (אפס, 60אס8חסחנ), הדבר מצביע על כך שהמשתמש ביטל את בחירתו והתיבה נקייה מסימון; כאשר ערך המאפיין הוא 1 (60א0080) הדבר מורה שהתיבה מסומנת. בשורת קוד, ניתן להשתמש לחילופין בקבוע 80%60ח0סט המייצג את הערך 1. שתי שורות הקוד הבאות זהות לחלוטין: 1 = 78106. 60%1ת6 6 16 . %1א60ת6 כאשר מציבים על פני הטופס מספר פקדים מסוג וּה, ניטיב לעשות אם נבנה אותס כמערך. כמקובל בסביבת עבודה חלונאית, כאשר המשתמש רואה לפניו מספר אפשרויות מסוג א20א0060, הוא מבין שבאפשרותו לסמן (או לבחור) יותר מתיבה אחת, או לחילופין אף לא אחת מהן. זה הס)טםהסוזק0 - לחצן אפשרויות הפקד חסאטםחסווק0 דומה מאוד באופן פעולתו לפקד א00א80ת0. גםס הוא נמצא בדרך כלל בקבוצת אפשרויות, רצוי מערך. בדרך כלל נקבצ את הפקדים בתוך מסגרת (הפקד 6וח8זת) וניתן לה כותרת מתאימה (ראה שוב תרשיס 3.6). המאפיין 6ט|8/ ממלא פונקציה דומה לזו של תיבת סימון (0%פא080%), אך הפעס הערכים הס פטזדך או 8/96=: 6טזד מורה על בחירה ו-8186= על ביטול בחירה. יש הבדל בין הפקדיס אשר נובע מיכולת המשתמש לבחור. במיליס פשוטות, כאשר מונחות לפני המשתמש מספר אפשרויות מסוג חסשטפחסוזקס, חובה עליו לבחור באפשרות אחת, ורק אחת, בלבד. ח. אסםסטו 60 - תיבה משולבת יש דמיון רב בין פקד זה והפקד 880% 1 שיוסבר בהמשך. התיבה המשולבת א080סח60 היא שילוב פונקציונלי של הפקדיס אסם!)אסך ו-א119100. כתיבת טקסט, א0ם!א8ד, ניתן להציג בה טקסט או לערוך בה טקסט פרק 3: פקדים (170!5ח600) 65 קיים; וכתיבת רשימה, א1189)80, היא מאפשרת לבחור פריט מתוך רשימת אפשרויות קיימת. לתיבה משולבת יש מאפיין בשס 5/8 המקבל שלושה ערכים (0-2). כל ערך מייצג סגנון שונה של התיבה, מבחינה ויזואלית ומבחינה פונקציונלית. הבה נכיר אותס: 0 = 54/16 (ברירת המחדל) מייצג תיבת טקסט קופצת (קט-ססס). כמו שתואר קודם, ניתן לכתוב בה, או לבחור מתוך הרשימה הנפתחת. || עחחבם יו חסם 1 = 51!6 הוא סגנון פשוט, המציג תיבת טקסט על מאפייניה. מתחתיה מוצגת רשימה גלויה וקבועה (בפורמט א118%0). לדוגמה, 2 = 5%/!6 דומה במבנהו לסגנון הראשון. ההבדל החשוב הוא, שבסגנון וה אין אפשרות לכתוב לתוך התיבה. המשתמש יכול לבחור אחת מהאפשרויות בלבד, ללא יכולת שינוי ועריכה. לדוגמה, פקד חדש בוויו'ואל בייסיק 6 הוא פקד א080פ 60 עם תמונות. פקד וה נקרא 0 366 ח] וצורת הסמל שלו היא . מלבד רשימת האפשרויות שהוא מכיל, ניתן להצמיד תמונה לכל אפשרות. ט. א0ם+9ו 1 - תיבת רשימה א0ם!)9! | היא תיבה פתוחה המכילה אפשרויות שונות לבחירה (אם גודל הפקד לא מאפשר לראות את כל הפריטים ברשימה, באופן אוטומטי מופיע סרגל גלילה). עדיף להקצות מלכתחילה שטח מספיק גדול לפקד, היות ולתיבה זו (בניגוד ל- אסםסטוח0ס6) אין יכולת להיפתח ולהיסגר, גודלה קבוע! המשתמש יכול לבחור באחד מהפריטיס המוצגיס ברשימה ללא יכולת עריכה. במידה ונרבצה לאפשר למשתמש יכולת בחירה מרובה, ניעזר במאפיין +8156166!ט₪. למאפיין זה שלושה ערכים : 6 6ם - ערכת כלים סא - 0 (ברירת המחדל), מאפשר בחירת פריט אחד בלבד. 6חו5 - 1, מאפשר בחירה מרובה. אופן הבחירה נעשה בלחיצת עכבר על כל אחד מהפריטים הרצויים. לדוגמה: 40 - 2, מאפשר בחירה מרובה. אופן הבחירה דומה במקרה ה לאופן בחירת קבציס בסייר פשוסחו/\. הבחירה נעשית בעזרת 4וח5 ו-010 לבחירה רציפה ושאינה רציפה בהתאמה. מאפיין מעניין נוסף של פקד זה הוא 5חחט!60, אשר מקבל ערך מספרי המייצג את מספר העמודות שיופיעו בתיבת הרשימה. לדוגמה, אס נקבע את הערך 4 יופיעו הפריטיס בארבעה טורים. כאשר שטח הפקד קטן יחסית ומספר הפריטים רב, יופיע באופן אוטומטי סרגל גלילה אופקי. כל תזוזה של הסרגל תציג פריטיס חדשיס במסגרת 4 טורים. לדוגמה, 8 >4058%8₪ = עהחב םש סוזסוו5 | 89 | 0584 יב חסם ניתן להציג את תיבת הרשימה בסגנון נוסף, שאפשר לקבוע אותו בעזרת המאפיין 8 של הפקד. בחירה בערך א00א6786 של המאפיין 6|ץ+5 תגרוס להצגת תיבת רשימה בסגנון הבא : |<1ם)= | 6|חובּא6 א00פו | .₪ 5 350 0 |ב0ו5ו/ תרשים 3.8 המשותף לשני הפקדים: בשניהם אנו מוסיפים ומורידים פריטים מהרשימה באופן דומה. המאפייניס הבאיס מתייחסים לזמן ריצה - פעולת התוכנית - ועל כן, נמצא אותס אך ורק בשורות הקוד, ולא בחלון המאפייניס. פרק 3: פקדים (000%0!5) 67 > וח200%6 - מוסיף פריטיס לרשימה. בשורת קוד הדבר ייראה כך: 8106 תס16ַת.אסם156ת1 / אספססתסס לדוגמה: "152861" תסדַהִחת.118%1 "תפס" תפסַָבחת. 118%1 "ססתהעת" ת(ת115%61.2₪0168 * 667 - מנקה את תוכן הרשימה. בשורת קוד הדבר ייראה כך: / אספססתסס > הוספת פריט במקוס ספציפי ברשימה: 0 , "מ8ק08" (ת118%1.206166 / אסמססחמסס במקרה וה הפריט ''חִאַס8!'י הוצב באינדקס 0, שהוא המקוס הראשון ברשימה. > הסרת פריט מסויס מהרשימה תיעשה באופן הבא : 1668 61600טסת6ת.118%1 / אסמססמסס ולדוגמה, 2 ת1%0סטסתסת. 5%1 11 כאן יוסר הפריט השלישי ברשימה; מכיון שמספרי האינדקס מתחילים ב-0, הפריט השלישי הוא בעל אינדקס 2. * הגישה לפריט מסויס ברשימה תיעשה באופן הבא : (068ם215%1.215%)1 / אספססתסס לדוגמה, גישה לפריט השלישי ברשימהח: (115%1.115%)2 = 6א76. %1א6ך * 115+6000% מציין את מספר הפריטיס הנמצאיס ברשימה. %מט15600. 11861 / אסםסמתסס בדוגמה זו, תיבת הטקסט מקבלת כערך את מספר הפריטיס ברשימה. %ת115%1.1156000% = 6א76%. %1א6ך * המספר הסידורי של האיבר הנוכחי (הנבחר) מתקבל באמצעות א06ח!+115. 7068 151.15 / אספססתסס מכיון שמספרי האינדקס מתחילים באפס, טווח האינדקסים של כל הרשימה נע מאפס ועד 1-5%0000% 1 (כשיש 4 פריטים, האינדקס של הפריט האחרון הוא 3). 8 6ם - ערכת כלים יי זִה3ּם]|50]0 - פס גלילה יש שני פקדיס מסוג זה, פס גלילה אנכי ופס גלילה אופקי. מכיון ששניהס מתפקדים באופן דומה, נתייחס אל פס הגלילה באופן כללי. פס הגלילה - כפקד - אינו תלוי בפס הגלילה שעל הטופס, או באלה שאנו מכיריס ב-אספססו 00, א0ם)1159 ועוד. לפקד פס הגלילה תפקיד נוסף. מקובל להשתמש בו ככלי למדידה והערכה, כדוגמת סקלת סוחטוס/ סחט50 לשינוי עוצמות הקול. גלילה כלפי מעלה תגביר את עוצמת הקול, וכן להיפך. ניתן גס להשתמש בפקד זה כציון לומו שנדרש לתהליך מסויס להתרחש. ככל שפס הגלילה מתקרב אל סופו (אל קצה הפס), המשתמש יודע כי התהליך עומד להסתיים, וכשפס הגלילה באמצע הסרגל, מעיד הדבר כי הוא נמצא באמצע התהליך. באופן דומה נוכל לקבל אינדיקציה בכל וּמן ממשך התהליך. המאפיינים הנפוציס של סרגל הגלילה הסש: חוו/!, א8!ו ו-6טן8/. המאפיין חוו/ קובע את הערך המינימלי של הסרגל. אס נחזור לדוגמת ה- 500800 סוחט!ס/, מאפיין זו יורה על גובה צליל הנמוך ביותר. באופן דומה, א9ּ! יקבל את הערך הגבוה ביותר. המאפיין 8|06/ מאפשר לקרוא בכל רגע נתון באיוו נקודה בפס נמצאת הגררה שעליו; במיליס אחרות, מהו הערך הנוכחי בפס הגלילה. הפנייה למאפיין תיעשה באופן המוכר לנו: 8. 7802011 = תסנסק68. 18061 בדוגמה זו, הפקד |1888 מציג בטופס את הערך הנוכחי של הפס. שני אירועיס מאפשריס לקבל משוב מפס הגלילה על השינוי שחל בו, ולהגיב אס דרוש. את האירועים, כבר למדנו, אנו מוצאיס במבט קוד של הטופס, בתיבת השגרות (התיבה הימנית). האירוע הראשון הוא 608096. אירוע זה מתרחש לאחר שחל שינוי בפס הגלילה. תפקידנו כמתכנתים, לקבוע מה לעשות במקרה זה, או מהן שורות הקוד המתאימות אשר יבוצעו בכל שינוי שיחול בפס. האירוע השני הוא !/500. אירוע זה מתרחש בזמן שהגררה נעה בתוך פס הגלילה. שימו לב, כי האירוע לא מתרחש בזמן שלוחצים על חיצי הגלילה, אלא בזמן תנועת פס הגלילה בלבד! יא. זסחחוד - מונה באמצעות פקד וה ניתן לבצע פעולה מסוימת החוזרת על עצמה בכל פרק זמן רצוי. הפקד מונח על גבי הטופס בזמן עיצוב אך אינו נראה בזמן ריצה, רק הפונקציונליות שלו פועלת, ולכן אין חשיבות למיקומו בטופס, העיקר שיופיע שס. המאפיין העיקרי של הפקד הוא [8/ז6+ח!, הקובע את מרווחי הזמן שבהס תופעל השיגרה שמאחורי הפקד. היחידות ב-|167/8ח! בנויות כך, שכל 1000 יחידות מציינות שנייה אחת. אם, לדוגמה, נרצה לקבוע את תדירות הופעת השיגרה ל-3 שניות, נקבע את ערך המאפיין |8צז6+ח] ל-3000. השיגרה העומדת מאחורי הפקד היא ופחוד, והיא גם היחידה שקיימת לפקד זה. פרק 3: פקדים (170!5ח00) 69 יב. אס0ם+5! |6צוזפ - תיבת רשימת כוננים פקד וה מאפשר להציג את כל הכוננים, לדפדף ביניהס ולבחור בכונן הרצוי. המאפיין 6צזזם, שנמצא בשורות קוד בלבד, מקבל או מציג את ערך הבחירה. יג. אסם)9ו1זופ - תיבת רשימת תיקיות פקד וה ממלא פונקציה דומה לקודמו. השוני הוא בכך שפקד וה מציג את רשימת התיקיות. המאפיין +88 מקבל או מציג את ערך הבחירה. יד. א0ם+1!615= - תיבת רשימת קבצים פקד וה מאפשר לצפות ברשימת הקבציס בתיקיה שנבחרה. המאפיין המאפשר לצפות בשס קוב רצוי הוא 8₪06ח816. המאפיין ח+₪8 מציג את הנתיב לקובצ, ללא שס הקובא. בשילוב שני המאפייניס ובעזרת אופרטור השרשור א8, נקבל את שס הקובצ ואת נתיבו. חשוב לא לשכוח לשרשר גס את התו יייי המפריד בין שס הקוב לנתיבו, כדוגמת השורה הבאה: סתף8ת110+.1161ת 8 "" 8 םמסהאק.1161ת טו. 6מְ3ח5 - צורה הפקד 50806 מאפשר ליצור צורות גיאומטריות שונות על פני הטופס. שני המאפייניס העיקרים בפקד הס 5786 - הקובע את הצורה הגיאומטרית, ו- 6!ש+11!5= - הקובע את סוג המילוי של הצורה. המאפיין 50806 מקבל שישה ערכים המייצגים שש צורות שונות: מלבן, ריבוע, אליפסה, עיגול, מלבן בעל פינות מעוגלות וריבוע בעל פינות מעוגלות. המאפיין 8 מאפשר לבחור באחד משמונת סוגי מילוי: אחיד, קווים אלכסונים ועוד (ראה תרשים 3.9). תרשים 3.9 0 6ם - ערכת כלים טז. 6חו! - קו הפקד 118 מאפשר לצייר קו על פני הטופס. ניתן לצייר קוויס רביס, אולס כל קו הוא פקד בפני עצמו. ארבעת המאפייניס האלה - 1א, 1+, 2א, 2ץצ - מקבלים ערכיס מספריים הקובעיס את שתי הקואורדינטות של קצות הקו, והקו נמתח ביניהן. יש לשים לב, כי בניגוד למה שאנו נוהגיסם בשרטוט על נייר, כאן ביר צ עולה בערכו ככל שאנו יורדים בטופס. במיליס אחרות, נקודת האפס של ציר + מתחילה בראש הטופס. ציר א נשאר כמות שהוא בציר המספריס הרגיל, משמאל לימין. נקודת האפס 0,0 היא הנקודה השמאלית העליונה של הטופס, והנקודה הגבוהה ביותר היא הנקודה הימנית התחתונה. יז. 6מָבּחח! - דמות / תמונה פקד ₪846! דומה מאוד לפקד 6ז0+ס1ם, כי שניהס מציגיס תמונות. ההבדל העיקרי הוא בכך שלפקד 888ח! יש מאפיין ח547640 המקבל ערכי 8/"8|56טזד ומאפשר לשנות את גודל התמונה שנבחרה. אס הגודל המקורי של התמונה שנבחרה קטן או גדול מהשטח שהוקצה לפקד, נוכל לשנות את גודל התמונה ולהתאיס אותה לגודל הרצוי לנו, בתנאי שנציין תחילה את הערך 6טזד במאפיין ח0ז5176. המאפיין 016016 של פקד וה מקבלת כערך את שם קובץ התמונה ואת נתיבו. היבט נוסף שכדאי לדעת הוא, שלפקד 806ח] יש אירוע א06116; כלומר, כאשר לוחציס על הפקד אפשר לגרוס לביצוע האירוע 01166 (הדבר דומה ללחצן גרפי). אולס, בניגוד ללחצן (פקד חס םסחה 600) הפקד 886ח! לא ייראה יילחוצ'י. יח. הז - נתונים הפקד 0818 הוא בעל עוצמה רבה. בעזרתו ניתן להתקשר למסד נתוניס קיים ולהציג את כל המידע שבו, בלא שימוש אפילו בשורת קוד אחת. החיסרון של הפקד בכך שהוא אינו נוח לעבודה מבחינת הנדסת אנוש. לכן, כשכותבים יישוס המקושר למסד נתונים, מיישמיס אותו בדרך כלל באמצעות קוד ללא שימוש בפקד פַּו08. כך יש אמנס יותר שורות קוד, אך התוכנית, ובעיקר ממשק המשתמש ואפשרויות השימוש בו, טוביס לעין ערוך. פרק 16 יוקדש לניהול מבנה נתוניס באמצעות קוד. יט. = 01 - קישור והטבעת אובייקטים באמצעות הפקד 01.5 ניתן לשבץ אובייקטים מיישומים אחרים לתוך יישומי ויו'ואל בייסיק. פרק 3: פקדים (%0/5ח )00‏ 71 מערכי פקדים במהלך בניית ממשק המשתמש נוכל למצוא שאנו משתמשיס מספר פעמים בסוג מסויס של פקד, ואפילו בטופס אחד. במצב וה נבנה בדרך כלל מערך פקדים, למרות שאין חובה ליצור מערך כזה. ניקח לדוגמה טופס, שבו אנו מציביס מספר פקדים מסוג אסם)א ד לקליטת שם, כתובת, טלפון וכוי, ולכל פקד ניתן את השס המיוחד לו על פי תפקידו. במקרה ה לא רצוי לתת לכל הפקדיס שם אחד המייצג את המערך. במצב זה הבלבול יהיה גדול, כי כיצד נזכור שאינדקס 0 מייצג שם, 1 - כתובת, 2 - טלפון וכוי. במקרה זה קל יותר לזכור ש-8₪06%)א1, 007055//א1 ו- 6חסח6!90 0+ מתייחסיס לשם, כתובת וטלפון בהתאמה. מתי נשתמש במערך של פקדים? נשתמש במערך של פקדים כאשר הפקד מבצע פונקציה דומה בכל המופעים שלו, ואין חשיבות לשס החוזר על עצמו. ניתן לומר, כי עדיף היה לתת לפקד את אותו שס כל הזמן, אך מכיון שפעולה זו לא תיתכן, אנו מגדיריס מערך. כדוגמה ניתן לקחת את הפקד חסאטםחסטקס. לפני המשתמש עומדת רשימת אפשרויות שממנה הוא אמור לבחור. נניח שרשימה זו מייצגת מספר מנות עיקריות לארוחת צהריים. במקרה זה, ניטיב לעשות, אס נקרא לפקד בשס 0ססת1קס0 וכל פריט המייצג מנה עיקרית יהיה חלק ממערך. במקרה זה, הפתרון של הגדרת פקד נפרד לכל מנה (פקד בשר, פקד דג וכדי) יכול להיות מורכב ומבלבל יותר. בניית המערך בניית המערך הינה פעולה פשוטה ביותר. תחילה יוצרים את הפקד שרוצים להפוך למערך, וקובעים לו את המאפיינים הרצויים. לחיצה ימנית על הפקד תציג תפריט מקוצר, אשר אחת האפשרויות בו היא ע600. נבחר באפשרות זו כדי להעתיק (למעשה, לשכפל) את הפקד. לאחר העתקה זו (ללות, 0ַזהּסםקוו0) נבצע הדבקה אל הטופס. לחיצה ימנית נוספת תציג שוב את אותו תפריט, אך הפעס נבחר באפשרות 6. בשלב זה תוצג שאלה, האם אנו מעונייניסם שהפקד החדש שיווצר יהיה חלק ממערך, או לא. על שאלה זו נענה בחיוב, וכך ניצור את הפריט השני במערך (הפקד המקורי הוא הפריט הראשון במערך). מכאן והלאה, בכל פעס שנחזור על פעולת ההדבקה (8516ק) יתוסף פריט נוסף למערך. אס תהיתם כי בכל פעס שאתס מבצעיס את פעולת ההדבקה לא קורה שוס דבר, אל דאגה. בכל פעס שמבצעים פעולת 585%6, ויז'יואל בייסיק מדביקה את הפקד החדש בפינה השמאלית-עליונה של הטופס (או של ה-88ז=, אס בו יצרנו את המערך). בדרך זו, בכל הדבקה הפקדים מוצביס בפינה השמאלית העליונה, ועלינו לגרור אותס אל המקוס הרצוי בטופס. חשוב לשיס לב לכך שאנו גורריס אותם לפי סדרס הכרונולוגי במערך. 2 6ם - ערכת כלים כיצד יודעים מהו הסדר? אם נתבונן במאפייניס של כל פריטי המערך, נראה שהס זהים בכל המאפיינים מלבד שנייס. הראשון הוא א068ח!. המאפיין א66ח! מקבל ערכים מספרייס המייצגיס את סדר הפקדיס במערך. הפקד הראשון יקבל את הערך 0, השני - 1, השלישי - 2 וכוי. כך גם לגבי שס הפקד, המאפיין 6וחהּא. בדוגמה שלנו השס המקורי של הפקד היה 0. מרגע שנבנה המערך מצורף לשס הפקד גס מיקומו במערך, ובמילים אחרות - מספר האינדקס שלו. בדוגמה שלנו, (0) 0סס0ת)ק0 - מתייחס לפקד הראשון, (1) 01000 - לפקד השני, (2) 0סס=+קסס - לפקד השלישי וכן הלאה. השימוש במערך בכתיבת קוד נמשיך בדוגמה שהצגנו בסעיף הקודם ונניח שבנינו מערך פקדיס מסוג חסשטפחסוסס. נניח שבמערך יש שלושה פריטיםס המייצגים שלוש אפשרויות למנה עיקרית בארוחת צהרייס במסעדה. פריט ראשון (0=א06ח!) הוא דג, פריט שני (1=א<66חו) עוף ופריט שלישי (2=אס0ח!) בשר. בנוסף קיים בטופס פקד 66ח=|פ] מסוג |1806, המציג למשתמש את מחיר המנה העיקרית שבחר (ראה תרשיס 3.10). <ום) .וי - מנה עיקרית: דג . עו ₪ בשר 0 מחירלמנה: | 20 תרשים 3.10 המשתמש שלנו העדיף עוף לארוחת צהריים, והיה רוצה לדעת מה המחיר. הוא לחץ על האפשרות השנייה וחיכה לתשובה. עלינו כמתכנתיס לדאוג להופעת התשובה הנכונה. כיצד נעשה זאת ? בלחיצה על אחת האפשרויות, המשתמש הפעיל את האירוע 6%ו61. אם כן, עלינו לכתוב את שורות הקוד המורות לתוכנית כיצד להגיב בעת התרחשות אירוע זה. ניגש לחלון הקוד, נבחר בפקד 1=000ק0 ובאירוע 0%ו01. כמו תמיד, השורה הראשונה פרק 3: פקדים (%0/5ח )00‏ 73 והשורה האחרונה של השיגרה נכתבות אוטומטית. הפעם יש שינוי קטן, השיגרה מקבלת פרמטר, כפי שנראה להלן: (ע660062ת1 28 א66%ם60110%)1 6ססעס6קס סג5 1866 פופ םם מהי סיבת השוני, ומהיכן יודעת השיגרה שעליה לקבל את א08ח! כפרמטר! התשובה פשוטה. ווכריס מה מיוחד בפקד 1000ק0! הוא מערך! ומכיון שכך, כאשר נלחץ עליו ונפעיל את האירוע א6ו01, לא די בכך שנכריז שהופעל אירוע לחיצה על הפקד 0ססת)קס, אלא צריך גס לדעת על איזה פריט בתוך המערך המשתמש לתצ! כזכור, יש לנו שלוש מנות עיקריות (או פריטים). כיצד נדע האס המשתמש בחר בדג, בעוף או בבשר! והו למעשה תפקיד המשתנה א66ח! בשיגרה. הוא מכיל את ערך האינדקס של האפשרות שנבחרה. אס 0=א06ח! - פירוש הדבר שנבחרה האפשרות הראשונה, או במיליס אחרות המשתמש בחר כמנה עיקרית בדג. אם 1=א06ח! המשתמש בחר באפשרות השנייה המוצעת, וכך הלאה. על פי קו מחשבה וה אפשר להרכיב את שורות הקוד כדי לבדוק מהי האפשרות שנבחרה על ידי המשתמש, ועל פיה נוכל להציג את הודעת התשלום. נניח שעבור מנת דג התשלוס הוא 50 ש'יח, לעוף 30 שייח ולבשר 40 שייח. שורות הקוד שלנו, על פי זה, ייראו כך: (ע6606ת1 28 א66%ם6110%)1 6ססעס6קס 5 1866 א6סםך 0886 561606 0 0886 0 = מ%610ק2106.08ק1012 1 6886 0 = מ610ק10122106.08 2 6 תסנסק08. 10122106 0% תם פופ םם 8 40 את מבנה ההחלטה 6856 +588160 נכיר בהמשך (פרק 8); עתה רק נאמר, כי הוא עוזר לנו בבירור ערך המשתנה א06%ח!. אם ערכו 0 (אפס), פירוש הדבר שנבחרה האפשרות הראשונה והודעת התשלוס היא 50 שייח בהתאם. כך ננהג גם בשתי האפשרויות האחרות. יש אפשרות להוסיף פריט למערך הפקדים בזמן ריצה. פעולה זו שימושית כאשר לא ידוע לנו מראש מספר הפריטיס הכללי במערך. במקרה זה נוסיף (או נסיר), באופן דינמי, בומן ריצה, פריט כלשהו. הוספת פריט מתבצעת באופן הבא : (068ם1) 6ת8א00[60% 1080 4 ₪6 - ערכת כלים בהמשך לדוגמת המסעדה, נניח שברצוננו להוסיף אפשרות למנה עיקרית. נעשה ואת כך: (3) 008סע6ק0ס 1080 לחילופין, כדי להסיר פריט מהמערך בזמן ריצה, נשתמש בתחביר הבא: (068ם1) 6ת8א00760% 1086מס ולדוגמה: (3) 086ססע6קס 10806מס חשוב לזכור, שהוספת פריט באופן דינמי מחייבת הצבה של לפחות פריט אחד מאותו פקד על פני הטופס, בזמן עיצוב. בדרך כלל פריט זה יקבל ערך 0=א₪8חו, ובזמן ריצה נוסיף פריטיס שוניס עס אינדקסים בסדר עולה. אס אין אנו מעונייניס לראות את הפקד הראשון בזמן הריצה, נשתמש במאפיין 191016 ונקבע את ערכו ל-8|56=. עס זאת, פריט ראשוני זה במערך חייב להופיע בזמן העיצוב, כדי לאפשר הוספה דינמית בומן ריצה של פריטים נוספים. הוספת פקד לסרגל הכלים ארגז הכלים מכיל ערכה סטנדרטית של הפקדיס השימושיים ביותר, שבאמצעותס נעשית רוב עבודת הפיתוח של יישומיס. עס ואת, ישנס פקדיס שימושייס נוספים, שאינס מופיעיס במתכונת הסטנדרטית, אך ניתן להוסיפס לארגז הכליס האישי. הוספת פקדיס לארגו הכלים נעשית בלחיצה ימנית על מקוס כלשהו בארגו הכלים. בתפריט שנקבל נבחר באפשרות 600076048 אשר תפתח חלון דו-שיח כדוגמת זה שמוצג בתרשים 3.11. בחלון וה מוצגת רשימת פקדים. סימון וש משמאל לשס הפקד ולחיצה על עומְסא או 6 גורמיס לבחירה בו ולהצבתו בארגז הכליס; ביטול הסימון מסיר את הפקד מהארגז. רשימה זו מייצגת קבצי 006%, הנמצאיס בתיקיה 5510 שבתיקיית מערכת ההפעלה. ניתן באופן 'יידנייי לדלות אחד מהקבציס האלה ולהציג את הפקד שאותו הוא מייצג לרשימה האמורה. פעולה זו מתבצעת באמצעות הלחצן 6פאוסזם, אשר פותח תיבת דו-שיח המציגה ומאפשרת בחירת קבצי 00%. פרק 3: פקדים (%0/5ח00) 75 5 ח6תסקחוס:) 0 |סץסחט-) ז03ח316 ₪ 00655 6ס5סיסויז 1 |סשחס = החחחס-> %]50טיזסווז ר-] חס הַ8|0 הסוחהחס-> %)50סיסוזיז ד 0 זפַחהַ05 חסוטספהחס-= 6)ספסזסווז ךרי 5ז חס 56 | החטסם 033 0506%- [טזלחס= 64| )ספסיסווז וש זה זט | +66[ 2.0 פוחזס= %ס5טיסוו 1 |[טסחס> 18 %]0פסיזסווז ךר 5|סזסח-) א5חוטח1 117111 506%טיסוויז די חס [ח5 חב 8%חז6פח1 %ס5טזסווז ר-] 5זלחט= 01ה1] )טסוו ר-] [טלחס) ₪06 135%80] 50%סיסויז די וט )> 813 חחוט|נוזי] 50%טיזסווז ר-] טסחס-> שחווטנוכ 506%טזסווז ד" תרשים 3.11 לא נדון במסגרת סעיף זה במה שמייצג כל שס ברשימת הפקדים. הנקודה החשובה והעיקרית היא שניתן לייבא קובץ 000% למערכת, למקס אותו בויכרון ולהוסיף פקד לארגז הכלים. 6 ₪6 - ערכת כלים תרגיל לסיכום הנושאים העיקריים שנלמדו בפרק לצורך התרגיל נבנה את הטופס המוצג בתרשים 3.12. תרשים 3.12 הטופס כולל את סוגי הפקדים האלה: אספססו 00, א5)50!)], |6ס3.], זהּםווסז56ה, הזחו 00 ו-א0ם)א6ד. מטרת התרגיל להרכיב משפט אשר יוצג ב-אסם)א6דך כאשר נלחצ על חסו4טם חחח 0ס6. חלקי המשפט נתוניס במספר תיבות שונות כפי שנראה בהמשך, והמשתמש ירכיב מהס את המשפט הרצוי, שמוצג בתחתית תרשיס 3. בסיוס התרגיל ובזמן ריצה הטופס צריך להיות דומה לזה שמוצג בתרשים. |<1ם] = [חוזס-] .₪ - חב | | 1 4 חו630ז .03 עזס/י פזוסו 2 03510 |הגופו/ הַהוחזה6! הזב | | תרשים 3.13 פרק 3: פקדים (%0/5ח00) 77 התיבה המשולבת (אספססו 00) תציג לבחירה את חלקי המשפט: חג |, 15 6, 506 8. תיבת הרשימה (א8180% ]) תציג לבחירה את חלקי המשפט: 8חו7680 ו- סחוחזהּסו. תפקיד פס הגלילה (ז3פו|סז1156) הוא, לאפשר בחירה של מספר בטווח 1-5 המייצג את מספר השעות (פזוטסח) במשפט. לצורך הרכבת המשפט '|1808/ בַחוחז68! וחב | .ץ8 /81ע6 פזטוסח 2 28510 נבחר את חלק המשפט יחה [יי מהתיבה המשולבת. נבחר בפריט השני בתיבת הרשימה ונקבל את המילה ''פָחוחז69!יי. מספר שעות הלימוד יקבעו באמצעות סרגל הגלילה. את שאר חלקי המשפט נשרשר בשורות הקוד. כאשר נלחצ על הלחצן עוסח5 יופיע המשפט השלס בתיבת הטקסט. את התרגיל נבנה יחד בשלביס הבאיס: 1. ניצור את הטופס כדוגמת תרשיס 3.12. 2 נקבע לכל פקד את המאפיינים על פי טבלה 3.2. 8 | 0800 | = "אסת=", טבלה 3.2 8 | 090 | = (עקחם), ה | אפד| = (עקחש), 3 בתיבות אספססוח 600 ו-אסם9% 1 נמלא את הפריטיס שהמשתמש יוכל לבחור מתוכס. הוספת הפריטים לתוך התיבות תתבצע בזמן שהטופס נטען מהציכרון. האירוע המתאים לדרישה זו הוא ( )1.080 וחזס=. נעבור למבט קוד ונכתוב בשיגרה זו את שורות הקוד המודגמות בתרשים 3.14. 8 6ם - ערכת כלים <ןם) - (008-:)) [חוזס] - 1ו66ן0:?] מ [- ו 2 חוזס] ()20808 מעסץ מגם שסהטבטק "15 56" 24441668 . סמזזסמש "15 16" :2444166 . סמזזסמש "מנה ‏ 1" :2434166 . סמזזסמש "תת" 233168 . 35מ1558 "קמנםתת3 16" 8ש23416 . 35מ1558 תרשים 3.14 4 תפקיד הפקד פזטסח!ם! בטופס הוא להציג את הערך הנוכחי של פס הגלילה. הקישור בין השנייס ייעשה בעזרת שורות קוד. האירוע המתאיס הוא ||0ז50 של הפקד פזטסרופ5ח. שורת הקוד תיראה כך: ()502011 פשמסתספם סמט5 866ע1תק 86. פפטעגוסתספם = ת610ק0028.08מ101 סט5 סתם לסיוס, נותר לנו לדאוג לכך שכל חלקי המשפט יוצגו בסדר הנכון בתיבת הטקסט כאשר נלחצ על לחצן שסח5. האירוע המתאים הוא א0ו|/0 של הפקד סח חס ושורת הקוד המתאימות תיראנה כך: ()6110% אסםפ6שתס סגט5 1866 8" " 6 סםאססס = 86א06.716ם65666א6 06" 28810 7158081 " 6 86םא156 ".ץ908 6062 פעגטסם " 6 םסנסק08.פ25טסם1ס1 מט5 תם בעורת האופרטור "אי שרשרנו את כל חלקי המשפט לתוך תיבת הטקסט. כתיבת כל הפקודה בשורה אחת אינה מומלצת, ולכן השתמשנו בקיטוע המשפט על ידי קו-תחתון ( ) המאפשר להמשיך את המשפט בשורה חדשה. החלק הראשון במשפט הוא חלק המשפט שנבחר מתוך התיבה המשולבת. הפריט שנבחר מיוצג על ידי שם הפקד, במקרה שלנו - 600\00. שימוש בשס הפקד מקביל לשימוש בתכונה +א18; במילים אחרות, כתיבת 0ח//600 כמוה ככתיבת %א6 ד.סח/ססס. באופן דומה שורשר הפריט (או חלק המשפט) מתוך תיבת הרשימה 8%ח//58%!. ביניהס שרשרנו רווח, כדי להפריד בין מילות המשפט. אחריהס באות המיליס הקבועות שביניהן נמצא ערך השעות המתקבל מהתכונה חסו1ק68 של הפקד פזטסרווסו. כל שנותר, הוא להריץ את התוכנית (הקשת 5=) ולהרכיב את המשפט הרצוי. פרק 3: פקדים (%0/5ח00) 79 תרגול 1 צור את הטופס כדוגמת תרשיסם 3.15 : |<1ם) = | תו ס] 6 עב 6 1 וחפם חס ל ו ה זו תרשים 3.15 הקלדת מילה בתיבה 8!6/ ולחיצה על לחצן 4606 תגרוס להוספת המילה שהוקלדה אל תיבת הרשימה שבצד שמאל. בחירת אחד מהפריטים שבתיבת הרשימה השמאלית (על ידי לחיצה עליו) ולחיצה על לחצן 6שסוח6א, תגרוס למחיקת הפריט מהרשימה. לחיצה על לחצן 61868 תגרוס למחיקת כל הפריטים שבתיבת הרשימה השמאלית. בחירה באחד מהפריטים שבתיבת הרשימה השמאלית (על ידי לחיצה עליו) ולחיצה על לחצן ע600, תגרוס להעתקת הפריט שנבחר מהרשימה השמאלית לתיבת הרשימה הימנית. 2 צור את הטופס כדוגמת תרשים 3.16 : |< וב . ג ₪ :6 תרשים 3.16 | - | + אתחל את תיבת הטקסט פַטו8/ בערך 50. בלחיצה על לחצן + יגדל המספר שבתיבת הטקסט ב- 1. בלחיצה על לחצן - יקטן המספר שבתיבת הטקסט ב- 1. 0 6ם - ערכת כלים 4: מאפיינים (65ו1ו6ססזס) אחת הבעיות העיקריות של מתכנתי ויז'ואל בייסיק היא רצונס להפיק את המירב מהתוכנה על תכונותיה ויכולותיה הרבות. רבים אינס יודעיס כיצד להפיק את המירב מהתוכנה, אלא לאחר עבודה והתנסות בתכנות במשך זמן רב. לעיתים יש תכנון נכון וטוב של היישוס, והעיצוב נעשה גםס הוא לאור חשיבה תכנותית יוצרת, האלגוריתמיס לפתרון בעיות יחודיות גס הס ידועיס והנה - התרגום של כל אלה לשפת ויצ'ואל בייסיק אינו תקיןו. חלק מהיכולת לנצל את כישורי השפה מתבטא בהכרה טובה של המאפייניס של כל פקד ותפקידם. בפרק הקודס הכרנו את הפקדים ולמדנו להכיר חלק מהמאפיינים המיוחדים לכל אחד מהם. עתה נלמד את המאפייניס העיקרייס והשימושיים ביותר, המשותפים לכלל הפקדים ואשר חוזרים על עצמסם ברוב (חלקם אף בכל) היישומיס שנפתח. הכרת המאפיינים וה ח ]ה - תכונה וו קובעת את כיוון יישור הטקסט הכתוב בפקד: 0 - יישור לשמאל, 1 - יישור לימין, 2 - למרכז (ראה תרשים 4.1). תרשים 4.1 6אּזהּסססֶ - קובע את סוג הופעת הפקד על גבי הטופס: 0 - קובע שהפקד יופיע באופן שטוח על גבי הטופס; 1 - מציג את הפקד בצורה תלת-מימדית (ראה תרשים 2). <1ם) -. [חוזס-] .₪ תלת מימדי | ות תרשים 4.2 פרק 4: מאפיינים (65וח6קסזק) ‏ 81 זס|00א2306% - צבע רקע של הפקד. ניתן לבחור אחד מצבעי המערכת (מתוך הכרטיסיה וח5/516), או את אחד הצבעיס בלוח הצבעים (הכרטיסיה 08!646). 8 - סוג מסגרת הפקד: 0 - ללא מסגרת, 1 - מסגרת שקועה (תלת-מימדית) (ראה תרשיס 4.3). [חוזס-] .₪ תרשים 4.3 חסו+63 - כיתוב. והו הכיתוב שיופיע על פני הפקד (תרשים 4.4). <זה) אד ו וד תרשים 4.4 אסם!0ז4ח60 - תכונה זו שייכת לטופס (חחזסת). לכל טופס יש בצידו חימני העליון שלושה לחצני בקרה [אזם] השולטיס בסגירה, בשינוי גודל ובמזעור, בהתאמה. הערך 6טזד מורה ששלושת הלחצניס האלה יופיעו בטופס. השמת ערך 81!56= במאפיין זה תגרוס להסתרתס. 4 - תכונה זו קובעת את יכולת המשתמש להשתמש באובייקט או לא: פטוד (ברירת המחדל) - האובייקט ניתן לשימוש; 58156 - אין אפשרות גישה ושימוש באובייקט. +חס= - קביעת סוג הגופן, הסגנון וגודל הטקסט המופיע בפקד (תרשים 4.5). וי תרשים 4.5 2 6ם - ערכת כלים באמצעות מאפיין זה ניתן לקבוע גם את גודל הגופן, סגנונו ואפקטיס נוספים. השינוייס מתבצעיס בתיבת הדו-שיח +חס= שמוצגת בתרשיס הבא : ]5 5305 145 זחטו | פסובום 145 ספתו | 15 55 15 חופו6זה 4 ימ" וסעבו. ק תרשים 4.6 זס|660זסת - צבע חזית. + - גובה האובייקט (תרשים 4.7). תרשים 4.7 א6ח! - אס האובייקט הוא חלק ממערך, תכונה זו קובעת את מיקומו, או במילים אחרות, את מספר האינדקס שלו במערך. % - המרחק בין הגבול השמאלי של הטופס לבין הגבול השמאלי של הפקד (תרשיס 8). פרק 4: מאפיינים (008169זק) 83 - =) > פקד אס0ואס ך | <- ]/0 -> תרשים 4.8 07+ח01 056 - קובע את צורת העכבר כאשר הוא נע על פני האובייקט. - תכונה זו שימושית מאוד ליישומיס הכתוביס למשתמש העברי. כשמציביס לתכונה וו את הערך פטזד, הפקד הופך כיוון לימין-שמאל (כמקובל בעברית). הדבר מתבטא בכיוון כתיבה מימין לשמאל, כותרות ותפריטים בצד ימין של הטופס וכוי. א6ח! גד - תכונה זו קובעת את סדר התנועה של המשתמש בטופס. התנועה בטופס והמעבר מפקד אחד למשנהו נעשית באמצעות המקש 1780. הסדר הרצוי נקבע בעזרת תכונה וו: ערך 0 מורה כי הפקד יקבל ראשון את המיקוד, הפקד הבא אחריו יקבל ערך 1, וכן הלאה לפי סדר עולה. 0ק305+0ד - תכונה זו קובעת אס הפקד יקבל מיקוד (לחיצת המשתמש על מקש סבּ1) או לא. הערך פטזד (ברירת המחדל) מאפשר קבלת מיקוד, והערך 8156 גורס לדילוג על הפקד והתמקדות בפקד הבא אחריו בסדר. בניגוד למאפיין 0ַ16פַ8חם, שבו ערך 8156= קובע כי אין אפשרות להשתמש בפקד, במאפיין ק1805%0 הערך 81!56= גורס לדילוג על הפקד. עם ואת, בידי המשתמש יילשבוריי את הרצף ולתת מיקוד לפקד ולהשתמש בו. + דסןו דוססד - מוכרת לנו התופעה השכיחה בסביבה חלונאית, בה מניחים את העכבר על פקד מסויס ולאחר שנייה או שתיים מופיעה תיבה, המסבירה לנו מהו תפקיד הפקד. התכונה !6 דםוד|ססד קובעת את טקסט תיאור הכלי אשר מוצג באותה תיבה המתקבלת בעת השהיית העכבר על הפקד (תרשים 4.9). יצואה מהתוכנית תרשים 4.9 קסד - המרחק בין הגבול העליון של הטופס לבין הגבול העליון של הפקד (תרשיס 0. 4 6ם - ערכת כלים פקד א80ואפך תרשים 4.10 6 - תכונה זו קובעת אס פקד יוצג בומן הפעלת התוכנית, או לא: הערך פטיוד (ברירת המחדל) מציג את הפקד בזמן ריצה; 8156* גורס להסתרת הפקד. במאפיין זה נשתמש כשנרצה להחזיק ערך כלשהו בפקד, או להציב אובייקט עזר על פני הטופס, אשר יהיה נוח לשימוש לנו כמתכנתים, ולא נרצה שהוא ייראה בזמן ריצה. והנה טיפ קטן, אבל חשוב. במהלך הפעלת התוכנית נרצה לפעמיס להעביר פרמטר מטופס אחד למשנהו. בשפת ויז'ואל בייסיק אין כלי או פונקציה מיוחדיס לצורך זה. אולס, עס טיפת תושיה ובעזרת המאפיין 0!6ו9ו/ נתגבר על הבעיה. בטופס ה'יקוראי'י (הטופס שממנו נרצה להעביר את הארגומנט לטופס האחר שנפתח) ניצור |1888 או א0ם)%א6ד אשר יאותחלו בערך אשר נרצה להעביר כפרמטר, ואת ערך תכונת 1810!6/ שלו נגדיר 8!86=. לאחר מכן, כשנטען את הטופס היינקראיי (הטופס החדש שנפתת ואשר צריך לקבל את הפרמטר שנשלח), נקרא מתוכו את תוכן הפקד המוסתר שבטופס הייקוראיי אשר מחזיק בערך הפרמטר. נניח ששס הטופס הקורא הוא חופ!וחז1 והאובייקט המחזיק את ערך הפרמטר הוא ז178780610א1 (מסוג אסם)א6ד). הפנייה מהטופס ה'ינקרא'י אל האובייקט תיעשה באמצעות שורת הקוד הזו: %%. ל 23600 3 א > . ם ב ות + ח+סו/צ - רוחב האובייקט. פרק 4: מאפיינים (69וח6קסזק) 85 5: משתנים כבכל שפת תכנות, גם בוויז'ואל בייסיק נמצא את אבני הבניין של השפה - המשתנים. ברוב השפות שהכרנו עד היוס (0,++6, |08508 וכוי), הצהרת המשתנה היתה חייבת להקדים את השימוש בהם. שפת ויז'ואל בייסיק שונה משפות אלו בכך שבה השימוש במשתנה אינו מחייב הצהרה קודמת שלו. משפט זה, "צםהת" = 6תהאעא הוא משפט חוקי ותקף, למרות שלא הצהרנו מראש על המשתנה פחחהּאזץו. עס ואת, מומלצ להצהיר תמיד על משתנים, לשס תיעוד וניהול טוב יותר שלהם, כפי שנלמד בהמשך. המשפט זוסו!כא= הסו+קס ההצהרה ישוסו!קא= חסטססיי שנרשוס בחלון הקוד בחלק 5חסו60|8790 |8ז8ח8) שבראש הטופס (ראה תרשיס 5.1), מורה על כך שאנו דורשיס שקודס השימוש במשתנה כלשהו בתוכנית, עלינו להצהיר עליו. בדרך זו אנו כופיס הצהרה על המשתנה לפני השימוש בו. >1) ב (2000)) [חוזס] - 6011ןסוכן מה [* (81005ז0601)] | - (181ח66)] זוסו|סא= הפו תרשים 5.1 הצהרה זו גורמת לוויז'ואל בייסיק להתריע בכל פעם שהיא מוצאת משתנה שלא הוצהר במפורש קודס לשימוש בו. ההתרעה מופיעה כהודעת שגיאת הידור (תרשיס 2). פרק 5: משתנים 87 ב ה סז ₪!וקוחס / בפחו06 )סח 6|ספוחזב /י תרשים 5.2 אישור ההודעה גורס לוויו'ואל בייסיק לסמן את המשתנה בתוכנית שלא הוצהר קודס כתיבתו (תרשים 5.3). בנוסף לסימון המשתנה מסומנת גם השיגרה או הפונקציה שבהן נעשה שימוש במשתנה הלא מוצהר. |<1ם]ן-. (008:)) [חוזס] - 66)1ן0:?] מ | - ו | - חוזס:ז] זוסו|סא= הפוס תרשים 5.3 הצהרה זו שימושית במיוחד כשאנו חוששים משגיאות הקלדה, למשל. במקרה זה, ההצהרה 60%ו1כְא= חסוזק0 תסייע לאתר שגיאות מסוג זה. המשתנה זחבּוזב3ּ כפי שראינו, אין צורך להצהיר על משתנים, כשאין כותביס את ההצהרה המיוחדת אסווקאם חסטקס. עס זואת, כאשר ויז'ואל בייסיק פוגשת במשתנה שלא הצהרנו קודס לכן על סוגו, היא מגדירה אותו באופן אוטומטי כמשתנה מסוג !חפוז8/. משתנה זה מסוגל להחזיק נתוניס בכל גודל ובכל תבנית, ּהו משתנה ייכללייי. הרווחנו אמנס את הצורך בהצהרה, אך גס בזבזנו הרבה מקוס בזיכרון. לכן מומלצ להצהיר מראש על סוגי המשתנים על פי הייעוד הצפוי בתוכנית. באופן ו₪ה, כל משתנה תופס את המקוס בויכרון שהוא וקוק לו. 8 6ם - ערכת כלים סוגי משתנים ויויואל בייסיק מכילה סוגיס רביס של משתנים. בטבלה הבאה נציג את המשתניס העיקרייס והשימושיים ונפרט את הסוג, המשמעות, הגודל בבתיס ואת טווח הערכים. טבלה 5.1 סיוג משמעות גודל טווח הערכים המשתנה (בבתים) -- --- 8[ א[ 5 | 08 8 - 402823538 | 3.40282338 - 4.402823038. = | 8 | כפול - 1.79769313486232₪308- 8 7""7 ה מ- 0 עד 2 מיליארד (ביליו) תווים , ץ0ח6זזט) | מטבע 1 7 תו - 203,685,477.5808, 922,337- סח( | 7,03 22 ח00!68ם | בוליאני 68 זס שטזד 3 משוויוו כללי | כללו | 0/0240 ]| בהתאס לסוג המשתנה משתנים מספריים בוויז'יואל בייסיק קיימיס מספר סוגי משתניס מספריים : ז0ַח16ח!, פַחס.1, 6ופָחוס, 8 ו- שְסח6זזו0. כל סוג משתנה ייתופס'י מקוס שונה בזיכרון על פי גודלו המוגדר. באותה מידה, טווח הערכים של כל משתנה מותאם לגודלו. מטרת החלוקה למספר רב של סוגים היא בעיקר החיסכון בזיכרון. אס לדוגמה, נשתמש בלולאת %א...זס= במהלך התוכנית ונצהיר על משתנה מונה הלולאה מסוג פַופָחו5 למשל, אנו שוגים. ברור לנו שלמטרה זו דרוש משתנה שמייצג מספר שלס בלבד וערכו נמוך בדרך כלל. לכן, נעדיף במקרה ה להצהיר על משתנה הלולאה כמשתנה מסוג ז0ַפָסח! ובכך גס נחסוך 2 בתים (ההפרש בין סופָחו5 ל- ז0חָ6זח!) בזיכרון. ולאלה שפוקחים עינייס ושואליס ייאז מה אס גזלת עוד שני בתיסזי'י, ברצוני לומר שבתוכנית יש לולאות רבות, ויש עוד מקומות רביסם שאפשר לחסוך בהם. פרק 5: משתנים 89 משתנה מחרוזת כאשר נודקק למשתנה אשר יכיל מחרוזת, נצהיר עליו כעל משתנה מסוג 8ח)6. באופן רגיל, גודל המשתנה מותאס למחרוזת שהוא מכיל. כך, אס במהלך התוכנית המחרוזת קטנה - המשתנה יקטן, ואס היא גדלה - המשתנה יתפוס יותר בתים. עס זאת, ניתן להגדיר גודל קבוע למשתנה על ידי ציון הגודל הרצוי. לדוגמה, 2 * 6ם1ע556 28 6תהאע5%62 תנכת במקרה וה המשתנה פח501%8 יכיל שני תוויס בלבד. אס נרשוס את שורות הקוד האלו, "צְתהכע" = סתַאע562 סתהאת5 סתנ1עק התוצאה תהיה, שעל המסך יודפס ייהפ'י, ולא ייעְחבּפ'י. משתנה בוליאני כאשר דרוש משתנה אשר יכיל מידע של שני מצבים, כמו אמת/שקר (6/:8|56טז7), כן/לא (סח/65ץ) או משתנה יידגליי (פָ9!=) המכיל ערך דלוק/כבוי (08/ח0), נצהיר עליו כעל משתנה מסוג ח200!68. ככלל, הערכים שמקבל משתנה בוליאני הס 8/:8156טז ד, וברירת המחדל היא 8!56=. ניתן להשתמש במשתנה מספרי אשר יתנהג כמשתנה בוליאני. הערכיס המוגדרים בו הס ערכים מספריים רגילים (ולא 08/=8158זד), אולס מוסכס שערך 0 (אפס) מציין ערך שקרי (8|86=) וכל שאר הערכים (שאינס אפס) מציינים ערך אמת (פטזד). תרשימים 5.4 - 5.7 מדגימיס שימוש במשתנה מספרי המתנהג כמשתנה בוליאני. 3 ףאו (008<)) [חזזס= - 811ןםז?] א [- ו [- וקור ] ()אסו!) )חוזקטחחס טגום פופשוזק זססטוח| 35 הצוחו החוכ 7 = הוחו חש ד החגו[יחו ]| "סוד" זחוז בוב "5|פ=" זחוז | בח= מש בח= תרשים 5.4 0 6ם - ערכת כלים תרשים 5.5: תרשים 5.4 בומן ריצה (008;)) [חזזם: - [661ןםז?] ₪ ()אסוו )מוזקטוחס סוס פופשוזק זפסטזח| 35 הווחו חזום 0 = ההגו4])חו השח ד הווחו זו "סוד" זחוז 68 "15ם=" זחוז ]| ח= טש הח תרשים 5.6 תרשים 5.7: תרשיס 5.6 בוּמן ריצה פרק 5: משתנים 91 המרת סוגי משתנים בוויו'יואל בייסיק יש פונקציות הממירות ערכים מסוג מסויס של משתניסם לסוג אחר. אס לדוגמה, משתנה מחרוזת מכיל את הערך ''י123'י, אשר יכול לייצג עבורנו מספר, אין אפשרות לבצע על המשתנה חישוביס מתמטייס כלשהם כמו על מספר. עס ואת, ניתן להצהיר על משתנה מספרי מתאים, ולהמיר אליו את המחרוזת (תרשיס 5.8). מעתה יהיה ניתן לבצע חישובים במשתנה המספרי (תרשים 5.9). |< )ב (00₪8) [חזזס= - 6611ןםז<) וח [- ו |- זז ] )אסוו) %חוז= סוחס טוש פופשוזק טחוש 35 והטי]54 וחוכ זפסטזח| 35 ההגו!י'וחו וחוכ "2 1" = וחגו|]ז9 (החגוי]57)ח!-) = רתגו[י)חו 2 * ותטויזוחו +חוז תרשים 5.8 |< 1ם]) =. [חזס-] ₪ 4 תרשים 5.9 טבלה 5.2 מפרטת את פונקציות ההמרה האפשריות. ניתן להמיר כל משתנה לכל משתנה. 2 6ם - ערכת כלים טבלה 5.2 הפונקציה | | ממירה ל- ()6800 ח68|ססם ()0/%6 0 6 (007)0 ץסח6זט) ()0816 )6 06 ()ופסם6 6סטסס ()%ח!6 ז הו ()פָחס 61 פָחס. | (90ח05 6פְחוס ()617 בחוזס ()ז8) %חוה/ ()ם/60 זז יש לשיס לב שכאשר ממיריס משתנה מסוג אחד לסוג משתנה אחר, המשתנה חייב להיות חוקי לסוג המשתנה החדש. לדוגמה, אין להמיר את משתנה המחרוזת ''1234567''י למשתנה מסוג ז906+ח! (תרשים 5.10), מכיוןו שהמספר 1,234,567 אינו בטווח המספרים שמכיל סוג המשתנה ז48וח!. במקרה כזה נקבל הודעת שגיאה (תרשיס 5.11) וההמרה לא תבוצע. כפתרון יש להמיר לסוג משתנה פַחס.]. > |ם)ב. (0008) [חזזס= - 1ו6פן[םז<) אה [- ו [- קר ] ()אסו!ל) %חוזקטוחס טוש פופשוזק פחוז5 25 הצצפ החוכ זפסטוח| 35 הוחו חחום "1234567" = החגו]ז51 (ההגו]צ5)+ח!) = ומגון4]וחו החגוצחו +חוז תרשים 5.10 פרק 5: משתנים 93 356 |הטפו/שי ספסזסווא :"' וסוס 6רחו5-חט₪ סחוי | 6טחו?חס) תרשים 5.11 ערכים מיוחדים ערכים אלה אינסם משתנים אלא ערכים הקיימים (חו זווופ) בוויו'ואל בייסיק, היכוליס לקבל סוגים שוניס של משתניס. ץְזוחם - ריק הערך /0%ח= מצביע על כך שמשתנה מסוג 1ח8וז8/ הוא ריק. במיליס אחרות, עדיין לא בוצעה במשתנה פעולת השמה כלשהי מרגע שהוצהר. ברגע שמתבצעת פעולת השמה והמשתנה מקבל ערך חדש (ובכלל זגה הערכים: 0, יייי ו- |וטא), יינעלסיי הערך ץקוח=. ניתן לאתחל שוב את המשתנה בערך זה על ידי הצבת ערך ע1קְחח= למשתנה בפעולת השמה רגילה. לדוגמה: צ6סתת = סשתה 1בעהטץא הערך ע6סח= אינו ערך 0 (אפס) או מחרוזת ריקה (יייי), אלא הוא ערך בפני עצמו. ניתן לבחון משתנה כלשהו אס הוא מכיל ערך צשקחם או לא, באמצעות הפונקציה ()/+0ו=5! המחזירה 06ד כאשר המשתנה מכיל ערך זה. כאשר משתנה המכיל ערך עקח= הוא חלק מביטוי, ויז'ואל בייסיק מתייחסת אליו כאל 0 (אפס), או מחרוזת ריקה (יייי), בהתאם לסוג המשתנה. ווטא -- "אין" וטא הנו ערך מיוחד שיכול לקבל משתנה מסוג !חאוז8/. ערך וה שימושי בעיקר במסדי נתוניס ומורה על ייחוסריי ערך במשתנה. ניתן לאתחל משתנה מסוג )חאוז8/ בערך |וטא בפקודת השמה רגילה, בעזרת מילת המפתח ווטוא, לדוגמה: 1בטא = הסהסעא 4 6 - ערכת כלים כדי לבדוק אס משתנה מכלל ערך ||טא השתמש בפונקציה ()!וטא8!, לדוגמה: תסמך (ַסַַכץא) נ1טא158 15 "!11טא 18 הס6הכצא" אספסטספא 5 תס מבנים המוגדרים על ידי המשתמש (6קץד 60חו0567-061) מבנה 511000) מוכר לנו משפות תכנות שונות כ- 6 ו- ++6. המבנה הוא משתנה שמכיל בתוכו קבוצת משתניס מסוגים שונים. השימוש במבנה נעשה בעיקר כאשר לקבוצת המשתנים השוניס יש מכנה משותף. לדוגמה, מחלקת משאבי אנוש בחברה מעוניינת להחזיק פרטים אישייס של כל עובדיה לצורך ניהול וחישוב משכורתם. במקוס להצהיר על משתנים מסוגיס שוניס עבור שס העובד, כתובתו וכוי, נוח וברור יותר להחזיק משתנה אחד מסוג מבנה, אשר יכיל בתוכו את כל סוגי המשתנים השוניס המרכיבים יחד את פרטי העובד. משתנה מסוג מבנה מוצהר בתוכנית באמצעות המילה 8קץד. הצהרה על משתנה-מבנה מוצגת בתרשיס 5.12. |<1ם])-. [006) 000161 - 1וסןסזש - (5ח0ו30 ז060!3)|. | = (81ז0ח06) הספזט המיד פחוז5 245 פוחם4] סחס | 35 בו טחוס 35 פפזס ה החס. | 35 פהסחספובד תרשים 5.12 הבה נסביר את המבנה המוצהר כאן: חס5ז6ק הוא שס המשתנה - המבנה, המכיל את סוגי המשתניס השוניס הכוללים את פרטי העובד. כאשר הצהרנו על המבנה יצרנו סוג חדש של משתנה. מעתה ניתן להצהיר על משתנה חדש מסוג המבנה חספז6ם. לדוגמה, ם6250ק 28 10766קחת תנכת 6 הוא עתה משתנה מסוג המבנה ח0ס8ז6ק וגס לו ארבעה משתנים שוניס שהוא יכול לפנות אליהס. פרק 5: משתנים 95 כשרוצים לפנות למשתנה מסויס לחישוב או לפעולת השמה, צריך לרשוס את שמו. במקרה של משתנה שהוא חלק מקבוצת משתניס בתוך מבנה, הדבר שונה. כדי לפנות למשתנה כזה, יש לפנות בראשונה אל משתנה המבנה שהוא שייך לו, ורק אחר כך לפנות אליו. אס נניח, לצורך הדוגמה, כי יש לנו משתנה 88ע0!0חש מסוג ח0ס9ז6ק המכיל נתוני עובד, וברצוננו לעדכן את שס העובד ל-חִם, נעשה ואת כך: "מהת" = סתהּא. 66צס [סתם תחילה פוניס אל משתנה המבנה 88עס!קחם, ורק אחר כך אל אחד המשתניס שכלולים בו, ובמקרה זה - 6חִ8\]. המבנה הוא משתנה חדש שיצרנו במערכת, אך ויו'יואל בייסיק מזהה אותו ומכירה את כל המשתניס שהוא כולל. כאשר נרשוס את שס המשתנה (המבנה) ולאחריו נקודה, מייד תוצג תיבת רשימה המכילה את כל משתני המבנה (תרשים 5.13) כדי שנוכל לבחור מתוכה את המשתנה הרצוי. <ןם) = [008:)] 1חוזס] - 1ו66ןס:?) או ב ו ב זר ] )אסוול) %חוזטוחס טגום סופשוזק הספזט 345 זטאזם//ייא חזום ה0פזם? 45 זםאזס/שזגוטיצ' חזום "חהה" = 8ו15].זםאזט//זנוסצ* 8 = ה)]זפאזם/וטוסצ* "| 8טוזם." = 007855 זםאזם/וטוסצי 1 = פהחסח50!ב ד.זםאזס//וגוסצ' זםאזס/שזנוסץצ = זסאזסיו זשאזם יע זוז !זא זמ | וס זמ בי 6 !זט א +מוזלז הסח !פד ₪9 תרשים 5.13 באופן דומה ניתן להעתיק משתנה-מבנה אחד אל משתנה-מבנה אחר, על כל סוגי משתניו הפנימייס. חשוב לציין, שסוג המבנה של שני המשתנים חייב להיות והה! לדוגמה, ם6250ק פת2 מס6א2סאעא תנכ מספפספקע פב פסאעסאעטסצ תנכת עסאעסטאפטסצ = מ6א2סחעא 6 6ם - ערכת כלים במקרה זה ערכי כל המשתנים ב- זפאזס//זטוסץ יושמו לתוך המשתנים ב- זפאזסצשעו (תרשים 5.14-5.15). <ןם) - | (008:)] [חוזס] - 66)1ן0:?] א [+ %ו] | - הור ] ()אסו!0) )מוזק סוחס פוש פופשווק הספזם 45 זטאזם/שיוא חזום הספזט 48 זטאזם//גום' חזום "56" = 45008].זפאזס//ווםיצ 8 = הם)!.זפאזם/י/זגום* "הח18756!8." = 855זססב. זםאזסוטוסיצ 1 = פתסתס5! ך.זטאזם//וגוסצי זטאזסעוטוסצ = זםאזם שיו שוחם1].זםאזס/ע/ +מו בן.זפאזס/ו +חו זזה זםאזס/עעיוא זמוז פחסת6|80 ך.זבאזס//עיו מו תרשים 5.14 |<1ם] = | [חוזס-] .₪ חבם 8 ח88|6 1 תרשים 5.15 הצהרה על משתנים אופן ההצהרה נעשה באמצעות המשפט וחום. ההצהרה כוללת את שס המשתנה ואת סוגו. ככלל, הצהרה על משתנה נעשית כך: 6ץ1תה עה פב 78218016 תנקת פרק 5: משתנים 97 לדוגמה: 6ת1ע56 פב 6תהא תנכת ףמסת פב 16 תנק 15662 פב תטגטא תנק 6 פ>8ת2 2126 תנכת מ8ס1ססת 28 8001 תנכת המיליס חחוס, 45 וסוג המשתנה (לדוגמה, פַחו54) הן מיליס שמורות ונצבעות בכחול באופן אוטומטי. ניתן להצהיר במשפט וחום אחד על כמה משתנים מאותו סוג. לדוגמה, %ת1ע562 2585 2602688 ,0םת5621 פב ס6תהא תנכת שיס לב להצהרה הזו: %םמ1ע56 28 58ספהחת ,ס6תהא תנכת הצהרה וו אינה והה לקודמתה! במקרה זה, ויו'ואל בייסיק תוהה את המשתנה 5 בלבד כמשתנה מסוג פַחו51. המשתנה 6חח8א!, במקרה זה, אינו מסווג וההתייחסות אליו תהיה כאל משתנה +ח8זה/. באופן דומה, ניתן לנצל את ההצהרה חוכ פעס אחת עבור סוגיס שוניס של משתנים. לדוגמה, מ8ס1ססת פ2 2001 ,2866 פ2 מם6ע212 ,166062 פג2 תטא תנקת שמות משתנים כשקובעיס שס למשתנה, רצוי לקבוע לו שס אשר מותאס לערך שהוא מכיל. לדוגמה, למשתנה שיכיל יישם פרטייי נקרא 6וח8א)פזו=. כמו כן, מקובל לכתוב את שמות המשתנים באות רישית גדולה, אך אין ה חובה. לעומת זאת, יש חוקים למתן שס למשתנה אשר חייביס להתקיים, כדי ששס המשתנה יהיה תקף. החוקיס לשם משתנה תקף הם: 1. שס המשתנה חייב להתחיל באות, אך יכול לכלול גס ספרות. 2 שס המשתנה אינו יכול לכלול שס השמור לסוג משתנה (לדוגמה 8ח1ו5). 3 שס המשתנה לא יהיה ארוך מ- 255 תוויס. 4. שס המשתנה לא יהיה כשסם מילת מפתח (לדוגמה ססס )). 5. ניתן לכלול בשס המשתנה קו תחתון (י' ") מלבד אותיות וספרות. כללים זּהים חלים גם על מתן שמות לפקדיס באמצעות המאפיין 6ַחחבּא. עם זאת, יש שני הבדליס בין מתן שמות למשתנים ובין מתן שמות לפקדים : 1. אורך שס הפקד (וכן הטופס, המודול והמחלקה) לא יעלה על 40 תוויס. 8 6ם - ערכת כלים 2 ניתן להשתמש במילה שמורה כשם פקד אך ורק בצירוף סוגריים מרובעים. לדוגמה, ":סתהת עגמטסץ עפסתםע" = מסנסס8ס. [סססם] במקרה וה שס הפקד *655ת'' הינו שס חוקי. לעומת זאת, השורה הבאה תגרוס להודעת שגיאה: ":סתהת עטסץ עסשסםתם" = מתסב6ק68.קססת השימוש בסוגריים מרובעיס עבור שס שהוא מילה שמורה בוויו'ואל בייסיק הינו חוקי אך ורק בשם פקד ואינו חוקי בשס משתנה. דוגמאות לשמות משתניס חוקיים: סתהא גת 3 1738 6תסםק7619 פתסת דוגמאות לשמות משתנים חוקיים, אך לא מומלצים : ה 2 1 2 דוגמאות לשמות משתנים לא חוקיים: המשתנה משתמש במילה שמורח: ו וו המשתנה אינו מתחיל באות: הצ המשתנה מכיל פסיק: ספא , 185% קידומת למשתנים כמקובל במתן שמות לפקדים, גס בשמות משתנים נהוג לצרף לשס המשתנה קידומת המעידה על סוגו, כדי להקל על המתכנת והבודק את התוכנית. טבלה 5.3 מפרטת את סוגי המשתנים והקידומת המקובלת לכל אחד מהם: טבלה 5.3 סיוג משתנה קידומת פרק 5: משתנים 99 777 שמשם] מ | אאואט| | חצ +חהחה/ סוגי הצהרה בשלושה מקומות בתוכנית ניתן להצהיר על משתנים, ומהם נגזריס שלושה סוגיס שוניס של הצהרה. לכל סוג משתנה יש טווח הכרה ואורך חייס שונה. טווח הכרה (50006) - הוא הטווח בו מוכר ערכו של המשתנה. אורך חיים (110) - הוא הזמן אשר המשתנה שומר על ערכו. סוג ההצהרה הראשון הוא ברמת האובייקט. לכל אובייקט יש אירועיס שוניס או שגרות שהוא יודע להגיב להס. לצורך ביצוע פעולות מסוימות בשיגרה נזדקק לרוב גס למשתניםס. משמעות ההצהרה ברמת האובייקט היא, שהמשתנה וערכו מוכריס באירוע או בשיגרה שבהס הוא הוצהר בלבד. אובייקט אחר, על אף שהוא באותו טופס לא יכיר את המשתנה הזה. מקובל לכנות משתנה מסוג גה בשס משתנה לוקאלי, או משתנה מקומי. במילים אחרות, טווח ההכרה של המשתנה הוא רק בשיגרה שבה הוצהר. בהתאם, גם אורך התיים של המשתנה הוא למשך האירוע בלבד. כאשר השיגרה או האירוע מסתיימים, מסתיים גם אורך החיים של המשתנה, והמקוס בויכרון אשר הוקצה לו משתחרר. בתרשיס 5.16 המשתנה חט|1068 מוצהר כמשתנה מספר 1606ח!). המשתנה מוצהר בתוך השיגרה ()1.080 וחזס= ולכן הוא משתנה מקומי, ולפיכך, טווח ההכרה ואורך החייס שלו הס לשיגרה בה הוצהר בלבד. כאשר המשתנה מאותחל בשיגרה ומקבל את הערך 5, הוא שומר על ערכו רק בתחוס השיגרה ()1.080 חזסת. 0 6ם/. - ערכת כלים <1ם)- | (008:)] [ה6ס.]חוז) - 66)1ןם:?) מ | - %ו] | - ] )סו %מוזטוחס טט5 פופשוזוק וחגו]|0₪ס | +חו טס סח ()080.] הזזס= מש פופשוזק זססטוח! 35 ומט4]|ססס | חחום 5 = הזגו8|]4סם 1 טש סח תרשים 5.16 כאשר נשתמש במשתנה וחט|1.068 בשיגרה אחרת (תרשים 5.17), משתנה זה כבר איבד את ערכו (במקרה וּה, במקוס 5 ערכו הוא עקוחם). המשתנה וחט|008 | בשיגרה ()א016 +חוזק0וח6 הוא משתנה אחר לגמרי. משתנה זה הוא מקומי בשיגרה שלו, ומכיון שלא אותחל, ערכו עָקוח=. אורך החייס של המשתנה וחטא!|1.068 בשיגרה 46 חוזס= מסתיים כאשר השיגרה מסיימת את פעולתה, והזיכרון משתחרר. <ום)ן-| [008:)) [06 ]חזז] - 1ו66ן0:? מ [+ ו | 6 ] ()אסו!2) %חוז'סותס טגום פוששיוזק וחגוי]|הכוס. | +מוז עקות = = ותגון!ה טס 1 | הח = ()050 1 וחזס= טגו5 פופשוזק זפסטוח| 35 ומט4]|הסס | חזום 5 = הזגווי]|םס0 | סטכס סח= תרשים 5.17 סוג ההצהרה השני הוא ברמת הטופס (חחזס=). בחלק העליון של הטופס (במבט קוד) מוקצה מקום להצהרות משתנים, 5ח0ו260!878% |818ח0026). הצהרה על משתנה באזור זה היא הצהרה ברמת הטופס. משתנה כזה וערכו יוכרו לכלל השגרות והפונקציות שנמצאות בטופס. במקרה וה אין צורך להצהיר בכל פעס מחדש בתוך כל שיגרה ופונקציה על המשתנה, כי הוא מוכר לכל. בתרשיס 5.18 מוצהר המשתנה חטא|6/8 |וחזס] ברמת הטופס. משתנה זה מוכר לכל השגרות וכאשר נאתחל אותו בשיגרה 0 הזוס ונדפיס ‏ אותו בשיגרה (060ו1 +חוז סוחס (תרשים 5.19) הוא עדיין ישמור על ערכו. פרק 5: משתנים 101 |<ום)- (006:)] 0631 |חזז] - 6611ן0:?] א | - (008ו6018180ם)] | - (073ח66)] )| 35 וחט|פעים |חוזס= חוום )סו אמוזק וס טט5 פופשוזק והגו] ושי |החזס= זחוז סטש בח= ()060.] וחזס= סטש פופטוזק 5 = ]יפ )הזז = מש 8ח= תרשים 5.18 <1ם]- | [חזס] .₪ תרשים 5.19 כאשר שיגרה כלשהי משנה את ערך המשתנה, ערכו החדש יוכר גס כאשר נשתמש בו בשיגרה אחרת. במיליס אחרות, טווח ההכרה של המשתנה הוא בכל השגרות והפונקציות של הטופס בו הוצהר. אורך החייס של משתנה מסוג זה הוא כאורך חייו של הטופס, וכל עוד לא שחררנו את הטופס מהזיכרון המשתנה קייס ושומר על ערכו. סוג ההצהרה השלישי הוא ברמת המודול (6!ט0ס/1), קטע התוכנית. הצהרה על משתנה ברמת המודול מתחלקת לשניים : 6ַאָהּצוזק (פרטית) ו- 6ו!סטם (ציבורית). משתנה המוצהר במודול כ- אאצ1ז5, מוכר לכל השגרות והפונקציות שבו בלבד, ואין הוא מוכר לטפסים ומודולים אחריס. אופן ההצהרה נעשה כרגיל, אלא שהמילה 6 מחליפה את מילת המפתח חחופ. לדוגמה: 562168 2585 6ת8א12856ת 866ט1צק טווח ההכרה של משתנה זה הוא לכל השגרות והפונקציות של המודול, ואורך החייס שלו כאורך חיי המודול. תכונה גו תקפה בתנאי שהמשתנה הוצהר בחלק ההצהרות (ח60137800 |878ח06)) של המודול. משתנה המוצהר בתוך אחת השגרות, או בתוך 2 665ם₪/. - ערכת כלים הפונקציות במודול, הוא משתנה מקומי לאותה שיגרה או פונקציה. טווח ההכרה ואורך החייס שלו הס כשל משתנה מקומי רגיל. אפשרות שנייה היא להצהיר על המשתנה כ- 6ו!סטם. לדוגמת: 521% 28 6ת8א12850ע 116סגוק הצהרה על משתנה ברמת המודול כ- 6ו|פט₪ משמעותה שהמשתנה מוכר לא רק בכל השגרות והפונקציות של המודול בו הוא הוצהר, כי אס בכל המודוליס והטפסיס בפרויקט. במילים אחרות, טווח ההכרה ואורך החיים של המשתנה הס למהלך כל התוכנית. בתרשיס 5.20 מוצהר המשתנה וחטאזפטק כמשתנה מסוג ס6ו|פטם, והוא מאותחל בשיגרה ()מו8 פטס. |<1ם]ן-. (006) 000161 - 1וססוסזש [> חופחו] [- (073ח66)] זפסטוה| 45 ומטצ]טטוס סווסטו ()חוסוח סגו 3 = מט4]סוס סח חום וזו סטש הח= תרשים 5.20 המשתנה חחטאפטס הוצהר כ- סו|וטטוש ומוכר בכל הטפסים והמודולים בפרויקט. מכיון שכך, כשנדפיס אותו מתוך השיגרה ()אסו!6 +חוז 60 שבטופס חוהּ!חז1 (תרשים 1 - 5.22) הוא ישמור על ערכו. <ום)ן-| [008:)] חובּ)אחוז] - 6611ןם:?) מ | - 6% |+ ור ] )טסוו )חוז סוחס טגום פופשיוזק ההגו]טוגוכן זחוז מגו5 הח תרשים 5.21 פרק 5: משתנים 103 |< |ם]=. וס ₪ 3 תרשים 5.22 ראוי לשים לב שמשתנה המוצהר כ- סו|פטם יהיה מוכר לכל המודולים והטפסיס אך ורק אס הוא מוצהר במודול (000!8ו]). משתנה ברמת הטופס מוכר לפונקציות והשגרות של הטופס עצמו בלבד. ניתן לצייו בהצהרת המשתנה (ברמת המודול) את המילה השמורה |0!088 במקוס המילה השמורה סוופטק. גס כך נקבל את אותה תוצאה: טווח הכרה ואורך חייס לכל אורך התוכנית. משתנה סטטי סוג משתנה נוסף הוא המשתנה הסטטי (6|סהּ88צ 518%6). משתנה סטטי משלב בתוכו תכונות של משתנה מקומי ושל משתנה מודולרי. טווח ההכרה של משתנה סטטי הוא כוה של משתנה מקומי, ולכן הוא מוכר בפונקציה או בשיגרה שבה הוצהר בלבד. לעומת זאת, אורך החייס של משתנה זה הוא כזה של משתנה מודולרי, והוא אינו מאבד את ערכו בסיוס הפונקציה או השיגרה. בכל פעס שנקרא לפונקציה או לשיגרה, ניווכח שהמשתנה שומר על ערכו הקודם. משתנה סטטי אינו משתחרר מהזיכרון בכל פעם שמסתיימת הפונקציה או השיגרה, ולכן הוא גס אינו יינולדיי מחדש; והו אותו משתנה שקייס במשך חיי המודול. הצהרה על משתנה כסטטי נעשית בעזרת מילת המפתח סו5181. לדוגמה, 8תסע 38 071580820 568%10 לפנינו דוגמה אשר תמחיש את ההבדל בין משתנה מקומי לבין משתנה סטטל: בתרשיס 5.23 מוצהר המשתנה וחטא|1.008 כמשתנה מקומי מסוג ז00סוח!, והוא מאותחל באופן אוטומטי באפס. בשורה השנייה מקודס ערך המשתנה ]008 | באחד, וערכו עומד עתה על 1. בשורה האחרונה של השיגרה ערכו של המשתנה מודפט על פני הטופס בעזרת הפקודה זחוזם. השיגרה המודגמת בתרשיס 5.23 מגיבה לאירוע 01106 של הלחצן זחוז 0 חס. במיליס אחרות, בכל פעם שנלתצ על הלחצן זחוזק (תרשיס 5.24) נקרא לשיגרה אשר תבצע את שורות הקוד שבה. כאשר נלחץ בפעס הראשונה על הלחצן, ייווצר המשתנה 4 6ם₪/ - ערכת כלים וחט\|1.008 ויוקצה לו מקוס בויכרון. משתנה וה יקבל אוטומטית את הערך אפס, ערכו יקודם ב- 1 ויוצג בטופס. |<1ם]- | [008:)] [חוזס] - 66)1ן0:? א [* ו [+ זור ] )סו )וז טוחס טגום פופשוזק זסהטוח| 45 ותטן+]|שם | חזום 1 + !00 ]| = והגו4]|םס0 | ההגו][ם | זחוז 50 הח= תרשים 5.23 אך מה יקרה אם נלחץ שוב על הלחצן +חוזק ! איזה ערך נקבל! לכאורה, אנו אמוריס לראות את הסיפרה 2 מוצגת בטופס, שהרי בקריאה הקודמת לשיגרה, כאשר לחצנו בפעס הראשונה על הלחצן קידמנו את ערך המשתנה ל-1. אולס בתרשים 5.24, המדגיס חמש לחיצות על הלחצן +חוזק, נראה שהערך 1 מוצג בכל פעס מחדש. תרשים 5.24 הסיבה לכך היא שהמשתנה וחט|1068 הוא מקומי וככזה, בכל פעס שהשיגרה ()א0ו01 %חו 00 מסתיימת, מסתיים גם אורך החיים שלו, הוא משחרר את הזיכרון והערך שהכיל אינו נשמר. בלחיצה נוספת על הלחצן נגרוס להיווצרות משתנה חדש, שיוקצה לו שוב מקוס כלשהו בזיכרון. על משתנה חדש זה ששמו וחטא|1.008 יתבצעו שוב אותן פעולות: איפוס אוטומטי וקידוס ערכו באחד. כך נבין מדוע בכל לחיצה יוצג שוב ושוב הערך 1 על גבי הטופס. עתה נבצע את אותו תרגיל, אך הפעס נשתמש במשתנה סטטי. פרק 5: משתנים 105 בתרשיס 5.25 מודגמת אותה שיגרה. הפעם מוצהר המשתנה וחטא|1.008 כמשתנה סטטי (0ו5184). בלחיצה הראשונה על הלחצן +חוזס, מאותחל המשתנה וחטא|68ס.| באופן אוטומטי וערכו הוא אפס. ערכו מקודס ב- 1 ומוצג בטופס. <ום] = | [066:)) [חוזם] - 1ו60ןסז: פה [* ו [* זו ] ()אסו!) )מוזקטוחס סטש פופטוזק | 35 השס | סוס [ + החגוי]|םשם | = וחגון]|םסס | והטו]|ה0 | זחו תרשים 5.25 אך מה קורה למשתנה כאשר מסתיימת השיגרה ()א0116 +חוזק0חס? בסיוס השיגרה המשתנה אינו משחרר את הזיכרון שהוקצה לו (למשתנה סטטי יש אורך חייס כאורך חיי המודול) ולכן הוא שומר על ערכו בתוך המודול. בלחיצה הבאה על הלחצן נקרא לשיגרה, והפעם יש למשתנה ערך (1) שהוא נושא עימו מהביצוע הקודס של השיגרה. לכן, כאשר נקדס את ערכו של המשתנה וחט|1008 ב-1, ערכו החדש יהיה עכשיו 2 וערך זה יוצג בטופס. תרשיס 5.26 מדגיסם חמש לחיצות על הלחצן +חוזק כאשר המשתנה וחטצ!|1.068 סטטי. תרשים 5.26 פונקציה סטטית יש אפשרות להצהיר על כל המשתנים שבתוך הפונקציה או בשיגרה כמשתניס סטטיים. לצורך וה נצהיר שהפונקציה או השיגרה הן מסוג ייסטטייי, ועל ידי וה כל המשתנים שבתוכן יוגדרו כסטטיים. השימוש במילת המפתח 5%8416 דרוש פעס אחת 6 66ם₪/. - ערכת כלים בלבד, לפני שס הפונקציה או לפני שס השיגרה, ואין צורך להצהיר על כל משתנה בנפרד שהוא סטטי. אופן ההצהרה על כל המשתנים בפונקציה או בשיגרה כסטטיים נעשה על ידי הצבת מילת המפתח 5%90/0 לפני שם הפונקציה או השיגרה (תרשים 5.27). 1 = [008-:)) [חוזם] - 1ו66ןס:?] מ [+ ו] [+ 6 ] ()א6116 סמנ1עקבטאס מגום ₪5351₪ עפשססת1 25 מעותס5תבץ מנבת עסמ 25 מטובבכסש55 בת 1 + מעותס5עבץ = מעו56תבץ 2 + ]555093 = מגת 560 מנגו]0ת 600 ;מעו56עבץ סמבטק תרשים 5.27 בתרשיס 5.27 מוצהריס המשתניס והטאו9זו= ו- הזט0ח5600 כמשתנים רגילים, אך ההצהרה על השיגרה ()א6ו!0 +חוז חס כסטטית הופכת את כל המשתנים בתוכה לסטטיים. ואכן בתרשים 5.28 נראה כי המשתניס וחטא9זו= ו- וטא ה0ס0ס58 מתנהגיס כמשתנים סטטיים (ולא לוקאליים). בכל לחיצה מתקדס ערך המשתניס וחטא91ז1= ו- התטח5600 באחד ושנייס בהתאמה. תרשים 5.28 פרק 5: משתנים 107 קבועים משתנה קבוע (30!8זהּע 51801ח00) הוא מקוס בזיכרון המאחסן ערך כלשהו. בניגוד למשתנה, לא ניתן לשנות את ערך המשתנה הזה, אשר קבוע לכל אורך התוכנית. לפיכך, לא תיתכן ביצוע פעולת השמה למשתנה קבוע, כי פעולה זו מחליפה ערך ישן בחדש, והדבר אינו אפשרי בקבוע. לשימוש בקבועיס במהלך התוכנית יתרונות רבים, וביניהס: קלות הקריאה של שורות הקוד ויכולת שינוי מהיר בשורות הקוד. בכתיבת הקוד משתמשים פעמים רבות בערכיס מספריים, במחרוזות וכוי, המייצגיס ערכיס משמעותיים שונים. לדוגמה, לציוו הצבעה אפשר להשתמש בערך 1 כמייצג את הערך ייבעדיי, 2 - מייצג ינגד ו-0 - 'ינמנעיי. במקרה כזה, בכל מקוס בו נרצה להשתמש בערכיס אלה בשורות הקוד, קריא וברור יותר יהיה אס נשתמש בקבועיס המייצגיס אותם. לדוגמה: 1 = עסט8ע 008% 2 = 5%6ת20681 008% 0 תנאספסת 008% בנוסף, יכולת השינוי בקוד מהירה וקלה. נניח שאנו מפתחים תוכנית לניהול חשבונות ועלינו לחשב את המעיימ, שערכו הנוכחי 17%. מה יקרה אם יוס אחד יוחלף ערכו של המעיימ ויעמוד על 18%! מכיון שהשינוי עלול להשפיע על שורות קוד רבות ייהמסתתרות'י בין שורות קוד אחרות! ודאי היה יותר נוח לו היינו מגדיריס את הקבוע הבא: 7 = פתט 56ם60 ובכל מקוס בו היה נדרש לחשב מעיימ, היינו משתמשיס בקבוע ד4/. ברגע שערך המעיימ יוחלף ל- 18%, עלינו לשנות שורת קוד אחת בלבד, שורת ההצהרה. אופו הגדרת קבוע נעשה בעזרת מילת המפתח +60₪5. לדוגמה: 5 = 6פמססעץאתסס 6056 בתרשים 5.29 מוגדר +5ח600/ו/!חסס כקבוע המכיל את הערך 5. 1 ואו (008:)] [חוזם] - 1ו66ןם:?] א [* (008ו0601190)] [* (31ח66)] 009% 0000081 = 5 )אסוו) %תוזוחס סגו פופשוזק 1 + 005%<)ען 00 = +5ח0<)עיוח סש תרשים 5.29 8 66ם/. - ערכת כלים בתוך השיגרה ()א016 009% נעשה ניסיון לקדם את ערכו של הקבוע באחד. פעולה זו אינה חוקית, כי היא מנסה לשנות ערך של משתנה קבוע. ואמנם, לחיצה על הלחצן +חוזק הפעילה את האירוע ()א60ו01 %חוז 60 וגרמה להודעת שגיאת הידור כמודגם בתרשים 5.30. ה זז 6ווקוחס !/ וסט סח 513% וס 0 ]5910 תרשים 5.30 ערך הקבוע לא חייב להיות מספר; ניתן להגדיר קבוע מסוג מחרוזת, תאריך וכו'. לדוגמה: "152861" = שְע6תטססתסס 86ם060 7% = צ08מם2126ם00 00856 הקבוע יכול לאחסן ביטוי, גס אס הוא כולל קבוע אחר. לדוגמה: ץ6נסתאטספת1 * 2106קע%םת1 = תטפתסס 8%ם00 2 + 0021286 = 6םת5600ם00 008% בדומה למשתנה ברמת המודול, ניתן להגדיר קבוע כ- סוופט" (במודול בלבד) ואז טוות ההכרה (ואורך החיים) שלו הוא לכל אורך חיי המודול (והתוכנית). לדוגמה: ץ6>נסתאטספת1 * 2106ק%2םת1 = תטפתסס 8%ם60 116עגוק באותה מידה, הגדרת קבוע בתוך שיגרה או בתוך פונקציה גורמת לו להתנהג כמשתנה מקומי. תרגול 1 הצהר על משתנה מסוג פַחו5% וקלוט לתוכו שס של משתמש. 2 הצהר על משתנה גלובלי, אתחל אותו, והצג אותו מטופס אחר. פרק 5: משתנים 109 6: פקודות השמה תפקיד המשתנים בתוכנית לאחסן ולשמור ערכים מסוגיס שונים, בהס ערכיס מספריים, מחרוזות, תאריכיס ועוד, הכל בהתאס לסוג המשתנה. המשתנה שומר על ערכו לכל משך החיים שלו ואינו משנה אותו, אלא אס אנו משניס אותו במכוון על ידי פקודת השמה. תפקיד פקודת ההשמה "לשים'י ערך במשתנה, ובמילים אחרות, להחליף ערך שמאוחסן בו בערך אחר רצוי, מעין 'יהחלפהי'י. פקודת ההשמה (הסוזסז51חו +ח6וחת0ו455) נראית באופן כללי כך: 8 = 78218016 לדוגמה: 3 = תגוא "טהסצ" = סתהא קריאת פקודת השמה היא מימין לשמאל, ופירוש הדבר שהערך 3 יאוחסן במשתנה וחטא. כאן למשל, תטא = 106תק הערך המאוחסן במשתנה וא יחליף את הערך הקייס במשתנה פ6סוזם, ולא להיפך. בסיוס פקודת השמה זו, וחטא ישמור על ערכו הנוכתי, ואילו ערכו הישן של 6סוזק יוחלף בערך שנמצא כעת במשתנה חחטצ. ניתן להשתמש בביטוייס בפקודת השמה. הנה דוגמה: 0 / (א718 + 100) * 106עק = %22106םת0116 גס במקרה זה, קודס מחושב כל הביטוי באגף ימין של פקודת ההשמה, ורק לאחר מכן מושמת התוצאה לתוך המשתנה פסוזקזחפוו. אתחול משתנים כל עוד לא מתבצעת פקודת השמה, לא משתנה ערכו הנוכחי של המשתנה שמשמאל לסימן השוויון. אך מהו ערך זה! מתי קיבל המשתנה את ערכו בפעס הראשונהז השמת ערך במשתנה בפעם הראשונה נקראת ‏ 'אתחוליי (ה280ו|8וחו). מתכנת מקצועי לעולס לא ישתמש במשתנה מבלי לאתחל אותו תחילה. פקודת ההשמה והטו=זא6ד. 11א6ד יכולה לגרוס לנזק רב, אס אין יודעים מראש מה ערכו של וחטצו. משתנה זה מכיל נתון בלתי ידוע, ובשפת העם - 'יזבליי. במיליס אחרות, אסור לנו להסתמך מראש על ערכו של המשתנה, אלא אס אנחנו יודעיס בוודאות מהו. יש לאתחל את המשתנה לפני הפעס הראשונה שמשתמשים בו. הערך שבו נאתחל את המשתנה, משתנה לפי העניין, ובהנחה שהמשתנה מתפקד כמונה או כסוכָס, נאתחל אותו בערך 0. פרק 6: פקודות השמה 111 אתחול המשתנה נעשה בפקודת השמה ולפיכך, אתחול משתנה בערך 0 יתבצע כך: 0 = ע6סתט0ס60 בוויז'ואל בייסיק המשתנים מאותחלים באופן אוטומטי: משתנה מספרי מקבל ערך התחלתי אפס, משתנה מסוג %ח88/ מאותחל בערך ע%קֶחם ומשתנה מחרוות מאותחל במחרוזת ריקה (יייי, פָחו5 הְזחָח6|-0ז26). עס זאת, מומלצ להקנות לעצמנו הרגל טוב, ולאתחל את המשתניס החשובים לנו לפני השימוש בהס. בפרק הקודס למדנו את מילת המפתח +60₪59 המגדירה קבוע. אס נשיס לב, גס בהגדרת קבוע אנו משתמשיסם בפעולת אתחול. משתנה קבוע הוא משתנה אשר מאותחל פעם אחת בלבד, מכיון שפקודת אתחול נוספת (שהיא פקודת השמה לכל דבר) אינה חוקית לגביו וגס אסורה. ביטויים ביטוי חשבוני (חסו655זקא= ס6וז6חזוזה) מורכב מאופרנד אחד או אופרנדיס אחדים. כאשר הביטוי מורכב מאופרנדיס אחדים, הס מופרדים על ידי אופרטוריס חשבונייס. > אופרנד הוא תא בויכרון, קבוע או משתנה. * האופרטורים החשבוניים הבסיסים הס: חיבור ( + ), חיסור ( - ), כפל ( * ) וחילוק ( / ). אופרטורים אלה הס אופרטורים חשבוניים לכל דבר, וסדר הקדימויות המתמטי, בו כפל וחילוק קודמים לחיבור וחיסור, נשמר גם כאן. ניתן, כמובן, להשתמש בסוגריים כדי להתערב ולשנות את סדר הקדימות של הפעולות. דוגמאות לביטוייס חשבוניים: 6*5 .1 9 .2 12 .3 8 .4 (9*)6+3 .5 ביטויים חשבונייס מהווים גם כחלק מפקודות השמה, ולדוגמה: 3 = חחטא .1 6 ץוח = 005% .2 (1+5חטא!)/100 = 1חחטצ .3 את השימוש באופרטורים נתרגל בעזרת התוכנית הבאה: 1 צור את הטופס כדוגמת תרשים 6.1. 2 65ם/. - ערכת כלים 2 בנה את קבוצת הפקדיס מסוג הסט חסוק0 כמערך פקדים. :1 זססוחוו4] -] | ]אוו -- | ופפ תרשים 6.1 3 קבע את המאפיינים על פי טבלה 6.1. טבלה 6.1 לוו 1ך סוחהצ מטאזא +אפך (עסוחם) א6סחופה8ך 0 6חוהּ )1 2חטא)אז +אפך "7 6% ח!8ך %%ך (עסוח=) חסוזק68 +, 7 *, / פרק 6: פקודות השמה 113 4 14 כתוב את שורות הקוד האלו עבור האירוע 01006 של הפקד זס)8ז6קס)סס: (%8700ה1 85 א06ה01160)1 003%07ק%50ק0 פט5 66בט1-ק 8 085 2חהטה ,016ה51 35 1הטה חב (%א6ז].1הטא+א+)נַב03 = [הטת (%א6ז]. 2הש+א++)1ַב03 = 2חטת א6ה] ₪356 56160% + סםבּיוסק0י 8 6356 2חטח + 1הטה = %א1%.7[6ש265:%א+ - 50בּ:ו6ק0' 1 6356 2חטח - 1הטה = %א1%.[6ש%265א+ * סםבּיו6קםי 2 6356 2חטח * 1הטה = %א1%.76ש%765א+ / 60בוסקםי 3 6356 2חטח / [1הטה > %א76.+%8065₪1א+ 2% וחם פט5 שח" בחרנו באירוע 0%ו01 דווקא, כי מטרת התוכנית להציג תוצאה רצויה בבחירת אחת מהאפשרויות, על ידי לחיצה על אחד הפקדיס זס)9ז6ס%0קס מסוג חסטטםחסטקס. נשיס לב לעובדה, כי השיגרה מקבלת את הפרמטר א66חו. הסיבה לכך היא שקבוצת הפקדים זסז8ַז1006ק0 היא מערך. בתוך השיגרה אנו מצהיריס על שני המשתנים 1חגוא ו-2חחטא, אשר מקבליס את הערכים שהקשנו לתוך תיבות הטקסט 1חטאאז ו-2חטא1 בהתאמה. מכיון שהקשנו את המספריס לתוך תיבת טקסט, עלינו להמיר אותס לערכיס מספריים. הפונקציה אשר יודעת להמיר טקסט לערך מספרי, היא ()!8. ואכן, את הערכים הכתוביס בתוך תיבות הטקסט - המיוצגיס על ידי המאפיין +אסדך של הפקדיס - המרנו לערך מספרי בעזרת פונקציה זו. התוצאה אוחסנה בעזרת פקודת השמה, בתוך המשתנים 1חוא ו-2חטוא בהתאמה. עתה עלינו לבדוק באיזו אפשרות בחרנו, ובאיזה אופרטור השתמשנו לצורך התרגיל. באמצעות מבנה ההחלטה 08586 5861606 (אשר כבר ראינו אותו בדוגמה קודמת ונדון בו שוב בפרק 8), אנו מברריס את ערכו של א6טחו, ובמיליס אחרות - מזהיס את האפשרות שנבחרה. על פי אפשרות זו מופעל האופרטור על שני המשתניס 1חטא ו-2חטא. את התוצאה אנו מאחסניס בעזרת פקודת השמה, כערך של המאפיין )א6ד של תיבת הטקסט )/ו%405א), אשר גס מציג אותה בתיבה זו. הרצ את התוכנית (5). הקלד שני מספריס בשתי תיבות הטקסט ובחר באופרטור הרצוי. את התוצאה תוכל לראות בתיבת הטקסט התתתונה - 50ה. 6 - ערכת כלים אופרטורים נוספים מלבד ארבעת האופרטורים החשבונייס הבסיסיים שהכרנו עתה, ישנס עוד שלושה אופרטוריס המאפשרים פעולות מתמטיות מגוונות. > האופרטור יי יי - מבצע חילוק שלס. אס נחלק את המספר 9 ב-2 בעזרת אופרטור החילוק הרגיל יי / יי (תרשים 6.2), נקבל את התוצאה 4.5 (תרשים 6.3). |<וםן-. (00₪8:)) [חוזס] - 66)1ן0:? א [* ו [> זר ] )אסוו) %מוזקטוחס טגום סופשוזק זפהוח| 35 050 חחזום 2 = 508 5 זחוז סגום ח= תרשים 6.2 <1ם]-. [חזזס] .₪ 15 תרשים 6.3 אם החלק שאחרי הנקודה העשרונית בתוצאה אינו משמעותי עבורנו ונרצה לדעת רק את הערך השלם, נשתמש באופרטור חילוק יי יי (תרשים 6.4). על כן נקבל הפעס: 4 = 2 9 (תרשים 6.5). פרק 6: פקודות השמה 115 (008:)) [חוזס] - 66)1ן0:?] מ )אוו %חוזטוחס טגו5 פופשוזק זססטוח| 35 זפ חזום 2 9% = 50|1ם] 1 והוז טוש בח= תרשים 6.4 [חזזס] .₪ - תרשים 6.5 שיס לב שהפונקציה ()ח! מבצעת את אותה פעולה (תרשיס 6.6) כאשר האופרטור הוא אופרטור חילוק רגיל, הביטוי (2 / 9)זח! יתן לנו את התוצאה 4. )אסווכ) %חוזטוחס טגום פופשווק זפט)ח| 35 טפס חזום (2 / 93| = 1!ו5ס4] פס זחוז סטש הח תרשים 6.6 6 ₪65 - ערכת כלים * האופרטור ₪06 מציג את שארית החילוק (מודולו). תוצאת הביטוי 'י2 טסו 9יי (תרשים 6.7) תהיה 1 (תרשים 6.8), מכיון שהמספר 4 נכנס פעמיים בצורה שלמה בתוך המספר 9, והשארית היא 1. |<1ם)-. (008:)) [חוזס] - 6601ןם:?] א [* ו [+ זר ] ()אסוו2) %מוז' סוחס סטש פוסטוזק זפסטזח| 35 טופס חזום 2 סו 8 = 504% ]5 זחוז תרשים 6.7 |<1ם] = | [חוזס] .₪ 1 תרשים 6.8 דוגמה נוספת: 2 = 6 00 20, שבה יש 3 כפולות שלמות של 6 והשארית היא 2. * האופרטור " * *' הוא אופרטור החזקה (תו וה מופיע בלוח המקשים במקש של הספרה 6). אופרטור החזקה מבצע את פעולת ההעלאה בחזקה המוכרת לנו. דוגמאות לשימוש באופרטור: (תרשימים 6.9 ו- 6.10) 81 = 1.9%2 "2 פרק 6: פקודות השמה 117 |<1ם])- | [008:)) [חוזס] - 1ו66ן0:?) א [+ %ו] ב ור ] ()אסו! %מוזק וס סטש פופשוזק זססטזח| 35 וופסר חזום 72 9 = 90% | זחוו תרשים 6.9 <1ם]-. [חזס-] .₪ ופ תרשים 6.10 סדר קדימויות בביטויים חשבוניים רגילים ויז'ואל בייסיק מחשבת את תוצאת הביטוי בהתאם לסדר הקדימויות (0!69 06ח60606ז0). לדוגמה, אופרטור הכפל קודס לאופרטור החיסור ולכן, בתרגיל המודגס בתרשיס 6.11, תחילה מחושב הביטוי 4*5 ורק אחר כך מחסריס 1 מהתוצאה (תרשים 6.12). <1ם) - [008-:)) [חוזס] - 66)1ן0:?] א ב %ו] [- הור ] )סו )מוזק וס טטו5 פופשוזק זססטזח! 35/ טפס חזום [-5*4 = ]50 50 זחו 50 בח תרשים 6.11 8 6ם₪/, - ערכת כלים [חזזס] .₪ הש תרשים 6.12 שיס לב, שלמרות סדר הקדימויות הסוגרייס קודמים לכל. לכן, אס ניקח את הביטוי מתרשיס 6.11 ונוסיף בו סוגרייס (תרשים 6.13), יחושב תחילה הביטוי שבסוגרייס ורק אחר כך יופעל אופרטור הכפל על התוצאה של הביטוי שחושב בסוגריים. (008:)) [חוזס] - 66)1ןם:?] א ()אסו1 )מוז וס טט5 פופשוזק זפטטזח| 35 טפס חזום (1 -4) * 5 = 81|1] 1 זחוז תרשים 6.13 במקרה זה התוצאה תהיה 15 ולא 19 (תרשים 6.14). [חוזס ] .₪ == תרשים 6.14 פרק 6: פקודות השמה 119 להלן סדר הקדימויות : 1. סוגריים. 2 אופרטור החזקה (). 3 אופרטור השלילה (-). 4 אופרטור הכפל ( * ), אופרטור החילוק ( /). 5. אופרטור החילוק השלם ( ). 6. אופרטור השארית (מודולו) ססו]. 7 אופרטור החיבור ( + ), אופרטור החיסור ( -). אופרטורי השוואה הביטוי 20 = חחטוא הוא למעשה פקודת השמה סטנדרטית. אופרטור השוויון (=) מייצג כאן פקודת השמה. במקרה זה, הערך 20 יימושס'י, או מאוחסן, בתוך המשתנה וחטצו. אופרטור השוויון (=) מתפקד גס כאופרטור השוואה (חספוז0008). משמעות הביטוי 0 = וחט במקרה זה: האס וחטא שווה ל-20. במיליס אחרות, האס תוכנו, או ערכו של המשתנה חגא הוא 20. ההבדל בין השנייס הוא, שבאופרטור השמה אנו מבצעיס פעולה בעזרת אופרטור השוויון, ו-וחטא מקבל ערך חדש. לעומת זאת, כשאופרטור השוויון מתפקד כאופרטור השוואה, אנו שואליס שאלה. המטרה היא לקבל מידע בלבד, ולא מתבצעת כל פעולה על שני האופרנדיס המרכיביס את הביטוי וערכס לא משתנה. לאחר מכן, אנו בוחניס את המידע אודות ההשוואה ופועלים לפיו. נראה זאת במשפט =], למשל. מלבד אופרטור השוויון (=) קיימים אופרטורי השוואה נוספים. המידע המתקבל מהביטוי המורכב בעזרת אופרטורי השוואה הוא כן או לא, בלבד! לחילופין, השאלה היא "האס הביטוי נכון (מתקיים), או שאינו נכוןיי. לכן, הביטוייס המורכביס מאופרטורי השוואה נקראים ביטויי התניה, או ביטויים מותנים. לדוגמה, האופרטור גדול (<) הוא אחד מאופרטורי ההשוואה, ובאמצעותו נדע אם אופרנד אחד בביטוי גדול מחברו, או לא. בהנחה שהביטוי 15<וחט הוא אמת (יינכון"), נסיק שערכו של המשתנה חחטא גדול מ- 15 (את ערכו המדויק לא נוכל לדעת בדרך זו). באופן דומה מתפקדיס שאר אופרטורי ההשוואה המפורטיס בטבלה 6.2. 0 6ם/. - ערכת כלים טבלה 6.2 אופרטור משמעות דוגמה > = |שות | | 20=חטא, יש לשים לב לשתי נקודות חשובות בטבלה. בניגוד לפקודת השמה הנקראת מימין לשמאל, ביטוי מותנה נקרא משני הכיוונים כאחד. שני הביטויים המותנים 0 < ₪06 ו- וחט5 = 17 תקפים. לעומת ואת, בפקודת השמה הביטוי השני הטפ = 17 שגוי. עס ואת, חשוב לשיס לב לאופרטור שמשתמשים בו, הביטוי 8 < ג, אינו והה לביטוי 4 < 5 כי בכל אחד מהם אנו בודקיס יחס שונה!, בניגוד למקרה בו נעשה שימוש באופרטור ההשוואה 8 = ; ג = 5 בו שני המקרים וּהים. באופרטורי השוואה ובביטוייס מותנים, נשתמש כחלק ממבני החלטה עליהס נלמד בפרק 8. אופרטורים לוגיים אופרטוריס נוספים, השימושייס במבני החלטה, הס אופרטוריסם לוגיים (ופּסוּפָס. | 99 קס). תפקידס להפוך ביטוי מותנה לביטוי מותנה מורכב. למעשה, ביטוי מורכב מכיל בתוכו מספר ביטויים מותניס המופרדים בעזרת אופרטוריס לוגייס. ככלל, ביטוי מותנה מורכב מתקיים רק כשכל חלקי הביטוי מתקיימים. שלושת האופרטוריס הלוגייס הס 6חג, זס, +6א. * האופרטור 40 (וגם) קובע שרק כאשר כל חלקי הביטוי מתקיימים, הביטוי הוא יינכוןויי או ייאמת'י. בביטוי 20 = 0ח8טכ) 0ח 80 < 6סוזק, רק אס 6סוזם גדול מ- 80 וגם 0801 שווה ל- 20, יהיה הביטוי כולו אמת; אחרת הביטוי שקרי והוא אינו מתקייס. * האופרטור זס (או) קובע שכאשר לפחות אחד מחלקי הביטוי ייאמתיי (יימתקיים") - כל הביטוי הוא אמת (למרות שחלקיס אחרים אינם אמת). בביטוי 20 = /08%ח308) 0ח 80 < 6סוזק, אס פסחק גדול מ- 80 או עחהט) שווה ל- 20, הביטוי כולו אמת. רק כאשר כל חלקי הביטוי אינס מתקיימים, הביטוי שקרי ואינו מתקיים. פרק 6: פקודות השמה 121 *+ האופרטור +86 (לא) קובע שהביטוי נכון רק כאשר לא מתקיים התנאי המרכיב אותו. בביטוי 20 = ע4ח8ט0 +6, הביטוי יתקיים רק כאשר ערך המשתנה עווח8ט) אינו 20. במיליס אחרות, אס הביטוי המותנה הוא אמת, 01 הופך אותו לשקרי; וכן להיפך, אס הביטוי המותנה הוא שקרי (לא מתקיים), 6 הופך אותו לאמת. בחן את שורות הקוד שבתרשים 6.15: <1ם] = | (066:)) [חוזס] - 1ו66ןסז5) א [* ו | - זר ] )סו %מוזקטותס טגום סופשיוז זפסטוח| 35 ומט4! חחום [ = חגא והגוצ'] זחוז הטהדדך 0 < וחגוצז זס4 זו טש בח= תרשים 6.15 לא למדנו עדייו להשתמש במבנה ההחלטה =]1, אך נאמר שהוא בודק אס הביטוי המותנה מתקיים או שאינו מתקיים; ובמילים אחרות, אס הביטוי הוא אמת או שקר. אס התשובה חיובית (מתקיים, אמת), מתבצעת הפקודה שבאה לאחר המילה חפחד, ובמקרה שלנו - הפקודה +חוזם. פקודה זו מדפיסה את הערך של חזטצ!. אם התשובה שלילית, התוכנית תמשיך לשורות הקוד הבאות אחרי משפט =|. בשורות קוד אלו, אם הביטוי המותנה מתקיים, התוכנית מדפיסה בטופס את ערך המשתנה וחטאז (שהוא 1); אם לא - התוכנית לא מבצעת דבר. השאלה היא, האס הביטוי מתקיים, ואז ממילא מודפס המשתנה וחט), או לאז כדי לבחון את הביטוי 0 < וטא 61 נפרק את הביטוי לגורמים. הביטוי המותנה 0 < וחטא כשהוא לבד, הוא ביטוי אמיתי ונכון. ערכו של וחטא הוא 1 והוא אכן גדול מאפס. בשלב זה בא האופרטור 6% והופך את תוצאת הביטוי. מכיון שהביטוי כשלעצמו אמת, צירוף האופרטור +06 הופך אותו לביטוי שקרי, והתנאי אינו מתקיים. במקרה כזה, שהתנאי אינו מתקיים, הפקודה !חוז₪ שלאחר המילה חפחד לא תתבצע, ולא יודפס דבר בטופס, והתוכנית תמשיך לשורת הקוד שאחרי המשפט =ן]ן. 2 6658ם₪/. - ערכת כלים טבלה 6.3 מסכמת את אפשרויות השימוש באופרטוריס הלוגיים: טבלה 6.3 אופרטור | ביטוי מותנה א' | ביטוי מותנה בי | ערך הביטוי המורכב = ב" .)הפר 5 ב !]2 כ | = - )ל > ,207(2 = * .י| אופרטור ביטוי מותנה הביטוי המותנה כולו שקר אמת למתקדמים: ישנס עוד שלושה אופרטוריס לוגיים זסא, עצף= ו-סח! (המופעלים על ביטוייסם). ניתן לקרוא עליהס במערכת העזרה של ויז'ואל בייסיק. שרשור משתנים ראינו שניתן לבצע פעולת חיבור מתמטית פשוטה בעזרת האופרטור פלוס (+). אך מה קורה כאשר יש לנו שתי מחרוזות המיוצגות על ידי שני משתניס מסוג פַח510, האס ניתן גסם אותס לחבר! האס ניתן להרכיב מהמשתנה "סו8כ"=6וַַח= ומהמשתנה "[ע6 1" = סח 1 משתנה חדש אשר יכיל את שניהם, לדוגמה "וע8 ]1 סוצכ" = 6חפצזז התשובה היא כן. אופרטור השרשור 8 מבצע שרשור (חסו]8ח08)0ח60) של מספר מחרוזות ויובצר מחרוזת אחת רציפה. את הרווח בין המחרוזאות אנו משרשריס בעצמנו, כי האופרטור אינו יודע לעשות ואת. תרשימיס 6.16 ו- 6.17 מדגימיס את השימוש באופרטור השרשור: פרק 6: פקודות השמה 123 ףאו (008:)) [חוזס] - 1ו66ן0ז?] א [- %ו] [- ו - ן []אסוו) )מוזהוטותס פגו5 סוו5)8 בחוזז5 35 טזם/ו5 הזוס מהוחז63!" = בזס//ו5 " 5 23910 |הגופו/ " 6 בזס 5 6 " חב |" = 61 [.6סת6)וח6 15א]ז מגו5 בח תרשים 6.16 1 -. [חזס] .₪ 6 350 0 [3ו5ו/ החוחז6! הזב | | תרשים 6.17 בדוגמה זו שרשרנו שלוש מחרוזות לתוך פקד אחד: "וחה [", "סָחוחז63!" (המיוצגת על ידי המשתנה 5//070) ו-".₪85910 |1808/". המשפט השלם אשר יופיע בפקד 6 הוא: ''.₪8810 |1808/ פחהוחזה6! ה ['י. בוויז'יואל בייסיק ניתן להשתמש באופרטור החיבור החשבוני (+) גם לחיבור שתי מחרוזות. שורות הקוד המודגמות בתרשיס 6.18 והות לחלוטין לתרשים 6.16 ומפיקות את אותה התוצאה. <1ם) ב [08ם:)] [חוזם] - 1ו6פןםז?) מ [- %ו] |- ו []אסוו) )מוזהוטתזס פגו5 0ו5)80 בחוזז5 35 טזס/ו5 הזוס מהוחז63!" = טזם//ו5 " 5 0390 |הגופו/ " + בזס 5 + " חב |" = 61 [.6סח6)ח6 15אז מגו5 בח תרשים 6.18 4 6ם/ - ערכת כלים פונקציות לבדיקת משתנים מטרת המשתנים בתוכנית לאחסן ולשמור ערכים מסוגיס שוניסם. את הערכיס מקבליס המשתניס באמצעות פקודות השמה, אך מיהו זה שקובע מה הערך שיושס במשתנה! בדרך כלל משתנים מאותחליס בשורות הקוד על ידי המתכנתיס. אולס פעמיס רבות ערך המשתנה מתקבל כקלט מהמשתמש. לדוגמה, ערך המשתנה 888 מכיל את גיל המשתמש, והוא התקבל מהמשתמש עצמו כאשר הקליד אותו לתיבת הטקסט 406/א1. כדי שבמשתנה 86 יתקבל ערך זּה, עלינו לבצע את פקודת ההשמה: %%. א = סשת הכל טוב ויפה, אך כיצד נוכל לוודא שהמשתמש הכניס ערך מספרי המייצג את גילו, ולא הכניס בטעות את שמו! אס אכן כך יקרה, יחיה ה הייבאגיי הראשון שלנו. התוכנית 'יתיכשליי ותודיע על שגיאה (תרשים 6.19) שמשמעותה - חוסר התאמה בין המשתנה (שהוא מסוג ז1808ח!) לבין הערך שברצוננו לאחסן בו (שהוא מחרוזת). 6ו35 ₪ [הט5ו/ ])ס5סזסו יוסיזיוס 6רחו?-חט ה רת%ורח 6קעד | שנחוחס:ו תרשים 6.19 נוכל להתחכסם ולכתוב את פקודת ההשמה כך: ()א11/06.76) ו9 = 6אָג, ואז גס במקרה והמשתמש יקליד מחרוזת במקום מספר, התוכנית לא תיכשל. כמובן, שבכך לא נפתרה הטעות ואנו גס לא נדע עליה. הערך שיתקבל יהיה אפס (גיל לא הגיוני לכל הדעות) ואנו כמתכנתים, לא נהיה מודעיס כלל לבעיה. לאור האמור, נלמד להכיר ולהשתמש בפונקציות לבדיקת ערכי משתנים. בעזרתן ניתן לוודא שהערך אשר נאחסן במשתנה תואם את סוגו. נציג שלוש פונקציות: סח6הט5!, 80816 ו- ווטואפו. * הפונקציה 6וז6וחט1!5% מקבלת כפרמטר ביטוי או משתנה ומחוירה ערך אמת (₪6ז) כאשר הללו מוגדריסם כמספר. אס הביטוי או המשתנה אינם מספר, הפונקציה תחזיר ערך שקרי (56ו8:). פרק 6: פקודות השמה 125 בטופס המוצג בתרשים 6.20 מתבקש המשתמש לרשום את גילו ולאשר ואת בלחיצה על לחצן א0. 6וזסהוט5%! .₪ ה- תרשים 6.20 כדי לוודא שהמשתמש הכניס ערך מספרי ולא את שמו, בטעות, נשתמש בפונקציה 56| כמודגס בתרשיס 6.21. |<1ם]). | [008:)) [חוזס] - 1ו66ןם:?) מ )סו חס סוס פופשיוזק חפה ד (<8 ד ס)סוזם הוהגו5]4! +40 ]| "וע)חס 8זם טוח זפוח=" 1/4500 ]| הח מש חח תרשים 6.21 כאשר המשתמש יכניס בטעות את שמו (תרשיסם 6.22) ויאשר, תופיע תיבת הודעה המודיעה שעליו להקליד ערכיס מספרייס בלבד (תרשים 6.23). > |ם)=. -- תרשים 6.22 6 ₪65 - ערכת כלים חסוזסחט-] סוזסהונוא5! !חס 5זסםוחווח זטוה = תרשים 6.23 * הפונקציה 150846 מקבלת כפרמטר ביטוי או משתנה ומחזירה ערך 6טזד כאשר הללו מוגדרים כתאריך. אס הביטוי או המשתנה אינס תאריך חוקי או לחילופין, לא קיים תאריך כזה (כדוגמת 31 בפברואר), הפונקציה תחזיר ערך 8186=. שורת הקוד "!0866 21866קסעקק8 עססםתע" א5020%) מתסם6 (6א716.םת6ת1םת6א5) 152866 פסא +1 תציג את הודעת השגיאה "0800 6ופוקסזסקהּ זסוּחם" כאשר התוכן שהמשתמש יקליד לתוך תיבת הטקסט חזזום)א) אינו תאריך חוקי, או תאריך שאינו קיים. > הפונקציה !₪1א15 מקבלת כפרמטר ביטוי או משתנה ומחזירה ערך בוליאני, המעיד אס הביטוי או המשתנה מכילים ערך !וטוא או לא. הערך המותחזר פטזד מצביע על כך, שהערך בביטוי הוא |וטצ; ערך מוחזר 8156 מצביע החיפך. פקודות קלט ופלט קלט ופלט בוויו'ואל בייסיק מתבצעיס בדרך כלל באמצעות הפקדים |308| ו-א0ם)א6 ד. בעזרת הפקד 18861 אנו מציגיסם למשתמש הודעות והוראות שונות, שאין באפשרותו לשנותן. בעזרת 0%ם+א6ד אנו קולטים נתוניס מהמשתמש. פקדים אלה קבועיס בטופס במהלך התוכנית ואינס משתנים. לפעמיס נרצה להציג למשתמש הודעה זמנית כלשהי, כאשר הוא מקיש תאריך לא הגיוני, למשל. במקרה זה לא נציג את ההודעה בעזרת |18086. כך גס ננהג בפעולת קלט זמנית שבה לא נשתמש בפקד אסם)אד. תיבת קלט אסם)טסח!ו תיבת הקלט אסם)טסח! (תרשים 6.24) מציגה חלון דו-שיח קטן למשתמש. בחלון זה יש תיבת טקסט, המאפשרת למשתמש להקליד ערך המוזן כקלט. תיבת הקלט מקבלת 7 פרמטרים, אך בהסבר זה נציג את הפרמטרים +%קוחסזק ו-116, שהס החשוביס והשימושייס יותר. למידע נוסף צריך להקליד אסםזטסח! בחלון א06ח! שבמערכת העזרה. פרק 6: פקודות השמה 127 | < | :)תסחונוםזבּ 6וווך )רהוזב +קוחסז] ₪------- תרשים 6.24 +וחסזק מייצג את ההוראה המוצגת בחלון הקלט, למשל: ייהקלד נא את שמך:". מטרת ההוראה להודיע למשתמש מה אנו מצפים ממנו שיקליד (כקלט) לתיבת הטקסט שבחלון. 8 מייצג את כותרת חלון הקלט. מלבד ההוראה, ניתן לשכתב את כותרת החלון שבשורת הכותרת בחלק העליון של החלון. תיבת הקלט מחזירה מחרוזת (פַח5%0) המכילה את תוכן תיבת הטקסט שבחלון הקלט, לתוכה המשתמש הקליד את אשר רצה שנקלוט. מבנה פקודת הקלט הוא : (711%16 ,%קתספלק)אסםוקת1 = 6ט781םתע2טססת לדוגמה, (".6שת" ,":16856ק 886 עטסץ פס6סתמ")אספסטקת1 = 16גופ6ת כותרת החלון תהיה "486" וההוראה למשתמש תהיה: ':6856וק 306 זטסץ זסזחם ". בהנחה שהמשתמש בגיל 25 ואת מספר זה הוא הקיש לתוך תיבת הקלט, המשתנה +90 יקבל את הערך 25. את הפרמטריס +קוחסזק ו-8וד יכוליס להחליף משתניס מסוג פָחו5 המאחסניס בתוכס את המחרוזות הרצויות. תיבת פלט א80 8 תיבת הפלט דרושה לצורך הודעה זמנית למשתמש. הודעות כדוגמת שגיאות (כתוצאה מהכנסת נתון שגוי על ידי המשתמש), אזהרות, הנחיות וכוי, הן הודעות זמניות. במקריס אלה נשתמש בתיבת הפלט. אחרי קריאת ההודעה, המשתמש יכול לסגור את התיבה בלחיצה על הלחצן המתאים. דוגמה לתיבת פלט מוצגת בתרשים 6.25. :זט טוח הס 90 ד [עוחס 8זספוחווח זט)ח = !/ תרשים 6.25 8 66ם₪/. - ערכת כלים התחביר של הפקודה להצגת תיבת פלט הוא: 68 ,פמתסססט2 ,%קתסצק | א5420%א + סז - מייצג את ההודעה אשר תוצג בחלון. ניתן להשתמש במשתנה מסוג פַחז51 המכיל את המחרוזת הרצויה. 8 - מייצג את סוג תיבת ההודעה. יש סוגיסם שוניס של תיבות: להודעה, לאזהרה, לשאלה, להצגת לחצני אישור וביטול, להצגת הודעה עס לחצן אישור בלבד, ועוד. סוג החלון נקבע על ידנו על פי תוכן ההודעה ועל פי אפשרויות התגובה שאנו מציעים למשתמש. סוגי התיבות הרבים מוצעים לפנינו באופו אוטומטי, ועלינו רק לבחור את סוג תיבת ההודעה הרצויה. ניתן לבחור מספר סוגי לחצניס בתיבת פלט אחת, בין רשימת הלחצנים נשרשר את אופרטור החיבור 'י+. לדוגמה: "1%16ע" ,סאפפצסט + תסנףהתעס1םת1סט , ("!6קתסעק") אספטספא 68 - מליצג את כותרת תיבת הפלט. תרשים 6.26 מציג את תיבת הפלט, אשר שורת הקוד שלה הודגמה בשורת הקוד הקודמת : סוד !)סז (נ תרשים 6.26 מלבד קבלת פרמטריס, תיבת ההודעה גס מחזירה ערך. ניקת לדוגמה את תיבת ההודעה המוצגת בתרשים 6.26. כיצד אנו, כמתכנתים, נדע אס המשתמש לח על 65 או על סא. לצורך זה נשתמש בערך המוחזר של הפונקציה, אשר מצייו את בחירת המשתמש, ואשר יכוון את פעולתנו. שורות הקוד הבאות נעזרות במבנה ההחלטה חסחד...+!, במציאת הערך המייצג את בחירת המשתמש (שימו לב לסוגרייס המוספיס במקרה זה). 611080 תעסע סט5 2210866 01%ו69ת תנכת ("1616ע" ,סאפפצסט + מסנ1בסאתעס+תדסט ,"!6קתסק")אספספא = ₪65016 מסםץ פסצסמט = 16ט5פ6ת +1 "פסצ" סמתנצק 6 "סא" סםמנעק + תס ספטופ םת פרק 6: פקודות השמה 129 את מבנה המשפט 186ם-ח8ח1-+! נלמד בפרק 8, אך כאן נסביר את הפעולה בקצרה: במשפט =] אנו בודקיס אס תנאי מסויס תקף, או לא. כאשר התנאי תקף, והתשובה על הבדיקה היא ייאמת'יי, תתבצע הפעולה שכתובה אחרי המילה חפחד; אך אס התנאי אינו תקף והתוצאה היא יישקריי, מתבצעת הפעולה שאחרי המילה ₪186. משפט זו מורכב כזה יש לסיים במשפט ]| 6חש. הבה נחזור לדוגמה: במקוס הקבוע 65ץסט, אשר מייצג לחיצה על הלחצן 65+, ניתן להשתמש בערך המספרי 6, המקביל לו. השורות הבאות מבצעות פעולה זהה לחלוטין לזו שמבצעות שורות הקוד הקודמות: ()0110% תעסע סט5 2210866 1% תנק ("711616" ,סאפפצסט + םס1סא8תעס+תדסט ,"!6קתסלק")אספספא = 265016 מסתץ 6 = 268016 15 "פסצ" סתנעק 6 "סא" סמנעצק 5 מס סופ םע גס לשאר הקבועים יש ערכיס מספריים מקבילים: הו פטובצ 1 אס 1 אצ 8 2 [8חה)צ חסטת 3 צוסטתטע זופת 4 זופת טע 6זסחף! 5 הזסחף!טע 8 6 דע סו 7 אמצ תיבת הודעה מותאמת אישית ראינו שוויזיואל בייסיק מאפשרת תיבות הודעה מסוגיס שוניס. אך מה יקרה כשנרצה להציג למשתמש תיבה במבנה שונה, אשר לא מופיעה כחלק מההיצע של ויצ'ואל בייסיק! במקרה כזה, נבנה תיבת הודעה מותאמת אישית. בניית תיבת הודעה היא פעולה פשוטה מאוד, מכיון שניתן לראות אותה כטופס רגיל לכל דבר. השוני ביניהס הוא בשתי יכולות בלבד. אס נשווה בין השנייס נמצא, כי בתיבת הודעה לא מופיעה תיבת הבקרה |> |8|=. שנמצאת בצד ימין עליון של טופס רגיל. בנוסף, נמנעת מהמשתמש חיכולת לשנות את גודלה, אשר נשאר קבוע. מעיון ברשימת המאפייניסם לטופס רגיל נמצא את שני המאפיינים הבאים: 6 פזסזסם ו- אסם|סז)חס). במאפיין 6|צ/07081751 אנו קובעיס את סוג המסגרת 0 66ם/. - ערכת כלים של החלון. ערך ברירת המחדל של מאפיין זה הוא 51280|6 - 2, דהיינו, בעל יכולת שינוי גודל. קביעת הערך פופָחו5 60או= - 1 למאפיין ה תמנע מהמשתמש את היכולת לשנות את גודלו. חצי מהדרך עברנו בהפיכת טופס רגיל לתיבת הודעה. המאפיין השני אסם!סז1חס6 קובע אס בשורת הכותרת של החלון תופיע תיבת הבקרה או לא. הערך פטזד (ברירת המחדל) מציג את תיבת הבקרה והערך 8158" מסתיר אותה. ניתן להסיר את לחצן ייהגדליי שבתיבת הבקרה בלבד, על ידי קביעת ערך 8!58= למאפיין חסוטםא3ּ!!. באותו אופן ניתן להסיר את לחצן 'ימזעוריי מתיבת הבקרה על ידי קביעת ערך 8156= למאפיין חסשזטםחווש. הנה, גס על הבדל זה התגברנו ועתה לפנינו טופס יירגיליי (עס שינוייס קטניס) שעבורנו הוא תיבת הודעה. כל שנותר לנו הוא להציב את הפקדיס הרצויים על פני הטופס, את הלחצניס ואת שורות הקוד המתאימות. תרשיס 6.27 מדגיס תיבת הודעה מותאמת אישית. | < | 5סטחו חאיס/ )טח 5 :0 30 גוס שופ טופע זה 7 ?תס 06 69171 7+ ?וח 415-005 הו זס)גוקוחסס 08 זפ 7+ תרשים 6.27 השירות שסחפ תיבת הודעה היא טופס לכל דבר, וכדי להציגה נשתמש באחד משירותי הטופס, ששסח5. שירות זה טוען את הטופס לזיכרון ומציג אותו. לדוגמה: שסם5 . ם ב8אות+ בדרך כלל, כאשר טופס מוצג בפני המשתמש, הוא יכול לייהתעלס'י ממנו ולהפנות את המיקוד לטופס אחר המוצג במסך. אולס במקריס מסוימיס לא נרצה שהמשתמש יייתעלם'' מהטופס, ונמנע את העברת המיקוד אל טפסים אחרים שמוצגים, כל עוד המשתמש אינו סוגר את הטופס הממוקד. דוגמה נפוצה לכך היא תיבת הודעה המוצגת למשתמש לאזהרה, למשל. במקרה זה, כל עוד המשתמש אינו נותן אישור בלחיצה על אישור ואינו סוגר את התיבה, הוא לא יוכל להפנות מיקוד אל טופס אחר. כאן נכנס לתמונה הפרמטר שמועבר על ידי התוכנית אל השירות ששסח5. פרמטר זה יכול להיות אחד משני הערכים האלה : פרק 6: פקודות השמה 131 1. |03סופט, או הקבוע 1 החופף לו. במקרה זה הטופס אינו יכול לאבד מיקוד והמשתמש אינו יכול לפנות לטופס אחר באותו יישוס, כל עוד הוא אינו סוגר את הטופס הממוקד. לדוגמה: 1 אסם5. ם ב 8אות + 2 ללא פרמטר (ברירת המחדל), או הקבוע 0. במקרה זה ניתן להעביר את המיקוד אל טופס אחר ביישוס, אף בלא סגירת הטופס הממוקד. שים לב, כי גס כאשר הפרמטר הוא |ססופע, המונע מהמשתמש גישה לטופס אחר ביישוס כל עוד הטופס הממוקד לא סגור, המשתמש יכול לגשת אל יישוס אחר הפועל ברקע. כאשר יש שורות קוד הבאות לאחר שורת הקוד המציגה את הטופס (על ידי שסח5), לדוגמה : () מ81 תטפ 1 טסם0204.5ח8העתת+ מסםך 6גע1 = 2858 +ך אסח=5 . ם ב 8+ 6 תש + סתם פטפ בתם ביצוע שורות קוד אלו תלוי באופן פתיחת הטופס. כאשר הטופס נפתת במצב יימודאלייי (1), שורות הקוד הבאות אחריו לא תבצענה כל עוד הוא לא נסגר. אך כאשר הטופס נפתח במצב "לא מודאלייי (0), שורות הקוד הבאות אחרי משפט הפתיחה מתבצעות והתוכנית ממשיכה כרגיל, גס במקרה שהמשתמש אינו סוגר או משתמש בטופס הממוקד. בדוגמה שלנו, הטופס 0זסשש855 זז נפתח במצב יימודאלייי (1) ולכן, כל עוד הטופס לא ייסגר, התוכנית לא תמשיך בפעולתה. השירות ששסח5 מבצע למעשה שתי פעולות, טעינת הטופס לזיכרון והצגתו למשתמש. ניתן לטעון את הטופס ברקע בלי להציגו. פעולה זו מתבצעת בעזרת המשפט 086 . לדוגמה: מנאאתת+ 1086 משפט וה מקבל כפרמטר את שס (המאפיין 6חחףּ\) של הטופס וטוען אותו לזיכרון ללא הצגתו למשתמש. היתרון בטעינת הטופס מראש לזיכרון בלבד הוא במהירות הופעתו כאשר המשתמש מבקש להציגו על ידי לחיצה על לחצן מתאים, או בבחירת אחת האפשרויות שבתפריט וכוי. במקוס שטעינת הטופס לזיכרון תבוצע רק כאשר המשתמש יבקש ואת ויהיה עליו להמתין, הטופס כבר טעון מראש בזיכרון (כשהמשתמש לא מודע לכך) והצגתו תהיה מהירה. שחרור טופס מהזיכרון (וממילא, סגירתו) מתבצע בעזרת המשפט 001086 עס שם הטופס כפרמטר. אס הטופס המשוחרר מהזיכרון הוא הטופס הנוכתחי, ניתן להשתמש במילה השמורה 888 המייצגת את הטופס הנוכחי. לדוגמה: 6 108מס 2 58 6ם/. - ערכת כלים שיס לב שניתן לסגור טופס ולהעלימו מעיני המשתמש, אך לא לשחררו מהציכרון. פעולה זו מתבצעת בעורת השירות 1168. לדוגמה: 6. סא 6. תמ בהאו + תרגול 1 צור טופס המכיל שני פקדים, אסם!א8ד ו- חסוטם סחה חח 0ס60. הקש תאריך לתוך תיבת הטקסט ולת על הלחצן. אס התאריך שגוי (היעזר לצורך כך במבנה ההחלטה חשחד...1!, ובפונקציה 50816!) הצג הודעה מתאימה (בעזרת א0ם0פוש). | ו|םן=. [וס] ₪ 8 ו * 2 יש 03081 8]בוזקסזקקב זטוח= | א, תרשים 6.28 2 צור טופס ועליו לחצן ותיבת קלט. בלחיצה על הלחצן תופיע תיבת קלט המבקשת מהמשתמש להכניס מספר שהמחשב יעלה בחזקת 2. כאשר המשתמש יאשר את אשר הקליד, תופיע התוצאה המבוקשת בתיבת הטקסט. שיס לב שתיבת הקלט צריכה להחזציר ערך. פרק 6: פקודות השמה 133 תרשים 6.29 4 66ם/ - ערכת כלים 7: מערכים רבות משורות הקוד בתוכנית מיועדות לאחסון נתוניס במשתנים, ועל כן גם נראה שמספר המשתנים בתוכנית הוא רב. כל משתנה מקבל שס *יחודי ומשמעותי לתפקידו בתוכנית. המערך (עְ9זז) לעומת זאת, מאפשר להתייחס למספר רב של משתניס באותו שם. המייחד את המשתניס במערך הוא האינדקס (א06ח!), או במילים אחרות ציון המיקוס היחסי של המשתניס במערך. משתנה במערך נקרא איבר (1ח6778|ם). המערך מכיל איברים (הם המשתנים), שכל אחד מהם מחזיק ערך שלא בהכרח זהה לערך של איבר אחר, ולרוב הוא שונה. המשותף לכל איברי המערך הוא שכולם מאותו סוג. במערך של משתניס מספריים, למשל, כל איברי המערך הס משתניס מספרייס מאותו סוג (880פ1ח!, פָח0ס1 וכוי). ההבדל בין המשתניס הוא במיקומס במערך. לכל איבר במערך יש אינדקס המציין את מיקומו היחסי המדויק ביחס לראשית המערך, והפנייה למשתנה תהיה על ידי ציון אינדקס וה. אינדקס האיבר הראשון הוא אפס (0), אינדקס האיבר השני הוא 1, של השלישי - 2 וכן הלאה. לפיכך, את האיבר החמישי במערך וחוטוח!3 ד נציין כך: (4)חוסוחחוד. אחד היתרונות שבשימוש במערך משתניס במקוס מספר והה של משתנים בודדים הוא בשס הוהה של כל המשתנים במערך. פנייה לשס אחד תוך שינוי מספר האינדקס שלו בלבד הרבה יותר קלה ומחירה. בעורת לולאה ניתן לבצע פעולה אחת החוורת על עצמה עם אותו שם משתנה ובשינוי האינדקס בלבד; ובמקרה שיש 100 משתנים נסתפק בשלוש שורות קוד במקוס מאה! (נסה ואת לאחר שתלמד בסעיפים הבאים). אופן ההצהרה הצהרה על מערך דומה להצהרה על משתנה רגיל. בשני המקרים יש לציין את שסם המשתנה וסוגו. אולס במערך, יש לציין גס את מספר איברי (משתני) המערך. לדוגמח: %ם1ע5% 25 (10)פתהא תנכת סתסע פת2 (13)ת50 תנקת בדוגמה וו הצהרנו על שני מערכים, האחד מסוג פָחוז51 והשני מסוג פָחס.1. המספר בסוגריים מציין את האינדקס המקסימלי במערך, החל מאינדקס 0 וכלה באינדקס המצוין בסוגריים. בדוגמה זו, במערך 6ח8\ יש 11 איברים (משתנים מסוג (חו5) שהראשון הוא בעל אינדקס 0 והאחרון בעל אינדקס 10. באותו אופן, למערך חחט5 יש 4 איברים. פרק 7: מערכים 135 המשפט 8356 חסוזק0ס ברירת המחדל בוויז'ואל בייסיק היא אינדקס ראשון 0 במערך. לכן, כדי לבנות מערך בן 11 איבריס (או משתנים) נרשום, לדוגמה, את ההצהרה הזו: %ת1ע55 פת2 (10)פתהא תנכת בעזרת המשפט 28586 חסו+ק0 ניתן לשנות את ערך האינדקס המינימלי ל-1 (במקוס 0, לפי ברירת המחדל) משפט זה מקבל פרמטר 0 או 1 המורה על ערך האינדקס המינימלי. כל עוד אין מצייניס ערך מינימלי מיוחד, הערך שנקבע במשפט חסטק0ס 6 הוא אשר יחול במערך. שורת הקוד הזו קובעת את ערך האינדקס התחתון ל- 1 : 1 28586 ם610ס0 ההצהרה הזו %ם1ע5% פת2 (10)פתהאא תנכת תגרוס לבניית מערך בן 10 איבריס בלבד, החל מאינדקס 1 (המייצג את האיבר הראשון) וכלה באינדקס 10 (לאיבר האחרון). שיס לב שעל המשפט 28586 ח600ק0 ניתן להצהיר ברמת הטופס או המודול בלבד, בחלק ההצהרות הכלליות (ה60]879000 |8ז9ח026)). שימוש במשפט 856 חסטסס בתוך שיגרה או פונקציה יגרוס להודעת שגיאה (תרשים 7.1). ₪350 [הט5ו/ 1/ס5סזסוו סז 6|וקוחס) / 6זוםסססזק 46ו5חו בוב שיח! תרשים 7.1 קביעת גבולות למערך כל עוד לא צוין אחרת, טווח ערכי האינדקסים נע מ- 0 (או 1 אס הוגדר כך במשפט 6 חסוק0, והדבר אפשרי) ועד לערך המצוין בסוגריים. עס זאת, ניתן לשנות ערכים אלה ולהגדיר במפורש את טווח ערכי האינדקסים. הגדרה זו נעשית בזמן ההצהרה על המערך. לדוגמה: 2 25 (20 20 1)תטגא תנק פמסת 28 (50 710 662)30מ000 תנקת 6 6ם/. - ערכת כלים בדוגמה זו הוגדרו הגבול העליון והתחתון של האינדקסיס במערך על ידי המשתמש, אשר קבע שהמערך וחטא יכיל 15 איברים, כאשר הגבול התחתון שלו הוא 1 והעליון - 5 (גם כאשר לא השתמשנו במשפט 2888 חס0ס0). המערך ז%9חט60 יכיל 20 משתניס עס טווח תחתון 30 וטווח עליון 50. השמת ערכים כאשר מצהיריס על מערך בעזרת חופ, אנו יוצריס מערך ריק מערכיס (מאותחל ל-0 במשתנים מספריים או ב-!|טח למערך מסוג +חהּוזהע, או במחרוזת ריקה למערך מסוג ח5%). במהלך התוכנית או בתחילתה, משמש המערך לאגירת ערכים. אופן השמת הערכים נעשה בפניה למערך בשמו, וציון האינדקס או האיבר במערך, שאליו אנו פונים. לכן, אס נרצה לשים את הערך "עְח8כ" באיבר החמישי במערך 685עס!סוח= (ובהנחה שהגבול התחתון של המערך הוא 0 לפי ברירת המחדל) נבצע זאת כך: "תת" = (4) 766ץ10סחם פנייה לאיבר הראשון תיראה כך: "סתפסא" = (0) 766ץ10מחם השמת ערך לתוך איבר מערך היא פקודת השמה רגילה, וחלים עליה כל הכלליס הרלוונטייס לפקודה מסוג זה. תרשימים 7.2 ו- 7.3 מציגיס אתחול מערך והדפסתו, במבט קוד ובמבט ריצה בהתאמה. [<1ם) = | [ ו 2 | - ] | - החוזס] 1 356 חסווס ()04ו1) וחזס=] 510 6ובפעוזק זס6וח| 36 (10)עְב3ּזזהץו ,זסשסוח| 5ב ו וחוס 0 סד = !וס != (ו)עֶבּזזהעו (()עָ3זזץו א " = (" 4 | 6 ")עֶהּזזהץוא" וחוזק | 464 תרשים 7.2 פרק 7: מערכים 137 [חוזס] .₪ תרשים 7.3 מטריצות עד כה דנו במערכיס חד-מימדיים. אולם ויז'ואל בייסיק מאפשרת לנו להגדיר מטריצות של שני מימדים (מערכים דו-מימדיים) ויותר. הנה לדוגמה מערך דו-מימדי: ש6םת1ע%פ פת (10 ,10) א1עסהא תנכת במקרה וּה, כל מימד מכיל 11 איברים (0-10), ובכל המטריצה יהיו 121 איבריס (11א11). אנו רואיס שמערך דו-מימדי הוא למעשה טבלה, אשר מימד אחד שלו מייצג את השורות והמימד השני - את העמודות. בדומה למערך חד-מימדי, גם במערכיס בעלי מספר מימדים ניתן לקבוע את הגבול העליון ואת הגבול התחתון. לדוגמה: 6ת1ע%פ פת (10 760 1 ,10 70 1)א1עפהא תנכת (7 70 2 ,30 796 20 ,161)4גטא מנכ תרשימים 7.4 ו- 7.5 מציגים שימוש במערך דו-מימדי להדפסת לוח הכפל במטריצה 3 8 ₪65 - ערכת כלים [<1ם]- | (006-:)) [חוזס] - 1ו66ןם:?] מז | - 60010005 ] [+ (181ח66)] 1 856 חסווסכס ()אסוו) ותזס= סגופ 6ובהעוזק זסןסוח| 46 [ ,ז66וח! 36 ו חחום זס6)ח|! 46 (3 ,3)אחוהואעוא הזוס 3 = |וזסת 3 = |זס- [ * ו = (ן ,1)אחזוה!ץו ([ ,ו)אוזוה ץעו ;(00)4פ וחוזק | 464 (13)זח) וחוזק | 464 תרשים 7.4 תרשים 7.5 הפונקציה (ְעְגּזז בתרשים 7.4 הוצג אתחול מערך בעזרת לולאה. אפשרות נוספת ליצור מערך וגס לאתחל אותו בערכים רצוייס היא על ידי הפונקציה ()עֶ8זז8. פונקציה וו מקבלת כפרמטרים רשימה של ערכים, ובונה אותס כמערך (מסוג +ח8וז8). תחביר הפונקציה: (82061180) שְהשלת המילה 118%פז8 מייצגת את רשימת הארגומנטיס הנשלחים לפונקציה. לדוגמה: ץצהעעתץא תנכת (5 ,4 ,3 ,2 ,1)ץהע2עת = צְ28+תעשא ץ8 תנק ("בבטהתע" ,"צְפפסצ" ,"םתסם" ,"תהכ")ץהצעה = צְ228ת560 פרק 7: מערכים 139 חריגה מתחום המערך לכל מערך יש טווח ערכים המייצגיס את מספר איברי המערך. טווח זה נע מהגבול התחתון, או במיליס אחרות האינדקס ההתחלתי שלו, לבין הגבול העליון (האינדקס העליון). חריגה מטווח זה יוצרת מצב שגיאה, אשר מפסיק את פעולת התוכנית במתן הודעת שגיאה המוצגת בתרשים 7.6: ו סיווס 6רחו6-חטא שמחב ]0 ]טס 55610 | =נוחו תסו תרשים 7.6 הודעת השגיאה מציינת שהיתה חריגה מתחוס המערך כתוצאה מפקודת השמה לאיבר במערך, אשר ערך האינדקס שלו חורג מהטווח המותר. חריגה זו יכולה לגרוס להשמת ערכיס בתאי זיכרון, שאינס חלק מהמערך או מיועדים לו, ולדריסת מידע באותם תאי זיכרוו אשר נעשה בהס שימוש על ידי מערכת ההפעלה. כתוצאה מכך, יכול היישוס לייתקועיי את פעולת שאר היישומיס הפועליס במקביל ליישום. לדוגמה: %ע6606ת1 238 (7)10ץ228תעא תנכ 7= (11) צְ28מתץא שגיאה וו קשה למעקב מכיון שהיא שגיאה לוגית. כאשר ויו'ואל בייסיק מהדרת את התוכנית, היא אינה יכולה להתריע על החריגה הזו, אולס בעת פעולת התוכנית, התוכנית מופסקת כאשר מתבצעת החריגה. בדוגמה זו נרשס (11)ע8זוהץו/! והחריגה ברורה, אך מה יהיה כשנכתוב (|561/8)ץ8זז ץ/, והמשתנה |5818, המחושב במהלך התוכנית, יקבל ערך גדול מ- 110 כדי לזהות חריגה זו נשתמש בפונקציות 6חטסם! ו- סחטסם.1, אשר בעזרתן ניתן לבחון את גבולות המערך, ולמנוע חריגה מגבולותיו. הפונקציה חטסספט הפונקציה 6חטספ!! מקבלת שני פרמטרים, את שס המערך ואת המימד הנבדק, ומחזירה ערך פַחס.1 המציין את הגבול העליון של אותו מימד במערך. 0 66ם/. - ערכת כלים תחביר הפונקציה הוא: ([תס1פם6ת01 , ] סתה8מץ28 כ 33) סמגוספט לדוגמה: ש>מסם 258 ע6קסט תנכס (30 20 10 ,85 0על 50 ,10 0ע 1)צץ228תעלא תנס (10) ץ5602228 תנק .0 פמתשטס66ת' (1 ,צְהע22תץא) המטספט = ע6ססט .0 פמתשטס66ת' (3 ,צְהע2עתץא) הבמטספט = עס6סמסט .0 פמתשט66ת' (צ5602228)בתטספט = עס6ססט שיס לב שהארגומנט השני, המייצג את המימד במערך, הוא רשות וכאשר המערך הוא חד-מימדי ניתן לוותר עליו. כאשר המערך הוא בעל מספר מימדים והארגומנט המציין את המימד הנבדק במערך לא נשלח לפונקציה, הפונקציה תתייחס למימד הראשון בלבד. הפונקציה טחטספ | בדומה לפונקציה סחטספ!!, הבודקת את הגבול העליון, הפונקציה טספ ] בודקת את הגבול התחתון של המערך. הפונקציה מקבלת שני פרמטרים, את שס המערך ואת המימד הנבדק, ומחזירה ערך פַח0 1 המייצג את הגבול התחתון של המערך. התרשימיס 7.7 ו- 7.8 מדגימיס שימוש בפונקציה סחטסס !1, במבט קוד ובמבט ריצה בהתאמה. |<1ם ב | [ ור 2 1 8956 חסוופס. ()אסו!2) וחזס=] טנופ 6ופעוזק טחס.] 6 זפצס | חחום (30 סד 5- ,85 סד 50 ,10 6ד 1)ע9זובעוא הזוס (3/)10זז/560 חחום .1 וחחזק " (1 ,עֶהּזהץו)חטטסם | וחוזק .5- והוז " (3 , עְזזעוא)סתנוסם | וחוזק | 1 זס 0 )חוזק " (עֶב3ז/560)סחטוסם | וחוחזק .2856 חסווככ) ]0 פָחו59 חס בַחו0ח0606 תרשים 7.7 פרק 7: מערכים 141 תרשים 7.8 כדי להימנע משגיאת חריגה מגבולות המערך, מומלצ לבדוק תחילה את טוות האינדקסים שלו לפני ביצוע פקודת השמה. נבצע זאת באמצעות שתי הפונקציות סחטספנ ו-סחטססם )1. מערכים דינמיים במערך קבוע הגדרנו מראש, בשורת ההגדרה, את גודל המעוך. לפעמים נרצה להשתמש במערך שגודלו אינו ידוע מראש בעת כתיבת התוכנית. ניקח לדוגמה, מזכירה באוניברסיטה הרושמת את פרטי המועמדיס להתקבל לפקולטה מסוימת. אס נצהיר על מערך בגודל 100 איבריס, אשר יקלוט את נתוני המועמדים, פירוש הדבר שאסור לקבל יותר מ-100 מועמדים. כאשר נרצה להכניס את המועמד ה-101, התוכנית תפסיק לפעול ותודיע על שגיאת חריגה מתחוס המערך. כדי להתגבר על בעיה זו קייס המערך הדינמי (עְפּזז 6וחהחץכ). מערך זה מאפשר לשנות את גודלו בזמן פעולת התוכנית ולהוסיף לו איברים כפי שדרוש. במקרה זה אין צורך להגדיר מראש את מספר האיברים במערך, כמו במערך קבוע. בכל פעס שנודקק לאיבר נוסף, נוסיף אותו באופן דינמי למערך. אפשר להגדיל את המערך בשתי דרכים : האחת, ליצור מערך חדש שונה בגודלו ללא שמירת הערכים הקודמיס; השנייה, ליצור מערך חדש אולס לשמור בו את הערכיס הקודמים. הגדלת המערך ללא שמירה על ערכיו הקודמים כמו במערך רגיל, עלינו להצהיר על המערך קודס שנשתמש בו, אך במקרה זה נשאיר ריקיס את הסוגרייס, אשר בתוכס נרשס הטווח. לדוגמה, () צְהע22תתטשק תנכס () %8ת56006 תנכס 6062סת1 פב () 628069 תנכ כדי להגדיל את המערך להוספת איבר, נשתמש במשפט וחו60א. לדוגמה, (1) ץ228תמצכ ת1כפםה (1) %8ת556008 תנ1כסםה (1) 0280068 תנ1כסה 2 8 6ם/. - ערכת כלים בדוגמה זו הגדלנו את המערך ועתה הוא בעל שני איברים (1 ו- 0). להוספת איבר נבצע פעולה דומה: (2) ץ28?תתעכק תנספ6ת2 (2) %8ת56006 תנכסת (2) 0280668 תנספת עכשיו, כל מערך מכיל שלושה איברים (0-2). ניתן כמובן, להשתמש במונה להגדרת מספר האיברים, לדוגמה: 166% פב עססתגמסס תנכ 16662 פ2 ()צץ228תתצכ תנכס 1 = ש6ס6תג0ס0ס (ע66תגוסס) ץ228תתעכ ת1ס6ג להוספת איבר, נכתוב כך: (1 + ע6סתטסס) ץ228תמצלכ ת1כ6םג או כך: 1 + עסשסמתוסס = עפסתגסס (ע66תגוסס) ץ28+תתצכ מנפפת הגדלת המערך עם שמירה על ערכיו הקודמים בכל פעל שמגדילים את מספר איברי המערך ומוסיפים לו איבר, נוצר למעשה מערך חדש. המשפט ₪601 גורס אמנס להגדלת המערך, אך יוצר מערך חדש ריק (עם איבריס מסוג +חוזהּצ), או אפס (במערך מסוג משתנה מספרי), או עם מחרוזת ריקה (במערך מסוג 8ַחו51). כל הנתוניס שהיו במערך הקודס אובדים (תרשימים 7.9 ו- 0.. [<ום) = | (2006)) [ זט - 6001ן0ז5 מה [+ ו [+ זט ] 1 2850 חסווקס ()04ו21) וחזס=] 510 סובעוזק !| 35 (0)עָבּזזהץוא הזוס (1)עֶהּזזץו והוססם 9 = (1)עְ3זז2עו (1)עֶה עו ;" = (1)עֶ3זזץוא" וחוזק (2)עֶ3ּזזץו וחוססם (1)ע3זז עו ;" = (11)עֶבּזזבץוא" וחוזק תרשים 7.9 פרק 7: מערכים 143 [חזזס] .₪ תרשים 7.10 כדי לשמור על הערכים הקודמים, נוסיף להוראה ₪חו380 את המילה השמורה 6 ז. לדוגמה, (1 + ש6סתט00) %8ם06ט560 6ט0ע686ק מנכעסם שורת קוד זו מורה לתוכנית להגדיל את המערך, אך לשמור על ערכיו הקודמיס (תרשימים 7.11 ו- 7.12). (006-:)) [חוזס] - 60)1ןם:?) או | ()אסו!2) וחזס=] סגו5 6ופצוזק זס6וח! 36 ()ע9זוב וא הזוס (1)ע3זזבץו החוש 9 = (1)ע9זוהץו (1)ע3זזץוא ;" = (1)ע3זזב קוא" וחוחזק (3)2זז/ץ) 6567/68 והוס6] (1)ע9זזץוא ;" = (1)עֶ3זזב ץוא" וחוזק (3)2 זז ץוא ;" = (2)עֶ3זזבץוא" וחוזק 50 6ח= תרשים 7.11 [חזזס] .₪ תרשים 7.12 כבמערך רגיל, כך גס במערך דינמי ניתן להגדיר את הגבול העליון והתחתון. 4 ₪65 - ערכת כלים לדוגמה, 166% פ2 ()צְה22תתצע תנכת (20 20 7)10ץ228תמצכ תנכפת שיס לב שניתן לשנות אך ורק את טווח המערך, אך לא ניתן לשנות את מספר המימדיס שלו! כדי לא לחרוג בטעות מהגבול העליון של המערך, ניתן להשתמש בפונקציה ס6חטספ( כאשר מגדיליס את המערך חדינמי. לדוגמה, %ע86ססת1 פ2 ()צְה22תתצע תנכת (1) ץ228תתלכ 6עע2656ק תנעפת (1 + (שְ2528תתשכ)6םתמטוספט) ץצ228תמצכ 6עע2656ק תנכ6ת תרגול 1 הצהר על מערך קבוע בגודל 10, קלוט לתוכו 10 ציוניס והדפס את הסכוס ואת הממוצע שלהם. 2 בצע את תרגיל 1, אך הפעס בצע ואת בעזרת מערך דינמי השומר על ערכיו בכל פעס שהוא גדל. פרק 7: מערכים 145 8: מבני קבלת החלטה פעמים רבות עומדת התוכנית מול שאלה או תנאי, כאשר התשובה לשאלה היא כן/לא, או האס התנאי מתקייס (08ז1) או שאינו מתקייס (8!56=). בהתאס לתשובה, או לקיוס התנאי, נקבעת ההחלטה להמשך התוכנית. את היכולת לשאול שאלה ולקבל החלטה על פי התשובה המתקבלת, נותנת ויז'ואל בייסיק בעורת מבני ההחלטה הבאים: מסמץ..ך.1 6. .מתפתץ..2.15 6 מ3.561605 המבנה חס6חד..זו המבנה ח6חך..1! מאפשר למתכנת לבצע משפט מותנה, או משפטים מותנים על פי תוצאת הבדיקה של התנאי. המשפטים שיבוצעו מותנים בשאלה, או בתנאי אשר התשובה עליהם היא כן/לא, או האס התנאי מתקיים או לא. אם התשובה לשאלה היא כן, או שתנאי מתקיים, התוכנית מבצעת את המשפט או המשפטים שנכתבו על ידי המתכנת בהמשך המבנה, לאחר מילת המפתח חפהך; אס התנאי אינו מתקיים, התוכנית מדלגת על משפטיסם אלה וממשיכה במשפט הבא. תחביר הפקודה לביצוע משפט אחד כאשר התנאי מתמלא, או שמתקבלת התשובה כן: 558% מתספםת71 מסנ61נסתסס +ך לדוגמה, עיין בטופס המוצג בתרשים 8.1 : <1ם] - | [חזס] .₪ 5 :זסםוחגוח זטזח = | 6% תרשים 8.1 פרק 8: מבני קבלת החלטה 147 בטופס מוצגת תיבת טקסט שלתוכה המשתמש מתבקש להקיש מספר כלשהו. מתחת נמצא הלחצן 0₪80%, אשר בלחיצה עליו התוכנית בודקת אס המספר שהוקלד על ידי המשתמש חיובי (גדול מאפס). אם המספר שהקליד המשתמש גדול מאפס, תוצג תיבת הודעה מתאימה. את הבדיקה אם המספר חיובי או לא, נערוך בעזרת מבנה ההחלטה חפחד..1!. מבנה קבלת ההחלטה כולל תנאי או שאלה, אשר התשובה עליהם היא כן או לא. במקרה שלנו, השאלה היא האס המספר שהמשתמש הקליד הוא חיובי, או במילים אחרות, האס הוא גדול מאפס! תרשיס 8.2 מתאר את שורות הקוד הבוחנות את התנאי. |<|ם) = [008:)] 1חוזס] - 66)1ן0: א ] - | 6 - | ()סו!) 80%ח0)2ת0 פופ 6ובפעוזק הפחד 0 < (6 ד. וחגוצס)|בע זו | ("6ע20510 5| זססוחנוח 6רוד") 15000 ".)ו(950ז 60%" , , תרשים 8.2 המאפיין +א6ד של הפקד וחטא!וא? מחזיק בערך שהמשתמש הקליד בתיבת הטקסט. מכיון שהערך שמור כ-פַחוז50, דרושה הפונקציה ()/8/ כדי להמירו למספר. בעזרת האופרטור ייגדוליי (<), הוצג התנאי במבנה ההחלטה !. אס המספר גדול מאפס, התנאי מתקייס ומוצגת תיבת ההודעה א9450/! (תרשים 8.3). כאשר התנאי לא מתקיים, התוכנית מדלגת על מבנה ההחלטה וממשיכה הלאה. בדוגמה שלנו, התוכנית מדלגת אל שורת הקוד פט5 6חם והשיגרה מסתיימת. ]| א660ת:) ופסכ 15 זספוחווח שד תרשים 8.3 בתוך מבנה ההחלטה אפשר להכיל יותר ממשפט פעולה אחד, אך במקרה זה התחביר של משפט ז! שונה במקצת : תסםץ7 מסנס01סתסס 1% 8 מסותם 558 5 תח 8 6ם₪/. - ערכת כלים שיס לב, שכאשר נכתביס מספר משפטים לביצוע בתוך מבנה ההחלטה, יש להוסיף את המשפט ?| 0חש'י בסוף מבנה ההחלטה. משפט זו מודיע לתוכנית היכן מסתיימיס המשפטיםס המותניס הנכלליס במבנה ההחלטה. גם כאן, אס התנאי מתקייס המשפטים מתבצעים, ואם לאו - התוכנית ממשיכה כרגיל ללא ביצוע משפטים אלה. לדוגמה: 6062סת1 פב 62806 תנקת תפםם 90 =< 62806 +1 8 5 פגותסם' 5 + 028066 = 02806 "!400 צשעסט" סמנ1עק 1 תס התנאי במבנה ההחלטה משווה בדרך כלל שני משתניס או משתנה וקבוע. לדוגמה: 166062 פב 62806 תנכס "!500 עפ" סםתנעק מ6ם6 90 =< 02866 11 או: 6062סת1 פב 62806 תנקת "!%ת6116סאם" סמתנעעקע תסםתםס 02806םת10 =< 62806 +11 ניתן גס להשוות בין שני ביטויים מורכבים, כמו לדוגמה: 6עץ = 2888 ם6ם7 380 < 2 / (2806168%6 + סנעַסתסתסִצְ8ע) 15 משפט תנאי עם משתנה (אופרנד) אחד כאשר במשפט התנאי נמצא משתנה מספרי בודד, ההתייחסות לתנאי תהיה בצורה הבאה: אס הערך המספרי של המשתנה הוא 0, התנאי אינו מתקיים והמשפטיס הבאיס אחריו אינס מתבצעיס. אס ערך המשתנה שונה מאפס (וללא תלות בערכו הממשי), התנאי מתקייס והמשפטיס המותניס במבנה ההחלטה מתבצעים. לדוגמה: 1662 פב 888ק2 תנק 5 = 2858 מסתך 858ק 15 ("סטע? 18 תס1נ6נ1בתסס 6םע2") אספטספא + תש 156062 285 855ק תנק 0 = 2888 מסםתץ 855ע ססא 15 ("סטע? 18 תסנשנשתסס 6ם1") א0ספטפא + תש במבנה ההחלטה הראשון נבדק המשתנה היחיד 08588, ולכן התנאי מתקיים כל עוד ערכו שונה מאפס. בדוגמה זו ערכו של 0855 הוא 5, ולכן התנאי מתקיים והתוכנית מציגה תיבת הודעה שבה 'יפטזד 158 חסוסחס6 6חדיי. לעומת זאת, במבנה ההחלטה השני ערך המשתנה 0888 הוא 0. הפעס הבדיקה היא ₪855 )סצויי, ובמילים אחרות, פרק 8: מבני קבלת החלטה 149 הפיכת משמעות התשובה הנכונה. מכיון שערך 5 הוא 0, והו ערך שקרי, שהפיכתו על ידי 61 תתן לנו תשובת ''אמתיי; לכן, גס במקרה וה התנאי יתקיים והשורה ''8חדך 6 8! חסוו6חסס6יי תוצג בתיבת ההודעה. בדוגמאות אלו כתבנו את המשפט 1! 60ח= למרות שיש משפט אחד בלבד. הסיבה לכך היא, שכאשר המשפט נכתב באותה שורה בה כתוב התנאי, בהמשך למילה חפחד, אין צורך ב- ]| ₪6ם, אך כאשר המשפט נכתב בשורה נפרדת, יש לסייס את מבנה ההחלטה ב- ]! 0חם, כדי למנוע אי הבנות הן מצד המתכנת והן מצד מהדר התוכנה. במבנה ההחלטה חפחד..1! מבצעת התוכנית את המשפטים המותנים רק כאשר התנאי מתקיים. אם התנאי אינו מתקייס התוכנית מדלגת על משפטים אלה, וממשיכה הלאה, במשפט העוקב. לפעמיס נרצה לבצע משפטים מותניס גס כאשר התנאי אינו מתקיים. למשל, לטופס שמוצג בתרשיס 8.1, נוסיף את האפשרות לתת למשתמש הודעה על מספר שלילי במקרה שהמספר שהקיש קטן מאפס. לצורך זה נשתמש במבנה ההחלטה 6. החסחד... המבנה 56!=..ח6חד..זו מבנה ההחלטה 156=..ח6חד..1! מאפשר להפריד בין קיוס התנאי לבין אי קיומו, ולבצע פעולה שונה, או פעולות שונות, והכל - במסגרת משפט ]!|. אס התנאי מתקייס מתבצעיס המשפטיס שלאחר מילת המפתח ח6תד; אחרת (כלומר, 156ם) יתבצעו משפטים אחרים. במבנה ההחלטה חפח7."! אם התנאי אינו מתקיים התוכנית ממשיכה למשפט העוקב. במבנה ההחלטה 858!ם..חפחד..+! מתבצעיס משפטיס מסוימיס במצב שבו התנאי אינו מתקייס והס רשומים לאחר מילת המפתח 188ם. רק אחר כך התוכנית ממשיכה למשפט העוקב. תחביר ההחלטה הוא : מסתץ מסנס6נ0סתסס 1% 55858 826 7506 6 558 6ע83 781856 5 תם לדוגמה, על המשתמש לענות על שאלת חשבון המוצגת בפניו (ראה תרשיס 8.4). אס הוא ענה נכון, התוכנית תציג לפניו הודעה מתאימה. אס הוא שגה, התוכנית תציג בפניו הודעת שגיאה. 0 66ם/. - ערכת כלים > = [חזס] .₪ תרשים 8.4 במקרה זה עלינו להציג הודעה גס כאשר התנאי מתקיים, וגם כשאינו מתקיים. על כן יש לכתוב משפטים מתאימיס לשני המצבים: למצב בו התנאי מתקיים וגם למצב בו התנאי אינו מתקייס. לצורך ה נשתמש במבנה ההחלטה 18586.. חפחד..+! (תרשים 8.5). |<1ם)- | [068-:)) [חוזס] - 66)1ן0:] א | - ו [+ 1 ] ()אסו!כ) 80%ה2)ח0 סנופ סובּעוזק חפח ד 15 = (וא8 ך. וחגו)|ג /ע | ")וז 60%ת;)" , , ("!000ף עופ/") אסםספוש₪ 6 ")850 80%ה2)" , , ("חובטָ3 עזד") אסם וש ! 9ח= תרשים 8.5 התנאי העומד לבדיקה הוא: 5 = (%6א716.תטא%א6) [פצ כאשר התנאי מתקיים, או במיליס אחרות כאשר המשתמש ענה תשובה נכונה, מוצגת הודעה מתאימה. אס המשתמש שגה והתנאי לא מתקיים, התוכנית לא תדלג על מבנה ההחלטה ותמשיך בפעולתה. במקרה זה היא תדלג אל המשפט או המשפטים שלאחר מילת המפתח ₪158 שבמבנה ההחלטה, ותבצע את הכתוב בו. בדוגמה שלנו התוכנית תציג הודעת שגיאה (תרשים 8.6). פרק 8: מבני קבלת החלטה 151 |אוםן. [חוס] ₪ .]50 60% 3 =0ו+5 חובּח3 עד תרשים 8.6 היררכיית ]/56!₪ נבחן את שורות הקוד הבאות: 15662 פב תטא תנק תסמץ 1 ".סתס 18 עססמתטם 6ם2" א0ס2סטס5א מסמץ 2 ".סשם 18 עססמתטם 6ם2" א0ס2סטס5א מסמץ 3 ".6שעםת6 18 עססתגום 6םעל" א20טפ5א 1 = תטוא תטוא +1 5 תח תטוא +1 5 שת תטא +1 5 בת שלושת מבני ההחלטה בודקים את ערך המשתנה וחטאז. בדוגמה, ערך וחטא הוא 1, ולכן התנאי הראשון מתקייס והמשפט הבא אחריו מתבצע. לאחר ביצוע המשפט וסיוס מבנה ההחלטה הראשון, פונה התוכנית למבנה ההחלטה השני ובודקת את התנאי שלו. התנאי אינו מתקיים והתוכנית ממשיכה למבנה ההחלטה הבא. גם כאן נבחן התנאי והוא אינו מתקיים ולכן התוכנית ממשיכה. מצב שבו התוכנית חוזרת על הבדיקה אינו תכנות נכון והתוכנית אינה יעילה. אם מתברר שערך וטא הוא 1, מיותר לבדוק את מבני ההחלטה הבאים, כי הס יתנו את אותה תוצאה, ולא יתקיימו. כדי לייעל את הקוד נשתמש בהיררכיית 51581. נבחן את שורות הקוד האלו, שבהן אנו בודקיס אם ערכו של וחטא הוא 1, 2, או 3 ופועליס בהתאם: 2 8 6ם₪/. - ערכת כלים 16662 פב תטא תנק 1 = תטא תסםץ 1 = תטא 15 ".סתס 18 ע6סמתטם 6ם7" א0ספטפא מסםך 2 = תטא 15615 ".סשף 18 ע6סמתטם 6ם17" א0%ס2טפא מסםך 3 = תטא 15615 ".66עם6 18 ע6סתטם 6ם17" א0ספ2טפא = = בשורות אלו, מכיון ש-1=חטא, התנאי הראשון מתקייס והתוכנית מבצעת את המשפט: ".6תס 18 ע6סקתטם 6ם7" אספבטפא אך הפעם, שני מבני ההחלטה הבאיס שייכיס לחלק ה- ₪186 אליו פונה התוכנית רק כאשר התנאי לא התקיים. בדוגמה שלנו, אס כן, התוכנית תדלג על חלק זה ותמשיך הלאה. בסופו של דבר התוצאה בשתי הדוגמאות תהיה דומה ונקבל את אותה תיבת הודעה. אך יעילות ומהירות ביצוע התוכנית גדולה יותר בדוגמה השנייה, בה נבדק התנאי הראשון בלבד. המבנה 6356 56|66% עיין שוב בשורות הקוד האלו: 156062 פ2 תטא תנק 1 = תוא תסםץ 1 = תטא 15 ".סתס 18 ע6סמתטם 6ם7" א0ס2טפא מסםך 2 = תטא +1561ם ".סשף 18 ע6סתטם 6ם17" א0%ס25טפא תפתץ 3 = תטא 81585611 ".66עם6 18 ע6סמתטם 6ם17" א0ס5טפא 5 תס בדקנו בהס אס ערכו של חווא הוא 1, 2, או 3. נניח שברצוננו להציג הודעה דומה, כאשר הערכים של וטוא הס 1 או 2, ולהציג הודעה שונה כאשר הערך הוא 3. השימוש במבנה ההחלטה 86!ם.. חפחד..1! במקרה וה מסבך מעט את שורות הקוד, והן אינן קריאות וברורות. לדוגמה, 156062 25 תטא תנק 1 = התוא תפתץ 2 = תטא 05 1 = תטא +1 ".סחאם ע02 6םס 18 ע6סמתטם 6ם17" א0ס5טפא מסםץ 3 = תטא +1561ם ".66עם6 18 ע6סתטם 6ם17" א20%טפ5א 5 תס פרק 8: מבני קבלת החלטה 153 בדוגמה זו שורות הקוד אינן מורכבות כי נבדקיס בהן ערכיס מעטיס. אך מה יקרה אס נרצה שבמשפט +! נרצה לבדוק 0 ערכיס למשל. כדי לבדוק ערכים שוניס נכתוב שורת קוד כוזו, למשל: תסתך 78 = תמטא 02 ... 35 = תטא 02 10 = תטא 05 1 = תטא +1 שורות הקוד שלנו הפכו למסורבלות ובלתי קריאות. על כן, נעדיף במקרה כוה את מבנה ההחלטה 6856 +5861!66, שהתחביר שלו הוא : 868 088685 561606 8 0885 5 מסותם 558 86 08850 5 מסותם 558 0% תס כאן, 80|6וז8/ הוא הערך שנבדק ו- 6ט|8/ הוא הערך שלעומתו בודקים את 811806 /. 8 הם הפקודות שתתבצענה בכל מקרה שהתוצאה היא חיובית (ייכן"). לדוגמה: 156062 פב תטא תנק 2 = ותגוא תטא 0886 561606 1 0886 ".סתס 18 עססמתטם 6ם2" אספטספא 2 08806 ".סשס 18 עסמתטם 6ם2" אסת2טפ5א 3 0886 ".ססעםת6 18 מססמתטם 6ם2" אספתטספא 6% בת בדוגמה זו נבחן ערכו של משתנה בודד וחט)ז. במקומו אפשר לכתוב גם ביטוי מורכב. כמו בדוגמה הקודמת גס כאן נבדוק אס ערכו הוא 1, 2, או 3. לדוגמה, 15662 פב תטא תנק 6 = תטא 4 / (2 * מטא) 0886 561606 1 0886 ".סתס 18 עססמתטם 6ם2" אספתטספא 2 08806 ".סשם 18 עססמתטם 6ם2" אספטספא 3 0886 ".ססעםת6 18 מעססמתטם 6ם2" אספטספא 6% בת אלו הן דוגמאות פשוטות הדומות מאוד למבנה ההחלטה 188ם..חפחך..1!. באמצעות המשפט 0858 56180 אפשר לבצע משפט אחד על טווח ערכים של המשתנה הנבחן. לדוגמה, 4 6ם/. - ערכת כלים 15662 פב תטגא תנק 5 = תגוא תטא 0886 561606 1 0886 ".שתס 18 ע6סתטם 6ם7" א250%טפא 6 70 2 08856 ".81% 0ת8 סחטס ם66א656ס 18 עססמתטם 6ם2" אספתטספא 10 0886 ".ת66 18 עססמתטם 6ם2" אספתטספא 8% בת אס לדוגמה, ערך המשתנה חחטאז הוא 3, מבנה ההחלטה יפנה לחלק המטפל בערך זה. במקרה שלנו, 3 נמצא בטווח שבין 2 ל- 6, ולכן יבוצע המשפט: ".81% בת8 סחס ם66א6מ6ס 18 עססתטם 6ם2" אספתטספא באופן דומה מתבצע משפט אחד על ערכים שונים של המשתנה. לדוגמה, 5662 פב תטגטא תנק 3 = תטא תטא 08956 561606 0886 1 ".סתס 18 עססמתטם 6ם2" אספתטספא 6 08896 ".81% 02 6266 18 ע6סתטם 6םעל" א50%טפא 10 0886 ".ת66 18 עססמתטם 6ם2" אספטספא 5% שת בדומה לחלק "5158" במבנה ההחלטה 88!ם..חפחך..+! קיים גס במבנה ההחלטה 8 58806 חלק ששמו ₪158 6856, שבו נרשמיס המשפטים לביצוע כאשר אף אחד מהתנאים שנבדקו אינו מתקיים. כדוגמה, ניצור את הטופס המוצג בתרשים 8.7. |<1ם] - | [חזס] .₪ [ | זפםוחוח זט)ח = | 6% תרשים 8.7 בטופס זה המשתמש מתבקש להקליד ערך בתיבת הטקסט וללחוצ על לחצן 0080%. בתגובה תופיע תיבת הודעה המציינת אם המספר שהוקלד הוא חיובי, שלילי או אפס. פרק 8: מבני קבלת החלטה 155 לביצוע מטלה זו נכתוב את שורות הקוד האלו עבור האירוע 06ו!₪01 של הלחצן 0% (תרשים 8.8). [<1ם)- | [006:)] [חוזס] - 6611ן0:?] א [+ *ו] [= 1 ] ()אסווכ) 6000806 סגו5 6זבשחק (6 ד חח )| / 0856 +59|80 5<0| 058 "וזו סכן חו זססוחח פד" אס 15 0> 5! 0298 "916 חו זססוחוח פד" אס 150 6 02358 "20701 חו זפסוחח פד" 80 150 9% סח סטש 0חם תרשים 8.8 שיס לב שניתן להשתמש גס באופרטורים ייגדוליי (<) ו- ייקטןיי (>) בתוספת המילה השמורה 'י8!יי. ואס ערך המשתנה או הביטוי אינו בטווח הערכיס של שני חלקי משפט 6), התוכנית לא תדלג על מבנה ההחלטה, אלא תפנה לחלק 58!₪ 0896 של המבנה (תרשים 8.9). |< ו|ם=. [וס]| ₪ 0 :זססוחגות זפ)ח = וו 2001 חו זססוחגוח פה תרשים 8.9 תרגול 1. תן למחשב לבחור מספר באופן אקראי (היעזר בפונקציה 0חח) ואפשר למשתמש לנחש מהו המספר שנבחר. אס המספר של המשתמש גדול מהמספר שנבחר על ידי המחשב, או קטן ממנו, הצג הודעה מתאימה. המשחק יסתיים כאשר המשתמש ינחש את המספר. 2 הצג טופס עס תפריט ומחירים. אפשר למשתמש להזמין כרצונו ובסוף ההזמנה הצג את מחירה הכולל של ההזמנה. 6 66ם₪/. - ערכת כלים 9: לולאות פעמיס רבות על המתכנת להפעיל קטע קוד כלשהו פעמיס אחדות. במקוס לרשוס משפט אחד או כמה משפטים בכל פעסם מחדש, כמספר הפעמים הדרוש, אפשר להפעיל את מבנה הלולאה. לולאה (1.000) כוללת משפט אחד או מספר משפטים, המבוצעיס מספר מוגדר של פעמיס או באופן מחזורי, עד אשר מתקייס תנאי מסוים, או שהוא אינו מתקייס. נניח שהמתכנת רוצה להציג בטופס את המספריס 1-100. במקוס לכתוב 0 משפטיס במאה שורות קוד, יעיל ופשוט יותר לכתוב משפט הדפסה אחד אשר יחזור על עצמו, בעזרת הלולאה, 100 פעמים. הלולאה 6ווח//..06 הלולאה 6ווח/.. 0 (ייעשה כל עודיי) מבצעת משפט אחד או מספר משפטים באופן חוזר ונשנה מספר רב של פעמים. הלולאה כוללת תנאי לביצוע הלולאה. במיליס אחרות, כל עוד התנאי מתקיים (פטזד) הלולאה ממשיכה והמשפטים שבתוכה מתבצעים. ברגע שהתנאי מפסיק להתקיים, הלולאה מפסיקה והתוכנית ממשיכה במשפט שלאחר משפט הלולאה. נקודת העצירה של הלולאה היא כאשר תנאי ביצוע הלולאה מקבל ערך 8156= (אינו מתקיים). תחביר הלולאה פווח/..0כ הוא : מסנפנ0סתסס 16גתח סכ 5 מסותם 58 5 קססת לדוגמה: 166062 פב תנבהשת תנק 1 = מנ1השת 4 => מ681ה 116םמא סכ מנאסת 6ם1צק 1 + םנ1ה6ת = מנגהשת סקסס1 מתי נשתמש בלולאה 6ווח//..06 ? בלולאה וו נשתמש כאשר מספר מחזורי הלולאה אינו ידוע מראש, והדבר היתחיד שידוע הוא התנאי לביצוע הלולאה, או באיזה מקריס הלולאה תמשיך להתבצע. תנאי זה הוא תנאי ביצוע הלולאה, והלולאה תהיה במבנה 6ווח/.. 6פ. פרק 9: לולאות 157 הלולאה קסס ...00 סגנון שונה של אותה לולאה הוא המבנה ססס1..ס, כפי שנראה להלן: סכ 5 מסותם 58 5 מ10נ015ת60 116תח סססת לדוגמה: 166062 28 תנבהשת תנק 1 = מנ1השת סכ מנאסת %6ם1צק 1 + ם1ה6ת = מנ1ה4ת 4 => ם681ת 116םמא סססת גס במבנה וה ביצוע הלולאה תלוי בקיוס תנאי. כל עוד התנאי מתקייס הלולאה מתבצעת, וכאשר התנאי אינו מתקייס הלולאה מפסיקה להתבצע. ההבדל בין שני הסגנונות הוא, שבלולאה 8ווח/..₪0 התוכנית בודקת תחילה את התנאי ורק אם הוא מתקיים המשפטים בתוך הלולאה מתבצעים. אם התנאי אינו מתקיים בכניסה הראשונה ללולאה, המשפטים שבתוכה לא יתבצעו אפילו פעם אחת. לעומת זאת, בלולאה ₪0..1000 מתבצעים תחילה המשפטים שבתוך הלולאה, ורק אחר כך נבדק התנאי. גס אס התנאי אינו מתקיים כלל, המשפטיס שבתוך הלולאה יבוצעו פעס אחת לפחות. הלולאה |שח(ו..06 לולאה וו דומה מאוד ללולאת 6!וח/..₪00 בצורת פעולתה, וגס לה יש שני סגנונות. הלולאה מבצעת משפט או מספר משפטים, מספר פעמים התלוי בתנאי הלולאה. אך שונה מהלולאה 6ווח//..6כ, הלולאה /6ח..0ם מבצעת את המשפטים בלולאה כל עוד התנאי אינו מתקיים. בלולאה זו, תנאי הלולאה הינו תנאי סיוס והלולאה תמשיך בפעולתה כל עוד התנאי אינו מתקיים. מבנה הלולאה הוא: מסנפנסתסס 1גסמטס סכ 5 מסותם 558 0 במבנה זה, אס התנאי מתקייס - הלולאה אינה מתבצעת כלל. במבנה הבא, לדוגמה, הלולאה תתבצע לפחות פעס אחת : סכ 5 מסות 0 558 מעסנ016סתסס 1בפמטש סססתם 8 6ם/. - ערכת כלים הלולאה +א6א..זוס- הלולאה )א8ו..זס=, כמו הלולאה 8ווח//..0כ, מבצעת מספר פעמיס משפט אחד או משפטים. ראינו שבלולאה 8!וח/..₪6 מספר מחזורי הלולאה אינו ידוע, אך בלולאה %..זס= מספר מחזורי הלולאה מוגדר מראש. במיליס אחרות, אס ידוע מראש כמה פעמיס תבצע הלולאה את המשפטים הכתובים בה, נעדיף להשתמש בלולאה +6%א..זסת. תחביר הלולאת: [ 6מ6ת6עס0ת1 ק856] 0ם8 70 80825 = עס6ס5מטסס צסםש 5 מסות0ם 58 5 עסםתטסס 6אבא לדוגמה: 2 85607 10 סם 1 = 1 מסע "ס611א" סתנעס 1 שאסת בלולאה )א8א;..זס= נמצא משתנה, המשמש מונה לולאה (זסוחטוסס ססס ). מונה וה עוקב אחר מספר הפעמיס שהלולאה מתבצעת. המונה הוא משתנה מספרי כלשהו, ואינו מוגדר בהכרח בשס זס%חטס6. הארגומנט +59 בלולאה קובע את ערכו ההתחלתי של המונה והארגומנט 6006 קובע את ערכו המקסימלי. בדוגמה הקודמת, המשתנה 1 הוא מונה הלולאה, ערכו ההתחלתי הוא 1 וערכו המקסימלי (הסופי) הוא 10. הארגומנט +חפוח6זסחו קובע את ערך הקידוס של מונה הלולאה. בדוגמה הקודמת ערכו הוא 2, ולכן הוא גדל בקפיצות של 2. לפיכך, המונה מתחיל ב-1 מתקדס ל- 3, ל- 5 7 ו-9 והלולאה מסתיימת, כי הערך הבא הוא 11 אשר גדול מהערך המקסימלי של המונה. הלולאה מתבצעת לפי תנאי זה 5 פעמיס בלבד. כאשר ערך הקידוס של המונה הוא 1, אין צורך לצייןו את הארגומנט +ח6וחפזסחו, כי זו ברירת המחדל. הלולאות האלו זהות לחלוטין, ובשתיהן המילה ייסו|8יי תודפס 10 פעמים : 1 5060 10 0ם 1 = 1 עסץ "ס611א" סתנעס 1 סאפא 0 0ם 1 = 0 שסשע "ס611ע" סתנעס 1 ס6אסא כדי ללמוד על שימוש פשוט בלולאה מסוג !א6אז..זס=, נכתוב את המילה '9ים600יי באיבריס 3 עד 5 של מערך 18018. לצורך זה דרושות פקודות אלו: 09 3-= 1 השס "פ600" = (16)1ס78 1 %אסת פרק 9: לולאות 159 הארגומנט 1ח8חח6זסחו יכול לקבל גס ערכים חיוביים וגס ערכיס שליליים. כאשר ערך הארגומנט +ח6וח6זסחו חיובי, הערך ההתחלתי של המונה קטן מערכו של הערך העליון שלו; כאשר ערך הארגומנט 1ח6חח6זסחו שלילי, הערך ההתחלתי של המונה גדול מערכו הסופי (במקרה זה המינימלי). לדוגמה, 1- 5060 1 70 10 = 1 מסש 1 >תנעס 1 6אפא בלולאה זו יודפסו המספרים 1 עד 10 בסדר יורד! האס ברור מדוע? אס הערך ההתחלתי של המונה קטן מערכו המקסימלי וערך הארגומנט )+חסוח6זסחו שלילי - הלולאה לא תתבצע כלל. הבדל נוסף שיש בין הלולאה !א8ז..זס= לבין הלולאה ססס0..1כ הוא ניצול ערך מונה הלולאה. התבונן בשתי הלולאות הבאות: 0 920 1 = 1 שסץ "ס611א" שתנעס 1 6אפא 0 70 100 = ש עסת "ס611א" 6מ1צק ע 6אפ6א בשני המקרים תודפס המילה 'יסו|48זיי 10 פעמים. במקרה וה אין כל הבדל בין שתי הלולאות. אך הנה דוגמה שונה עבור שתי הלולאות: 0 920 1 = 1 שצסץ 1 >תנעס 1 6אפא 0 970 100 = ש עסת 4 %םמג1סק צ 6אפ6א במקרה זה יש הבדל גדול בין שתי הלולאות, כי בלולאה הראשונה יודפסו הערכיס המספריים 1 עד 10, ובלולאה השנייה יודפסו הערכים המספריים 100 עד 110 (תרשים 1). הבדל זה נובע מהעובדה שייחסנו משמעות לערך של מונה הלולאה. 0 7 6 5 4 3 2 1 <= | וד 103 108 107 106 105 104 103 102 וס 100 <=4 תרשים 9.1 0 6ם/. - ערכת כלים כאשר מונה הלולאה משמש כמונה בלבד, אין כל חשיבות לערכי ההתחלה והסיוס, כל עוד הטווח נשמר,ובדוגמאות הקודמות הטווח היה 10, לביצוע 10 מחזורי לולאה. אך כאשר ערך המונה חשוב, יש הבדל רב אם ערכו נע בטווח שבין 1 ל- 10 או בין 100 ל- 0. לולאות מקוננות משפטיס הכתוביס בתוך הלולאה מבוצעיס מספר פעמים, על פי מונה הלולאה, או על פי התנאי לסיוס הלולאה. משפטיס אלה יכוליס להיות כל משפט חוקי בשפת ויצ'ואל בייסיק, כמו פקודת השמה, מבנה קבלת החלטה ואפילו לולאה. כלומר, ניתן להגדיר לולאה בתוך לולאה. במקרה זה נאמר כי אלו הן לולאות מקוננות (5קסס! 65160א). לדוגמה: 00 20 1 = 1 שסץ 0 20 1 = 0 שצסץ "ס61[1םת" >תנעק 7 6אפא 1 6אפא שיס לב, שמילת המפתח +א68א המסיימת את הלולאה הפנימית, מוצבת לפני הסיומת +6%א של הלולאה החיצונית. כמה פעמיס תודפס לדעתך המילה "ס!|₪48"! אם אמרת 100 - צדקת, והסיבה לכך היא שבכל מחזור של הלולאה התחיצונית, הלולאה הפנימית מבצעת את כל המחזוריס המוגדריס לה. בדוגמה זו, בכל מחזור של הלולאה החיצונית (בבקרת המשתנה ), הלולאה הפנימית (בבקרת המשתנה 1) מבצעת 10 מחזורים. מכיון שהלולאה החיצונית מבצעת 10 מחזוריס גם היא, מתבצעיס בסך הכל 100 (1010) מחזורים של הלולאה הפנימית. הבה נתבונן בלולאה זו: 0 920 1 = 1 שסץ 0 20 1 = 0 שסק "ס611ת" >תנעק 7 6אפא "ב1עסא" סתנעפ 1 6אפא המילה "ס!|!₪8" תודפס באמצעות לולאה זו 100 פעמים, מכיון שההדפסה נעשית בלולאה הפנימית; על כן, בכל מחזור של הלולאה החיצונית מתבצעיס כל מחזורי הלולאה הפנימית. לעומת ואת, המילה "טחסשו" תודפס 10 פעמים בלבד, מכיון שהמשפט "סוחסעו" זחוזק הוא חלק מהלולאה החיצונית (ולא הפנימית), ולכן הוא יתבצע כמספר מחזורי הלולאה החיצונית, כלומר - 10 פעמיס. גס בלולאות מקוננות ניתן לנצל את ערכי המונים. הנה דוגמה של לולאות מקוננות המדפיסות את לוח הכפל בעזרת שימוש בערכי מוני הלולאה. פרק 9: לולאות 161 0 = סע 0 20 1 = 0 שצסץ קש 79 סתותכ 7 6אפא 8 אסא ' (13)עםת6 שתנעס 1 6אפא ניתן להשתמש בערך המונה גס לאחר סיוס הלולאה ויציאה ממנה. המונה הוא משתנה לכל דבר, אשר שומר על ערכו בהתאס לאורך החיים שלו. אס זהו משתנה מקומי, אורך חייו עד סוף השיגרה או הפונקציה שבה הוגדר, ואס הוא משתנה מודולרי, הוא שומר על ערכו במשך חיי המודול או הטופס. שימוש בערך המשתנה לאחר סיוס הלולאה מחייב תשומת לב רבה. מבני לולאה שוניס בודקים באופן שונה את תנאי הסיוס, ולכן יש לבדוק תחילה איך הלולאה נוהגת. כמו כן, בלולאה מסוג זס= ישנו ערך הגדלה שצריך להתחשב בו. הכלל אומר שערך המונה בסיוס הלולאה יהיה כערכו המקסימלי של הטווח + ערך ההגדלה (אס ערכו האחרון היה שווה לערך המקסימלי). לדוגמה: 2 5660 9 70 1 = 1 שעסע 1 6תנעפ 1 6אפא הלולאה תתבצע עס הערכים 1, 3, 5, 7, 9, תגדל ב-2 כמו בכל מחזור של הלולאה, וכאשר ערך המונה יהיה 11 הלולאה תסתייס והתוכנית תמשיך למשפט הבא. דוגמה כאשר ערך המונה אינו מקבל את הערך המקסימלי של הטווח: 3 50660 10 20 0 = 1 עסץע 1 %תג1סק 1 שאפא במקרה זה יודפסו הערכיס הבאים: 0, 3, 6, 9, וכשמונה הלולאה יגיע ל-12 הלולאה תסתייס והתוכנית תמשיך במשפט הבא. במקרה זה, הערך האחרון של המונה היה 9 (ולא הערך המקסימלי), לכן ערך ההגדלה נוסף לערך האחרון של המונה, ולא לערכו המקסימלי. במקרה וה ערך המונה לאחר סיוס הלולאה יהיה 12 (12=9+3). הלולאה +א6אז..ח36= וס לולאה זו דומה ללולאה )+א8ז..זס=. גס בלולאה זו מתבצע משפט, או שמתבצעים כמה משפטים, מספר מוגדר של פעמים. השוני בין הלולאות הוא, שבמקוס מונה הקובע את מספר החזרות של הלולאה, אנו רואיס שבלולאה +א6א..₪86 זס= הלולאה חוזרת על עצמה כמספר האיבריס שבאוסף (ח601!6000) או במערך שהוגדר. היתרון בלולאה זו הוא בכך שניתן להפעיל אותה מבלי לדעת מראש כמה פעמים עליה להתבצע (בניגוד ללולאה )א8ז..זס] בה צריך להגדיר במדויק את טווח הערכיס של מונה הלולאה). 2 5 6ם/. - ערכת כלים תחביר הלולאה הוא : קטסעף מ1 6מ616(6 ₪802 סש 5 מסותם 68 5 15 סאפא בדוגמה הבאה מדפיסיס את שמות כל הטבלאות שבמסד הנתונים ססחח.סווסום : 86 8₪8בג2 60 תנק %6ת1גע6פ פת2 116ע562 תנכת "סמבת.110מ1ת" 8 ()12כ22ט00 = 5628116 566 650 = 006228%80856 )5%29116( ()00.780162618 ם1 71801626 תבסאם צסץע סתהא. 728016065 סםתנ1עק 5 סמסאפא שיס לב, שכאשר הלולאה מחפשת במערך או באוסף, הארגומנט +760ח6!6 חייב להיות מסוג +ָחְּוזְהץ. בלולאה זו איןו אפשרות להשתמש במשתנה מסוג מבנה (60ח0681-ז59 6.. יציאה מוקדמת מלולאה לפעמים נרצה לצאת מהלולאה למרות שהיא לא סיימה עדיין את מספר החזרות הקצובות מראש. בדרך כלל יהיה תנאי כלשהו בתוך הלולאה, שעס קיומו (או אי-קיומו) הלולאה תפסיק לפעול, כמו למשל, ויהוי מצב חריג, או מצב שגיאה. יציאה ישירה מהלולאה נעשית באמצעות המשפט )ואם. המשפט +ואם תקף בלולאה ספ וגס בלולאת זס=. לדוגמה שימוש בלולאה וסת=, עס הפקודה זסת 11אם : 0 0 1 = 1 שסש ץעסץת 1%אם מפםמץך 3 < 1 1% 1 6אפא באותו אופן נשתמש בלולאה ססם עס הפקודה ספ +ואם. לדוגמה, 0 > 1 116מח סם סע 16אם תסםמץל 3 < ך +ך ד = 0 שים לב, יציאה מלולאה באמצעות הפקודה +א= היא ישירה. הלולאה אינה ממשיכה לבצע את שורות הקוד המופיעות לאחר הפקודה הזו. התוכנית מדלגת לסוף הלולאה וממשיכה במשפט שאחריה. דוגמה זו מציגה שוב סיום של לולאה על פי תנאי: 0 90 1 = 1 עסת עשסץ 1%אם מספםץך 3 < ך +ך "ס611א" 6םמג1צק 1 סאפא כל עוד ערכי המונה קטניס מ-3 הלולאה תדפיס את המילה ייסוו6'י. כאשר מונה הלולאה יקבל את הערך 4 והתנאי לא יתקיים, הלולאה תיפסק מייד והתוכנית לא פרק 9: לולאות 163 תבצע את פקודת ההדפסה "סו61" זחוזםש. כך, המילה "סו|₪48" תודפס 3 פעמים בלבד (עבור הערכים 1, 2, 3 של המונה). תרגול 1 תן למשתמש לבחור מספר, והצג הודעה אס המספר שהקיש הוא ראשוני או לא. 2 צור את הטופס הבא : [חוזס] .₪ -- בלחיצה על 5181 הלחצנים 6% 1 ו-+ח0וח ינועו וה לקראת זה, וכאשר הם ייפגשו תוצג המילה ייבוס!יי בתיבת הטקסט. 4 6ם/ - ערכת כלים 0: שגרות שיגרה (6חטסזט5) היא קטע קוד בעל שם. כאשר נרצה שהתוכנית תבצע את שורות הקוד שבתוך השיגרה, נקרא לשיגרה בשמה. התוכנית תפנה לשיגרה שוהו שמה ותבצע את שורות הקוד הכתובות בה. מבנה השיגרה הצהרה על שיגרה נעשית באופן הבא: () 6ות8תסטט5 סגופ 5 תסות0ם 58 5 פטפ בתם המילה 508 מסמלת את תחילת השיגרה, אחריה יבוא שם השיגרה וצמוד לו - סוגריים. בתוך השיגרה נכתבות שורות הקוד הרצויות, והשיגרה מסתיימת במיליס 6 חם. השיגרה הבאה, מדפיסה את המשפט י'פָחוחזסו סססשיי בכל פעס שהיא נקראת : ()0ם1ם6000%002 סגופ "סת1תעסא 60086" סםתנ1עק פופ םם מעתה, בכל פעס שנרצה להדפיס את המשפט ייפָחוחזסו/! סססטיי, פשוט נקרא לשיגרה והיא תדפיס את המשפט. קריאה לשיגרה נעשית באמצעות ההוראה |681, הנה כך: סתהתסט5 6811 לדוגמה: אתנתעסאפססס 0811 אחרי שהשיגרה מסיימת לבצע את שורות הקוד שבתוכה, התוכנית חוזרת אל שורת הקוד שקראה לשיגרה וממשיכה מיד אחריה. השיגרה יכולה להכיל בתוכה כל משפט חוקי בשפת ויז'ואל בייסיק, כמו למשל פקודות השמה, הצהרה על משתנים, לולאות, מבני החלטה ואף קריאה לשיגרה אחרת (או לעצמה במקריסם מסוימים), ועוד. פרק 10: שגרות 165 תכנות מודולרי תכנות באמצעות שגרות מחלק למעשה את שורות הקוד למספר קבוצות, או שגרות, במקום להציג אותן ברצף. תכנות וה נקרא בשס תכנות מודולרי (זה|טססו בָחוההוה8זפָסזק). מתכנתים מקצועיים נוהגים לחלק את שורות הקוד לשגרות ולפונקציות, כאשר כל אחת מהן עוסקת ביחידת עיבוד מוגדרת ופשוטה. מדוע לחלק את שורות הקוד באופן מודולרי, ולא לכתוב את כל התוכנית ברצף אחד ארוך: לשאלה זו יש תשובות רבות, והשתייס העיקריות הן: 1 שורות קוד המחולקות לשגרות ופונקציות הופכות את התוכנית לקריאה וברורה יותר. לאחר חודש מילואיס אחד שלא נגענו בתוכנית ונצטרך לשחזר לעצמנו מה כתבנו (במקרה הטוב, ובמקרה הגרוע מה כתבו אחריס), לא נבין מה כתוב ביימגילתיי הקוד הארוכה הזו. לעומת זאת, כאשר התוכנית מחולקת לפונקציות ולשגרות שלכל אחת מהן תפקיד מוגדר משלה (בנוסף לתיעוד קצר על כל שיגרה ופונקציה), קל ומהיר יותר יהיה להתמצא בשורות קוד אלו ולבצע בהן שינוייס. . יעילות התכנות המודולרי נובעת מאופן המעקב אחרי ביצוע התוכנית. לעיתיס (שאינן רחוקות) קורה שמתגלה ייבאגיי בתוכנית. במקרה כזה, אס שורות הקוד כתובות ברצף אחד ארוך, יהיה קשה מאוד לעקוב אחר הטעות ולמצוא את מקור התקלה. לעומת ואת, כאשר התוכנית מחולקת לשגרות וכל שיגרה אחראית לפעולה מסוימת בתוכנית, קל יהיה בהתאס למיקוס הטעות בתוכנית, להצביע על קטע הקוד (פונקציה, או שיגרה) אשר גרמו לייבאגיי. במקרה זה נתמקד בפתרון בעיה שמתגלית בשורות קוד של פונקציה או של שיגרה בלבד, ולא בכל שורות הקוד שבתוכנית. פרמטרים וארגומנטים נחזור ליישיגרה'י. השיגרה מבצעת את שורות הקוד שבה בכל פעס שקוראיס לה. שורות אלו קבועות, ובכל פעס שנקרא לפונקציה היא תבצע בדיוק את אותן שורות. אולם, השיגרה יכולה לקבל פרמטרים חיצוניים שיכולים להיות שוניס בכל קריאה לשיגרה, ועל ידי כך לשנות את תוצאת השיגרה (שורות הקוד כמובן שאינן משתנות). אס נניח, לדוגמה, שהשיגרה מסכמת את שני הפרמטריס שקיבלה ומדפיסה את סכומס, הרי שכאשר הפרמטריס שונים, גס התוצאה תהיה שונה. כאשר מכריזים על שיגרה צריך לפרט את הפרמטרים שתקבל, כמות וסוג: (06ץ0858%5 28 328(6662ס ,086085706 28 מס6ם6סתַבע82ס) סתהתסט5 סמגופ 16 5 מסות 0 558 פופ םם 6 - ערכת כלים לדוגמה, (66062ת1 5ג2 2תטא ,6662סת1 פת2 1תטא)תט5 סטפ 2תטא + 1תטא 6ם1צק סטפ מ בדוגמת הכרזה זו, השיגרה וזט5 אמורה מקבלת שני פרמטרים ולהדפיס את סכומם. רשימת הפרמטרים כוללת את שם הפרמטר ואת סוג הפרמטר. הפרמטרים שהשיגרה מקבלת יכוליס להיות משתניס מכל סוג שהוא, ואין הגבלה במספר הפרמטרים. הקריאה לשיגרה שמקבלת פרמטריס תהיה דומה לקריאה לשיגרה ללא פרמטרים. כאשר מוגדריס פרמטרים לשיגרה, צריך לכלול אותס כאשר קוראים לשיגרה - כשמפעילים אותה, בצירוף רשימת ארגומנטים הנשלחיס לפונקציה, על פי הפירוט בתבנית הפונקציה, ואשר השיגרה מצפה לקבל. לדוגמה: (תטאצא, 7)תט5 60811 שיס לב שברשימת הארגומנטים נכלל משתנה. ניתן לשלוח כארגומנט ערכים שונים: קבוע, משתנה וגם ביטוי. ההבדל בין ארגומנטים לפרמטרים הוא: > ארגומנטים הס ערכים המועברים לשיגרה בוּמן הקריאה לשיגרה. * פרמטרים הס הערכים שהשיגרה מצפה לקבל, על פי ההכרזה שלה. שיס לב שרשימת הארגומנטיס שנמסרים לשיגרה בומן שקוראיס לה נמצאת בתוך סוגרייס. ניתן לוותר על סוגרייס אלה, אולס במקרה זה יש להשמיט את ההוראה [ו63. התוצאה והה לקריאה בדוגמה הקודמת: תואעץא ,7 מתגופ חשוב לציין שרשימת הארגומנטיס המועברים לשיגרה חייבת להיות זהה לרשימת הפרמטרים שהיא מצפה לקבל (חוצ מחריגות מסוימות עליהן נעמוד בהמשך). העברת מספר ארגומנטיס קטן או גדול יותר מהדרוש, תגרוס לשגיאה (תרשים 10.1). 356 [הט5ו/ ])ס5סזסוו :זז 6|וקחס = !/ |החופווקס )סח ]השוחווםז ה תרשים 10.1 פרק 10: שגרות 167 באותה מידה, סדר הארגומנטיס חייב להיות זהה לסדר הפרמטרים. לדוגמה, (תטאצא, 7)תט5 0811 (66062ת1 58ג2 2תטא ,6662סת1 פת2 1תטא)תט5 סטפ 2תטא ‏ + 1תטא 6ם1צק סופ םש הפרמטר 1חטא יקבל את הערך 7, והפרמטר 2חטא יקבל את הערך המשתנה וחטאעוש. מלבד הסדר, חשוב לשמור גם על תאימות בסוגי המשתנים שברשימת הארגומנטיס לבין רשימת הפרמטרים. אס לדוגמה, השיגרה מצפה לקבל פרמטר ראשון מסוג זו ופרמטר שני מסוג פַחוז51, אז גם רשימת הארגומנטיס חייבת לכלול ארגומנט ראשון מסוג זסחָסזח! וארגומנט שני מסוג פַחוז51. הנה דוגמה: טעות' ("צְתתהת" ,7)תט5 0811 (ע66062ת1 8ג2 2תטא ,6662סת1 25 1תטא)תט5 סטפ 2תטא + 1תטא שתנעפ פופ םש הקריאה לשיגרה תגרוס לשגיאה (תרשים 10.2) מכיון שאין תאימות בין רשימת הפרמטרים לבין רשימת הארגומנטיס. הפרמטר השני הוא מסוג ז1606ח!, והארגומנט השני הנשלח לפונקציה הוא מסוג 8חוז51. ב ה סייו 6רחו:-חט₪ ח6ה וח5ורח 6קעד | שוחו חס תרשים 10.2 העברת ארגומנטיס לשיגרה יכולה להיעשות בשתי דרכים: 8381 ו- |3עץ. וע שליחת ארגומנטיס |3/₪ (יילפי ערך''י) פירושה, שערך הארגומנט נשלח לשיגרה ולא הארגומנט עצמו. משמעות הדבר היא שכאשר השיגרה משנה את ערך הארגומנט בשיגרה או בפונקציה, ערך הארגומנט המקורי אינו מושפע כתוצאה מכך והוא שומר על ערכו, כי השיגרה המקבלת קולטת את הערך במשתנה פרטי שלה. לדוגמה, 8 6ם/, - ערכת כלים ()מנ1נאא מטפ 106% פ3ג צסם1 ,1266062 פת אסם1 תנכת 3 = צסם1 :7 = אםסם1 (צטם1 ,אפףת1)ס8חפ5 0811 אפתג1 שסתנעק צסת1ג שתנעק פטפ בתם (560862ת1 28 2תטא 27781 ,660062ם1 פת 1תטא 81עע2) קה8חא5 סטפ 62סססםת1 פג2 ק61ת6ם1 תנכת 1תטא = ס%₪61ם1 2תטא = 1תטגטא 0ק61ת6ם1 = 2תטא סמט5 תמ בשיגרה חו8/ מוצהריס המשתנים >שחו ו- שחו ומאותחליס בערכים 7 ו- 3 בהתאמה. משתניס אלה נשלחיםס כארגומנטיס לשיגרה סףּאו5. הפרמטרים 1וחטצז ו- 2חטצו מקבליס את ערכי הארגומנטים >שחו ו- שחו בהתאמה. השיגרה ְ8א5 מחליפה בעזרת משתנה העצזר 146]0חו בין ערכי המשתניס 1וחטא ו- 2וחטאז. בכניסה לשיגרה היו ערכי המשתניסם 1 וטא ו- 2חחטא 7 ו- 3 בהתאמה, ובסיוס השיגרה ערך 1וחטא הוא 3 וערך 2חטא הוא 7. כאשר השיגרה מסיימת את ביצוע שורות הקוד שבתוכה, היא חוזרת לשורת הקוד שאחרי השורה שממנה היא נקראה. בדוגמה זו, התוכנית תחזור לשורה אטחו זחוזםש. מכיון שהארגומנטיס הועברו |%3ץ8, רק ערכי המשתניס הועברו לשיגרה ולא המשתניס עצמם. החלפת ערכי הפרמטרים בפונקציה לא השפיעה על המשתניס אחו ו-ץזחו. משתניס אלה שמרו על ערכס. כשבשיגרה חו9!/] מתבצעות שורות ההדפסה של המשתנים >שחו ו- חו, נראה שהס שמרו על ערכס המקורי (תרשים 10.3). תרשים 10.3 פרק 10: שגרות 169 אע שליחת ארגומנטיס 586% (י'לפי ייחוס''), פירושה העברת כתובת הזיכרון של הארגומנטים אל השיגרה. במיליס אחרות, אנו שולחיס למעשה את המשתנים עצמם, ולכן, כל שינוי בערך הפרמטרים שייעשה בשיגרה המקבלת אותם יגרוס לכך שערכם המקורי יאבד. נשתמש בדוגמה הקודמת, אך הפעם נעביר את הארגומנטים זפחע2. שיס לב שהעברת ארגומנטיס בדרך זו היא ברירת המחדל, ועל כן אין צורך לציין במפורש 61 עם'י: ()מנ1נאא מטפ %ע666סת1 פג צסם1 ,12660602 פב אסם1 תנכת 3 = צסם1 :7 = אסם1 (צטם1 ,א6ףת1)ס8ח5 0811 אפתג1 שסתנעק צסתמ1 6תנעק פטפ בתם (%6062ם1 285 2תטא ,66002מם1 פת 1תטא +6תּע2) 58 סטפ 6062ססת1 פת ק61תפם1 תנכת 1תטא = ס%₪61ם1 2תטא = 1תטגטא 16610 = 2תטא סמט5 תמ במקרה זה, מכיון שהארגומנטיס נשלחו /36שם2, שינוי ערכי הפרמטריס בשיגרה כמוה כהחלפת ערכי הארגומנטיס עצמס. כאשר התוכנית תתזור אל השיגרה חוףפּ!/ בסיוס השיגרה כ8/ש5 ותדפיס את ערכי המשתנים א%חו ו-ץ)חו, נראה שערכי המשתניס הוחלפו. ארגומנט רשות רשימת הארגומנטים שהשיגרה מקבלת חייבת להיות זהה לרשימת הפרמטרים מבחינת מספרס וסוגם. אולס, ניתן לקבוע פרמטריס, שלא חייבים לשלוח אותס כשקוראיסם לשיגרה. לפעמיס נרצה לקרוא לשיגרה עס כל הפרמטרים, ולפעמיס - עס חלק מהס בלבד. במקרה זה עלינו לצייו את הפרמטריס שאינס חייבים להיכלל ברשימת הארגומנטים המועבריס לשיגרה כפרמטרי רשות, פרמטרים אופציונליים. אין חובה להעביר לשיגרה ארגומנט, המייצג פרמטר רשות. במקרה וה רשימת הארגומנטיס תהיה קצרה מרשימת הפרמטרים שהשיגרה מצפה לה. כדי שפרמטר יהיה רשות יש להכריז עליו ברשימת הפרמטרים כ-|000008, כמו בדוגמה זו: (ע6606ת1 28 2תטא 81ת10סק0 ,₪60602ם1 58ג 1תטא 610281ק0)תט5 סטפ 2תטם + 1תטא 6םנ1צק ספטפ סמ 0 66ם/. - ערכת כלים בדוגמה זו, שני הפרמטרים שהשיגרה מצפה לקבל הס רשות, אך אין חובה שכל הפרמטרים יהיו רשות. ניתן להצהיר רק על חלקס כפרמטרי רשות, כמו בדוגמה זו: (ע66006ת1 8ת 2תטא 0610281 ,6662סת1 פת 1תטא)תט5 סטפ 2תטת + 1תטא שתנעצפ פופ םם בדוגמה זו, הפרמטר הראשון הוא חובה, והשני - רשות. אס החלטנו בקריאה לפונקציה לא להעביר ארגומנט עבור פרמטר רשות, השיגרה תתייחס לארגומנט המייצג פרמטר רשות כמשתנה מסוג +ח8וז8/ שמכיל ערך ע)סוח=. הפונקציה 8ַחו55ו5₪ו אם השיגרה מכילה ארגומנט רשות, כיצד נדע אס פרמטר זה התקבל ויש להתייחס אליו! הפונקציה 0ח!ו158155 מסייעת לבדוק אס הארגומנט נשלת או לא נשלח. לדוגמה, (0ת1ע5% 25 תטא 81ת610ק0)תטאפמתנ1עק סופ תפתץ? (תטא) 08ם15%15981 ססא +1 מטא 6םת1צק 5 תם ספטפ סמ בדוגמה זו, השיגרה ()חטא)חוזש מקבלת פרמטר רשות. השיגרה תדפיס אותו אס ורק אס נשלח לה ארגומנט; אס לא מועבר ארגומנט, השיגרה לא תעשה דבר. עכשיו נסה לשנות את סוג הפרמטר. רשוס ז1608ח! במקוס 8ַחו5%. מה קורה עכשיו כשאתה מפעיל את הפונקציה החטאזחוזק ולא שולח לה פרמטר!ז הפתרון לכך בסעיף הבא. ערך ברירת מחדל הפונקציה 88ח15111551 מאפשרת להתמודד עס המצב בו לא נשלח ארגומנט אופציונלי לשיגרה. במקוס להשתמש בערך ע0וח= נוכל להתעלס ממנו, אס נדע שהוא חסר. אפשרות נוספת היא להתייחס בכל מצב לארגומנט הרשות כאילו הוא נשלח, ולקבוע לו ערך ברירת מחדל אשר יהיה ערך הארגומנט אס לא הועבר לשיגרה. במצב זה, בו נקבע ערך ברירת מחדל, ערך זה יהיה ערך הארגומנט רק במידה והוא לא הועבר. אס הארגומנט הועבר, ערך זה הוא זה שהשיגרה תקבל, לדוגמה: (613 = 166062 פת2 תטא 81ת610ק0)תטאפמתנ1לק סופ תוא %םמ1לק פופ םם בדוגמה זו, אם יישלח ארגומנט לשיגרה ()וחטאזחוזש היא תדפיס את ערכו, במידה ולא נמסר ארגומנט, הערך שיודפס יהיה 613 (תרשים 10.4). פרק 10: שגרות ‏ 171 |<1ם) -. [חזזס-] .₪ :6 הי החוכ ור תרשים 10.4 רשימת הארגומנטיס חייבת להיות תואמת לרשימת הפרמטריסם. אס השיגרה מצפה לקבל קודס משתנה מסוג 5108 ואחר כך משתנה מסוג ז1608ח!, זהו הסדר שתייב להיות גם ברשימת הארגומנטים. אולס, ניתן לשנות סדר זה על ידי ציון שס הפרמטר ברשימת הארגומנטיס ואת ערכו. במקרה זה אין חובה לשמור על סדר סוגי המשתנים, אך חייביס לשלוח את כל הארגומנטים, אלא אס חלקם רשות. לדוגמה, (סתסת 28 12 ,0ם5621 28 סתהַא) ב0ס625קע סטפ ע1 ;6תהא %ם1צק פופ םם () מנ1נאא מטפ "צתתאכ"=:6תהא ,12:=12345 םספעצסק סמט5 תמ בדוגמה זו, למרות שברשימת הפרמטריס המשתנה פוח8] קודם למשתנה ס!, בכל זאת על ידי ציוו שמס וערכם, אפשר לכתוב בסדר שונה את הארגומנטיס המועבריס לשיגרה. שים לב שלאופרטור השוויון נוספו נקודתיים ( =:). מה בין שיגרה לפונקציה כל הכללים החלים על השיגרה חלים גס על הפונקציה, החל ממבנה הפונקציה, העברת ארגומנטיס וקבלת פרמטרים, ארגומנטי רשות (אופציונליים) ועוד. ההבדל התחבירי היחיד הוא, שאת מקוס מילת המפתח סט5 המגדירה שיגרה, מחליפה המילה חסוז+סחטת. לדוגמה: () תס1נפסתטעץא מסנססתגוץ מסנ6>סתטת בת על אף הדמיון הרב, יש הבדל אחד עקרוני וחשוב בין שיגרה לפונקציה והוא, היכולת של הפונקציה להחזיר ערך. כדי לציין את הערך שיוחזר על ידי הפונקציה, יש לציין את שסם הפונקציה ואת הערך המוחזר. 2 8 6ם/. - ערכת כלים מבנה הפונקציה: 6 פ8ג2 () פתהתתס661םט+ מסנססתגוץ 58 6ו81טתע2ט26% = ס6תהתתסנ1נשסתט1 מסנ6>סתטת םח לדוגמה: 2 פב (668602ם1 28 2תטא ,1266062 25 1תטא)תטפ תסנססםתטע 166% 25 תטפפם1 תנק 2תטא + 1תטא = תג65ם1 תטפסםת1 = תטפ תסנססתטע התמ הערך המוחזר של הפונקציה חוזר לשיגרה או לפונקציה שקראה לה. לקבלת ערך נדרש משתנה אשר יאחסן את הערך המוחזר על ידי הפונקציה. לדוגמה: ()מנ1נאא מטפ 166% פב 269016 תנקת (5 ,7)תט5 = 16גגופ6ת2 %טפפת 6םת1שק מו5 םת בדוגמה קוראים לפונקציה חחט5 עס שני ארגומנטים 7, 5. הפונקציה מקבלת ערכים אלה, מסכמת אותם ומתחזירה את סכומס. הערך המוחזר מוצב (בפקודת השמה) לתוך המשתנה +/3650. סוג הערך המוחזר חייב להיות והה לסוג המוצהר בשורת הפונקציה. אם לא צוין סוג ערך המוחזר, לדוגמח: (%6062ם1 25 2תטא ,1660862 25 1תטא)תטפ מתסנססתגוץ 166062 28 תטפסם1 תנכת 2תטא + 1תטא = תט65ם1 תטפסת1 = תטפ מסנ6סתטת םח במקרה זה, הערך המוחזר יהיה מסוג +חהז8/. קריאה לפונקציה וחט5 באופן הבא אינו טעות : ()מנ1נאא מטפ (5 ,7)תט5 60811 מו5 םש אין חובה לקלוט את הערך המותחזר ולהשתמש בו. הדבר היחיד שיש לשים לב אליו הוא שהמשתנה הקולט את הערך המוחזר יהיה מאותו סוג. בדוגמה זו, בה אין משתמשים בערך המוחזר, אין משמעות מיוחדת לקריאה לפונקציה, אך זו אינה טעות. פרק 10: שגרות 173 סוגי שגרות וטווח הכרה יש שלושה סוגי שגרות ופונקציות הנבדלות בטווח ההכרה שלהם. טווח הכרה של פונקציה הוא הטווח בו הפונקציה 'מוכרת'י. במילים אחרות, זהו הטווח בו ניתן לקרוא לפונקציה או לשיגרה. שלושת סוגי השגרות / הפונקציות הס: 1. שיגרה ברמת האובייקט. 2. שיגרה ברמת הטופס. 3. שיגרה ברמת המודול. בסעיפים הבאיס נתייחס למונח יישיגרה'י, אם כי הדבריס תקפים באותה מידה גס לייפונקציה ". שיגרה ברמת האובייקט כל אובייקט יודע להגיב לאירועיס שוניס החליסם עליו. רשימת האירועיס שהאובייקט יודע להגיב להס מוגדרת מראש על ידי ויז'ואל בייסיק. לחיצה על פקד מסוג לחצן היא למעשה הפעלת האירוע א0116 על אותו לחצן. כשהפקד א0ם)א6 ד מקבל מיקוד (פוקוס) וניתן לכתוב בו, מפעיל למעשה את האירוע 001-0005, וכן הלאה. טבלה 10.1 מסכמת את האירועים הנפוצים, ואת הפעולות הגורמת להתרחשותס. טבלה 10.1 וס 5 שהפקד מקבל פוקוס (מוקד) 4 6ם/. - ערכת כלים אובדן פוקוס 58 | בומן טעינת טופט בוּמן שחרור הטופס מהציכרון ו בומן שהטופס משנה את גודלו בוּמן שתוכן הפקד משתנה כאשר יש אירוע הוא קורא לשיגרה. לדוגמה, לחיצה בעכבר (אסו|0) על הלחצן 86 תגרוס להצהרת השיגרה הבאה: ()01108 00601086 סג50 21866 פופ םם תפקידנו כמתכנתיס לכתוב את שורות הקוד עבור הפעולות שנרצה לבצע בעת התרחשות האירוע. נניח שלחיצה על הלחצן 6002!056 תסיים את התוכנית; בשיגרה אוו של הפקד נרשוס את מילת המפתח 0ח= המסיימת את התוכנית. לדוגמה: ()א0110 00001086 סט8 8%6ע21ק סתם פטפ בתם שיגרה ברמת האובייקט, אס כן, מוכרת רק לאותו אובייקט ולאירוע המסוים שחל עליו. השיגרה בדוגמה הקודמת תוכר רק כאשר נלחץ על הלחצן 67061056. שים לב, כי ניתן לקרוא לשיגרה זו משיגרה אחרת, ולאו דווקא על ידי פעולת הלחיצה. במקרה זה הפעולה שתתבצע תהיה בדיוק אותה פעולה אילו היינו לוחציס על הלחצן. לדוגמה: ()%ת6ט0110%₪0 סגופ 8% 000010855 ספטפ סמ שיגרה ברמת הטופס שיגרה ברמת הטופס נמצאת בחלק ההצהרתי של הטופס (חסו60|3791 |678ח06). שיגרה או פונקציה ברמת הטופס מוכרים לכל האובייקטיס באותו טופס. הקריאה לשיגרה או לפונקציה תהיה רגילה, היינו, ביוו שס הפונקציה עס רשימת הארגומנטיס והמשפט ||68, אס רשימת הארגומנטיס מופיעה בסוגרייס. מה בדבר אובייקטים, שגרות ופונקציות שבטפסים אחרים, האס גס הס יכולים לקרוא לפונקציה או לשיגרה ברמת הטופס! יש שתי אפשרויות להצהיר על פונקציה או שיגרה ברמת הטופס: 6ו|סטום ו-סז8טוזם. 6ו!|שטק ההצהרה סוו|פטם גורמת שטווח ההכרה של שיגרה או פונקציה יהיה פרוש על כלל האובייקטיס, הפונקציות והשגרות שבכל הטפסים בפרויקט. לדוגמה: פרק 10: שגרות 175 (ע6606ת1 25 תטא)תגאפסתנ1צק סט5 116טגק תטא 6סםמ1עק סטפ סמ במקרה זה נוכל לקרוא לשיגרה לא רק מתוך הטופס שבה הוגדר, אלא גם מטופס אחר. שיס לב, כי השיגרה מדפיסה את ערך המשתנה וחטא על גבי הטופס. כאשר תיקרא השיגרה מטופס אחר, ערך המשתנה וחטא יודפס על גבי הטופס בו השיגרה מוצהרת! מכיון שמטופס זה מתבצעת השיגרה. הקריאה לשיגרה מטופס אחר כאשר מוגדרת השיגרה כ-סו!|פט₪ ניתן לקרוא לה מאובייקט, שיגרה או פונקציה שבטופס עצמו, או לחילופין מטופס אחר. כאשר הקריאה נעשית מהטופס עצמו הקריאה הרגילה היא: ()0110% סתנפפסתס סמט5 866ע1תק (7)תטא6ףת1עע 0811 ספטפ בסתם אס הקריאה לשיגרה נעשית מטופס אחר, יש לצייןו לפני שס השיגרה את שס הטופס בו היא מוגדרת. לדוגמה, ()0110% 6תנפפסתס סט5 866ע1תק (7)תטוא%תנ1צכ. תנאאת-+ ‏ 0811 פופ םם 6הוזק אפשרות שנייה היא להצהיר על השיגרה או הפונקציה כ-6ּצוזוק. הצהרה על שיגרה כ-816צו₪ מצמצמת את טווח ההכרה שלה לטופס שבו הוגדרה בלבד. ניסיון לקרוא לפונקציה 6ז8עוז₪ מטופס אחר יגרוס לשגיאה (תרשים 10.5). הפונקציה או השיגרה במקרה זה מוכרים אך ורק לאובייקטים, הפונקציות והשגרות בטופס בו הוגדרה בלבד. ₪356 [הט5ו/ ])ס5סזסו! סז 6|וקזס = / בפחו]0 וס הפווסחוו= זס פטו5 תרשים 10.5 אס הפונקציה או השיגרה הוגדרו ללא ציון מיוחד של 6יבּצוזק או 6ו!פטם, ברירת המחדל של ויז'ואל בייסיק היא סוופטם. 6 6ם/, - ערכת כלים שיגרה ברמת המודול טווח ההכרה של שיגרה או פונקציה ברמת המודול תלויה בסוג ההצהרה. הצהרה על השיגרה כ- 6א8צ₪1 תגרוס לצמצוס טווח ההכרה, כך שהשיגרה או הפונקציה יוכרו רק על ידי שגרות ופונקציות במודול שבו הוגדרה. לעומת זאת, הצהרה על שיגרה או פונקציה כ-16!פטק תגרוס להרחבת טווח ההכרה לכלל המודולים והטפסיס בפרויקט וניתן יהיה לפנות אליהן מכל מקוס בתוכנית. הקריאה לשיגרה או לפונקציה זהה בשני המקריס (6ַא8ע₪11 או סו|פטש). אין צורך לציין לפני שס הפונקציה את שס המודול שבו הוגדרה. אין לקרוא לשתי פונקציות או לשתי שגרות מסוג 6ו|פט₪ באותו שם, גם כשהן מוכרזות במודוליס שונים. מכיון שהן מוכרות לכל הפרויקט, ויז'ואל בייסיק לא תדע למי מהן לפנות. במקרה כזה התוכנית תופסק עם הודעת שגיאה (תרשים 10.6). ₪356 [הט5ו/ ])ס5סזסו! זז !וסוס / פו5ע4 :6160160 שחחבח פגוסגוםופות ה תרשים 10.6 עס ואת, כאשר יש שתי שגרות באותו שסם, אחת 846עוז₪ והשנייה 6ו|פטום, קריאה לשיגרה מחוץ למודול שבו הוצהרה תגרוס להפעלת זו המוגדרת כ-סו|סטם. קריאה לשיגרה מתוך המודול שבו הוצהרה, תקרא לשיגרה של אותו מודול. כלומר, יש עדיפות לשיגרה 816עוזש. המשפט זוא- את הפקודה א הכרנו כאשר עסקנו בלולאות. פקודה זו גורמת ליציאה מוקדמת וישירה מלולאה. תפקיד והה יש לפקודה זו בשיגרה או בפונקציה. הפקודה 5 וא= או חסו)סחשת +אם גורמת ליציאה מיידית מהשיגרה או הפונקציה. לדוגמה, (66062ת1 25 תטא) תטאפףמת1עתק סופ מפטפ 16א₪ תספםך 5 < תטא +1 תטא %ם1לק פופ םם בדוגמה זו, אס ערך הפרמטר וחטא גדול מ-5 התוכנית יוצאת מייד מהשיגרה, ואינה ממשיכה בה. במקרה זה, הפקודה חחטא +חוז לא תתבצע. הבה נעיין בפונקציה זו: פרק 10: שגרות 177 62 פב (668602ם1 8ב 2תטא ,1266062 25 1תטא)תטפ תסנפסםתטע 166% פב תטפפם1 תנקת 2תטא + 1תטא = תג65ם1 מסםתץ 100 < תטפסם1 +1 0 + תטפפםת1 = תט5 6 תטפפת1 = תפ 5 תס מטפ6סםת1 6 " :18 ת0ט5 6םל2" אס2סטס5א מסנ6>סתטת בםם כאשר סכוס המשתנים 1וחטח ו- 2חוטח גדול מ-100, הערך המוחזר של הפונקציה הוא הסכוס + 10. כאשר הסכוס קטן או שווה ל-100, הפונקציה מחזירה את הערך המדויק של הסכום. בכל מקרה מתבצעת השורה האחרונה של הפונקציה שבו מוצגת הודעה למשתמש על ערך הסכוס. כלומר, השורה בפונקציה שבה מוחזר הערך המותחזר של הפונקציה אינה גורמת ליציאה מהפונקציה, והיא ממשיכה כרגיל עד סופה. אס נרצה לצאת מפונקציה אחרי שהגדרנו את הערך המוחזר נשתמש בפקודה +א=. לדוגמה: 2 פב (668602ם1 8ב 2תטא ,1266062 25 1תטא)תטפ5 תסנפסםתטע 166% פ2 תטפפם1 תנקת 2תטא + 1תטא = תטפ6ם1 מפתץ 100 < תטפסםת1 +ך 0 + תטפסם1 = תטפ תסנפסתטת 16אם 16 תטפפםת1 = תגו5 + תש מטפסת1 6 " :18 ת0ט5 6םל2" א0ס2טס5א מסנ6>סתטת בת אס סכוס המשתניס 1וחטח ו- 2חחטח גדול מ- 100, הפונקציה תחזיר את ערך סכוס המשתניםס (המשתנה וחטפזחו) + 10. מייד לאחר מכן הפונקציה תסתיים. השורה האחרונה של הפונקציה לא תתבצע. רק במקרה בו המשתנה וחטפזחו קטן או שווה ל- 0, הפונקציה תחזיר כערך את ערך המשתנה וחטפזחו ותציג את ההודעה שבשורה האחרונה בפונקציה. תרגול 1. קלוט מספר מהמשתמש ובעורת פונקציה קבע אס המספר הוא ראשוני או לא. אם כן הפונקציה תחזיר ערך 6טז1, ו-8/56= במידה ולא. 2 כתוב שיגרה אשר תקלוט מחרוזת מהמשתמש ותציג אותה בסדר הפוך. לדוגמה, מהמחרוזת יישלוס'י תתקבל התוצאה ייסולשיי. 8 66ם/. - ערכת כלים 1: קובצים כשתוכנית פועלת היא זקוקה בדרך כלל לנתונים, אלא אס היא מפצחת נוסחה מתמטית למשל, שקבועה בה מראש. הנתונים מוזנים לתוכנית על ידי המשתמש, במקלדת למשל, או שהתוכנית קוראת אותס ממאגרי הנתוניס שלה שנמצאים בהתקני אחסון מגנטייס כמו למשל הדיסק הקשיח או התקליטור, והיא יכולה לקלוט אותס גס בתקשורת. כאשר התוכנית מפיקה תוצאות או מעדכנת נתונים, היא עושה ואת בתצוגה, בדוחות מודפסים, שולחת בתקשורת ולרוב - שומרת אותס בהתקני אחסנה חיצוניים, ובעיקר, בדיסק הקשיח. למותר לציין שאי אפשר לשמור את הנתונים בזיכרון (/51), אשר מוגבל בגודלו ותלוי באספקת חשמל לאחזקת הנתונים שבו. התקני האחסנה החיצונייסם אינס תלוייס באספקת חשמל וכמות הנתונים שניתן לשמור בהם גדולה מאוד. למדנו אס כן, שמאגר הנתוניס של מערכת המחשב נמצא בהתקני אחסון חיצוניים. כדי שהנתונים יהיו נגישיס, עלינו לשמור אותס בסדר כלשהו, אשר מוכתב על ידי תיקיות (0!0015ס=), קבצים (65!ו=) ורשומות (46060105). על כך נלמד בהמשך הפרק. סוגי קבצים בוויז'ואל בייסיק אנו עוסקיס בשלושה סוגי קבצים : 1. קובצ טקסט. 2 קוב בינארי. 3 קוב לגישה אקראית. קובץ טקסט שומר את הנתוניס בפורמט !]450 וניתן לקרוא את הנתוניס השמוריס בו כקריאת טקסט רגיל. לעומתו, קובץ בינארי שומר את הנתוניס בצורת ערכיס בינארייס. לדוגמה, המספר 1234 יכול להישמר בקובץ בשני אופנים. אפשרות אחת היא לשמור אותו בקובץ טקסט, שבו כל תו נשמר כמות שהוא וכמות הבתים שיידרשו לשמירה של המספר 1234 היא 4 בתים, בית לכל סיפרה. בקובץ בינארי דרושיס 2 בתיס בלבד לאחסנת המספר, מכיון שההוא מסוג ז1606ח! שתופס 2 בתים בלבד. הייצוג של המספר בזיכרון יחיה בינארי (בהדפסה אנו רואים ואת בייצוג הקסדצימלי). כשנערוך את תוכן הקובץ ונקרא אותו, לא נראה בו את 4 פרק וו: קבצים 179 הספרות 1234 (כבקובצ טקסט), אלא את הייצוג ההקסדצימלי שלהן. כדי לקרוא קוב בינארי יש לדעת בדיוק באיזה מבנה הוא נשמר, מכיון שתוכנו אינו קריא כמו קוב טקסט רגיל. בפרק גה נעסוק בקבצי טקסט. על קבציס בינארייס וקבציס לגישה אקראית לא נעסוק בספר, מכיון שבדרך כלל שמירה שאינה בקובצ טקסט נעשית במסד נתונים, המהווה תחלופה יעילה לשמירת נתוניס, ואשר תדון בפירוט בפרק 16. קבצי טקסט קבצי טקסט הם כל סוגי הקבציס אשר שומרים את הנתונים בפורמט |501, כדוגמת הקבציס בעלי הסיומת 1%, וחו, 081, +08 וכוי. קבציס מסוג זה ניתן לערוך בעזרת כל תוכנית עורך (ז0ז/50) של קבצי טקסט. ניתן גס לערוך באופן דינמי קבצי טקסט מתוך שורות קוד בוויז'ואל בייסיק, ועל כך בהמשך הפרק. פתיחת קובץ כדי שנוכל לערוך קוב טקסט ולבצע בו שינוייסם, לקרוא ממנו או להוסיף לו נתוניס, יש לייפתוחיי אותו תחילה ולמעשה - לעשותו ומין לתוכנית. פתיחת קוב נעשית בעזרת מילת המפתח ח6ס0. תחביר ההוראה לפתיחת קוב>: 062ום2116 פת 06ץ8606885 מסץ 8(6מ2116ג85ק מס6סס לדוגמה: 1 28 סגמסם1 פסת "660.086אס6ססטת:6" מססס בדוגמה זו נפתח הקוב 60.281א40106 לצורך קריאה כקוב שסימנו הוא 1 (1א). אס נפתח קוב נוסף, ניתן לו מספר שונה (אלא אס סגרנו את הקוב הראשון, ואז ניתן להשתמש שוב באותו מספר). מספר הקוב הוא אמצעי זיהוי לקובצ. כאשר פותחיס כמה קבציס במקביל ורוציס לבצע בהס פעולות כלשהן, עלינו להשתמש במספר הקוב> כדי לשייך את הפעולה לקוב המתאים. סוגי פתיחת קובץ טקסט קוב טקסט אפשר לפתוח בשלושה אופנים : 1. +טסח! - פותחיס את הקוב לקריאה בלבד. לדוגמה: 1 28 סגמסם1 פסת "660.086אס6ססטת:6" מססס 0 6ם/. - ערכת כלים בדוגמה זו פותחיס את הקוב +66.08א0+08% לקריאה בלבד. כלומר, ניתן לקרוא ממנו נתוניס, אך לא לכתוב בו או לעדכן. ניסיון לכתוב בקובצ שהוגדר למצב קריאה בלבד יגרור הודעת שגיאה (תרשים 11.1). 8356 [5ו/ ]]ס5סזסוו תרשים 11.1 את שס הקוב ואת הנתיב יכול להחליף משתנה מחרוזת המכיל את השם ואת הנתיב של הקוב שברצוננו לפתוח. לדוגמה, ()מנ1נאא סמטפ ש6ת1ע56 פת 8(6א116ת552 תנקת "660.08%אסססטת:6" = 8(6א5670116% 1 28 סגוקם1 עסע 8(6א116ע562 ם6סס מטפ תמ אם קוב זה אינו קייס תופיע הודעת שגיאה (תרשים 11.2). 8356 [ט5ו/ ]]ס5סזסו4 | =שחו)חס: תרשים 11.2 . 001004 - פתיחת הקובצ לכתיבה. לדוגמה: 2 28 סטק005 עסש "6א5.%א66ץ:6" מססס אס קוב זה קייסם, פתיחה לצורך כתיבה מוחקת את הנתוניס הקודמיס שהיו בו. אם לא קייס קוב בשס זה, ויוּ'ואל בייסיק תיצור אותו ותאפשר כתיבה בו. פרק 11: קבצים 181 3 0ח6סקג - פתיחת הקוב להוספה. קוב מסוג וה מאפשר קריאה וכתיבה. לדוגמה: 3 פת תפססת עסת "60.08%6א6ססטת:6" מססס פתיחת קוב במצב זה מאפשרת להוסיף נתוניס חדשים לנתוניס הקיימים. בניגוד למצב פתיחה לכתיבה, הנתוניס הקודמים אינס נמחקיס. קריאה מקובץ לאחר שפותחיס קוב במצב קריאה ניתן לקרוא ממנו נתוניס בשתי דרכים : 1. קריאת שורה שלמה. 2. קריאת מספר תווים מוגדר. כאשר פותחים קוב, מצביע הקלט מוצב בראש הקובצ. קריאת יישורה שלמה''י פירושה קריאת כל התווים עד תו ייסוף שורה'י. קריאה של 10 תוויס תקרא את עשרת התוויס הראשוניס של הקובצ. קריאת שורה שלמה נעשית באמצעות המשפט +טסח! 6ח11. משפט זה קורא את השורה עד לתו ''חז(ש6ז 697806'י שנוצר בפעולת מקש זסזח=, ואינה כוללת אותו. תו זה מסמן את סוף השורה ואין הוא נכלל במחרוזת שקורא המשפט )טסח! 6חו]. משפט זה מחזיר כערך את תוכן השורה הנוכחית בקובצ, ומקדם את מצביע הקלט לשורה הבאה. תחביר המשפט הוא: 868 ,ע6קתטמם1116 6טסם1 6מ1תם המשתנה ח1ז+5 מכיל את הערך המוחזר של המשפט. לדוגמה: 8ם1ע5פ פב 562265016 תנק 1 28 סגמסם1 שסת "660.86א6ססטת:6" מססס 6טפסתת5 ,%1 ס6טסם1 6מ1ת 1%ו5%2365 6םת1ץק 01086 1 בדוגמה וו המשתנה 503850 מכיל את תוכן השורה הראשונה של הקובצ .א ומצביע הקוב עומד עתה בראש השורה השנייה. כאשר נדפיס את תוכן המשתנה +/5414650, תוצג בטופס השורה הראשונה של הקוב (תרשיס 11.3). <1) - | [חזס] .₪ 9+ דסאוםםק תרשים 11.3 2 65ם₪/. - ערכת כלים הפונקציה וטסחז אפשרות נוספת לקרוא מקובץ היא קריאה של מספר תוויס מוגדר. באפשרות זו ניתן להגדיר מספר תוויס רצוי מתוך שורה בקובץ, או לקרוא יותר מאורך שורה אחת. קריאה באופן זה נעשית בעזרת הפונקציה +טסח!. תחביר הפונקציה: (ע06תט0םמ1116 ,0282805628 01 ע6כתטם)6טסם1 = 18016בעפט המשתנה המקבל את הערך המוחזר של הפונקציה הוא מסוג 9ח5471. לדוגמה : 8ם1ע5פ 28 5%2268016 תנכת 2 28 סגמסם1 פסת "660.086א6ספטת:6" מססס (%2 ,5)30וקם1 = 562265016 6בטפסת52 סת1עק 01086 2 בדוגמה זו יודפסו 30 התוויס הראשוניס של הקוב> 60.28%א80%06 ומצביע הקלט יעמוד על התו ה-31. פקודת קריאה נוספת של 30 תוויס מהקובצ תגרוס לקריאת 30 התוויס הבאים וכן הלאה. בפונקציה גו אפשר להשתמש כאשר מבנה הקוב קבוע וידוע מראש. קריאת 30 תווים תהיה משמעותית אם נדע מה הס מכילים, אך אס מבנה הקוב אינו ידוע, לא תהיה לכך כל משמעות, כי אולי 30 התווים הס חלק משורה או פיסקה, ואולי אף נחתכים באמצע מילה. במקרה זה עדיף לקרוא שורות שלמות באמצעות המשפט )טסח! 6חו.]. הפונקציה 566% כאשר מבנה הקוב ידוע, אפשר לקרוא מספר תוויס רצוי כדי לקבל את הנתוניס הדרושים מתוך הקוב. הקריאה נעשית בעזרת הפונקציה +טסח! באופן סדרתי; כלומר, כשהקובצ נפתח מצביע הקלט מוצב בראשו. פקודת קריאה של 20 תוויסם, למשל, תגרוס לקריאת 20 תוויס החל מהמקוס שבו נמצא המצביע,ואת 20 התוויס הבאיס נקרא בהמשך, באופן סדרתי. כשנרצה לקרוא 20 תוויס במקוס מוגדר אחר, למשל החל בתו ה-50, נשתמש בפונקציה 566% כדי להציב את מצביע הקלט במקוס מוגדר אחר בקובצ ולקרוא ממנו באמצעות הפונקציה +טסח!. כארגומנטים נמסור לפונקציה 566% את מספר הקובצ ואת הערך המציין את המקוס שממנו רוציס לקרוא. תחביר הפונקציה: מעסנפנפסק ,062(ט0ת1116 566% לדוגמה: 0 ,1+ 566% השיגרה הבאה מדפיסה את תוכן השורה הראשונה של הקוב 8%ס. ס66אסססגּג (ראה תרשיס 11.4): פרק 1ו1: קבצים 183 ()א0110% תעסע מט5 217866 ש6מ1ע6פ פת 562268016 תנס 1 28 סטסםת1 עסת "60.086א6ס6טת:6" מססס %פסתת55פ ,1+ סטסתך 6ת1ת 6בטפסת52 סת1לק 1 61086 מגטפ םע [חוזס] .₪ תרשים 11.4 בשיגרה הבאה, נשתמש במשפט 588% כדי להציב את המצביע על התו השני בקוב וממקוס גּה נקרא ונדפיס שלושה תווים. בעזרת הפונקציה +וסח! נקרא את שלושת התוויס הבאיס (ראה תרשים 11.5). ()א0110% תעסע מט5 217866 ףם1נעספ 258 5628265016 תנכת 1 28 סטסם1 עסת "60.086א06ס5ט6:8" מססס 2 ,1+ 506% (%1 ,3)פטסם1 %םנ1עק 1+ 61086 מטפ םע [חזס] .₪ תרשים 11.5 4 6ם/ - ערכת כלים כתיבה לקובץ פתיחת קוב לכתיבה נעשית באמצעות הפקודה +טס+ט0 ולפתיחת קוב להוספה נשתמש בפקודה 6ח06ק1. כתיבה לקוב נעשית באמצעות הפקודה +חוזס. תחביר הפונקציה: 5% ,,ע6(תטת1116 סת1צפ את המחרוזת הנשלחת לכתיבה ניתן להחליף במשתנה מסוג פַחוז+5. לדוגמה, 1 28ב סטקסט0 עסת "6א6.6א76ץ/:6" תססס "ס611ע" ,%1 סתנועס "ה1עסט" ;" " ;"0ס11שת" ,1+ שסתנגעק 601086 1 לאחר כתיבת המחרוזת לקוב>, המשפט +חוזק גורס באופן אוטומטי למעבר לשורה חדשה. במיליסם אחרות, כל מחרוזת נכתבת בשורה נפרדת, אלא אס המשפט )חח כולל מספר מחרוזות. במקרה זה, כל המחרוזות תיכתבנה בשורה אחת בקוב. תרשים 11.6 מציג את תוכן הקובץ שנוצר מביצוע שורות הקוד שבדוגמה לעיל. שים לב לתו הרווח (יי יי) שבין שתי המחרוזות, כי ויוואל בייסיק אינה יודעת להציב אותו בעצמה. <1ם)= | - ]א דע |= קפ 58808 08ם ‏ >|- 10 ופט 86110 תרשים 11.6 סגירת קובץ לפני סיוס התוכנית צריך לסגור כל קובץ שנפתח במהלך התוכנית. אס רוציס לפתות קוב כלשהו לפעולות שונות, כמו למשל לקריאה ואחר כך להוסיף לו נתוניס, צריך לסגור אותו בסיום פעולות הקריאה, לפני שפותחיס אותו להוספה. אס פותחיס קוב ולא סוגריס אותו, לא ניתן לפתוח אותו שוב (תרשים 11.7). פרק 11: קבצים 185 0ו35 ₪ [הו5ו/ !)ס5סז6ו סיווס 6רחו)-חט₪ השפ עְהַבּ6יו!3ּ 6|ו] | =נחווחס:) תרשים 11.7 כדי לפתוח את הקוב שנית במצב חדש, כלומר לביצוע פעולות אחרות, יש לסגור אותו ורק אחר כך לפתוח אותו שנית. תחביר הפקודה לסגירת קובצ: עסתות1116 01086 לדוגמה: ()א0110 מעסע ס50 217866ק 1 פב 6טקפגמס0 מעסע "6א6.6א16ץ);:6" מססס "ס611ע" ,%1 סםנ1צק "1עסח" ;" " ;"6110ת" ,1+ ש6תנ1עק 1 01056 סטפ סמ לאחר שהקובצ נסגר ניתן להשתמש שוב במספר הקוב שלו גם עבור קובצ אחר. הכלל הוא, שאפשר לתת לקובצ רק מספר יהוי שאינו בשימוש. פונקציות לעבודה עם קבצים מלבד פתיחת קוב למטרות שונות וסגירתו, יש בוויו'ואל בייסיק מספר פונקציות לעבודה עס קבצים. פונקציות אלו שימושיות לכל סוגי הקבצים, ואינן מוגבלות לקבצי טקסט או לקבציס אחריס. הפונקציה אוס הפונקציה 1₪ם מאפשרת לחפש קוב על פי שמו ומאפייניו. הפונקציה מקבלת כפרמטרים את שם הקוב ואת מאפייניו, ומחזירה את שס הקוב הראשון שמתאים לתנאי החיפוש. 6 6ם/. - ערכת כלים תחביר הפונקציה: (8552120568 ,6ת8ת2116 ג0ע11)8508כ לדוגמה : (צ1ת800פתסט ,"60.086א06ס5ט6:80")ת1ת = ס6גגופ6ת לפניך חלק מהערכים שמקבל הארגומנט 6+ם!ז)+ : ץ|ח6800 פע - קובצ קריאה בלבד. ח6 חפט - קובצ מוסתר. 6צוחסז סע - קובצ רגיל. החסז5ץ5פצ - קוב מערכת. ץזס60זוספ / - תיקיה. ניתן לשלב בחיפוש כמה מאפייניס שדרוש, אך צריך לייחבריי ביניהס בעזרת התו +. לדוגמה: (צ1ת6800תסט + סט1םסעלתסט ,"1ת1.ת566ץ9פחס6םתנ1א:0")ת1ת סתנ1צק במקוס שם קוב ניתן לציין משפחה של קבצים המאופיינים על ידי הסיומת, למשל 8%: (6טנ1תס2תסט ,"8%6ס.*:12)"60ע = 265016 בדוגמה וו שס הקוב הראשון מסוג +88 יוחזר כערך על ידי הפונקציה, ללא תלות בשמו. והנה דוגמה נוספת להדפסת שס הקוב הראשון שיימצא, אשר שמו מתחיל ב- 3 והסיומת שלו - 081 : (6ט10תס6ע?תסט ,"86ק.*6:8")ת1ת = 26516 %טפספת 6םת1שק הפונקציה ח1!61.6= הפונקציה ח₪1!61.6 מקבלת כפרמטר שם קוב (ונתיבו), ומחזירה את גודלו בבתיס. תחביר הפונקציה הוא: (06ת8ת16 21 ) ם161.6 גת לדוגמה: ("1נת1.%ת556צץ5פחססהת1ט:6")ם1166ת סתנ1צק הפונקציה -0 !ו הפונקציה 1.0 מחוירה את הגודל בבתיס של קוב פתוח. כפרמטר היא מקבלת את מספר הקוב שניתן בעת שפתחו אותו. פרק 11: קבצים 187 תחביר הפונקציה: (ע6מותנות16 1+ ) 70 לדוגמה: 1 28 סגוסם1 פסת "66.86א6ססט6:8" מססס (105)1 א850פ5א הפונקציה ]₪0 הפונקציה 01 מוהה את סוף הקובצ. הפונקציה מחזירה ערך 6טזד כאשר מצביע הקריאה או הכתיבה מגיע לסוף הקובא. כפרמטר היא מקבלת את מספר הקוב. תחביר הפונקציה: (ע6מותנות16 1+ ) ₪07 שימוש נפוץ בפונקציה ₪01 הוא בעת קריאה מקובצ שגודלו אינו ידוע. קוראיס את הקובץ שורה אחר שורה עד סופו, וכשמגיעים לסוף הקובצ מפסיקים לקרוא ממנו. המידע שמגיעיס לסוף הקובץ מתקבל על ידי הפונקציה =0ם. לדוגמה, 1 28 סוסם1 פסת "66.86א6ססט6:8" מססס 6ת1גע56 פב 268016 תנכת (₪09)1 6סא 116םח סכ %נטפסת ,%1 סגמקםך 6ם1ת 8% סמסתנגעצק 0 1+ 01086 בדוגמה זו מודפס תוכן הקוב 606.081א40106 בטופס (תרשיס 11.8). + זקאוםהק סח%:6; 05 %:₪; 4 ו סש שאי פאזו/א:; פאס סאו: ה זמת 506 55 תפז 6 5 01 5| 220=ם ₪157 561 וחפז :ו 1 ז54=|סווא 561 תפז :0040 56 תפז 5 ]55 וחפז 5 %5816%0184055: ה | חפז ₪ ז 55 =₪אןו0:%5016% 1 חפז 5 0 ז04%0 ז%0: 4 1 תפז 6 1 ] החשז 000001 ד8:ם/ ₪5 ₪ 00 5אסו מו יסאו תח [וקס. 6063 10 א סו פאס !ו := [6=)]862זהק6זס 00060306 חסס 6בסוח 502 6הַ000603 חסס הסוח תרשים 11.8 8 6ם/. - ערכת כלים בתוכנית קוראיס את הקוב שורה אחר שורה בלולאה, אשר גס מדפיסה את השורות האלו. הלולאה ממשיכה לקרוא מהקוב כל עוד לא מגיעיס לסוף הקובצ, או במיליס אחרות כל עוד הפונקציה ₪01 מחצירה ערך 3!56=. הפונקציה 16600 באמצעות הפונקציה ע118600= ניתן להעתיק קוב אל קובצ אחר. הפונקציה מקבלת כפרמטרים שתי מחרוזות המייצגות שם ונתיב קובצ המקור ושל קוב היעד. תחביר הפונקציה: (ת8%10ת068%1 ,06ע500) ץ116000ת לדוגמה: ("60.08%א6ס6טת:6" ,"6א6.%א16ץא:6") עקס160נ1ע ניתן לשלות כארגומנטים שני משתנים מסוג פַח/5, המכילים את שס הקובץ ואת הנתיב שלו. לדוגמה, 6ת1ע55 258 562500206 תנקת םעפ 28 85622686 תנכת "%א6.5א6ע/ץא:0" = 06ע5002ע562 "%א60.5%א0:80506" = 5622686 % ,862500206 צץ116000ע הפונקציה 6חוודַ6+בּס6וו-] הפונקציה 116 1!608+67= מקבלת כפרמטר שם קוב ונתיב ומחזירה +חְהּוזּצ המכיל את התאריך והשעה בו הקוב> נוצר או עודכן לאחרונה. תחביר הפונקציה: (6ות8תב85ס) 6ת11628%66711ת לדוגמה: %ופסת תנק ("1ת0.1ת5%6ץ5פחסת1ח:6") 6ת116285611ע = סשגגופ6ת הפונקציה 106 הפונקציה 1.06 מקבלת כפרמטר את מספר הקוב הפתוח, ומחזירה כערך משתנה מסוג פָח1.0, המייצג את מיקומו של מצביע הקלט (או מצביע הפלט) בקוב>. תחביר הפונקציה: (ע62כן(1ות16 1+ ) 7:66 לדוגמה: 1 פת סטסם1 עסע "6א6.%א76ץא:6" מססס (106)1 %ם1שלק 1 01086 פרק 11: קבצים 189 הפונקציה 6!ו-66ז-] הפונקציה 1866=1!6= מחזירה ערך מסוג ז1606ח! הקובע מהו מספר הקובצ הבא הפנוי לשימוש עבור קוב חדש. כל קוב שנפתח מקבל מספר ייחודי, וכל עוד הוא לא נסגר, אי אפשר לתת לקוב נוסף שנפתח את אותו מספר. כדי לדעת איזה מספר נוכל לתת לקוב שנרצה לפתוח, נשתמש בפונקציה 86-1!6ז= המחזירה כערך מספר אפשרי לקובצ. הפונקציה מחזירה ערך ואין לה ארגומנטיס. לדוגמה: 166% פב 1 ,₪6002ת1 28 עססתטא116ע5ם1 תנקת 00 920 1 = 1 שסץ 6 = ע6קתטא116נש6ם1 עסמתטאס11ע5ת1+ פת סתסקקת פסץע "6א6.6א16ץ/;:6" מססס 1 6 ":פתגע" ,צססמתטא18נץפ>ת1+ סתנצק ע6קתגא116ע6ת1+ 01086 1 6אפא הפונקציה 60360846 הפונקציה 664444 מקבלת כערך שם קוב ואת נתיבו ומחזירה את מאפייני הקובצ כגון: מוסתר, ארכיון וכדו'. תחתביר הפונקציה: (6ות8ת286 ) 066266 לדוגמה: ("60.08%א6ס6טת:6%)"6ת06% א20טפ5א הערכיס המוחזרים על ידי הפונקציה 20%4) מייצגיס את הקבועיס המוצגיס בטבלה 1: טבלה 11.1 סו פטובצ 1 | זט 0 |מוזסא טע ץ|הס-880 1 עה 30 הטע הור 2 הווה טע וה918 4 הזוע מע זוז זם צזסזספזום 16 זו טע 0300 351] 8סחו5 הַפַּפהָחבּח0 פבּח פוו= 2 שעוחת6זה טע 0 6ם/. - ערכת כלים 56+44 היצקנופה‎ הפונקציה 4/+56 קובעת את תכונות הקובץ. אס נרצה לקבוע את מאפיין הקובצ לקריאה בלבד, נעשה זאת בעזרת פונקציה זו. הפונקציה מקבלת שני פרמטרים: את שס הקוב ונתיבו, ואת המאפיין. תחביר הפונקציה הוא: (866210066. סתתה8 תם86ת2) 6%6ת56% לדוגמה: (צ1ם0ס68תסט ,"6א6.%א16ץא")6ס6ת56% רשימת הקבועים שהפונקציה מקבלת בפרמטרים מוצגים בטבלה 11.2 : טבלה 11.2 סו ובע 0 (8818010) |הוחזזס] 0 | סא פע ץ|מס-680= 1 צָו 6308 פע הפו 2 הפצ 8 18 4 הזוע פע 300 351] 8סחו8 הַפַּפהָחבּח0 פבּח פוו= 2 שעזתשזה מע פונקציות לעבודה עם מחרוזות הפונקציות לעבודה עס מחרוזות שימושיות לפעולות תכנות שונות, ולאו דווקא לעבודה בקבצים. הסיבה שהן מופיעות דווקא בפרק העוסק בקבציס היא, שבדרך כלל פועלים על שס הקוב שהוא מחרוזת, או משתנה מחרוזת. פעולות אלו כוללות שרשור הנתיב ושס הקובצ לשס אחד וכו'. בסעיפים הבאיס נלמד לבצע פעולות שונות על מחרוזות ולקבל מידע מוגדר מתוך מחרוזות אלו. הפונקציה ח6 !| הפונקציה ח16 מקבלת כפרמטר מחרוזת, או משתנה פַחו5 המכיל מחרוזת, ומחזירה את אורכה בתוויס. תחביר הפונקציה הוא: (9מ1ע552) מ16 לדוגמה: %ת1ע56 5ג2 ס6תהאע5%62 תנכת "ץממהאכת" = סתהאע562 (6ת8א5%2%) מ6ת סםת1עק פרק וו: קבצים 191 בדוגמה זו יודפס הערך 5 בטופס; זגהו אורך המחרוזת שנמצא במשתנה 6חח8א60. הפונקציה 400% הפונקציה ₪904 מחזירה מספר תוויס בצד הימני של המחרוות. הפונקציה מקבלת כפרמטרים את המחרוות ואת מספר התוויס הרצוי ומחזירה מחרוזת המכילה את מספר התוויס המבוקשים בצד ימין. תחביר הפונקציה: (ת08%5ת16 ,0םת1ע552) 6םש1ת לדוגמה: %ת1ע56 פג2 ס6תהאע5%62 תנכת "ץממהאכת" = סתַהאע562 (2 ,6ת8א;ע8%) %ם216 סת1עק על הטופס יוצגו 2 התוויס הימניס של המחרוזת שמכיל המשתנה 8וח8;זו5. המחרוזת שתוצג היינה ''ץח'י. הפונקציה 64% !ו הפונקציה 186 מחזירה מספר תוויס רצוייס מתוך מחרוזת, אך הפעס התוויס המוחזריס נמצאיס בצד שמאל של המחרוזת. תחביר הפונקציה הוא: (מ9%5ת16 ,0ם1ע161%)55 לדוגמה: ע66סת1 פב מ6ע6םת1 ,06םת1ע56 5ת ס6תהאע5%62 תנקת "ץממהאכת" = סתַ8אע562 2 = ת606ם1 (מ6ת%6ת1 ,6תהא26₪1%)8%2 6ם1צק במקרה זה יוצגו על גבי הטופס התווים ייפ 'י. הפונקציה שו הפונקציה ₪16 מחזירה קבוצה חלקית של תוויס מתוך מחרוזת שלמה. הפרמטריס שמקבלת הפונקציה הם: המחרוות השלמה, המיקוס ההתחלתי במחרוזת שממנו נתחיל לקרוא את התוויס ומספר התווים הרצוי. תחביר הפונקציה הוא: (ת0%מ16 ,8558256 ,0מ1ע18)8552א 2 65ם/. - ערכת כלים לדוגמה: %ת1ע56 פג2 סתהאע5%62 תנכת 166% 25 ם6ע%םת1 ,₪6062םת1 פג2 65%82%ם1 תנקת "ץממהאכת" = סתַהאע562 3 = ם%6296ם1 : 2 = 6ע6568ם1 (מ6ת%ת1 ,%5%82%ת1 ,6תהא8010)5%2 6ם1צק שורות קוד אלו יציגו על הטופס את התווים ייחחף'י. שיס לב שכאשר ערך הפרמטר 5!84 גדול מאורך המחרוות כולה, הפונקציה תחזיר מחרוזת ריקה ( "). המשפט סו המשפט ₪16 מחליף קטע מחרוזת בקטע אחר. תחביר המשפט הוא: %תנע5פ = (ג65ת16 ,8558260 ,שץ650(0011מם1ע13)852א הפרמטרים שמקבל המשפט הם: המחרוזת שתשתנה, מיקוס התחלתי של השינוי ואורך התוויס שיוחלפו. המשתנה עְזוְטְסחחִסנפַָחו51 מייצג את המחרוות אשר תחליף את קטע המחרוזת הקיים. לדוגמה: %ת1ע6פצא תנכת "פקתטך 8306 6םע2" = סשסתנע6פעץא "אס" = (3 ,5 ,8מם1ע56ץא)ב1א לאחר השינוי, תוכן משתנה המחרוזת יהיה: "פקוחטן אסז פחד" = פחחז6עוש. הפונקציה ז5%ח! הפונקציה ז5%ח!1 מחפשת תו או תת-מחרוזת בתוך מחרוזת. אס התו או תת-המחרוזת נמצאיס בתוך המחרוות, הפונקציה מתחזירה משתנה פַח1]0 שערכו מייצג את מיקוס התו או תת-המחרוזת במחרוזת השלמה. אס התו או תת-המחרוות לא נמצאים, הפונקציה מתזירה את הערך 0. תחביר הפונקציה הוא: (0826ת60 ,ע02028ע9682 ,0םת1ע0295ע9682 ,85826) 5%2ם1 הפרמטריס שהפונקציה יכולה לקבל: ספ - המיקוס במחרוזת (הראשית) ממנו יתחיל החיפוש. 568019 - המחרוות הראשית. ]0 - התו או תת-המחרוזת. 6זק 60 - סוג השוואה. פרק 11: קבצים 193 לדוגמה: "חן (1 ,82ת5%25682020 ,0םת5%21ם1256820 6762סת1 5ב 65682%םת1 תנקת ש6ת1ע56 28 0םת1ע9%2ת5%256820 תנכת %6ם1ע56 28 ע8ם0ת5%256820 תנכת "6 "םב" 1 1% %ם1ע52568205% = 2ע8ת0ת56256820 8 ,65%82%6ת62)1פת1 א0ס2טפא בדוגמה זו, מיקוס התו ''8'' בתוך המחרוות ''/9180!'' הוא במקוס הרביעי, ולכן תיבת ההודעה תציג את הערך 4. הערכים המוחזרים על ידי הפונקציה מוצגים בטבלה 11.3 : טבלה 11.3 זוז ז)5ח! 0 וו 1 וושאז 0 התטסן 15 ה0ז3רח הסוחאו 81 הסוזופס 0 לפניך דוגמאות לסוגי השוואה שוניס : 58 ,עפאת0 .תג 568202 60 8ם1ע6פ' לפ סח .6 פתעגטססת (1 ,2ע8ת0ת56820 ,6ם1עם . פתעגו66ת2 (0 ,82ת0ת56820 ,טם1עם (1%6%660תס 15 ס6םתסתגו820 1886) . פתעגוססת' (82ת5682020 ("א₪" .1 פתעגופסת' ,0ת1ע 4 6ם/. - ערכת כלים + חזחָחפ|-0ז0? 5ו 51001 וטא 5 500871 זמָח8|-0ז29 8ו 81002 וטא 5ו 10002 סז +0ח 8ו 81002 הוחזואי ההטס1 ו 1002 0 0 שי 05 5 05 ₪188 < 2 ,ם5521ת56820 תנקת "סאאפאאסאאסאא"= 06ם5682029%21 "תע" = 508200282 ,4)ע5%םתך = 1 ם1610פסק 8% 6םת61ע8%82 מס18עהקתסס צעה8ת1ס ,1)ע5%ת1 = 8% צס צעהתנ1נס 18 תספנ1עהקתסס' ,8208521 5%2)56תך = ,1)ע5%ת1 = .1 ת10ס1פסק 8% 6ם585682%1 מתספנפהקתסס 6081א₪6 ת' עצא עצא הפונקציה וחווד הפונקציה וחוז ד מקבלת כפרמטר מחרוזת, ואס יש רווחים, היא מסירה אותם מימין ומשמאל למחרוזת. שיס לב שהפונקציה אינה מורידה רווחיס בתוך המחרוזת, כאשר היא מכילה למשל שתי מילים ורווח ביניהם. פונקציה גו מסירה רווחים מיותרים מימין ומשמאל למחרוזת בלבד. תחביר הפונקציה הוא: (9מ1ע5%52)תנ1עץך לדוגמה: ( ו וגו 0 ")תנעץ א0ס2טספ5א במקרה זה תציג תיבת ההודעה את המחרוזת הח187088!6. בלבד, ללא הרווחיס שמימין ומשמאל. הפונקציה הווזד4= הפונקציה חוזזא מנקה רווחים מיותרים מימין למחרוות. הפונקציה מקבלת כפרמטר מחרוזת ומחוירה אותה ללא הרווחים מימינה. אם יש רווחים מיותרים משמאל למחרוות, הפונקציה אינה מסירה אותם. הפונקציה מתייחסת אך ורק לרווחים שמימין למחרוזת. תחביר הפונקציה הוא: (8מ1ע55)תנצצת לדוגמה: "ץעב" ₪ (" 0 ")תנעלת סתנ1עק הפלט שיודפס על גבי הטופס יכלול את המחרוזת הח287058!6. ללא רווחיס מימין וצמוד לה - המחרוזת 011 (תרשים 11.9). |<ום)- [חזס-] .₪ 153! תרשים 11.9 פרק 11: קבצים 195 הפונקציה חווד ו הפונקציה חחוזד | מסירה רווחיס מיותרים שנמצאים משמאל למחרוזת. תחביר הפונקציה הוא: (8מ1ע5%5)ת1לע1 לדוגמה: ש6ת1ע56 פב 6ת8א562212585%% תנכס 551% 25 8(6א5621856 תנכס ץצפתהכ " = 8[(6א128%%ת5%2 "ת6ם60" = 6ת8א5%2085%6 5528536 86 (6ת8א%א5%628125%)תנצקת אספסטספא "ו תיבת ההודעה תציג את שתי המחרוזות כשיש רווח ביניהם, הנובע מכך שהרווחים שמימין למחרוזת עְחח8ם לא הוסרו (תרשיס 11.10). הרווח משמאל למחרוות הראשונה נמחק. 1 06 עהחבם תרשים 11.10 הפונקציה 6356 הפונקציה 16856 מסבה מחרוזת הכתובה אנגלית באותיות קטנות לאותיות גדולות. תחביר הפונקציה הוא: (8מ5521) 006886 לדוגמה, כדי להציג את המחרוזת "עְחחהּכ'י באותיות גדולות (תרשיס 11.11) נכתוב כך: ("ץץתם8כ")6856עש אספטפ5א 1 וו אס תרשים 11.11 6 66ם₪/. - ערכת כלים שיס לב לדוגמה הבאה: ("צאאהכ")60856ש אספטפ5א במקרה וּה, המחרוזת אינה משתנה. הפונקציה 0856 גורמת לאותיות להפוך מקטנות לגדולות, ולא לחיפך. פקדים למיפוי דיסק בוויו'יואל בייסיק קיימים שלושה פקדיס שמאפשרים לקבל מידע על הכונניס, התיקיות והקבצים. השימוש בפקדים אלה הוא משולב (תרשים 11.12), כי שלושתם יחד נותניס תמונה שלמה על מערך הזיכרון החיצוני של המחשב. עס זאת, ניתן גס להשתמש בכל פקד בנפרד ללא קשר לאחרים. + > 050000 > - שסוא סו ופום הו ] 2 משויי , = 1 8 חםם אסגק/סן זי: : - א אס התש | ויו ו נ= זפה שווהס| << : 0 זסת. זפ! ווהסן יי: סקט = זה זטס ו קה [ = ו 7 א ואפ 7 [* 3 [ = תרשים 11.12 שים לב שיש אפשרות נוספת להציג בפני המשתמש את תוכן הדיסק ואת היכולת לדפדף בתיקיות. אפשרות ואת ניתנת על ידי תיבות דו-שיח מיוחדות עליהן נדון בהמשך הפרק. בעזרת הפקדים למיפוי דיסק נוכל לבנות תיבות דו-שיח מותאמות, המאפשרות עיון בתכולת האחסנה החיצונית. המידע המופיע בפקדים אלה מתקבל ממערכת ההפעלה ומציג באופן אוטומטי את כל המידע, אך גם ניתן להגדיר דרך מאפייני הפקדיס מהו המידע המסוים שיוצג בהם. גמישות זו להצגת מידע אינה מותרת בתיבות הדו-שית הרגילות, ובז₪ה יתרונס של פקדיס אלה על תיבות הדו-שיח. פרק 11: קבצים 197 הפקד א0פ+פו 61צוזוס הפקד 140% |6צוזם - מציג את רשימת הכונניס הקיימיס במערכת המשתמש. הכונניס נמצאיס בתוך רשימה נפתחת אשר מתוכה יכול המשתמש לבחור בכונן הרצוי. לחיצה על אחד הכונניס ברשימה גורמת לבחירתו ולהצגתו בתיבת הטקסט שבראש התיבה הנפתחת. את בחירת המשתמש ניתן לקרוא בעזרת המאפיין פצוזס של הפקד. לדוגמה, סטנעת. 1סטנעכת אספטספ5א את שם הכונן שיוצג ניתן לקבוע גס בדרך של תכנות. דוגמה: ":6" = 6ט1עכ.61ט1עכ שיס לב שבחירת אחד הכונניסם מהרשימה רק מדגישה אותו, אבל אינה משנה בפועל את הכונן הפעיל הנוכחי, למרות שהמאפיין 6צוזם מקבל את הבחירה כערך. שינוי בפועל של כונן נעשה בעזרת המשפט פעוזסח6. דוגמה: סטנגעתם.1סטנעכת פטנגפכם6 רק אחרי שורת קוד זו, משתנה כונן העבודה הפעיל של המערכת על פי הבחירה. בבחירת הכונן יכול להיווצר מצב שגיאה, שבו המשתמש בוחר בכונן :ג, למשל, ואין דיסקט בתוכו. במצב זה התוכנית תופסק עס הודעת שגיאה (תרשים 11.13). וה המקוס לבצע טיפול בשגיאות ולוודא ששגיאה כזו תטופל בהתאס ותמנע הפסקה לא מתוכננת של התוכנית (על הטיפול בשגיאות נדון בפרק 20). 36 [הט5ו/ ])ס5סזסוו סיווס 6רחו)-חטו₪ ץָבּ6יז זסח א5%ו | שנחוחס:ו תרשים 11.13 8 6ם/. - ערכת כלים הפקד אספצפו וזוס - הפקד א0ם4פו וזופ -- מציג את מבנה התיקיות של הכונן הנוכחי, ומדגיש את התיקיה הפעילה. לפקד א0ם8%! |זוסם יש מאפיין הקובע אילו תיקיות ובאיזה כונן יוצגו בו. מאפיין זה הוא ח+8: (נתיב). כדי לקבוע שהתיקיות שיקבל ח9891 תהיינה של הכונן שנבחר באמצעות הפקד 9%00%ו |6עוזכ, נכתוב את שורת הקוד הבאה: סונעכ.1פטנעמקת = ם8%ק11.2כ שורת קוד זו קובעת מה יוצג בפקד 880%ו |זוס, אך היא אינה משנה את התיקיה הנוכחית, הפעילה. כדי לשנות בפועל את תיקיית העבודה נשתמש במשפט זוסה6. לדוגמה, ם8%ק.1עות ע1כם6 נוכל לקבוע שכאשר תוצג רשימת תיקיות בעזרת הפקד א%00פו |זוס, תיקיית ברירת המחדל תהיה התיקיה של היישוס שלנו, לצורך זה נשתמש במשפט זוכםח0 יחד עס נתיב תיקיית היישום. אך מהי תיקיית היישוס! גסם אס נקבע לה נתיב מוגדר מראש, כמו למשל ייחחפּזףָסזם עו\:0יי ונגדיר אותה כברירת מחדל, המשתמש יכול לשנות אותה לתיקיה אחרת כרצונו. על כן, נשתמש באובייקט שס4 המייצג את היישום שלנו, ואשר יש לו מאפייניס וביניהס המאפיין ח81ש. המאפיין 991 קובע את התיקיה שבה נמצא האובייקט ס0, או במיליסם אחרות - היישום שלנו. אין צורך לדעת באופן מדויק באיזו תיקיה המשתמש בחר להתקין את היישום, אלא לפנות למאפיין חק של האובייקט 400 ולקבל את המידע הנדרש. מכאן אפשר להבין שכדי לקבוע את תיקיית היישוס כתיקיית העבודה, עלינו לכתוב את שורת הקוד הזו: םסהע.ססת >נכם0 שיסם לב, שהמשתמש יכול גם הוא לשנות את תיקיית העבודה באמצעות הפקד אסם:9!ו |זום. לחיצה אחת על אחת התיקיות המוצגות בפקד בוחרת בתיקיה, אך עדיין אינה משנה בפועל את תיקיית העבודה לתיקיה אחרת שנבחרה על ידי המשתמש. בחירת המשתמש מבוטאת במקרה וה במאפיין ח₪81 המקבל כערך את הבחירה. כאשר המשתמש לותצ לחיצה כפולה הוא משנה בפועל את תיקיית העבודה. הפקד א0פ4פו ו6וו- הפקד א15+50 61ו1= מציג את רשימת הקבציס שבכונן ובתיקיה הנוכחיים. כדי להגדיר לפקד מאיזו תיקיה אנו רוציס להציג את הקבצים, ניעזר במאפיין ח₪81 של הפקד. לדוגמה, "פחססת1ח:6" = םסהע.1161ת פרק ו1: קבצים 199 אס נרצה לשלב בין שני הפקדים א8%50ו61!ו= ו-א80ופו וזום בצורה כזו, שבחירת תיקיה בפקד אסם:פו |זום תגרוס להצגת הקבציס של תיקיה וו ברשימת הקבצים שבפקד א8450 1!81=, נכתוב את שורת הקוד הזו: ם8%ע.1ת1ת = םמסה8קע.1161ת במקרה זה, כל הקבציס הקיימיס בתיקיה הנבחרת יוצגו ברשימת הקבצים. אך מה נעשה כאשר נרצה להציג קבציס מסוג מסויס בלבד, כמו למשל הקבציס שהסיומת שלבם היא םאם , ד ו- 00 לצורך כך נעזר במאפיין אחז03+00 של הפקד. מאפיין זה קובע את סוגי הקבציס שיוצגו ברשימה. לדוגמה, "תסס.* ;8%.* ;86א6.*" = ם8666%ק.1161ק שיס לב שוויז'ואל בייסיק תומכת בתן ''1יי כמייצג תו הכללה בשם קובצ. לדוגמה, "צאך.???ת" = םתשס866ק.1161ת במקרה וה, הקבצים שיוצגו בפקד 6119)00%!ו= יהיו כל הקבציס שמתחילים באות 3 ובעלי 3 תוויס נוספיס ומסוג דאד בלבד. מלבד בחירת קריטריון וסוג הקבציס שיוצגו בפקד ניתן לקבוע כקריטריון את מאפייני הקוב (100%89ו4). ברירת המחדל היא שמוצגיס כל הקבציס מלבד המוסתריס וקבצי מערכת, אולס, ניתן לשנות קביעה זו. הנה דוגמה לשורות קוד שגורמות להצגת קבציס לקריאה בלבד: וע = צץ1ם1161.26800ת 6 = סעטנםסעת1161.2ת 6 = 1התעסא.1161ת 6 = 1161.578500ע 6 = מ1161.1000ת כאשר המשתנה |החזסא] מקבל ערך פטזד, מוצגיס כל הקבציס מלבד המוסתריס וקבציס לקריאה בלבד; כאשר |פחחזסצ! מקבל ערך 8156= מוסתרים כל הקבצים. ניתן לקבוע את ערך קבצי הארכיון והקריאה בלבד ל- 6טזד ואז הם יוצגו. מאפיין חשוב נוסף של הפקד א0ם)9! ₪61 הוא +801656166. מאפיין גה מאפשר לבחור כמה קבציס יחד ובלעדיו - ניתן לבחור קובצ אחד בלבד. ברירת המחדל של המאפיין הוא הערך 6חסאא - 0 כלומר, אין אפשרות לבחור בחירה מרובה, אלא קובצ אחד בלבד. הערכים 1 ו- 2 (6|כחו5 ו- 0ַַ0ַחפזאם) מאפשריס בחירה מרובה. הערך 1 (8!סוזופ) מאפשר בחירה מרובה פשוטה. כלומר, לחיצה על שס קוב בוחרת אותו, ולחיצה נוספת על שס זה מבטלת את הבחירה. לעומתו, הערך 2 (60ַ0ַח16אם) מאפשר בחירה באופן דומה לבחירת קבצים בסייר פעוססחו/. המאפיין המקבל כערך את בחירת המשתמש (או במילים אחרות את שס הקובצ שנבחר מתוך הרשימה) הוא: סתהת1ו1ע. 1161ת לדוגמה: 621% 38 561608602116 תנכת תהא116ת.1161] = 9116ע56160₪60 0 6ם/ - ערכת כלים שילוב שלושת הפקדים בדרך כלל, שלושת הפקדים למיפוי דיסק משתלבים יחד ביישום. בפני המשתמש ניתנת האפשרות לדפדוף ולשינוי הכונן, התיקיות והקבציס כאחד. נתבונן עתה כיצד ניתן לשלב יחד את שלושת הפקדיס ממבט שורות הקוד. כאשר המשתמש בוחר בכונן מסויס מתוך רשימת הכונניס, הוא מצפה שכל התיקיות הקיימות בכונן שבחר יוצגו בפקד רשימת התיקיות. באופן דומה, כאשר הוא בוחר בתיקיה מתוך רשימת התיקיות, הוא מצפה לראות ברשימת הקבציס את כל הקבצים, או חלק מהס אס נקבע להס קריטריון דרך המאפיין חזסו8=. כל שנותר הוא לבצע את הפעולה הרצויה, עיין בתרשיס 11.14 : ו דא דפוספת = ו הזה זטסזה ב סוט 5 כ - 6 תרשים 11.14 בתרשים מוצג טופס המאפשר, בעזרת פקדי מיפוי דיסק, לבחור בדיסק בקוב> (מסוג דאז). בלחיצה על הלחצן ששסח5 יוצג תוכן הקוב בתיבת הטקסט. כיצד נבצע את הפעולות הללו בשורות קוד! בשלב הראשון נקבע את מאפייני הפקדיס שבטופס על פי טבלה 11.4. פרק 11: קבצים 201 טבלה 11.4 ו ד בשלב שני ניגש לכתיבת הקוד לאירועיס המתאימים, שיופעלו על ידי המשתמש. כאשר המשתמש בוחר בכונן הרצוי מתוך רשימת הכונניס, הוא מפעיל את האירוע 68 של הפקד. אם כן, האירוע 6בח8ח0 הוא האירוע בו נרשוס את שורות הקוד הגורמות לרשימת התיקיות להשתנות בהתאס לכונן הנבחר. הנה כך: () 06ם8ם6 6טנ1עפץאט32 סט5 866ע21ק סטנעת. סטנעכקץאטעט = םס86ע.2נפץאת1ב סמט5 תמ זכור, אס המשתמש יבחר בכונן :4 ולא יהיה בו דיסקט, התוכנית תופסק עס הודעת שגיאה. כדי למנוע זאת עלינו לכתוב מראש את שורות הקוד המטפלות במצבי שגיאה (נעשה זאת בפרק 20). באירוע 86ח008 של הפקד פ6עוזסץוצזט קבענו שהתיקיות שיוצגו בפקד זוסץזופ יהיו אלו שנמצאות בכונן הנבחר. באופן דומה, בחירת המשתמש באחת מהתיקיות המוצגות ברשימה תפעיל את האירוע 86ַח8ח0 של הפקד זוסעוזוט, לכן נכתוב לאירוע זה את שורות הקוד המורות לפקד 6וו=ץ!ו= להציג את רשימת הקבצים (מסוג %)) הנמצאיס בתיקיה שנבחרה. שורות הקוד הן: () 86ם028 שנ1סץא12ה סט5 866ע21ק ם86ת.תנתץאענה = ם116.28%6עצא11ע ספטפ סמ כאשר המשתמש בוחר בקוב> שברצונו להציג בתיבת הטקסט, אין צורך לכתוב לכך שורות קוד מיוחדות. המאפיין 6התהחסוו=.6!ו= ץו!ו- שומר את שס הקובצ הנבחר. כל שנותר הוא לכתוב את שורות הקוד לאירוע 01106 של הלחצן ששסח05חס אשר יפתח את הקוב הנבחר ויעתיק את תוכנו אל תיבת הטקסט 8וו=0א. שורות הקוד הדרושות: 2 68ם/ - ערכת כלים ()6110% אסםפ6מתס סגמ5 217866 %ם1ע5 28 5%0256160%602116 תנק %ת1ע56 28 קת562760 תנכס סת8א11%ת. 116עצא11ץ 6 "" 8 ב86ק.:נכץ6120 = 562561606607116 1 פ2 סטסם1 עסץע 5628561606609116 ם6סס (05)1 %סא 116םח סכ 0ת565276 ,%1 סטסם1 6שתו1תם 551670 6 %6א%2116.76%א% = %6א116.76%ת6א6 קסס1 1 01086 ספטפ סמ תיבות דו-שיח אס המטרה שלנו להציג בפני המשתמש את היכולת הפשוטה של פתיחת קוב או שמירתו, אין צורך להשתמש בפקדים למיפוי דיסק. ויז'ואל בייסיק מספקת תיבות דו-שיח הדומות לאלו שבסביבת פששססחו//, המאפשרות פתיחת קובץ, שמירתו, הגדרת מדפסת ומאפייני הדפסה וכו . בוויזיואל בייסיק קיימות חמש תיבות דו-שיח מסוג וה המקלות עלינו, כמתכנתים, את העבודה. במקוס ליצור טופס מיוחד אשר יטפל בפתיחת קוב, שמירתו, טיפול בהגדרת הדפסה וכוי, נוכל להשתמש באחת מתיבות הדו-שיח המוכנות. אלו הן: 1. ח6מ0 - לפתיחת קובצ. 2 5 6צ58 - לשמירת קוב. 3 זס|60 - לבחירת צבעים. 4. +חס= - לבחירת גופנים. 5. ז6+חוזק - לבחירה והגדרה של הדפסה. בתיבת דו-שיח נוספת, ס!46, לא נעסוק במסגרת ספר זה. הפקד פס!גּוסחסוחוחוס6 כדי שנוכל להשתמש באחת מחמש תיבות הדו-שיח שמספקת לנו ויו'יואל בייסיק, עלינו להוסיף פקד מיוחד לטופס. נבחר מארגז הכלים את הפקד 9!08סחסוח ו 60 אין חשיבות למיקוס הפקד בטופס, מכיון שהוא אינו נראה למשתמש בומן הפעלת התוכנית. אס פקד וה אינו מופיע בסרגל הכלים, נוסיף אותו באופן ידני (על כך למדנו בפרק 3). ונמקס אותו במקוס כלשהו בטופס. פרק 11: קבצים 203 הסק/שסחפ לאחר שמציבים את הפקד בטופס צריך להגדיר את שמו ואת סוג תיבת הדו-שיח שעליו לפתוח. תחביר ההגדרה: 16 . ססות 0 81 בנ מסתת 00 בדוגמה הבאה, תיבת הדו-שיח שתופיע תאפשר לפתוח קוב קייס (תרשים 11.15): תסססזוסם5 . 3106 נפץאש 1 זו :חן 100% ₪| | = | 08 [+ ו >] :6ע! זט שו שוהס-1630 35 הפק -] תרשים 11.15 שיס לב ששם הפקד נקבע בחלון המאפיינים, ולא בשורות הקוד שבדוגמה. מעיון בתיבת הדו-שיח ח008 נראה שהמשתמש יכול לבחור קבציס מסוג וחז1 אשר יופיעו בתיבת הדו-שיח ושאותם יוכל לפתוח. סוגי קבציס מוצגיס בתיבת הגלילה ''1ס ₪165 6 . את סוגי הקבציס ואת תיאורס ניתן לקבוע בעזרת המאפיין זפווו=, הנה כך: 2 6802106%102 21158621 1ת610ק1ע346502 הערך ח00קוז0650 מייצג את הטקסט שיתאר את חתך הקבצים ו-זפווו1 מייצג את הקריטריון של הקבצים שיופיעו בפועל בתיבת הדו-שיח. לדוגמה, |סאם.* |(6אם.*) 1168ע 6א76" = ע11062ע.18100כץ%ש61 "*.,* |(*.*) 1168ע 11ת מסקסאסם5 . 81006 נפץ% 31 את הקריטריון להצגת הקבציס צריך לכתוב לפני ההוראה להציג את תיבת הדו-שיח. כדי לקבוע את אחד מהקריטריוניס כברירת מחדל, נשתמש במאפיין א6טח! זסזוו=. 4 6658ם/ - ערכת כלים לדוגמה: |סאם.* |(6א₪.*) 1168ע 6א76%" = ע11062ע.18100כץ410% ל | 6% בי ות 1 = א66%ת116621ע.3100 נפצץא316 מסקסחסם5 . 3100 נפץ%א 1 תיבת הדו-שיח מחזירה כערך את הקוב שנבחר על ידי המשתמש. כאשר המשתמש לוחץ על הלחצן ח6ק0 ערך זה מוחזר למאפיין 6ְהַַח6ו1=. כל שנותר הוא להשתמש במאפיין וה כדי לדעת איזה קוב לפתוח. לדוגמה: 1 פב סטסם1 עסע 6ת(8א116ע.18100כעץ310% מססס כאשר המשתמש לוח על לחצן !680068, מבטל את פעולת הבחירה וסוגר את תיבת הדו-שיח, היא אינה מחזירה ערך. כדי לטפל במצב בו המשתמש לותצ על |06ח08, נקבע את מאפיין התיבה ז0זם!608₪66 ל-6טזד. מאפיין זה קובע שכאשר המשתמש לוח על הלחצן !080068 הוא גורס לשגיאה. מכיון שכך, אנו כמתכנתים נדאג לטפל בשגיאה זו בקוד, או במיליס אחרות, כאשר יש שגיאה בשלב זה של התוכנית נדע שהיא באה כתוצאה מבחירת המשתמש בלחצן |08008. בשיגרת הטיפול בשגיאה נכתוב את שורות הקוד המתאימות, ובאופן טבעי נורה לתוכנית לסיים את השיגרה ולסגור את תיבת הדו-שיח. לדוגמה: ()א61106 ם116006עטתת סג5 217866 162סתהתזתם 00710 מעספעם ם0 תסססזוסם5 . 4106 בנפץא 1 (6ת8א116ע. 8108 נפץא816%) 118נעתפססס 0811 ספטפ 16א₪ :%ע16הסתהתיתת תסססגטס 061ת08 268860ק עספס' ספטפ 16אם פופ םם 6 סח תיבת הדו-שיח 6צ58/ש0ח5 דומה לתיבת הדו-שיח ח6ק0)/וסח5 במאפייניס ובערך שהיא מחזירה. ההבדל הוא בממשק המשתמש בלבד. במקוס הכותרת ח6ס0 והלחצן ח008 שבתיבת הדו-שיח ח6ק0ששסח5, נמצא כאן את 45 586 ואת הלחצן 6צ58 בהתאמה (תרשיס 11.16). פרק 11: קבצים 205 [<]?, 5 536 ו |₪ ₪ [+ סוט יש ] :חן 8% 5 ]| 6806 | [08חה [+ >] :6 38 586 שוהס-830] 35 השס -] תרשים 11.16 זס|ס6ץצסח5 תיבת הדו-שיח זס!60ש0ח5 מאפשרת למשתמש לבחור אחד מהצבעים הקיימיס בלוח הצבעים, או ליצור צבע באופן ידני, על ידי ערבוב צבעיס (תרשים 11.17). | ופה ה ה מו = | או ה ה | א ₪₪₪ ₪77 |₪ ₪ ]מק .₪ ₪3 ₪ ₪ ₪ ₪7 ₪₪₪₪ ₪ ₪ ₪ ₪ ₪ ]₪ |₪₪₪ א :סוס סלפ ₪ = | 0] חפסום 50 החאף | קת אסאס | חספ 0 86 | 8 תרשים 11.17 4 כאשר המשתמש בוחר בצבע הרצוי לו וסוגר את תיבת הדו-שיח, המאפיין זסוס6 של הפקד מקבל כערך את הצבע שנבחר על ידי המשתמש. כדי לפתוח את לוח הצבעים 6 65ם/. - ערכת כלים בהצגת הצבעיס הבסיסיים של המערכת, צריך לאתחל את המאפיין פ985!= של הפקד עס הקבוע 4ח|508 60/00. לדוגמה: ()01108 000001058 מט5 17866עק 162תהתתעת 6070 מסעעם ת0 6טעץ = 08עעע001ם218108.08ץ316% ךס = 310%018108.21865 10%ס60חסם5 . 8106 נפץא 1 עס18100.001תץ91% = ע286%0010. סתַ8א6א6 סמטפ 16אם : 162סת8התעת סמטפ 16אם מטפ שמת לחיצה על |08ח08 גורמת לשגיאה, המטופלת בשורת הקוד, בדיוק כמו שהדבר נעשה בתיבות הדו-שיח ח0026) ו- 08%6. +חס; סח תיבת הדו-שיח +חס-ש0ח5 מאפשרת למשתמש לבחור גופן, גודל וסגנוו של כתב (תרשים 11.18). 45 5] א 55160 145 הופו6זה 1 יל" ו סורוס פטס יזר סו ב הסט יל טעמו קד תרשים 11.18 כאשר המשתמש לוח על הלחצן 06 ומאשר את בחירתו, הוא מעדכן למעשה את המאפייניס הבאיס של הפקד (טבלה 11.5): פרק 11: קבצים 207 טבלה 11.5 כדי שניתן יהיה להשתמש במאפיין זסוס60, צריך להקדיס ולהציב את הקבוע !003 כערך במאפיין 1385=. בעזרת המאפיין 5פָ9!= גס ניתן לקבוע איוה סוגי גופניס יוצגו בתיבת הדו-שית: * הקבוע 0018= ח50766 60/0 גורס להצגת גופני מסך. * הקבוע פוחס=זס)חוזק = 0016 גורס להצגת גופני מדפסת. * הקבוע ה80% 00/0 מציג את שני הגופנים יחד. זכור לקבוע את ערכי המאפיין 895!= לפני הצגת תיבת הדו-שיח, אחרת תוצג הודעת שגיאה (תרשים 11.19). 5 !)ו 5זחס] סח זב שזסחוד 1 .וס [9+8חזו 0) חב |סזוחס=) 16 החסז! זסטוס! 5והס= שו השס 6ו835 [ט5ו/ ]]ס5סזסוו 4" סיווס 6רחו-חט 5חם] סז | =וחו חס תרשים 11.19 8 66ם/ - ערכת כלים שורות הקוד הבאות מדגימות שימוש בתיבת הדו-שיח +חס= ששסח5, כדי לאפשר למשתמש לקבוע את הגופן וכל תכונות הכתב אשר יוצג בתיבת הטקסט 6וח8))) : ()6110% אסםפ6שתס מט5 2217866 סטעך = ע0סעצעמ61סת08.%ם0סע310 ש16סתהתעעם 00710 עסעפם ם0 8 סס 00102200 = 1865ע.02%ע410 %מסעאסם6.5םסעש31 סתפא . 6>תסע . סמהא6א5 68. סתסת . 6ת6%8א 4.ָ .ס03100 = 6.2016ת0ת. סתהא6א1 0.ָ סמ 01090 = 6.168110ם0ת.ס6ת8א6א6 10.6 = 6ת66211ם6.0ם0ת.סת8א6א6 גועם%9%21%6%ת20.%ת01020 = טעםת6%א1%ע6.5%2ם0ת.סתהא6א6 31020.0 = 02600102 סתַבא6א6 סמטפ 16אם : 162סתה8העעת סמטפ 16אם מטפ םת סתהא6תסע. %ת0סע31 10.6 8 / זסזחוזק עצסח5 תיבת הדו-שיח ז6+חוזק ש0ת5 מאפשרת למשתמש להגדיר מדפסת רצויה ואת הגדרות הדפסה של הפלט המיועד (תרשיס 11.20). - | 7 | חס 52ב ה] תרשים 11.20 פרק 11: קבצים 209 באמצעות תיבת דו-שיח וו המשתמש יכול לשנות את הגדרות המדפסת ולשנות את מדפסת ברירת המחדל. בנוסף, המשתמש קובע את מספר העותקים הנשלחים להדפסה, אילו דפיס מתוך המסמך להדפיס ועוד. ברגע שהמשתמש לוחצ על הלחצן 008 ומאשר את ההגדרות שבתיבת הדו-שיח, הוא מעדכן את המאפייניס הבאיס של הפקד (טבלה 11.6): טבלה 11.6 משמעות מספר הדף שממנו תתחיל ההדפסה הדף האחרון בהדפטה שליחת הפלט למדפסת בעורת תיבת הדו-שיח ז6+חוזק/ש0ת5 המשתמש קובע את הגדרות ההדפסה ואת אופן ההדפסה, אך אין הוא שולח בפועל את הפלט למדפסת. שליחת הפלט למדפסת נעשית בעזרת ה60|!!60)!0 5ז6+חוזש (אוסף המדפסות). הו אובייקט המכיל את כל המדפסות המעודכנות (והניתנות לשימוש) במערכת ההפעלה. את אוסף המדפסות מייצג האובייקט ז6+חוזש. טבלה 11.7 מציגה חלק מהמאפייניס והשירותיס של אובייקט זה ואת משמעותם: טבלה 11.7 [0000000000000 | שירות 00 0)] (8009) חוטו//ואפד ( )סד הדפס +חחק מעדכן הגדרות ושולח את המסמך 6 להדפסה בפועל מפסיק מיידית את ביצוע ההדפסה סספוווא 0 668ם/, - ערכת כלים שורות הקוד הבאות מדגימות הדפסה של המשפט ''6וד +חפוחטסספ'י במרכו הדף (בשורה העליונה): 6ת1גע56 פב 862850 תנכת ב6נחספאנאט תנק "11%106" 6םתסתטססכע" = 5620850 2 / (5658506) מ6801866א716%.עס6סת1צק = מ508166)אט ם516 הט - 2 / מ50816%8106.ת6סת1לק = א6מסעלתט0.עסס6ת1תק 5% סמסתנ1עשקת.ע6סת1עק 06. טססת1עק רשימת המדפסות באוסף מקבילה לרשימת המדפסות המופיעה בקטגוריה מדפסות (9ז6)חוזק) שבחלון לוח הבקרה. לכל מדפסת יש אינדקס המוהה אותה (כאשר המדפסת הראשונה בעלת ערך 0). האובייקט זסוחוזש פונה תמיד ובאופןו אוטומטי למדפסת המוגדרת כמדפסת ברירת המחדל. אבל יש אפשרות לבחור מדפסת אחרת מהאוסף ולהגדיר אותה לצורך ההדפסה, על פי התחביר הבא : (ת)5628םת1עקע = ע66םת1עע 566 כאשר ח מייצג את האינדקס של המדפסת שנבחרה מתוך האוסף. משפט זה משנה את מדפסת ברירת המחדל בלבד. אין אפשרות להוסיף או למחוק מדפסות בעזרת האובייקט זסוחוזש. פעולות אלו מתבצעות דרך לוח הבקרה בלבד. אחרי שנבחרה מדפסת, ניתן להדפיס ישירות אליה. האובייקט זפזחוזש מספק מיגוון רחב של שירותי הדפסה של טקסט וגרפיקה, למידע נוסף היעור במערכת העורה של ויז'ואל בייסיק. הדפסת טופס ניתן להדפיס טופס ישירות למדפסת באמצעות השירות וחזזוס=+חוזס. לדוגמה: ותעסש שת 1עק . ם נ תת תעסששת 1צס. סא כאשר אין מציינים את שם הטופס, ויז'ואל בייסיק מדפיסה את הטופס הנוכחי. אס אנו לא מעונייניס להדפיס את כל מה שמוצג בטופס, כמו למשל חלק מהפקדיס המצוייס בו, יש להגדיר תחילה את המאפיין 6|סו9ו/ שלהס ל-8158= ורק אחר כך לקרוא לשירות וחזסת%חוזש. פרק וו: קבצים 211 תרגול 1. כתוב תוכנית אשר תקבל שס קוב ומסלול, ותדפיס את תוכנו לתוך תיבת טקסט. 2 בצע את תרגיל 1, אך הפעם במקוס שהמשתמש יקיש שם קובצ, פתח תיבת דו-שיח ומתוכה הוא יבחר בקובצ המתאים. שיס לב שעל תיבת הדו-שיח להציג קבצי %% בלבד. 2 658ם₪/. - ערכת כלים 2: תפריטים יישומיס רביס בסביבת העבודה החלונאית משלבים בתוכם תפריטים. התפריטים, מלבד הנוחות והבהירות שהם מקנים ליישוס, חוסכיס בו מקוסם רב. בוויז'ואל בייסיק קייס עורך תפריטים, בעזרתו תוכל להוסיף שורת תפריטים ליישוס שלך. עורך התפריטים כדי להציג את עורך התפריטיס (תרשים 12.1) בחר באפשרות זס06ם טח6א פד שבתפריט 5!ססד, או לחץ על הלחצן שבסרגל הכלים (לחילופין, הקשה על 6171+5 מציגה את העורך). | 6 הְֶר0-0-00000000000- :הסוס | | -) חב [=---- (סא] :ספ וס /] 1% [=. תסו - ס] 3605 4600] [ --6] :10א6חס-קופתן טחוש - ] ספול > ופה >ן | ]| א | ₪ |+|+|+|5 תרשים 12.1 בעזרת עורך התפריטיס תוכל לבנות את שורת התפריטים. בנוסף, ניתן לקבוע באמצעות העורך את המאפייניס העיקריים של כל תפריט ותפריט. את מאפייני פרק 12: תפריטים 213 התפריט ניתן לשנות באופן דינמי בזמן הפעלת התוכנית, ובכלל זה הוספה דינמית של אפשרויות לתפריט. בניית ההיררכיה שורת התפריטים מציגה למשתמש את התפריטים הראשיים בלבד, בשעה ששאר האפשרויות אינן גלויות. ניקח לדוגמה את התפריט 118= (המצוי כמעט בכל יישוס), כל האפשרויות שבו מוסתרות והמשתמש רואה את שס התפריט 1!8= בלבד. רק כאשר המשתמש בוחר בתפריט מוצגת בפניו רשימת האפשרויות שבתפריט (תרשים 12.2). אפשרויות התפריט הן תת-תפריטים של התפריט הראשי 18=, והן נמצאות תחתיו בהיררכיה. תרשים 12.2 כאשר נבנית ההיררכיה, התפריט ₪18 נמצא בראשה והאפשרויות שכלולות בו נמצאות רמה אחת מתחתיו. תת-תפריט של אחת מאפשרויות אלו יהיה רמה נוספת למטה (תרשים 12.3). [חזזס] .₪ 6 ובו 1 זו בוזם סו 9 וחפום תרשים 12.3 שיס לב שהתפריט )+8חזזס= בתרשים 12.3 נמצא באותה רמה של התפריט 18=, כי שניהס תפריטים ראשיים. חלון עורך התפריטים מחולק לשניים (תרשיס 12.1): בחלקו העליון ניתן להגדיר את המאפיינים ובחלקו התחתון נבנית ההיררכיה. כל רמה בהיררכיה באה לידי ביטוי בתזוזה ימינה של האפשרות (תרשים 12.4). ככל שהאפשרות נמוכה יותר מבחינה היררכית, היא מוצגת ימינה יותר (זוהי מערכת תפריטיםס באנגלית, ולכן התצוגה 4 668ם₪/ - ערכת כלים נפרשת ימינה). התפריטים השמאליים ביותר הס התפריטים הנמצאים בראש ההיררכיה והם גלוייס מייד למשתמש. || יצ ו ב | 6 | [368 6 סוחו ‏ ] חב - (סחסט) | = :מטספזסת5 :חן [+ שחסא - ס חסוו05ק306ו600] 0 ן :10א6סחסקופון תו -] פופו שן שן | מ | בו 60 5₪26יייי תרשים 12.4 בראש החלק התחתון של חלון העורך יש שלושה לחצנים : 1א6א, חספח! ו- 606ו8ם. בעזרת הלחצן 081846 ניתן למחוק את האפשרות המסומנת בתיבת הרשימה, כאשר נרצה לבטל תפריט (או אפשרות) משורת התפריטים. הלחצן +ז58ח1 גורס להכנסת תפריט חדש לפני (י'מעליי) התפריט (או האפשרות) המסומנת בתיבת הרשימה. הלחצן +א6א מוסיף פריט נוסף לרשימה. שיס לב שניתן לעלות ולרדת ברשימה בעזרת לחצני החיצים מעלה-מטה בהתאמה. תת-תפריט כדי להפוך תפריט ברשימה לתת-תפריט (או לאפשרות בתפריט ראשי) נמקס אותו מעט ימינה ברשימה. ידחיפהיי ימינה של התפריט ממקמת אותו רמה אחת למטה, לחילופין, 'ידחיפה'י שמאלה ממקמת אותו רמה אחת למעלה. פרק 12: תפריטים 215 שיס לב, התפריטים הראשיים (המרכיבים את שורת התפריטים נמצאים בצד השמאלי ביותר של הרשימה). יידחיפתיי תפריטים ימינה ושמאלה נעשית בעזרת לחצני החיצים ימינה ושמאלה בהתאמה. בתרשיס 12.4 מופיע התפריט ₪18 בצד השמאלי ביותר. תפריט וה נמצא בראש ההיררכיה והוא התפריט שיופיע בשורת התפריטים שביישום. תחתיו נמצאיס תת-התפריטיס (האפשרויות) ש6אז, ח6ק0 ו-6צ58. תפריטים אלה נמצאים תחת התפריט 8!ו= ומעט ימינה ביחס למיקומו. מיקוס זה מגדיר אותס כתת-תפריטיםס של התפריט 8וו=. התפריט )החחזס=, למשל, נמצא במיקוס זהה לתפריט 6וו=, ולכן הוא יוצג כתפריט ראשי ויופיע בשורת התפריטים שביישוס. לחיצה על הלחצן הימני גורמת ליצירת תת-תפריט של התפריט וח זס=, זו האפשרות ח4!10. לחיצה נוספת על הלחצן הימני יוצרת תת-תפריט לתת-התפריט ח6ו|4 - האפשרויות 64], ז%9ח60 ו- +חףוח. במקרה זה, יופיע חצ לצד התפריט חִףָו| המורה שבתפריט וה נמצאות אפשרויות נוספות (תרשיס 12.5). <ןם) -. [חזס] .₪ 6 ו ו בוזם סז 26ו5 וחפום תרשים 12.5 מאפיינים בחלק העליון של חלון עורך התפריטים נקבעיס המאפייניס של כל תפריט והאפשרויות המרכיבות את שורת התפריטים. חלק ממאפיינים אלה אפשר לקבוע באופן דינמי משורות הקוד שבתוכנית. המאפיין הראשון ח0סו)ק68 קובע את כותרת התפריט. כותרת זו רואה המשתמש בשורת התפריטים של היישוס, כדוגמת 6=, 0ם, %פחזסת וכוי. מאפיין וה גס מאפשר לקבוע את '"מקש הגישה לתפריט. יימקש גישהיי הינו המקש במקלדת שמקשים עליו בצירוף המקש !| כדי לבחור בתפריט ללא שימוש בעכבר. מקש גישה מאופיין בקו תחתי תחת האות בשס התפריט, המייצגת אותו. לדוגמה, בתפריט יי6ון=י לחיצה על =++/ במקלדת כמוה כבחירה בתפריט 1!8=₪ בעזרת העכבר. כדי לקבוע את מקש הגישה לתפריט, צרף את התו 6 (במאפיין חס7%ק08) לפני האות אשר קבעת כמקש גישה לתפריט. לדוגמה, כדי ליצור את התפריט 'י8ון=' (שבו מקש הגישה =+)\) קבע את ערך המאפיין חסוק08 ל- ''8ו-8'י (תרשים 12.6). 6 68ם/, - ערכת כלים זס!ו = טח6 תרשים 12.6 צירוף התו 8 לפני האות = יגרוס להצגתו בתפריט עס קו תחתי (=) ולהפיכתו למקש גישה. הקשה על =+:| במקלדת מייצגת בחירה בתפריט פוו=. המאפיין ₪816 משמש בתפקיד והה למאפיין ₪8ח8 של פקד רגיל. בשס וה מתייחסים לתפריט או לאחת מאפשרויותיו בשורות הקוד. המאפיין א06ח! קובע את ערך האינדקס של התפריט, אס תפריט זה הוא חלק ממערך תפריטים. אם לא קייס מערך תפריטים, אין למאפיין גה כל משמעות. כאשר כמה תפריטיס מהוויס מערך, לכולס יהיה אותו שס (פוח8א) והס יובדלו בערך האינדקס שלהם, כאשר האיבר הראשון במערך יהיה בעל ערך אינדקס אפס. המאפיין 6066660 גורס לסימון (או לביטול הסימון) * לצד התפריט (תרשים 12.7). וו ה וחזס = | תרשים 12.7 פרק 12: תפריטים 217 בתפריט יש אפשרויות אשר הציון לכך שהן נבחרו הוא הסימן * לצידן. בחירה נוספת באפשרות מוחקת את הסימן * ומבטלת את פעולתן. הוספה והסרה של הסימן * מהתפריט נעשיס בעזרת המאפיין 6066%660. באופן דינמי המאפיין יקבל ערך 6טזד להוספת הסימן * וערך 3!86: להסרתו. לדוגמה, טע" = 60%80םת116.0שטתת דוגמה נפוצה לשימוש במאפיין זה היא האפשרות 5ז8פ|ססד שהוא תת-תפריט לתפריט ששסו/ (תרשיס 12.8). הַטפפס ב - ו וו > זו הזזס=] 53 מ 1500126... תרשים 12.8 בחירה בסרגל הרצוי (כדוגמת ₪0 ו- 0810ח5%9 בתרשים 12.8) מציגה סרגלי כליס אלה. ביטול הבחירה, תבטל את הסימון * ותסתיר את הסרגל. המאפיין 6פאחם קובע אס התפריט יהיה פעיל או לא. תפריט לא פעיל מוצג באפור ולחיצה עליו אינה מאפשרת את הפעלתו (תרשיס 12.9). כלומר, סימון * בתיבת הסימון של המאפיין 6מִ8ח= גורס לתפריט להיות פעיל וביטול הבחירה גורס לתפריט להיות בלתי פעיל. >1ם) ב [חזס] .₪ )הז 3518]] 6וום ו עס ןק תרשים 12.9 דוגמה מוכרת מסביבת חלונות לתופעה בה אחת מהאפשרויות בתפריט אינה פעילה, היא האפשרות 08546 שבתפריט )61. כל עוד לא בוצעה העתקה (עץ6000) או גזירה 90) ללוח, אין משמעות לאפשרות ההדבקה (08516). במצב וה האפשרות 789%6 אינה פעילה. כאשר המשתמש מבצע את אחת האפשרויות צץ0ק00 או 0% הופכת האפשרות 9859%6 לפעילה. הפיכת תפריט לפעיל או ללא פעיל נעשית בעזרת המאפיין 6פהתם. המאפיין 151016 קובע אס התפריט ייראה למשתמש או לא. סימון * בתיבת הסימון 6 גורס להצגת התפריט (או אחת מאפשרויותיו). ביטול הבחירה גורס להסתרת 8 68ם₪/, - ערכת כלים התפריט מעיני המשתמש. כאשר התפריט מוסתר, מקשי הגישה והקיצור שלו אינס פעילים. ביצוע אפשרות התפריט בשורות קוד בדומה לפקד רגיל היודע להגיב לאירועים שונים, גסם לחיצה על התפריט גורמת להתרחשות האירוע אסו|0 של התפריט. האירוע 010% של התפריט הוא השיגרה בה צריך לכתוב את שורות הקוד שיתבצעו בזמן בחירה בתפריט. לדוגמה, ()א01106 16א16₪%נעטתת סט5 217866 בת פופ םם שיגרה זו תופעל כאשר המשתמש בוחר באפשרות +א= שבתפריט 8!ו=. במקרה וה התוכנית תבצע את המשפט 6חם והיישוס ייסגר. והנה דוגמה נוספת : ()א0110 11601086עגטתת סג5 217866 סא 1036מטס פופ םם השיגרה המופעלת כתוצאה מבחירת המשתמש באפשרות 01056 שבתפריט פוו=, סוגרת את הטופס הנוכתי ומשחררת אותו מהציכרון. הוספת תפריטים באופן דינמי במהלך ביצוע התוכנית צריך לפעמיס להוסיף באופן דינמי אפשרויות תפריט שלא היו קיימות בתפריט בתחילה, או שהוסתרו. כאשר האפשרויות מוגדרות מראש, ניתן ליצור אותן בעורך התפריטים ולהיעזר במאפיין 6/פ181/ כדי להציגן בוּמן המתאים. פתרון זה אינו יעיל כאשר האפשרויות אינן קבועות או אינן ידועות מראש. דוגמה נפוצה לשימוש בהוספה דינמית של אפשרויות לתפריט היא רשימת המסמכים האחרוניס שנפתחו ב- זס/\ (תרשים 12.10). במקרה זה, שמות הקבצים אינס ידועיס מראש ויש להוסיפם באופן דינמי בלבד. שליחה.. הוספת תגית ניתוב... הצבה בתיקיית 6בחבּתסאם... 1 2 א6בחו 3 ]5 וצואה תרשים 12.10 פרק 12: תפריטים 219 כדי להוסיף אפשרות באופן דינמי לתפריט, היא חייבת להיות חלק ממערך. את האיבר הראשון במערך יוצריס מראש בעורך התפריטים. איבר ה יקבל את ערך האינדקס 0 (אפס) וכל איבר נוסף שנוסף באופן דינמי יקבל את הערך הבא לפי הסדר. אס לא תרצה שהאיבר הראשון במערך יוצג למשתמש, הסתר אותו בעזרת המאפיין 0!6ו15/, אך קיומו במערך האפשרויות הכרחי לצורך הוספת אפשרויות באופן דינמי. כדי להוסיף איבר (אפשרות) למערך צריך להשתמש במשפט 1.086. לדוגמה, (1) %ת1162606עטותת 1086 משפט זה מוסיף איבר למערך (המתבטא כאפשרות נוספת בתפריט). כדי להוסיף אפשרות נוספת השתמש שוב במשפט 1080, אך הפעם ערך האינדקס יגדל ל- 2. לדוגמה, (2) %ת162606 1עותת 1086 עתה, כשהאפשרויות נוצרו, נשאר רק לקבוע את ערכי המאפייניס שלהן. לדוגמה: סטעץ = 1812016ט. (1)%ם1162606תגותת "000. 68/012תפתטססכע צא:0" = תסבססאס. (1) 16260626 1עטתת ס6טעץ = 151016ע. (2) %ם1162606תגותת תת = ת610ס08. (2) %ם1162606נעותת ס6טעץ = 60%60ם0. (2) %ם1162606תגותת כדי להסתיר אפשרות מהתפריט, השתמש בשירות 6, או קבע את ערך המאפיין 6 ל- 8|56=. אפשרות מוסתרת עדיין קיימת בזיכרון. כדי למחוק אותה ולשחרר את הזיכרון השתמש במשפט שס!ח0ש. לדוגמה, (2) %ת1168606עטתת 1086מס טח6! קטססס טחסו קטקסש הוא התפריט המקוצר (ייתפריט קופציי) המוכר מיישומיס הפועליס בסביבת חלונות ומתקבל בלחיצה ימנית על העכבר (תרשים 12.11). >שש 5 חספ ,+ סז הראז א שו זג ו וסוס 5 16316 ופ סוהחסת ב תרשים 12.11 0 65ם/ - ערכת כלים טח6/] קטקס מכיל לפחות אפשרות אחת ואין הוא כולל כותרת כמו בשורת התפריטים הרגילה. כדי להציג תפריט מקוצר באופן דינמי במהלך התוכנית, מספקת לנו ויז'ואל בייסיק את השירות טחסושקטססם. תחביר השירות הוא: [0מ8תת0ס0ס100ס, ץ,א,11888,] ס6תהמתטתסת גוםסאסגוססק. [66%רפס] הארגומנטיס 0805, א, ץ ו-0ְחח וח0!060סם אופציונליים ואין חובה לשלוח אותס לשירות. משמעות הארגומנטיס: + 6והההטחפו - שס התפריט (במערך התפריטיס) שאת אפשרויותיו יצייג התפריט המקוצר. תפריט זה יוצג גסם בשורת התפריטים, אלא אס נבטל את הצגתו בעזרת המאפיין 6|סופו/. * 11305 - קובע את מקומו של התפריט המקוצר. לארגומנט גה שלושה קבועים: 1. תטו|6 וטח6ו)קטקסספעט ‏ - קובע את מיקוס התפריט משמאל לקואורדינטה % בה נלחצ העכבר. 2 ה0ו!זס+ה66טחסו)קטקסקפע ‏ - מציב את התפריט במרכז ביחס לקואורדינטה % בה נלח העכבר. 3 השו!+ 1 ט חס קטקסספצ - מציב את התפריט מימין לקואורדינטה א בה נלחצ העכבר (ערך גה הוא ערך ברירת המחדל). * ץ,א - קובעיס באופן מדויק את מיקוס התפריט המקוצר בטופס. * 0חהחוה000!סט - קובע איוו אפשרות מבין האפשרויות תוצג באופן בולט. בהתייחס לחלון עורך התפריטיס המוצג בתרשיס 12.12, שורת הקוד הבאה תציג את התפריט המקוצר המודגס בתרשים 12.13. ם116008עטתת , , , ,116עטתת טמסאסגוססק. סא פרק 12: תפריטים 221 זסזו = טח6 ו תרשים 12.12 [חזס] .₪ תרשים 12.13 2 ₪668 - ערכת כלים תרגול 1 צור את הטופס הבא: [חוזס-] .₪ ]הזז - לחיצה על האפשרות +חס= תגרוס להצגת תיבת דו-שיח המציגה גופניס. בחירת המשתמש תשנה את הכתוב בתיבת הטקסט לגופן שנבחר. כך גס לגבי הגודל. 2 צור את הטופס הבא : לחיצה על הלחצן הוסף תגרוס להוספת אפשרות לתפריט ששמו נכתב בתיבת הטקסט. פרק 12: תפריטים 223 חלק ב' תכנות מקצועי 6 68ם/ - ערכת כלים 3 מבוא ל- %א6צו6%/ | 1 <6עוז6 כשמריציס את תוכנת ויז'ואל בייסיק או פותחים פרויקט חדש, מוצג לפנינו חלון בו ניתן לבחור באיוה סוג פרויקט נרצה ליצור. אחת האפשרויות היא .| |סםא6עוסא. פרויקט מסוג וה מאפשר לנו לבנות 6%/עו01/ שיהודר אחר כך לקובצ |61. מדוע ליצור א6צו6% או | 1ם? השימוש ב-00/8%/ משפר את יכולת הפיתוח שלנו כמתכנתים. לפעמיס נרצה לפתתח בכלים אשר מיגווו האפשרויות התכנותיות אשר הס מספקים מוגבלות. במקרה זה אסטוזסה (או בצורתו כקוב ‏ 11) יעזור לנו מאוד. את כל היכולות והאפשרויות שנרצה שהתוכנות תבצענה ניצור ב-6צו461 ואותו נקשר אל כלי הפיתות (המוגבל) בו נפתח. העבודה מול 048% תיעשה על ידי שימוש במאפיינים אותס הוא מספק ובקריאה לשירותיס שלו. שיס לב, שכל כלי פיתוח התומך במיכון (חסוזפחחסוט) מספק לנו כלים לעבודה מול 6% שימוש נוסף שנעשה כיוס באמצעות 06% ואשר מקבל תאוצה, הוא הפיתות בארכיטקטורת פזפוד - 3. ארכיטקטורה זו קובעת כי כל יישוס יפותח בשלוש רמות (או שכבות). השכבה העליונה היא שכבת היישוס עמו עובד משתמש הקצה. השכבה התחתונה היא שכבת השרתים (9ז597/8) כדוגמת שרת מסד הנתוניס וכדוי, המספקים שירותים שוניס ליישום. ביניהן מפרידה שכבת הבינייס בה יושב 6שו01 ואשר תפקידו לתווך בין שתי השכבות העליונה והתחתונה. כאשר ליישוס דרוש מידע הנמצא במסד הנתונים הוא מפנה את בקשתו ל-₪4008% וזה מבצע עבורו את השאילתה ממסד הנתונים ומחזיר את התשובה חזרה ליישוס. היתרון שבשימוש בארכיטקטורה זו הוא, שלשכבת היישוס אין תלות בשכבה התחתונה המספקת לו שירותים. היות שכך, כאשר מתחלפת השכבה התחתונה או משתנה (למשל הוחלף מסד הנתונים), אין צורך לבצע שינויים ביישוס עצמו, פשוט נעדכן את 8%/עו801, היושב באמצע, באופן שיתאים לשינוי בשכבה התחתונה. בחלקו הראשון של הפרק נלמד כיצד ליצור פרויקט מסוג ‏ 1 |םא8ע6 ולהדרו לקוב וו המספק שירותים שונים או מהווה שכבה שנייה במודל 8זוד - 3. פרק 13: מבוא ל-א6עו0% | 227 הפעל את ויז'ואל בייסיק או צור פרויקט חדש ובחר באפשרות ‏ ] 601ע6%. בניגוד לפרויקט סטנדרטי (₪א08705ח5%9), אשר יוצר כברירת מחדל את הטופס הראשון, בפרויקט 1 01א40/6 נוצרת מחלקה חדשה. שים לב, ניתן להוסיף לפרויקט מסוג 1 ₪1א68ע46 טופס רגיל במידה ו-400/8% עושה בו שימוש. אולס, 6%/ו464 לא חייב לכלול טפסים כלל. לחילופין, פרויקט רגיל יכול לכלול מחלקות אף הוא. מחלקה (6!ט0ס!! 6!355) מחלקה בוויז'ואל בייסיק מיוצגת על ידי קוב מסוג 0|5. קובצ ה הוא אחד מהקבציס המרכיביס את הפרויקט כולו. מחלקה יכולה לכלול משתנים (0679חח6! הּזהכ), מאפייניס (485ו6ססזם), שירותיס (16%0005) ואירועיס (19ח8/=). המחלקה שומרת את הנתוניס בתוך המשתניס ומספקת מאפייניס ושירותיס חיצונייס לכליס אשר ישתמשו במחלקה זו. שים לב, למרות שמודול (11000/6) רגיל מספק פונקציות ושגרות ציבוריות אשר ניתן לפנות אליהן, עדיין הוא שונה במהותו ממחלקה. במחלקה, בניגוד למודול, אנו יכוליס ליצור מספר מופעיס (0689ח518ח!) של אותה מחלקה ואף מכלי פיתוח (או פרויקטיס) החיצונייס ל-|ו0 אליו שייכת המחלקה. משתנים (5ז6סוחסוש בּצְבּ) המידע, בו משתמשת המחלקה, נשמר במשתני המחלקה. בהתאם לכללי תכנות מוכוון אובייקטיס (60160ו027) 00[661)) משתנים אלו יוגדרו כ-816צוז₪. במצב וה לא ניתן לפנות אליהם או לשנות את ערכס מחו למחלקה עצמה, כך נשמרת ההגנתיות (ח68050!8%0ח!) על משתניס אלו, מכיון שרק מאפיין או שירות של המחלקה עצמה יכול לבצע שינוייס במשתניס אלו. אס הצהרת על אחד המשתנים כ-סו!פום, ניתן יהיה לשנות את ערכו גם שלא דרך המאפיינים והשירותים של המחלקה. ההצהרה על משתני המחלקה נעשית כהצהרה רגילה על משתנים בוויז'ואל בייסיק. לדוגמה: %6מ1ע56 28 סתהםתע 17866צק %ע66ססת1 28 286 17866צק מאפיינים (65ו1ו6קסזוק) באפשרותך להוסיף משתנים למחלקה, ואינך מוגבל במספר המאפיינים אותס תוכל להוסיף. מטרת המאפיינים היא לאפשר גישה לנתוניס לצורך קריאה ועדכון ערכיהס. מכיון שבדרך כלל יוצהרו משתני המחלקה כ-18אעוזש, נעזר במאפייניס לצורך עדכון או הצגת ערכי משתני המחלקה. 8 668ם₪/. - ערכת כלים כדי להוסיף מאפיין למחלקה, בחר באפשרות ₪70660076 406 שבתפריט פ|ססד. בחירה באפשרות זו תציג את החלון 066006 4006 (תרשים 13.1) בו תסמן את האפשרויות צְ+ו6קסזק ו- 6ו!פטק. |< | 6זט 06 300 ]החפש 67 חססחנם 7+ 08 שו 7 |פוק 6 5 35ב 81180|65/ 068 || -] תרשים 13.1 הקלד לתיבת הטקסט פחחה את שס המאפיין ואשר את הפעולה. ויז'יואל בייסיק יוצרת אוטומטית מאפיין בשם זה המבצע שתי פעולות. האחת, 66%, מאפשרת קריאת ערכי משתנה (או משתנים) של המחלקה, והשנייה, +16, מאפשרת לקבוע ערכיס למשתנה זה (תרשיסם 13.2). שים לב, כי בהתאס לתפקידם, 16% מקבל ערך ואילו 061 מחזיר ערך. הערכיס שמקבל או מחזיר הפונקציה יכוליס להשתנות על ידך בהתאם לסוג המשתנים שהגדרת. [<1ם) = [0006) 013551 - 6011ןסז: ₪ | - [64ע610קסזק] 6 ח] - (0181ח06) ם168ססם 23 116ת+0המתממ1מ 6סבלנבצסע מ3ס1[ססםת 23 ()16נתהתם 666 צסעפקסצע 6ג11מגום צְסעפקסצכע בתם (ת200168 23 סגו[בטחפעט 16)270741נ1עהתם 2656 צסעפקסמע 116מגום צסעפקסעס המת תרשים 13.2 לפי וה למשתנה 601-1!6חם ח!0 של המחלקה 1!6=ע₪ נוכל לפנות בשתי דרכיס. פרק 13: מבוא ל-א6ש6%/ | 229 האחת: 6 אסא פב 0189116 תנקת ת168ססת פב +0שם1ס תנקת 6 = %סמת1ס שורת קוד זו נעזרת במאפיין 1!6-0₪ח= +66 של המחלקה 6וו= עו. ואילו שורות הקוד הבאות ייעשו שימוש במאפיין 01|6ח₪ +16 כדי לעדכן את משתנה המחלקה: 6 אסא פב 0189116 תנקת ת168ססת פב +0שם1ס תנקת +6ת = 116תַת₪.116ת15ס שירותים (005ח₪6%) מלבד מאפיינים, מספקת המחלקה שירותים שונים. שירותים אלו הס שגרות ופונקציות לכל דבר. כאשר השירות מחזיר ערך נשתמש בפונקציה, וכאשר הוא מבצע פעולה כלשהי ללא החזרת ערך, נכתוב אותו כשיגרה. לדוגמה, השירות ₪101.64405 מקבל כפרמטר כתובת של משתנה מסוג מחרוזת (פָחוז5%) והופך את אותיות המחרוזת אותה הוא מקבל לאותיות גדולות. השירות ייראה כך: (0ת1ע55 28 0206א5%2) 2182668028 מט5 116סטק (0סעסא8%2) 00856 = 5628020 פטפ בתם שים לב, כדי שנוכל לקרוא לשירות הוא חייב להיות מוצהר כ-סו|סטם. הקריאה לשירות ממקור חיצוני למחלקה ייראה כך: 8 אסא פב קת158ס תנקת %ת1ע56 פג2 ס6תהאע5%62 תנכת "ץממהאכת" = סתַהאע562 6תהא5 106%%628ם2. קת 01 סתהאת%ה 6םמ1צק התוצאה שתודפס תהיה צאצומס. אס השירות מחזיר ערך נבנה אותו כפונקציה. שיס לב, השירותיס הס בעצס פונקציות ושגרות רגילות אשר חלים עליהס כל הכלליס עליהם למדת בפרק העוסק בשגרות ופונקציות. כמו כן, ניתן להוסיף למחלקה 0 68ם/ - ערכת כלים אירועיס (09ח8/=) להס תדע המחלקה להגיב, אולס לא נעסוק באירועיס במסגרת מבוא זה. הידור הפרויקט לקובץ ‏ | ₪1 כאשר סיימת לבנות את פרויקט .1 1םא8ע6 הכולל מחלקה (או מספר מחלקות עס או בלי טפסים ומודוליסם) ואשר מספק מאפיינים ושירותים שונים, עליך להדר את הפרויקט לקוב ||4. הידור הפרויקט לקובצ || נעשה בעזרת האפשרות ||0[6611.0ק 1886 שבתפריט 118=. אפשרות ואת יוצרת קוב || המכיל את המחלקה שיצרת עס השירותיס והמאפיינים אותה היא מספקת. בעזרת קובצ ||6 זה תוכל לשלב את יכולותיה של המחלקה בפרויקטים אחריס שתפתח או בכלי פיתוח שונים. נניח לדוגמה כי אתה מפתח בכלי התומך באוטומציה אך אינו יכול לעבוד מול מסדי נתוניס, מגבלה זו תוכל לפתור ביצירת קובצ |ו4. בקובצ ‏ ₪11 תבנה מחלקה אשר תספק את כל השירותיס הנדרשיס לעבודה מול מסד הנתונים. מתוך כלי הפיתות תקרא לקובצ || ובעזרת שירותיו תתקשר למסד הנתונים. במיליס אחרות, את המגבלות של כלי הפיתוח (חוסר יכולת לעבוד מול מסד הנתוניס) יפתור קובצ ‏ 11ס שיצרת. אתה פשוט תקרא לשירותיו והוא יבצע עבורך את כל הפעולות להן מוגבל כלי הפיתוח בו אתה מפתח. שיס לב, קובצ פרויקט .| ₪1א6צוז06 הוא פרויקט לכל דבר. משמעות הדבר שקובצ ||9 שתהדר ממנו לא יפעל אצל הלקוח לו תספק את הקוב> ‏ 11ם. עליך לפתח לו ערכת התקנה (בדומה לקובץ םאם) אשר תתקין לו את הקוב |ו0 לעבודה בצורה מלאה (ללא תלות בסביבת הפיתוח של ויז'ואל בייסיק). קובץ || לדוגמה כדי להטמיע את הנלמד עד כה, נבנה יחד קובצ |ו0 פשוט, לדוגמה, המאפשר לך לקרוא מתוך קבצי טקסט. השירותים אותס יספק ה-||0 הס : > פתיחת קובצ (8!ו₪ח6ק0). שירות אה יקבל כפרמטר את שס הקוב ומסלולו אותו נרצה שיפתח ויחזיר כערך את מספרו המזהה של הקוב. * קריאת שורה מקוב (6חו 56801). שירות וה יקבל כפרמטר כתובת של משתנה מחרוזת אשר לתוכה יכתוב את השורה הנוכחית בקוב, בו עומד המצביע, ואת מספרו הסידורי של הקוב>. * סגירת הקוב (01086₪18). שירות וה יקבל כפרמטר את מספרו המוהה של הקוב ויסגור אותו. פרק 13: מבוא ל-א6עו6%/ | 231 בנוסף יספק ||₪ מאפיין (8!ו0חם) אשר יחזיר ערך פטזד כאשר הגענו לסוף הקוב וערך 8/56= במידה ולא. לצורך בניית קובצ |ו0 ה פתח פרויקט חדש מסוג | |סםא6עטטס. המחלקה 6וו: עו כאשר נפתח הפרויקט (1 |₪םא6טוז6) הוא יוצר באופן אוטומטי מחלקה. שנה בחלון המאפייניס את המאפיין חא של המחלקה וקרא לה בשם 8וו=עו. עתה הצהר על המשתנה 6!ו"0001חם ח!0 מסוג ח68|ססם : תהס1ססם 28 118ע+ססתמת1ס 866ט1צק שיס לב, מכיון שאה משתנה, הצהרנו עליו כ-816עו]₪. מטרת המשתנה היא להודיע אס הגענו לסוף הקוב או לא. אס הגענו לסוף הקובצ משתנה זה יקבל את הערך פטזד. מכיון שאנו משתמשיס במשתנה במחלקה, ניצור מאפיין דרכו נוכל לקרוא את ערך המשתנה. בחר באפשרות 6ז06600:₪ 20606 שבתפריט 8!ססד ובתחר באפשרות ץ+וסססוש והקלד את השס 0-1!8ח₪ בתיבת הטקסט שותגּא כדי ליצור מאפיין 6 למחלקה. שיס לב, ה-|/0 בדוגמה שלנו אמור רק לספק מידע באשר לערך המשתנה 6 ה םחוס ללא אפשרות עריכה שלו. במקרה וה מחק את החלק )1.6 של המאפיין, והשאר רק את החלק +66 בו נעשה שימוש. מטרתו של המאפיין 6|ו-0₪ח= היא להודיע האם הגענו לסוף הקוב או לא, או במיליס אחרות מהו ערכו של המשתנה 601-116חםחום. שורות הקוד של מאפיין ה תיראנה כך: תם168ססת פ2 ()116עסתע 668 צ6ע62קס2ע 116סטק 86 = 116עבםע ץסעסקספתק בתם שירותי המחלקה בשלב זה נבנה את שירותי המחלקה. כאמור, שלושת שירותי המחלקה הסם: פתיחת קובצ, קריאת שורה מקובצ וסגירת קוב. פתיחת קובץ כדי שקוב> |ו0 שלנו יספק את האפשרות לפתיחת קובץ, נבנה את השירות 1!8-ח6סס. שירות זה יקבל כערך את שסם הקוב> ומסלולו אותו נרצה שיפתח, והוא יחזיר כערך את מספרו הסידורי של הקוב שנפתח. מכיון ששירות זה מחזיר ערך ניצור אותו כפונקציה. אל תשכח ליצור את הפונקציה כ-6ו!פט₪ כדי שזו תוכל להיקרא גס מחוצ ל-||0. 2 6658ם/. - ערכת כלים שורות הקוד של הפונקציה תיראנח כך: (9ם1ע5% 28 6ת8א8%2118 7781ץ116)2עת06 תסנססתגטץ 116סטק 2 8ב 16% 25 תטא116ע5ם1 תנקת 1 = תגא116ע6םת1 תטא116ע6ת1+ פת סטסם1 עסש 8(6א5622116 מססס תוא116עפ6ת1 = 116עת006 תסנססתטעץ התמ שיס לב, אס קרתה שגיאה במהלך פתיחת הקובצ, שגיאה זו תופיע ביישוס הלקוח של ה- |ו0 או במיליס אחרות, בפרויקט ממנו אתה עושה שימוש ב- ||0. קריאת שורה מקובץ שירות נוסף אותו יספק ה-|0 שלנו הוא: קריאת השורה הנוכחית בקובץ (השורה הנוכחית היא השורה עליה עומד מצביע הקלט בקוב). שירות זה (6ח1ו86860) מקבל כפרמטרים מצביע למחרוזת, אליה הוא ישים כערך את השורה שנקראה מהקובץ, ואת מספרו המזהה של הקובצ. מכיון שהשירות אינו מחזיר ערך (כי הארגומנט שקיבל הוא כתובת המשתנה) נכתוב את השירות כשיגרה. שורות הקוד של השירות 8חו 49801 תיראנה כך: מטא116ע6םת1 נ1הטצ2 ,סַת1ע5%6 28 6ם56271)סמנַתהסת2 סט5 116סמק (66062ת1 25 מפטו5 16א₪ ם8פם71 6טע71 = 116ע601תמת1ס +11 6 ,תטא116תסת%1 פ6טקםת1 6ת1ת פ6גמע = 116ת0%8הםמת1ס תסם?" (תטגא118ת%ם02)1ם +ך פטפ סתם סגירת קובץ השירות האחרון אותו יספק ה-!/0 שנבנה הוא 6105681|6. שירות וה יקבל כפרמטר את מספרו הסידורי של הקוב שנרצה שהשירות יסגור עבורנו. שורות הקוד של השירות 6!ו"6|056 הן : (ע%6062ם1 25 תטא116ע%6ם1 7/81ץ010562116)2 סט5 116סמגק וגוא116ע%ת1+ 601086 86 = 116ש+0תתת1ס פופ םם בוה סיימנו את כתיבת המחלקה וכתיבת הפרויקט כולו. לפני שנהדר את הפרויקט לקובצ |ו9, בחר באפשרות 00614165 שבתפריט +66[סזק ורשוס בתיבת הטקסט 6ח 608[סזק את השס |!פץ₪ כשס הפרויקט. בתיאור הפרויקט (60[סז]₪ חסוזקוז650כ) רשוס :י1.0 .₪11 6!סחחב3ּאם עא'יי. בחר באפשרות וו₪.וופעא ₪36 שבתפריט 118 והדר את הפרויקט לקוב> וו₪. פרק 13: מבוא ל-א6/עו00 | 233 השימוש ב-!|₪ מכלי פיתוח אחר בשעה טובה יצרת קובצ || המספק שירותים לכל כלי פיתוח התומך באוטומציה ובכלל וה ויז'ואל בייסיק. אתה בהחלט יכול לנצל את ה-||0 שיצרת ולהשתמש בו בפרויקטים אחרים של ויו'ואל בייסיק שתיצור, או שיצרו חבריך, ואשר ייהנו מהשירותים שה- |ו₪ שלך יספק עבורס. נניח, לצורך הדוגמה, כי ויז'ואל בייסיק שברשותך אינו מסוגל לקרוא מקובצ טקסט, ולצורך קריאה מקבציס אלו תיעזר ב- |ו4 שכתבת. פתח פרויקט סטנדרטי חדש וצור את הטופס המוצג בתרשים 13.3 וקבע את ערך מאפייני הפקדיס בהתאם לטבלה הבאה: טבלה 13.1 ערך מאפיין פקד סח 5 חס 6חוהּ א הסוס ששסחפ הסו0ק8) :חח 6 זסזח = 1 | 6וחה6!ו-1א) 6חוהּ א 1ד פד 6|ו-א סחהצ 2פך (עסוחם=) אד טזך 6חו וטוט 1108 / - 2 זה פווסזסס 4 68ם/ - ערכת כלים |<ום) -| [חזס] .₪ תרשים 13.3 בתיבת הטקסט: '':6חח8א 6וו= זס%חם'י הקלד את שס קובצ הטקסט ומסלולו. בלחיצה על הלחצן שסח5 תוכן הקובצ יוצג בתיבת הטקסט תחתונה. 35 +66[סוק מכיון שהפרויקט (שוב לצורך הדוגמה) שאתה יוצר אינו מסוגל לקרוא מקבצים, היעזר בקובץ ה- |ו0 שיצרת ובשירותיו. כדי לאפשר לפרויקט שלך להיעזר בשירותיו של ה-וו6 (ווסעו) שיצרת, בחר באפשרות 5 +0[8606זק שבתפריט +60%[סזש וסמן את תיבת הסימון שמשמאל ל- ייעו 0 ווכ 6ומוחהּאם'י (תרשים 13.4). אס הוא לא מופיע היעזר בלחצן 6פשסזם כדי להוסיף את קוב || לתוך הרשימה. לאחר סימון התיבה לחץ על אישור כדי לאשר את הפעולה. פעולה זו הורתה לוויז'ואל בייסיק כי ברצונך להיעזר בשירותיו של ה- ||9 (וסץו) שיצרת. פרק 13: מבוא ל-א6צו00 | 235 | < | 6פחוהּא = |01 - 6006%ז6/6 :06760065 6|סב|וב/ים | [68 - זב זט עיס56וכ !וב /א +]ס5סיסוויז | | זב 168 !וב /א +]ס5ססוויז זה זפ | 066 8.0 וסאי +]ס5סלסוויז | סז 1.0 א +)ספסיסוי] עזה זט ! סקץד 1.0 זוספחוויז |+ זב זו | ססעד 1.0 ופוח וו ווה שסוזסוזק 05 'וססקו5 6708%:ח1 6הַ3חבּויספוי] | ץז זםו | ןכ 1.0 6ופוסהקוחס 07166 |+ עזבזסו | סקץד 1.0 זסטחום הססבוחסום 015 ץז זסו | סקץד 1.0 או ץזבזםו | שפןפ 7.0 לחוססזפואיסק ץזבּזםו ] 6קץז 1.0 6זסז5ק -/ ב , 0 !01 שקב עו = זוב |וסעזיזווום וח בסו חוס5 דועיס 65ו= בסו :6 = :ח106300 53 יסִהַבטְחַח1 תרשים 13.4 שימוש בשירותי ה- !ו בקוד בשלב וה עליך להצהיר על משתנה המייצג את המחלקה (שבקובצ ||6) אשר במאפייניה ובשירותיה נעשה שימוש בפרויקט שלנו. להצהרה על משתנה מסוג המחלקה 8וו= עו שב- וו₪. ווסץו רשוס (בחלק ה- |8ז8ח8) חסו81ז60|8כ של הטופס): 86. 11פץא 28 6159116 תנכת שים לב , שסוג המשתנה >ווחץו.ווסץו משלב בתוכו את שס הפרויקט שיצרנו (ווסץ) ואת שס המחלקה שבו (פוו= עוש). כל שנותר הוא ליצור מופע של מחלקה זו ולקשר אותה עס המשתנה 1!6ו=018. יצירת מופע של אובייקט מחלקה זו, נעשית בעזרת הפונקציה 0768160[661. לדוגמה, ()1088 תעסתע קט5 1866-כ ("116עצא. ננסעץא") 606 026869007 = 0180116 566 פו5 תמ מעתה המשתנה 015-186 מייצג את המחלקה (פוו=ץו) שב-וו₪ (ווסץוא), ודרכו נוכל להשתמש בשירותיו של ה- |ו0 (או בעצס בשירותיה של המחלקה פוו=ץו שבו). בעזרת משתנה וה נשלים את שורות הקוד המתאימות. מטרת יישום הדוגמה שלנו היא, שכאשר נלחץ על הלחצן ששסח5 הוא יציג את תוכן הקוב הרשוס בתיבת הטקסט 6 65ם/ - ערכת כלים יי6וח8א 6וו= זסזח='י בתיבת הטקסט התתתונה. עלינו, אס כן, לכתוב את שורות הקוד לאירוע 0%ו01 של הפקד ששסח5חחס. שורות הקוד הן (שיס לב, ויו'ואל בייסיק מזהה באופן אוטומטי את כל המאפייניס והשירותיס אותס מספק ה- ||0 שיצרת): ()6110% אסםפ6תס סגמ5 217866 166% פב תטא116ע6םת1 תנכ 8ת1ע56 28 6ת56201 תנכס 551% 258 6(ת8א5622116 תנכס %. פתה8א %211א6 = 6(ת8א116%ת562 (6ת1168%8ע9116)85%22ת116.006ע015 = תטגא62116ת1 86.ָ 61821160 ססא 116םח סכ (תטא116ע%ת1 ,6ת6)85%201ם11ע680ת. 6152116 6811 + ₪ 6ת01ע8962 86 116.76%6ת%א% = 6א116.76%ת6א6 ססס1 תוא%2116ת1 0150116.010889116 פטפ בתם הסבר: המשתנה 6185=16 מייצג את המחלקה 6וו=עו שבקובצ ה-!ו שיצרת. כל קריאה לשירות או מאפיין של המחלקה תיעשה דרך משתנה זה. כאשר המשתמש לוח על הלחצן ששסח5 יוצאות לפועל שורות הקוד שנכתבו לעיל לשיגרה 016% ששסח65חס. בשורות קוד אלו נעשה (אחרי הצהרת המשתנים) שימוש בשירות 00616 של ה- || (או של המחלקה 8וו=ע שלו), כדי לפתוח את הקוב אשר נרשס בתיבת הטקסט 86 !ו-1א). שיס לב, היישוס שלך לא יודע לפתוח קוב והוא באמת לא זה שפתח את הקובצ. היישוס שלך קרא לשירות 6!ו₪ח008 של ה- ||₪ והוא פתח עבורו את הקוב המתאים. לאחר מכן יש לולאה הקוראת שורה אחר שורה מהקובצ עד לסופו. האינדיקציה לכך כי המצביע עומד בסוף הקוב מתקבלת על ידי המאפיין 0=118חם (של ה- |ו0) המחזיר ערך 6טזד כאשר הגענו לסוף הקוב. כל עוד הלולאה רצה (הקוב> לא הגיע אל סופו) מתבצעת קריאה של שורה מהקוב>. את קריאת השורה מהקוב מבצע ה-||0 על ידי קריאה לשירות 6ח₪68011 שלו. בסיוס הלולאה (כאשר נקרא כל תוכן הקוב והועתק לתיבת הטקסט שביישוס שלך) מתבצעת סגירה של הקוב. שוב, גם את פעולה זו מבצע ה-||0 (אל תשכח, יישוס הדוגמה שלנו, אינו יודע לטפל בקבציס) בעורת קריאה לשירות 0105616 שלו. הקש 5= והרץ את היישוס (תרשיס 13.5). פרק 13: מבוא ל-א6ע00 | 237 <1 -. [חזס] .₪ :הבח 6 זסוח = ]א 56הססוסשי סוםוז5/י6 65% הח | חס ז0ססחק =חהה/ך 50 |החוטוזס 6" ק66א גוסע בשבואיסזם זפוגוקוזס6 6וטחופ ב זסת 3 גוס .563סקזווק |השיותסזה זס סגואסבם זס! עופוס5 6 ערזב 00ב 31611315 6)חוזם 6 עסס6 50 זהטססםק 6 עב גוסל . =חמיד50 בו 46 וטס .5 6חס הבה פזסחח הו 01001 חק =הב/יד50 שחו תווש 01 5126 זס 6קע! 6 ]זט 4603701655 .ותוווםסות ,180816 גוס זס] 6)בוזקסזקסב 15 ]33 החגווטוח שרוס עוחס 156 עב גוסע 6 |ו9+8חזו זס 56ג )סח עב גוסל .זפוגוסוחס6 6וחחו5 זגוסע ]סו 3 גוס" .זפ)וקחזסש זסו!וסחב חס התוווניסות זסווס הזבס| 0 הזגוונסח זסהז 76 ז305]6ז] 6פואוזסר!וס זס ,6356 ,)חסז | ]השהבוחזסק 6 01 זזבק 35 1ק06א6 ,508 זפהוסחב תרשים 13.5 בחלק גה של הפרק למדת כיצד ליצור קובצ |ו₪0 המספק יכולות רבות ומורכבות יותר לסביבות עבודה אשר כשלעצמן אינן יכולות לספק את השירותיס הנדרשים. ניתן לנצל את קובצ ה- |/₪ גם ליישוס בוויז'ואל בייסיק, על אף שהוא יודע לבצע בעצמו את מה שה- |ו0 עושה, כשכבה אמצעית לפרויקטים הבנויים בארכיטקטורת 8ז6וד - 3. באופן ה תוכל ליצור קבצי !01 מורכבים יותר המספקיס שירותיס רבים יותר ולשלבס בסביבות פיתוח שונות התומכות באוטומציה כזו המאפשרת גישה ל- |/6 חיצוני. ו|סזחס6 6%עו6% הפקדיס שנמצאיסם בארגז הכליס של ויז'ואל בייסיק הס מחלקות (0!855659) המכילות מאפיינים ושירותים. כשאתה מציב בטופס פקד מסוג תיבת טקסט (אסם1א6ד), עשית שימוש במחלקה המייצגת את הפקד. כדי להעביר את המיקוד לפקד וה צריך להשתמש בשירות של המחלקה הנקרא 8564=00605. הנה דוגמה: 8. 7601 מחלקות אלו מיוצגות על ידי קוב 06%. קוב זה מכיל מידע לגבי המחלקה, המאפייניס והשירותיס שלה ומאפשר לשלבס בפרויקט ויז'ואל בייסיק. 8 668ם₪/. - ערכת כלים לדוגמה, כדי להוסיף פקד לארגז הכלים, לוחציס עליו לחיצה ימנית ובוחריס באפשרות 065ה6הסקוחס6. בחלון מוצגת רשימת כל הפקדיםס הניתנים להוספה. השורה התחתונה (תרשים 13.6) מציגה את שס הקוב המייצג את הפקד. | < | טחוס | ןטס 6 | 5 | | עזב וס | |סחס > 56 ששין-4, וזא וו ום6*6זוזיזם ד5/י55ששיססוזשש: 6 0% 6 ויז ד5י55ששיססאזעש :6 יי 6 |0לחס- 605 |558/) ץ'זב זו | הסוסה הוח לספיזווס ץ'זבזסו | וסוטחס= וסוו= עזב זט | ץד 1.0 זפסן תסו טחשזי] קטקסק =] | | 308 | זסק5 =1 זסחחוד 16 ץז זפ | וסזלחס> 66ב זבה] | ספשסזם - -% ץח 1565 5166586 -][ ץזב זו | |סטחס = 590 606 -] 5.0% 51 ויז 555 /עיססוז/ :6 :חסוס63ס1 תרשים 13.6 רשימה זו כוללת את כל הפקדים הקיימיס אצלך, אך אין אלה הקבצים היחידים. יש חברות רבות המפתחות ומספקות פקדים שונים, וכיום ישנס מאות פקדיס המוצעים למכירה. לדוגמה, פקד המסייע לנו לשלוח |ו8-= בקלות מתוך היישוס בוויז'ואל בייסיק ועוד. פקדיס אלה הס קבצי 06% שתוכל להוסיף לארגז הכליס שלך. בפרק וזה נלמד כיצד לבנות פרויקט |0סז%ח60 4641/86 בוויז'ואל בייסיק ולהדרו לקוב 0%. במילים אחרות, ויז'ואל בייסיק מאפשרת לבנות פקד משלנו. בפקד נוכל להיעזר בכל פרויקט שנבנה. כל שעלינו לעשות, הוא להוסיף את הקוב לרשימת ו 00 שלנו ואת הפקד לארגז הכלים. בשלב זה ניתן להשתמש בו כפקד רגיל. יצירת פרויקט |סז)חס6 <6עו+6% הפעל את ויו'ואל בייסיק וצור פרויקט חדש. לפניך מופיע החלון +66[סז ששפא. עד כה התייחסנו לפרויקט מסוג ₪85 0ז08ח5+0, עתה בחר בפרויקט |000%0 6%ש400. לאחר שאישרת את הבחירה מופיע החלון !1156760470 הדומה במבנהו לטופס רגיל. ואכן |0ז%ח00ז259 וּהה לחלוטין לטופס רגיל והעבודה בו, כהצבת פקדים, קביעת פרק 13: מבוא ל-א6צ06% | 239 מאפייניס וכתיבת הקוד ו₪הה לעבודה מול טופס רגיל בוויז'ואל בייסיק. גס בעבודה עס |0ז1567000! יש לשמור על הסדר הרגיל, יצירת ממשק משתמש, קביעת מאפייניס וכתיבת הקוד. בניית ממשק משתמש בניית ממשק המשתמש ב- |0ז25870004 נעשה באופן דומה לממשק המשתמש שבנית בטופס רגיל. בחר בפקד מתוך ארגז הכלים והצב אותו על גבי ו0ז1ח58700ו. כדוגמה, הנח על |0ז%ח258700 את הפקדיס שַכִַ5% ו- |1886 (תרשים 13.7). <1םן- | [[סז)חס:0ז156!] 1!סזוהס:0ז156 - 1וספןסז ₪ תרשים 13.7 קביעת מאפיינים קבע את מאפייני הפקדים על פי הטבלה הבאהח: ו806 8061 567600170 וכסח 1 66 6 ו וו סו סחחזהּ א 1 | ז 0 | %הסותחסו|ה ]הזה הזד | 5%/!6א080 0 668ם/. - ערכת כלים כתיבת הקוד שטח !0256760040 הוא שטח הפקד שייווצר, אך כאשר מציביס אותו על הטופס הוא ניתן להגדלה, אס דרוש. כאשר לוחציס על הפקד במבט עיצוב נראות סביבו שמונה נקודות אחיוה המאפשרות להגדיל או להקטין אותו בכל כיוון. כאשר מגדילים את שטח הפקד בטופס, צורתו גדלה בהתאם לשטח שנקבע לו עייי משיכת נקודות האחיזה. אס נייחס את פעולות הגדלה והקטנה של שטת הפקד ל- |%0ח56700ו, הגדלה או הקטנה של גודל הפקד הן שינוי גודל שטת |0ז1ח00ז58! כולו. כאשר משניס את גודל הפקד בטופס רגיל, הדבר מתבטא בכך שהפקדים המוצביסם על |0ז%ח1(59700 משניס את גודלס בהתאס לגודל !1256700080 עצמו. בדוגמה שלנו, אס המשתמש יגדיל את הפקד (שטת ![%0ח0056700), נצטרך לדאוג לכך שגס הפקדים שַקִ8ח5 ו- |1808 יגדלו בהתאס. פעולה זו נבצע בשורות קוד, אך מהו האירוע המתאיס שבו נכתוב את שורות הקוד המתאימות! נצפה ששורות הקוד המשנות את גודל הפקדים פַסְַח5 ו- |1806, יבוצעו כאשר משתנה גודל השטח ![0ז1ח256700!. אם כן, האירוע המתאיס לכך הוא האירוע 68 של [11587000%70. בחר באירוע ₪65126 (מתוך מבט הקוד) של |0ז%ח56700( וכתוב בשיגרה את שורות הקוד האלו: ()368126 %201ת086200 סט5 8%66ע21ק 0 = 0120.100סם5 0 = 0120.6%5%6סם5 ם10%. %6201ם056200 = ם60120.810%סם5 1% = 05מ0120.8160סת5 2 / %ת101080.816 - 2 / 6מםש5201.81ת056200 = ססץ.ק108ס15 2 / מ101080.710%6 - 2 / ב%201.810%6ת056200 = 6+151082.16% ספטפ סמ בוה סיימנו את בניית הפרויקט, או את בניית הפקד. כל שנותר הוא לקבוע את מאפייני הפקד אשר יהיו נגישיס למשתמש. אשף ממשק הבקרה של א6עצו46% (70ה2!ו/\ 1366ו6+ח|] |סז%+ח0ס6 6%עו6%) בשלב זה צריך לקבוע איזה מאפיינים יהיו לפקד. למרות שזהו פקד הכולל את הפקדים 50808 ו-|1808, צריך להגדיר עבורו את המאפיין ח00ק08 (ל- |806)) לדוגמה, כדי שהמשתמש יוכל לפנות אל המאפיין הזה בשעה שיציב את הפקד על הטופס. לצורך קביעת המאפיינים ניעזר באשף 2876!/ 671866זח! |סזוח60 0/6, שבתפריט 5ח!|-400. אס אפשרות זו אינה קיימת, צריך להוסיף אותה. לצורך כך יש לבצע את הפעולות הבאות: פרק 13: מבוא ל-א6עו06% | 241 1. בחר באפשרות זִפִטְב3ח3! ח|-400 שבתפריט 5ח!-200. 2. מהחלון זִסִפִהח13] ח|-400 בחר באפשרות 671866+ח! |0ז1ח60 6%צוו6 מ זהק2ו//. 3. בחר באפשרות 12810 671866+ח! |סז%ח60 6%ע6+1 שבתפריט 5ח|-000. בחירה באפשרות וו מפעילה את האשף (תרשיסם 13.8). חסוזסטנסז)ח] - 4זב23וש 366]זפ)ח! |סזוחס:) %פצווסת שחל הזזס]זפק סי 5ס|פר ב2ו/' 306 ]זט:ח1 |פסחס= אפשיוז6ם שחד 83500 ]הפו חו |סלחס= 360/6% חב 66300 חו 55505 החפוס (5ח6/ , 5סרש ,65זסקסזק) 366 ]זם:חו 56 הַהוחוש - בלחו 6חל זס] 6006 הַחוץ|ז6טחט 6ח הַח0ה6ז - 66ב]66חו 06 ||3 30060 6עיבח לפטחח טפץי ,חוסַספ טסעי 076ז₪6 :סססוז .36 זב שקה 5]סזח60 6חל קוו 1368 5036 5לחפותפ|ס 5 על סקז 676356 50 ץה2ו/ סַחָב ץ>זסקסזק 6חל 1256 :סססו .00|5ח0ס-567(! זטסץ זס] .5616650005 ]וס פהַחב3ח= 50 שחל חב 36 86% 655זם חב6 טסזי .חוסַ5 0 46% >6ו|6 6356|ש 6ו] חל חן ח50766 פוחם קאפ -] | |זכוזוק: | < ₪6 | מ | 68 תרשים 13.8 קביעת מאפייני הפקד לחי על הלחצן +א6א ועבור לחלון 0675 וח6!! 6713066+ח! +56166 (תרשים 13.9). בחלון זה יש שתי רשימות. הרשימה השמאלית פפַחחהּח 6!₪ַ3!ו43 כוללת את כל המאפיינים והשירותיס האפשריים לפקד זה; הרשימה הימנית 8₪165ח 56|60%60 כוללת את כל המאפייניס והשירותיס הקיימיס בפועל בפקד. ניתן להוסיף או לגרוע מרשימה זו בעזרת לחצני החיצים שבין שתי הרשימות. לצורך הדוגמה שלנו, נוסיף לפקד את המאפיין ח00ק68. מהתיבה השמאלית נבחר במאפיין וה ונוסיף אותו לרשימה הימנית. 2 668ם/. - ערכת כלים 5 306]ז6]ח] 561601 - ₪זהּ2ו/ 366]זס!ח! |סזוחס:) אפצווסת וס 086 65חזבח לחש/י= חב , טסר0פוי , עלזסקסזק ]0 155 8 15 אוסוסם וס'שחס6 זטפץ חו 56 60 לוחבו זחטווח , על סקסו 55300370 6ב 6-56166660זוק הטספ 6/יבח 3ח5 פטחס שח סק 5 7015ח60 055וח 5036 5פחחבח >ח6/י= חב ,פחל6הי] . פחס/י= חב , 1800005י] , 5ססזסקסזום חאוס זטסץי 300 ספ ₪66 אס :הח 56|66060 :בח 3016!בעם עלזסקסזק | > עזזסקסזק |[0זחס-6 0 ץזסקסזק 6 זט ססזוס +חסותחהוה. עלזסקסזק 6 זט זסם עשזסססזס 6ב ז6קק ה לחש 6% | << 6 5 ושי >סוסופם חפ = 666|קחס 566806 ץלזסקסזק בר עשזסקסזק ובש טסוה שלזסססזק זחס= | - עשזסקסזק בב עלזסקסזק סוס זט עס זסקסזס סוס טסט [= %חפע= השס 6 | > = וקסוק הז הזוס | זכוזוק. תרשים 13.9 מיפוי המאפיינים נלח פעמיים על +א6א ונעבור לחלון פַחוסכ13 +56 (תרשיס 13.10). בחלון זה נמפה את המאפייניס אל הפקדיס שהוצבו ב- |%0ח258700 כדי לאפשר את השימוש בהס כאשר מציביס את הפקד על גבי הטופס. במסגרת 0+ ₪805 יש שתי תיבות משולבות. התיבה העליונה |ס%ח60 מתייחסת לפקדיס (שכללת ב- |0ז005670001), והשנייה - ז6סחח6ו מתייחסת למאפיין המשויך לפקד. נבחר מתוך הרשימה העליונה את הפקד 151630 ונצמיד לו את המאפיין חסו+630. לפני שמשייכים מאפיין לפקד צריך לבחור את המאפיין מתוך הרשימה השמאלית, סוחפח סווסטק. באופן דומה נבחר בפקד 5000116 ובמאפיין זס|ס6א86. לסיוס דרושה לחיצה על הלחצן +א6א ולאחר מכן על הפוחו=. בשלב זה יוצג חלון סיכום, לחיצה על 610568 תחזיר אותנו אל הפרויקט. פרק 13: מבוא ל-א6ע00 | 243 בחוקק3 4 ]56 - 6זה2וש 366]זס!ח! |סזוחס:) אפצווסת ץלזסקסזק ץלזקסזק שלזסקסזק %חסשם הפס ץלזסקסזק ץלזסקסזק ץזזטקסזוק ב רזואורורז/ יב ץש תרשים 13.10 בוה תמה מלאכת בניית הפקד וקביעת המאפיינים שלו. כל שנותר הוא לעשות בו שימוש בפרויקט רגיל של ויו'ואל בייסיק. בדיקת הפקד לאחר בניית פקד, יש לבדוק את תקינותו על ידי שילובו בפרויקט רגיל. לחץ על הלחצן שבסרגל הכלים או בחר באפשרות +0[66זק 2606 מתפריט פוו=. אפשרות זו תוסיף לפרויקט |%0ח60 8%ש460/ שלך פרויקט סטנדרטי. חלון הפרויקטיס שלך צריך להיראות כמודגם בתרשים 13.11 : | בד יי | (601ןסזק) 6661[סזש ק 0 056 5-45 (01ח05670) 01שחס 56 [ק > | (70[6602ק) 6602[זק 23-בו פחזזס 45%-] (1 הזוס 1 יו תרשים 13.11 4 ₪65 - ערכת כלים מכיון שקיימים שני פרויקטים, ויז'ואל בייסיק יוצרת קטסז6 באופן אוטומטי. אס חלון !%0ח00ז058 שלך פתוח, סגור אותו ועבור לפרויקט הסטנדרטי. שיס לב לתוספת בארגו הכלים. מלבד הפקדיס הרגיליס נמצא בו עתה פקד נוסף 3 . פקד וה הוא |0ז125870004, או במיליס אחרות, הפקד שיצרת. שילוב הפקד בפרויקט ניצור עכשיו טופס הכולל את הפקד שיצרת ונבדוק אותו. לצורך כך נציב על הטופס (1וחזס-) שני פקדים, את מ0ס00 008 ואת הפקד שיצרת (17011ח00ז56) כמודגם בתרשים 13.12 : תרשים 13.12 בלחיצה על הלחצן 01ַח 00 נשנה את מאפייני הפקד החדש. נרשוס את המילה ייס|ו6'י ככותרת (המאפיין חסו1ק08) ונצבע אותו באדוס (460 פע = זס|00א280). לצורך כך, נכתוב את שורות הקוד הבאות לאירוע א0ו!0 של הפקד: ()0110% 1ת8תת0ס6 סט5 866ע1תק "ס611" = ם%10ק%2011.08ת056200 = %62011.380%00105ת56200ש פטפ סתם נפעיל את היישוס (5=) ונלחץ על הלחצן (תרשים 13.13). פרק 13: מבוא ל-א6צ00 | 245 <1ם) = בי ו 01חבוחוחס | תרשים 13.13 הידור פרויקט |סז)חס6 <6עו+6% אחרי שבדקנו ואימתנו את תקינות הפרויקט, יש להדרו וליצור קובצ 06 כדי שנוכל לשלב אותו כפקד בפרויקטיס אחרים, או למסור אותו לאחרים. כדי להקנות חזות מקצועית לפקד, נשנה את שמו ונקבע לו מאפייניס. לצורך כך נבחר באפשרות 700610165 66%[סזש מתפריט 66%[סזק ונקבע את שס הפרויקט בדומה לפרויקט רגיל. לסיוס נבחר באפשרות א0[66+1.06ז₪ ₪8%6 מתפריט 116= כדי ליצור קובץ 00%. בדומה ליצירת קוב 55 גם בקובץ 06% יש לבנות ערכת התקנה, כדי שיהיה ניתן להשתמש בפקד גם במחשב שאין בו את סביבת הפיתוח של ויז'ואל בייסיק. בניית ערכת ההתקנה נעשית באופן והה לבניית פרויקט ₪א= סטנדרטי. תרגול 1. בנה קוב 011 (פרויקט ‏ | ₪1םא6עו461) אשר ינהל מסד נתוניס. קובצ ה- ‏ 11ס יספק שלושה שירותיס: פתיחת מסד נתוניס, שליפת מידע מטבלה או טבלאות וסגירת מסד הנתונים. 2 בנה פקד (קוב 00) בעזרת פרויקט |סשחס א6ע00. הפקד יהיה אס0ם 0070 אשר יציג את הנתוניס שבו בסדר ממוין. הפקד יאפשר חיפוש מהיר. לדוגמה, הקשת אות אחת תציג מייד את המילה הראשונה שמתחילה באות זו וכן הלאה. 6 68ם/, - ערכת כלים 4-: אובייקטים ויישומי 6) )050ז6ו!/ ויז'יואל בייסיק מאפשרת לקשר את היישוס שאנו בוניס אל יישומי 028106 11ספסזסוו, כדוגמת 0זס/ ו- |9סאם. יש מספר דרכים להתקשר ליישומים חיצוניים מתוך ויז'ואל בייסיק, בעזרת 01.5, בעזרת אובייקטים ועוד. בפרק גה נלמד את המבוא לעבודה עם אובייקטים, מכיון שהס נותניס כליס טוביס לניהול יישומי 01106 1070508 מתוך ויז'יואל בייסיק. ויז'יואל בייסיק מספקת סוג משתניס בשס 08[666 (אובייקט, עצם) ובעזרתו ניתן להפעיל יישומים שוניס מתוך תוכנית ויז'יואל בייסיק. הדרך בה נעשה הקישור הוא על ידי הגדרת היישוס שאנו רוצים לנהל כאובייקט בעזרת השירותיס והפונקציות שהוא מספק. ראוי לציין שלא ניתן להתקשר לכל יישוס בדרך זו. יישומי 0218666 + ס8סז6ו₪ תומכיס בדרך קישור המוצגת בפרק זה, וניתן לנהל אותס כאובייקטיס מתוך ויז'ואל בייסיק. הצהרה על משתנה אובייקט ככל משתנה רגיל יש להצהיר על משתנה מסוג 09[66% לפני השימוש בו. מלבד אופן ההצהרה הזהה, משתנה זה מתנהג כמשתנה לכל דבר בכל הקשור לאורך חייס וטוות הכרה (ראה הסבר בפרק העוסק במשתנים). ההצהרה על אובייקט: 0% 28 סמסתטסספצלאנרסס תנכת בשורת קוד ו הצהרנו על המשתנה )חסוחטסססעו/[פס כעל אובייקט שעדיין לא נעשה קישור שלו ליישוס כלשהו. הפונקציה +0[66כ6038+60ז) כדי לקשר בפועל את האובייקט ליישוס, ניעזר בפונקציה +0168+600[66 שתפקידה ליצור 00[664) 6%צ06+1, אובייקט 6%שו8061. הפרמטר שמקבלת הפונקציה הוא שס המחלקה המייצגת את סוג האובייקט שדרכו נעשה הקישור. כל יישוס התומך בסוג קישור כוּה מספק לפחות סוג אחד של אובייקט שנוכל ליצור מוויו'ואל בייסיק. פרק 14: אובייקטים ו- 21106) 508סזסוו | 247 השורות הבאות מדגימה יצירת אובייקטיס שוניס : ("8810ס. עסח")0268%60060% = 6תסתטסספץארפס 566 ("תמס1108%1קקת. 661אע")0268660060% = 6תסתטסספץארסס 566 לאחר שנוצר האובייקט, המשתנה זחסוחטסססעו[פס מייצג את היישוס שאליו הוא מקושר. כל פנייה אל היישוס תיעשה מעתה דרך המשתנה +ח6וחטסססץון[טס. ניהול מסמך ףזסו מוויז'ואל בייסיק אחד השימושים הנפוציס באובייקטיס הוא ניהול מסמכי מעבד התמלילים 670508 סזס מתוך יישום וויז'ואל בייסיק. לדוגמה נניח שפיתחת יישוס המנהל מסד נתוניס באמצעות תוכנה של חברה כלשהי. אחת האפשרויות שמספק היישוס היא הצגת רשימת כל הלקוחות החייביס כסף לחברה. על פי רשימה זו המזכירה שולחת מכתביס לכל הלקוחות ומציינת את הפרטיס האישייס ואת פירוט חובס לחברה. כתיבת מכתב בעל נוסח אחיד לכל הלקוחות, אשר שוניס רק בפרטיס האישיים ובגובה החוב, יכולה להיות עבודה מייגעת. כאן נוכל לנצל את היכולת של ויזיואל בייסיק לנהל מסמכי 0זס ולהדפיס את אותו מכתב מספר פעמים, ובכל פעס לשתול בו את נתוני הכתובת המתאימים הנלקחים ממסד הנתונים. הו יישוס פשוט של מיזוג דואר. ניהול המסמך ייעשה מתוך שורות הקוד בוויו'ואל בייסיק, אך תחביר הפונקציות והשימוש בהס לשילוב עס האובייקט אינו שפת ויז'ואל בייסיק טהורה. בדוגמה שלנו התחביר בו נשתמש בשורות הקוד הוא של 84/, או פחסוופּסו|קק זסז 28516 |808ו/. טיפ: תחביר שפת 2/4// אינו חלק מוויז'ואל בייסיק ואף אינו מובא במערכת העזרה של התוכנה, אס כי במקומות בודדים ובאופן כללי בלבד. כדי לדעת מהו התתביר בו תוכל להשתמש, הקלט מאקרו במעבד התמליליםס 6זס/ אספסזסוו ואחר כך עיין בקוד שלו במבט עריכה. התחביר הכתוב שם הוא התחביר בו תוכל להשתמש (עם שינוייס קליס) בשורות הקוד שלך בוויז'ואל בייסיק. השירות 6חו-)וס- נחזור לדוגמה ונראה מהן שורות הקוד המאפשרות לשתול נתוניסם מתוך מסד הנתוניס למסמך סזס!\, ובמקרה וה - למזג דואר. השיטה המקובלת היא ליצור מסמך שבו תהיינה מיליסם שישמשו תבניות שבהן יייישתלויי הנתוניס ממסד הנתוניס. לדוגמה, נניח שתרצה לשתול את שס הלקות ליד המילה ייעבור:יי. במקרה זה תיצור מסמך שבו יהיה כתוב ייעבור: <שס>יי. התוספת 'י<שם>" לאחר המילה ייעבור:יי היא התבנית שתוחלף בשס האמיתי של הלקות שנלקח ממסד הנתונים. כל שנותר להורות ליישוס הוא לחפש במסמך את התבנית 'י<שס>'י ולשתול במקומה את השס הרצוי. 8 668ם₪/. - ערכת כלים שורות הקוד הבאות מדגימות את שתילת המידע בתוך המסמך: % 88ב בעסאעא תנכת 86 8₪8בג2 60 תנק % 285 260008%000285 תנקת 6ת1ע55 28 562502 תנקת ( "סשת. %+סאץ : ס6") 06228%585886 = 860 566 "0 < 06ם2818 6ע6תח 009600628 תסלע+ * 561606" = 562502 ("20.8510סח")760%ך0268%600 = סעסאלא 566 (26002086%)8%2902(ת00.0026 = 0628ת(26000500 566 ,""=:06ת38 ,"6.000תס6תטססכקצץא"=:6תבא 116ע562%ת1. 26סאעא 0=:את1ם ,58:=0ת10פ62טת60ת12+תס6 ,108:=0ת88א8600/ ,0=:ת60610ת1ק ,"<שם>"=:ת1ת 0מם1ת24.201%?סחץ ,%201:=0ת48%0200 ,216128(28:=0ת08%60 ,86022180216108:=0 ,6:=0א08511%ת500 ,08%02:=0ת8%%82ע ,020:=0ח018%סםח ,0886:=0םת8%0 0: 08ע6%02עסח1[1[תת1ע ,1=:ק8מא ,86:=0תעסק 6 " -" 86 6תה8א625!188%ת(260008%0 6ע562ם23.1+סאעא 6000560286 אוסםפססה . סכ סאעיא באופן דומה ניתן לשתול מידע בטבלאות, להדפיס מסמך למדפסת ועוד. לצורך זה יש להכיר את תחביר שפת 83/, אשר חורגת ממסגרת פרק זה. הדוגמה שמוצגת בפרק ה מיועדת לעבודה במעבד התמלילים 7 6זס/. בגירסה 97 יש שינוייס קטניס אותס יש לבצע באופן כללי בהשוואה לגירסה 7. אופן העבודה זהה גס ל-|06א5. אס אינך מכיר מספיק טוב את שפת 8/4/, הנה טיפ קטן: כדי לדעת מהס שורות הקוד אשר יבצעו פעולות מסוימות במעבד התמלילים, פתח אותו והקלט מאקרו חדש. בתוך המאקרו בצע את אותן פעולות אשר היישוס שלך אמור לבצע ושמור את המאקרו. עתה הצג את המאקרו במצב עריכה. במצב זה יוצגו לפניך שורות הקוד בשפת 23 אשר יוציאו לפועל את אותן פעולות שביצעת במאקרו. העתק שורות אלו לשורות הקוד שלך בוויו'ואל בייסיק. השינוייס שתידרש לבצע יהיו מעטים מאוד. באופן וה תוכל לשלב בשורות הקוד שלך שורות קוד בשפת 84 /, על אף שאינך בקיא מספיק בתחביר השפה. פרק 14: אובייקטים ו- 21106) 0508זסוו/! | 249 תרגול 1 צור את הטופס הבא: [חזס] .₪ תרגיל ביצירת אובייקטים. | צור את הטופס הזה. / לחיצה על הלחצן איפח5 תגרום לפתיחת מעבד התמלילים בזס/י |)ספסוסוון. את כל הכתוב בתיבת טקסט זר תשתול התוכנית אל תוך המסמך שנוצר. לחיצה על הלחצן אוסח5 תגרוס לפתיחת מעבד התמלילים 6זס/ 0ספסזסוו/!. את כל הכתוב בתיבת הטקסט תשתול התוכנית אל תוך המסמך שנוצר. 2. בצע את תרגיל 1 אך הפעס המסמך לא יופיע, תוכנו יודפס ישירות למדפסת. 0 ₪658 - ערכת כלים 5.: מבוא לשפת .5901 שפת .5001 (פהְָגַפָח3 1 ץזפטוכ) 6זט0זס10ז51) - שפה לניהול מסד נתונים טבלאי - היא שפה תקנית ומקובלת כיוס בכל מערכות התוכנה והמחשבים. היא מאפשרת הקמה וניהול של מסד נתונים, עדכון, הפקת שאילתות, הדפסה, יבוא, יצוא ועוד. השימוש בשפת ]50 נפוץ מאוד לניהול מסדי נתונים, בין השאר גס במערכת )ספסזסוו/! 5, ולפיכך נכיר אותה לפני שנעבור ללימוד הפרק הבא העוסק במסדי נתוניס. שפת .501 הפכה במרוצת השניס לשפה סטנדרטית. למרות שיש הבדלי תחביר בין הגרסאות של יצרניס שוניס, הכליס הבסיסייס דומיס בכל גרסאות השפה. סוגי שאילתות השס .501 קשור ליכולת הטובה של השפה לאחזר נתוניס ממסדי הנתונים על פי שאילתות המוצגות על ידי המשתמש. השאילתות מחולקות לשני סוגים עיקריים: שאילתות בחירה ושאילתות ביצוע. בשאילתות בחירה (581604) מטרת השאילתה לקבל מידע ממסד הנתונים. לדוגמה, להפיק את רשימת שמות העובדיס שהתקבלו לעבודה בשנתייס האחרונות. שאילתת ביצוע מבצעת שינוי במסד הנתונים, כמו עדכון, מחיקה ועוד. לדוגמה, לעדכן בתוספת של 10% את מחירי כל המוצריס שמחירס לא עודכן בשנה האחרונה. שאילתת בחירה (56!66%) שאילתת בחירה (581800) מיועדת לשליפת מידע ממסד הנתונים. המידע המתקבל משאילתת 56180 מציג את הנתוניס הקיימיס במסד הנתוניס בלבד, ואינו מבצע בהס שינוייסם. לדוגמה, הצג את השס הפרטי ואת שס המשפחה של כל העובדים הקיימיס בטבלת העובדים. המידע המתקבל מציג את הנתוניס בלבד, ולא נעשה שינוי באחד משדות אלה במסד הנתוניס. תחביר השאילתה: א0ן1ת ,... , 516102, 516101 561606 68 תסעצס לדוגמה: %8 רו תספע סתהא 1886 ,6ת8א 1286ע 561606 ניתן לכתוב את השאילתה בשורה אחת, אך בדרך כלל כותבים את משפט )58!80 בשורות אחדות שבראש כל אחת מהן נמצאת מילת מפתח, כפי שדרוש: חסזם, 6זסחצ), עס זז ועוד. פרק 15: מבוא לשפת .5601 251 דוגמה נוספת : סתהאץמהקתסס ,008606210 561606 58 תסעע רשימת השדות במשפט 58!8606 הס אלה שהמשתמש רוצה לראות אותס בתצוגת המסך או בהדפסה. בחלק חסז- נרשס שס הטבלה שממנה נלקתים שדות אלה. וכאשר רוציס להציג שדות בסדר רצוי כלשהו, צריך לרשוס את שמותיהם בסדר הרצוי. כדי לבחור את השדות שבטבלה, אפשר לרשוס יי*יי (כוכבית) בלבד. לדוגמה, שאילתה להצגת כל השדות שבטבלה 885עסוסוחם : 8 וו תסעץ * 561606 קריטריונים (6ז6ח//) שאילתת 581806 פשוטה מציגה את הנתוניס שבכל הרשומות בטבלה המבוקשת. אך מה קורה אס נרצה מידע מרשומות מסוימות בלבד העונות על קריטריון מסוים! לדוגמה, נכתוב שאילתה שמציגה מתוך רשימת העובדיסם רק את אלה שגילם 25 ומעלה. במקרה גה נשתמש במשפט 6ז6ח//. חלק 6זפח/ במשפט .501 מייצג את הקריטריון, ולכן הרשומות שיתקבלו כתשובה מהשאילתה יתייחסו רק לרשומות שעונות על קריטריון זה בלבד. תחביר המשפט הוא: א1610ת ,... ,516102 ,516101 561606 68 תסעצס 8 סעפת לדוגמה: 6 ,פתבא 12886 ,9886 1286ע 561606 8 ות תסעת 5 206 6ע6םת₪ בדוגמה זו השאילתה תחזיר כתשובה את השס הפרטי ואת שס המשפחה של כל העובדיס מטבלת 885ע0!0וח= שגילס מעל 35. אופרטורים להשוואה בחלק 816ח/ במשפט 5031 ניתן להשתמש לבניית הקריטריון באופרטוריס להשוואה שוניס. אופרטוריס להשוואה הס: 1. | < (גדול) 2 | =< (גדול או שווה) לדוגמה: 6 ,פתבא 1886 ,98806 1286ע 561606 8 ות תסעת 5 =< 266 626םא 2 6658ם/, - ערכת כלים 3 > (קטן) 4 | => (קטן או שווה) 5 | <> (שונה) לדוגמה: 0167 ,סתהא 1886 ,6ת8א 1286ע 561606 %8 וו תסעת 'טנטת-761' <> 0167 6עסתח בדוגמה וו מתקבלות כפלט כל רשומות העובדיס שאינם גרים בת'יא. אופרטורים לוגיים באופרטוריס להשוואה משתמשים כאשר הקריטריון הוא קריטריון פשוט. כדי ליצור קריטריון מורכב, ניעוּר באופרטורים לוגיים : 1. 6ח (וגס) לדוגמה: 6 ,סתבהא 12886 ,98806 1286ע 561606 8 ות תסעת '|ת6208810ט' = 0167 בסתת 35 < 266 626םח בדוגמה זו מתקבלות כל הרשומות של העובדיס מטבלת 6865עס!|קוחם, אשר גריס בירושלים וגם גילס מעל 35. בדוגמה זו צירפנו בתנאי אחד שני קריטריוניס פשוטיס שבהס השתמשנו באופרטורי השוואה. 2 | ז0 (או). לדוגמה: 'טנטת-7161' = צץ016 מס 35 < 266 26סםח 107665קתע תסעע * 561606 בדוגמה זו מתקבלות כל הרשומות של העובדיס מטבלת 665עס!מוחם, שגריס בתל-אביב או אלה אשר גילס מעל 35, או שניהס יחד. בדוגמה זו, תושב ירושליס בן 42 ייכלל ברשימה. 3 | 1סח (הפוך מ..) לדוגמה: ('טנטה-761' = צץ6)016סא 6עסםתא 665ע10קתם תסעע * 561606 שאילתה זו מקבילה לשאילתה הבא : 'טנטת-761' <> 0167 6ע6םתא 665צ10קתת תסעעתע * 561606 פרק 15: מבוא לשפת .]50 253 קריטריונים נוספים שימוש נוסף בקריטריוניס הוא חיפוש ערך בתוך טווח ערכיסם. 1. 6חה.... 26/6060 לחיפוש ערך בטווח המוגדר. לדוגמה: 0 םתב 1 ם60א2606% 10 6ע6םתא 10766585קתת תסעצעתע * 561606 שאילתה זו מציגה את כל הרשומות של העובדים מטבלת 885עס!|סוחם, אשר מספר תייז שלהס הוא בין 1 ל- 100 (ועד בכלל). 2 ח! לחיפוש ערך בתוך רשימת ערכים. לדוגמה: 8 וו תסעץ * 561606 (1,7,13,90,102)מ2ם1 16 6שתסםח אס מספר הזהות הוא אחד מהערכים הנמצאיסם ברשימת ה-ח! הרשומה תוצג, אחרת היא לא תתקבל כתשובה לשאילתה. יש פונקציות רבות אשר ניתן להשתמש בהס לבניית קריטריון השאילתה (חלק 8ז6ח/ של משפט 58!8600) כדי למקד את הקריטריון לצרכינו. תמיד רצוי לבחון היטב את תחביר מסד הנתוניסם המסוים שממנו מאחזריס את הנתונים. סוגי משתנים חלק 676ח/\ במשפט 586160%, הקובע את הקריטריון, אפשר לכלול את כל סוגי השדות שבטבלה: מספרי, מחרוזת ותאריך. עס זאת, השימוש בהס בקריטריון שונה. + כאשר הקריטריון כולל שדות אלפאנומרים, הערך להשוואה יושם בין שני גרשיס (י). לדוגמה: 8 וו תסעץ * 561606 '|ת816פטעסט' = 0164 6ע6םח ניתן להחליף את המחרוזת במשתנה (פָחו5%) המכיל את המחרוזת בקריטריון, כמו בדוגמה זו. לדוגמה: 6ת1גע56 פת2 5620167 תנכת '|ת816פטעסט' = 562016 ץ01%6ע5% = 0167 6עסתא 665ע10קתם תסעץ * 561606 * כאשר הקריטריון כולל שדות ותאריך, הערך יושס בין שתי סולמיות (א). לדוגמח: 8 וו תסעץ * 561606 7% = ב6ע21 6עסםמח גם כאן ניתן להחליף את הערך במשתנה מסוג ש281. + כאשר השימוש בקריטריון כולל מספריס, אפשר לכתוב את הערך המספרי ללא תיחוס. לדוגמה: 8 ו וו תסעץ * 561606 5 206 6ע62ם₪ 4 68ם/ - ערכת כלים שאילתות סיכום שאילתה מסוג נוסף היא שאילתת סיכום, שתפקידה לסכס ערכים מרשומות שונות. עושיס ואת על ידי פירוט השדות, או על ידי פונקציית סיכוס. לדוגמה, מהו מספר כל העובדיס בחברה (על פי הטבלה 885עס!קוחם), או מהו סכוס המשכורות הכולל שמשולס לעובדים אלה. שאילתת סיכוס כוללת שני חלקים : א. פונקציית הסיכוס (סכום, מניה וכוי). ב. קיבוצ השדות לקבוצות שעליהן יופעל הסיכוס. לדוגמה, מהו סכוס הסטודנטים בכל הפקולטה. סכוס הסטודנטיס הוא פונקציית הסיכוס והפקולטה היא שדה קיבוצי. הנה דוגמה מעשית לשאילתת סיכום : (6)10ם000 561606 8 ות תסעת צַ8פסוסעס בדוגמה זו הרשומות מקובצות לפי השדה 26016 (המייצג מספר מחלקה). במילים אחרות המידע מקובצ לפי מחלקות, כאשר המידע המבוקש הוא (6!)זחטסס6. בהפעלת הפונקציה +חטסס אנו מבקשים בעצם מהשאילתה שתספור את המספר הרשומות שבכל חלק קיבוצי. במיליס אחרות, התשובה שתתקבל מהשאילתה תהיה - מהו מספר העובדיס שבכל מחלקה ומחלקה. כדי לדעת מהו סכוס המשכורת (של כל העובדים) בכל מחלקה נרשוס את משפט ‏ 501 הבא: (צ58182)ת50 561606 8 ות תסעת קשפסגוסעס שיס לב, גס בסוג ה של שאילתה ניתן להגדיר קריטריון לרשומות שיתקבלו כתשובה. לדוגמה: ץצס1ס , (7ץ58182)תטפ 561606 ות תסעת 'טנטת761-2' = ץ016 626םמח זשפקגוסעס שאילתות על מספר טבלאות עד כה עסקנו בשאילתות המספקות מידע מטבלה אחת. במשפט שאילתה אחד ניתן לשלוף מידע ממספר טבלאות. השוני בין מבנה השאילתה על מספר טבלאות לבין מבנה השאילתה על טבלה אחת הוא בכך שצריך לצייןו את שס הטבלה שהשדה שייך לה וגם צריך לציין את שס השדה המקשר בין שתי הטבלאות. פרק 15: מבוא לשפת .501 255 תחביר השאילתה הפועלת על כמה טבלאות : 116%.אס1סה ,... ,680181.518102 ,516101. 580161 561606 אס1מהם ,... ,680162 ,580161 תספת 1 801602 = %16101. 680161 656תח לדוגמה: ,סתהת ק6כ. %68ת82606ק6כ ,6תהא 1258%6ע.10668קתת 561606 66085.8 68260כ ‏ ,8062םת8א. 65מ6תס 82 קפסכ 8מתסתפהאקסת ,107665סתם תסעת 8. 8 6מסתס2אקסת = 26010. 107668קתם 626םח בדוגמה זו מציגיס כפלט את שס העובד, את שס המחלקה, את שס מנהל המחלקה ואת מספר המחלקה. הקריטריון לקישור בין שתי הטבלאות הוא מספר המחלקה המופיע כשדה הן בטבלת העובדיס והן בטבלת המחלקות. גס בשאילתה זו ניתן להוסיף קריטריון ברירה של הרשומות באמצעות הרחבה של משפט 6ז6ח/. לדוגמה: ,. 66085צ10קחת ,6תהא 8%6ע12ע.107668קחם 561606 של תסות סקס 8מתסעפהאקסת ,107665סתם תסעת 48. סמסתסעהאקסק = 10766989.26010קתם 626םח 7= 26010.%ם6ת820ק6ק בתת בדוגמה זו, נוסף לקריטריון התנאי שהפלט יכלול את העובדיס במחלקה 7 בלבד. שאילתות ביצוע שאילתות ביצועיות שונות משאילתות בחירה (581800), כי הן מבצעות פעולות במסד הנתוניס. לדוגמה, עדכון משכורת של עובדי הניקיון (קוד 4) בעיריית ירושלים, על ידי הוספת בונוס בתקופת מצעדים. תחביר השאילתה הוא: 68 סמססהסס0 ו[הט = 11610 566 לדוגמה, תוספת 10% למשכורת : לפת ססהבסס 1 * 581824 = 581827 566 4 = אעסח 6ת8 'ת816פטעסט' = צ016 6עס6םח שיס לב, אס לא היה קריטריון - העדכון היה תקף לכל הרשומות בטבלה. לדוגמה: לפת ססהבסס 1 * 581824 = 581827 566 במקרה וה משכורתם של כל עובדי המפעל היתה מתעדכנת בתוספת של 10%. 6 68ם/, - ערכת כלים שאילתת מחיקה שאילתה זו משמשת למחיקת רשומות מטבלה. תחביר השאילתה הוא: 1% 68 תסעטס לדוגמה: %6 8 ות תסעת שיס לב, במקרה זה יימחקו כל הרשומות שבטבלה, מכיון שלא נקבע קריטריון מיוחד. אס לדוגמה, רוציס לפטר עובד מסוים (בעל תיז 123) נציין זאת במפורש בקריטריון כדי שהשאילתה תמחק רק את הרשומה העונה על הקריטריון הזה בלבד. לדוגמה: 216 8 ות תסעת 3 = 16 6ע6תח פרק 15: מבוא לשפת .]50 257 תרגול לפניך שתי טבלאות במסד נתוניס כלשהו: 0 ₪0 ₪0 סוה ח- הסוזסוז650כ סוחפח .| 6פ וט בי וך קפס 1. כתוב שאילתת 501 אשר תציג את כל פרטי העובדים. 2 כתוב שאילתת .501 אשר תציג את שמס המלא ואת מספר הטלפון של העובדים במחלקת מכירות. 3 כתוב שאילתת ‏ 501 אשר תציג את שמס המלא של כל עובדי מחלקת ההנהלה, אשר יוס הולדתם חל החודש. 8 665ם/. - ערכת כלים 6: מסדי נתונים מסד נתונים (ס8ה28080) הוא אוסף של סוגי נתוניס שוניסם הקשורים ביניהס בקשרים לוגייס כלשהם, ומאפשר את שיתוף הנתונים בין יישומים שונים. במאגר הנתונים הזה נשמריס נתוניס שקודס לכן נהגו לשמור בקבצים נושאיים. לשמירת הנתוניס בקבציס נושאיים, כלומר קוב לכל נושא ותפקיד, היו חסרונות רבים שגרמו לבניית מערכת חלופית לשמירת הנתוניס - מסד הנתוניס. באופן כללי ניתן לדמות את מבנה מסד הנתוניס למבנה של תיקיית ספרים. מסד הנתוניס מווהה על ידי שמו, שהוא למעשה יישס קובציי במושגים של מערכת ההפעלה. בתוך התיקיה נמצאים ארונות המכיליםס ספרים בנושאים שונים: יש ארון "ספרי מחשביי, ארון ייספרי פסיכולוגיה'', ארון 'יספרי מדע בדיונייי וכוי. עס ואת, הכל נמצא במסגרת של תיקיה אחת, וכאן - מסד נתוניס אחד. הנתוניס שנשמריס במסד הנתוניס מחולקיס לייטבלאות'' (80!89)) שבכל אחת מהן יש נתוניס הקשוריס לנושא שאותו היא מייצגת. לדוגמה, במסד נתונים המכיל נתוניס מידע על מפעל מסוים, יימצאו טבלאות עובדים, המכילים את כל המידע הקשור לעובדיס, טבלת מוצריס, המכילים את כל המידע הקשור למוצרים וכוי. נחזור לתיקיה, כל ארון מחולק למדפים, המייצגיס תת-נושאיס בתוך הנושא הראשי הכולל את כל הספריס בארון. למשל, בארון מחשביסם, נמצא ספרי מחשביס העוסקיס בלימוד שפות תכנות, ספריס אחריס עוסקים בתקשורת מחשבים ועוד. באופן דומה, כל טבלה במסד הנתוניס בנויה מ'ירשומות'' (860105ז) רבות, שכל אחת מהן מכילה את כל המידע לגבי פריט אחד בטבלה. לדוגמה, בטבלת עובדים, פרטי העובד ששמו דני הס רשומה אחת, פרטיו של משה הס רשומה שנייה, פרטיה של שרה הס רשומה שלישית וכן הלאה. בתחתית ההיררכיה נמצא את הספר (שבגללו נכנסנו בכלל לתיקיה). אס נרצה לשאול ספר בנושא ויז'ואל בייסיק נפנה לארון ספרי מחשביסם, למדף המכיל ספריס העוסקיס בלימוד שפות תכנות ושס נמצא בין הספריס השוניס את הספר העוסק בוויז'ואל בייסיק. מקביל לו במסד הנתונים הוא היישדהיי (88!0). כל רשומה מורכבת מכמה שדות (לפחות אחד) וכל השדות יחדיו מהוויס את כל המידע המרכיב את הרשומה. למשל, בטבלת עובדיס יש רשומה האוגרת את פרטי העובד משה. בשדה אחד נשמור את שמו הפרטי, בשדה שני את שס המשפחה, שדה נוסף לתייז וכך הלאה (תרשיס 1).. פרק 16: מסדי נתונים 259 <וםו רוי ₪ שמפרטי | שםמשפחה | | תד | נתובת | | טלפון | | כהן 120 הרצל 11 ירושלים. 02-6543210 לוי 2 אלנבי 33 ת"א | | 03-9870541 ישראלי 12 האומן 8 ירושלים. 02-3698741 רשומה:ן ו | ? 3 ]| 4 | 4 |%4 מתוך 3 תרשים 16.1 הכלי המאפשר לנו להציג את הנתוניס האגוריס במסד הנתונים, להוסיף נתונים, לערוך, לעדכן ולמחוק ממנו נתוניס, הוא הפקד הּו₪3 5 פקד זה פועל יחד עס יימנועיי מסד הנתוניס 6% 10705084 (זהו המנוע של מסד הנתונים שמפעיל את התוכנה לניהול מסדי נתוניסם 406855 = 5061ס0ז0סו1). בעזרתו יש לנו גישה למסד הנתוניס ויכולת לבצע בו שינוייס במידת הצורך. הפקד ₪8%8 מורכב למעשה משני פקדים. הראשון הוא |0ז1ח60 266655 בּו₪3 המאפשר גישה למסדי נתונים, כגון: 2608655 ספסזסו!, 106/6, 025₪ה, סזקאס- 808סזסו!/! ן- אסס8זהק. כברירת מחדל, הפקד מתקשר אל מסד נתונים של 00855, ואס נרצה לקשר את הפקד למסד נתוניס אחר (כדוגמת אססאַַזהק, סזקאסת, 0255 ועוד) נציין ואת במפורש במאפיין +000066. הפקד השני הוא !600170 0808 3670%6 - המאפשר גישה למסד נתונים מרוחק כמו למשל, ז8/ז58 .5001 070504 ו-80|6זס. הפקד בהּז03 הפקד ₪818 מאפשר גישה למסד הנתונים כדי להוסיף, לערוך, למחוק ולעדכן ללא צורך בכתיבת שורות קוד כלשהן. יש שני מאפייניס בסיסיים שהמשתמש נדרש לקבוע את ערכם, כדי שהפקד יבצע את פעולתו. שני המאפיינים הם: 3180856886 ו-360070500106. המאפיין 03+808568₪(6 קובע את שס מסד הנתוניס שהפקד מקושר אליו, או שס קובצ ונתיב של מסד הנתונים. ברגע שנבחר מסד הנתונים ונקבע במאפיין 6ח1808568הם, מתקבלת רשימת ערכים אוטומטית במאפיין 66070500706א, וחיא מכילה את רשימת כל הטבלאות שנמצאות באותו מסד נתונים. מתוך רשימה זו נבחרת טבלה אחת המהווה את ערך המאפיין 706ו60070500. 0 66ם/ - ערכת כלים שיס לב שפקד 0818 יכול להתקשר אך ורק לטבלה אחת במסד הנתוניס, אולס מספר פקדי 0818 שניתן להציב בטופס אחד אינו מוגבל. המאפיין ₪66076500706 מכיל את הטבלה שהפקד מציג את פרטיה. הוא יכול לעשות את בשלוש דרכים המיוצגות על ידי שלושת ערכי המאפיין 6כע 8660705617. -36ד. ערך וה קובע כי הפקד יציג טבלה אחת, וו שרשומה במאפיין 0706ו60607050. ניתן להוסיף, לשנות, לערוך ולמחוק את הנתוניס שבטבלה. 4% -- סע 1-+56 חצ הוא ערך ברירת המחדל. ערך וה מאפשר לפקד להציג טבלה יחידה מתוך מסד הנתונים או להציג תוצאת שאילתה (המכילה מספר שדות מטבלה אחת או יותר). גס כאן ניתן להוסיף, לשנות, לערוך ולמחוק נתוניס והשינוייס יחולו על הטבלה או הטבלאות המתאימות. 6% -6ץ+-+58025700. ערך זה מציין כי הפקד מציג מעין צילוס של שדות מטבלה אחת או יותר. מה שניתן הוא רק לצפות בנתוניס בלבד. אין אפשרות לערוך נתוניס אלה. ניתן לקשר פקדים נוספיס לפקד 0818 כדוגמת תיבת טקסט, תיבת רשימה, רשת ועוד, אשר יציגו את נתוני מסד הנתוניס שהפקד 08%8 מקושר אליהס. בפרק זה לא נעסוק בכך ורק נציין שכדי לקשר פקד כתיבת טקסט אל פקד 08%8 יש לקבוע ערכיס למאפיין 2818500108 הקובע לאיזה פקד ₪08%8 מוצמדת תיבת הטקסט; ולמאפיין סוס הקובע איזה שדה בטבלה יוצגו ערכיו בתיבת הטקסט. אולס יכולת הפקד ₪818 להתקשר למסד נתונים לצורך קריאה, כתיבה ועדכון מסד נתונים מוגבלת, בעיקר מבחינת ממשק המשתמש. ביישומיס מורכבים הפועלים עס מסדי נתוניס דרושה מעורבות באמצעות שורות קוד בתוכנית. על כן, יוחד פרק זה לעבודה מול מסד נתוניס באמצעות שורות הקוד. בניית מסד נתונים באמצעות ויז'ואל בייסיק כדי לבנות מסד נתונים אנו וקוקיס לתוכנה המאפשרת וזאת. לדוגמה, מסד נתוניס פפצ (זו סיומת ייקובציי מסד הנתוניס) נבנה בעאגרת התוכנה 460655 אספסזסוו/!. שיס לב שלצורך הגישה למסד הנתוניס משורות הקוד בוויז'ואל בייסיק אין צורך בתוכנה זו. שורות הקוד פונות ישירות אל מסד נתוניס קיים. התוכנה 460695 דרושה ליצירת מסד הנתוניס בלבד. אס אין לך כלי מיוחד לבניית מסד נתונים, ויויואל בייסיק מספקת כלי כזה; זוהי התוכנית 150314/. פרק 16: מסדי נתונים 261 התוכנית הְַּּה50ו תוכנית 180818 היא יישוס ליצירת מסד נתונים. התוכנית מאפשרת ליצור מסד נתוניס מסוגיס שונים כגון: 400655 0ס8סזסו, 856ס, סזקאס= ועוד. התוכנית 18081%8/ היא יישוס עצמאי וניתן להפעילה באופן עצמאי ולא דרך ויז'ואל בייסיק. קובצ התוכנית 6א150818.6/ נמצא בתיקיה שבה מותקנת ויז'ואל בייסיק. לחילופין ניתן להפעיל את התוכנית מתוך ויז'ואל בייסיק. כדי להפעיל את התוכנית 8 מתוך ויז'ואל בייסיק, בחר באפשרות זפחְהּח3/] 6ז03 [1503/ שבתפריט 85. בחירה זו פותחת את הקוב> 6א180818.6/ ומציגה לפנינו את מסך הפתיחה של התוכנית 180818/ (תרשיס 16.2). 36 סמוע שו 6 [5 96| 55 ]5 |₪ םח תרשים 16.2 יצירת מסד נתונים בשלב הראשון יש ליצור מסד נתוניס חדש. כדי ליצור אותו בצע את הפעולות הבאות : 1. בחר באפשרות ש6א שבתפריט 1!6=. בחירה וזו מציגה מספר סוגיסם של מסדי נתוניס. 2 בחר בסוג מסד נתונים הרצוי ובגירסה הרצויה (אם קיימות מספר גרסאות). כדוגמה, בחר במסד הנתוניס 4606855 050זסו!/ (תרשים 16.3). בחירת סוג מסד נתוניס גורמת לפתיחת חלון בו תתבקש לתת שס למסד הנתונים, שזה למעשה שס הקוב שנוצר. 2 ₪658 - ערכת כלים 3 הקש בתיבת הטקסט את שסם הקוב מסד הנתוניס ואשר את הבחירה. יצירת הקוב גרמה ליצירת מסד הנתוניס ולהצגת שני חלונות: שססחו\ 81808986 - לצורך בניית מסד הנתוניס ו-5%9+00801 5001 לצורך שאילתות. ו 1 8 7.0 חסופזס/י - ₪ סקוו תרשים 16.3 בניית טבלה כדי לבנות את מסד הנתוניס ניעזר בחלון שססחו/ 8182856 (תרשיס 16.4). ד די ב יי | ב ו תרשים 16.4 פרק 16: מסדי נתונים 263 חלון ה מציג עצ בעל ענף אחד בשם 00678185זש, אשר מכיל את מאפייני מסד הנתוניס שכרגע נוצר. חלון וה דומה לחלון הסייר של פששססחו/: לחיצה על + (ייפלוסיי) שנמצא משמאל לענף גורמת לפתיחת הענף ולהצגת מאפייני הנתוניס (תרשיס 16.5). לחיצה נוספת באותו מקוס (שסימנו כעת הוא -) סוגרת את הענף. <ם . 7 כו אוסטחועצ ‏ שוש שו |5 )2 |₪9 ]₪ |₪ םה]חם טחוש ס5בּמהּ31 0 א סטחח, וחב סח | סום יסיכ 65!ן= התב וטק : 6= חב =600חח0-) 6 ז=5ח0ו5300חבוך וז ז=3016 הכ | ןי 3 =זפהז0טַחו1!8ט- == וסשרחו ד /יזש וכ 0=ח0ו5ז6/ ₪607050/100060=0 =0810ו1ק₪ =11855810ח5 | ]= 00 חס / חוחז0ה :קספו | | תרשים 16.5 בשלב הראשון יש לבנות את הטבלאות המרכיבות את מסד הנתונים. כדוגמה, נבנה שתי טבלאות: 6865ץס!0ם המכילה נתונים על עובדים במפעל (שס פרטי, שס משפחה, ת'יו וקוד מחלקה). הטבלה השנייה היא 6087116045 המכילה נתוניס על המחלקות במפעל (קוד מחלקה, שס מחלקה, מנהל מחלקה ומספר עובדים). לבניית הטבלה 01086865= בצע את הפעולות הבאות: 1. לחצ לחיצה ימנית על הענף 165+ו6קסזק שבחלון שסטחז/ ספהּסְבּוהּ. 2. בחר באפשרות 1316 ששפא. בחירה זו גורמת לפתיחת החלון 6זט+06ז54 6!טצּד (תרשים 16.6). 3. בתיבת הטקסט 6ו3א 8016 הקלד את שס הטבלה 665עסוסוחם. בשלב וה יצרנו את הטבלה ונתנו לה שס. בשלביס הבאיס נוסיף בה את השדות הדרושים. 4 68ם/ - ערכת כלים 6זטזסטזו5 3016 ד הטוס הן 3 קוו -ן רט -ן בשוה -ן טמ 5 וו תרשים 16.6 הוספת שדות לטבלה להוספת השדה שם פרטי בצע את הפעולות הבאות : 1. לחצ על הלחצן 16!8= 400 לחיצה זו גורמת להצגת החלון 16!0= 400 (תרשים 16.7) בחלון זה נמלא נתוניס על השדה. 2 בתיבת הטקסט פוא רשוס את שס השדה פוחבּא+פזות. 3 בתיבה הנפתחת 8מְץד בחר את סוג השדה. בדוגמה שלנו הוא +א6ד. פרק 16: מסדי נתונים 265 וקו ו 4 תרשים 16.7 4. בתיבת הטקסט 5126 הקלד את גודל השדה. גודל 20 לדוגמה, קובע כי השדה 6וחה\91זו= יכיל עד 20 תוויס. תיבות הסימון חְ1חָח26701.6ששסו| ו-60ז36001 קובעות האס השדה יכול להכיל מחרוזת ריקה (כלומר לחיות ריק) והאם חובה למלא בו ערך, בהתאמה. אס נרצה לקבוע קריטריון לערכיס המוקלדיס בשדה, נקבע זאת בתיבת הטקסט 6טח סו 03| . לדוגמה, שדה מספרי מסוג זְפַחָסוח! מכיל ערכים מספריים. נניח שנרצה להגביל את הערכים לאלה הגדולים מ- 10, במקרה זה, בתיבת הטקסט 18 ח0ו08%ו!8/ נרשוס את הביטוי *10<יי (גדול מ- 10). מעתה כל ערך שיוקלד בשדה ולא יתאיס לדרישה ייגדול מ- 10 יגרור אחריו הודעת שגיאה. את הודעת השגיאה קובעיס בתיבת הטקסט +א6 07ח0ס31/031/. מה שנרשס בתיבה זו יוצג אס הערך שהוכנס לשדה עובר על ייחוק האימות'י. בתיבת הטקסט 0/1/8!06ט618 הקלד ערך אשר יהווה ערך ברירת המחדל. שיס לב, אין חובה למלא תיבה זו, אלא אס נרצה שיופיע ערך ברירת המחדל בתוך השדה. 5. לסיום אשר את נתוני השדה בלחיצה על הלחצן 0. 6 ₪65 - ערכת כלים באותו אופן נוסיף לטבלה את השדות 08ח1.85%%8, 0! ו-600006כ ובסיוס נלחצ על 6 כדי לחזור לחלון 54706)076 16פאד (תרשיס 16.8). כל שדות הטבלה מוצגיס בחלון 517000016 18!6. כדי למחוק אחד מהשדות, נבחר בו מתיבת הרשימה 16!6= % ונלתא על הלחצן 16!6=] 6עסוה0א. ₪ שזטזסטז!5 6|טב3 ך = ] :חבש סוסב ד 6 סחחבו] | 60 , ₪ סח טא -ן 1 :עד -- חש סוב -ן 2 :ו שוחה ה חזסו ד 7 1024] : ז06כחַחו3!ס-> חזהַח6 וסוס אוסווה - -] 8 = אוה חסו5סק|החוטזוס [00] :6 חס הטוב /י רככ !ו חסוס הבוב /י שוש :זוב פוה ]טס בופו= פ/יסוחפם | וו אחז וס -ן שטהוחו -ן זו -] םסה -] משזוטם -ן - | 6%הח1 6/יסוחסת | א6תן 00 6 | 6סבּך 6ת= בווטם תרשים 16.8 אינדקסים תפקיד האינדקסיס במסד הנתוניס לאפשר אחזור מהיר של נתוניס. חסרון האינדקס בכך שהוא מאט כתיבה של רשומות חדשות במסד הנתוניס. כששדה בטבלה משמש כאינדקס, משמעות הדבר שהשדה הזה מוחזק כטבלה ממוינת. כאשר המשתמש מזין נתוניס למסד הנתוניס הס נשמרים בו בסדר כרונולוגי של הזנתס. במילים אחרות, הס נמצאיס בצורה לא ממוינת, אלא אם המשתמש הכניס את הנתוניס בצורה ממוינת. חיפוש נתון שתואם לקריטריון מסוים יהיה איטי, מכיון שהרשומות אינן ממוינות. אס לדוגמה נרצה לחפש מספר תייז של עובד מתוך כל הרשומות בטבלת עובדים, המחשב יצטרך לעבור רשומה רשומה ולבדוק אס היא תואמת לקריטריון. אס לא התמזל מזלנו, הרשומה התואמת היא הרשומה האחרונה, וכך יתנהל לו החיפוש לאורך כל הרשומות הקיימות. פרק 16: מסדי נתונים 267 לעומת ואת, אם שדה ת'יז היה מוגדר כשדה אינדקס, מסד הנתונים היה בונה לו מעין טבלה בזיכרון (שאינה נראית למשתמש או למתכנת) ושומר שס את הערכיס בסדר ממוין. בכל פעס שבטבלה המקורית מתוספת רשומה בעלת ערך חדש של תייו, רק מספר תייז וה נשמר אוטומטית באופן ממוין בטבלת האינדקס. בנוסף לשדה ת"ו שומרת התוכנית לניהול מסד הנתוניס בזיכרון גם מצביע אל הרשומה המקורית, כדי שאפשר יהיה לדעת היכן היא נמצאת. מכיון שבעת הכנסת הנתוניס צריך לטפל גם בטבלת האינדקס הממוינת, גמן הכתיבה של נתוניס חדשיס הוא איטי. לעומת זאת, כאשר נרצה לאחזר נתוניס, כמו למשל שס של עובד מסוים, ננצל למטרה זו את האינדקס ונפנה אל הרשומה על פי שדה תיז. במקרה זה החיפוש לא נעשה באופן כרונולוגי, מכיוו ששדה ת"ז הוא שדה אינדקס והחיפוש נעשה מטבלת האינדקס שנמצאת בזיכרון וממוינת. בדרך זו החיפוש מהיר יותר ושליפת הנתוניס מהירה יותר. שדה אינדקס מיוחד נקרא מפתח (ש6א) שפועל בדיוק כמו אינדקס רגיל. המיוחד בו שאין הוא מרשה כפילות ערכיס. לדוגמה, אס שדה ת'יז היה מפתח, התוכנה לא תרשה ששתי רשומות בטבלת העובדיס תהיינה בעלות מספרי ת'יו ז₪הים. שדה מפתח הוא שדה שערכו הוא ייחודי (פטףוחט). שס פרטי לדוגמה, לא יכול להיות שדה מפתח מכיון ששני עובדים ויותר יכוליס להיות בעלי אותו שס פרטי. לאינדקס מפתח יש שס מיוחד, המייחד אותו משאר האינדקסים: ע6א4עזבּחוזק (מפתח ראשי). שיס לב שבטבלה אחת ייתכנו כמה אינדקסים, אך יכול להיות בה מפתח אחד בלבד. שדה מפתח יכול להיות מורכב מכמה שדות וכך גס שדה האינדקס. הוספת אינדקסים נחזור לחלון 06+016ז+5 6!פ3ד. חלון מאפשר להוסיף אינדקסים לטבלה. כדי להוסיף אינדקס לטבלה בצע את הפעולות הבאות: 1. לחץ על הלחצן א6ח! 400. בחירה זו גורמת לפתיחת החלון 66עס!כוחם סד א6 סח! 00 2 בתיבת הטקסט 6וח3א הקלד שם לאינדקס. 3 מתוך תיבת הרשימה 16/05 6!סּווה4 בחר את תיבת הסימון עוהּוחוזק. שיס לב שבטבלה אחת יכול להיות רק אינדקס (מפתח) 'ץ46!ץז8 חוזקיי אחד בלבד. 4. אשר את הנתוניס בלחיצה על לחצן א02). חזור על הפעולות על כל אינדקס נוסף שתיצור (תרשיס 16.9). 5. לח על הלחצן 61056 כדי לסיים את יצירת האינדקסים ולחזור לחלון 6|פפדך 6 התיבה +15 1 א06ח! מכילה עכשיו את שמות האינדקסים שנוצרו. 8 665ם/, - ערכת כלים ₪ 6 ור 5 = 0) אפשח! 300 חש | שחשוה= | 0% | םעז וז תרשים 16.9 לבניית הטבלה לח על לחצן 3!6ד שחד 6ווטם. פעולה זו סוגרת את החלון ומחזירה אותנו לחלון ‏ שסטחו/ סִפהּפַ8ּו8כ, לאחר שענף התוסף תחת הענף 85וח6ססזק ונושא את שס הטבלה החדשה. עריכת טבלה מחלון שסשח1/ 08%80856 ניתן לצפות בטבלה ובמרכיביה (השדות, האינדקסים, והמאפייניס שלה). לחיצה על סימן + משמאל לענף הטבלה גורס להרחבת הענף ולהצגת שלושה תת-ענפים : 5 - להצגת שדות. 686 - להצגת האינדקסים. 858 - להצגת מאפייני הטבלה (תרשים 16.10). פרק 16: מסדי נתונים 269 |<םו. ו ד | קןס ]4‏ אוסטחועצ עו 6 | || | ]₪ |₪ ]פס שסשחו שא 031303556 ₪ 5 ופוח [₪]-- = 5 = 5 סז / חווח0ה :10567 ץח תרשים 16.10 כל תת ענף יכול להתרחב אף הוא לתת-ענפיס המרכיבים אותו, וכך הלאה. לדוגמה, הענף 18105= מציג תחתיו את רשימת השדות הקיימיס בטבלה, וכל שדה מציג תחתיו את רשימת המאפיינים של השדה הנבחר (תרשים 16.11). |<וםו - או ןס | אוסטחועצ עו 6 [ || | ]₪5 |₪ ]פס שסשחו של 31356 0 5 זז וקו ב 5 כ 6וחבופזו= ה ן 56 | 6 5 3 צשאץזבוחוזק ו 5ז 3 ותב 383166 ₪ ; 70 036007168060=02/08198 '₪] > 70 203560=02/08/98! 1.856 : =00080% 601 56006-6-- 070 תרשים 16.11 0 ₪668 - ערכת כלים ניתן לעשות שינוייס בטבלה ולערוך אותה מחדש, ניתן למחוק את הטבלה, לשנות את שמה, לפתוח אותה במטרה למלא בה נתוניס ועוד. לביצוע כל זה, דרושה לחיצה ימנית על ענף הטבלה להצגת תפריט מקוצר שבו אפשרויות שכיחות. ארבע האפשרויות הראשונות הן: 1. 0080 - לפתיחת הטבלה למטרת הזנת נתוניס. 2 ח0ו269 - פתיחת הטבלה במבט עיצוב (החלון 5070616 3016 ד) לעריכת הטבלה מחדש. 3. 88ח9 - לשינוי שס הטבלה. 4. 26|616 - למחיקת הטבלה. באופן דומה נבנה את כל הטבלאות והשדות במסד הנתונים. בסיוס העבודה נבחר באפשרות א= שבתפריט 116" כדי לצאת מהתוכנה 1528%8/ ולחזור לוויז'ואל בייסיק. בוויו'ואל בייסיק 6 נוספה אפשרות בה ניתן לנהל מסד נתוניס עס טבלאות, קשרים, שאילתות באופן גרפי קל וברור. השיפור המשמעותי בגירסה 6 הוא היכולת לנהל כמה מסדי נתוניס שוניס, כדוגמת ז59/8 .5001 1070508 ו- 00695 +ספסזסוו למשל. הלחצן (שססחו// שפו/ הַאָהכ) שבסרגל הכליס מציג את ממשק המשתמש, בו - נוכל לנהל את מסד הנתוניס החדש, כמוצג בתרשיס הבא : 5 | ₪ 4 5חסול6שתחכ-) להשההתטזויח= 353 ]| תרשים 16.12 פרק 16: מסדי נתונים 271 ניהול מסד הנתונים משורות הקוד כדי לנהל מסד נתוניס מתוך תוכנית וויו'ואל בייסיק, צריך להיעזר במנוע התוכנה 6 16% ₪11607050. לתפעול המנוע מספקת ויזיואל בייסיק את האובייקט 30ם (000[60 00655 2818) שאליו נתייחס בפרק וה. האובייקט 00א (36016 0% 808כ) שמאפשר לנהל מסד נתוניס מרוחק באמצעות 0086 למשל, אך באובייקט וה לא נדון במסגרת ספר זה. אובייקט נוסף לניהול מסד נתוניס הוא 400 20[600) %8+28 6שוז6). אובייקט זה דומה במידה רבה לאובייקט ₪0 ובתפעולו - לפקד 08%8, וניתן לבנות פקד כזה באופן ידני בעזרת 300. נראה שמטרת האובייקט 0ג להחליף את האובייקט סמס. קישור היישום עם מנוע מסד הנתונים האובייקט 00 מכיל אוסף של פונקציות, מאפיינים ושירותים, ובכלל וה סוגי משתניס לעבודה מול מסד נתונים. כדי לנהל מסד נתוניס באמצעות האובייקט 0גס יש להגדיר זאת במפורש כחלק ממאפייני הפרויקט. לצורך כך בחר באפשרות 68 שבתפריט 60%[סזק וסמן את תיבת הסימון שמשמאל ל- )ספסזסוו צזהזסו | 664[ 3.51 סמס. הצהרה על משתנים כמשתנים רגילים, גם משתנים המשתמשים לניהול מסד נתונים מוצהריס קודס השימוש בהם. יש סוגים שוניס של משתניס המיועדיס לניהול מסד הנתוניס. בפרק וה נתמקד בשכיחים שבהם, בסוג המשתנה 08+80858 לניהול מסד נתונים ובסוג המשתנה +₪660706586 לניהול טבלה או אוסף רשומות. ההצהרה על משתנה כזה דומה להצהרה על משתנה רגיל: 8 28 80 תנכת %% 8585ב 56ע תנכת פתיחת מסד נתונים לאחר ההצהרה על המשתנים נפתח בעזרתס את מסד הנתוניס הרצוי. פתיחת מסד נתוניס נעשית בעזרת השירות 03+80856 ח0067, לפי התחביר הבא: ("מסת.תנ1אאסע:08580856)"0ת6ק0 = 60 566 במשפט זה נשתמש לפתיחת מסד נתוניס טסוח.6חוצוא! במשתנה 60 מסוג ספהּסּוה. מעתה, המשתנה 60 מייצג את מסד הנתוניס 65ח. חושא וכל התייחסות למשתנה 60 היא למעשה התייחסות למסד הנתונים 60 סחושא. כפי שניתן לראות, אפשר להשתמש במשתנה פַחו54 כפרמטר לשירות 08180858 ח6קס. 2 68ם/, - ערכת כלים לדוגמה: %8ם1ע56 28 6ת3א0כ562 תנכת "ססת. סתנשאפ:6" = ס6מ8ַאסכ562 (6ת8א56220%) 28680886ת026 = 00 566 הפונקציה ()זופזטס כאשר פותחים מסד נתוניס (או קובץ רגיל), שולחים לפונקציה או לשירות ארגומנט, שהוא שס הקוב והנתיב. נניח שבנינו את היישוס בתיקיה פסזסץו/! שבתיקיית השורש, ובה נמצא מסד הנתוניס שאנו פוניס אליו. לדוגמה: 86 8₪8בג2 60 תנק ( "סמסת. פסץ;208+פץא: 0") 0628585886 = 00 566 הכל טוב ויפה עד שאנו מוסרים את היישוס שלנו בתוספת ערכת התקנה ללקוח והוא מחליט שברצונו להתקין את היישום (וממילא את קוב מסד הנתוניס טחח. טסעו/) בתיקיה אחרת, פסזספו:6. במקרה וה נתקלים בבעיה, מכיון שכאשר התוכנית מבצעת את המשפט הבא: ( "ססת. פסץא8+פץ: 6") 86 062285858 = 00 566 היא אינה מוצאת את הקוב> פסוח.פסעו/ כי הוא אינו נמצא בתיקיה פָסזסץו! אלא בתיקיה 00ז80וז. התוצאה: כישלון התוכנית, עס הודעת שגיאה שהקוב לא נמצא! כדי למנוע תופעה לא נעימה זו, אין להתייחס בקוד לתיקיה מוגדרת, אלא לתיקיה כללית. ברור לנו כי קובץ מסד הנתוניס 0 פסעו נמצא בתיקיה שבה נמצא היישוס שלנו. אס כן, בכל פעס שנרצה לפנות לקובצ מסד הנתוניס נאמר לתוכנית שתחפש אותו בתיקיה הנוכחית ובמיליסם אחרות, בתיקיה בה פועל הקובף. בכל מקרה, קובצ היישוס וקובץ מסד הנתוניס נמצאים באותה תיקיה, ובתיקיה זו נחפש את הקוב. כדי להורות לתוכנית לחפש את הקוב בתיקיה הנוכחית או בתיקיית היישוס, קיימות בוויי'יואל בייסיק שתי דרכים. האחת היא שימוש בפונקציה ( )זופזטו6 המחזירה כערך את שס התיקיה (נתיב שלס) הנוכחית, בה נמצאת מערכת ההפעלה. לשס תיקיה זו נוסיף את שס קוב מסד הנתוניס ט0ח.פסעו ונבקש מהתוכנית לפתוח אותו. לא חשוב באיזו תיקיה התוכנית מותקנת - הקוב יימצא. לדוגמה: 86 ₪8 00 תנק 551% 28 6ת8א116ע5%2 תנכת "מסת. מקצא" 68 ()15כתט0 = 8(6א567116 (6ת8א116ת5%2) 006228%80856 = 60 566 דרך נוספת היא השימוש במאפיין ח+8 של האובייקט סס8. האובייקט מס מכיל נתוניס שוניס על היישוס שלנו. המאפיין ח₪81 מאחסן כערך את שס התיקיה (נתיב שלס) של היישוס. חיפוש הקוב ססח. פסעו ייעשה כעת בתיקיית היישוס הנכונה. לדוגמה: 86 ₪8 00 תנכת 551% 28 6ת8א116ע5%2 תנכת "מסת. פפעא" 6 מסע.קקת = 6מ(8א5627116 (6ת8א116%ת5%2) 006228%80858 = 650 566 פרק 16: מסדי נתונים 273 מסד נתונים מרוחק השירות 00623+40856 מיועד לפניה למסד נתוניס מקורב, אך כאשר נרצה לפנות למסד נתוניס מרוחק (כמו למשל מסד נתוניס של 080!8 שמותקן בשרת), ניעזר בסוג המשתנה ח606077866410ז שבעזרתו ניצור את הקשר אל מסד הנתונים. משתנה נוסף שדרוש הוא +ח6חחסזוטחם 00ז, שעליו נפעיל את השירות ה0070060%00ה6ק0 ליצירת הקשר אל מסד הנתוניס המרוחק. לדוגמה: %תפתתסע נבטתמססע 28 תחת 866ע1לק מ60%10תת60060ת 28 תתססת 866ט1לק (0) %5ת6תתסע נטם008ע . 6ת1סתמססע = ממת 566 260060 50 מס61ס6תתסס' ם606%10תםס6ת6ק0.תתת = מתססת 566 (" ;28595%₪0%0=קאת ;086210=כ01" ,8196ת ,6קתסץקסאעסשטנעתכ6בץ ,"28016ס") השירות חסו70606%ח60ח6ק) מקבל ארבעה פרמטריסם עיקריים. 1. 6ו3א 66ז0ט50 אה - 05 הוא השם בו מיוצג מסד הנתוניס ב- 0056. 2. +שוחסזק - קבוע המייצג את האופן בו הפעולה תצא אל הפועל. 3 צֶ|ח₪6800 - משתנה בוליאני הקובע אס מסד הנתונים ייפתח לקריאה בלבד או לא. 4. )600766 - מחרוות המועברת ל- 0086 לפתיחת מסד הנתוניסם. המחרוזת מקבלת את 6! 058 (שם המשתמש) ו-0ז0/שש₪855 (סיסמת הכניסה למסד הנתוניס). שיס לב שבדוגמה המחרוזת בקוד מכילה את שס המשתמש והסיסמה. במצב זה מסד הנתונים ייפתח אוטומטית. אולס ישנה אפשרות לא לשלוח את הסיסמה, ואז המשתמש יצטרך להקיש אותה בעצמו, כדי שיורשה לחיכנס למסד הנתוניס. המשתנה חח0ס0ו מייצג את הקשר אל מסד הנתונים המרוחק, ומעתה כל פנייה למסד הנתוניס תהיה דרך משתנה זה. לדוגמה: 9% 88₪9ג2 2850062 תנכת %8ת1גע55 28 5620002 תנכת "665ץ0ס1סתת 0%תע 6תה8א1256ע ,6ת8א2856 ,10 521207" = 5620062 ,ץ1600ו5520=: סתהא) 686% 6501 ת6ק0. פתתססת = צץ250062 566 ,7ץ1ת028260עת20006=: ססצד ,ץצ1ם00226800ת2000= : 09קץ106%1 (6021260%א8:=200ת00%10 ברוב השירותים שנלמד בהמשך (מלבד אלו המיוחדים לאובייקט 0כף) ניתן להשתמש גס במקרה בו אנו פוניס למסד נתונים מרוחק. 4 68ם/, - ערכת כלים פתיחת טבלה רוב פעולות ניהול מסד הנתוניס נעשות בעיקר מול טבלה אחת, או מול מספר טבלאות. עיקר הפעולות הן שליפת נתונים, כתיבה, עריכה ומחיקה. כדי לפנות לטבלה במסד הנתונים יש להצהיר על משתנה מתאים ולקשר אותו עס הטבלה. הקשר בין המשתנה לטבלה נעשה בעזרת השירות +0067088607056, כאשר הפרמטר שמקבל השירות הוא שס הטבלה במסד הנתוניס. לכל טבלה דרוש משתנה נפרד, אלא אס הקשר בין המשתנה לטבלה הראשונה הסתייס ובמקומו בא קשר עס טבלה אחרת. תחביר השירות הוא: (סתהת 8%82856.026226002056%)18016כק = 18016ע8ט 566 לדוגמה: 86 8₪8בג2 60 תנק % פת ע תנק ("מ6ת בתנחא:08580856)"6ת6ק0 = 00 566 ("020625")סס6פַססס6תת00.000 = ע 5660 השירות מקבל פרמטרים נוספים, אולס לא נתייחס אליהס במסגרת ספר זה. בנוסף, במקוס שס הטבלה ניתן לשלוח כפרמטר משפט .501 ועל כך נדון בהמשך. הפניה לשדה בטבלה ברגע שנוצר הקשר בין המשתנה לבין הטבלה באמצעות השירות 466070566 008 ניתן לפנות לשדות בטבלה על פי התחביר הבא : [שתהת 1618ת8] !18016עהא לדוגמה: 86 ₪8בג2 60 תנק % פת ע תנק ("מעסת. אתסא:085808956)"6ת6ק0 = 60 566 ("665ץ0ס1קתם")260020506ת00.000 = ע 566 %ת1ע6פ פת2 ס6תהאע5%62 תנכת 166062 58 ססשת6ם1 תנכת [6תהא128%ת] !2 = סתהאע562 [06ת]!2 = 06ת6ת1 שיס לב שלאחר הפעלת השירות 48607056% 006 מצביע הקלט מוצב על הרשומה הראשונה. פקודות ההשמה הבאות מכניסות את הערכים הנמצאים בשדות 6 זו ו-6אָ שברשומה הראשונה אל המשתנים 6וחף4ּאזז51 ו-06זחו, בהתאמה: [6תה8א128%ת] !2 = סתהאע562 [2!]206 = 066ת%2ם1 פרק 16: מסדי נתונים 275 השירות 866010560 067 עם משפט .591 השירות 80070961ח006 מקבל בדרך כלל כפרמטר שס טבלה. אולס ניתן לשלות כפרמטר גס משפט ‏ 501. במקרה זה, ההתייחסות תהיה אל הרשומות שהתקבלו ואל השדות הכלולים בשאילתה. שיס לב שייתכן שלא נקבל את כל הרשומות הקיימות בטבלה, אלא רק את חלקן, על פי תחביר השאילתה (משפט 501). לדוגמה: 86 ₪8 00 תנכת 6% פ>8ת ם תנכת 6ת1גע6ספ 28 58562561 תנכת ("מעסת.אלסא:08580856)"6ת06 = 60 566 "668לס1קתת תסעץ 266 , 6ת8א21256 561606" = 562561 (8%2501) 2600208606(ת00.006 = ע 566 בדוגמה זו השירות מתייחס לתוצאות השאילתה ולשדות הכלולים במשפט ‏ 501 בלבד, ולא לכל שדות הטבלה. בדוגמה לעיל ההתייחסות תהיה לכל הרשומות בטבלה 5טוות, אך לשדות 6וח918זו= ו-406 בלבד. הפניה לשדה בשאילתה בדומה לשדה בטבלה, הפניה לשדה בשאילתה נעשית על פי התחביר הבא : [18016!]%518618עה8 לדוגמה: %8ת1ע6פ פת ס6תהאע5%62 תנכת [6תהא128%ת] !2 = סתהאע562 לא ניתן לפנות לשדה 6! שבטבלה 6865ע0!ח= מכיון שהוא אינו חלק ממשפט .5001. אפשרות נוספת לפנות לשדה בשאילתה היא בציון מיקומו הכרונולוגי במשפט .501. לדוגמה: %ת1ע56 פג2 ס6תהאע5%62 תנכת 62ססת1 פ2 ס6סשת6ם1 תנכת (2)0 = סת8א562 (2)1 = %206ם1 (0)ז מתייחס לשדה 86%9זו= שהוא הראשון בשאילתה ו-(1)ז מתייחס לשדה 888 שנמצא אחריו. שיס לב שהיתרון הגדול שבשימוש במשפט .]501 כפרמטר לשיטה הוא ביכולת לפעול על מספר טבלאות. בניגוד לשימוש הרגיל שבו הפרמטר מתייחס לטבלה אחת, במשפט .501 אחד ניתן לקבל מידע משדות במספר טבלאות. לדוגמה: 6ת1גע6פ פ8ת2 862561 תנכת 8" , 6ס107608.2קחת , סת8א1250ת.107665קתת 561606" = 562501 8 " סתס6ת8260ק6ע , 107605קחם תסעת 8002ם8. 6מ6ת26 8ק6כ" "010 . 6מסתסעהאקסק = 10ססכ. 107669סתט 626מא" (8%2901) 2600208606(ת00.006 = ע 566 6 68ם/, - ערכת כלים בדוגמה זו, (0)ז ו-(1)] יתייחסו לשדות פוחּא9זו= ו-6הָ מטבלת 665ץס!וסח= בהתאמה, ואילו (2)ז יתייחס לשדה 88081 המקביל להס מטבלת )+חפוחזו8קפכ. עריכת רשומות עסקנו עד עתה בפתיחת מסד הנתונים ובקישור השירות 60070560 006 לאחת מטבלאותיו. גם למדנו על הפניה לשדה בעזרת משתנה מסוג +36601056 לשליפת מידע מהטבלה. השימוש במשתנה מסוג זה והפניה דרכו אל שדות הטבלה אינה לאחזור נתוניס בלבד, כי אס לעריכת רשומות הטבלה. עריכת רשומות בטבלה נעשית בעזרת שירות מתאים, שבה הפניה לשדה מורה לשירות על איזה שדה או על איזו רשומה לבצע את העריכה. השירות ש00%6 חלק מניהול הטבלה במסד נתוניס הוא היכולת להוסיף רשומה חדשה לטבלה. השירות המורה לטבלה לפתוח רשומה חדשה ולקבל שדות חדשיסם הוא עש00%6. לאחר הפעלת השירות ש00%6, פקודות ההשמה תבוצענה על שדות הטבלה. לדוגמה : % פע תנק ("665ץ0ס1קתס")26002050%ת00.000 = ע 566 קוסאססת .2 "לץתתאכת" = [6ת8א128%ק]!2 1 = [266]!ע2 5 = [כ1]!ע אין חובה לבצע פעולות השמה ולהכניס ערכיס לכל שדות הטבלה וניתן להשאיר שדות מסוימיס ריקים מערכים. כל זאת, בתנאי שהשדה מאפשר קבלת ערך ריק והוא אינו שדה חובה. בהפעלת השירות ש06%8// אין כל משמעות באיוו רשומה נמצאיס בעת הפעלתו. בכל מקרה הרשומה תתוסף בסוף הטבלה. השירות +60 באופן דומה לשירות ש4608%68 המאפשר הוספת רשומה חדשה לטבלה, השירות )₪61 מאפשר עריכת רשומה קיימת. כאשר התוכנית קוראת לשירות )501, כל פקודות ההשמה הבאות עורכות את הרשומה הנוכחית. לדוגמה: % פת ע תנק ("665ץ0ס1קתס")260020506ת00.000 = ע 566 1% וע "ץפ5פסצ" = [6ת8א128%ת]!ע2 2 = [2!]266 9 = [כ1ן]!ע פרק 16: מסדי נתונים 277 שיס לב שהרשומה הנוכחית היא הרשומה הראשונה והשירות ₪0 יפעל עליה. כלומר, הערכיס החדשים יעודכנו ברשומה הראשונה, ובה בלבד. השירות 036 אס נוסיף רשומה חדשה בעזרת השירות ש00%6 או אס נערוך רשומה קיימת בעזרת השירות 0=, הפעולות תבוצענה בשטח העבודה בלבד ללא עדכון הטבלה שבדיסק. השינויים ייכתבו בטבלה רק על ידי השירות 10081%6. לפי זה, לאחר כל שימוש בשירות ‏ ש4001%6 או בשירות 5064 חובה להפעיל את השירות 000816 כדי לגרוס לשינוי בטבלה עצמה. לדוגמה: 6% פפת ץע תנכת ("665ץ0ס1קתס")260020506ת00.000 = ע 566 שנסת.עץ "סתפסא" = [6ת8א128%ת]!ע2 1 = [600006כ2]!ע2 6 זוסאססת .2 "נבטת" >= [6ת8א1289%ת] !ע2 1 = [266]!ע2 1 = [פ]!ע 3 = [600006כ2!]2 6.. .ץע בדוגמה וו מתבצעת עריכת הרשומה הראשונה ועדכונה בטבלה; לאחר מכן יש הוספת רשומה חדשה ומילוי השדות בערכיס ולבסוף - עדכון הטבלה. שיס לב שלכל שירות מתבצע עדכון הטבלה בנפרד. השירות ₪6!6%6 השירות ₪61!8%6 מוחק את הרשומה הנוכחית. אס מצביע הקלט מוצב ברשומה הראשונה ובשלב וה מתבצעת הקריאה לשירות, שורה זו נמחקת. אס הרשומה הנוכחית היא האחרונה - שורה זו תימחק, וכן הלאה. לדוגמה: % פת ע תנק ("%ת6ת%ע82ק6כ")26002050%ת00.000 = ע 566 .ל 86 ,וע בדוגמה וו מוחקיס את הרשומה האחרונה. ניתן לראות שאין צורך לבצע עדכון באמצעות השירות 1200816: השירות 28/8416 גורס בעצמו למחיקת הרשומה מהטבלה. 8 668ם/, - ערכת כלים דפדוף ברשומות בכל פעס שמבוצע המשפט הבא : 0.0 = ע 5660 השירות +86060070656%ח026 גורס למצביע הקלט לעמוד ברשומה הראשונה של הטבלה. אם נבצע עדכון או מחיקה, פעולות אלו תתייחסנה לרשומה הנוכתחית ובמקרה זה - הראשונה. לרוב לא נרצה לעדכן או למחוק את הרשומה הראשונה דווקא, אלא רשומה אחרת כלשהי. במקרה זה עלינו לדפדף בין הרשומות לפנים ולאחור עד לרשומה המבוקשת. כאשר נעמוד ברשומה זו, כל קריאה לשירות עריכה או מחיקה יתבצע עליה, כי זו הרשומה הנוכחית המוגדרת. השירות +5זו-]6צסו₪ השירות +0/6-175/ מציב את מצביע הקלט ברשומה הראשונה. אס מצביע וה נמצא כבר ברשומה זו, לא תהיה משמעות לביצוע פעולה זו ואין זו שגיאה. לדוגמח: 006% פת ע תנכת ("%ת6ת%ע82ק6כ")26002050%ת00.000 = ע 566 % נעסטסא.ץע בדוגמה זו לא נעשה שינוי כתוצאה מהקריאה לשירות, מכיון שהמצביע כבר מוצב ברשומה הראשונה. השירות +35 |6עסו₪ שירות זה מציב את המצביע ברשומה האחרונה. כל שינוי שנעשה ברשומה לאחר הקריאה לשירות +85 61צס! יתייחס לרשומה האחרונה. לדוגמה: % פת ע תנק ("665ץ0ס1קתם")260020506ת00.000 = ע 566 .ל 86 וע בדוגמה זאו, הרשומה שתימחק היא הרשומה האחרונה. השירות +א<6ו!6צסו₪ קריאה לשירות +א8%8ש0!₪ גורמת למצביע לעמוד על הרשומה הבאה לאחר הרשומה הנוכחית בו הוא נמצא כעת. אס לדוגמה קראנו לשירות +8זו8עס!/! ואחריו לשירות )אספעסו/!, הרשומה הנוכחית היא הרשומה השנייה. בדוגמה זו השירות מצביע על הרשומה השנייה: % פת ע תנק ("665ץ0ס1קתס")260020506ת00.000 = ע 5660 אסאסטסא.ע סאסאסטסא.ע פרק 16: מסדי נתונים 279 ראינו שבשירותים +5זו6עס!! ו-851 |פעס!!, אין מצב שגיאה כאשר המצביע נמצא ברשומה הראשונה או ברשומה האחרונה, בהתאמה, ולא יתבצע כל שינוי. לעומת זאת, השירות )א6א6עס!/ יכול לגרוס לשגיאה אס המצביע מורה על הרשומה האחרונה בעת שמבצעים אותו. מכיון שאין רשומות נוספות, כביכול חרגנו מתחוס הטבלה. כדי להימנע משגיאה זו ניעזר במאפיין 507. המאפיין ₪0 מאפיין זה מסייע לגלות אם הגענו לרשומה האחרונה או לא. כאשר מצביע הקלט מצביע על הרשומה האחרונה, המאפיין =0ם מקבל ערך 6טזד, בכל רשומה אחרת ערך המאפיין הוא 8!56=. לכן, בכל פעם שנתקדם רשומה אחת בעזרת השירות +א6\סטסו/, | נבדוק תחילה את ערך המאפיין 0. אם ערכו 8|86=, הרשומה הנוכחית אינה האחרונה ונוכל לקרוא לשירות +א86טסו!. אם ערכו פטזד - הרשומה הנוכחית היא האחרונה ואין להתקדם. השירות פטסועצ6זק 6טסו₪ השירות פטסוצ6זק6צ₪0 גורס להזות המצביע רשומה אחת לאחור מהרשומה הנוכחית שבה הוא מוצב. כל קריאה נוספת לשירות מזיוה את המצביע רשומה אחת לאחור. לדוגמה: % 25 ע תנק ("665ץ0ס1קתס")2600208506ת00.000 = ע 566 שו פפטסנטסעקסטסא.ץע בדוגמה זו, לאחר ביצוע המשפט 56% המצביע מוצב על הרשומה הראשונה. כאשר השירות פטסוע8זק6טסו נקרא, הוא גורס למצביע לוז רשומה אחת לאחור. שים לב, אס המצביע היה מוצב ברשומה הראשונה, הזותו לאחור תגרום לחריגה מתחוס הרשומות ולהודעת שגיאה שלא קיימת רשומה במקוס בו המצביע נמצא. כדי למנוע תקלה זו ניעאר במאפיין 80. המאפיין 507 המאפיין "80 מסייע לגלות אס הרשומה הנוכחית היא הראשונה בטבלה. כאשר המצביע מוצב על הרשומה הראשונה, המאפיין 0 מקבל ערך פטזד וכאשר הוא מוצב על כל רשומה אחרת ערכו 8|56=. בכל פעס שנרצה לקרוא לשירות 5 ו נבדוק תחילה את ערך המאפיין 207. כאשר ערכו 8186= נוכל לקרוא לשירות 1005ו/8זק6עסו, אך כאשר ערכו 6טזד לא נוכל לעשות ואת. לדוגמה: ()0110% 8טסנ1טסעפסתס סט5 8%66ע21ק 8 נטסעכפסטסא.ץ מפםך7 20%.ע ססא +ך פופ םם 0 6ם/. - ערכת כלים השירות 6צסוא השירותיסם שסקרנו עד כה סיפקו אפשרות לנוע לרשומה מוגדרת, הראשונה, האחרונה, רשומה אחת קדימה ורשומה אחת לאחור. שירות נוסף מאפשר תנועה יותר חופשית ברשומות. שירות זה הוא 6צס/, המאפשר להגדיר את מספר הצעדיס שנרצה להזיזּ את המצביע לפנים או לאחור. לדוגמה: 6% פת ע תנכת ("665שס1קתת תסעת 6ת8א128%%ת 16 ,62.0062260020986%)"56160% = םע 566 3 סטסא.ע [6ת8א115%ת]!ע% סתנעק בדוגמה וו, המצביע ינוע אל הרשומה הרביעית, שלושה צעדים קדימה מהרשומה הראשונה. כדי להזיוּ את המצביע לאחור, מספר הצעדיס שיקבל השירות כפרמטר יהיה שלילי. לדוגמה: 2- סטס.ע [עת1]!? 6םמ1צק שיס לב, שחריגה מתחום הרשומות יוצרת מצב שגיאה. כאשר המצביע מוצב על הרשומה הראשונה, מספר הצעדיס המקסימלי שהוא יכול להתקדס לאחור הוא: 1 %ה466070000. המאפיין +3466010600 המאפיין +₪660766000 מייצג את מספר הרשומות בטבלה שפתחנו בעזרת השירות ה סס. לדוגמה, % פת ע תנקת ("%תסת%ע82ק6כ")26002056%ת00.000 = ע 5660 %תו2.26002000 סםתנ1עק אס בטבלה 80%+ז8ק6כ יש 20 רשומות, התוכנית תדפיס את המספר 20. שיס לב שהמאפיין 6060700004 אינו מייצג את מספר הרשומה הנוכחית, אלא כמה רשומות יש בכל הטבלה שהביא השירות 606070561 ח6קס. ניתן להשתמש במאפיין 4860706001 כדי להדפיס את כל הרשומות. מכיון שמאפיין זה מייצג את מספר כל הרשומות, ניתן להריצ לולאה שתתחיל למנות מהרשומה הראשונה ועד ₪660700000%. לדוגמה: 156062 פב 1 תנקת %מטסססעסססת.? 70 1 =ך שססם [8062ם8א] !2 6סםנ1צק אסאסטסא.ץע 1 6אפא ניתן להשתמש במאפיין ₪0 כדי לקבל את אותה תוצאה. נורה ללולאה לפעול מהרשומה הראשונה ועד לרשומה האחרונה ונבחן את המאפיין ₪0 כדי לדעת אס הגענו לרשומה האחרונה או לא. לדוגמה: פרק 16: מסדי נתונים 281 % בפסטס.ע שספ.ץ פ%סא 16נםתח סכ [8062ם8א] !2 סם1עק אסאסטס.ע 0 באופן דומה ניתן לפעול בלולאה מהרשומה האחרונה לכיוון הרשומה הראשונה, אך הפעם, המאפיין שנסתייע בו הוא 00ם. לדוגמה: - 9 ש0םפ.? %סא 16נ1םתח סכ [8062ם8א] !2 סם1עק 8 תק סטסא. ע 0 המאפיין +הטס06זס366 במשפט .501 השירות 860070881 ח006 יכול לקבל כפרמטר שס טבלה, אך ראינו כי ניתן לו גם משפט .501 כארגומנט. לדוגמה: 006% פת ע תנכת (">%מסת826ק60ק תסעץ 8662ת88 561606₪")ס56ַ2סס6תת00.000 = ע 566 תוצאת הקריאה לשירות תהיה רשימה שתכיל את שמות כל המנהליס שבטבלה פחפ)זהקסכ. נניח כי אנו רוצים לדעת כמה רשומות נתקבלו, נפנה למאפיין 0 ונדפיס את ערכו. לדוגמה: % פת ע תנק 6תגע56 פת 8562561 תנכת "%תסתסע8קסכק תסעץ 8062ת88 561606" = 562561 (8%2901) 26002086%6(ת00.006 = ע 566 %ת0ו2.26002000 סםתנ1עק התוצאה שתודפס תהיה 1. כלומר, הערך שמכיל המאפיין חטס000ז600 הוא 1! הסיבה לכך היא, שהמאפיין 1ח₪86070000 במקרה זה אינו מייצג את מספר כל הרשומות, אלא את הרשומה הנוכחית שעליה הוא מוצב. במיליס אחרות, יש הבדל בין מה שמייצג המאפיין 4600700001 כאשר השירות 460070561 006 נקרא עס טבלה כפרמטר, לבין התוצאה המתקבלת כאשר אותו שירות מקבל משפט .5001 כפרמטר. כאשר הפרמטר הוא טבלה, המאפיין 6607000001 מייצג את מספר כל הרשומות; וכאשר הפרמטר הוא משפט /]50, המאפיין מחזיר כערך את מספר הרשומה הראשונה, היינו 1. ערך וה מתקבל כאשר מצביע הקלט נמצא ברשומה הראשונה ועדיין לא בוצעה כל פעולה שהיא על תוצאת השירות. לכן, לפני בדיקת ערכו של המאפיין נקרא לשירות +85 |סטס!], כדי לעדכן את המאפיין 60070000 במספר כל הרשומות שהתקבלו. לדוגמה: 6% 585 ם תנכת 6תנגע6ספ 28 8562561 תנכת "%תסתסע82קסכק תסעץ 8062ת88 561606" = 562561 (8%2901) 2600208606(ת00.006 = םע 566 2 658ם/, - ערכת כלים % .ץע %ת0000ע6002ת2.ת 6םת1צק במקרה זה התוצאה שתודפס תהיה מספר כל הרשומות שהתקבלו מהשאילתה. איתור רשומות עד כה עסקנו בדפדוף רשומות קדימה ואחורה, לכיווו הרשומה האחרונה, או אל כיוון הרשומה הראשונה, בהתאמה. אך מה נעשה אס נרצה להגיע לרשומה מסוימת, נניח אל הרשומה החמישית! במקרה כזה, כאשר המצביע מוצב על השורה הראשונה בטבלה, עלינו לקרוא 4 פעמיס לשירות 8\6%%עטסו בעזרת לולאה, כדי שיציב את המצביע על הרשומה החמישית. אפשרות אחרת היא לעמוד על הרשומה הראשונה ולהתקדס 4 צעדים. אך מה נעשה כשנרצה שהמצביע יעמוד על הרשומה של העובד יידנייי שמספר ת'יו שלו 12345! במקרה וה אין אנו יודעיס באיוה מספר רשומה נמצאים הנתונים על עובד זה. לשםס כך ניעזר במאפיינים של המשתנה מסוג 6% כדי למצוא רשומות מסוימות בטבלה המקורית או בתוצאה שהפיקה השאילתה. המאפיין אסחחו המונח אינדקס (08%ח!) מוכר לנו. כאשר יצרנו טבלה והוספנו לה שדות הגדרנו חלק מהשדות כאינדקסים. גם ראינו שאין חובה ליצור אינדקס בטבלה, אך במקריס מסוימיס הימצאות האינדקס מסייעת מאוד. מטרת האינדקס היתה חיפוש מהיר של רשומה מכיון שהרשומות נשמרות בטבלת האינדקס באופן ממוין. כל טבלת אינדקס מקבלת שם שאליו אנו פוניס כדי להשתמש באותו אינדקס (אין לבלבל בין טבלת האינדקס, שהיא למעשה טבלת שירות פנימית, לבין טבלת הנתוניס שלנו). נניח לדוגמה, שבטבלה 665עס!סוחם יצרנו אינדקס מפתח לשדה 6!. כאשר נרצה לפנות ישירות לרשומה של העובד דני בעל ת'יו 12345, נפנה בשלב ראשון לאינדקס (במקרה זה, למפתח) המכיל את השדה 18: תהתאסת1 = א66%ת260020856%.1 לדוגמה: % פת ע תנקת ("18016ץא") 25660סס6תת00.000 = ע 5660 "אסם1 צא" = א66%םת2.1 במקרה שלנו האינדקס הוא גס מפתח, וכבר ראינו שהמפתח נקרא גס ע66א עזבּחוזזק. בכל פעם שנפנה לאינדקס שהוא מפתח, נפנה אליו בשם זה (זכור, בטבלה אחת יכוליס להיות כמה אינדקסים, אך מפתח אחד בלבד). שורות הקוד המתאימות ייראו כך: 0086%סת פת ע תנכת ("665ץ0ס1קתס")260020506ת00.000 = ע 566 "ץסאץ2התנעק" = א06%ם2.1 פרק 16: מסדי נתונים 283 משפנינו לאינדקס המתאים, נשאר רק להורות לו איזו רשומה עליו לחפש. המאפיין 560% המאפיין 588% מאתר רשומה מסוימת בתוך אינדקס. כך כותביס את המשפט: 3 + ,26071 ,ם180עה8קתסס 26002086%6.966% כאשר, % - מייצג משתנה מסוג 60070561ז. חספוז8ק וח 60 - מייצג מחרוזת המייצגת אחד מאופרטורי ההשוואה הבאים: <, =<, ו ץ6א - מייצג את הערך בשדה האינדקס שאותו יש למצוא. ניתן לבנות עד 13 ערכים, כאשר האינדקס כולל 13 שדות. שיס לב שישנה התאמה בין מספר ה-/ץ8א לבין מספר השדות שבאינדקס. לדוגמה: % פת ע תנקת ("665ץ0ס1קתס")60020506ת2ת00.000 = ע 566 "ץסאץעהתנעק" = א06%ם2.1 5 ,"=" 56₪0₪%.ע בדוגמה זו יש פנייה למפתת (המכיל את השדה 6₪!), והתוכנית מבקשת ממנו למצוא את הרשומה שהשדה 6! שלה שווה (''=") למספר 12345. האינדקס מוצא את השדה המתאים ופונה ישירות לרשומה המתאימה לו בטבלת 865ש010ח= ושולף ממנה את הנתוניס. כאשר נרשוס את המשפט הבא : [6תהא115%ת]!|ץ 6תג1צק נקבל את השס יידנייי שחיפשנו, מכיון שהאינדקס איתר על פי ת"ז 12345 את המצביע אל הרשומה המתאימה בטבלת הנתונים. כל פנייה לשדה ברשומה זו תספק את הנתוניס הדרושיס. אס לא נמצאה רשומה העונה לתנאי החיפוש, משפט זה יגרוס לתוכנית לעצור עס הודעת שגיאה 66070 1ח6זזט6 סצזיי. כדי למנוע ואת, ניעזר במאפיין ח6+ב3ּ\סא. המאפיין הסזבהּוסא המאפיין ח₪01800 מציין אס רשומה שחיפשנו בעזרת 586% נמצאה או לא. אס הרשומה לא נמצאה, ערך המאפיין הוא 6טזד. לגבינו, כאשר אנו מבצעיס חיפוש רשומה באינדקס בעזרת המאפיין 566%, עלינו לוודא תחילה בעזרת ח0ז8/!ס אס הרשומה אכן נמצאת או לא. אס הרשומה לא נמצאה, אין לפנות למשתנה 4606070561 ולבקש ממנו נתוניס. לדוגמה: 4 68ם/, - ערכת כלים % פת ע תנק ("665ץ0ס1קתס")260020506ת00.000 = ע 566 "ץסאץעהתנעק" = 66%ם1.ע2 5 ,"=" 56₪6₪%.ע2 תסם?ץ בססהאסא ססא 15 [ת1]!? ש6םמנעפ [6ת8א128%6ע]!2 סםתנ1עק + תש בדוגמה התנינו את הדפסת השדות 6! ו-6חחּ8א91זו] בערך המאפיין חסופווסצז. רק כאשר ערכו 8!88= (כלומר, הרשומה נמצאה), התוכנית מדפיסה את ערכי השדות האלה. השירות +5זו-חחו- השירות 566% המשולב עס המאפיין א06ח! מסייע למצוא רשומה מוגדרת כלשהי. שירות וה והמאפיין א6סח! תקפים רק כאשר השירות 5606070561 ח206) מופעל על טבלה. כאשר השירות מופעל על משפט 5001 עלינו להיעזר בחיפוש רשומה לפי ערכה, בעורת השירות +5%ו-0ח1=. השירות 10-86 מוצא את הרשומה הראשונה שמתאימה לקריטריון החיפוש שהגדרנו. תחביר הקריאה לשירות : 8 59₪0ע1ת6ת1ת.20₪002086% כאשר, % - משתנה מסוג 660706581. 8 - מחרוזת (או משתנה פַחוז)5) המכילה את הקריטריון. מחרוזת הקריטריון כתובה באופן דומה לחלק "6ז6ח/יי במשפט -501, אך ללא המילה 'יפזפח/'י. לדוגמה: % פת ע תנק ("665ש0ס1קחת תסעץ 16 ,6ת8א1250%ת 260020866)"561606ת60.006 = םע 566 "12345 = 10" 56%ע1ת6םתג1ע.ץ [6ת8א115%ת]!ע% סתנעפ שיסם לב שהשירות 51ז0-1חו= מתחיל את החיפוש ברשומה הראשונה, וכיווו החיפוש הוא כלפי הרשומה האחרונה. השירות +א6אסחו- השירות +א6א0חו= מוצא את הרשומה הבאה שמתאימה לקריטריון החיפוש שהוגדר. גס שירות זה מקבל מחרוות כקריטריון הכתוב באופן דומה לחלק "6ז6ח\'יי. לדוגמה: 006% פת ע תנכת ("668ץ0ס1קחט תסעץ 16 ,8(6א21280% 561606") 26002086%ת00.000 = ע 566 פרק 16: מסדי נתונים 285 "12345 = 10" 5%ע1ת6םתג1ע.ץ [6ת8א115%ת]!ע% סתנעפ "12345 = 16" 6א6אבתג1ע.ץ [6תהא125%ת]!ע% סתנעק שיס לב, השירות %א086חו= מתחיל את החיפוש ברשומה הנוכחית לכיוון הרשומה האחרונה. השירות +35 |סחו= שירות זה מסייע בחיפוש רשומות על פי קריטריון מתוך הרשומות החוזרות כתשובה לשאילתה. השירות מוצא את הרשומה האחרונה שמתאימה לקריטריון החיפוש שהוגדר. נניח לדוגמה, שנתונות הרשומות שבטבלה 16.1 : טבלה 16.1 | וטא | | שטם, 06 ו שורות הקוד הבאות: 6% פ>ג ם תנכת תסעע עִססַהת8/ ,26010 260020865)"561606ת00.006 = ע2 566 (">תסת6ע8 קפסכ "'ץתתהכ'= עסהִהםהא" 02886ם1ע.2 [26018]!ץ סתנגעק התוצאה שנקבל: 3. כלומר, הרשומה השלישית היא האחרונה מבין הרשומות שתואמות את תנאי החיפוש. השירות | 0]85%ח1= מתתיל את התיפוש מהרשומה האחרונה לכיוון הרשומה הראשונה. השירות פשסוטס6זססחו- השירות 005וצ6076ח1= מוצא את הרשומה הקודמת שמתאימה לתנאי הקריטריון. שירות זה מתחיל את החיפוש מהרשומה הנוכחית ונע אחורה לכיוון הרשומה הראשונה. אס נתייחס לנתוניס שבטבלה 16.1 ולשורות הקוד הקודמות, שורות הקוד האלו: "'ץתתאכ' = מסשת8א" פטסנטפעקסםתנע.ל+ [26018]! סםתנ1עק ידפיסו את התוצאה: 1. כלומר, הרשומה הראשונה (1) היא הקודמת. 6 65ם/, - ערכת כלים טרנזקציות נניח שאנו מנהליס מסד נתוניס בו נתונות שתי טבלאות, טבלת מלאי וטבלת מכירות. בטבלת המלאי נשמר המידע על כמות המוצריס הקיימיס במלאי, ובטבלת המכירות נשמר המידע על כמות המוצרים שנמכרו. המשתמש מצפה שבזמן שהוא ממלא הזמנה ללקוח, הכמות שבהזמנה תופחת אוטומטית בטבלת המלאי ותעדכן את טבלת המכירות. בצורה זו יידעו מנהלי המלאי בדיוק כמה נשאר במלאי ומתי צריך להזמין סחורה לחידוש המלאי. לאור הדוגמה, בחן את שורות הקוד הבאות: 2 25 צץ2%16ם6008ם1 תנקת 6% פ5פפג2 26000008 תנכת 6% 25 א605%00%ע2 תנכת המשתנה ע1/4ח8טכ%חו מאחסן את כמות המוצריס שנמכרו. המשתנה 180001081 מנהל את טבלת המכירות. המשתנה א805%00%ז מנהל את טבלת המלאי. (%5816.7168%א5816.6ת52) 0781 = צץ616ת6008ם1 ("020866)"020625ס60תת00.00 = 26002002 566 ("60020866)"5600%תת00.06 = 26089000% 566 עדכון טבלת המכירות (הוספת רשומה חדשה עם נתוני המכירה): א . 26002062 %. 800 תק :א .125816 = [6ת8א220080%] !260020062 צץצ%16ם6008םת1 = [7ץ%616ת008] !26002002 6.. 2600206 השלב השני עדכון טבלת המלאי (הורדת כמות המכירה מכמות המלאי הקיימת): "080%10ס2ק" = א006מם2608000%.1 (%10.768%0א%.1)1105816[ה78 ,"=" 2₪09%00%.506% 0.1% ץ1%סת6008ם1 - [ץ61%ת008] !2609%00% = [7ץ0082%616] !2605600% 1.6 עד כאן הכל טוב ויפה, טבלת המכירות עודכנה בכמות ההזמנה וטבלת המלאי עודכנה בהתאם ומנהלי המלאי יוכלו לראות שמהמלאי ירדה כמות מסוימת של מוצרים. אך מה יקרה אס בין השלב הראשון (עדכון טבלת המכירות) לבין השלב השני (עדכון טבלת המלאי) קרתה הפסקת חשמל. בפועל, טבלת המכירות עודכנה על פי כמות המוצרים שהוזמנו, אך טבלת המלאי לא עודכנה בהתאם. מנהלי המלאי לא יידעו שבוצעה הזמנה והמלאי לא הופחת. כדי להתגבר על תקלה זו ולמנוע אותה מראש, ינעטוף'י את כל התהליך כתנועה (ח580%0ח13). משמעות הדבר היא ששני שלבי התהליך, הכוללים את עדכון טבלת המכירות ואת עדכון טבלת המלאי, יחשבו תהליך אחד. כאשר התהליך נפסק באמצע מסיבה כלשהי, התוכנית לא תעדכן את חלק התהליך שכבר בוצע. כלומר, כל עוד לא פרק 16: מסדי נתונים 287 הגיע התהליך לסיומו הכולל במקרה זה את עדכון טבלת המלאי, גם עדכון המכירות לא יבוצע. לפניך שורות הקוד הייעוטפות'י את התהליך כולו כתנועה: 6 28 802206ח תנכת 86 פ88בג2 4059816 תנק % 28 26002008 תנקת % 28 א26098000 תנקת 2 25 צץ%16ם6008ם1 תנקת (0) 02%808065א. 6מ1ש6תמפכ = 6ספעקפח 566 ("מת.85828986)"6:58165תק0.0סתקקפח = 605816 566 ("60020806)"020625תת0058165.020 = 26002002 566 ("26002086%)"5600%ת0058165.020 = 2609000% 566 (%5816.7168%א5816.6ת12) 0781 = צץ616ת6008ם1 8 200 כ קפ א . 26002062 %. תא .125816 = [6ת8א220080%] !2600206062 ץצ616ם6008ת1 = [7ץ0082%616] !260020602 2600206 ..6 "080%10ס2ק" = א006%מם2608000%.1 (%10.768%א%.5816ת1)511ה78 ,"=" 2₪05%00%.566% .0 ץ1%סת6008ם1 - [ץ61%ת008] !2609%00% = [ץ0082616] !2605600% 1.6 8 תת 60 . 200 כ קפ התהליך כולו עטוף כתנועה המתחילה ב-5ח8ז7דחו260.טָסזקספצ ומסתיימת ב-805ז חחח 00. סז ספ/ו. כאשר תהיה תקלה במהלך העבודה, התהליך לא יעדכן את מסד הנתוניס והפעולה תתבטל. לדוגמה, אס תהיה הפסקת חשמל לאחר עדכון טבלת | המכירות ולפני | עדכון | המלאי, התוכנית | לא תגיע | לשורה 8 דר 0 0. 9סזק קספש ולכן - כל התהליך יבוטל. פירוש הדבר שטבלת המכירות לא תעודכן והטבלאות תישארנה ללא שינוי. השירות א*836!|ס₪ה= השירות 5ח8זזה!860 מתתיל את הפעולות הכלולות בתנועה, והשירות 58 0 מסיים אותה. כשהתוכנית קוראת לשירות פחה8ז1חח0ס6 הוא מעדכן את כל התהליך שכלול בתנועה. עס ואת, אפשר לבטל את התהליך ולהפסיק בכל עת את הפעולות שבוצעו על ידי התנועה. 8 665ם/. - ערכת כלים כשנפעיל את השירות 805 דוח 60 הוא יבצע את חלק התהליך שכבר בוצע. לפעמים נרצה לבטל את כל התהליך ולשחזר את המצב לקדמותו, ולצורך זה נפעיל את השירות 6%ם]!|סא. השירות ₪30!!880% מבטל את כל התהליך שבוצע לאחר הקריאה לשירות 5חזזֶחוטָ6ם ומחתזיר את מסד הנתוניס למצב שהיה לפני הפעלת השירות 5חזדחו60ם. לדוגמה: 8. 06 כ כ 5 ...082088 %8%. שסעפספש שיס לב: אס בוצעה קריאה לשירות 5ח8ז1)וח ה 0ס0, התהליך שכלול בתנועה מבוצע ולקריאה לשירות ₪0!!580% לא תהא כל משמעות וגם תהיה שגיאה. לאחר הקריאה לשירות 2801077805 התוכנית מצפה לשירות 5ח8ז 1 וחס6 לאישור התנועה או לשירות ₪0!!880% - לביטולה. כאשר אחד מהשירותיס הופעל, קריאה לשירות השני, ללא קריאה נוספת לשירות 59ח78דח281, תגרוס מצב שגיאה. ניהול מסד נתונים בזמן פעולת התוכנית פיתוח יישוס ללקוח כולל תחילה את אפיון דרישותיו על ידי מנתח המערכת. המתכנת מתרגס אפיון וה למסד נתוניס ולממשק משתמש, שהוא יישוס וויו'ואל בייסיק, כדי לנהל מסד נתוניס זה. לאחר שהיישוס נמסר ללקוח והוא משתמש בו, קורה שהוא דורש שינויים נוספיס שלא חשב עליהם קודם. במקרה בו השינוייס הס ברמת הניהול בלבד, עבודת המתכנת פשוטה. אולס לפעמיס הלקוח דורש שינוי מבני במסד הנתוניס, כמו למשל הוספת שדה לטבלה קיימת. לדוגמה, הלקוח מחליט שהוא מקצה רכביס לחלק מהמנהליס בחברה, והוא מעוניין בשדה נוסף בטבלת מנהלים, שבו יישמר ברשומת כל מנהל מידע בדבר רכב שקיבל, אס קיבל. בנוסף, בטבלה רכבים (בהנחה שהיא נמצאת מסד הנתונים) יושלמו בכל רשומת רכב פרטי המנהל שקיבל את הרכב לשימושו. מלבד זואת, הלקוח עשוי לדרוש דוחות שוניס המציגיס מידע על הרכביס בחתכיס שונים, דרישה שבעקבותיה ייתכן שיהיה צורך להוסיף לטבלה אינדקס. יובצא מכך, שהמבנה הראשון של מסד הנתוניס שבנינו אינו מספק אותנו עוד. לפעמיס נבטרך לנהל מסד נתוניסם מבחינה פונקציונלית ומבנית בומן הפעלת התוכנית, כדי להתאימו לצרכיס משתנים. לביצוע שינויים מבנייס במסד הנתוניסם בזמן ריצה קיימות שתי דרכים עיקריות. במסגרת ספר וה נדון בדרך הקלה יותר, אך גס וו דורשת ידע בסיסי בשפת ‏ 5031. אל דאגה, את משפטי 501 הנדרשים לביצוע נציג בפירוט לאלה שאינס מכירים אותס. השירות 660+66א= השירות 600486א₪ מבוצע על משתנה מסוג סַפהּסִ88ּ8. שירות זה מבצע משפט .501 אשר פועל על מסד הנתוניס שמייצג משתנה מסוג 08%80858 שעליו הופעל השירות. פרק 16: מסדי נתונים 289 תחביר הקריאה לשירות: 0% 60006א. 086800856 את משפט .501 ניתן להחליף במשתנה (חו54 המייצג גם הוא משפט .501. שים לב שמשפט .501 זה מייצג שאילתת ביצוע ולא שאילתת בחירה. לדוגמה: 86 8₪8בג2 60 תנק ( "סשת. %+סאץ : 6") 086228%85850 = 60 566 6 "'נ1טת'= 6ת8א1286ע 566 10766585קתם 68%66ס0" 6ס6וס6א₪.סף "12345 = 10 626םא" ואפשר לכתוב זאת גם כך: 86 ₪8 00 תנכת ש6תנעספ פ8ת2 8562561 תנכת ( "סשת. %+סאץ : 6") 026228%585850 = 00 566 "'נטת' = 6תהא128%6ע 566 107665סתם 866קס" 5-1 "12345 = 10 6ע6תח " 8 862961 = 562561 1 605₪5םגו60א. פס השילוב של שאילתת ביצוע ושל קריאה לשירות 80046א₪ מאפשר לבצע כל שינוי מבני במסד הנתוניס. כאשר נרצה להוסיף שדה לטבלה, נתרגם את בקשתנו למשפט .501 ונשלח אותו כארגומנט לשירות 60016א5. הוספת טבלה כדי להוסיף טבלה למסד הנתוניס בזמן הפעלת התוכנית, נכתוב משפט .501 המורה על הוספת טבלה ונקרא לשירות 80046א₪ עס משפט זה. למרות ששפת .]501 היא שפה סטנדרטית, נמצא לפעמיס שינוייס בתחביר השפה בין גירסאות שונות של השפה. בסעיפיס הבאיס נתייחס לשפת 501 אשר מיושמת במערכת ניהול מסדי הנתוניס 66855 )1670501 ו-8016ז0. כאשר יהיה שוני ביניהס נציין ואת במפורש. תחביר משפט .501 להוספת טבלה הוא: , (8126) 676 0868 סתהםת 1610ת) סתהת 603016 16מ7 026866 (6סץ5 88%8 סתהת 1616ע לדוגמה: 6 ,(20) 6א76 886%2ם8 ,(10) 6א76 10) פעגס 78016 026866 (66062ת1 משפט ‏ 501 יכול להיכתב באותיות קטנות או גדולות (באנגלית), כי אין לכך משמעות. את גודל שדה ניתן להגדיר ב-60655/ בשדה מסוג +6%ד או עזהּחום בלבד. סוג השדה %א6ד מקביל לסוג המשתנה 8ַח54 בוויז'ואל בייסיק, וכך הוא מוגדר במסד הנתוניס 460855. ב-00780|6 מוגדר אותו סוג שדה כ-ז8ח6ז3//. 0 6ם/. - ערכת כלים מחיקת טבלה תחביר משפט .501 למחיקת טבלה הוא: סתהת 03016 16מַַ7 ססצת לדוגמה: 8 718016 קסעכ כשנרצה למחוק טבלה ממסד הנתונים, נקרא לשירות 80016א₪ עס משפט ‏ 501 זה. לדוגמה: "60025 78016 סספכע" 6סוס6אם.ס0 הוספת שדה תחביר משפט .5001 להוספת שדה במסד הנתוניס 00855( הוא : 6 68608 סתהת תתט1סס מתט601 260 סתהםת 603216 16מ78 1665ב לדוגמה: (10) 1686 6מם0ם6160ק מתט001 206 6605צ10קתחת 178016 1665ת גודל השדה ניתן להגדרה רק בשדות מסוג טקסט ובינארי. בכל משפט ניתן להוסיף שדה אחד בלבד ולכן, להוספת שדה יש לבצע קריאה נוספת לשירות 60016א5. תחביר משפט .501 להוספת שדה ב- 0180|86 הוא : ,6 08608 סתהת מתט001ס)260 סתהת 03016 16מ78 1665ב (6קץ6 08568 סתהת מתגט1סס לדוגמה: (12) 07820282 6תסםק6160ק2 200 665ע10קחם 78016 ע1662ת שיס לב שבמסד הנתוניס 2780|8) לא ניתן למחוק שדה. שינוי נתוני השדה השינוי מתייחס לשינוי מאפייני השדה ולא לשינוי הערך שמכיל השדה. למשל, אפשר להפוך הגדרת שדה טקסט בגודל 20 תוויס לשדה טקסט בגודל 30 וכדו'. תחביר משפט 501 לשינוי נתוני שדה ב- 80/6 חוא : (6קץ6 0868 סתהת מתט601) ץ40015 סתת 03016 16מ7 21665 ניתן לשנות נתוניס של כמה שדות במקביל, על ידי הפרדה ביניהס בפסיק. לדוגמה: 8 78016 21665 ((25) 078202822 ע8066%ם8 ,(822)30םת7820 650כ) צץְ+נבסא שינוי נתוני שדה מוגבל לתנאיס הבאים: 1. מותר לשנות וווא ל- |וטא א (אפשר הפוך רק אם אין נתון בטבלה). פרק 16: מסדי נתונים 291 2. מותר לשנות מ-וחוא או 0816 ל- ז8ח0, להפך אסור. 3. מותר להרחיב גודל שדה, ולצמצס אסור. שיס לב שלא ניתן לשנות נתוני שדה (הגדרה) במסד הנתוניס 00655. הוספת אינדקס כדי להוסיף אינדקס לטבלה קיימת במסד הנתונים, השתמש במשפט .501 הבא : סחהת א06%בת1 66%םת1 [1606תט] 026866 (161013ע , ...,16102ע ,16161ע) סתהת 68016 םס ץעהתנצק תסנחא אפשר לכתוב את המשפט בשורה אחת, אך לשס בהירות התתביר הוא נכתב כאן בשלוש שורות. המילה ייסטףוחטיי שאחרי 016816 היא רשות, והיא מוספת כאשר האינדקס אינו מאפשר כפילויות. המשפט ייץזהחוזח חזו\יי הוא גם כן רשות, הוא מוסף רק כאשר נרצה שהאינדקס יהיה מפתח. לדוגמה: ץְסאץע2התנעתק 06%ם1 6גש16תט 026866 (00210) 0028 םמ0 צעהתנעצק תסנחא דוגמה נוספת: 8 אסת1 026866 (6ת8א188% ,6ת8א1285%ע) 107665סתם תס מחיקת אינדקס למחיקת אינדקס מטבלה השתמש בתחביר הבא : ספת 68016 א0 פתהת אסבת1 א6בת1 קסע לדוגמה: 8 וטו א0 פס6תהא א06ם1 ססצכ סגירת מסד נתונים בסיוס עבודה עס מסד נתוניס (סיום זה מתבצע לרוב כשהמשתמש יוצא מהיישום) יש לסגור אותו. סגירת מסד הנתוניס מתבצעת בקריאה לשירות 61056 של המשתנה (מסוג 08%90886) המייצג את מסד הנתונים. לדוגמה: %6. 0 2 6658ם/. - ערכת כלים תרגיל לסיום הפרק הנושאיס שנלמדו בפרק זה רבים. כדי להטמיע אותס בצורה טובה נבצע את התרגיל הבא, המשלב את עיקרי הנושאיס שנלמדו בפרק זה. לצורך ביצוע התרגיל בנה את הטופס המוצג בתרשים זה: תרשים 16.13 הטופס יאפשר למשתמש להקליד את קוד העובד ולקבל מידע אודותיו. ניתן יהיה למחוק את נתוני העובד מהטבלה, לעדכן אותה ולהוסיף עובד. לחיצה על הלחצן 1א= תסגור את מסד הנתוניס ותסיים את היישום. את התרגיל בצע בשלבים : 1. צור מסד נתוניס ושמור אותו בשס טסוח.אזס//, בתיקיה שבה נמצאת ויו'ואל בייסיק. 2 הוסף למסד הנתוניס ססחח.אזס/ טבלה בשס 885עסוסוחם. 3 הוסף לטבלה את השדות 6!, 6הההח=, 6ההבּח!, 655ז00ה, ופד. 4. צור אינדקס מפתח (ע46ץזחוזק) לשדה 6!. פרק 16: מסדי נתונים 293 5. עדכן את מאפייני הפקדיס בטופס על פי הטבלה הצו: | שן 0 068| 5 שש :הא 35% | חסוזק8) סח ]וטו ןי הסו80 6 5 וס אי דומ (%ח=) +וח= +%פך 6וחהח-)א+ +וח= ]סד סוחפח |1אז - 6 חסוזק8) ו יו 1 הסוזק68 מ יו 0 הסוז0ק68 וס 0 6. הצהר בחלק 60137800 |8ז9ח26) שבטופס 665עס!קוחם זז על המשתניס האלה: 6 88ג2 א02%א30 תנכת % 298 2107608ת2600 תנכת 7. באירוע 1.080 חחזזס= קשר את מסד הנתוניס ואת הטבלה. () 10806 תעסע סטפ 551% 28 6ת(ת8א1106ע5%2 תנכת "מהת.אתסח" 6 םס86ק.סקת = 6ת(8א5570116 (6ת8%22116%8) 28%82886ת6ק0 = 02%א60 566 4 68ם/ - ערכת כלים ("665ץס1קתת")208506ססס6תת6ק0.א2סחסס = 7668ץ10קת2600 566 פטפ בתם ברגע שהטופס 885עסוסוחם = נטען, היישוס מתקשר למסד הנתוניס ולטבלה 5 ווווחם. 8 בנה את השיגרה הבאה: ()תעסע 01082 ס50 866ט21ק ""= %6א%10.76%א6 ""= %6א76%. סת8ם6א6 "" = %א76%.סת8ת6א6 "" = 6א%002058.716%א₪ "" = 6א6ץע. %761א6 01.8 פופ םם -. מטרת השיגרה לנקות את הטופס מנתוניס. 9 בנה את השיגרה הבאה: (סתסת 28 מטא260020)10 ב56820 ס0מ5 21866 "ץ6אץ2התנצק"= א66מם1. 2000001076659 תגוא 10‏ ,"=" 2600(0107669.566% מ6םע 8602אסא. 1076068קת60ץ, 15 ("!28 18םך בס1א 66צ10קתת %'ם15 626םל") אספטספא 6 [6ת8םת] [ 0107668ת600ע2 = 6א76. סתַהַםתת6א6 [ת8ת1] [ 2107668ת600ע2 = 6א76. סתַהת6א6 ]2602688[‏ 7665ץ26000010 = 6א002658.716ת%א1 [161] !| 668ץ26000010 = 6א76. %67161א6 5 תס ספטפ סמ . . מטרת השיגרה לחפש רשומת עובד על פי מספר תייז שלו. 0. בנה את השיגרה הבאה: ()3600206 206 ס50 217866 תסםך (6א610.716א10)5%ע62תטא18 פסא 0% 0 = (%6א6184.76א781)5 11 ("!עססתטא 16 עססםתמ 16856קע") אספספא ""= 6א610.76%א6 1.8 6 אסא . 076065 1 קמ 60 (6%10.768%א781)5 = [18] !2600107665 6%%ץ. סתהתת:אם = [סתתת] !665צ10קתת200 6% סתהת+א6 = [סתהתת] ! 665צ10קתת00: %. 00208585ת0א5 = [26₪4265858] !200107665 %%. א = [161] !107665קתת00ע 6. 066085 1 קת 160 5 תס סטפ סמ פרק 16: מסדי נתונים 295 מטרת השיגרה להוסיף עובד חדש. 1. בנה את השיגרה הבאה: ()60020ת ₪016 ס50 866ט1שק %. 107668 קת 260 %%. סתהתת6א6 = [שתהםת] !2600000107665 %%. סתהתץ:א6 = [פתהםת] !200000107665 %%.. פסתהתת6א6% = [פתהםת] !200000107665 %5. א = [2626855] !200000107865 = [261] !200000107865 6. 076685 1כתמ 260 ספטפ סמ מטרת השיגרה לערוך נתוני עובד קיים. 2. בנה את השיגרה הבאה: ()360020 אסא ספטסא סטפ5 6ַסַַט1עק תסתץ 08ם.668ץ10קתמססץ 15 %. 066085 1 קותמ 260 6 סא אסטסא. 0665 1 קת 60 5 תס [כ1] !60800107868ע2 = 6103.76%6א₪ [שתַהתת] ‏ 2600107668 = 6א16%. 2 6א6 [שֶתהת1] ! 2600107668 = 6א76. סתתַהת61א6 [2002688] | 260001078665 = 6א55.176ס6מְ%2א₪ [161] | 107668קתתס6ע = 6א6%ע2. [676א₪ סטפ סמ מטרת השיגרה להציג את נתוני העובד הבא. 3. כתוב את שורות הקוד הבאות: ()01108 ב656820ת0 סמט5 1866-כ (%10.7680א081)5 2600206 ם56820 פטפ בתם ()0110% 006016858 טפ 866ע1תק תעסת 016858 סג5 תמ ()0110% 6בתסתס סט5 1866-כ סעסספת בת סגט5 תמ ()א0116 016מ6תס סט5 866ע1תק 408 מ016 סט5 תמ 6 65ם/. - ערכת כלים ()א0116 006261 סגט5 21866 06608.6 1 קת 260 48 מ=>א6א פטסא מט5 תם ()א0110% 16אתסתס סגמ5 866ט21ק 6. א סחסס 6 108מס פטפ סתם 4. הקש 5 והפעל את חיישוס. תרגול 1. הוסף לטופס שבתרגיל את הלחצניס 'זאסא!י ו-"פטסוטסזם'י. לחיצה על 6 תציג את הרשומה הבאה, לחיצה אל פטסוש6ז7 תציג את הרשומה הקודמת. שים לב למקרי גבול, שבהס המצביע נמצא ברשומה הראשונה או האחרונה. 2 הוסף לקוד התרגיל גס טיפול במקרה בו ישנה רשומה אחת בלבד והמשתמש לוחץ על לחצן 61816. 3 הוסף לחצן עזפטם אשר יציג את תוצאת השאילתה הבאה: שמס המלא ואת מספר הטלפון של העובדים אשר קוד העובד שלהם גדול מ- 100. פרק 16: מסדי נתונים 297 7: הוספת סרגל כלים ליישום ברוב היישומיס בסביבה חלונאית קייס סרגל כלים שנמצא בדרך כלל תחת שורת התפריטים. תרשים 17.1 מציג את סרגל הכליס הסטנדרטי של ויז'ואל בייסיק. | ₪ ב יש 8% ו | | ₪9 0|₪ ש 0 - 9-0 תרשים 17.1 סרגל הכלים מאפשר ביצוע פעולות שכיחות ביישוס על ידי גישה מהירה אליהן. סרגל הכלים אינו תחליף לתפריטים או לחלק מהם, אלא כתוספת. את כל הנפעולות המבוצעות באמצעות סרגל הכלים ניתן לבצע משורת התפריטיס. סרגל הכלים יכלול בדרך כלל את הפעולות השכיחות שהמשתמש מבצע באופן תדיר, כשמירה ופתיחה של קובצ ועוד. כדי להקל על המשתמש את השימוש החוזר ונשנה בשורת התפריטיס לביצוע פעולות שכיחות אלו, אנו יוצריס לו לחצני קיצור דוך בצורת סרגל הכלים. במקוס לעבור את המסלול קובץ, שמור (בשורת התפריטים) בכל פעס שהמשתמש ירצה לשמור את הקוב בזיכרון, הוא ילח על הלחצן ₪ בסרגל הכלים. כשהצגנו את הפקד 6080020460 הזכרנו את היכולת ליצור סרגל כלים מאולתר בעזרת כמה פקדים כאלה. בפרק זה נלמד לבנות סרגל כלים מקצועי באמצעות הפקד המיועד לכך. הפקד ליצירת סרגל כלים הינו ז3ם8|ססדך -. ו הפקד +5ו.061ּ וח! הפקד +361.15וח! ₪ מאחסן רשימת תמונות המהוות את מאגר התמונות של לחצני סרגל הכלים. שים לב שברגע שתמונה אוחסנה בפקד, ויז'ואל בייסיק אינה וקוקה לשס קוב התמונה ולנתיב. גם כאשר היישום יפעל במחשב אחר שאין בו את אותס קבצי תמונות האגוריס בפקד 806]186!, היישוס יפעל ללא תקלות. התמונות תילקחנה מהפקד 18% 13861 עצמו. פרק 17: הוספת סרגל כלים ליישום 299 כדי להוסיף את הפקד לארגז הכלים יש לבצע את הפעולות הבאות: 1 לת לחיצה ימנית על ארגז הכליס. 2 בחר באפשרות 5+ח6חסכו 60. בשלב זה יופיע החלון 15ח8חסקןוח00) המציג את רשימת האובייקטיס שתוכל להוסיף כפקדים לארגז הכלים. 3 סמן את האובייקט 6.0 %0|5ח60 חסחורח60 פעשססחו/ אספסזסווש. 4 אשר את הבחירה. לאחר אישור הפעולה, נוספה לארגז הכליס קבוצת פקדיס הכוללת בתוכה את הפקד ]. בחר בפקד +15 13861 והצב אותו על הטופס. מיקומו בטופס אינו חשוב, מכיון שפקד זה לא נראה לעיני המשתמש. בשלב זה כל שנותר הוא לקבוע מאפייניס לפקד ולבנות את מאגר התמונות. קביעת גודל התמונה כדי לקבוע את מאפייני הפקד, לח לחיצה ימנית על הפקד (הממוקס בטופס) ובחר באפשרות 4/65ז6קסזם. בחירה זו גורמת להצגת החלון 03065 ע+ו6ססזם, ובו שלוש כרטיסיות (תרשים 17.2). ₪ 5 עזזסקסזק | 601 | 65ותז | | טן וטו 8 ט] מ 2832 6 > 8 זס|ס0-35% 15681 .| שן תרשים 17.2 בכרטיסיה |8ז8ח66 נקבע גודל התמונות שבמאגר הפקד. שלוש האפשרויות הראשונות מאפשרות בחירה של גודל מובנה. האפשרות הרביעית :ו 0ז0059 מאפשרת 0ָ 66ם/ - ערכת כלים קביעה ידנית של גודל התמונות. במקרה זה, נקבע בתיבות הטקסט 460% ו- ח0%ו)/ את גובה ורוחב התמונות בהתאמה. שיס לב, שבחירת גודל תמונה קובעת את הגודל הנבחר לכל התמונות. ברגע שקיימות תמונות במאגר לא ניתן לשנות את גודלן. בחירת תמונה הכרטיסיה 18865 מאפשרת לבנות את מאגר התמונות (תרשים 17.3). |< | 5 עזזסקסזק | סוס | 5 ]0978 שה | ומשו | ו בא ₪ חן ן< וו יו ח תרשים 17.3 כדי להוסיף תמונה למאגר, יש לבצע את הפעולות האלו: 1. לח על לחצן 16076 +561ח!. לחצן זה פותח חלון 7164076 +58166, המאפשר חיפוש ובחירת קוב תמונה מהציכרון. 2 בחר קוב תמונה ואשר את הבחירה (לחצן ח006). בשלב זה נוספה תמונה למאגר וקיבלה ערך 1 = א06ח!. אינדקס 1 מציין כי זו התמונה הראשונה במאגר התמונות. מלבד וּה, ערך האינדקס של התמונה הוא הערך שנציין בכל פעס שנרצה להתייחס לתמונה (תרשים 17.4). חזור על הפעולות 1 ו- 2 כדי להוסיף תמונות למאגר (תרשים 17.5). לחילופין, בחר בתמונה כלשהי בלחיצה אחת של העכבר עליה ומחק אותה מהמאגר בלחיצה על הלחצן 6זט16 6עסוח6א. פרק 17: הוספת סרגל כלים ליישום 301 58 עץזזסקסז תרשים 17.4 כל תמונה חדשה נוספת למאגר בסופו, אך ניתן להוסיף תמונה למקום כלשהו במאגר. לצורך וה נבחר בתמונה במאגר שלימינה רוציס להוסיף תמונה ונבצע את שני השלביס להוספת תמונה. במקרה זה התמונה תתוסף לימין התמונה שנבחרה, ולא בסוף המאגר. ערך האינדקס של התמונה שנוספה ושל אלו שאחריה ישתנה בהתאם. 5 ע!זסקסז תרשים 17.5 2 ₪65 - ערכת כלים הפקד זהּפ|ססד פקד נוסף בקבוצת הפקדים שנוספה לארגז הכלים מבחירת האובייקט )ספסזסוו 0 6001708 הסה 60 פעשססחוצ הוא הפקד זבּם|ססד , בעזרתו נבנה את סרגל הכליס שלנו. נבחר בפקד זה מארגז הכלים ונציב אותו בטופס. נוכל להבחין בכך שהפקד "קופציי אוטומטית לראש הטופס תחת שורת הכותרת, למקוס שבו נמצא בדרך כלל סרגל הכלים של היישוס. הסרגל מוצג בצורה ‏ "שטוחהיי, אך ניתן לקבוע לו מראה תלת-מימדי על ידי שינוי ערך המאפיין 207067966 שלו ל- 1 (תרשים 17.6). |<]ם] = | [חזס-] .₪ )וטס שוסבחוע 5!סס ‏ ₪08 שום תרשים 17.6 לאחר הצבת הפקד ז58!ססד בטופס, כל שנותר לעשות הוא לעדכן את המאפייניס שלו ולבנות את סרגל הכליס באופן הרצוי. השלב הראשון בבניית סרגל הכליס הוא קישורו לפקד 8% 61ְ4חח!. קישור ז3ם!|ססד ל- +3061.15וח! הקשר בין שני הפקדים בא לידי ביטוי בכך שהפקד +861.18ָ8! הוא מאגר התמונות לחצני סרגל הכלים. שיס לב שאין חובה להציג בסרגל הכליס דווקא תמונות, ואפשר שהס יופיעו עס כיתוב עליהם. מקובל ביישומים חלונאייס שסרגל הכלים מכיל לחצניס עס תמונות. ניתן לשלב בין השניים, כלומר, לחצן הכולל תמונה וגס כיתוב תחתיה (תרשים 17.7). כדי לבצע את הקשר בין שני הפקדים, לח לחיצה ימנית על הפקד זהּם!ססד שנמצא בטופס ובחר באפשרות 674/865ססזם. בחירה זו מציגה חלון 23465 +1ז6קסזק בעל שלוש כרטיסיות : |8ז8ח26), 5חסשטם ו- 6זטשסוק. בכרטיסיה |8ז8ח26) מופיעה קבוצה של תיבות נפתחות, השנייה שבהס היא 8881.8%!. תיבה נפתחת זו מכילה רשימה של כל הפקדים מסוג 15% 13061 (אס קיימים כמה פקדים כאלה בטופס, כולם יוצגו ברשימה). מתוך רשימה זו נבחר בשס הפקד המייצג את 8061.5%ח! שאליו רוציס פרק 17: הוספת סרגל כלים ליישום 303 לקשר את סרגל הכלים האישי. מעתה סרגל הכלים הזה יתייחס לפקד זה ולמאגר התמונות שבו בלבד (תרשיס 17.8). [חוזס-] .₪ תרשים 17.7 5 עץזזסקסז 9 | ₪ | | תרשים 17.8 הוספת לחצנים לסרגל לאחר שנוצר הקשר בין סרגל הכלים למאגר התמונות, נבנה את סרגל הכלים ונוסיף לו את הלחצניס המתאימים. לצורך כך נעבור לכרטיסיית ₪405 (תרשים 17.9). 4 ₪66/ - ערכת כלים 5 ע?]זסקסז | שוב סאוו ד בח קן קן 6 הסט שפו רו חש וסט חספ .| -[ ּ קן בח קן /וממ תרשים 17.9 לחיצה על הלחצן הסט +ז56ח! גורמת להוספת לחצן ריק לסרגל. גודל הלחצן יהיה כגודל אשר נקבע בפקד 115% 806ח! לגודל תמונות. הלחצן הנוסף מקבל אוטומטית את ערך האינדקס 1, המורה שזהו הלחצן הראשון בסרגל. לחצן וה יופיע בצד השמאלי ביותר של סרגל הכליס וכל לחצן שיתוסף יצורף לימין הלחצן הקודסם לו (תרשיס 0).. |<1ם)- | [חזזס] .₪ ב תרשים 17.10 ניתן להכניס לחצן בין שני לחצנים קיימים: עדכן את תיבת הטקסט אפשו| שבכרטיסיה 06005 לערך האינדקס של הלחצן שלימינו ברצונך להוסיף אותו ולח על ה0ז201 +561ח1. הלחצן יתוסף בסרגל במקוס המתאיס לערך האינדקס שלו. פרק 17: הוספת סרגל כלים ליישום 305 כדי לבטל לחצן ולהסירו מסרגל הכלים, עדכן את תיבת הטקסט א6סח! בערך האינדקס של הלחצן ולחץ על הלחצן ה2₪4+0 6צסוח6א. קביעת מאפיינים ללחצן לאחר הוספת הלחצניס לסרגל צריך לקבוע לכל לחצן את המאפיינים. המאפייניס מעודכניס בתיבות הטקסט השונות שבכרטיסיה 5ח0טם. המאפיינים העיקריים הס: * חסו)687 - כותרת הלחצן. בנוסף לתמונת הלחצן ניתן להוסיף תחתיה כיתוב (או כותרת). * 468 - מפתח הלחצן. מפתח וה הוא מחרוות המזהה את הלחצן בין שאר הלחצנים. בכל פעם שנפנה ללחצן מסויס נציין את המפתח שלו (תרשים 17.11). מפתח הלחצן ממלא תפקיד זהה למאפיין חא של פקד רגיל. > +א6 דוד!0סד - מאפיין זה קובע מה יוצג בתּיבה המופיעה באופן אוטומטי כאשר סמן העכבר נמצא על גבי הלחצן, וללא לחיצה עליו. * 6בָּוח! - מספר התמונה. לכל תמונה במאגר התמונות שבפקד 1154 86פח| יש מספר אינדקס. במספר התמונה קובעיס את השיוך של כל לחצן לתמונה שלו, על ידי ציון ערך האינדקס של התמונה במאפיין 06ְָ8חח! של הלחצן. | < | 5 עץזזסקסז | סוק | פחסללטפ | |878ח6 | הסזוגום 6שיסוחסם מם ] 5% אדו ו רד --- | ווק [=| - 9954סקת/ומו.0] ששפע 7 777 5306] 6 ₪7 [0106ר1306] :חוטו/ ---=[‏ =פססו-] :6 [4//-:] :| ה 4-00 6 ו וסט ד ...וה :3 ואו -] שן 6ופוט ש 5תסוום חש הסוום סו | ותש סנוט 50| מ 4 6 :06| | מז | 6 | שאפך ו קן הטבח קן | שופ | ץוק | |68ח) תרשים 17.11 6 6ם/. - ערכת כלים לחצני עזר נוספים כשיוצריס לחצן בעזרת חסשטם 6%פ5ח! נוצר לחצן סטנדרטי, או במיליס אחרות, במאפיין 5/6 ערך הלחצן הוא )/ש8%9כזפ - 0. כל לחצן נוסף נוצר בסגנון דומה לקודמו, וכך נוצרת שורה שלמה של לחצניס המרכיביס את הסרגל כולו. לפעמים נרצה לקב> לחצניס בקבוצות לוגיות שונות, כמו לדוגמה קבוצת לחצניס המטפלת בקובצ (חדש, שמירה, פתיחה וכוי). במקרה זה, נרצה להפריד את הקבוצות הפרדה פיזית בהתאם להפרדה הלוגית. למטרה זו מספקת לנו ויו'ואל בייסיק סוג נוסף של לחצן, לחצן מפריד, אשר שונה מלחצן רגיל בערך המאפיין 5/6 שלו. כדי לקבוע שלחצן כלשהו הוא לחצן מפריד, נבחר מתוך הרשימה הנפתחת 51/18 בערך זס)39ז8ק56זט+ - 3. בכל פעם שנרצה להפריד בין קבוצת לחצנים, ניצור ביניהס לחצן מפריד (תרשים 17.12). בלחצן מפריד אין משמעות למאפיינים שצוינו בסעיף הקודס ואין צורך לעדכן אותס, מלבד המאפיין 86 1 -. [חזס] .₪ ]גוס | אוסטחו 7085 8ב ש6ום |₪ |9|8|. |₪|ש|ם תרשים 17.12 ערך נוסף שמקבל המאפיין 5/6 הוא קטסז6חס6טםזפ+ - 2. בערך זה נבחר כאשר נרצה לאחד באופן פיזּי קבוצת לחצנים. משמעות קיבוץ הלחצנים באופן זה היא, שניתן לבחור רק בלחצן אחד בלבד מתוך הקבוצה, בדומה לפקד חסשטפחסטסס. דוגמה לשימוש בסגנון ה הס לחצני היישור במעבדי התמלילים (תרשים 17.13). <1ם] - | [חזס] .₪ וטס אוסטחוע 18 08 ש6ום = |₪|3| 4 |₪|₪|ם לחצני ייעשור תרשים 17.13 פרק 17: הוספת סרגל כלים ליישום 307 ערך נוסף שמקבל המאפיין 5/|8 הוא א6080%ז0+ - 1. ערך וה מתפקד כפקד א80א60ח0 בסגנון הגרפי שלו. כאשר הלחצן נבחר הוא שקוע ובחירה נוספת בו תשחזרו למצבו הרגיל (תרשים 17.14). גוסב שוסבחוש 105 88ם ש6ום = |₪|פ| 4 |₪||ם 6%ח0זפ) - 2 = 586 תרשים 17.14 ערך נוסף שמקבל המאפיין 5:/|6 הוא 0136601087 - 4. סגנון וה יוצר שטח פנוי על סרגל הכלים כדי לאפשר לנו להציב פקד שיהיה חלק מהסרגל. לדוגמה, התיבה הנפתחת א080ס 007 במעבד התמלילים סזס/ אספסזסוו המכילה את שמות הגופניס הקיימיס במערכת (תרשיס 17.15). * ון [* 9 ] [* וחזסו ] תרשים 17.15 כאשר בוחריס בסגנון ז00!09ח5!366, תיבת הטקסט :ח0ו/ הופכת באופן אוטומטי לפעילה. בתיבה זו נקבע רוחב השטת על סרגל הכליס אשר יהיה פנוי לטובת הפקד. ערך חדש לגירסה 6 אותו מקבל המאפיין 51/|8 הוא חישססססז - 5. סגנון זה יוצר לחצן נפתח המכיל תחתיו כמה לחצנים. דוגמה לכך הוא הלחצן 66%[סזק 2006 (תרשים 17.16). || 5 זפ חמ:5 4% 77 5 אפסה בל וס אה 5 |סזשחס= 006% 5% תרשים 17.16 8 66ם/. - ערכת כלים בקרת הלחצן משורות הקוד לאחר שיוצריס את סרגל הכלים, יש לכתוב את שורות הקוד אשר יבוצעו בלחיצת המשתמש על אחד הלחצניס שבסרגל. בדומה לפקד רגיל, המוכוון על ידי אירועיס, גס לסרגל הכלים אירועיס שוניסם שהוא יודע להגיב עליהם. האירוע העיקרי הוא הסטם, שמתרחש כאשר המשתמש לותצ על אחד הלחצנים בסרגל. כדי להציג יישלדיי של שיגרת לחצן, צריך ללחוצ על הסרגל לחיצה כפולה במבט עיצוב. לדוגמה, שורות הקוד הבאות יופיעו בחלון הקוד עבור סרגל הכליס 0810ח107518: 28 מסססטת 81עץ2)א0110%םס6סטם 0820ת602568 ס0ט5 866ט1ק (מספפגטם. 600661210 פופ םם השיגרה מקבלת כפרמטר את המשתנה חסאטם המייצג את לחצני הסרגל. כל התייחסות למאפייני אחד הלחצנים תיעשה באמצעות משתנה זה. כזכור, פנייה לאחד הלחצניס בסרגל נעשית בציון ערך המאפיין 6 שלו. על כן, כדי לברר על איזה לחצן לחצ המשתמש, נברר את ערך המאפיין 6 של המשתנה חסוטם המייצג את הלחצן שנלתצ. יוצא, כי שורות הקוד שיבואו בתוך השיגרה >0|16ח8₪%0, יכללו מבנה קבלת החלטה המברר את ערך ע6א.חסטטם. לפניך מודגמות מספר שורות קוד. הוסף אותן לשורות הקוד בתוכנית שלך: 28 מסספטם 81עץ2)א0110%םס6סטם 0820םת602568 סגט5 866ט21ק (מספ6%טם. 600661110 ץ6א.תסססטם 0886 561606 .1 תמ 00686 ' "תפס0" 08856 6 8 ת006 60 0006 הת ' ' 5806 1.‏ "6ט58" 08856 6 8 8876 0ם 0066 הספת ' 6 08856 4 18 מסססטס 68ם06 צֶםתה8 +1 0% ב6>תם פופ םם פרק 17: הוספת סרגל כלים ליישום 309 תרגול 1. בנה סרגל כלים (מפקדי חס 0ח8 ה 600) המכיל את האפשרויות פתיחת קובצ קיים, יצירת קוב חדש ושמירת קוב>. 2 בנה את אותו סרגל, אך הפעס עשה ואת על ידי הפקד המתאים. 0 66ם/, - ערכת כלים 8.: דוחות חלק בלתי נפרד וגס חשוב ביישוס הוא הדיוות. מטרת היישוס לספק למשתמש כלי בעל ממשק נוח וידידותי לשמירת הנתוניס שלו, אשר נשמריס במסד הנתוניס. אולס בוה לא תס התפקיד, כי המשתמש רוצה לצפות בנתונים ששמר ובמקריס רביס הוא רוצה לראות חלקיס שוניס בחתכיםס מוגדרים, בצורה של חישוביס סטטיסטיים, גרפיים, על פי מיון ועוד. כאן נכנסת לתמונה יכולת המתכנת בבניית דוחות מתאימים, אשר יציגו למשתמש את המידע המבוקש. יצירת דוח בגרסאות קודמות של ויו'ואל בייסיק לא ניתן היה ליצור דוח, אך כעת הדבר אפשרי. יצירת דוח נעשתה בעזרת מחולל הדוחות 4.6 118זסק₪6 !6519 של חברת 5880816 6 שמצורף למערכת ויז'ואל בייסיק. כיום יש גירסה מתקדמת יותר של התוכנה בשס 6 07%5ק46 |0775494, שאפשר לרכוש בנפרד מתוכנת ויז'ואל בייסיק. בגירסה 6 נוסף רכיב 0814360014 המאפשר ליצור דוח פשוט כחלק מהפרויקט. כדי להוסיף את 03183800 לפרויקט נבחר באפשרות +01ק36 0313 ₪006 שבתפריט %]סזוק. בשלב זה נוסף לפרויקט טופס גלמי לעיצוב דוח (תרשים 18.1). <1ם)-| ה ו 1 וי |יפיןי8י|י7י|י6יוי5יןי4י|י3י|י2יוי1 .וש | (5660004) 163007 זוסקט= 4 (2ה0ו5665) ז6309] פַהָבּק 4 (0001ו5660) 53 4 שו [|'₪=₪ 3 |וש, | (003ו5660) זסוסס= פהָב 4 (פחסו תרשים 18.1 פרק 18: דוחות 311 אסקסה הס הוא קובצ נוסף בפרויקט, בעל סיומת ז5ם. שיס לב שהוא מופיע בחלון הפרויקט ככל קוב> אחר (תרשים 18.2). | 3 ₪ ₪ (166/1[ס'ו) 6661נ[סיו פוחזוט= 5% (1חחזס=) 1חזזס= 5 5זפחמופפם 5% (03:300701) 61וסקט 63 תרשים 18.2 במקביל מספקת תוכנת ויז'ואל בייסיק מספר פקדים לשימוש בדוח, כמו למשל, הוספת כיתוב, תמונה ועוד (תרשיס 18.3). הפקדיס בארגז הכלים מוגדריס תחת הכותרת חְסססףמּוהכ. תרשים 18.3 למרות שניתן ליצור בוויז'ואל בייסיק (בגירסה 6 בלבד) דוח כחלק מהפרויקט, דוח זה פשוט ומוגבל. כלי טוב יותר שנעשה בו שימוש בגרסאות הקודמות ועדיין ניתן להשתמש בו בגירסה 6 הוא התוכנה +1זסק₪6 !675%8. כלי וה יוצר דוח בקוב בלתי תלוי ועצמאי (בעל סיומת +סז), שניתן לנהל אותו מתוך הפרויקט בוויז'ואל בייסיק. מכיון שהאפשרויות לבניית דוח בכלי זה רבות ומגוונות יותר, נתמקד בו בפרק זה. 2 68ם₪/. - ערכת כלים סוגי דוחות בחירה באפשרות 0745ס₪6 !67513 פותחת את מחולל הדוחות (תרשיס 18.4). סז 600115 [513עז 5 6 אוסטחו/צ = סקפ 03130856 וס הספה| ‏ 08 6ו: תרשים 18.4 בחר באפשרות ש6א שבתפריט 118" כדי ליצור דוח חדש. בשלב זה נפתח החלון +וסק3 ש6א 676816 בו מוצגיס סגנונות שוניס של דוחות (תרשיס 18.5) שניתן ליצור בעזרת מחולל הדוחות. הסגנונות שמספק מחולל הדוחות הם: > 500 - ליצירת דוח מפורט עס סיכומי ביניים (וסופיים). > 115410 - ליצירת דוח מפורט ללא סיכומי ביניים. + 07055-180 - ליצירת דוח טבלאי. > !3061 ] !₪31 - ליצירת דוח בפורמט תוויות דואר. * צז3והו 60 - ליצירת דוחות סיכומייס בלבד (ללא פירוט). + סקז - ליצירת דוח גרפי. + א קסד - ליצירת דוח הכולל מידע על הנתונים הייגדוליס ביותריי (כדוגמת עשרת המקומות הראשונים). * חשוסס וווזם - ליצירת דוח לפי קטגוריות. בנוסף, המתכנת יכול ליצור דוח כרצונו, שאינו אחד מהסגנונות המוצעים על ידי מחולל הדוחות. ליצירת דוח ידני (בניגוד לדוח סטנדרטי) לח על הלחצן וח605+0. גס פרק 18: דוחות 313 אס בוחריס בדוח סטנדרטי, אין כל קושי לשנות את העיצוב שלו באופן ידני ללא עזרת האשף (0ז28ו/ש) של מחולל הדוחות. <ום]ן=. סז 60015 [הופעז) %] 180 צשסטחןע [וסקפ] 3030356 |[ההזס] הספה| 88 6ום ]סק 16 16316 )זפקא= חב 0086 נזם סקט זסהוסהה [6ס3 | [ו148 5ב ]-1088 בחוזפו 1 58 ₪ | <<< חונו חאוסם וז א פסך הזג עז הוחו 1 ב זב ריר סז 8)זסקט |518עז0) | מ תרשים 18.5 שלבים בבניית דוח לאחר בחירה בסגנון המתאים לדות (ניקח לדוגמה את הסגנון הפשוט יותר - 0ח1-1541, או דיווח רשימה, מחולל הדוחות מציג אשף דוחות (תרשים 18.6), אשר בהנחיה שלנו יוצר את הדוח. לאחר בחירת סגנון 9חו81.] יופיע החלון +ו6כאם +וסק₪6 68%6ז0, אשר מכיל כרטיסיות שונות הכוללות את כל שלבי יצירת הדוח, על פי סוג הדות שנבחר. 4 6ם/ - ערכת כלים || ]וקא סק ₪76366 | 56 3 | 66 2| 5 .65א6בחו 300 חב 13165 6ופו)|גותח 86ססר!ס חבס גוס .חס +זסקפז ס! 0863 86ססח :קסופ = 6 בוה 2 0-5 | | | | סזסוסנן ב בוק ו ובו | ]08 | תרשים 18.6 בחירת מסד הנתונים השלב הראשון ביצירת דוח הוא קישורו למסד הנתוניס. בעזרת קשר זה דולה מחולל הדוחות את הנתוניס ממסד הנתונים, כפי שנגדיר לו בהמשך, ומציג אותס בדוח. לת על הלחצן 1186 0848 שבכרטיסיה 65וטַבד. הלחצן 8!ו] ₪08%3 מקשר אותנו לקובצץ מסד נתוניס כדוגמת ססח, 00 ו- 001. לקישור דרך 0086 למסד נתוניס הנמצא בשרת, כפי שדרוש לקישור אל מסד נתוניס של 86 לדוגמה, לחצ על הלחצן 501/0080. לחיצה על לחצן 6!ו=] 0818 פותחת את החלון 1|86] 039180856 600056 (תרשיס 7).. מחלון זה נבחר את מסד הנתוניסם שאליו נרצה לקשר את הדוח. לאחר בחירה בקובצ המתאים, נלח על הלחצן 406 כדי להוסיף את הקוב למחולל הדוחות. לחיצה על הלחצן 400 אינה סוגרת עדיין את החלון ₪186 ₪8+90856 000056. הסיבה לכך נעוצה בעובדה שניתן להוסיף קוב נוסף ובמיליס אחרות, הדוח יכול להכיל נתוניס ממספר מסדי נתונים. לאחר בחירת הקוב (או הקבציס) המתאיסם יש ללחוצ על הלחצן חספ כדי לחזור לאשף הדוחות. פרק 18: דוחות 315 6 3130356 6>ססת:) שש לי יי יוו 6% 3% - 5 התהזטסזה 6% סוט 06% 6 פצ 3% סקט 5% ו ו ומוחם טי ו תרשים 18.7 קשרים בין טבלאות אס מסד הנתונים כולל מספר טבלאות המקיימות ביניהן קשרי גומלין, תתוסף לחלון אסקאם [סק9 076810 הכרטיסיה 5א%ח11 המציגה את הטבלאות ואת הקשריס שביניהן. בכרטיסיה זו ניתן לשנות או למחוק קשרים קיימים. יצירת קשר חדש כדי ליצור קשר חדש בין טבלאות, בחר בשדה המקשר מאחת הטבלאות, גרור אותו בעזרת העכבר והצב אותו על השדה המקשר בטבלה השנייה. בסיוס הפעולה, מחולל הדוחות מותח באופן אוטומטי קו בין שתי הטבלאות ומקשר אותן באמצעות השדה המקשר (תרשיס 18.8). 6 ₪65 - ערכת כלים | < | ]וקא !וס 16316 | 56/50 :4 | 4605 :3 2:12068) 0155ב 1 :1 5060 וז 8 זסווו ו בסופווסטו] זבס הסוזסוזס5 םס חב 4 ערזב קוחס) 8 ]ספןפגו5 5 מו ב בוה | סו | [08ח | << 46 | 886 >> תרשים 18.8 לאחר שנוצר הקשר בין הטבלאות, נלח על 00%005 כדי להגדיר את סוג הקשר (תרשים 18.9). מחיקת קשר כדי לבטל קשר גומלין בין שתי טבלאות, בחר בקשר (לחצ לחיצה אחת על הקו שנמתח בין שתי הטבלאות) ולחץ על 061616 (או הקש 81616כ). שים לב, ניתן תמיד לחזור שלב אחד בלחיצה על הלחצן 886% או בבחירת הכרטיסיה הרצויה. לדוגמה, אס ברצונך למחוק מספר טבלאות מהדוח, חזור לכרטיסיה 65!סד, מרשימת הטבלאות בחר בטבלה אותה אתה מעוניין למחוק ולח על 616%6. לאחר שסיימת את פעולת הקישור לת על %א8 כדי לעבור לשלב הבא. בחירת השדות שיוצגו בדוח השלב הבא מוצג בכרטיסיה 186!65= (תרשים 18.10). פרק 18: דוחות 317 5חסוזק 0 אחו | %פפ <- אפפ <א6בחו סו!וספק5 סח> סע כ בלוסומו| טר וסט קוו )סט | ₪ טיוו ומ קט אס | -] סוחס שמ ומ קט סט | -] (= ל הזז [=>] ובו [= ו ופט תרשים 18.9 ]וקא ] זזסק6 16306 7 :שו הטקפ :65 3)80856 כ נו] חזסם זבס/ ות 9--- חן 13 תרשים 18.10 8 ₪65 - ערכת כלים בשלב זה נורה לאשף איזה שדות מתוך אילו טבלאות במסד הנתוניס ברצוננו להציג בדוח. אין צורך לכלול את כל הטבלאות הקיימות במסד הנתוניסם, וגס לא את כל השדות שכלוליסם בהן. ניתן להציג חלק מהשדות שבטבלה אחת ואף לא שדה אחד מטבלה אחרת. כדי לבחור איה שדה יוצג בדוח בצע את הפעולות הבאות: 1. בחר בשדה הרצוי מתוך תיבת הרשימה 18!65] ₪8180856 (הרשימה השמאלית). 2 לחצ על הלחצן ₪00 כדי להעביר את השדה לתיבת הרשימה 16/65 +וס60א. 3. בתיבת הטקסט 8ח6801 חוחט!ס6 רשוס את הכותרת לשדה שתופיע בדוח. כאן ניתן להחליף את שמות השדה הכתוביסם באנגלית לכותרות בעברית. חזור על פעולות אלו על כל שדה שאתה רוצה להציג בדות. כדי להוסיף את כל השדות לדוח, לחצ על !4/1 וכל השדות יועתקו לתיבת הרשימה 58 6. לביטול הצגת שדה, בחר בו מתיבת הרשימה 1865 +60 ולת על 6עסוח6א. לאחר שסיימת לבחור בשדות שיוצגו בדוח לחץ על +א6א ועבור לשלב הבא. קביעת קריטריון בכרטיסיה +58!86 (תרשים 18.11) ניתן לקבוע קריטריון להצגת הרשומות שיופיעו בדוח. לדוגמה, בדוח המציג רשימת עובדיס ניתן לקבוע שהדוח יציג רק את העובדיס בטווח גיל מסויס, או רק את העובדים בעלי 3 ילדים ומעלה וכדוי. |< | ]וקא סק ₪163)6 | ₪ 5 3 [ 1065 :2 | 13065 :1 קסופ .0660 זס] )הב)זסקוח| .!סקפז חן 800105 [זפזוו] זם] 561601 ס) 6105ו] 00056 :ק6ו5 :ו 5860 :05שו= ]וטקפ - :ו 3130356 | | < 00 = -----015ר])- = - | סוחס -> | ...פו] 5680 בו פס ב|פוון 2 כ בוק וסקס ועט | [08 | ל שש | 0% > תרשים 18.11 פרק 18: דוחות 319 כדי לקבוע קריטריון לדוח, נבחר בשדה מתיבת הרשימה 16]65= 1זסס6ח, שעליו יופעל הקריטריון ונלחץ על הלחצן 406 להוספתו לתיבת הרשימה 18!65= 58!80%. בסיוס פעולה זו מוסיף האשף באופן אוטומטי שתי תיבות משולבות (תרשיס 18.12) שבעזרתן נקבע את הקריטריון. ]וקא ]זסק6 ה 16366 | 21| 1 פופ 0 גום.6זסחוגום -----5.10015- -- סו א ₪ זסהווום ה 1+ 2 | ו תרשים 18.12 רשימת הקריטריוניס כוללת את הקריטריוניס הבאים: > סטוהצ עֶח - הצג את כל הערכיס. במילים אחרות, לא נקבע כל קריטריון. * 0+ !608 - הצג רק את הערכים השווים לערך מסוים. במצב זה מוצגת אוטומטית תיבה משולבת נוספת המכילה את כל הערכים הקיימיס בשדה הקריטריון (תרשים 3). מתוך תיבה זו בחר בערך הרצוי. * 01 6חס - הצג רק את הערכים השווים לאחד מהערכיס שבקבוצת הערכים. גם כאן תופיע תיבה משולבת שמציגה את כל הערכיס הקיימים של השדה. תופיע גם תיבת רשימה שאליה מועתקיס הערכים שנבחרו מתוך התיבה המשולבת (תרשים 18.14). שיס לב שבעזרת הלחצן 81 ניתן למחוק ערכים מקבוצת הערכיס המוצגיס בתיבת הרשימה. 0 ₪65 - ערכת כלים ]וקא ] ]זסק6 16306 סן גם.פזסחוווה זסוו ו מו יבשות וו ו תרשים 18.13 הו 1 בו טוחב עסו תרשים 18.14 פרק 18: דוחות 321 > ח8ה+ 1655 - מציג רק את הערכים הקטנים מערך מסוים. שיס לב שאס בחרת בערך 10 יופיעו הערכיס הקטנים ממנו, הווה אומר 1-9, בלבד, הערך 10 במקרה וה לא ייכלל. כדי לכלול את הערך 10 סמן * בתיבת הסימון 0+ !6408 זס. * חהּח+ ז768+0 - מציג רק את הערכים הגדוליס מערך מסויס. גס כאן, צריך לבחור באפשרות 0+ !6008 זס כדי לכלול את הערך עצמו. > ח66ש06% - מציג את הערכים בטווח מסוים. בחירת ''100 6ח3 1 ה06%/66" למשל (תרשיס 18.15), תציג את כל הערכים בטווח זה כולל הערכים 1 ו- 100. ו וי ב ו | 20| 1565 :1 פופ 0 גו 5זסחונום זר = סו ₪ זסחזוו ב .ו ₪ תרשים 18.15 > :8טוחזס+ - מציג רק את הערכים שמתאימיס לנוסחה מסוימת. לדוגמה, הנוסחה 'י10=>(טוסחזט.5זסח+וה1) חִזחַח16''י גורמת להצגת רשומות מחברי ספרים, שאורך המחרוזת של שמס קטן מ-10 תוויס או שוות להם. על נוסחאות ועורך הנוסתאות נרחיב את הדיבור בהמשך. שים לב שניתן לקבוע קריטריוניס ליותר משדה אחד. ניתן לקבוע קריטריון גסם בהמשך, אם הדבר לא נעשה בשלב זה. בסיוס שלב זה נלחצ על +ו₪60 שסוצפזם (ייהצג לפני הדפסהיי) כדי להציג את הדות כדי לראות את העיצוב, לפני שהוא מועבר להדפסה. אס הדוח המוצג אינו קריא בגלל 2 ₪65 - ערכת כלים גודל התצוגה אפשר לשנות את המיקוד בעזרת לחצן הזוס הכולל שלושה מצבי מיקוד. מבט עיצוב (חףו065) הדוח המוצג בכרטיסיה ש6וצ8ז₪ הוא הדות שיוצג למשתמש ושיודפס למדפסת (תרשים 18.16). |<1)= | [81 1זסק6ה 64ווווח!!] - סז 5)זסק6ה ו513עז ₪ |< |5)= 18|0] ששסטחו/ע סקפב 28)32356 |ההזס] 68פה| 08ם 6 | רנ ] ₪196 [ | 4[ 4[‏ 23:33 עטסד ה בת ]וג סרוה | 1 ₪ קוווטק ,קצבה 4 ₪ 38606 3 ל מא ימל 4 1 ₪ כש=! ,ומד 2 פביסנמי) שח 10 גל ,ואד 1% |35 ₪0, 55 ו ,090 14 של 6 15 ול פוט 009 17 5 8 ,פא 19 = 1 | פספו/ 42 ,154 44 45 50 ₪1 ₪( ,8810 47 50% ,16 20 שו ,ביוומם | ₪ 868( ,שו 33 56 35 ופ 37 0000 5085 30 תרשים 18.16 הכרטיסיה 0659100 מציגה את אותו דוח בתצוגת עיצוב (תרשיס 18.17), כדי שאפשר יחיה להכניס בו שינויי עיצוב. פרק 18: דוחות 323 0 [81 ]זסק 66!וווח!!] - סז 5וזסקה [הובעו 5 60 אוסטחוע | סקפ 28)32856 [התזס" הספת]| 88ם 6ום 2 ה 558 |( 60| | 2 65ב | וק ב |7ק 3308 ₪₪6[])84] 2323 ד 1 306 63 2129 צסווטג כ ב אאא א א א אא אאא אא 555,555,555- 0 ט] 0 ן הפפ תרשים 18.17 חלקי הדוח (5ח0ו58660) באופן רגיל הדוח מחולק לחמישה חלקים, הקרוייס 5ח0ו5661, שכל אחד מהם מייצג אזור אחר בדותח. חמשת החלקים הםס: 1. 6וד - כותרת הדות. בחלק זה יימצא בדרך כלל לוגו החברה והכותרת המתארת את תוכן הדוח. כל מה שנמצא בחלק זה של הדות יופיע פעס אחת בלבד בראש הדותח, ולעיתיס גס בדף נפרד. 2 ]6800 סק - ראש עמוד. כל מה שיופיע בחלק זה של הדוח יוצג בראש כל עמוד בדוח, כמו לדוגמה שס הדוח (במלואו, או מקוצר), תאריך, ולעיתיס גס מספר עמוד. 3. %81|5+06 - פרטי הדותח. חלק זה כולל את פרטי כל רשומה הכלולה בדוח. כל מה שנמצא בחלק זה יוצג בכל רשומה בדוח. 4. 100407 0886 - תחתית עמוד. כל מה שיופיע בחלק זה של הדות יוצג בסוף כל עמוד בדוח. שדה מספר עמוד יופיע בדרך כלל בחלק זה של הדות. לעיתיס קובעיס את מספר העמוד בראש העמוד. 4 8 6ם/, - ערכת כלים 5 עזפוחוחט5 - סיוס הדוח. חלק וה יופיע פעם אחת בדוח, בסופו. לעיתים הוא יוצג בדף נפרד. עריכת שדה בתצוגת עריכה של הדוח ניתן למחוק, להוסיף, או לשנות מראה, מיקוס וסגנון של השדות המופיעים בדוח. לחיצה ימנית על השדה מציגה תפריט מקוצר הכולל אפשרויות עריכה של השדה, כשינוי צבע סגנון וכוי. ניתן לערוך שדה ישירות מסרגל הגופניס הנמצא בתחתית הדות (תרשיס 18.18). אם הסרגל אינו מוצג, לחיצה ימנית על סרגל הכלים ובחירה באפשרות ז23 +חס שסח5 תגרוס להצגתו. תרשים 18.18 כדי למחוק שדה, נבחר בו על ידי לחיצה עליו, ונקיש על 61616ש. עורך הנוסחאות שדה נוסחה מיוצג בתו (6 משמאל לשמו. כדי לערוך שדה כזה נפעיל את עורך הנוסחאות על ידי לחיצה ימנית על השדה ובחירה באפשרות 38|טוחזס= 0. תרשים 9 מציג את עורך הנוסחאות. כתיבת נוסחה חלון הנוסחאות מחולק לארבעה תת-חלונות. החלון השמאלי 18!65= מציג רשימה הכוללת את כל השדות שבדוח, את הנוסחאות ושאר השדות של מסד הנתונים, אף אלה שאינס כלולים בדותח. מחלון זה נבחר את השדה אשר ייכלל בנוסחה. החלון 5ח10+סחש= שלימינו (האמצעי) כולל את רשימת הפונקציות שמחולל הדוחות מכיר ואשר ניתן להשתמש בהן בבניית הנוסחה. החלון הימני ביותר 5זס)00678 כולל את כל האופרטורים שניתן להשתמש בהם בעורך הנוסחאות. איןו חובה להשתמש בחלונות אלה לבניית הנוסחה ומטרתס להקל על העבודה בלבד. מי שיודע לכתוב את הנוסחה לבד, יוכל לפנות לחלון +א6+ 3|טוחזס=] שבתחתית החלון המוצג, כדי לכתוב בו את הנוסחה. עורך הנוסחאות מאפשר לבדוק את נכונות הנוסחה ותקינותה. לשס כך נלתצ על הלחצן 6866%. אם יש שגיאה בנוסחה העורך יתריע על כך (תרשים 18.20). ההודעה שתתקבל תציג את מהות השגיאה, והסמן יעמוד במקוס בו אותרה השגיאה בנוסחה. פרק 18: דוחות 325 חנ655 -ב|טחזזס] ]41 = :ןחרזה [החסרו06 , החגורן] זב הוח [א) 08 | 56וחח. הזוה רת [א) בחגוסת וזו 5. [מובו [3068!ק8 ,א] החטוסו בקוזב. [חופוח זחפס זפק [א] פ)הסהגטוזך החוהר]ססרח. הזוה 6 . [₪ו)) חפ החור 5!1וחח. הזוה רח [ב|"החסס ,0!]) חוופ יה [בחסס !חס ,!]) זגו ה זפזזגוס סד % [ם)] 6ב זסע חוופם) -- 7 [!=חרוה 4!)] ורוה זעי 7 תרשים 18.19 ₪ זסזוז] זס!וקחוס:) בּ!טחוזס-] :160165 !₪513 - תרשים 18.20 כאשר העורך מאשר את תקינות הנוסחה (תרשיס 18.21) צריך ללחו על 66604 לאישור, ואחר כך צריך למקס אותה במקוס הרצוי בדוח. | | ה|טחזזס-] 66% ע - תרשים 18.21 6 ₪65 - ערכת כלים הוספת שדה ניתן להוסיף לדוח שדות לאחר יצירת הדוח לראשונה. יש שדות מיוחדים שניתן להוסיף כשדה תאריך, שדה המציג את מספר העמוד וכדוי. כמו כן ניתן להוסיף שדות ממסד הנתוניס ושדות עזר אחריס. שדה טקסט תוכל להוסיף שדה טקסט לדוח. שדה זה שימושי בדרך כלל לנתינת כותרת לדוח, או למתן הוראות וכוי. כדי להוסיף שדה טקסט לדוח בחר באפשרות 16!4= +א6ך שבתפריט +561ח1! או לח על שבסרגל הכלים. בחירה זו תגרוס להופעת החלון 0 +69 ₪00 בו תכתוב את הטקסט הרצוי (תרשים 18.22). כל שנותר הוא למקס את השדה במקוס הרצוי בדותח. | ו ואס ד וו = [ זט)ח = תרשים 18.22 שדה ממסד הנתונים למרות הקביעה הראשונה איזה שדות ייכללו בדות, ניתן בכל זגמן למחוק ולהוסיף שדות ממסד הנתונים. להוספת שדה ממסד הנתוניס נבחר באפשרות ₪3%40456 0 שבתפריט +ז56ח1 או נלחצ על שבסרגל הכליס. בחירה זו תגרוס להופעת החלון 1816 28180856 +ז56ח! (תרשים 18.23). נבחר בשדה הרצוי ונלחץ על +58ח! כדי למקס אותו בדות. בסיוס נלחץ על 6חסס. באפשרותך להוסיף יותר משדה אחד, לחיצה על פחסכ תיעשה לאחר שילוב של כל השדות. פרק 18: דוחות 327 || ₪ ס556ב3)30 0 ]זס5ח! והחפזופ הקוזב קזב ]50 ןשוח חורה ]ר51ורת תפוח תרשים 18.23 פעולה זו היא הוספת שדות קיימיס מתוך מסד הנתוניס המקושר לדוח. להוספת מסד נתוניס חדש לדוח צריך לבחור באפשרות +ז3%600 0+ ₪8130856 2006 מתפריט 6. שדה מקבץ (ע5 קטסזו) ניקח לדוגמה דוח המציג את רשימת כל העובדים במפעל. דוח זה יציג ברצף אחד את הרשימה עם קריטריון, או ללא התייחסות לקריטריון מסוים. מה נעשה כאשר נתבקש להציג את אותה רשימת עובדיס, אך הפעס לחלק אותה לפי מחלקות. כלומר, אלה שבמחלקת כספים יוצגו בקבוצה אחת, עובדי הנהלה בקבוצה שנייה וכוי. במקרה זה ניעזר בשדה מקבא. השדה המקבצ בדוגמה זו יהיה, באופן טבעי, המחלקה אליה שייך כל עובד. כיצד נציין את הדרישה להקבצת הנתוניס לפי שדה מסוים? נבחר באפשרות ח0ס1ו560% קטסז3 בתפריט +56ח1. בחירה זו תציג את החלון +561ח! הסו5606% קטסז6 (תרשים 18.24). 8 668ם₪/. - ערכת כלים חסוז5605 קטסזם) ]וס5ח! תרשים 18.24 בחלון זה יש שתי תיבות משולבות; האחת (העליונה) לבחירת השדה המקבצ, והשנייה שמתחתיה קובעת את אופן ההקבצה. כדי לחלק את הקבוצות לתת-קבוצות נבחר באפשרות השלישית ז66זס 506611160 ח! ונבנה את תת-הקבוצות (תרשים 18.25). חסוז566 קטסזג) זזס5ח! תרשים 18.25 בצד שמאל של הדוח שמוצג מבט עיצוב, בחלק 56600005, נוסף החלק המקב. פרק 18: דוחות 329 איןו הגבלה במספר השדות המקבציסם שניתן להוסיף לדוח, אך כל חלק מקב נוסף יהווה תת-הקבצה בתוך החלק המקבצ שלפניו. קביעת סגנון דוח לאחר סיום בניית הדוח, מחולל הדוחות מאפשר בחירת סגנון לדוח מתוך רשימת סגנונות. אין חובה להשתמש באחד הסגנונות האלה, אך אס אחד מהס נמצא מתאים, אפשר להחיל אותו על הדות. החלת סגנון קיים על הדוח נעשית באופן פשוט. נבחר באפשרות 5116 +ו0ק36 +וססאם מתפריט +החזזס=. החלון ה6קא= 5/6 סק נפתח (תרשים 18.26), מתוכו נבחר בסגנון הרצוי ונאשר בלחיצה על 06. לסיוס יש לשמור את הדוח ולקבוע לו שס. הדוח נשמר כקוב עצמאי עס סיומת +סןו. | < | ]סקא 8!ע51 וזסקסת .6חחו! ערזב 31 זסר!)סב סז 6ח0ח03 63 גוס .!זסקפז 6 זס] 6וע50 3 56ססח) 888% 0חו630 1 168% החווובזך בשה 6סה ‏ קסזם | 8 > ---- - 088% הַחו630 ] ,6עוו60אם | כו = ש = == 083% התוהז ,60/6 ם - בחוטבו5 = זז 6/8|6ת ₪ 0000000 א80 |68 [/מססזבא] תרשים 18.26 הצגת הדוח מתוך ויז'ואל בייסיק הדוח שנוצר בעזרת מחולל הדוחות הוא דוח עצמאי ואינו תלוי ביישוס ויו'ואל בייסיק. כדי לאפשר למשתמש להפעיל את הדוח מתוך היישוס, צריך ליצור ביניהס קישור. קישור הדוח אל היישום נעשה בעזרת הפקד 6 +60 |01775%8. פקר זה אינו חלק מהפקדיס הסטנדרטייס וצריך להוסיף אותו לארגז הכליס באופו ידני. לאחר הוספת הפקד לארגז הכליס מציביס אותו בטופס כפי שנוהגיס עס כל פקד אחר. מיקוס הפקד בטופס אינו עקרוני, מכיון שהוא לא נראה למשתמש. לאחר הוספת הפקד לטופס, הוא יצור את הקשר אל הדוח. 0 6ם/ - ערכת כלים המאפיין ס6וחב3ּאס6וו-]+וסק46 כדי לקשר את היישוס עס הדוח בעזרת הפקד, צריך להודיע לפקד לאיזה דוח עליו ליצור את הקישור מתוך היישוס. המאפיין של הפקד לקביעת הקשר מהיישום אל קובצ הדות הוא 1!6%83₪06"+6001א. הערך שיקבל מאפיין זה הוא שס קוב הדות ונתיבו. לדוגמה: "%סץ.6תסק6תהץ]55תסספת:60" = 6ת(8א02%116%ק6ת.26סק6פץאססץ אין צורך להוסיף פקד לכל דוח; פקד אחד יכול להציג את כל הדוחות ביישום. עס ואת, בכל פעם צריך לשנות את שס הקוב של הדוח שהפקד מציג, כדי שיציג את הדוח המתאים. המאפיין 6וחבּאסוו-בּזְּהּ קשר חשוב נוסף שיש לבצע עס הפקד הוא הקשר למסד הנתונים, או למסדי נתונים, שעליהס מבוסס הדות. המאפיין המטפל בקשר זה הוא פַחחִבּאְַפִווְהּּ. לדוגמה: "מססות. 8%80886פע סקתץצ: 6" = (0) 8(6א8682116כ . 26 0ס6פץא6סץ מכיון שדוח יכול להיות מקושר למספר מסדי נתונים, המאפיין סחחה6וו-23%9 הוא מערך. הקשר למסד הנתוניס הראשון יהיה האיבר הראשון במערך (9%8708)0וו-318כ הקשר למסד הנתוניס השני יוגדר (6)1ח16\3וו-8%9 וכן הלאה. קביעת יעד לדוח לאחר קישור הדוח לקובץ ולמסד הנתוניס המתאים, יש לקבוע יעד למשלוח דוח. שני היעדים העיקרייס אליהס אפשר לשלוח את הדוח הס למסך ולמדפסת. המאפיין האחראי על קביעת היעד של הדוח הוא ח0ו+8ח65+1. לדוגמה: אססמתנאסצסקעס = מסנ861ת65%1כ026.2ק6תץא6ס2 עס6תנעפפסךסקעס = מס1ס8ת65%1כ026%.2ק6תץא6ס2 הדפסת הדוח לבסוף, כל שנותר הוא להדפיס את הדוח. ייהדפסת דוחיי היא ביטוי כללי להפקה, שיכולה להחיות למדפסת או למסך למשל. השירות האחראי על הדפסת הדוח (ליעד שנקבע לו) הוא +וסק6ף+חוזם. לדוגמה: %עסססתפ>תנ1עק.6ע2סק6תץא6ס: פרק 18: דוחות 331 מה קורה כשאין מדפסת אס הדוח נשלח למדפסת ואין מדפסת, או היא אינה מחוברת או שאינה מוגדרת, אל דאגה. היישום לא יעצור עס הודעת שגיאה. לשגיאה מסוג וה אחראית מערכת ההפעלה והיא תיתן הודעה מתאימה למשתמש עם מהות השגיאה. בחירת הרשומות שיוצגו בדוח למדנו כיצד נוכל לקבוע בהגדרת הדוח קריטריון לבחירת הרשומות שתוצגנה בו. לדוגמה, נרצה להציג את רשימת העובדיסם בגיל 35 ומעלה. אולס אפשר לבנות דוח כללי שיציג את כל הרשומות, ומתוך היישוס בוויו'ואל בייסיק נקבע את התתך לרשומות שיוצגו כפלט של הדוח. בחירת חתך הרשומות לתצוגה מתוך היישוס עדיפה לעיתים, מכיון שניתן להשתמש בדוח אחד גלמי וממנו לגזור נתוניסם, או דוחות, בחתכים שוניס. המאפיין שקובע את החתך לדוח הוא 8!טוחזס- ח0/+56160. לדוגמה: "35 =< [107668.206קתת)]" = 18מומעסעת026.56160%10ק6תץא6ס2 בדוגמה וו הקריטריון מתייחס לשדה 806 מטבלת 665ע7!0קח₪ שמוגדר כך: (06/. 0/665!.ח=+. כל רשומה שבה ערך השדה גדול או שווה ל- 35 תופיע בדות המופק. שאר הפרטיס בדוח אינס משתנים, אלא שמשפט זה קובע את התנאי להצגת הרשומות מתוך הדוח הגולמי שהוכן. תרגול 1. בנה דוח המציג את רשימת כל הסטודנטים באוניברסיטה. 2 בנה דוח המציג את רשימת הסטודנטים לפי פקולטות. הדוח יציג סיכום ביניים של מספר התלמידיס בכל פקולטה. בסוף הדות יוצג סיכוס כללי של מספר כל הסטודנטיס באוניברסיטה. 2 668ם/. - ערכת כלים 9: פונקציות וו פעמים רבות אנו נתקליס בפני אתגרי תכנות המחייביס פתרון הכולל שורות קוד רבות ולא מעט חשיבה מקורית. בחלק מהמקריס אף אין בידינו כליס לפתור את הבעיה הניצבת לפנינו. כאן נכנסות לתמונה פונקציות ₪1 או פונקציות ‏ 1 1ם, המספקות מיגוון כליס לערת המתכנת, כמו לדוגמה, מציאת ספריית המערכת במחשב בו פועל היישום. לשס הבהרה, קוב> .₪011 הוא קוב הרצה שיכול להכיל בתוכו פונקציית 1 אחת או יותר וגם קוד נוסף. לרוב נהוג לקרוא לספריית המערכת בשס ''פעוססחו//יי, או ייפפחו//יי ויש הקוראיס לה ''895/וס6חו'יי. כיצד נזהה אותה אס יש למשל שתי ספריות, אחת 'יפעשססחו/יי והשנייה ''95חו/שיי, איזו מהן היא ספריית המערכת שלנו! במקרה כזה חבל להשקיע מאמצ בבדיקת הספריות וחקירתן, כי עלינו רק לקרוא לפונקציית !₪1 המתאימה שתבצע עבורנו את העבודה. השימוש בפונקציית |₪ (או 11ם) פשוט מאוד. מצהירים פעם אחת על הפונקציה, ובכל פעס שנרצה להשתמש בשירותיה, נקרא לה (כפונקציה רגילה) עס הארגומנטיס המתאימים. בהמשך לדוגמה הקודמת, כדי לדעת מהי ספריית המערכת נקרא לפונקציית ‏ | ₪1 בשס ץז60%0זו פעוססחו//20%). מכלול פונקציות ₪1 מקיף כמעט כל נושא שמתכנתים נזדקקים לו. לנוחותנו מספקת לנו ויז'ואל בייסיק את זשסו/ +א6ד ₪1 המכיל מידע אודות פונקציות אלו. יישוס זה הוא מכלול כלים: תוכנית שירות לחיפוש ברשימת הפונקציות, העתקת תחביר הפונקציה אל ויז'ואל בייסיק, והעיקר - פירוט הפרמטרים שדרושים לכל פונקציה. זסעצסו/ )+א6ד וקה היישוס ז6/ש16/ +א6ד 41 הוא חלק מקבוצת היישומיס בה מותקנת ויז'ואל בייסיק. לחץ על לחצן התחל, ומתפריט תוכניות בקבוצת היישומיס |1503/ ₪16:05016 6 5+0010 בחר באפשרות 5!ססד 6 0ו5%00 15031 0167050 ושס בחר באפשרות ]סש / +א6ד וסה. זסשסו/ זאסד |קג לוקת קובצ טקסט המכיל את רשימת כל הפונקציות והפרמטריס שמקבלת כל פונקציה ומציג את רשימת שמות הפונקציות. כשנבקש לחפש פונקציה מסוימת, הוא יעשה זאת עבורנו בתוך אותו קוב טקסט. לכן, בשלב ראשון יש לטעון אל זפשסו/ !אד | את קוב הטקסט המכיל את רשימת הפונקציות. פרק 19: פונקציות |ו40 333 הקובץ %א%.1ק323חו// הקוב> (1.6ק328ח1/\ מכיל את רשימת פונקציות .11ם. נטען אותו אל )א6ד וס זו/. כדי לבצע את הטעינה בחר באפשרות 1.080 1!8= +א6ד שבתפריט ₪118 ובחר בקוב> /א%.1ק328חו/\ (תרשים 19.1). זסשסו/ |כןת וע וטו ₪ | 0 תרשים 19.1 הקוב נטען ל-ז8/ש16/ %א6ד !חג ובסיוס הטעינה מוצגת רשימת שמות הפונקציה בתיבת הרשימה 65| 6!טבּווהּצ (תרשים 19.2). 4 ₪6/, - ערכת כלים <ובו- ו זפ וטו ₪ בשו -) 000055||0 66 ווובי ן ו לס ן 5 תרשים 19.2 חיפוש פונקציה אם אנו מכיריס את הפונקציה שבה אנו רוציס להשתמש וזוכרים את שמה, ניתן לגלול את הרשימה ולבחור ישירות בפונקציה. לפעמים אנו זוכרים את תחילת שסם הפונקציה בלבד. זפששס6ו/ %א6ך !שג מספק לנו שירות חיפוש לפי מחרוזת חלקית של שס הפונקציה. לביצוע החיפוש הקלד בתיבת הטקסט הראשונה 16 191 6ה% 6קעד ...יי את שס הפונקציה או חלק ממנה וה- זפשפו/ )א6ך |קג יחפש בהתאס להקלדה שלך את הפונקציה המתאימה (תרשים 19.3). פרק 19: פונקציות || 335 <ובו ו ונ זוב בוחס-)ותהתס -6ל|ו3 ]6508 ו 9050 ו | : תרשים 19.3 הצגת הפונקציה הרשימה 6795!! 6!ס8!והּצה כוללת את שס הפונקציה בלבד. כדי לצפות בהצהרת הפונקציה במלואה לח על לחצן 806. הלחיצה גורמת לכתיבת ההצהרה על הפונקציה בתיבת הרשימה 6705!)| 56160%60. הצהרה זו היא ההצהרה בה אנו משתמשיס בשורות הקוד בתוכנית והיא כוללת את רשימת הפרמטרים של הפונקציה. מלבד ההצהרה על הפונקציה, שורה זו מזכירה לנו איזה פרמטריס מקבלת הפונקציה ואת סוג המשתנה של כל אחד מהס (תרשים 19.4). 6 ₪65 - ערכת כלים |<1ם]- | ור מ צר ידה ב ב - זסושסו/י | ₪ סופ פוש זםם 6ום :שמץד זקם 5 - | :זס] הַחספ| זב טס בסו סרם וס 675סס6| או זז סח5 סקעד קשזס5ז לט :15005 6|סב|וםשים 60360 56068 8זב|00 וטק 6 ס העות 7+ )תס 3016 ]536% וסחוי ם0656:0: 5 :1605 5650560 | - ו 5 "150732" ם! | 661650005 הססשחט= 6זב|060 שוופטום הַחס] 85 (1קה דו1%כיק 35 להוססכ]) "650005" | זב תרשים 19.4 מבנים (65סעד) אס רשימת הפרמטריס שמקבלת הפונקציה כוללת את סוגי המשתניס הסטנדרטייס כ- ז606ח!, פַחוז51 וכוי, שורת ההצהרה המופיעה בתיבת הטקסט ₪5ח6!! 58!60160 מספיקה. אולס לפעמים כוללת רשימת הפרמטריס משתנה שהוא מסוג מבנה (818כ 86 בוויז'ואל בייסיק. במקרה כוה, לא מספיק להעתיק לתוכנית את שורת ההצהרה על הפונקציה, אלא דרוש להצהיר גס על המבנה בו נעשה שימוש בפונקציה. ]שו ]אד |ק מספק רשימה נוספת (089/ץ1) המכילה את כל סוגי המבניס, בדומה לרשימת הפונקציות עצמן. גם ברשימה זו ניתן לבצע חיפוש בעזרת ח0ז568, למצוא את המבנה הדרוש ולהציגו בצורה מלאה על כל משתניו בתיבת הטקסט 586!80660 פוחם)]. כדי להציג את רשימת המבניס בתיבת הרשימה 8705!! פִוְסְהּווהּעה, בחר מתוך התיבה הנפתחת 6קץך !קה באפשרות 65כץד (תרשים 19.5). פרק 19: פונקציות || 337 <וםו- ו 5 ב 5-ו 06ב 03ב בו חחח ס ]30 ]00ב 60650 ב 5 "158732" ם| 1 005ז507זו 05 הסולשחט= 6זב|66כ סוופטם הח | 35 (1קה 017 35 זהוססקן) "05 זס5ז:6" תרשים 19.5 אפשרות זו מחליפה את רשימת הפונקציות ברשימת המבניס (תרשים 19.6). 8 ₪65 - ערכת כלים |<ובן. ד סז דהו]תסתוז סז5שת 6 5 "156732" !| 507005זו-616 הסוססחנ= 6036 6וופטק הח | 5 (1קה זוזיק 5 זהוססכן) "5 זס5ז 60ב" תרשים 19.6 לדוגמה, הפונקציה 50:205ז606+00 מקבלת כפרמטר משתנה מסוג המבנה |₪שהדאו0:. בחר מהתיבה הנפתחת 6קעד ₪1 באפשרות 65מץד וחפש את המבנה |קהדא!סק. הוסף את המבנה בעזרת הלחצן 4006 אל תיבת הטקסט 58160466 65 בסמוך להצהרה על הפונקציה (תרשיס 19.7). מלבד ההצהרה על הפונקציה תתבצע הצהרה על המבנה בו ייעשה שימוש במסגרת הפונקציה. פרק 19: פונקציות || 339 <ובן. ₪ סופ | פוש ₪08 6ום :סמץד זקם | - סד :זס] הַחט!סס!| זב טסץי טופטו 06 ]0 666675 ו6] לעו סתם עד %חוסק :1:55 6|סב|ופעים 06 6זב|6ש דוזסק 5 יס 6% דאשד/י סק ב-א 1 סשאז דמסס 6 =] 568060 1605: | ב 5 "150132" 15 5666507005 חסוסשח= 06036 6וופטק בַחס ] 5 (זקה זוזיק 35 להוססקן) "80050005" 5 | א*₪ > [קה דזכי שעיד 6וופטש הַחס] ₪5 % הַחס] ₪5 ץ סקז בח תרשים 19.7 העתקת הפונקציה לוויז'ואל בייסיק לאחר בחירת הפונקציה הרצויה, ובמקרה הצורך במבנה או במבניס רצויים, והצגתה בתיבת הטקסט 675)! 68160100, כל שנותר הוא להעתיק את שורות ההצהרה לקוד שלנו בוויו'ואל בייסיק. העתקת ההצהרה על הפונקציה נעשית באופן המקובל ב-8ששסשחו/: העתקת שורת ההצהרה של הפונקציה אל לוח פעשססחו// (0זהססקן!ס) ולאחר מכן הדבקת תוכן הלות בשורת הקוד בוויז'ואל בייסיק (הפעולה 085%6). כדי להעתיק את תוכן תיבת הטקסט 97058!)| 56180160 ללוח, לחץ על הלחצן עַק0ס6. לאחר מכן עבור לוויז'ואל בייסיק והדבק את תוכן הלוח על ידי בחירה באפשרות 6 שבתפריט 06. 0 66ם/. - ערכת כלים הצהרה על הפונקציה במודול הדבקת (פעולת 8518ק) הפונקציה בשורות הקוד אינה מוגבלת למקוס מסוים. ככלל, ניתן להדביק את ההצהרה גס בתוך שורה הנמצאת בטופס. אולס הצהרה על פונקציית במקוס זה תוגדר כ-846עו₪1. מקוס נוסף בו ניתן להצהיר על פונקציות .₪11 הוא במודול (תרשים 19.8). |<1ם]- | [006:)) 000161 - 1ו66ןסז [* (006ו 06011 ] [* (ו3ח66)] טס 1 35 [1ב 0147 35 זמוסקקן] "32ז96גו'" ו ] 5סקזס5זוו-וופ ג מסוזסחגו= 8זבוסם סוופגוק וקב 014 שפעד סוופגו= חס | 5 א חס | 5 9 תרשים 19.8 לאחר הצהרה על הפונקציה במודול, טווח ההכרה ואורך החיים שלה הס לכל הפרויקט כולו. הצהרה אחת כוחה יפה לכל התוכנית. טווח ההכרה משתנה בהתאסם לקביעה 6ו|פטק או 816צוזק שקבענו ב- 56006 260!3:6 שב- זפש6ו/ )אד וסג. בתרשיס זה מוצהרת הפונקציה כ- 6ו|פטש לכן טווח ההכרה שלה יהיה בכל הפרויקט. קריאה לפונקציה משורות קוד הצהרה על פונקציה נעשית במודול ופעס אחת בלבד לכל הפרויקט. אולס קריאה לפונקציה נעשית בכל פעס מחדש. בכל פעס שנזדקק לשירותי הפונקציה, נקרא לה. שיס לב שקריאה לפונקציה מסוג .₪11 זהה לקריאה לפונקציה רגילה שנבנית על ידנו. הפונקציה צריכה לעמוד בכל הכללים החלים על פונקציה רגילה, כמו למשל התאמה של רשימת הפרמטרים לרשימת הארגומנטים הן מבחינת הסדר והן בסוגי המשתנים, ועוד. לדוגמה, הנה קריאה לפונקציה 005ז80ט606%0 : 1אזסעת 28 %םע36 תנכת (%מ0%2) 06%002802209 = פסת2 הפונקציה מקבלת כפרמטר את כתובת המבנה +ח0%0 מסוג (|קג דא!סק) ומחזירה לו את ערכי הקואורדינטות של הנקודה במסך שבהן נמצא העכבר. פרק 19: פונקציות || 341 פונקציה לדוגמה לשס הסבר נוסף לשימוש בפונקציות !₪ בשורות קוד בוויו'ואל בייסיק, נבצע יחד תרגיל המשלב בתוכו שימוש בפונקציית |ש. הפונקציה +א6 דעשסוסחו/500 הפונקציה )6% דאוס0חו/\561 קובעת את כותרת החלון. היא מקבלת שני פרמטרים : את המצביע/ידית אחיוה (0/6ח48) לחלון לו אנו מעונייניס לקבוע את הכותרת, ומחרוזת (סְחו511) המייצגת את הכותרת עצמה. לדוגמח: ("תעסע צא" ,בתחם.6א) 86א6צאסםת1ח566 בדוגמה זו שינינו את כותרת החלון הנוכחי (הטופס הנוכתי) ל-חזוס=ץו/. פעולה זו נעשית על חלון (טופס) ביישוס שלנו ללא צורך בפונקציית |סג, ניתן פשוט לכתוב: "תעסעפצא" = מסנסק68. סא אך מה קורה אס נרצה להתייחס לחלון שאינו חלק מהיישוס! לדוגמה, לחיצה על הלחצן בטופס גורמת לפתיחת המחשבון (בתפריט תוכניות, עזרים שבתפריט התחל). במצב רגיל נפתח המחשבון עס הכותרת הרגילה שלו מחשבון, אך בעזרת הפונקציה 6% דשס0חו//)56 נוכל לשנות את הכותרת שלו לכותרת היישוס שלנו, כדי להקנות תחושה למשתמש כאילו המחשבון חלק אינטגרלי מהיישוס. כדי לדעת מהו ערך 0!6ח8ח של חלון המחשבון שנפתח, ניעזר בפונקציה עוססחו//201). פונקציה ו מחזירה כערך את ה-018ח8ח של החלון, אשר יישלח כארגומנט לפונקציה 6 ד/שססחו\56% כדי לקבוע לו כותרת. באופן אה נשתמש כדי לקבוע את כותרת חלון המחשבון לכותרת היישום שלנו. שורות הקוד הבאות נעזרות בשתי פונקציות |₪ג כדי להציג כותרת למחשנבון: המח ,פס תנכת ( (0008 81מתפסאסט ,"6א681060.6פחסבת1ח:611)"6ם5 = 265 (3 ,סתשת.6א) אססם1א06% = בתת ("ססת צעא" ,םם) 6א16שסּם1א566 8 בתחילה התוכנית מפעילה את המחשבון (6א08|0.6) בעזרת הפונקציה ||8ח5. פונקציית |קג/ - שססחו//06% - מחזירה כערך את ה-0!6ח8ח של חלון המחשבון שנפתח. ערך גה נשלח כארגומנט לפונקציה 6% דשוס0חו//)56 הקובעת את הכותרת ייסְסה עויי למחשבון (תרשיס 19.9). 2 6658ם/, - ערכת כלים ]| | 6 | ₪ |א₪6 0 ] | | | + | | | | | | | - | 3 | + | ו | 1-1 | תרשים 19.9 תרגול 1. צור טופס עס לחצן. לחיצה על הלחצן תגרוס לפתיחת הצייר. שנה את כותרת הצייר ל- ייהצייר שלייי. 2 צור טופס. כל לחיצת עכבר על הטופס תצייר ריבוע בגודל ובמיקוס אקראי על הטופס. הנחיה: היעזר בפונקציית |₪ - 0|8ח496)9 - ליצירת ריבוע על גבי הטופס. פרק 19: פונקציות || 343 0 טיפול בשגיאות במצביס מסוימיס מופסקת פעולת התוכנית כתוצאה מטעות שקרתה בה. סוג אחד של טעות, הנובעת באשמת מתכנתים, היא הטעות הקרויה באג. טעות זו, כשהיא קורית במהלך פעולת התוכנית, גורמת לקריסת התוכנית ולהפסקת פעולתה. הפתרון היחיד במצב זה הוא לבדוק את שורות הקוד של התוכנית כדי לפענח את סיבת מופע הטעות, הבאג, ותיקון. לפעמיס הבאג נמצא מהר והתיקון פשוט ומהיר, ולעיתיס הטעות היא לוגית והמעקב אחריה נמשך זמן רב יותר. בכלים העומדים לרשותנו למעקב אחר באגיס מסוג זה נדון מאוחר יותר בפרק זה, בסעיף הדן ביישוס זספֶסָטפפס. שגיאה מסוג אחר נובעת משימוש לא חוקי של המשתמש ביישום. לדוגמה, המשתמש הקליד ערך מספרי גדול למשתנה שיכול להכיל ערך מספרי קטן (תרשים 20.1). 83516 [הט5ו/ ]]ס5סזסוו :'6' זסיזיו 6רחום-חט סוי | =נחוותס:ו תרשים 20.1 או למשל, המשתמש הקליד ערך מסוג מסוים (נניח פַחוז)5) למשתנה מסוג אחר (למשל חו) ופעולה זו גרמה לשגיאה (תרשיס 20.2). בדוגמה נוספת אנו מאפשריס למשתמש לבחור קוב ולפתוח אותו. כאשר המשתמש בוחר קובצ שנמצא בכונן :3 ומורה לפתוח אותו, התוכנית מחפשת את הקובצ בכונן :. אולס, כאשר אין דיסקט בכונן :4 נגרמת שגיאה המפסיקה את פעולת התוכנית. כדי למנוע שגיאות מסוג זה, נדאג לטפל (בעזרת קוד) במקומות בהס הסיכוי לטעות גבוה. כמובן שעל המתכנתים מוטל לצפות צעד אחד קדימה ולהקדים תרופה למקומות בהס המשתמש עלול לטעות, ועליהם למנוע מראש את השגיאה הצפויה על ידי מתן פתרון מתאיס בקוד. פרק 20: טיפול בשגיאות 345 83516 [ה5ו/ ])ס5סזסוון :3% זויוס 6רחום-חט₪ )ה רח5ורח 6קעד | הטסו תרשים 20.2 המשפט זוסזו= חס כדי ללכוד שגיאה ולטפל בה באופן מוגדר, בלי לתת לה את האפשרות להפסיק את פעולת התוכנית, נשתמש במשפט זוסזו₪ ח0. משפט וה מפנה את התוכנית לקטע קוד המטפל בשגיאה. לדוגמה, ()א6110% 0060810 ס50 21866 162[סתהאתיתם 710סס מעספעם ם0 156% פב טספכסםת1 תנכ (%א%2.76א70%) 781 / (6א%1.76%א781)16 = עצט6כע6ם1 ספטפ 16א₪ :6 תה תצע "!2020 צֶס מתסבנפנטנסף 6'ת08 טסצ" אספס5א 85 . 60862 ספטפ במ שיס לב שהמשפט זסזו6 חכ) הורה לתוכנית לאן לפנות במקרה וקורית שגיאה. בשורות קוד אלו ההפניה היא אל התווית ז0!6ח18זזזם. תווית מיוצגת על ידי שמה ונקודתייס אחריו. לדוגמה, :תע כאשר המשתמש מקליד את הערך 0 (אפס) לתיבת הטקסט 12א8ד פקודת ההשמה ((1א6 ך.12א6 ד)]8/ / (+6% ד.11א6ד)|8/ = צטססזחו) מבצעת חילוק באפס. חילוק זה אינו חוקי וגורס מצב שגיאה. במקרה רגיל שבו אין טיפול במצבי שגיאה, התוכנית היתה ייעפהיי עס הודעות שגיאה (תרשים 20.3). בשורות הקוד שבדוגמה התוכנית מונחית לפנות אל התווית 0|61ח38זז= במקרה של שגיאה, במקוס להפסיק את פעולתה מייד. 6 65ם/, - ערכת כלים 83516 [ה15/ !)ס5סזסו4] יוסיזיוס 6רחו)-חט 260 צעֶָם הסופוצום | הנחטתס:ו תרשים 20.3 בשורות הקוד הבאות לאחר התווית אנו מטפלים באופן ידידותי בשגיאה, ולא עוצריס את התוכנית. בשורות הקוד שבדוגמה לעיל מוצגת הודעה למשתמש המעירה לו כי ביצע פעולה לא חוקית, חילוק באפס, ונותנת לו אפשרות להקליד מספר אחר. על ידי המשפט זסזזם ח0 ניתן להפנות את התוכנית גם לכל שורה רצויה, במקוס להפנות אותה לתווית. צריך לציין את מספר השורה, כך: 1 6070 עספעם ם0 "!2620 עס מסנפנ1נט1ה 6'ם8ס טסצ" אספסשפא 31 השורה צריכה להיות באותה פונקציה או באותה שיגרה שבה הופעל משפט זסזזם חס. במקרה זה, יימספרי השורהיי ניתניס על ידי המתכנת ומשמשים למעשה כתוויות. פתרון שגיאות בדוגמה הקודמת יצאנו מתוך הנחה שהשגיאה קרתה כתוצאה מחילוק באפס. אך ייתכן שהשגיאה קרתה בגלל סיבה אחרת כלשהי. לדוגמה, המשתמש הקליד בתיבת הטקסט מחרוזת במקוס ערך מספרי. במקרה וּה, ההודעה שמוצגת אינה מתאימה. איך נדע איזו שגיאה קרתה כאןז מספר השגיאה בכל פעס שקורית שגיאה בתוכנית, ויו'ואל בייסיק יוצרת אובייקט מסוג זזם ששנייס ממאפייניו העיקריים הס : זפסוחטא ו- חסוזקוז650. ז6ם ותטא מייצג את מספר השגיאה שקרתה. לכל שגיאה הקורית במהלך התוכנית יש מספר המייצג אותה. לדוגמה, שגיאה מס' 6, "שסוחזפצכיי, היא שגיאת גלישה שנגרמת כתוצאה מביצוע פקודת השמה של ערך החורג מתחוס קיבולת המשתנה. השגיאה 'יסז28 עס חסופוטוסיי הנובעת מחילוק באפס, מיוצגת על ידי המספר 11, וכן הלאה. פרק 20: טיפול בשגיאות 347 מעתה, כאשר נכתוב את שורות הקוד לטיפול בשגיאה, נברר תחילה את מספר השגיאה. מספר השגיאה, שהוא ערך המאפיין זססוחט! של האובייקט זזם, יסייע במתן הודעות מתאימות למשתמש ובמתן פתרון מדויק. לדוגמה: ()א01106 מנת6שתס סגט5 21866 162סתהתעתם 710סס מעספעם ם0 15662 פב טנעסםת1 תנכ (768%. %2א76) [78 / (6א%1.76א76) [078 = טנקפםת1 סטפ 1%אם :6 1סתהתלצת שססמתטא. עעם 0886 561606 :6 0886 "!סמ1אט 1866עקסעסק8 662םת6 16856 ,טחס1ע2סטס" אספסטספא 8.,. 7681 :1 08856 "!2600 צס תסנ1פנטנכת" אסתטפא 8, 76802 % בת פטפ בתם שיס לב שלפני התווית זפוסְחּרוזזם תבוא בדרך כלל הפקודה 1א= ליציאה מהשיגרה או הפונקציה, מכיון שכאשר לא קורית שגיאה והתוכנית פועלת כשורה, אין צורך וגס לא רצוי להיכנס לקטע הקוד שאחרי התווית זס|6ח14זזזם. שס התווית ז0|0ח8זזם הינו רשות וניתן לקבוע לה כל שסם רצוי מלבד מיליס שמורות. לדוגמה: 1 860700 עספעם ם0 01 : תיאור השגיאה מאפיין חשוב נוסף של האובייקט זזם שהזכרנו בסעיף הקודס הוא ח60ס1ז650. מאפיין זה מציג את תיאור השגיאה. מספר השגיאה אינו אומר דבר למשתמש (מספר השגיאה שימושי יותר למתכנת), אולס הודעה עס תיאור השגיאה יכולה להנחות אותו לתיקון התקלה ולמנוע ממנו חזרה עליה. כדי להציג את תיאור השגיאה, כפי שניתן על ידי ויז'ואל בייסיק, נשתמש במשפט חס0ו6501104.זזם. לדוגמה: עס1סתהתעעת 0070 עסעעם תס :םה תצע מס%61ק1ע650כ.+2ם א250%טפ5א אין הכרח להשתמש בתיאור של ויז'ואל בייסיק לשגיאה, ניתן להציג על סמך מספר שגיאה הודעה כלשהי אחרת בעברית. 8 8 6ם₪/. - ערכת כלים המשפט 2656 בחן את שורות הקוד הבאות: ()0110% 00608 ס50 217866 16%סתהתעתם 6070 עספעם ם0 15662 28 תגוא תנק %. תגוא6א6 = מתטא סטפ 1%אם :6 1סתהתצצת "!פע6סמתטם ץ1תס ע66םע" אספסטס5א פטפ סתם כשהמשתמש לוח על לחצן 0008 הוא מפעיל את האירוע 01106 שמוצמד לו. באירוע מתבצעת פקודת השמה, המציבה את הערך שבתיבת הטקסט וטא אל המשתנה חואז. כאשר המשתמש מקליד ערך שאינו מספרי, כמו למשל את שמו, פקודת ההשמה שגויה (שגיאה מס' 13 - חסוהוחפו! 6סְעד) מכיוו שנעשה כאן ניסיון להכניס מחרוזת למשתנה מספרי. מכיון ששורות הקוד 'ימוגנות'" על ידי המשפט זסזז= ח0 המטפל בשגיאות, ברגע שהשגיאה קורית, התוכנית אינה מופסקת, אלא פונה אל שורות הקוד העוסקות בדיווח ובתיקון השגיאה. במקרה זה הטיפול בשגיאה הוא הצגת הודעה למשתמש *פזסםוהטח עוחס זפזח='י. כאשר המשתמש מאשר את ההודעה, התוכנית ממשיכה בשורת הקוד הבאה. בדוגמה שלנו שורת הקוד הבאה היא 5 6ח₪ ; התוכנית עוברת אליה ומסיימת את השיגרה. לעיתיסם נרצה לתת למשתמש הזדמנות שנייה לתקן את התקלה מבלי לסיים את הפונקציה או את השיגרה. לדוגמה, כאשר המשתמש מנסה לקרוא קוב מכונן :4 ואין דיסקט בכונן, הפעולה גורמת להודעת שגיאה. נניח שהשגיאה מטופלת כך שלמשתמש מוצגת הודעה שעליו להכניס דיסקט לכונן. במצב וּה, יציאה מהשיגרה לא תהיה נכונה, מכיוו שלאחר תיקון התקלה והכנסת דיסקט לכונן, התוכנית צריכה לקרוא את הקובצ מהדיסקט, בשעה שיציאה יכולה לפגוע בפעולת התוכנית. הצעד הנכון יהיה אס כן, לחזור אל שורת הקוד שבה קרתה התקלה ולאפשר לתוכנית לבצע אותה שוב, כאשר הדיסקט נמצא בכונן. כדי להשיג זאת, נשתמש במשפט 65₪8א. המשפט 8/ 6580 מורה לתוכנית לחזור אל השורה שבה קרתה השגיאה לאחר סיוס הטיפול בשגיאה. לדוגמה: ()6110% םת6ק60תס סג50 866ט1ק 16%סתהתעתת 6070 עספעם ם0 1 28 סטקם1 עסע 6א116.76ע6א5 םמ6סס 1+ 601086 מטפ 1%א₪ פרק 20: טיפול בשגיאות 349 :6 1סתהתצת מתסמץך 71 = עסמחתטא.+לם +ך ":ה סטנבעכתע סם 1585%6%%66כ2 ע6סםםע" אספטספא סותזגו5 6 שא תם פטפ בסתם שיס לב ששגיאה 71 מציינת כי הכונן שממנו אנו רוציס לקרוא אינו מוכן, או במיליס אחרות: אין בו דיסקט. לאחר הודעה מתאימה המשתמש יכול להכניס את הדיסקט ואז התוכנית תנסה לפתוח שוב את הקוב>. בשגרת הטיפול בשגיאה השתמשנו במשפט 6 המחזיר את התוכנית לשורת הקוד ...ח8ק0 שבה מתבצע ניסיון נוסף לפתוח את הקוב. אס המשתמש לא הכניס את הדיסקט, השגיאה חוזרת ושוב מופיעה ההודעה המורה לו להכניס את הדיסקט. זה יימשך עד אשר המשתמש יבצע את הפעולה הנדרשת. לעיתיס מוסיפים מונה לשורות הקוד המטפלות בשגיאה, אשר ימנה את הפעמיס אשר קרתה בהס השגיאה. כאשר המונה עובר על ערך נתון, נניח 3, מפסיקיס את הפעולה וממשיכים בתוכנית. לדוגמה: ()6110% ם6006ת0ס סגמ5 217866 16%סתהתעת 6070 עספעם ם0 156062 פב 1 תנקת 1 28ב סטקם1 עסע 6א116.76%ע5א5 םמ6סס 1 61086 מטפ 1%א₪ ₪ :2 1+ 7-5 = ך מפטפ 16אםט מפםמך 3 < 1 1% מסם> 71 = מססמתטא.צעצם עך ":ה 6ט1עכע סם 215%6666 עססתם" א5020 המשפט +%א6א 656 אפשרות נוספת לטפל בשגיאה היא להורות למחשב להתעלם ממנה ולהמשיך. תחביר המשפט המורה לתוכנית להתעלס מהשגיאה ולהמשיך כרגיל: >אסא סתטפפת עסצעם ם0 במקוס לשלוח את התוכנית אל שגרת הטיפול בשגיאות, מורה לה המשפט 465008 א להמשיך למשפט הבא שלאחר שורת השגיאה. 0 66ם/, - ערכת כלים לדוגמה: ()6110% ם6006ת0ס סג50 21866 %סתגופסת עספעם ם0 1 28ב סטקם1 עסע 6א116.76ע5א5 םמ6סס 1+ 601086 פופ םם אם תקרה שגיאה בניסיון לפתוח את הקובץ, התוכנית תתעלס מהשגיאה ותמשיך לשורת הקוד הבאה. שים לב, אס יימצאו שגיאות נוספות באותה שיגרה, ההתייחסות אליהן תהיה באופן דומה: התעלמות וקפיצה לשורה הבאה. פונקציה הקוראת לפונקציה מבנה מודולרי של שורות הקוד כולל גם קריאה לפונקציה מתוך פונקציה, ברמות קינון שונות. נניח שפונקציה א' קוראת בשלב מסוים לפונקציה ב'; פונקציה בי מבצעת את שורות הקוד שבה וחוזרת לפונקציה א', אל שורת הקוד שאחרי שורת הקריאה. אך מה קורה כאשר יש שגיאה בפונקציה ב' ! מי מוהה את השגיאה, פונקציה בי או פונקציה א' ! ומה קורה כאשר פונקציה ב' קוראת לפונקציה ג' והשגיאה קרתה בפונקציה זוז הכלל במקריס אלו הוא: אס לפונקציה בה קרתה השגיאה יש קוד לטיפול בשגיאות, התוכנית פונה לקוד זה; אס לא קייס קוד מיוחד כזה בפונקציה, התוכנית פונה לקוד המטפל בשגיאות (אס קיים כזה) הנמצא בפונקציה שקראה לפונקציה בה קרתה השגיאה (בפונקציה שברמה הגבוהה יותר). לדוגמה: ()ב סופ 162סתהתיתם 710סס מעספעם ם0 8 0811 1 28 סטקם1 ע0ס+ 6א116.76ע5א5 םמ6סס 01086 1 סטפ 1%אם :6 1סתהתלצת "!ע162סתההתת ת 6םתנ1נסטסצסט5" א0ס2טס5א פטפ בסתם ()5 סטפ %ס1סתהתעתת 6070 עספעם ם0 2 פ2 סטקסטס עסע 6א116.76ע6א5 ם6סס 01086 2 סטפ 1%6אם :6 1סתהתצת "!ע162סםתהה1תע 2 6םתנ1נסטסצסט5" אס2טס5א פטפ בתם פרק 20: טיפול בשגיאות 351 מהלך ביצוע תוכנית הדוגמה: ביצוע השיגרה א. מתוך ‏ מתבצעת קריאה לשיגרה 8. התוכנית מנסה לבצע את המשפט ח8ק0 (נצא מתוך הנחה שיש תקלה) ואז היא נתקלת בשגיאה כלשהי. מכיון שלשיגרה 8 יש תוכנית טיפול בשגיאות, התוכנית תפנה אליה וההודעה שתוצג: י!זפוסְחבּרוזז= 5 6חטטסזסופ'י. אחר כך התוכנית תסייס את השיגרה 8 ותתחזור לשיגרה /. אס בשיגרה / תהיה שגיאה, תוכנית טיפול השגיאות שלה תטפל בשגיאה שנוצרה. שיס לב לשורות הקוד הבאות : ()ת סופ 62[סתהאתצלם 710סס מעספעם ם0 8 0811 1 8ב סטקם1 עסע 6א116.76ע6א5 םמ6סס 01086 1 סטפ 1%אם :6 1סתהתלצת "!ע16סתההתת בת 6םתנסטסצסט5" א0ס2טס5א פטפ בתם ()5 סגופ 2 פ2 סטקסטס עסע %6א116.76ע6א5 םב6סס 2 01086 ספטפ סמ בדוגמה זו השיגרה 5 אינה כוללת טיפול בשגיאות. כאשר התוכנית תבצע את השיגרה 8 היא תקרא מתוכה לשיגרה 8. אס וכאשר תקרה שגיאה במהלך השיגרה ₪, התוכנית תחפש תחילה את מטפל השגיאות בשיגרה שבה קרתה השגיאה. מכיון שלשיגרה 8 אין תוכנית טיפול בשגיאות, התוכנית הראשית תפנה למטפל השגיאות של השיגרה או הפונקציה שקראה לשיגרה 5, בדוגמה שלנו ו השיגרה 4. במקרה זה, התוכנית תדלג אל התווית ז0|8ח48חם של שיגרה 2 ותציג את ההודעה: 'יז6|סחההזזם ג סחטטסזסופ'י, למרות שהשגיאה התבצעה בשיגרה 8! שיס לב, כלל וה תקף לכל רמת קינון של שגרות או פונקציות. אם אין תוכנית טיפול בשגיאות באף לא אחת מהשגרות (גם לא לראשונה בחיררכיה), התוכנית הראשית תיפסק במקוס בו קרתה השגיאה עם הודעה מתאימה. מנפה השגיאות - 60061 סוג שגיאה שקשה לאיתור כולל את השגיאה הלוגית. להבדיל משגיאות תחביר כדוגמת שימוש בפונקציה לא בצורה הנכונה וכוי, עליה מתריעה ויויואל בייסיק מייד או מאוחר יותר בזמן הידור התוכנית, שגיאה לוגית קשה יותר למעקב. לעיתים אין מבחיניס בה, אס מסלול הביצוע אינו עובר בקטע הפגוס של התוכנית, או שלא נוצר מצב המחייב ביצוע פעולה שמתברר שהיא שגויה. לדוגמה, חריגה מתחום מערך היא 2 658ם/, - ערכת כלים שגיאה לוגית, ולא ניתקל בה עד אשר המשתמש יכניס ערכים מסוימיםס שחורגיס מגבולות המערך. דוגמה נוספת לשגיאה לוגית יכולה להיות כאשר התוכנית מכניסה לשדה מספרי ערך אלפביתי כלשהו. שגיאות לוגיות אינן נובעות מתחביר שגוי, מהצהרה שאינה תקינה, או אי הצהרה על משתנה או פונקציה, ולכן הן קשות יותר למעקב. כדי לפתור קושי וה יש כלי תוכנה הקרוייס פזפִפָפָט60כ - מנפי שגיאות - המסייעים במעקב אחר ביצוע שורות הקוד בתוכנית ובמציאת השגיאה הלוגית. לכלים אלה ניגשיס מתפריט 06008 שבשורת התפריטים. סרגל הכלים פַ600ם מכיל גם כן כלים אלה, וניתן לצרפו לסרגל הכלים הסטנדרטי של ויז'ואל בייסיק (תרשיס 4). להוספת סרגל 0808 לתצ לחיצה ימנית על סרגל הכלים וסמן את האפשרות. תרשים 20.4 נקודת עצירה (+חוססא63זם 6ו9פסד) לחיצה על האפשרות +59 בתפריט חטא (או הקשה על 5= במקלדת) מפעילה את היישוס. כאשר מבצעים תוכנית, מבצעיס למעשה את שורות הקוד זו אחר זו על פי האירועיס השוניס המתרחשים ביישוס (כלחיצה על לחצן, למשל). שורות קוד אלו כוללות שימוש במשתנים, ביצוע פקודות השמה ופעולות אחרות. ערכי המשתניםס משתנים בהתאס לפעילות התוכנית, לפי נתוניס חיצונייס המוקלדיס על ידי המשתמש ועוד. כאשר הערכים שמקבלים המשתנים נכונים, הכל טוב ויפה; אך מה קורה כאשר משתנה מכיל ערך כלשהו שאינו חוקי מבחינת התנאים, או ערך חריג! במצב זה אנו רוציס לצפות בערך המשתנה באותה נקודה, או במספר נקודות במהלך התוכנית, כדי לקבל מידע על תהליך שינוי הערכיס של המשתנה. כלי העזר של ויו'ואל בייסיק הוא נקודת העצירה (+ח001א68ז₪ 08816ד). נקודת העצירה מורה לתוכנית לעצור את מהלך ביצוע התוכנית בשורה שבה הוצבה. אך בשונה מהפסקת התוכנית באופן ידני בנקודה מסוימת, הפסקת התוכנית על ידי נקודת העצירה הממוחשבת אינה הפסקה מוחלטת. במצב ה המשתנים קיימים בזיכרון עם הערכים האמיתיים שלהסם באותה נקודת זמן. במצב ה ניתן לצפות בערכי המשתניסם ולקבל מושג על פעולת התוכנית. לעומת ואת, בהפסקה מוחלטת של התוכנית, כל המשתנים משתחררים מהציכרון ואין אפשרות לצפות בערכם. יתרון נוסף בהצבת נקודת עצירה הוא היכולת לצפות בתוצאות ביצוע היישום. בכך נעסוק בהמשך. פרק 20: טיפול בשגיאות 353 כדי להציב נקודת עצירה בשורה מסוימת, הצב את הסמן בשורה זו ובחר באפשרות + סקאז 80!6סד שבתפריט שטספ, או הקש על ₪9 (תרשים 20.5). ניתן להציב מספר נקודות עצירה במהלך התוכנית, ככל שיידרש. עס זאת, רצוי לתכנן את העצירות האלו במצב שניתן לקבל בו מידע רלוונטי. קוו] שסצחו/צ 5הז-₪06 5|ססך הטם הַטפפס 8 10 5660 3 % , 8 06 5660 5 קוב | וב בכ 8 זס5'וט6 סד חטח ...300 00 שש ה :ו 9 ...הזה / או "60 9 הכ ב ייוו 24 9+ /ה1+5ז6 5]חוסק ₪638 || זַ63|₪ (ק יח 51 זא 5 ₪ 51 א 5 % תרשים 20.5 צעד-אחר-צעד (ס+ח! 5%60) אפשרות נוספת למעקב אחר מסלול ביצוע התוכנית, הוא לצעוד במסלול זה צעד-אחר- צעד, ולמעשה שורה אחר שורה, תוך אפשרות לצפות בערכי המשתנים השונים, מאפייני פקדים וכל ערך שקיים בויכרון. לדוגמה הפקד 1א%%1=118.76 - ניתן לצפות בערך של המאפיין 1א6ד של הפקד, גם כאשר אין רואיס את הפקד בפועל. כדי לבצע את התוכנית צעד-אחר-צעד, בחר באפשרות ס+ח! 5160 שבתפריט 6008פ או הקש על 8=. התוכנית פונה לשורת הקוד הראשונה וצובעת אותה בצהוב ומסמנת חצ משמאל (תרשים 20.6, אך ללא צבע). כדי להתקדס לשורה הבאה הקש 8= והשורה הבאה תיצבע בצהוב, וכן הלאה שורה אחר שורה עד סוף התוכנית. <1ם)-. (068:)] 00!61 - 66)1ןסזק [+ חופחחו] - (]613ח66) איסח5. חוב וי הד תרשים 20.6 4 658ם/, - ערכת כלים שיס לב שניתן בכל עת לחזור לביצוע סדיר ושוטף של התוכנית בהקשה על ₪5 (8וס). דילוג על פונקציה (זסט0ס ס5%6) כאשר התוכנית מבצעת את שורות הקוד צעד-אחר-צעד ומגיעה לשורה שבה מתבצעת קריאה לפונקציה, היא נכנסת אל הפונקציה ומבצעת את שורות הקוד שבה צעד-אחר- צעד. אפשר לדלג על הכניסה לפונקציה. בחר באפשרות ז8צ002) 5+60 מתפריט 8ַטספם, או הקש 8-+14ח5 לדילוג על הפונקציה ולמעבר לשורה שאחריה. שים לב שדילוג על הפונקציה מבצע את שורות הקוד בפונקציה עצמה, אך לא צעד-אחר-צעד. הסיבה לכך בדרך כלל שאין לנו עניין לבדוק קטע קוד סטנדרטי. אס מקישים 8= ונכנסים לפונקציה, ניתן לצאת מתוכה, ולא להמשיך בה צעד-אחר-צעד. נבחר באפשרות 00% 5160 שבתפריט 0%פ6עם או בהקשה על 8+ במסגרת צעד-אחר-צעד ניתן להריצ קטע קוד מסויס ברצף ולתחזור לביצוע צעד-אחר- צעד. כאשר התוכנית נמצאת בשורה כלשהי ורוציס להמשיך ברצף ואחר כך להמשיך צעד-אחר-צעד, ננהג כך: נביא את הסמן אל השורה שבה נרצה להמשיך צעד-אחר-צעד ונבחר באפשרות זספזט6 סד חטח מתפריט 0600 או נקיש 8-+|6%7. הרצת התוכנית מנקודה מסוימת לפעמים תרצה במהלך ביצוע צעד-אחר-צעד לדלג על קטע קוד מסוים. שיס לב, לא הרצה מהירה (8=+/0) אלא דילוג ממש, שפירושו: התוכנית לא תבצע את הפקודות הכלולות בו. לצורך זה נציב את הסמן בשורה שאליה נרצה לדלג, ונקיש. 9=+017; אפשר לבחור באפשרות +ח5+8+6716 +86 +56 מתפריט פטס6. התוכנית מדלגת על השורות עד לשורה המבוקשת ומתעלמת מהן, כאילו לא היו חלק מהתוכנית. לדוגמה: 56062 פב 1 תנקת 7 ו 1 %תנגעק הבה נתרגל את שלמדנו: כשהתוכנית תבצע שורות קוד אלו צעד-אחר-צעד ותבצע את פקודת ההשמה 7 = |, ערך המשתנה | יהיה 7. במצב וּה, התוכנית נמצאת בשורה 3 = |. כעת, נדלג (9-+!01) על השורה 3 = !| ונביא את התוכנית אל השורה | זחוזם. מכיון שבוצע דילוג על השורה 3 = |, ערכו הנוכחי של | נשמר והתוכנית תדפיס את הערך 7 (מכיון שהיא לא התייחסה לפקודת ההשמה 3 = 6. שים לב, הרצה בעזרת 8+ תגרוס לתוכנית להתייחס לשורת הקוד 3 = | והערך שיודפס יהיה 3. פרק 20: טיפול בשגיאות 355 צפייה בערכו של משתנה (חִ6+ּ// אסוטס) כל הטכניקות שלמדנו, החל מנקודת עצירה, צעידה בשורות הקוד צעד-אחר-צעד מכוונות לאפשר לנו לצפות בערכי המשתנים ובמאפייני הפקדיס לצורך מעקב. ברגע שהתוכנית נעצרה בשורה מסוימת (בנוהל צעד-אחר-צעד) ניתן לצפות בערכי המשתניס השוניס שבשורות הקוד. יש שתי דרכיס לצפות בערך המשתנה: 1 הבא את סמן העכבר והצב אותו על המשתנה בשורת הקוד (אין צורך ללחו עליו). אחרי שנייה או שתיים תופיע תיבת תיאור קטנה (בדומה ל- סוד ו|ססד ) המציגה את ערך המשתנה (בתרשים 20.7). <ום) -. (₪006) [חזס]] - 1ו60ןטזכ מה | - ו] [+ וס ] ()סוו 1 רחס מו5 8זבעחק ז66זח| 235 הזחו חזום (1א ד חנ )וה / = רחו ץרו תרשים 20.7 2 בחר במשתנה, או בביטוי, שבערכו ברצונך לצפות על ידי סימון בגרירת העכבר עליו, והקש 9"+א1ח5, או בחר באפשרות ח316/ א2016) מתפריט פטס6ס. החלון ח810/ 020166 ייפתח ובמסגרת 8!06/ יופיע ערך המשתנה או הביטוי הנמצא במסגרת חסו655זסא= (תרשים 20.8). |< |ום]=. ב | - ו [+ 0 ] ()סו1 1 רחס 5 8+בעחק זזה| 235 הזחו הזו (90 1 החנ 506)|ם/ = 0 6 61חבּהחרחס-).1וחיוס-]. 1 +66[סו 1 חסו655וקא החטא')חו 36 | תרשים 20.8 6 65ם/, - ערכת כלים שיס לב שניתן לצפות אך ורק בערכי המשתניס של אותה שיגרה או פונקציה, אלא אס עוסקיס במשתניסם מודולרייס או גלובלייס שטווח ההכרה שלהס הוא בכל התוכנית. ניסיון לצפות בערך משתנה מקומי של פונקציה או של שיגרה אחרת, יציג את הערך + 00 01 +00 בחלון חסז8/ אסוטכ) (תרשים 20.9). | ח6)ה / אסוטום 0 | %) 62חהההרחס-). 1 וחיוס=. 1 +166סוק ח0ו655 וקא | ב וי | [366 6 | קוו <6א6)ח60 ]0 0₪> תרשים 20.9 חלון מיידי - שססחו// 6013%6חווח! לעיתיס הצפייה בערכי משתנה לצורך מעקב אינה מספקת. היה מועיל יותר, לו היינו יכולים לראות מה קורה אילו היה ערכו של המשתנה ערך כלשהו. כלומר, כיצד תנהג התוכנית, או שורת הקוד בה אנו עומדיס, במצב כפוי כלשהו. בוויז'ואל בייסיק קייס חלון שססחו// 6018%6ח! אשר נגיש בזמן ריצה בלבד. חלון זה הוא למעשה זס%/₪0 פשוט שבו ניתן לבצע פקודות ומשפטים בוויז'ואל בייסיק על משתניס בתוכנית ולקבל תשובה מיידית. אס ערכו של המשתנה חגואזחו היה 2 ובחלון שוססחו/ 8019%6חח! נשנה בעזרת פקודת השמה את ערכו ל- 3 (תרשים 20.10), שורות הקוד בתוכנית יתייחסו למשתנה חחטאוחו כבעל ערך 3. השפעת ביצוע פקודת ההשמה שלנו תחהיה מיידית. שיס לב, התו ! מקביל לפקודה +חוז= בוויז'ואל בייסיק. על הפקודות המבוצעות בחלון שססחו// 6018%6ח! לעמוד בחוקי תחביר של השפה. |<] 6 ה! וחואזחו ? 0 3=וחואזחו וחוואזחו? 9 תרשים 20.10 באופן וה נוכל לבצע שינוי בכל משתנה או ביטוי של השיגרה או הפונקציה שבה נמצאת התוכנית בשלב זה, וגס לראות כיצד מגיבות שורות הקוד לשינוי. כדי להציג את החלון שססחו// 8018%6חחח] הקש 6+!6%7. פרק 20: טיפול בשגיאות 357 תרגול 1. בנה תוכנית המאפשרת למשתמש לקרוא קובצ מהדיסקט. טפל בכל השגיאות שאתה צופה שעלולות להיות, כמו לדוגמה, טיפול במקרה שבכונן אין דיסקט. 2. בנה תוכנית המאפשרת למשתמש להכניס שני מספרים ולבצע פעולה חשבונית עליהן. כתוב מטפל בשגיאות אשר יטפל בכל השגיאות העלולות לקרות. לדוגמה, חילוק באפס, הכנסת תו במקום מספר וכוי. 8 66ם/, - ערכת כלים 1: הכנת ערכת התקנה ?וא ן56%0) סיימנו את הפרויקט, בדקנו אותו וניפינו שגיאות. כל שנשאר הוא למסור את היישוס ללקוח כדי שיוכל להשתמש בו כפי שתוכנן. לשס כך עלינו לבצע שתי פעולות עיקריות : 1. יצירת קוב הפעלה (5₪). 2 הכנת ערכת התקנה. ללא שני שלביס אלה המשתמש לא יוכל להפעיל את היישוס במחשב שברשותו, אלא אס קיימת בו סביבת הפעלה או סביבת פיתוח של ויז'ואל בייסיק. מכיון שאין אנו רוציס להתקין את תוכנת ויו'ואל בייסיק (הכוללת את סביבת הפיתוח) אצל כל לקות שמשתמש ביישום, חובה עלינו למסור למשתמש קובצ הפעלה (5אם) וגם ערכת התקנה עבור היישוס. ומדוע אי אפשר להסתפק בקובצ ₪אם ! למרות שקובצ ₪5 הוא קובצ הפעלה, הוא נעזר בקבצי .₪11 שוניס. במקוס לשמור את כל המידע בקובצ 5% אחד גדול, הוא מחולק, כמקובל ביישומים חלונאייס רבים, למספר קבצי ‏ 11ם. קבציס אלה אינס חלק ממערכת ההפעלה פשספחו)/% וחייביסם להתקין אותס במיוחד בספריות המתאימות במערכת. קוב ההפעלה בנוי לא רק מקבצי 11ם, אלא גם מקבציס נוספים כקבצי 00% למיניהס וקבציס אחרים כקבצי סו (של מסד הנתוניס 4608655 67050%/) ועוד. בכל מקרה, קובצ ההפעלה ₪85 אינו יכול לפעול כקובצ עצמאי ולכן ערכת ההתקנה חיונית להפעלתו במחשב של המשתמש. יצירת קובץ =א= יצירת קוב םאם פשוטה מאוד. צריך לבחור באפשרות 6א66+1.6[סזק ₪366 שבתפריט 1!6=. כאשר לפרויקט יש שם, הוא יופיע במקוס המילה 60%11[סזם, כמו לדוגמה 6א6. סק//ץ1 1386 לפרויקט בשס סק עוש. פרק 21: הכנת ערכת התקנה 359 בחירה באפשרות זו גורמת לפתיחת חלון בו נבחר בתיקיה שבה תיצור ויו'ואל בייסיק את קוב ההפעלה ונציין את שס הקוב> (תרשים 21.1). |₪ ₪ + ₪496-00000000] :חן %6 5 וסהחו/ר 35 55 --. בי - ו 580 וז יו ּ 5 סופת קת ך 6 | וי שחו|חספעי = קמור :פחחה שו | 06 | סוס | וו תרשים 21.1 שס הקוב ושס הפרויקט לא חייבים להיות זהים. לחיצה על 06 לאישור תחל את פעולת ההידור ויצירת קובצ 5אם. בסוף התהליך יופיע בתיקיה הרצויה קוב ₪א= שנושא את השס שנקבע לו. ערכת ההתקנה יוצרת באופן אוטומטי קובץ םאם גם אם לא יצרנו אותו באופן ידני קודס לכן. לפעמיס נרצה ליצור קובצ 55 ללא ערכת התקנה, כמו לדוגמה, כאשר התקנו את היישוס פעס אחת אצל המשתמש ואנו מוסריס לו גירסה חדשה שלו. במקרה זה אפשר להסתפק ביצירת קוב 55 ומסירתו ללקוח. הגדרות הפרויקט לפני יצירת קובצ ההפעלה ניתן לקבוע הגדרות ומאפייניס שונים לפרויקט. בחר באפשרות 2700671165 0[66+1זק שבתפריט +66[סזק (אם יש שם לפרויקט הוא יופיע במקוס ''80+1[סזם:'י). בחירה באפשרות זו מציגה את החלון 00674165זק 66%[סזק (תרשים 21.2). 0 66ם/. - ערכת כלים ₪ 5 ז60ןז - 60)1ןסזק | המולס | )חפחסקוחס | חס | אמוי | | 00 5:3 :6קעך זספןסזוק | - נוחזס=] זב ח5:3 6חב1] לספ[סזק 1 ק46] ל6פ[סזק :0 ?חס :הבו = סופ .+ 6 600 .| :חסוסקוז0656 לספןסזם ----------7---דותן |106] ַהוה8זחד 0 סק סמ סז 0 חסנסס= םהם הרו -ן חס 006% 806 וטק שן זר צב-₪] מק בבוד ₪ שפחססו] וטס או סוה הז ההוב = תרשים 21.2 בחלון מוצגות מספר כרטיסיות. הראשונה שבהן היא !6918ח66, שבה מעדכנים את המאפייניס הכלליים של הפרויקט, שהחשוביס בהם: 1. 36 +66[סזק - שם הפרויקט. 2 6וחה3א 1!6= ס!16 - אס ליישוס יש קובץ עזרה (:.41) נקליד בתיבה זו את שס קובץ העזרה ואת הנתיב. לימין תיבת הטקסט נמצא הלחצן |= המאפשר דפדוף במערכת ההפעלה וחיפוש הקוב הרצוי. 3 חה0ו26501100 +60[סזם - תיאור קצר על הפרויקט. בכרטיסיה ₪8%6 נקבעיס המאפיינים הדרושים לוויו'ואל בייסיק בזמן ההידור ויצירת קובץ %= (תרשים 21.3). המאפיינים העיקריים הם: 1. זססוחטא חסו9ז6/ - גרסת היישום. ניתן לשנות את הגירסה באופן ידני או לפנות לוויו'יואל בייסיק שתדאג לשינוי הגירסה באופן אוטומטי בכל פעס שנוצר קובצ ₪5 חדש. מספר גירסה זה נמצא תחת הכותרת חסופז6ע 16= (תרשים 21.4), כחלק ממאפייני קוב =א= שכלוליס באפשרות ''מאפייניס'י שבתפריט המקוצר (כאשר לוחציס לחיצה ימנית על שס הקוב בסייר). פרק 21: הכנת ערכת התקנה 361 2. ח0סו)41168 - בחלק זה נקבעת כותרת הפרויקט והסמל שלו. סמל זה יהיה גם סמל קוב ההפעלה (₪א). 3. חסו)הוחזס1ח! הסופז / - מידע כללי לגבי היישוס, אשר יוצג כחלק ממאפייני קוב ההפעלה. בתיבת הרשימה 6סץד בוחרים במאפיין שנרצה לקבוע, ובתיבת הטקסט 6ט!3 מקלידים את ערכו. 58 פפפז [66ןסז - 1ו66ןסזק תרשים 21.3 2 ₪65 - ערכת כלים |<]? | ב יי | הסופזפ/ | |הזטח6 ₪ :חסופזס/י שוו= 0350 |הפו/* = :הסוקוזס5ם .זט +)50סזסו] 1987-1337 ל זמפוזעסס עס הסו)הוחזס/חו הסופזפ/י זסווום -] :6 :6ב הזו 7 ,24 עזהגוחב ב חב ] ערזב קחחס=) 36 |בחזפ)ח| בוטב ] 35 ] 603 1 שוחה 4 !סגוטסז חסו5ז6/ )סגוטסז] | ו | |08חב= תרשים 21.4 בכרטיסיה 01!6ו60₪ נקבעיםס המאפייניס הקשוריס לתהליך הידור הפרויקט. כאן ניתן לקבוע תנאיס להידור. תוכניות ההתקנה 0זה2ו/ +ה6והעס!כ6כ 8 סַהּא6בק כדי לאפשר ליישוס לפעול גס במחשב המשתמש, נדרשת התקנת סביבה מתאימה במחשב. סביבה זו כוללת את כל הקבצים עליהם ''בנוייי קובצ ההפעלה כמו 1 ו, 00% ואחרים. אין צורך לדעת בדיוק איזה קובץ דרוש לפרויקט ואיזה לא. ויז'ואל בייסיק מספקת תוכנית התקנה - 0ז28!/ +חסוהץס!ק6 8 886א86ק המכינה בהנחייתנו את ערכת ההתקנה. התוכנית דואגת לבחור את כל הקבצים הדרושיס להפעלה תקינה. ערכת ההתקנה אינה יודעת לכלול קבציס שאינס חלק מסביבת העבודה של ויז'ואל בייסיק, כדוגמת קובץ פס (קובץ 400685) שאותו מנהל היישום. במקרה וה, עלינו להגדיר במפורש לערכת ההתקנה לכלול בה קוב זה. תוכנית השירות 0ז23ו/% +חסוחץס!ק6 8 6פַא86ק נמצאת בקבוצת היישומיס 8 6 510000 |1808/ )ספסזסווש. פרק 21: הכנת ערכת התקנה 363 שלב א' בשלב ראשון יש לבחור את הפרויקט שעל בסיסו נבנה את תוכנית ההתקנה. בתיבת הטקסט 666[סזק +58166 נרשס שס קוב הפרויקט (₪ם/) והנתיב עבורו נבנה את תוכנית ההתקנה. היעזר בלחצן 56ש0ז₪ כדי למצוא את מיקומו המדויק של הפרויקט (תרשים 21.5). בחר באפשרות 886א₪86 כדי לעבור לשלב הבא. הקוש זחסהועס!ק6 2 חב 36306 =" ספי, 6661[סזם 898 ו500 |הטפו/ 1]ס5סשווי |- | ה | תרשים 21.5 4 ₪66/ - ערכת כלים שלב ב' בשלב זה נגדיר לאשף איזה סוג של ערכה עליו לבנות (תרשיס 21.6). באפשרותך לבחור בין בניית ערכת התקנה סטנדרטית (896א286 56+02 5+40810) ובין יצירת קוב 060 (1!8=] ץ0ה06ח6כ6כ). קובצ זה מכיל את רשימת כל הקבציסם בהם תלוי קוב ההרצה (₪אם) שנוצר מהפרויקט שלך. בלי קבצים אלה, התוכנית שלך לא תפעל במחשב הלקוח (אלא אס קבציס אלו קיימיס אצלו במחשב). ץע 36836 - זב23וש זהטהועס!ק6 0 נחהב הבאב שי 530031 560 3-36 תרשים 21.6 פרק 21: הכנת ערכת התקנה 365 שלב ג' בשלב וה בחלון וה יש לקבוע את תיקיות היעד עבור הקבציס המכווצים של ערכת ההתקנה (תרשיס 21.7). ניתן לרשוס שס של תיקיה שאינה קיימת במערכת. תוכנת ההתקנה תשאל אם רוציס שהיא תיצור אותה, ובאישור חיובי היא תעשה זאת. .% ז 0 ] סַהַבּ68ב?] - 6זב2וש והסהועסוק6 0 חב 6ְהַבּא36 % ו =] הטסוק 0ו500 |158/י ']50סיסוויז > תרשים 21.7 6 ₪68 - ערכת כלים שלב ד' בשלב זה מופיע החלון פזפטוזם 40 (תרשיס 21.8). 4 פנסס ]| ,3א/ל פטס ] , 1א/ל פנסס] :פנססיון = שפזום 6פססן > 5 זס/א 8 הפוא 6סכן = זב ,%.4 300%ז03 ,%.3 א0בבזבּק :אסבב3 זבקן = לזסק<= |יזד1] , +'וסקח1 |ויזד4] ,אשד :פאפדך = ,5.0 08356 ,1 40856 ,111 00356 :350םוי| = תרשים 21.8 אשף ההתקנה גילה כי בפרויקט נעשה שימוש באובייקט ₪0 (לצורך ניהול מסד נתוניס). במקרה זה מוצגת לפנינו רשימה של מנועים, בעזרתס ינהל האובייקט את מסד הנתוניס, מהס נוכל לבחור. שים לב, שלב וה מופיע אך ורק כאשר תוכנית ההתקנה מזהה שנעשה שימוש בפרויקט באחד מהאובייקטיס או מהפקדים של מסד הנתונים, כדוגמת 0 (4008599 816 0% פרק 21: הכנת ערכת התקנה 367 שלב ה' בשלב זה מופיע החלון 6670600165 0816 +0 +טס (תרשים 21.9). 6זב03 ]0 )0 הוזווחס: שוחנ | < ₪5 ן ו | ו | תרשים 21.9 חלון זה אינו מופיע תמיד. אולס אס תוכנת ההתקנה מגלה שאחד או יותר מהקבציס הנדרשיס לערכת ההתקנה שנעשה בהס שימוש בפרויקט אינס מעודכנים או מגירסה קודמת, היא מעירה על כך ויש להפסיק את בניית ערכת ההתקנה. ניתן להמשיך (לחצן "<)אסאו"), אולס במקרה זה התוכנית תזהיר שבמידה ונמשיך עלולים להיות שיבושיס בניסיון ההפעלה של היישוס (תרשים 21.9). ניתן להתעלס מהודעה זו ולהמשיך לשלב הבא. 8 ₪65 - ערכת כלים שלב ו' בשלב זה מופיע החלון 1165 1610066 (תרשים 21.10). 5] ס6ט!סח! =: 555 55 6:1 | וט |- הז ב וס.35דוזכפויון | - 55 פא := וס 35 מפדכפויו ןק | - ו ה תרשים 21.10 שלב זה קיים אך ורק כשנעשה שימוש בפקד מיוחד בפרויקט. כאשר הוספנו פקד ו0ז1חס) 61/6 לארגז הכלים בעת פיתוח הפרויקט, תוכנת ההתקנה מזהה אותו ברשימה. באופן אוטומטי כל תיבות הסימון מסומנות וכוללות את כל הקבצים בערכת ההתקנה. עס זאת, ניתן לבטל את הסימון מתיבת הסימון שמשמאל לשם הקוב המייצג את הפקד, ולא לכלול אותו בערכת ההתקנה. לדוגמה, כאשר ידוע מהתקנות קודמות שקבציס אלה כבר מותקניס במחשב של המשתמש אין צורך לכלול אותס שוב בערכת ההתקנה הנוכתית. פרק 21: הכנת ערכת התקנה 369 שלב ז' בשלב זה מופיע החלון 071105 630 (תרשים 21.11). וז 5ב - 6זב2ו/ )הסהועס!ק 6‏ חב 6מַבּ36<] שי תרשים 21.11 בשלב וה בוחרים את הדרך בה נרצה להפיץ אחר כך את ערכת ההתקנה. שתי האפשרויות הן: 1 630 6ו8ַח51 (או ץזס60זוכ פופָחו5 בגירסה 65 - קובצ גדול אחד (או ספריה אחת בגירסה 5). במקרה כוה כל הקבצים ימוקמו בקוב> אחד בעל סיומת 0₪8. 2. 6805 80!6! (או 15% עפססות בגירסה 65 - דיסקטים. במקרה זה ערכת ההתקנה תחלק את הקבציס למספר קבצי 6048 (או למספר דיסקטים בגירסה 5, על פי גודל הפרויקט. בחר באפשרות הרצויה ועבור לשלב הבא. 0 ₪65 - ערכת כלים שלב ח' בשלב זה קובעיס שס לערכה (תרשים 21.12). . .5 6 חסוזב!|513ח] - זב23ו/ והסהועסוק 6‏ חב 6מַבּ 30 ₪ חסוסבּסווקקה עה תרשים 21.12 פרק 21: הכנת ערכת התקנה 371 שלב ט' בשלב וה קובעיס היכן הערכה תתקין את היישוס בתפריט התחל של פשוסבחו/ (תרשים 21.13). . .% 5ח6]] טח 1זב51 - הזב23וש ]חסהועס!ק כ נחהבּ 36636 שי טחפזי] 5-31 4 ההז מ חסוס8םווקק ה עו מ תרשים 21.13 2 ₪658 - ערכת כלים שלב י' בשלב זה מופיע החלון 5ח068+10.] ||59ח! (תרשיס 21.14). | וח6הועס!ק6 2 נחה 6הַ3 36% 5חסוז03 | [/513ח] - ₪זב2ו/ והסהועסוק6 חב 6ַהַ3663 % = 6ס5!ו| 1165 6ח5 ]טס ה686 זס] הסוס063! ||553חו 56 סח ח63 סוי ]1 .30|6: 6ח חו 6|] 6חל 50 3550080 טבוח 6רם הַהוהַחבּח6 עפ עשסופם 3 ]ס חפ 6ח? 50 הססבזס"חו זסטוט]פ5 300 ח63 טסץ ,5780 . ז0ם|ס=זפנו5 זז( 85!|הוחב הזוק חו 35 ,הח 6 שַהַח3ח6 חשר, , ץ']וסח 50 לחה9ע טסעי שו" 506 56סס) . חהזט!ס הס בסס | ||10553 506 חו הסוסבהזזסזחו 063000 ||553ח1 (ח50003י])+ ‏ כב 0פזבת5 505פיסוי]65!ו= הסוהחס-656ו= הזב זססזוק:) 1וס.0350אס | (חז3ק5ץ5חו%)+ ד5י5%5/שיססאז/ע:₪ = |ום. מדקהפספוז , (חז3ק5ץ5חו)+ ד5י55/עיססוזשצ: | וום. זוז ז55ז / (חזבקקק )+ 8 ]ו %]050שו1י]653!|= הזב זוססזק: 6 66 0:1[סזס (ה5730ע5חו%)+ 5 5 סוס ו 2 תרשים 21.14 ערכת ההתקנה פועלת בנוהל זה: את קובץ ההפעלה ואת הקבציס הנוספים שצורפו לרשימה באופן ידני היא מתקינה בתיקיית היישוס. את קבצי ‏ ₪11 ואת קבצי 006% היא מתקינה בתיקיה וח900ץ5 שנמצאת בתיקיית מערכת ההפעלה. זו אמנס ברירת המחדל, אך ניתן לשנות לכל קוב וקובצ את יעד התיקיה שבה יותקן. לדוגמה, נשנה את תיקיית היעד של קבצי ₪11 לתיקיית היישוס. לביצוע השינוי נבחר בעמודה ח0ו0094.] ||543ח1 של הקובץ שנרצה לשנות. התא בטבלה ייהפך לתיבה נפתחת (תרשים 21.15). מתיבה זו נבחר את המיקוס הרצוי בו תתקין תוכנית ההתקנה את הקוב> שנבחר. פרק 21: הכנת ערכת התקנה 373 תרשים 21.15 4 8 ₪66/ - ערכת כלים ונד 555 אסיס1או: 555 אסיס1או: 555 יסאו :6 555 אוסוסו1או: 555 אוסוסזאו: שלב י"א בשלב זה ניתן לקבוע אס קובץ היישוס יהיה משותף או לא. התרשיס הבא מציג את החלון של שלב זח: 5] זב 5 תרשים 21.16 5% - 0זב2וש )חסהועס!ק 6‏ חב 308306 % פרק 21: הכנת ערכת התקנה 375 שלב י"ב שלב זה מסיים את תהליך הכנת ערכת ההתקנה (תרשים 21.17). . .% ו - ₪זה2וש והסהועס!ק6 0 חב 6ַהַ3א30 % 1 סַהַ36%ק 560 בזבבחב:5 [ תרשים 21.17 כדי לסיים את התהליך לחצ על לחצן ח8וחו=. לחיצה זו גורמת לתוכנה לכווצ את כל הקבציס הכלולים בערכה. בסיוס התהליך יציג האשף את החלון +1סק3₪6 8חו89א86ק הכולל דוח קצר על תוכנית ההתקנה (תרשיס 21.18). ניתן לשמור דוח זה כקוב טקסט בלחיצה על הלחצן + 6עה6. 6 ₪68 - ערכת כלים <1ם)- | סק שַחוה 368 - קפץ. 1)ס6ןסז:] =* הפע 050"סוןי 165 זב זהסז:-* 35 >ווום חסשם 35ח הססבּ=וופסב זטסץי זס] ₪16 630 פחזן ,"8 1?סש[סזק 89856 סו 5 ]5 /50ססוי] 65!ו=] חב זססזק: 6) ע'זס666זום +זססק5 שח חו 186 ח56ב0 3 350 5 וחד חו 16 ₪30 06 606305 0סם טסעי אוסווב ||ואו :> (דםם. 1תסש[סזםזוספק5 89856 סו טס5 .55!ו] 6 ]0 5006 50 65ַהַחבּת6 368 טפץ 6856 | 6 זסקסת 58%/6 תרשים 21.18 בוה תם תהליך הכנת ערכת ההתקנה. ערכה זו נמסרת למשתמש (או הלקות) והוא מתקין אותה ככל ערכת התקנה אחרת, בהפעלת הקוב 8א56+00.8. במהלך ההתקנה ניתנת למשתמש האפשרות לבחור בתיקיה רצויה ולהתחיל בהתקנה. בסיומה, כל סביבת העבודה הנדרשת ליישוס מותקנת במחשב. בנוסף נוצר בתפריט תוכניות שבתפריט התחל (את המסלול המדויק קבעת בערכת ההתקנה - בשלב טי) קיצור דרך אל קוב ההפעלה של היישוס, אשר כולל את שס היישוס וסמלו. פרק 21: הכנת ערכת התקנה 377 נספח: התקליטור המצורף מה בתקליטור? = גרסת הלימוד של שפת הפיתוח 6 23516 !1503 - |006ס! טחואזס/ 6 23516 |הטפו * קטעי קוד המקור שבספר. >= מספר תוכנות עזר שימושיות. -06 כ/לכי! אס מנהל התקן כונן התקליטורים המותקן הוא 16 סיביות - ייתכן שתראה רק 8 תוויס ראשוניס של שס קובצ (במידה שהמקור ארוך יותר). הסיבה: כונני תקליטוריסם במהירות 4א עובדיס עס מנהל התקן שעבד בסביבת 025 ו-3.11 פשסטחו/ ויכול לעבוד גס עס 95 פ;שספחו/ו, למעט היכולת לוהות קבציס עס שמות ארוכים. הפתרון: להתקין מנהל התקן 32 סיביות (אס קייס), או לקנות כונן תקליטוריםס חדש ולוודא שמצורף אליו מנהל התקן 32 סיביות. אם אינך בטוח כיצד להתקין את התוכניות שבתקליטור פנה לאיש מקצוע. קרא את קובץ 06 שבתקליטור כדי לקבל עוד מידע לגבי התקליטור נספח: התקליטור המצורף 379 תקליטור זה מופעל באופן אוטומטי עם הכנסתו לכונן. אס התקליטור אינו מופעל באופן אוטומטי: 1. ודא שהתקליטור בכונן 2 בשולחן העבודה לחץ לחיצה כפולה על סמל המחשב שלי 3 לחצ לחיצה כפולה על סמל כונן התקליטוריס 4 לח לחיצה כפולה על הקובף 6א03001.6ס קרא קובץ 06 שנמצא בתקליטור לגבי תכולת התקליטור ולהוראות התקנה של חלק מהתוכנות המצורפות. התיקיות הרלוונטיות לספר התיקיות הרלוונטיות לספר זה הן: 4 שמכילה את קבצי קוד המקור הנמצאים בספר [006!! טחואזס// 6 28516 [בּ6/150זהּשש)501 שמכילה תוכנת 8 היכן נמצאות התוכניות של ספר זה? התיקיה הרלוונטית לספר וּה. 592/14 בתיקיה 8006559214.:א נמצאים רוב קטעי קוד המקור שמופיעיס בספר. קוד המקור נמצא בקבצי טקסט (4)). תוכל להשתמש בקבציס אלה כדי לבצע פעולת העתק והדבק לתוך חלון הקוד שבתוכנת 28516 |808ו/. בתיקיות אחרות תחת התיקיה 20065 נמצאים קבציס הרלוונטייס לספריםס אחריס של ההוצאה. העתקת קבצי המקור לדיסק לכל ספר יש מספר ייחודי, הבנוי מה-דאנאקוד, המופיע על העטיפה האחורית של הספר, והוא מתחיל בספרות 59 (לדוגמה 59315). מספר הפריט של ספר וה הוא: 59214 כדי להתקין את קוד המקור לחצ על קוד מקור וציין את מספר התיקיה 59214. התקנת קוד המקור פירושה העתקה (לא התקנה) של הקבצים מהתקליטור לדיסק הקשיח במחשב באישי שלך. 0 66ם/, - ערכת כלים לאחר שיועתק קוד המקור הוא יימצא בדיסק 6 בתיקיה 100..8006859214]. כדי להריץ תוכניות עליך לוודא שבמחשב מותקנת תוכנת 88510 |1808/. התקנת 0061 פחואוס/ 6 23516 |בהּטפו תוכנה זו הינה גירסה מיוחדת שהוציאה מיקרוסופט. היא אינה מלאה אך שימושית בהחלט. תוכל להריצ כמעט את כל התוכניות שבספר. מיקרוסופט והוד-עמי אינן תומכות בתוכנה. התקנת |006ו₪ פָחואזס/ 6 28916 |808ו/ דורשת כי דפדפן האינטרנט 6%חזסזחו זסזסוקא= יהיה מותקן במחשב (בגירסה 4 ומעלה). לצורך התקנת 6 28516 |1504 006 8ַחואזס/צ עליך להסיר את התקנת זפזס!|קאם 6%חז6זח! גירסה 3, אם קיימת, ורק אז לבצע את התקנת |06סו₪ פְחואזס// 6 28516 |808ו/. לתשומת לבך: במידה ובמחשב היתה מותקנת גירסה קודמת של זפזס|קא= 6%חז6)ח! צפויה במהלך ההתקנה להופיע תיבת דו-שיח המורה על התנגשות בין גירסאות. לשאלה האם ברצונך לשמור את הקובץ הקיים במחשבך השב כן וההתקנה תמשיך כרגיל. התוכנה ניתנת כבונוס ללא תשלום לרוכשי הספר הוצאת הוד-עמי אינה מספקת תמיכה במוצר. בדוק שמותקן דפדפן זו6וס!|קאם +6חז6+ח! במחשב לפני התקנת המהדר. התקנת |06סו₪/ פְחואזס/ 6 28516 |808ו/ מתבצעת באופן הבא : 1. ודא שהתקליטור בכונן 2 בשולחן העבודה לחץ לחיצה כפולה על סמל המחשב שלי 3 לחצ לחיצה כפולה על סמל כונן התקליטוריס 4. לח לחיצה כפולה על הקוב 6א6.ו1חחה סח. 5. לח על התקנת תוכנות. 6. לחצ על לחצן האפשרויות ליד אני מאשר את תנאי השימוש בתקליטור. 7 לח המשך. 8 פתח את התיקיה !₪066 שַחואזסצ 6 23516 [503ו/. 9. בחר בקוב 6א56+00.6 ולח על פתח. 0. בתיבת הדו-שיח הפעלה לת על אישור וההתקנה תחל. 1. במסך הראשון : !18006 פַחואזס/ 6 23516 |1503/ לתצ על +א6א. נספח: התקליטור המצורף 381 .12 .3 .4 .5 .6 .7 .8 9 .0 .1 2 במסך השני : +66006₪ז)/ 11667056 501 0חם בחר: 6+ +ק36606 | זה ולח על +א6א. במסך השלישי: ₪! 56 30 זסטוח טא +006זק הקלד את שמך ולתצ על +%א. במסך 06001198 !15481 ודא שתיבת הסימון מסומנת ולח על +א6א. לאחר התקנת הרכיב 060098 תוכנית ההתקנה תודיע שכעת יש לאתחל את המחשב מחדש. לח על 0. לאחר שהמחשב יעלה מחדש, תימשך ההתקנה. המסך הבא שיופיע הוא 60056 ז וס |!5%ח! הסוחו 0ס6. בדוק אס המיקוס והנתיב שמציעה תוכנית ההתקנה מתאימים לך. אס לא, לח על 270886 ובחר מיקוס אחר. כעת כשהמיקוס והנתיב מתאימים, לת על +א6א. במסך : 56400 !₪006 טחואזס/ 6 28516 |ה180/ תופיע הודעה שיש לסגור כל יישוס פתוח (למעט תוכנית ההתקנה), עשה זאת (באמצעות לחיצה על לחצן היישוס שבשורת המשימות) ולחץ על 06ח%1ח60. בשלב הבא לח על 06 והמתן בעת שתוכנית ההתקנה מחפשת רכיבים מותקנים. במסך הבא שיופיע בחר בסוג ההתקנה. אס יש לך מספיק מקוס בדיסק שבחרת בחר בהתקנת |אסוסעד. אס תוכנית ההתקנה תבקש להחליף |!₪ ענה סא ואחר כשתשאל אס ברצונך להשאיר את הקבציס כמות שהס ענה 65ץצ. בשלב זה תתבקש לאתחל את פעוססחו/ מחדש, לת על 5עשסח!:/ +365+31. כשהמחשב יייעלהיי מחדש תופיע תיבת דו-שיח המאפשרת רישום עותק התוכנה באמצעות האינטרנט. פעל לפי ראות עיניך. ספר זה מבוסס על גרסאות 86וזכז6)חם |- |8ה0סו701655ק של 6 28516 |בהטפו ומתאים לעבודה גם בגרסת 0ז08ח5%3, למעט גרסת !₪006 טחואזסצו (קוד המקור לא נבדק בגירסה זו). 2 6658ם/, - ערכת כלים קטלוג ספרים כדי לצפות בקטלוג העדכני ביותר ולצפות במבצעיס המיוחדים מומלץ לבקר באתר האינטרנט של ההוצאה בכתובת !60.1.וחחהּ-סח.ש/שצו. עיון בקטלוג ספרי המחשביס של הוצאת הוד-עמי כולל: > תוכן עניינים מלא של הספר + פרק לדוגמה * מגה-אינדקס לחלק מהספריס את כל המידע ניתן לראות וגס להדפיס. לצורך זה יש להתקין את תוכנת זז מהתפריט התקנת תוכנות (ראה התקנה בהמשך). הקטלוג מומלץ לצפיה ברזולוציית מסך של 800א600. הקטלוג מומלצ לצפייה באמצעות 5 זפזס!|קאם +9706+ח! ומעלה. הדפדפןו מצורף בתקליטור. כדי להתקין אותו בחר בתפריט התקנת תוכנות ובחר באפשרות תוכנות נוספות (ראה התקנה בהמשך). זו +003ו6 - התקנה 1. ודא שהתקליטור נמצא בכונן התקליטורים 2 בשולחן העבודה לחצ לחיצה כפולה על הסמל המחשב שלי 3 לחצ לחיצה כפולה על סמל כונן התקליטוריס 4 לח לחיצה כפולה על הקובף 6א3₪01.6ס 5 לחץ על התקנת תוכנות 6. לחצ על לחצן האפשרויות ליד אני מאשר את תנאי השימוש בתקליטור 7 לח המשך 8 לתצ על 368007 +008ו0 9. אשף ההתקנה מתקין את הרכיבים הנדרשים. במהלך ההתקנה עליך ללחוצ על +666// ,+א6א ו-+א6א פעם נוספת כדי לבצע את ההתקנה. 0. בסיוס ההתקנה עשויה להופיע על המסך תיבת דו-שיח התנגשות בין גירסאות ומייד אחר כך להיעלס. על המסך תופיע תיבת הודעה של תוכנית ההתקנה. לתחצ על אישור. בתיבת הדו-שיח התנגשות בין גירסאות לח על כן, כדי לשמור את גרסת הקוב שלך. נספח: התקליטור המצורף 383 מה עוד בתקליטור? הוצאת הוד-עמי מפיצה תוכנות אלו כבונוס ללקוחות ההוצאה, ואינה מתיימרת לגבות תשלוס עבור התוכניות המצורפות ו/או לתמוך בהס. ם אזהרה: השימוש בתקליטור זה הוא על אחריותו הבלעדית של המשתמש. המוצרים המותקנים בתקליטור זה מסופקים באחריות החברות המייצרות אותם. הוצאת הוד-עמי אינה אחראית, בכל צורה שהיא, לאופן ולטיב התוכנות המותקנות. בכל שאלה לגבי תוכנה הנמצאת בתקליטור, יש לפנות למפתחי התוכנה (כל תוכנה בנפרד) כפי שמצוין בקבצי העזרה של התוכנה המדוברת. הקבציס הס גרסאות שיתופיות (6\876ז8ח5) וחופשיות (66/816ז=). גרסת 50876\876 מאפשרת לך, המשתמש, לבדוק את יעילות התוכנה ואת תאימותה לעבודה אותה אתה מבצע. אס נמצאה התוכנה מתאימה לצרכיך, עליך לשלס למפתחיה תשלוס סמלי (לפי הרשוס בקבצי העזרה של כל תוכנה ותוכנה בנפרד) כדי לקבל רישיון מלא לשימוש בה. קבלת רישיון לשימוש בתוכנה יפתח בפניך מיגוון אפשרויות שלא עמדו לרשותך בהפעלת גרסת ה-876/976ח6. 4 68ם/, - ערכת כלים התקנת תוכנת גלישה לאינטרנט 6 זס'זס|קא= +6חו6+ח! +0ס5סזסוו גירסה זו של זפזס!קא= 61חז6)ח! המצורפת בתקליטור, מיועדת להתקנה אך ורק במערכות בהן מערכת ההפעלה היא 98 פשוסטחו\ ומעלה ובעברית מלאה (לחצן ''התחל'' בפינה הימנית התחתונה של המסך). אין אפשרות להתקין גירסה זו במחשב בו מותקנת מערכת ההפעלה 95 פ/שססחו/צ. אם תנסה להתקין גירסה זו במחשב בו מערכת ההפעלה אינה עברית אתה עלול לגרום נזק למערכת ההפעלה, דבר שעשוי לדרוש ממך התקנה מחדש של מערכת ההפעלה והתוכנות הנלוות. אס יצאת מממשק התקליטור: 1. ודא שהתקליטור נמצא בכונן התקליטורים. 2. בשולחן העבודה, לח לחיצה כפולה על הסמל המחשב שלי. 3 לת לחיצה כפולה על סמל כונן התקליטורים. 4 לת לחיצה כפולה על הקובף 6א6.וחוה3 ססח. 5. לח על התקנת תוכנות. 6. לחצ על לחצן האפשרויות ליד אני מאשר את תנאי השימוש בתקליטור. 7 לח המשך. 8 לחצ על תוכנות נוספות. 9 מצא את התיקיה 816|₪61386ש)501 ובחר בקוב בשס 6א50+00.6. 0. לחצ עליו לחיצה כפולה. 1. לתצ על לחצן אישור. 2. פעל על פי ההוראות שעל המסך. נספח: התקליטור המצורף 385 ההא 5+הס- קוב זה יתקין במחשב 2 גופנים בעברית לשימושכס. בסיוס ההתקנה יש לבצע את הפעולות הבאות : 1. לח על התחל, הצבע על הגדרות, ובחר בלוח הבקרה. 2 לח לחיצה כפולה על הסמל גופנים. 3. פתח את תפריט קובץ ובחר באפשרות התקנת גופן חדש. 4 עבור לתיקיה 8₪ 260 5+חס=:0. 5. לח על לחצן בחר הכל (סהייכ יש בתיקיה 2 גופנים). 6. ודא שתיבת הסימון העתק גופנים לתיקיית הגופנים מסומנת. 7 לח אישור. 8 סגור את חלון התיקיה 5)חס=. 9 סגור את חלון לוח הבקרה. כעת, מוכניס הגופניס לשימוש בכל התוכנות המותקנות במחשב שלך: 6זס/, |08א, 1חוסקז6/צסק וגס בתוכנות גרפיות, כגון סז קסח5 +חו8ק ו-קסתפסזסתק. הגופניס נקראיס קט!-|חחד ו-5160-|וחחד ויופיעו בתחתית רשימת שמות הגופניס (בדרך כלל). הרי דוגמה שלהס: כק5+6-|וח ד א דוי אכ ל 20 פי 34 עור 50 4557 3 קוענ-וחחד דהוזהטיכררמםןסעפף<ץְגָרשת 1234567890 6 6ם/, - ערכת כלים תיקיה ראשית סַזב3ּ))501 (רשימה חלקית ועשויה להשתנות) שם תוכנה תיאור קוב הפעלה מבצע 0006 | תוכנה לצפייה בקבצי ]00, .ויה | התקנה כולל תמיכה בעברית | תוכנה לתקשורת אישית ו-010-20038-3800 00| | התקנה באינטרנט 6 ]0-1 5ס דוש/וסק=1 | תוכניות שירות עבור 6 10 | פריסה זסזסוקאם 66חזססח1 קוההחוצ | תוכנה להשמעת קבצי 3קו! 6 ווט-0 3קוחהחוש | התקנה (מוסיקה) מו2חו/ | תוכנית לפריסה/דחיסה של 2868 חו | התקנה קבציס נספח: התקליטור המצורף 387 שאלות נפוצות בחלק וה של התקליטור תמצא אוסף של שאלות נפוצות ותשובות במיגוון נושאים: איך מחפשים בספרז כיצד מזמינים ספר דרך האתר באינטרנט! למי פוניס בבקשת תמיכה! האם ניתן לבצע הומנה טלפונית! וכדומה. הערה חשובה ! הוצאת הוד-עמי אינה תומכת בתוכנות המסופקות בתקליטור ה. התוכנות ניתנות ללקוח כבונוס, לשימושו האישי, והן מסופקות 5|-6 כפי שסופקו להוצאת הוד-עמי על ידי יברן התוכנה. התמיכה ניתנת ללקוחות ההוצאה בנוגע לספריס הרואיס אור בהוצאה. ניתן לשאול שאלות, להציע הצעות ולבקש עזרה בהפעלת קוד או קוב המוזכר בספר. מחלקת התמיכה של הוצאת הוד-עמי אינה תומכת ביישומיס ובתוכנות המסופקות בתקליטור. צור קשר תוכל ליצור עמנו קשר באמצעי התקשורת הבאים: טלפון: 09-9564716 פקס: 09-9571582 דואר אלקטרוני בנושא כללי: |ו.סס. וחז00-8ח6סזחו דואר אלקטרוני בנושאי תמיכה: |ו.1.60הח00-8ח169וסססוופ אנשי התמיכה שלנו ערוכים לתת לך את העזרה הדרושה לך בשימוש בספר. אין אנו נותניס תמיכה הקשורה בתוכנות המצורפות בתקליטור. בפנייתך אלינו לקבלת תמיכה, אנא הצטייד בנתוניס הבאיס : 1. שמו המלא של הספר 2. מספר דאנאקוד, כפי שמופיע על הכריכה האחורית של הספר (למשל בספר זה 259-10214) 3 פרטים מדויקיס של הבעיה (הכוללים מספר פרק, מספר עמוד, שם קובצ) 4. אמצעי קשר בו נוכל להשיג אותך: טלפון נייד, פקס, |ו3-=. 8 66ם/, - ערכת כלים אס יש לך שאלה או הערה בנוגע לספר מספרי הוצאת הוד-עמי, נשמח לשמוע ממך. יש מספר דרכים בהן תוכל להעביר לנו את הערותיך: בדואר אלקטרוני: |ו.1.00הח00-8ח162זססספ בפקס: 2(" בדואר: ת.ד. 6108 הרצליה 46160 בפנייתך אנא ציין את הפרטים הבאים: שמו המדויק של הספר, מספר עמוד, מספר שורה מלמעלה/מלמטה, מה לא בסדר, מה לדעתך צריך להיות. תודה רבה שבחרתס הוד-עמי טלפון: 09-9564716 פקס: 09-9571582 אתר באינטרנט: |ו.60.וחח6-8סח.שאצש//:כף1ח דואר אלקטרוני: |ו.00. וחז00-8ח60סזחו פנה לקוב סם. 60א0 לפרטים נוספים על תכולת התקליטור. נספח: התקליטור המצורף 389 אינדקס 600470!5 19, 31, 5 6, 65 20%א0060 6, 65 אסםססוה0ס) 5 60, 63 מ0סא 0 ח8 וו 60 3 800 חסוח ו 60 818 260 ,71 ,7 6, 70, 199 אסםזפו |זום 6, 70, 198 800% |סצוזס 7 ז6א6וק דס 6, 70, 199 810% 61!ו= 23 פוח8ז- 6, 69 ז150670!!58] 7, 71 6ףְהח| 6 00 80600ח| 9 5% 8001ח| | 308| 127 ,59 5 7, 71 6חו | 6, 66 א0ם81! | 7 שוסו/חזחסו 015 7 6, 65, 73, 113 הסצטםהסוזקס 5, 58 אסםסזטזסוק 5 ז6זחוסק 9 ז8ם!||סז50 508086 70 ,6 4 ח6ס00)עוסחס 5 127 א0ם]א6ך 6, 69 זפחחוך 3 ז8ם|ססך 6, 69 ז8ם!||סזסס/ פ5חסוזסחט) 3 חזסאוסו/ +א6ך |קה 9 ()ץ8זזה 7 ()2768%6020[60%) 3 ()זוסזווס 6 ()זו0 3 !וס אינדקס 391 8 ()₪0=0 9 ()ע6000!ו= 9 ()6חו 28167 16= 7 ()0ח1!61.6= 0 ()6!ו-66= 0 ()20%) 3 ()זטסח! 3 ()5ח! 6 ()חו 7 ()50816! 1 ()0ַחו85ו5/1! 7 ()ווטא8! 5 ()סוז6חטצ5! 1 ()סחטסס | 2 ()6%.] 1 ()ח6. | ]00)( 9 /0-)( 7 6 ()וחוזד | 2 ()6ו 2 ()1ח₪9 5 ()חחחד 3 ()5666 1 (()59%6 2 +69 דעס סחו/501 5 ()חחוזד 0 ()0חטסטנ 6 ()0856 6 ,81 65ז6קסוס 1 +חסותחסו|ה 1 06ח688ססה 9 105126 2 ז0ס|00א080 0 ₪0 2, 130 07007506 4 |06ח608 9, 59, 82, 216 חסוזק8ס 7 00608660 2, 130 א000ז1ח0ס6 2 658ם/, - ערכת כלים 1 86 6%וו-זהכ 4 6%901%כ 80160 218 ,84 ,2 50 0 0 6וע5!!וו= 2 %חס= 3 זס|660זס 610% 3 3, 217, 283 א06ח! 3 06| 1 תחֶח6. !אהו 4 ז0זחוס גוסו 0 6חו |טוטוש 6, 200 561601 !ו 7 6וחהּא 4 הסנ |/!סצז 1 זהח00זס/855 0 ח867ק 1 6600000 1 601-666 4 61 901701 0 ז8ש!||סזסס 588% 4 2 ח0%ח6 ||50 2 !59 0 5806 4 א6ח|ספ8ך 4 ס805%00ך 4 %א6 דקוד|ססך 4 ססך 5, 85, 218 1810!8/ 9 ס8ז/זס/ 0% 5 אינדקס 393 עו 227 |ס]חסס 238 יבירת פרויקט 239 | 227 הידור 231 קובצ דוגמה 231 זס/צסו/ +א6ד |קג 333 6 )050%ז6ו!/| 247 סזס)\ 248 ם 248 א אובייקט 31, 247 00[60% אופרטור חשבוני 112 0 שוויון =: 172 <> 121 שונה < 121 גדול > 121 קטן =< 121 גדול או שווה => 121 קטן או שווה + 112 חיבור - 112 שלילה/חיסור * 112 כפל / 112 חילוק 115 חילוק שלס * 117 חזקה 60 117 שארית (מודולו) השוואה 120, 252 חספוזהקוחסס סדר קדימות 118 6] 06ח660606ז אופרטור לוגי 121, 123, 253 זס)9ז6סס |הסוףָסו 0 121 וגם 1 122 לא זס 121 או אופרטור שרשור - 6 123 אופרנד 112 איבר 135 %ח0|6₪06 אינדקס 135 א6סחו 4 8 6ם/ - ערכת כלים משפט 2856 חהסטק0 136 אירוע 45 %ח6/6 אסו|0 73 ארגומנטיס בשיגרה 166 העברת ארגומנטיס לשיגרה 168 ארגז הכלים 31, 55 אספוססדך ב ביטוי חשבוני 112 חסו655זקא6 ס6ו6חחחזוזה (ראה אופרטור חשבוני) ביטוי מותנה 120 (ראה גס מבנה החלטה) חסחז..1! 122, 129 מורכב 121 ד דוח 311 +0ס6ז 311 )1/5%9| 6008 6 בחירת מסד נתוניס 315 הדפסה 331 הצגה 330 חלק 324 ח56000 יצירה 311 סוגיס 313 שדות 327 שלביס בבניה 314 דפדפןו האובייקטיס 35 זספשוסזם 601[טס ה הדפסה 210 טופס 211 שליחת פלט 210 הצהרה (ראה משפט/מערך) הצהרה כללית 136 ח0סו060!3780 |818ח06 התקנה, ערכה 359 תוכנית התקנה - סז28ו// זחסווץסוק6כ 86 0806806 363 ז זמן עיצוב/פיתוח 24 6חו ח0ו00659 זמן ריצה 24 6חח חוז אינדקס 395 ח חלון המאפייניס 20, 34 ששססחושש 65וזסקסזס חלון המתאר 35 שספחוצש זטסע8! חחסז חלון הפרויקט 32 זסזס|קא6 601[סזס ט טבלה (ראה מסד נתוניס) טופס 19, 26 חזס1 החזס-זחווק 211 הדפסה 211 שירות שסח5 131 ל לולאה 157 סססו קססו..00 158 וחט..00 158 6וח/צ..00 157 +אסח..זסז 159 אסח.. 6800 זסז 162 ארגומנט 0ח6 159 רסחו 159 1 159 יציאהח מ- 163 0 זו 163 זס]|א 163 מונה לולאה 159 ז16חט60 סססו מקוננת 161 85%60ח מ מאפיין 81, 216 עץזזסססזס 1חסוהחטו|ה 81 6 סק 81 6 59 זס|00א80 82 0 280 86 82 130 |06ח08 64 ח0ק08 19, 59, 82, 216 כותרת/כיתוב 0 217 אסם!סזחס 82, 130 6 6ם/, - ערכת כלים סוה סוו-ו8ם 331 80 64 0 82 84 218 0 280 6 70 זחס- 82 זס|ס66זס- 83 ור 83 א6סח| 83, 217, 283 % 83 חזסֶחס |אה8ו 61 זסזחוס 6פוסו! 84 6חו !וטו 60 ,1 66, 200 סח 217 חסז8ו/סצ] 284 זס/855ק 61 חז8%06ק 200 30 281 6 אוו סק 331 ו 84 ז|סז0ס 60 6% 284 הזחה ||8 62 | 62 8 70 א6סח|ספהך 84 500 30ך 84 דסו דו|ססד 84 טקסט תיאור הכלי קסד 84 6 75, 85, 218 ספז/שזס/\ 59 וזו\ 85 קביעה 41 78 מבט עיצוב 26, 323 60%[סס שסוצ מבט קוד 26, 44 0006 עוסוצ מבנה 337 06 מבנה החלטה (ראה גם ביטוי מותנה) 6 088586 155 1 152 אינדקס 397 הסח .זו 122, 129, 147 86. סח .זו 147, 150 86 764, 114, 147, 153 משפט תנאי עס משתנה אחד 149 מבנה המוגדר על ידי המשתמש 95 6קץד 60ח88כ-ז50!( מדפסת 210 זס6זחוזס מודול 32 00016 הצהרה על פונקציה 341 מחלקה 228 6!ט00סח 0!3585 אירועיסם 228 6/60%8 מאפיינים 228 65ו6קסזס משתניס 228 6065 0818 שירותים 228, 230 610005 מחרוות 58 8ַח9%0 פונקציות 191 מטריצה 138 מילה שמורה 6סזק 144 מילת מפתח 1 108 ממשק משתמש, יצירה 41 מסד נתוניס 259 סַפַהַּּוהכ אינדקס 267 הוספה 268, 292 מחיקה 292 בניה 261 דוח 315 הפניה לשדה בטבלה 275 הפניה לשדה בשאילתה 276 טבלאות 259 80!65) בניה 263 הוספה 290 הוספת שדות 265 הפניה לשדה 275 מחיקה 291 פתיחה 275 עריכה 269 קשרים 316 טרנוקציות 287 יצירה 262 8 66ם/, - ערכת כלים מרוחק 274 ניהול בזמן פעולת התוכנית 289 ניהול משורות הקוד 272 סגירה 292 פונקציה ()זוסזוס 273 פתיחה 272 רשומות 259 8600105ז איתור 283 דפדוף 279 עריכה 277 שדה 259 !18 הוספה 291 שינוי נתוניס 291 תוכנית 808%3ו/ 262 מסך, מרכיבים 24 מערך 135 ע9ז81 אינדקס 135 א6סחו גבולות, קביעה 136 גודל 142 דינמי 142 6ווחהחץ הגדלה 142, 143 הצהרה 135 השמת ערכים 137 חריגה מהתחום 140 מטריצה 138 מימדים 138 פונקציה ()ץ8זז 139 מערך פקדים ‏ 72 בניה 72 מתי משתמשים 72 סדר 73 שימוש בכתיבת קוד 73 מקש גישה 216 משפט חחוס 97 0 132 6 חסוק 136 זוסווקאם חסוזק 87 החוכ36 143 8 349 אינדקס 399 ]א 305016 350 6% 183 0 132 משתנה 87 8וסאוְפ/ 247 +חהוחה 88 אורך חייס 100 8 | אתחול 111 ח09|280%0וחו בוליאני 90 ח68|ססס המרת סוג 92 הצהרה על 97 86ז 102 סו|סטוק 102 ברמת האובייקט 100 ברמת הטופס 101 ברמת המודול 102 סוגיס 100 טווח הכרה 100 50006 טווח ערכיס 89 מבנה המוגדר על ידי המשתמש 95 מחרוזת 90 מספרי 89 מקומי/לוקאלי 100 משפט זוסו!קאם הסוס 87 סוגיס 89 סטטי 104 51806 ערכיס (ראה ערך) פונקציות המרת סוג 93 פונקציות לבדיקה 125 פקודת השמה 111 חסוזסטזופחו +חסו ח0ו855 קבוע 108 0005%801 קידומת 99 שס 98 חוקי 99 לא חוקי 99 0 66ם/. - ערכת כלים נ נוסחה כתיבה 325 עורך 325 נקודת אחיזה 58 0!6ח88 נקודת עצירה 353 %חו0קא68זם 099|6סז ס סרגל הכליס 29 זם|ססדך בקרת לחצן משורות קוד 309 הוספה ליישוס 299 הוספת לחצנים 304 הוספת פקד 75 קביעת מאפייניס ללחצן 306 ע עורך 28 זס+ו(60 ערך שקוחם 94 ריק וטא 94 איו 6 90 פ פונקציה ז/צסו/ א6ד |שג 333 ()ץפזזה 139 (276816020[60%) 247 ()זוסםזטס 273 ()זוס 186 333 500 188 (0ץ6000!ו= 189 6וחו 83167 189 ח6 ]וו 187 9-8 190 190 סח 183 זפח! 193 1חו 116 68 127 ( ( ( ( ( ( ( ( ( )מָחו55ו/5! 171 ) ) ) ) ) ) ) ) ) אינדקס 401 ו|טאפ| 127 6 ]| 125 בחטסם ]| 141 וה 192 חחזדה 195 א 183 )5 191 6 זשססחו/6 342 ()וחוזד 195 ()0חטססנ) 140 ()00896) 196 בדיקת משתניס 125 התחזרת ערך 172 המרת סוג משתנה 93 הצגה 336 הצהרה במודול 341 חיפוש 335 מחרוזות 191 סטטית 106 פונקציה קוראת לפונקציה 351 קריאה משורות קוד 341 פיתוח יישוס 39 שלבים 19, 39 פקד 19, 31, 55 |סז1חסס א0םא090 56, 65 תיבת סימון א0םסטח 00 56, 65 תיבה משולבת הסזז םחו 60 55, 60, 623 לחצן פקודה ו וו 00 203 8 57, 71, 260 נתונים אסםזפו |זום 56, 70, 199 תיבת רשימת תיקיות אסםז9! |6צוזם 56, 70, 198 תיבת רשימת כונניס זסאסוקדס 57 אסםז9! ]6!ו= 56, 70, 199 תיבת רשימת קבציס אחז 63 מסגרת 2 65ם/, - ערכת כלים וס 50 56, 69 6 57, 71 דמות/תמונה 0 86| 66 % הח 299 בחירת תמונה 301 קביעת גודל תמונה 300 ו1806 55, 59, 127 תווית 6חו]| 57 71 קו אסםז9! | 56, 66 תיבת רשימה צוסו/חזחסו 57 5 57, 71 קישור והטבעת אובייקטיס חסאטםפחסטסכ) 56, 65, 73, 113 לחצן אפשרויות אספסזו סו 55, 58 תיבת תמונה זסזחוסם 55 ז!|סז0ס 69 פס גלילה 86 56, 70 צורה ח6ק0)/שסח5 204 אסם)א6ד 55, 127 תיבת טקסט זסוחוד 56, 69 ז8ם|ססד 303 זפווסזספ/ 56, 69 הוספה לסרגל הכלים 75 לחצן פקודה 19, 41 חס 80 60 מאפייניס (ראה מאפיין) מיפוי דיסק 197 מערך 72 (ראה מערך פקדים) קידומת מקובלת 42 שילוב פקדים 201 שימוש 57 תווית 19, 41 |806! תיבת טקסט 19, 41 אסם)א6ד פקודות קלט/פלט 127 תיבת פלט 128 א0ם 80 תיבת קלט 127 אסם)טסח! פקודת השמה 111 חסוסטזשפחו +חסות0ו855 פרמטריס בשיגרה 166 אינדקס 403 ק קוב 179 0חססק 182 185 850 179 | 227, 231 =םאם, יצירה 359 )סחו 180, 183 )וסוס 181, 185 זחחק 185 2% חו\ 334 בינארי 179 גישה אקראית 179 טקסט 179, 180 כתיבה ל- 185 סגירה 185 פונקציות 186 פתיחה 180 קריאה מ- 182 משפט זטסח! 6חו1 182 קוד אוטומטי 48 כתיבה 44 מערך פקדים 73 מבנה 49 קלט/פלט 127 תיבת פלט 128 א80 50 תיבת קלט 127 אסשוטסח! ש שאילתה 251 בחירה 251 50|60% ביצוע 256 מחיקה 257 סוגים 251 סיכוס 255 קריטריונים 252 שגיאות, טיפול ב- 345 זס|סחהּרזזם 346 זסזזם חכ) 346 8 349 4 6ם/. - ערכת כלים ]6 65006 350 מנפה 3552 זִסִָָ0600 מספר 347 פתרון 347 תיאור 2348 שורת מצב 59 ז08 518105 שורת תפריטיס 24 זהףּםטחסו שיגרה 165 6חחטסזסט5 )אס 177 ()החטאזהוזק 171 ארגומנטיס 166 רשות 170 ברמת האובייקט 174 אירועים 174 ברמת הטופס 175 86זז 175 176 סוופטס 175 ברמת המודול 177 הוראה ||68 165 העברת ארגומנטיס לשיגרה 168 3% 168, 170 לפי ייחוס |8/ץם 168 לפי ערך מבנה 165 סוגיס 174 פונקציה, יחס 172 פונקציה פַחו85ו/51|. 171 פרמטרים 166 רשות 170 שירות שא 277 68 278 8% 277 0חו-₪0 248 86 289859 %ו ות 285 % הח 286 +6%אחו= 285 הו 286 86 133 ס6צסו 281 אינדקס 405 זו עסו 279 1 פטסו 279 :אסא]סטסו 279 5 סו 280 0-ה 276 80%]||ס 288 שסחס 131 86 278 שפת ]50 251 שרשור (₪) 123 ה80%0ח00708%0 ת תוכנית התקנה - 0ז28ו/ זחסהוץסוק6כ 8 80986ק 363 תיאור כלי 29 קודוססד תיבת דו-שיח 203 זס|ס/שסח5 206 חס- סח 207 ח6ק)/שסח5 204 זסזחוזק /שסת5 209 86 סח 205 תיבת הודעה מותאמת אישית 130 תיבת פלט 128 א0שף5! תיבת קלט 127 אסםזטסח! תכנות מודולרי 166 8חוהחוחהזחָסז ז3!טוססוח תכנות מוכוון אירועיס 45 תמונה 299 תנאי (ראה מבנה החלטה וביטוי מותנה) תפריט 213 354 0009 214 24 6 ]חס 214, 216 קטקסק 220 מקוצר/קופצ חטח 25 בניית היררכיה 214 הוספה באופן דינמי 219 מאפייניס 216 עורך 213 זסזו60 תת-תפריט 215 6 65ם/. - ערכת כלים