24-10-2011, 12:10
|
|
מנהל משבראש, בלשנות, תכנות ויהדות
|
|
חבר מתאריך: 04.06.06
הודעות: 33,130
|
|
|
ההדרכה היא לנסח את מה שאתה רוצה המילים, לפרט את השלבים, ואז להפוך אותם לקוד
אתה רוצה למצוא כמה מספרים קטנים מ־100 נכנסיםם בו ללא שארית
בשלבים:
אנו רוצים קאונטר ששוה ל־0
שמשתנה האינדקס a ירוץ מ־1 עד 100 (לולאה)
←בדיקה האם 100 מתחלק ב־a ללא שארית ואם היא 0 להעלות את הקאונטר ב־1
←לחזור על הלולאה תוך העלאת האינדקס a
בקוד:
קוד:
var counter = 0;
for (var a=1; a<100; a++) {
if ( 100%a == 0 ) counter++;
}
document.write(counter);
(היה אפשר לנסח אחרת, אך העדפתי לשמור על פשטות ההבנה)
בעיות לדוגמא במה שאתה כתבת:
את השורה B=100%a שמת מחוץ ללולאה, משמע שהיא מתבצעת פעם אחת בלבד, חישבת את השארית רק עבור 1 ולכן B נשאר 0 תמיד.
גם אם היית מכניס אותה לתוך הלולאה, עשית טעות שהכנסת אותו בתנאי של הלולאה עצמה, כי אז אתה אומר לה להמשיך כל עוד השארית אינה 0, מה שאומר שהיא הייתה אמורה להספיק לאחר ש־a מגיע ל־3 (כי אז B אינו 0)
בלולאה שאתה יודע בדיוק כמה פעמים היא רצה עם אינדקס רץ, עדיף להשתמש ב־for, לולאת תנאי עדיפה במקרים שאתה לא יודע מתי בדיוק התנאי יתקיים.
קידמת את a והקאונטר ביחד, זה כבר היה אמור להדליק נורה אדומה, כי זה אומר שבכל מקרה הקאונטר יהיה שווה ל־a+1, היית צריך לקבוע תנאים שונים להגדלה של כל אחד (a גדל תמיד, והקאונטר רק כשהשארית אינה 0)
|