‫לולאות‬ :‫זרימה‬ ‫בקרת‬
‫כליף‬ ‫קרן‬

‫לולאות‬

‫זרימה‬ ‫תרשים‬ ‫הפתרון‬ ‫הצגת‬

‫קוד‬-‫בפסאודו‬ ‫הפתרון‬ ‫כתיבת‬
2
:‫נלמד‬ ‫זו‬ ‫ביחידה‬

‫סכום‬ ‫את‬ ‫למצוא‬ ‫נרצה‬ ,‫כלשהו‬ ‫חיובי‬ ‫שלם‬ ‫מספר‬ ‫בהינתן‬
‫ספרותיו‬

:‫דוגמאות‬
◦
347

3+4+7=14
◦
2251

2+2+5+1=10
‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬
3

"‫ימנית‬ ‫ספרה‬ ‫"תן‬
◦
:‫דוגמא‬
347
 7

"‫ימנית‬ ‫ספרה‬ ‫"קצץ‬
◦
:‫דוגמא‬
347
 34
◦
‫הערך‬ ‫את‬ ‫מחזיר‬ ‫ספרתי‬ ‫חד‬ ‫מספר‬ ‫קיצוץ‬
0

‫המספר‬ ‫מספרות‬ ‫אחת‬ ‫כל‬ ‫על‬ ‫לעבור‬ :‫הפעולה‬ ‫אסטרטגיית‬
‫לסכום‬ ‫אותה‬ ‫ולהוסיף‬
◦
‫עלינו‬ ‫יהיה‬ ,‫ביותר‬ ‫הימנית‬ ‫לספרה‬ ‫רק‬ ‫גישה‬ ‫לנו‬ ‫יש‬ ‫שלב‬ ‫ובכל‬ ‫מאחר‬
‫שלידה‬ ‫לספרה‬ ‫להגיע‬ ‫כדי‬ ‫אותה‬ ‫לקצץ‬
◦
‫יהיה‬ ‫לנו‬ ‫שישאר‬ ‫הערך‬ ‫(כלומר‬ ‫הספרות‬ ‫כל‬ ‫את‬ ‫לקצץ‬ ‫נסיים‬ ‫כאשר‬
0
,)
‫העבודה‬ ‫את‬ ‫שסיימנו‬ ‫נדע‬
‫להשתמש‬ ‫מותר‬ ‫בהן‬ ‫ההוראות‬ – ‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬
4
‫הפקודות‬ ‫את‬ ‫יש‬ ‫לדעתכם‬ ‫מדוע‬
‫פעולות‬ ‫ואין‬ ,"‫ימנית‬ ‫ספרה‬ ‫קצץ‬/‫"תן‬
‫השמאלית‬ ‫הספרה‬ ‫עבור‬ ‫?מקבילות‬
‫ספרותיו‬ ‫סכום‬ ‫חישוב‬
– ‫מספר‬ ‫של‬
‫זרימה‬ ‫תרשים‬
5
© Keren Kalif
‫של‬ ‫המקורי‬ ‫שערכו‬ ‫לב‬ ‫נשים‬
X
‫נהרס‬
‫את‬ ‫לבצע‬ ‫האם‬ ‫מחליטים‬ ‫אנו‬ ‫בה‬ ‫הנקודה‬ ‫זוהי‬
‫לצאת‬ ‫או‬ ,‫נוספת‬ ‫פעם‬ ‫התהליך‬ ‫כל‬
‫ספרותיו‬ ‫סכום‬ ‫חישוב‬
– ‫מספר‬ ‫של‬
‫זרימה‬ ‫תרשים‬
6
© Keren Kalif
‫של‬ ‫ערכו‬ ‫את‬ ‫שמרנו‬ ‫זה‬ ‫במקרה‬
X
-‫ב‬
temp
‫של‬ ‫המקורי‬ ‫ערכו‬ ‫וכך‬
X
‫נשמר‬
.1
‫הגדר‬
sum=0
.2
‫לתוך‬ ‫מספר‬ ‫קלוט‬
X
.3
‫הגדר‬
temp=X
.4
‫עוד‬ ‫כל‬
temp > 0
:
)a
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬
temp
-‫ל‬ ‫אותה‬ ‫והוסף‬
sum
)b
-‫מ‬ ‫קצץ‬
temp
‫ימנית‬ ‫ספרה‬
.5
‫את‬ ‫הצג‬
sum
– ‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬
‫פורמאלית‬ ‫כתיבה‬
7
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
sum = 0
X = 472
temp = 472
sum = 2
sum = 9
sum = 13
temp = 47
temp = 4
temp = 0
‫מעיד‬ "‫עוד‬ ‫"כל‬ ‫במושג‬ ‫שימוש‬
‫עליו‬ ‫לחזור‬ ‫שיש‬ ‫קטע‬ ‫על‬

‫עד‬ ‫מספרים‬ ‫לקלוט‬ ‫יש‬
‫מספר‬ ‫יקלט‬ ‫אשר‬
‫את‬ ‫להציג‬ ‫יש‬ .‫שלילי‬
‫(לא‬ ‫המספרים‬ ‫ממוצע‬
‫השלילי‬ ‫המספר‬ ‫כולל‬
.)‫שהוכנס‬
‫ממוצע‬ ‫חישוב‬
8
© Keren Kalif
‫לבצע‬ ‫האם‬ ‫מחליטים‬ ‫אנו‬ ‫בה‬ ‫הנקודה‬ ‫זוהי‬
‫לצאת‬ ‫או‬ ,‫נוספת‬ ‫פעם‬ ‫התהליך‬ ‫כל‬ ‫את‬
‫ורק‬ ‫אך‬ ‫למעלה‬ ‫לחזור‬ ‫ניתן‬
‫תנאי‬ ‫בדיקת‬ ‫שהינה‬ ‫לפעולה‬
‫מתוקן‬ - ‫ממוצע‬ ‫חישוב‬
9
© Keren Kalif
‫במספר‬ ‫כבר‬ ‫אם‬ ‫יקרה‬ ‫מה‬
?‫שלילי‬ ‫ערך‬ ‫יוקלד‬ ‫הראשון‬
‫ורק‬ ‫אך‬ ‫למעלה‬ ‫לחזור‬ ‫ניתן‬ ‫מדוע‬
?‫תנאי‬ ‫בדיקת‬ ‫שהינה‬ ‫לפעולה‬
!‫לסיום‬ ‫הלולאה‬ ‫את‬ ‫לקדם‬ ‫מנת‬ ‫על‬
‫עלינו‬ ‫זו‬ ‫שבתצורה‬ ‫לב‬ ‫נשים‬
‫הקליטה‬ ‫פעולת‬ ‫את‬ ‫לשכפל‬
‫הלולאה‬ ‫ובתוך‬ ‫לפני‬
10
© Keren Kalif
( ‫מתוקן‬ - ‫ממוצע‬ ‫חישוב‬
2
)
.1
‫הגדר‬
counter=0, sum=0
.2
‫מספר‬ ‫קלוט‬
X
.3
‫עוד‬ ‫כל‬
0
≤
X
:
)a
‫את‬ ‫הוסף‬
X
-‫ל‬
sum
)b
‫את‬ ‫הגדל‬
counter
-‫ב‬
1
)c
-‫ל‬ ‫נוסף‬ ‫מספר‬ ‫קלוט‬
X
.4
‫של‬ ‫ערכו‬ ‫אם‬
counter
‫הוא‬
0
:
)a
"‫חיוביים‬ ‫מספרים‬ ‫הוקלדו‬ ‫"לא‬ :‫הצג‬
.5
:‫אחרת‬
)a
‫החישוב‬ ‫תוצאת‬ ‫את‬ ‫הצג‬
sum/counter
‫פורמאלית‬ ‫כתיבה‬ :‫ממוצע‬ ‫חישוב‬
11
© Keren Kalif
‫עבור‬ ‫למשל‬ ,‫יבשה‬ ‫הרצה‬
7
 2  1
:-
counter = 0
sum = 0
X = 7
sum = 7
sum = 9
counter = 1
counter = 2
X = 2
X = 1-
‫המתחיל‬ ‫לקטע‬ ‫רק‬ ‫לחזור‬ ‫ניתן‬ ‫פורמאלית‬ ‫בכתיבה‬ :‫לב‬ ‫נשים‬
‫סעיף‬ ‫ולכן‬ ,"‫עוד‬ ‫ב"כל‬
2
‫סעיף‬ ‫בתור‬ ‫שוב‬ ‫כתוב‬
3C

‫עבור‬ ,‫למשל‬
123
‫לייצר‬ ‫יש‬
‫המספר‬ ‫את‬
321

‫לבודד‬ ‫צריך‬ ‫זה‬ ‫במקרה‬ ‫גם‬
‫ולכן‬ ‫מהספרות‬ ‫אחת‬ ‫כל‬ ‫את‬
‫קצץ‬/‫"תן‬ ‫בפעולות‬ ‫נשתמש‬
"‫ימנית‬ ‫ספרה‬

‫בפעולות‬ ‫גם‬ ‫להשתמש‬ ‫ניתן‬
‫חיבור‬ ,‫(כפל‬ ‫בסיסיות‬ ‫חשבון‬
)'‫וכד‬
‫ההופכי‬ ‫המספר‬ ‫יצירת‬
12
© Keren Kalif
.1
‫הגדר‬
newNum = 0
.2
‫לתוך‬ ‫מספר‬ ‫קלוט‬
X
.3
‫הגדר‬
temp = X
.4
‫עוד‬ ‫כל‬
temp > 0
:
)a
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬
temp
-‫ל‬ ‫מימין‬ ‫אותה‬ ‫והוסף‬
newNum
)b
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
temp
.5
‫את‬ ‫הצג‬
newNum
‫פורמאלית‬ ‫ובכתיבה‬
13
© Keren Kalif
‫אין‬ ,‫מספר‬ ‫לייצר‬ ‫מאיתנו‬ ‫מבקשים‬ ‫שכאשר‬ ‫לב‬ ‫נשים‬
:‫הפעולה‬ ‫את‬ ‫ברשותנו‬
..."‫המספר‬ ‫לימין‬ ‫ספרה‬ ‫"הצמד‬
:‫יבשה‬ ‫הרצה‬
newNum = 0
X = 123
temp = 123
temp = 12
temp = 1
temp = 0
newNum = 03
newNum = 032
newNum = 0321

‫להכניס‬ ‫כלומר‬ ,‫למספר‬ ‫מימין‬ ‫ספרה‬ ‫להוסיף‬ ‫רוצים‬ ‫כאשר‬
:‫הבאות‬ ‫הפעולות‬ ‫את‬ ‫לבצע‬ ‫יש‬ ,‫חדשה‬ ‫אחדות‬ ‫ספרת‬
◦
‫פי‬ ‫המספר‬ ‫את‬ ‫הכפל‬
10
)‫החדשה‬ ‫האחדות‬ ‫לספרת‬ ‫מקום‬ ‫לייצר‬ ‫(כדי‬
◦
‫החדשה‬ ‫הספרה‬ ‫את‬ ‫הוסף‬

‫המספר‬ ‫עבור‬ :‫דוגמא‬
65
‫הספרה‬ ‫את‬ ‫להוסיף‬ ‫נרצה‬
3
,‫מימין‬
‫מספר‬ ‫את‬ ‫לייצר‬ ‫כדי‬ ‫כלומר‬
653
:
◦
65
*
10
=
650
◦
650
+
3
=
653
‫למספר‬ ‫מימין‬ ‫ספרה‬ ‫הוספת‬
14
© Keren Kalif
‫המספר‬ ‫יצירת‬
‫ההופכי‬
‫מתוקן‬ -
15
© Keren Kalif
.1
‫הגדר‬
newNum = 0
.2
‫לתוך‬ ‫מספר‬ ‫קלוט‬
X
.3
‫הגדר‬
temp = X
.4
‫עוד‬ ‫כל‬
temp > 0
:
)a
‫של‬ ‫הערך‬ ‫את‬ ‫הכפל‬
newNum
‫פי‬
10
)b
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬
temp
-‫ל‬ ‫אותה‬ ‫והוסף‬
newNum
)c
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
temp
.5
‫את‬ ‫הצג‬
newNum
‫פורמאלית‬ ‫ובכתיבה‬
16
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
newNum = 0
X = 123
temp = 123
temp = 12
temp = 1
temp = 0
newNum = 30
newNum = 32
newNum = 321
newNum = 3
newNum = 320

‫בחשבון‬ ‫לקחת‬ ‫יש‬ ‫מספר‬ ‫של‬ ‫משמאלו‬ ‫ספרה‬ ‫מוסיפים‬ ‫כאשר‬
'‫וכד‬ ‫מאות‬ / ‫עשרות‬ / ‫אחדות‬ :‫תופסת‬ ‫היא‬ ‫מיקום‬ ‫איזה‬

‫למספר‬ ‫רוצים‬ ‫אם‬ :‫דוגמא‬
47
‫הספרה‬ ‫את‬ ‫להוסיף‬
3
‫הערך‬ ‫את‬ ‫להוסיף‬ ‫יש‬ ‫למעשה‬ ,‫משמאלו‬
300
◦
47
+
300
=
347
◦
‫של‬ ‫במיקום‬ ‫תהייה‬ ‫כבר‬ ‫היא‬ ,‫משמאל‬ ‫נוספת‬ ‫ספרה‬ ‫להוסיף‬ ‫נרצה‬ ‫אם‬
‫האלפים‬
‫למספר‬ ‫משמאל‬ ‫ספרות‬ ‫הוספת‬
17
© Keren Kalif

‫המספר‬ ‫את‬ ‫נייצר‬
724
:‫משמאלו‬ ‫ספרות‬ ‫הוספת‬ ‫כדי‬ ‫תוך‬
◦
4
2
7

‫יהיה‬ ‫המספר‬ ‫בהתחלה‬
0

‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬
4
◦
4
*
100
=
4
*
1
=
4

‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬
20
◦
2
*
101
=
2
*
10
=
20

‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬
700
◦
7
*
102
=
7
*
100
=
700

‫הוא‬ ‫המתקבל‬ ‫המספר‬
724
- ‫למספר‬ ‫משמאל‬ ‫ספרות‬ ‫הוספת‬
‫דוגמא‬
18
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
:‫המספר‬
0 :‫המספר‬
4 :‫המספר‬
24 :‫המספר‬
724
‫שהוספת‬ ‫החוקיות‬ ‫את‬ ‫לזהות‬ ‫ניתן‬
‫חזקה‬ ‫למעשה‬ ‫היא‬ ‫משמאל‬ ‫ספרה‬
‫של‬ ‫כלשהי‬
10
-‫ב‬ ‫שגדלה‬ ,
1
‫פעם‬ ‫בכל‬

‫שערכן‬ ‫הספרות‬ ‫את‬ ‫רק‬ ‫המכיל‬ ‫מספר‬ ‫ולייצר‬ ‫מספר‬ ‫לקלוט‬ ‫יש‬
‫זוגי‬

‫המספר‬ ‫עבור‬ :‫דוגמא‬
123467
‫המספר‬ ‫יווצר‬
246

:‫הפעולות‬ ‫הן‬ ‫לרשותינו‬ ‫העומדים‬ ‫הכלים‬
◦
"‫ימנית‬ ‫ספרה‬ ‫קצץ‬/‫"תן‬
◦
‫חשבון‬ ‫פעולות‬
◦
‫זוגי‬ ‫הוא‬ ‫ערך‬ ‫האם‬ ‫בדיקה‬

‫המיוצר‬ ‫המספר‬ ‫של‬ ‫משמאלו‬ ‫ספרות‬ ‫להוסיף‬ ‫עלינו‬ ‫זה‬ ‫במקרה‬
‫הזוגיות‬ ‫הספרות‬ ‫את‬ ‫רק‬ ‫המכיל‬ ‫מספר‬ ‫יצירת‬
19
© Keren Kalif
‫רק‬ ‫המכיל‬ ‫מספר‬ ‫יצירת‬
‫הזוגיות‬ ‫הספרות‬ ‫את‬
20
© Keren Kalif
‫למספר‬ ‫להוספה‬ ‫המתאים‬ ‫הערך‬ ‫ייצור‬
‫את‬ ‫נכפיל‬
location
‫רק‬
‫כהכנת‬ ,‫ספרה‬ ‫והוספנו‬ ‫במידה‬
‫הבאה‬ ‫לספרה‬ ‫התשתית‬
.1
‫הגדר‬
location=1, newNum=0
.2
‫לתוך‬ ‫ערך‬ ‫קלוט‬
X
.3
‫הגדר‬
temp=X
.4
‫עוד‬ ‫כל‬
temp > 0
:
)a
‫של‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬
temp
:‫בצע‬ ‫זוגית‬ ‫ואם‬ ,
.i
‫פי‬ ‫הספרה‬ ‫את‬ ‫הכפל‬
location
-‫ל‬ ‫אותה‬ ‫והוסף‬
newNum
.ii
‫הכפל‬
location
‫פי‬
10
)b
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
temp
.5
‫את‬ ‫הצג‬
newNum
‫פורמאלית‬ ‫ובכתיבה‬
21
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
location = 1
X = 258
newNum = 0
temp = 258
newNum = 8
newNum = 28
location = 10
location = 100
temp = 25
temp = 2
temp = 0

‫לקלוט‬ ‫יש‬
2
‫ולייצר‬ ,‫שלהם‬ ‫הספרות‬ ‫בכמות‬ ‫הזהים‬ ‫מספרים‬
‫שני‬ ‫של‬ ‫הספרות‬ ‫מיזוג‬ ‫הם‬ ‫בו‬ ‫שהספרות‬ ‫כך‬ ‫חדש‬ ‫מספר‬
:‫המספרים‬
◦
‫השני‬ ‫מהמספר‬ ‫שניה‬ ‫וספרה‬ ‫הראשון‬ ‫מהמספר‬ )‫(משמאל‬ ‫ראשונה‬ ‫ספרה‬
◦
‫השני‬ ‫מהמספר‬ ‫רביעית‬ ‫וספרה‬ ‫הראשון‬ ‫מהמספר‬ ‫שלישית‬ ‫ספרה‬
◦
'‫וכו‬

:‫דוגמא‬
◦
‫המספרים‬ ‫עבור‬
37
-‫ו‬
81
‫המספר‬ ‫את‬ ‫לייצר‬ ‫יש‬
3871

:‫הפעולה‬ ‫אסטרטגיית‬
,‫לשמאל‬ ‫מימין‬ ‫ספרות‬ ‫לבודד‬ ‫וניתן‬ ‫מאחר‬
‫כאשר‬ ,‫משמאל‬ ‫ספרות‬ ‫הוספת‬ ‫על‬ ‫תתבסס‬ ‫החדש‬ ‫המספר‬ ‫בניית‬
‫השני‬ ‫מהמספר‬ ‫דווקא‬ ‫מתחילים‬
‫באורכם‬ ‫זהים‬ ‫מספרים‬ ‫שני‬ ‫של‬ ‫ספרות‬ ‫מיזוג‬
22
© Keren Kalif
‫זרימה‬ ‫תרשים‬
23
© Keren Kalif
.1
-‫ל‬ ‫מספר‬ ‫קלוט‬
num1
.2
-‫ל‬ ‫מספר‬ ‫קלוט‬
num2
.3
‫הגדר‬
newNum=0
.4
‫הגדר‬
location=1
.5
‫עוד‬ ‫כל‬
num2 > 0
:
)a
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫בודד‬
num2
-‫ב‬ ‫אותה‬ ‫הכפל‬ ,
location
-‫ל‬ ‫והוסף‬
newNum
)b
‫את‬ ‫הכפל‬
location
‫פי‬
10
)c
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫בודד‬
num1
-‫ב‬ ‫אותה‬ ‫הכפל‬ ,
location
-‫ל‬ ‫והוסף‬
newNum
)d
‫את‬ ‫הכפל‬
location
‫פי‬
10
)e
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
num2
)f
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
num1
.6
‫את‬ ‫הצג‬
newNum
‫פורמאלית‬ ‫ובכתיבה‬
24
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
num1 = 37
newNum = 0
location = 1
num2 = 81
newNum = 1
newNum = 71
location = 10
newNum = 871
newNum = 3871
location = 100
num1 = 3
num1 = 0
num2 = 8
num2 = 0
location = 1000
location = 10000

.‫ביותר‬ ‫הגדולה‬ ‫הספרה‬ ‫את‬ ‫והצג‬ ‫מספר‬ ‫מהמשתמש‬ ‫קלוט‬

:‫דוגמאות‬
◦
‫עבור‬
1234
‫יוצג‬
4
◦
‫עבור‬
8997
‫יוצג‬
9
◦
‫עבור‬
1212
‫יוצג‬
2

‫הספרה‬ ‫ערך‬ ‫עם‬ ‫המקסימום‬ ‫את‬ ‫נאתחל‬ :‫הפעולה‬ ‫אסטרטגיית‬
‫הספרה‬ ‫אם‬ .‫אחרת‬ ‫ספרה‬ ‫פעם‬ ‫כל‬ ‫ונבודד‬ )‫(הימנית‬ ‫הראשונה‬
‫נעדכן‬ ,‫כה‬ ‫עד‬ ‫שראינו‬ ‫המקסימלית‬ ‫מהספרה‬ ‫גדולה‬ ‫הנוכחית‬
.‫אותה‬
‫ביותר‬ ‫הגדולה‬ ‫הספרה‬ ‫מציאת‬
25
© Keren Kalif
26
© Keren Kalif
‫זרימה‬ ‫תרשים‬
.1
‫לתוך‬ ‫מספר‬ ‫מהמשתמש‬ ‫קלוט‬
num
.2
‫את‬ ‫הגדר‬
maxDigit
‫של‬ ‫הימנית‬ ‫בספרה‬ ‫אותה‬ ‫ואתחל‬
num
.3
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
num
.4
-‫ב‬ ‫נותרו‬ ‫עוד‬ ‫כל‬
num
( ‫ספרות‬
num>0
:)
)a
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬
num
‫בתוך‬ ‫אותה‬ ‫ואחסן‬
temp
)b
‫אם‬
temp > maxDigit
:
.i
:‫עדכן‬
maxDigit = temp
)c
-‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬
num
.5
‫את‬ ‫הצג‬
maxDigit
‫פורמאלית‬ ‫ובכתיבה‬
27
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
num = 387
temp = 8
maxDigit = 7
num = 38
num = 3
num = 0
maxDigit = 8
temp = 3

‫לקלוט‬ ‫יש‬
2
‫ולהגיד‬ ,)‫האורך‬ ‫באותו‬ ‫בהכרח‬ ‫(שאינם‬ ‫מספרים‬
.‫בו‬ ‫יש‬ ‫יותר‬ ‫ספרות‬ ‫וכמה‬ ,‫ספרות‬ ‫יותר‬ ‫יש‬ ‫מספר‬ ‫לאיזה‬

:‫דוגמא‬
◦
‫המספר‬ ‫עבור‬
1234
‫והמספר‬
99
‫שבמספר‬ ‫לאמר‬ ‫יש‬
1234
‫יש‬
2
.‫השני‬ ‫במספר‬ ‫מאשר‬ ‫יותר‬ ‫ספרות‬

:‫הפעולה‬ ‫אסטרטגיית‬
◦
.‫הספרות‬ ‫יגמרו‬ ‫לאחד‬ ‫אשר‬ ‫עד‬ ‫זמנית‬-‫בו‬ ‫המספרים‬ ‫משני‬ ‫ספרות‬ ‫נקצץ‬
◦
‫אשר‬ ‫עד‬ ‫שנותר‬ ‫למספר‬ ‫לקצץ‬ ‫שיש‬ ‫הספרות‬ ‫כמות‬ ‫את‬ ‫לספור‬ ‫נתחיל‬
.‫הספרות‬ ‫לו‬ ‫גם‬ ‫יגמרו‬
‫ארוך‬ ‫יותר‬ ‫מספר‬ ‫זיהוי‬
28
© Keren Kalif
‫זרימה‬ ‫תרשים‬
29
© Keren Kalif
‫שיש‬ ‫המספר‬ ‫מי‬ ‫גם‬ ‫להציג‬ ‫יש‬ ‫ובסוף‬ ‫מאחר‬
‫את‬ ‫לשמור‬ ‫צורך‬ ‫יש‬ ‫ספרות‬ ‫יותר‬ ‫בו‬
‫עם‬ ‫ולעבוד‬ ‫המקוריים‬ ‫המספרים‬
temp
‫מהמספרים‬ ‫אחד‬ ‫בלפחות‬ ‫לפה‬ ‫מגיעים‬ ‫כאשר‬
‫מקסימום‬ ‫ניכנס‬ ‫בוודאות‬ ‫לכן‬ ,‫ספרות‬ ‫אין‬ ‫כבר‬
‫לבדוק‬ ‫צורך‬ ‫מבלי‬ ,‫שסופרות‬ ‫מהלולאות‬ ‫לאחת‬
‫ספרות‬ ‫בו‬ ‫שנותרו‬ ‫המספר‬ ‫מהו‬

‫של‬ ‫בכמות‬ ‫כוכביות‬ ‫ולהציג‬ ,‫מהמשתמש‬ ‫מספר‬ ‫לקלוט‬ ‫נרצה‬
‫שנקלט‬ ‫המספר‬

:‫הן‬ ‫לרשותינו‬ ‫שעומדות‬ ‫הפעולות‬
◦
"‫אחת‬ ‫כוכבית‬ ‫"הדפס‬
◦
‫חשבוניות‬ ‫פעולות‬

‫והוא‬ ,‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫יש‬ ‫זה‬ ‫שבתרגיל‬ ‫להבחין‬ ‫ניתן‬
.‫כוכבית‬ ‫הצגת‬

‫פעמים‬ ‫של‬ ‫מסוימת‬ ‫כמות‬ ‫בדיוק‬ ‫יקרה‬ ‫זה‬ ‫שתהליך‬ ‫לדאוג‬ ‫צריך‬
‫כוכביות‬ ‫של‬ ‫כלשהי‬ ‫כמות‬ ‫הצגת‬
30
© Keren Kalif
‫זרימה‬ ‫תרשים‬
31
© Keren Kalif
counter
‫כמות‬ ‫את‬ ‫מכיל‬
‫ולכן‬ ,‫כה‬ ‫עד‬ ‫שהוצגו‬ ‫הכוכביות‬
-‫ל‬ ‫מאותחל‬ ‫בהתחלה‬
0
‫הצגנו‬ ‫לא‬ ‫עוד‬ ‫כל‬ ‫יחזור‬ ‫התהליך‬
‫המבוקשת‬ ‫הכוכביות‬ ‫כמות‬ ‫כל‬ ‫את‬
‫את‬ ‫נעדכן‬ ,‫כוכבית‬ ‫הצגת‬ ‫לאחר‬
counter
-‫ב‬ ‫הגדלתו‬ ‫ע"י‬
1
.1
‫מספר‬ ‫קלוט‬
X
.2
‫הגדר‬
counter=0
.3
‫עוד‬ ‫כל‬
counter < X
:
)a
‫כוכבית‬ ‫הצג‬
)b
‫את‬ ‫הגדל‬
counter
-‫ב‬
1
‫פורמאלית‬ ‫ובכתיבה‬
32
© Keren Kalif
:‫יבשה‬ ‫הרצה‬
X = 3
counter = 0
‫כבר‬ ,‫הלולאה‬ ‫תחילת‬ ‫שעם‬ ‫הוא‬ ‫זו‬ ‫בדוגמא‬ ‫המיוחד‬
.‫תבצע‬ ‫שהיא‬ ‫הסיבובים‬ ‫כמות‬ ‫ידועה‬
..‫הבא‬ ‫בשקף‬ ‫שמוצג‬ ‫הפורמט‬ ‫את‬ ‫יש‬ ‫זה‬ ‫למקרה‬
counter = 1
counter = 2
counter = 3
* * *
.1
‫מספר‬ ‫קלוט‬
X
.2
‫עבור‬
i
‫בטווח‬
1
...
X
:
)a
‫כוכבית‬ ‫הצג‬
( ‫פורמאלית‬ ‫ובכתיבה‬
2
)
33
© Keren Kalif
‫של‬ ‫ערכו‬ ‫זו‬ ‫כתיבה‬ ‫בצורת‬
i
-‫ב‬ ‫גדל‬
1
‫אוטומטי‬ ‫באופן‬
-‫מ‬ ‫החל‬ ,‫פעם‬ ‫בכל‬
1
‫להיות‬ ‫מגיע‬ ‫שערכו‬ ‫עד‬
X
‫כולל‬
:‫יבשה‬ ‫הרצה‬
X = 3
i = 1
i = 2
i = 3
* * *

-‫מ‬ ‫המספרים‬ ‫כל‬ ‫את‬ ‫ולהציג‬ ‫מספר‬ ‫מהמשתמש‬ ‫לקלוט‬ ‫יש‬
1
‫עד‬
.‫זה‬ ‫למספר‬

‫במקום‬ ‫הפעם‬ ‫רק‬ ,‫מקודם‬ ‫כמו‬ ‫בעיה‬ ‫אותה‬ ‫בדיוק‬ ‫למעשה‬ ‫זוהי‬
.‫מספר‬ ‫להדפיס‬ ‫יש‬ ,‫כוכבית‬ ‫להדפיס‬
‫המספרים‬ ‫כל‬ ‫הצגת‬
34
© Keren Kalif

‫מספר‬ ‫קלוט‬
X

‫עבור‬
i
‫בטווח‬
1
...
X
:
◦
‫את‬ ‫הצג‬
i

:‫הבאים‬ ‫במושגים‬ ‫ונשתמש‬ ,‫הטקסט‬ ‫פשטות‬ ‫על‬ ‫נקפיד‬
◦
>‫<תנאי‬ ‫עוד‬ ‫כל‬
‫מתקיים‬ ‫התנאי‬ ‫עוד‬ ‫כל‬ ‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫עבור‬ –
◦
‫עבור‬
i
>‫<סוף‬...>‫<התחלה‬ ‫בטווח‬
‫כמות‬ ‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫עבור‬ –
‫פעמים‬ ‫של‬ ‫ידועה‬
◦
‫אחרת‬ >‫<תנאי‬ ‫אם‬
‫מסויים‬ ‫תנאי‬ ‫קיום‬ ‫בעת‬ ‫פעולות‬ ‫ביצוע‬ ‫עבור‬ –

‫מבנה‬ ‫את‬ ‫המשקפת‬ )‫(אינדנטציה‬ ‫מדורגת‬ ‫כתיבה‬ ‫על‬ ‫נקפיד‬
‫התוכנית‬
‫דגשים‬ - ‫פורמלית‬ ‫כתיבה‬
35

‫תלויים‬ ‫כאשר‬ ‫למשל‬ ,‫מראש‬ ‫ידוע‬ ‫אינו‬ ‫הסיבובים‬ ‫מספר‬ ‫כאשר‬
...‫עוד‬ ‫"כל‬ ‫במבנה‬ ‫נשתמש‬ ‫פעם‬ ‫כל‬ ‫המשתמש‬ ‫של‬ ‫בקלט‬

‫נשתמש‬ ‫הלולאה‬ ‫תחילת‬ ‫עם‬ ‫ידוע‬ ‫הסיבובים‬ ‫מספר‬ ‫כאשר‬
‫"עבור‬ ‫במבנה‬
i
‫אתחול‬ ‫את‬ ‫בתוכו‬ ‫כולל‬ ‫זה‬ ‫מבנה‬ ‫שכן‬ ,"...‫בטווח‬
‫המונה‬ ‫וקידום‬
‫לולאות‬ ‫עם‬ ‫לשאלות‬ ‫אצבע‬ ‫כללי‬
36
© Keren Kalif

‫לולאות‬

‫זרימה‬ ‫תרשים‬ ‫הפתרון‬ ‫הצגת‬

‫קוד‬-‫בפסאודו‬ ‫הפתרון‬ ‫כתיבת‬
37
:‫למדנו‬ ‫זו‬ ‫ביחידה‬

Hebrew_presentat_pseudo_code_-loops.pptx

  • 1.
  • 2.
     ‫לולאות‬  ‫זרימה‬ ‫תרשים‬ ‫הפתרון‬‫הצגת‬  ‫קוד‬-‫בפסאודו‬ ‫הפתרון‬ ‫כתיבת‬ 2 :‫נלמד‬ ‫זו‬ ‫ביחידה‬
  • 3.
     ‫סכום‬ ‫את‬ ‫למצוא‬‫נרצה‬ ,‫כלשהו‬ ‫חיובי‬ ‫שלם‬ ‫מספר‬ ‫בהינתן‬ ‫ספרותיו‬  :‫דוגמאות‬ ◦ 347  3+4+7=14 ◦ 2251  2+2+5+1=10 ‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬ 3
  • 4.
     "‫ימנית‬ ‫ספרה‬ ‫"תן‬ ◦ :‫דוגמא‬ 347 7  "‫ימנית‬ ‫ספרה‬ ‫"קצץ‬ ◦ :‫דוגמא‬ 347  34 ◦ ‫הערך‬ ‫את‬ ‫מחזיר‬ ‫ספרתי‬ ‫חד‬ ‫מספר‬ ‫קיצוץ‬ 0  ‫המספר‬ ‫מספרות‬ ‫אחת‬ ‫כל‬ ‫על‬ ‫לעבור‬ :‫הפעולה‬ ‫אסטרטגיית‬ ‫לסכום‬ ‫אותה‬ ‫ולהוסיף‬ ◦ ‫עלינו‬ ‫יהיה‬ ,‫ביותר‬ ‫הימנית‬ ‫לספרה‬ ‫רק‬ ‫גישה‬ ‫לנו‬ ‫יש‬ ‫שלב‬ ‫ובכל‬ ‫מאחר‬ ‫שלידה‬ ‫לספרה‬ ‫להגיע‬ ‫כדי‬ ‫אותה‬ ‫לקצץ‬ ◦ ‫יהיה‬ ‫לנו‬ ‫שישאר‬ ‫הערך‬ ‫(כלומר‬ ‫הספרות‬ ‫כל‬ ‫את‬ ‫לקצץ‬ ‫נסיים‬ ‫כאשר‬ 0 ,) ‫העבודה‬ ‫את‬ ‫שסיימנו‬ ‫נדע‬ ‫להשתמש‬ ‫מותר‬ ‫בהן‬ ‫ההוראות‬ – ‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬ 4 ‫הפקודות‬ ‫את‬ ‫יש‬ ‫לדעתכם‬ ‫מדוע‬ ‫פעולות‬ ‫ואין‬ ,"‫ימנית‬ ‫ספרה‬ ‫קצץ‬/‫"תן‬ ‫השמאלית‬ ‫הספרה‬ ‫עבור‬ ‫?מקבילות‬
  • 5.
    ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬ –‫מספר‬ ‫של‬ ‫זרימה‬ ‫תרשים‬ 5 © Keren Kalif ‫של‬ ‫המקורי‬ ‫שערכו‬ ‫לב‬ ‫נשים‬ X ‫נהרס‬ ‫את‬ ‫לבצע‬ ‫האם‬ ‫מחליטים‬ ‫אנו‬ ‫בה‬ ‫הנקודה‬ ‫זוהי‬ ‫לצאת‬ ‫או‬ ,‫נוספת‬ ‫פעם‬ ‫התהליך‬ ‫כל‬
  • 6.
    ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬ –‫מספר‬ ‫של‬ ‫זרימה‬ ‫תרשים‬ 6 © Keren Kalif ‫של‬ ‫ערכו‬ ‫את‬ ‫שמרנו‬ ‫זה‬ ‫במקרה‬ X -‫ב‬ temp ‫של‬ ‫המקורי‬ ‫ערכו‬ ‫וכך‬ X ‫נשמר‬
  • 7.
    .1 ‫הגדר‬ sum=0 .2 ‫לתוך‬ ‫מספר‬ ‫קלוט‬ X .3 ‫הגדר‬ temp=X .4 ‫עוד‬‫כל‬ temp > 0 : )a -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬ temp -‫ל‬ ‫אותה‬ ‫והוסף‬ sum )b -‫מ‬ ‫קצץ‬ temp ‫ימנית‬ ‫ספרה‬ .5 ‫את‬ ‫הצג‬ sum – ‫מספר‬ ‫של‬ ‫ספרותיו‬ ‫סכום‬ ‫חישוב‬ ‫פורמאלית‬ ‫כתיבה‬ 7 © Keren Kalif :‫יבשה‬ ‫הרצה‬ sum = 0 X = 472 temp = 472 sum = 2 sum = 9 sum = 13 temp = 47 temp = 4 temp = 0 ‫מעיד‬ "‫עוד‬ ‫"כל‬ ‫במושג‬ ‫שימוש‬ ‫עליו‬ ‫לחזור‬ ‫שיש‬ ‫קטע‬ ‫על‬
  • 8.
     ‫עד‬ ‫מספרים‬ ‫לקלוט‬‫יש‬ ‫מספר‬ ‫יקלט‬ ‫אשר‬ ‫את‬ ‫להציג‬ ‫יש‬ .‫שלילי‬ ‫(לא‬ ‫המספרים‬ ‫ממוצע‬ ‫השלילי‬ ‫המספר‬ ‫כולל‬ .)‫שהוכנס‬ ‫ממוצע‬ ‫חישוב‬ 8 © Keren Kalif ‫לבצע‬ ‫האם‬ ‫מחליטים‬ ‫אנו‬ ‫בה‬ ‫הנקודה‬ ‫זוהי‬ ‫לצאת‬ ‫או‬ ,‫נוספת‬ ‫פעם‬ ‫התהליך‬ ‫כל‬ ‫את‬ ‫ורק‬ ‫אך‬ ‫למעלה‬ ‫לחזור‬ ‫ניתן‬ ‫תנאי‬ ‫בדיקת‬ ‫שהינה‬ ‫לפעולה‬
  • 9.
    ‫מתוקן‬ - ‫ממוצע‬‫חישוב‬ 9 © Keren Kalif ‫במספר‬ ‫כבר‬ ‫אם‬ ‫יקרה‬ ‫מה‬ ?‫שלילי‬ ‫ערך‬ ‫יוקלד‬ ‫הראשון‬ ‫ורק‬ ‫אך‬ ‫למעלה‬ ‫לחזור‬ ‫ניתן‬ ‫מדוע‬ ?‫תנאי‬ ‫בדיקת‬ ‫שהינה‬ ‫לפעולה‬ !‫לסיום‬ ‫הלולאה‬ ‫את‬ ‫לקדם‬ ‫מנת‬ ‫על‬ ‫עלינו‬ ‫זו‬ ‫שבתצורה‬ ‫לב‬ ‫נשים‬ ‫הקליטה‬ ‫פעולת‬ ‫את‬ ‫לשכפל‬ ‫הלולאה‬ ‫ובתוך‬ ‫לפני‬
  • 10.
    10 © Keren Kalif (‫מתוקן‬ - ‫ממוצע‬ ‫חישוב‬ 2 )
  • 11.
    .1 ‫הגדר‬ counter=0, sum=0 .2 ‫מספר‬ ‫קלוט‬ X .3 ‫עוד‬‫כל‬ 0 ≤ X : )a ‫את‬ ‫הוסף‬ X -‫ל‬ sum )b ‫את‬ ‫הגדל‬ counter -‫ב‬ 1 )c -‫ל‬ ‫נוסף‬ ‫מספר‬ ‫קלוט‬ X .4 ‫של‬ ‫ערכו‬ ‫אם‬ counter ‫הוא‬ 0 : )a "‫חיוביים‬ ‫מספרים‬ ‫הוקלדו‬ ‫"לא‬ :‫הצג‬ .5 :‫אחרת‬ )a ‫החישוב‬ ‫תוצאת‬ ‫את‬ ‫הצג‬ sum/counter ‫פורמאלית‬ ‫כתיבה‬ :‫ממוצע‬ ‫חישוב‬ 11 © Keren Kalif ‫עבור‬ ‫למשל‬ ,‫יבשה‬ ‫הרצה‬ 7  2  1 :- counter = 0 sum = 0 X = 7 sum = 7 sum = 9 counter = 1 counter = 2 X = 2 X = 1- ‫המתחיל‬ ‫לקטע‬ ‫רק‬ ‫לחזור‬ ‫ניתן‬ ‫פורמאלית‬ ‫בכתיבה‬ :‫לב‬ ‫נשים‬ ‫סעיף‬ ‫ולכן‬ ,"‫עוד‬ ‫ב"כל‬ 2 ‫סעיף‬ ‫בתור‬ ‫שוב‬ ‫כתוב‬ 3C
  • 12.
     ‫עבור‬ ,‫למשל‬ 123 ‫לייצר‬ ‫יש‬ ‫המספר‬‫את‬ 321  ‫לבודד‬ ‫צריך‬ ‫זה‬ ‫במקרה‬ ‫גם‬ ‫ולכן‬ ‫מהספרות‬ ‫אחת‬ ‫כל‬ ‫את‬ ‫קצץ‬/‫"תן‬ ‫בפעולות‬ ‫נשתמש‬ "‫ימנית‬ ‫ספרה‬  ‫בפעולות‬ ‫גם‬ ‫להשתמש‬ ‫ניתן‬ ‫חיבור‬ ,‫(כפל‬ ‫בסיסיות‬ ‫חשבון‬ )'‫וכד‬ ‫ההופכי‬ ‫המספר‬ ‫יצירת‬ 12 © Keren Kalif
  • 13.
    .1 ‫הגדר‬ newNum = 0 .2 ‫לתוך‬‫מספר‬ ‫קלוט‬ X .3 ‫הגדר‬ temp = X .4 ‫עוד‬ ‫כל‬ temp > 0 : )a -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬ temp -‫ל‬ ‫מימין‬ ‫אותה‬ ‫והוסף‬ newNum )b -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ temp .5 ‫את‬ ‫הצג‬ newNum ‫פורמאלית‬ ‫ובכתיבה‬ 13 © Keren Kalif ‫אין‬ ,‫מספר‬ ‫לייצר‬ ‫מאיתנו‬ ‫מבקשים‬ ‫שכאשר‬ ‫לב‬ ‫נשים‬ :‫הפעולה‬ ‫את‬ ‫ברשותנו‬ ..."‫המספר‬ ‫לימין‬ ‫ספרה‬ ‫"הצמד‬ :‫יבשה‬ ‫הרצה‬ newNum = 0 X = 123 temp = 123 temp = 12 temp = 1 temp = 0 newNum = 03 newNum = 032 newNum = 0321
  • 14.
     ‫להכניס‬ ‫כלומר‬ ,‫למספר‬‫מימין‬ ‫ספרה‬ ‫להוסיף‬ ‫רוצים‬ ‫כאשר‬ :‫הבאות‬ ‫הפעולות‬ ‫את‬ ‫לבצע‬ ‫יש‬ ,‫חדשה‬ ‫אחדות‬ ‫ספרת‬ ◦ ‫פי‬ ‫המספר‬ ‫את‬ ‫הכפל‬ 10 )‫החדשה‬ ‫האחדות‬ ‫לספרת‬ ‫מקום‬ ‫לייצר‬ ‫(כדי‬ ◦ ‫החדשה‬ ‫הספרה‬ ‫את‬ ‫הוסף‬  ‫המספר‬ ‫עבור‬ :‫דוגמא‬ 65 ‫הספרה‬ ‫את‬ ‫להוסיף‬ ‫נרצה‬ 3 ,‫מימין‬ ‫מספר‬ ‫את‬ ‫לייצר‬ ‫כדי‬ ‫כלומר‬ 653 : ◦ 65 * 10 = 650 ◦ 650 + 3 = 653 ‫למספר‬ ‫מימין‬ ‫ספרה‬ ‫הוספת‬ 14 © Keren Kalif
  • 15.
  • 16.
    .1 ‫הגדר‬ newNum = 0 .2 ‫לתוך‬‫מספר‬ ‫קלוט‬ X .3 ‫הגדר‬ temp = X .4 ‫עוד‬ ‫כל‬ temp > 0 : )a ‫של‬ ‫הערך‬ ‫את‬ ‫הכפל‬ newNum ‫פי‬ 10 )b -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬ temp -‫ל‬ ‫אותה‬ ‫והוסף‬ newNum )c -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ temp .5 ‫את‬ ‫הצג‬ newNum ‫פורמאלית‬ ‫ובכתיבה‬ 16 © Keren Kalif :‫יבשה‬ ‫הרצה‬ newNum = 0 X = 123 temp = 123 temp = 12 temp = 1 temp = 0 newNum = 30 newNum = 32 newNum = 321 newNum = 3 newNum = 320
  • 17.
     ‫בחשבון‬ ‫לקחת‬ ‫יש‬‫מספר‬ ‫של‬ ‫משמאלו‬ ‫ספרה‬ ‫מוסיפים‬ ‫כאשר‬ '‫וכד‬ ‫מאות‬ / ‫עשרות‬ / ‫אחדות‬ :‫תופסת‬ ‫היא‬ ‫מיקום‬ ‫איזה‬  ‫למספר‬ ‫רוצים‬ ‫אם‬ :‫דוגמא‬ 47 ‫הספרה‬ ‫את‬ ‫להוסיף‬ 3 ‫הערך‬ ‫את‬ ‫להוסיף‬ ‫יש‬ ‫למעשה‬ ,‫משמאלו‬ 300 ◦ 47 + 300 = 347 ◦ ‫של‬ ‫במיקום‬ ‫תהייה‬ ‫כבר‬ ‫היא‬ ,‫משמאל‬ ‫נוספת‬ ‫ספרה‬ ‫להוסיף‬ ‫נרצה‬ ‫אם‬ ‫האלפים‬ ‫למספר‬ ‫משמאל‬ ‫ספרות‬ ‫הוספת‬ 17 © Keren Kalif
  • 18.
     ‫המספר‬ ‫את‬ ‫נייצר‬ 724 :‫משמאלו‬‫ספרות‬ ‫הוספת‬ ‫כדי‬ ‫תוך‬ ◦ 4 2 7  ‫יהיה‬ ‫המספר‬ ‫בהתחלה‬ 0  ‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬ 4 ◦ 4 * 100 = 4 * 1 = 4  ‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬ 20 ◦ 2 * 101 = 2 * 10 = 20  ‫הערך‬ ‫את‬ ‫למספר‬ ‫נוסיף‬ 700 ◦ 7 * 102 = 7 * 100 = 700  ‫הוא‬ ‫המתקבל‬ ‫המספר‬ 724 - ‫למספר‬ ‫משמאל‬ ‫ספרות‬ ‫הוספת‬ ‫דוגמא‬ 18 © Keren Kalif :‫יבשה‬ ‫הרצה‬ :‫המספר‬ 0 :‫המספר‬ 4 :‫המספר‬ 24 :‫המספר‬ 724 ‫שהוספת‬ ‫החוקיות‬ ‫את‬ ‫לזהות‬ ‫ניתן‬ ‫חזקה‬ ‫למעשה‬ ‫היא‬ ‫משמאל‬ ‫ספרה‬ ‫של‬ ‫כלשהי‬ 10 -‫ב‬ ‫שגדלה‬ , 1 ‫פעם‬ ‫בכל‬
  • 19.
     ‫שערכן‬ ‫הספרות‬ ‫את‬‫רק‬ ‫המכיל‬ ‫מספר‬ ‫ולייצר‬ ‫מספר‬ ‫לקלוט‬ ‫יש‬ ‫זוגי‬  ‫המספר‬ ‫עבור‬ :‫דוגמא‬ 123467 ‫המספר‬ ‫יווצר‬ 246  :‫הפעולות‬ ‫הן‬ ‫לרשותינו‬ ‫העומדים‬ ‫הכלים‬ ◦ "‫ימנית‬ ‫ספרה‬ ‫קצץ‬/‫"תן‬ ◦ ‫חשבון‬ ‫פעולות‬ ◦ ‫זוגי‬ ‫הוא‬ ‫ערך‬ ‫האם‬ ‫בדיקה‬  ‫המיוצר‬ ‫המספר‬ ‫של‬ ‫משמאלו‬ ‫ספרות‬ ‫להוסיף‬ ‫עלינו‬ ‫זה‬ ‫במקרה‬ ‫הזוגיות‬ ‫הספרות‬ ‫את‬ ‫רק‬ ‫המכיל‬ ‫מספר‬ ‫יצירת‬ 19 © Keren Kalif
  • 20.
    ‫רק‬ ‫המכיל‬ ‫מספר‬‫יצירת‬ ‫הזוגיות‬ ‫הספרות‬ ‫את‬ 20 © Keren Kalif ‫למספר‬ ‫להוספה‬ ‫המתאים‬ ‫הערך‬ ‫ייצור‬ ‫את‬ ‫נכפיל‬ location ‫רק‬ ‫כהכנת‬ ,‫ספרה‬ ‫והוספנו‬ ‫במידה‬ ‫הבאה‬ ‫לספרה‬ ‫התשתית‬
  • 21.
    .1 ‫הגדר‬ location=1, newNum=0 .2 ‫לתוך‬ ‫ערך‬‫קלוט‬ X .3 ‫הגדר‬ temp=X .4 ‫עוד‬ ‫כל‬ temp > 0 : )a ‫של‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬ temp :‫בצע‬ ‫זוגית‬ ‫ואם‬ , .i ‫פי‬ ‫הספרה‬ ‫את‬ ‫הכפל‬ location -‫ל‬ ‫אותה‬ ‫והוסף‬ newNum .ii ‫הכפל‬ location ‫פי‬ 10 )b -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ temp .5 ‫את‬ ‫הצג‬ newNum ‫פורמאלית‬ ‫ובכתיבה‬ 21 © Keren Kalif :‫יבשה‬ ‫הרצה‬ location = 1 X = 258 newNum = 0 temp = 258 newNum = 8 newNum = 28 location = 10 location = 100 temp = 25 temp = 2 temp = 0
  • 22.
     ‫לקלוט‬ ‫יש‬ 2 ‫ולייצר‬ ,‫שלהם‬‫הספרות‬ ‫בכמות‬ ‫הזהים‬ ‫מספרים‬ ‫שני‬ ‫של‬ ‫הספרות‬ ‫מיזוג‬ ‫הם‬ ‫בו‬ ‫שהספרות‬ ‫כך‬ ‫חדש‬ ‫מספר‬ :‫המספרים‬ ◦ ‫השני‬ ‫מהמספר‬ ‫שניה‬ ‫וספרה‬ ‫הראשון‬ ‫מהמספר‬ )‫(משמאל‬ ‫ראשונה‬ ‫ספרה‬ ◦ ‫השני‬ ‫מהמספר‬ ‫רביעית‬ ‫וספרה‬ ‫הראשון‬ ‫מהמספר‬ ‫שלישית‬ ‫ספרה‬ ◦ '‫וכו‬  :‫דוגמא‬ ◦ ‫המספרים‬ ‫עבור‬ 37 -‫ו‬ 81 ‫המספר‬ ‫את‬ ‫לייצר‬ ‫יש‬ 3871  :‫הפעולה‬ ‫אסטרטגיית‬ ,‫לשמאל‬ ‫מימין‬ ‫ספרות‬ ‫לבודד‬ ‫וניתן‬ ‫מאחר‬ ‫כאשר‬ ,‫משמאל‬ ‫ספרות‬ ‫הוספת‬ ‫על‬ ‫תתבסס‬ ‫החדש‬ ‫המספר‬ ‫בניית‬ ‫השני‬ ‫מהמספר‬ ‫דווקא‬ ‫מתחילים‬ ‫באורכם‬ ‫זהים‬ ‫מספרים‬ ‫שני‬ ‫של‬ ‫ספרות‬ ‫מיזוג‬ 22 © Keren Kalif
  • 23.
  • 24.
    .1 -‫ל‬ ‫מספר‬ ‫קלוט‬ num1 .2 -‫ל‬‫מספר‬ ‫קלוט‬ num2 .3 ‫הגדר‬ newNum=0 .4 ‫הגדר‬ location=1 .5 ‫עוד‬ ‫כל‬ num2 > 0 : )a -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫בודד‬ num2 -‫ב‬ ‫אותה‬ ‫הכפל‬ , location -‫ל‬ ‫והוסף‬ newNum )b ‫את‬ ‫הכפל‬ location ‫פי‬ 10 )c -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫בודד‬ num1 -‫ב‬ ‫אותה‬ ‫הכפל‬ , location -‫ל‬ ‫והוסף‬ newNum )d ‫את‬ ‫הכפל‬ location ‫פי‬ 10 )e -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ num2 )f -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ num1 .6 ‫את‬ ‫הצג‬ newNum ‫פורמאלית‬ ‫ובכתיבה‬ 24 © Keren Kalif :‫יבשה‬ ‫הרצה‬ num1 = 37 newNum = 0 location = 1 num2 = 81 newNum = 1 newNum = 71 location = 10 newNum = 871 newNum = 3871 location = 100 num1 = 3 num1 = 0 num2 = 8 num2 = 0 location = 1000 location = 10000
  • 25.
     .‫ביותר‬ ‫הגדולה‬ ‫הספרה‬‫את‬ ‫והצג‬ ‫מספר‬ ‫מהמשתמש‬ ‫קלוט‬  :‫דוגמאות‬ ◦ ‫עבור‬ 1234 ‫יוצג‬ 4 ◦ ‫עבור‬ 8997 ‫יוצג‬ 9 ◦ ‫עבור‬ 1212 ‫יוצג‬ 2  ‫הספרה‬ ‫ערך‬ ‫עם‬ ‫המקסימום‬ ‫את‬ ‫נאתחל‬ :‫הפעולה‬ ‫אסטרטגיית‬ ‫הספרה‬ ‫אם‬ .‫אחרת‬ ‫ספרה‬ ‫פעם‬ ‫כל‬ ‫ונבודד‬ )‫(הימנית‬ ‫הראשונה‬ ‫נעדכן‬ ,‫כה‬ ‫עד‬ ‫שראינו‬ ‫המקסימלית‬ ‫מהספרה‬ ‫גדולה‬ ‫הנוכחית‬ .‫אותה‬ ‫ביותר‬ ‫הגדולה‬ ‫הספרה‬ ‫מציאת‬ 25 © Keren Kalif
  • 26.
  • 27.
    .1 ‫לתוך‬ ‫מספר‬ ‫מהמשתמש‬‫קלוט‬ num .2 ‫את‬ ‫הגדר‬ maxDigit ‫של‬ ‫הימנית‬ ‫בספרה‬ ‫אותה‬ ‫ואתחל‬ num .3 -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ num .4 -‫ב‬ ‫נותרו‬ ‫עוד‬ ‫כל‬ num ( ‫ספרות‬ num>0 :) )a -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫תן‬ num ‫בתוך‬ ‫אותה‬ ‫ואחסן‬ temp )b ‫אם‬ temp > maxDigit : .i :‫עדכן‬ maxDigit = temp )c -‫מ‬ ‫ימנית‬ ‫ספרה‬ ‫קצץ‬ num .5 ‫את‬ ‫הצג‬ maxDigit ‫פורמאלית‬ ‫ובכתיבה‬ 27 © Keren Kalif :‫יבשה‬ ‫הרצה‬ num = 387 temp = 8 maxDigit = 7 num = 38 num = 3 num = 0 maxDigit = 8 temp = 3
  • 28.
     ‫לקלוט‬ ‫יש‬ 2 ‫ולהגיד‬ ,)‫האורך‬‫באותו‬ ‫בהכרח‬ ‫(שאינם‬ ‫מספרים‬ .‫בו‬ ‫יש‬ ‫יותר‬ ‫ספרות‬ ‫וכמה‬ ,‫ספרות‬ ‫יותר‬ ‫יש‬ ‫מספר‬ ‫לאיזה‬  :‫דוגמא‬ ◦ ‫המספר‬ ‫עבור‬ 1234 ‫והמספר‬ 99 ‫שבמספר‬ ‫לאמר‬ ‫יש‬ 1234 ‫יש‬ 2 .‫השני‬ ‫במספר‬ ‫מאשר‬ ‫יותר‬ ‫ספרות‬  :‫הפעולה‬ ‫אסטרטגיית‬ ◦ .‫הספרות‬ ‫יגמרו‬ ‫לאחד‬ ‫אשר‬ ‫עד‬ ‫זמנית‬-‫בו‬ ‫המספרים‬ ‫משני‬ ‫ספרות‬ ‫נקצץ‬ ◦ ‫אשר‬ ‫עד‬ ‫שנותר‬ ‫למספר‬ ‫לקצץ‬ ‫שיש‬ ‫הספרות‬ ‫כמות‬ ‫את‬ ‫לספור‬ ‫נתחיל‬ .‫הספרות‬ ‫לו‬ ‫גם‬ ‫יגמרו‬ ‫ארוך‬ ‫יותר‬ ‫מספר‬ ‫זיהוי‬ 28 © Keren Kalif
  • 29.
    ‫זרימה‬ ‫תרשים‬ 29 © KerenKalif ‫שיש‬ ‫המספר‬ ‫מי‬ ‫גם‬ ‫להציג‬ ‫יש‬ ‫ובסוף‬ ‫מאחר‬ ‫את‬ ‫לשמור‬ ‫צורך‬ ‫יש‬ ‫ספרות‬ ‫יותר‬ ‫בו‬ ‫עם‬ ‫ולעבוד‬ ‫המקוריים‬ ‫המספרים‬ temp ‫מהמספרים‬ ‫אחד‬ ‫בלפחות‬ ‫לפה‬ ‫מגיעים‬ ‫כאשר‬ ‫מקסימום‬ ‫ניכנס‬ ‫בוודאות‬ ‫לכן‬ ,‫ספרות‬ ‫אין‬ ‫כבר‬ ‫לבדוק‬ ‫צורך‬ ‫מבלי‬ ,‫שסופרות‬ ‫מהלולאות‬ ‫לאחת‬ ‫ספרות‬ ‫בו‬ ‫שנותרו‬ ‫המספר‬ ‫מהו‬
  • 30.
     ‫של‬ ‫בכמות‬ ‫כוכביות‬‫ולהציג‬ ,‫מהמשתמש‬ ‫מספר‬ ‫לקלוט‬ ‫נרצה‬ ‫שנקלט‬ ‫המספר‬  :‫הן‬ ‫לרשותינו‬ ‫שעומדות‬ ‫הפעולות‬ ◦ "‫אחת‬ ‫כוכבית‬ ‫"הדפס‬ ◦ ‫חשבוניות‬ ‫פעולות‬  ‫והוא‬ ,‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫יש‬ ‫זה‬ ‫שבתרגיל‬ ‫להבחין‬ ‫ניתן‬ .‫כוכבית‬ ‫הצגת‬  ‫פעמים‬ ‫של‬ ‫מסוימת‬ ‫כמות‬ ‫בדיוק‬ ‫יקרה‬ ‫זה‬ ‫שתהליך‬ ‫לדאוג‬ ‫צריך‬ ‫כוכביות‬ ‫של‬ ‫כלשהי‬ ‫כמות‬ ‫הצגת‬ 30 © Keren Kalif
  • 31.
    ‫זרימה‬ ‫תרשים‬ 31 © KerenKalif counter ‫כמות‬ ‫את‬ ‫מכיל‬ ‫ולכן‬ ,‫כה‬ ‫עד‬ ‫שהוצגו‬ ‫הכוכביות‬ -‫ל‬ ‫מאותחל‬ ‫בהתחלה‬ 0 ‫הצגנו‬ ‫לא‬ ‫עוד‬ ‫כל‬ ‫יחזור‬ ‫התהליך‬ ‫המבוקשת‬ ‫הכוכביות‬ ‫כמות‬ ‫כל‬ ‫את‬ ‫את‬ ‫נעדכן‬ ,‫כוכבית‬ ‫הצגת‬ ‫לאחר‬ counter -‫ב‬ ‫הגדלתו‬ ‫ע"י‬ 1
  • 32.
    .1 ‫מספר‬ ‫קלוט‬ X .2 ‫הגדר‬ counter=0 .3 ‫עוד‬ ‫כל‬ counter< X : )a ‫כוכבית‬ ‫הצג‬ )b ‫את‬ ‫הגדל‬ counter -‫ב‬ 1 ‫פורמאלית‬ ‫ובכתיבה‬ 32 © Keren Kalif :‫יבשה‬ ‫הרצה‬ X = 3 counter = 0 ‫כבר‬ ,‫הלולאה‬ ‫תחילת‬ ‫שעם‬ ‫הוא‬ ‫זו‬ ‫בדוגמא‬ ‫המיוחד‬ .‫תבצע‬ ‫שהיא‬ ‫הסיבובים‬ ‫כמות‬ ‫ידועה‬ ..‫הבא‬ ‫בשקף‬ ‫שמוצג‬ ‫הפורמט‬ ‫את‬ ‫יש‬ ‫זה‬ ‫למקרה‬ counter = 1 counter = 2 counter = 3 * * *
  • 33.
    .1 ‫מספר‬ ‫קלוט‬ X .2 ‫עבור‬ i ‫בטווח‬ 1 ... X : )a ‫כוכבית‬ ‫הצג‬ (‫פורמאלית‬ ‫ובכתיבה‬ 2 ) 33 © Keren Kalif ‫של‬ ‫ערכו‬ ‫זו‬ ‫כתיבה‬ ‫בצורת‬ i -‫ב‬ ‫גדל‬ 1 ‫אוטומטי‬ ‫באופן‬ -‫מ‬ ‫החל‬ ,‫פעם‬ ‫בכל‬ 1 ‫להיות‬ ‫מגיע‬ ‫שערכו‬ ‫עד‬ X ‫כולל‬ :‫יבשה‬ ‫הרצה‬ X = 3 i = 1 i = 2 i = 3 * * *
  • 34.
     -‫מ‬ ‫המספרים‬ ‫כל‬‫את‬ ‫ולהציג‬ ‫מספר‬ ‫מהמשתמש‬ ‫לקלוט‬ ‫יש‬ 1 ‫עד‬ .‫זה‬ ‫למספר‬  ‫במקום‬ ‫הפעם‬ ‫רק‬ ,‫מקודם‬ ‫כמו‬ ‫בעיה‬ ‫אותה‬ ‫בדיוק‬ ‫למעשה‬ ‫זוהי‬ .‫מספר‬ ‫להדפיס‬ ‫יש‬ ,‫כוכבית‬ ‫להדפיס‬ ‫המספרים‬ ‫כל‬ ‫הצגת‬ 34 © Keren Kalif  ‫מספר‬ ‫קלוט‬ X  ‫עבור‬ i ‫בטווח‬ 1 ... X : ◦ ‫את‬ ‫הצג‬ i
  • 35.
     :‫הבאים‬ ‫במושגים‬ ‫ונשתמש‬,‫הטקסט‬ ‫פשטות‬ ‫על‬ ‫נקפיד‬ ◦ >‫<תנאי‬ ‫עוד‬ ‫כל‬ ‫מתקיים‬ ‫התנאי‬ ‫עוד‬ ‫כל‬ ‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫עבור‬ – ◦ ‫עבור‬ i >‫<סוף‬...>‫<התחלה‬ ‫בטווח‬ ‫כמות‬ ‫עצמו‬ ‫על‬ ‫שחוזר‬ ‫תהליך‬ ‫עבור‬ – ‫פעמים‬ ‫של‬ ‫ידועה‬ ◦ ‫אחרת‬ >‫<תנאי‬ ‫אם‬ ‫מסויים‬ ‫תנאי‬ ‫קיום‬ ‫בעת‬ ‫פעולות‬ ‫ביצוע‬ ‫עבור‬ –  ‫מבנה‬ ‫את‬ ‫המשקפת‬ )‫(אינדנטציה‬ ‫מדורגת‬ ‫כתיבה‬ ‫על‬ ‫נקפיד‬ ‫התוכנית‬ ‫דגשים‬ - ‫פורמלית‬ ‫כתיבה‬ 35
  • 36.
     ‫תלויים‬ ‫כאשר‬ ‫למשל‬,‫מראש‬ ‫ידוע‬ ‫אינו‬ ‫הסיבובים‬ ‫מספר‬ ‫כאשר‬ ...‫עוד‬ ‫"כל‬ ‫במבנה‬ ‫נשתמש‬ ‫פעם‬ ‫כל‬ ‫המשתמש‬ ‫של‬ ‫בקלט‬  ‫נשתמש‬ ‫הלולאה‬ ‫תחילת‬ ‫עם‬ ‫ידוע‬ ‫הסיבובים‬ ‫מספר‬ ‫כאשר‬ ‫"עבור‬ ‫במבנה‬ i ‫אתחול‬ ‫את‬ ‫בתוכו‬ ‫כולל‬ ‫זה‬ ‫מבנה‬ ‫שכן‬ ,"...‫בטווח‬ ‫המונה‬ ‫וקידום‬ ‫לולאות‬ ‫עם‬ ‫לשאלות‬ ‫אצבע‬ ‫כללי‬ 36 © Keren Kalif
  • 37.
     ‫לולאות‬  ‫זרימה‬ ‫תרשים‬ ‫הפתרון‬‫הצגת‬  ‫קוד‬-‫בפסאודו‬ ‫הפתרון‬ ‫כתיבת‬ 37 :‫למדנו‬ ‫זו‬ ‫ביחידה‬