PracticU

פרויקט ב-#C - מחשבון פשוט - חלק 17

בלי כתוביותעם כתוביות
PracticU › פרויקט מעשי ב-#C - בונים מחשבון פשוט › פרויקט ב-#C - מחשבון פשוט - חלק 17
מילון מושגים:
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.

פרויקט ב-#C - מחשבון פשוט - חלק 17
בשיעור הזה מסיימים את טיפול הפסיקים במחשבון: מסירים את הפסיקים לפני כל עדכון, מחשבים אותם מחדש כשהאפשרות Digit Grouping מסומנת, ומטפלים בחריגות שהתוכנה זורקת כשהקלט לא תקין.
השלבים העיקריים
1. הסרה והחזרה של הפסיקים: בתחילת הפונקציה מסירים את כל הפסיקים מהטקסט. אם Digit Grouping מסומן, מחשבים ומכניסים אותם מחדש. כך כל שינוי במצב הסימון מיד משתקף בתצוגה.
2. Backspace ופעולות נוספות: אחרי Backspace, אחרי כל ספרה חדשה ואחרי פעולות כמו שורש ו-1 חלקי, קוראים שוב לפונקציה HandleDigitGrouping. הפונקציה נוצרה מהקוד של לחיצת הפריט, כדי שאפשר יהיה לקרוא לה ישירות ולא דרך לחיצה מדומה.
3. חריגות: פעולה שמייצרת מספר לא תקין, למשל מחרוזת כמו 1E-7 ב-float.Parse, גורמת לקריסה. עוטפים את הקוד ב-try ו-catch, כדי להציג למשתמש הודעה במקום קריסה.
4. הודעה מפורטת: בתוך ה-catch מציגים את ex.Message ואת ex.StackTrace באמצעות string.Format. אפשר לעשות את אותו דבר גם בחיבור מחרוזות עם +.
5. תיקון המינוס: מספר שלילי מכניס תו נוסף בתחילת המחרוזת, ולכן מיקום הפסיק צריך להתאים. משתנה isNegative מוסיף אחד למיקום כשהמספר שלילי.
פקודות והגדרות
- TextBox1.Text.Replace(",", "") מחזיר מחרוזת חדשה ולא משנה את המקורית.
- try { ... } catch (Exception ex) { ... } לטיפול בחריגה.
- string.Format("{0} {1}", ex.Message, ex.StackTrace) להצגת פרטי השגיאה.
טעויות נפוצות
- כשהתוכנה רצה מתוך Visual Studio החריגה נעצרת בדיבאגר. מחוץ לסביבת הפיתוח המשתמש רואה רק את ההודעה, ולכן חשוב לתפוס את החריגה בקוד.
- לפני שמשנים את מיקום הפסיק צריך לוודא שמספר שלילי לא נספר כספרה.
בסיום השיעור התלמיד יודע לעדכן פסיקים לפי מצב התפריט, לתפוס חריגות ולהציג הודעה ברורה למשתמש.
השיעור הבא בקורס: פרויקט ב-#C - מחשבון פשוט - חלק 18

פרקי ההרצאה: פרויקט ב-#C - מחשבון פשוט - חלק 17

  1. 00:00

    הסרת פסיקים כשהאפשרות כבויה

  2. 00:43

    שימוש ב-Replace להסרת הפסיקים

  3. 01:45

    בעיה: מחיקה משבשת את הפסיקים

  4. 02:24

    הוצאת הקוד לפונקציה נפרדת

  5. 04:06

    קריאה לפונקציה אחרי Backspace

  6. 06:20

    קריאה לפונקציה גם אחרי שווה

  7. 07:51

    קריסה של Float.Parse על קלט לא תקין

  8. 11:26

    טיפול בחריגה עם try ו-catch

תמלול ההרצאה: פרויקט ב-#C - מחשבון פשוט - חלק 17

הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט ב-#C - מחשבון פשוט - חלק 17» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:06

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

  2. 00:29

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

  3. 00:55

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

  4. 01:24

    לא משנה את הסטרינג המקורי הוא מחזיר סטרינג חדש אז נשכפל את זה, קופי רווח שווה רווח, פייסט ו-F5 אז נגיד לו 1, 2, 3, 4, 5, 6, 7, 8, 9 עם ובלי מצוין עם ובלי טוב הדבר הבא זה לטפל בבקספייס אז אם נגיד לו דיג'יט גרופינג ואז נגיד לו

  5. 01:59

    בקספייס אז המספר נהרס למעשה אם עכשיו אני אגיד לו דיג'יט גרופינג בלי דיג'יט גרופינג עם אז יעשה את זה נכון זאת אומרת אם אחרי כל בקספייס אני פשוט אפעיל את הפונקציה שתבדוק אם זה צ'ק ואם זה צ'ק אז היא קודם כל תסיר את הפסיקים ואחרי זה תחזיר אותם אז הכל יהיה מצוין אז האמת הדבר הכי פשוט זה שכשאני לוחץ על Backspace

  6. 02:28

    פשוט לעשות Perform Click ל-Digit Grouping. הבעיה אם אני אעשה לו Perform Click הוא גם יחליף את ה-Chubchik אז זה לא יעבוד כל כך טוב. אז מה שאנחנו צריכים באמת זה להוציא את הקוד של ה-Click לפונקציה נפרדת.

  7. 02:44

    אז בואו נעשה את זה. אז שיפט F5 ונגדיר פונקציה שנקראת HandleDigit Grouping ונגיד לו לייצר אותה generate methods tab for handle digit grouping בתוך פורם אחד כן, קליק, ואז אם נגלול קצת למטה נגלה שהוא כתב לנו כאן למטה את הפונקציה אוקיי, אז את כל הקוד הזה אנחנו ניקח ctrl x עשיתי ונדרוס את הthrow ונעשה פה paste

  8. 03:25

    יש פה רווח מיותר, יפה, אז בואו נראה אם זה עדיין עובד, אם לא הרסנו שום דבר, נריץ אחד, שתיים, שלוש, ארבע, חמש, שש, שבע, שמונה, תשע, עם, אמרתי לו תשע?

  9. 03:42

    תשע, ובלי. ואם, מצוין. טוב, אז עכשיו כשאני אומר לו Backspace, אמרנו אני רוצה לקרוא ל-HandleDigitGrouping.

  10. 03:54

    היא תראה שאני צ'ק. עכשיו, היא בכל מקרה תסיר את הפסיקים, אבל מכיוון שאנחנו צ'ק, אז היא תחזיר אותם, אבל במקום הנכון, לפי חישוב מחדש. אז בואו נלך ל-Backspace, בוא נעצור את הריצה backspace ונגלול פה למטה בסוף בסוף בסוף כאן נגיד לו handle handle digit grouping יפה בוא נריץ ואחת שתיים שלוש ארבעה חמש שש שבע שמונה תשע עם ובלי

  11. 04:44

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

  12. 05:08

    אחרי כל הוספה בעצם נקרוא ל-Digit Grouping ל-HandleDigit Grouping אז הוספה, בואו נצמצם רגע Outlining ו-Collapse the Definition מצמצם לי, באמת שאנחנו צריכים קצת לעשות סדר בקוד שלנו אנחנו מחפשים את נומרה, אז דרך אגב יש פה גם משהו מאוד נוח פה אני יכול גם לאתר את כל הפונקציה שכתבתי אז איפה היא? הנה Add Numerals

  13. 05:33

    יפה, נפתח אותה נגלול קצת למטה אז למעשה אחרי הכל אני רוצה גם לקרוא להנדל דיג'יט גרופינג בואו ננסה את זה הרץ ואחת, שתיים, שלוש, ארבע, חמש, שש, שבע, שמונה, תשע דיג'יט גרופינג בסדר

  14. 05:58

    Backspace בסדר עכשיו אני אוסיף תווים זה נראה מצוין אוקיי וגם נקודה עשרונית וכולם אני חושב די מאושרים מה לגבי המספר הזה ועוד המספר הזה אה אז אחרי שווה בעצם גם צריך לעשות handle digit grouping אז בואו נעשה את זה גם בשווה אז בסוף השווה array confirm float גם

  15. 06:39

    handle digit grouping 1 2 3 4 5 רגע עם דיג'יט גרופינג, אני אמרתי לו 5, 1, 2, 3, 4, 5 ועוד 1, 2, 3, 4, 5, 6 שווה, אוקיי, נראה מצוין.

  16. 07:08

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

  17. 07:43

    אז ניקח מספר גדול ונגיד לו digit grouping ושורש, מצוין, ואחד חלקי, הוא שם גם popsic ועכשיו הוא, אני מניח, יקרוס.

  18. 07:59

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

  19. 08:14

    אז לא יודעת לפענח את המספר 1E פסיק מינוס 0.7 נקודה. 1E זה אומר 1 בחזקת 10 בחזקת, סליחה, 1 כפול 10 בחזקת מינוס 7. זה 1 חלקי 10 עם 7 אפסים או משהו כזה.

  20. 08:34

    1 עם 7 אפסים. אז זה סוג של פלואוט והפסיק הזה נכנס שם בגלל הנקודה העשרונית. זה בעצם שלוש פעמים שמאלה מהנקודה העשרונית.

  21. 08:48

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

  22. 09:04

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

  23. 09:34

    לדיבאג נראה שיש סטארט דיבאגינג אבל יש גם סטארט וויז אאו דיבאגינג קונטרול F5 וזה בעצם החוויה של הלקוח שלנו מריץ את זה ללקוח שלנו אין את הוויז'ל סטודיו כך שאם הוא עושה מין טעות שכזו בואי ננסה לשחזר את השגיאה הוא ערוץ 1 חלקי ועוד פעם אוקיי בואי ננסה רגע לשחזר את זה לשחזר את השגיאה הזו קצת מסובך לא הצלחנו

  24. 10:10

    אבל אפשר ליצור שגיאה אחרת של 1 חלקי 0 שווה ואז הוא כותב לנו פה infinity שזה התשובה שלו בעצם ל-1 חלקי 0 אבל הוא שם לנו פה פסיקים אם עכשיו אני אגיד לו כפול עכשיו כל דבר שאני אומר לו גורם לשגיאה הזו אז כשאני מחוץ לוויז'ול סטודיו, נכון?

  25. 10:34

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

  26. 10:59

    הוא יכול לראות פה את מכפנית הקריאות מלמטה למעלה ממשהו native לווינד או משהו מאוד מאוד אלמנטרי בתוך Windows עד לפונקציה בסופו של דבר form אחד handle operation כנראה שלנו ויש פה parse ובסופו של דבר to number שזאת היא בעצם קרסה.

  27. 11:25

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

  28. 11:40

    מבלבלת אחת מהפתרונות זה לשים טריי וקאץ׳ אז האמת היא שבדרך כלל במערכות שאני מפתח על כל כפתור שהיוזר יכול ללחוץ עליו אני תמיד שם מין כזו הגנה בואו נראה את זה אז נעשה שיפט F5 אה, שיפט F5 עכשיו לא עובד חייבים לסגור את המחשבון, את המחשבון שלנו

  29. 12:05

    צריכים לסגור, אי אפשר בשיפט F5 כי לא הראתנו את זה מתוך הווישול סטודיו ואם ניקח לדוגמה את inverse, אז נשים פה try וכאן בסוף catch ופה נגיד לו exception e x ובדרך כלל מה שאני עושה זה מין משהו שכזה messagebox.show אני מציג ליוזר את ההודעה,

לקורס המלא: פרויקט מעשי ב‑#C אונליין

ההרצאה הקודמת: פרויקט ב-#C - מחשבון פשוט - חלק 16

ההרצאה הבאה: פרויקט ב-#C - מחשבון פשוט - חלק 18

הרצאות קשורות מקורסים אחרים

  • בניית מחשבון של חלונות
  • מחשבון מחירים של Azure
  • יצירת פרויקט Maven - חלק 1
  • מרכיבים של פרויקט ג'אווה

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C
  • קורס WCF - תקשורת למתקדמים בדוט-נט