תוכנית לבדיקה

theman81

New member
תוכנית לבדיקה

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

theman81

New member
או האפשרות הזו, אותה תוכנית , גם לא עובד..

(אל תתייחסו לספריות המיותרות שהוספתי)
 

theman81

New member
האפשרות הזו גם לא עובדת לאותה תוכנית..

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

BravoMan

Active member
דווקא גרסה זו של התוכנית לא נכונה.

אין בה לולאה. אתה בודק את sum פעם אחת, מיד אחרי שאתחלת אותו ל-0.
ה-if תמיד יהיה נכון, ויתבצע, אבל הוא מתבצע פעם אחת בלבד ואז התוכנית מסתיימת.
 

theman81

New member
הבנתי אחי אבל תן לי להתחכם ותזרום איתי סבבה?

נניח ואני מתעקש לא לעשות WHILE (ששם עובד כפי שגם אתה מסכים) איך אני פותר את הבעייתיות עם ה-IF?
 

BravoMan

Active member
איזו בעייתיות?

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

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

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

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

שניהם בעצם נותנים לך לעשות את אותו הדבר:
* לחשוב מה אתה רוצה לעשות
* לתכנן את השלבים שצריך לבצע כדי להגיע לתוצאה הרצויה
* לרשום על נייר את כל השלבים הללו בצורה מסודרת.

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

BravoMan

Active member
התוכנית שלך תקינה.

אני לא זוכר איך בדיוק Turbo C עובד, פעם אחרונה שראיתי את התוכנה הזו היה בסביבות שנת 2000, אבל אם מה שקורה לך זה שמיד ברגע שתוכנית מסתיימת אתה חוזר למסך הכחול עם הקוד בלי איזו הודעה בנוסך "Press any key", הרי שזו לא תקלה בתוכנית שלך.

ייתכן שאתה פשוט לא רואה את המשפט האחרון מודפס.

יש איזו דרך להציג את מה שהתוכנה שלך הדפיסה גם אחרי שהיא נסגרה, נדמה לי תפריט Windows->Output.

אולי מישהו כאן זוכר טוב יותר ממני...
 

BravoMan

Active member
כמעת שכחתי:

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

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

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

theman81

New member
בדיוק זו הייתה השאלה שלי ..

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

BravoMan

Active member
עקרונית, יש לך עוד אפשרות:

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

לפונקציה הזו קוראים getchar אבל אני לא זוכר אם Turbo C תומך בה.
ייתכן שהוא תומך בפונקציה דומה בשם getch.

תנסה את שתיהן ותראה מה עובד.
 

theman81

New member
תודה הבנתי : ) וואי מדהים כמה שאני יותר לומד

אני מבין כמה אני לא יודע חח .. אין לזה סוף..
 
למעלה