לולאות- Loops שני סוגי לולאות:
-
Upload
judith-mckenzie -
Category
Documents
-
view
248 -
download
4
description
Transcript of לולאות- Loops שני סוגי לולאות:
![Page 1: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/1.jpg)
Loops -לולאות :שני סוגי לולאות
1 .Do While Loop תיכנס ללולאה אם תנאי כלשהו מתקיים, ותמשיך - להיכנס ללולאה כל עוד התנאי ממשיך להתקיים
:וריאציהDo Until Loop ,תיכנס ללולאה אם תנאי כלשהו לא מתקיים - ותמשיך להיכנס ללולאה כל עוד התנאי ממשיך לא להתקיים
1
Do-While-Loop
לא מתבצע אם התנאי לא קיים בהתחלה
Do Until Loop
לא מתבצע אם התנאי קיים בהתחלה
![Page 2: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/2.jpg)
Loops -לולאות 2 .Do Loop While תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי -
מתקיים, ואם כן, תמשיך להיכנס ללולאה :ווריאציהDo Loop Until תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי -
לא מתקיים, ואם לא, תמשיך להיכנס ללולאה
2
Do-Loop-While
.מתבצע לפחות פעם אחת ובודק. אם התנאי קיים ממשיך
Do-Loop-Until
.מתבצע לפחות פעם אחת ובודק. אם התנאי לא קיים ממשיך
![Page 3: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/3.jpg)
Do-While-Loop קידוד -
3
Do [{While |Until}] ביטוי בוליאני
[פקודות]
[Exit Do]
[פקודות]
Loop
Do While – ממשיכים להיכנס ללולאה כל עוד התנאימתקיים, ויוצאים מיד כאשר הוא מפסיק להתקיים
Do Until - ממשיכים להיכנס ללולאה כל עוד התנאי לאמתקיים, ויוצאים מיד כאשר הוא מתחיל להתקיים
מיושרים. התוכן של הלולאה מוכנס Loop ו-Doהערה: המילים פנימה.
![Page 4: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/4.jpg)
Alternative Coding for Do-While-Loop
4
הוא כדלהלן:Doהשימוש הכי נפוץ של פקודת
Do While ביטוי בוליאני
[פקודות]
[Exit Do]
[פקודות]
Loop
היות והוא כל כך נפוץ, קיימת צורה מיוחדת עבורו:
While ביטוי בוליאני
[פקודות]
[Exit While]
[פקודות]
End While
![Page 5: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/5.jpg)
Do-Whileתרשים זרימה עבור
5
סיים
Count 1
Count<=10 Count Count+1Count
התחל
![Page 6: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/6.jpg)
תוכנית ללולאה פשוטה Dim Count As Integer Count = 1 Do While (Count <= 10) Console.WriteLine _("Number of cycle through the loop: {0}",
Count) Count = Count + 1 Loop
6
![Page 7: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/7.jpg)
+=אופרטור חדש: במקוםCount = Count + 1 :נוכל לכתוב ,Count += 1
אופרטורים דומים: יהיx = 6, y = “Hello נבצע את .“ הפעולות הבאות אחת אחרי השניה.
-= x -=3 means x = x – 3 => x = 3*= x *=3 means x = x * 3 => x = 9/= x /=3 means x = x / 3 => x = 3&= y &=“ John” means y = y & ”John”, y = “Hello John”
7
![Page 8: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/8.jpg)
דוגמא
8
קלטים:
A 8 – ספרה, למשל
B מספר כלשהו עם הרבה – 57382ספרות, למשל
סיפרה A אם Trueפלט: False, אחרת Bהמוכלת ב-
![Page 9: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/9.jpg)
9
התחל
B=0 or Found C B Mod 10
סיים
Found <--False
לא
A, B
כן
C=A
Found True
B B\10Found
תרשים זרימה
![Page 10: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/10.jpg)
VBקוד ב-
10
Sub Main ()
Dim Found as Boolean
Dim A ,B, C, D as IntegerConsole.writeline (“What number do you want?”)
D= console.readline()B = DConsole.writeline (“What digit do you want?”)
A = console.readline()
Do Until B = 0 or Found
C = B Mod 10
If C = A Then
Found = True: Console.Writeline (“{0} contained in {1}”, A, D)
Else
B = B \ 10
End If
Loop
End Sub
חילוק שלם נותן רק אתהחלק השלם של המנה
![Page 11: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/11.jpg)
פתרון יותר קל ויותר קצרSub MainDim A_IN, B_IN as stringConsole.writeline (“What number do you
want?”)B_IN = console.readline()Console.writeline (“What digit do you want?”)A_IN = console.readline()If B_IN.contains (A_IN) then
Console.Writeline (“{0} contained in {1}”, A_IN,B_IN)End IfEnd Sub 11
![Page 12: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/12.jpg)
לולאות - בדיקה בסוף
12
Do [פקודות]
[Exit Do]
[פקודות]
Loop [{While |Until}] בוליאני ביטוי
Do Loop While - Next iteration only if condition holds
Do Loop Until - Next iteration only if condition doesn’t hold
היות והתנאי נבדק רק בסוף, תמיד יש לפחות איטרציה אחת
![Page 13: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/13.jpg)
Do-Loop-While/Until
13
Count Count + 1
Count > 10
התחל
Count 11
Count
סיים
לא
![Page 14: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/14.jpg)
Code: Ex2.8 –DoLoopUntilדוגמא של לולאה שמתבצעת פעם אחת גם כאשר התנאי לא
מתקייםDim Count As IntegerCount = 11 ‘still allows one loopDo Console.WriteLine _
("Number of cycle through the loop: " & Count)
Count = Count + 1Loop Until Count > 10
14
![Page 15: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/15.jpg)
עוד דוגמא
15
קלט: טקסט באנגלית.
כללי איות:
c יש כל אות חוץ מ-i, אם מיד לפני ה-e קודם לאות iהאות (1)
c יש האות e, אם מיד לפני ה-i קודם לאות eהאות (2)
i תמיד קודם לאות eבהתחלת מילה האות (3)
מופיע במילה, ובנוסף מיקומו iפלט: מספר הפעמים שהאות (אלא i מופיע לפני eשל כל טעות, כאשר טעות קורית כאשר
והאות הקודמת e מופיע לפני iאם זה בהתחלת המלה), או , למשל cהייתה
chief not cheif, but
receive not recieve
![Page 16: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/16.jpg)
טעויות אפשריות
16
טעותע yטעותטע
><c c first
e i second
i e third
טעותi First letter in sentencee Second letter in
sentence
![Page 17: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/17.jpg)
17
התחל
pos = -1?
סיים
pos -1, num 0
לא
Text
כן
Check for Spelling Mistake
![Page 18: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/18.jpg)
Check for Problem
pos =-1”
” c “האם יש ” eלפניו ו-“
אחריו
חזור
לא כן
" i“לא – יש במקום
האחרון במילה
מספר פעמים מופיע i שהאות numשווה ל-
pos = 0 האם במקום
pos+1” eיש “
בעיה במקום pos
כן
לאכן
לא
pos הבא iמיקומו של האות
pos = 1
בעיה במקום pos
כן
כן
כן
pos >= 2<mila.length - 1
לא
” c “האם יש ” eלפניו ו-“
ceאחריו או "" בעיה במקום לפניו
pos
כן
האם יש "" ceלפניו
בעיה במקום pos
לא
לא
לאכן
num +=1
![Page 19: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/19.jpg)
VBקוד ב-
19
Sub Main()
Dim mila As String ‘ pos is present position, num is number of i’s
Dim pos, num As Integer Console.WriteLine("insert a word:")
mila = Console.ReadLine() pos = -1
Do pos = mila.IndexOf("i", pos + 1)
If pos = -1 Then Console.WriteLine("The number of i's is {0}", num)
ElseIf pos = 0 Then If mila.Chars(pos + 1) = "e" Then Console.WriteLine("taut bekom 0")
ElseIf pos = 1 Then If mila.Chars(0) = "c" And mila.Chars(2) = "e" Then
Console.WriteLine("taut bekom 1") End If
![Page 20: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/20.jpg)
Code in VB
20
ElseIf pos >= 2 And pos < mila.Length - 1 Then If mila.Chars(pos - 1) = "c" And mila.Chars(pos + 1) = "e_ "
Or mila.Chars(pos - 2) <> "c" And mila.Chars(pos - 1) = "e" Then Console.WriteLine("taut bekom {0}", pos)
End IfElse
If mila.Chars(pos - 2) <> "c" And mila.Chars(pos - 1) = "e" Then Console.WriteLine("taut bekom {0}", pos)
End IfEnd Ifnum += 1Loop Until pos = -1 end sub
![Page 21: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/21.jpg)
הסבר התוכנית" עוברים דרך המילה בקפיצות מאותi" לאות "i עד "
" בעזרת פקודת iשמגיעים לסוף המילה. מוצאים כל אות "indexof כאשר בכל פעם מתחילים את החיפוש מן התו
" הקודם. iשבא אחרי ה- " אפשרויות, ומתייחסים לכל אחת בנפרד.5ישנן 1 .pos = -1 זה קורה כאשר לא נשארו הופעות נוספות .
של האות (או שכלל לא היו). מדפיסים אז את מספר ההופעות
2 .pos=0" דהיינו שיש ,i במקום הראשון במלה, ואז אם "" במקום השני התוכנית מתריעה על טעותeיש "
3 .pos=1" דהיינו שיש ,i במקום השני במלה, , ואז אם "" אחריו, התוכנית מתריעה על טעותe" לפניו ו- "cיש "
21
![Page 22: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/22.jpg)
הסבר התוכנית4 .pos>=2 אבל לא שווה למקום האחרון במילה דהיינו ,
" במקום שני והלאה אבל לא במקום האחרון, ואז iשיש "" x" לפניו, כאשר "xe" אחריו, או "e" לפניו ו- "cאם יש "
", אזי שוב פעם התוכנית מתריעה cמסמן כל אות חוץ מ-"על טעות.
5" יש .i" במקום האחרון, ואז אם יש "xe" לפניו, כאשר "x "", אזי שוב פעם התוכנית מתריעה cמסמן כל אות חוץ מ-"
על טעות.
22
![Page 23: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/23.jpg)
מאפיינים של לולאות1אתחל משתנה האינדקס .
2 בדוק תנאי (או בהתחלה או בסוף של הלולאה) שמכיל .
את משתנה האינדקס. תנאי זה חייב לשנות את ערכו
באיזשהו מקום בלולאה, אחרת נגיע ללולאה אינסופית
3.הגדל את ערכו של משתנה האינדקס.
23
![Page 24: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/24.jpg)
For – Next Loop לולאתFor – Next המאפיינים לפקודה אחת. 3 משלב כל
General Format:For counter [as datatype] = first to last [Step כמות][פקודות] [Exit For][פקודות] Next [counter]
24
![Page 25: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/25.jpg)
Ex2.9-BasicForLoop1: Dim Count As Integer, Ans As
String2: For Count = 1 To 103: Console.WriteLine("Counting at
{0}”, Count)4: Console.WriteLine("Another? Yes
or No")5: Ans = Console.ReadLine()6: If Ans.ToUpper = "NO" Then
Exit For 'Chance to leave early. 1 line If7: Next Count ‘The word count is
optional25
![Page 26: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/26.jpg)
–Ex2.9-BasicForLoop הסבר 2,3,8שורות :Basic For Loop-10 עד 1 מדפיס ערכים מ .
גידול, אתחול, ובדיקת תנאי הוא אוטומטי בפקודה זו. בשורה
היו מודפסים.9 ו-1,3,5,7 רק STEP 2, אילו הוספנו ,2
האפשרות של [2שורה .as datatype מאפשרת לנו [
, For Count as Integer = 1 To 10 ככה: 2לשכתב שורה
(לפעמים עובד גם Countואז לא צריכים להגדיר מראש את
).As Integerבלי להוסיף
מאפשרת יציאה מוקדמת מן הלולאה בעזרת 6שורה :Exit For.אם עונים לשאלה תשובה שלילית
26
![Page 27: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/27.jpg)
27
! N דוגמא - חישוב
התחל
i >N Natzeret<--Natzeret * i
סיים
Natzeret 1i1
ii + 1
לא
N
כן
![Page 28: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/28.jpg)
VBקוד ב-
28
Dim i as integer, Natzeret as integer, N as integer
Console.writeline (“What factorial do you want?”)
N = console.readline()
Natzeret = 1
For i = 1 to N
Natzeret = Natzeret * i ‘Natzeret *= i
Next
Console.writeline (Natzeret)
, N=0עבור הלולאה לא תתבצע כלל
![Page 29: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/29.jpg)
דוגמא קשה - פענוח ספרות רומיות מספר רומי מיוצג על ידי רצף של תווים כאשר לכל תו יש משמעות מספרית לפי
הערכים הבאים:I=1V=5X=10L=50C=100D=500M=1000
.מקובל לקרוא מספר רומי משמאל לימין וערכו המספרי שווה לסכום כל התווים.XXXVIII נכתב בייצוג רומי כך: 38לדוגמא המספר
:שנכתב על ידי 4כלל זה נכון לכל הספרות פרט ל IV 5-1 כלומר9 שנכתב על ידי IX 10-1 כלומר מיוצג על 40ובאותו האופן מיצגים את כל המספרים שמכילים ספרות אילו. לדוגמא
.MCMXCIX נכתב 1999 וכו'. לפי כלל זה המספר XL (50-10)ידי .לכתוב תוכנית המקבלת מספר רומי כמחרוזת ומחשבת את ערכו המספרי
29
![Page 30: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/30.jpg)
פענוח ספרות רומיות Module Module1
Sub Main() Dim I, V, X, L, C, D, M, lng, q, num As Integer Dim str, w As String I = 1 : V = 5 : X = 10 : L = 50 : C = 100 : D = 500 : M = 1000
Console.WriteLine(“Insert number in Roman numerals") Console.WriteLine("I = 1 : V = 5 : X = 10 : L = 50 : C = 100 : D = 500 : M =
1000") str = Console.ReadLine() str = str.ToUpper lng = str.Length For q = 0 To (lng - 1) ‘Test to be sure no illegal characters If (str.Chars(q) <> "I") And (str.Chars(q) <> "V") _ And (str.Chars(q) <> "X") And (str.Chars(q) <> "L") _ And (str.Chars(q) <> "C") And (str.Chars(q) <> "D") _ And (str.Chars(q) <> "M") Then Console.WriteLine(“Some letters are not Roman Numerals") Exit Sub End If Next q
30
![Page 31: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/31.jpg)
פענוח ספרות רומיות q = str.IndexOf("IV") ‘removing meaningful doubles If q >= 0 Then num = num + 4 str = str.Replace("IV", "") Console.WriteLine(str & num & " " & q) End If
q = str.IndexOf("IX") If q >= 0 Then num = num + 9 str = str.Replace("IX", "") End If
q = str.IndexOf("XL") If q >= 0 Then num = num + 40 str = str.Replace("XL", "") End If
q = str.IndexOf("XC") If q >= 0 Then num = num + 90 str = str.Replace("XC", "") End If
31
![Page 32: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/32.jpg)
פענוח ספרות רומיות q = str.IndexOf(“CD") If q >= 0 Then num = num + 400 str = str.Replace(“CD", "") End If
q = str.IndexOf("CM") If q >= 0 Then num = num + 900 str = str.Replace("CM", "") End If
For q = 0 To str.Length – 1 ‘evaluating remaining valid numerals w = str.Chars(q) If w = "I" Then num = num + I If w = "V" Then num = num + V If w = "X" Then num = num + X If w = "L" Then num = num + L If w = "C" Then num = num + C If w = "D" Then num = num + D If w = "M" Then num = num + M Next q
Console.WriteLine(num) Console.ReadKey() End Sub
End Module
32
![Page 33: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/33.jpg)
Ex2.10-ForWithinFor1: Dim Outer As Integer, In1 As
Integer2: For Outer = 5 To 1 Step -13: For In1 = 1 To Outer4: Console.Write(In1 & "
")5: Next In16: Console.WriteLine()
'new line7: Next Outer
33
![Page 34: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/34.jpg)
Ex2.10-ForWithinFor - Explanation 2שורה :Step -1 גורם למשתנה Outer-1 ל-5 לקטון מ
כזכור, 4שורה :WRITE גורם לכתיבה בלי לעבור לשורה עושה), כך שהמספרים יהיו WRITELINEהבאה (כמו ש-
צמודים אחד לשני.
מעבר לשורה הבאה.6שורה :
5 4 3 2 1תוצאות : 1 2 3 4 1 2 3 1 2 1
34
![Page 35: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/35.jpg)
לולאות עם גבול עליון לא ידוע דוגמא: חשב את המשכורת של מספר לא ידוע של
עובדים.
:שתי אפשריות
1 מספר העובדים לא ידוע בזמן כתיבת התוכנית, אבל כן .
ידוע בזמן הרצת התוכנית.
.פתרון: הזן בזמן ההרצה את מספר העובדים
2.מספר העובדים לא ידוע גם בזמן ההרצה .
:פתרון Do-While שמכיל תנאי שהופך להיותFalse
אחרי הזנת פרטי העובד האחרון.35
![Page 36: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/36.jpg)
36
דוגמא: הענקת ערך לא מציאותי למשתנה כלשהו בסוף קריאת הנתונים
התחל
Rate
Rate <>-1 HoursSalary Hours
*Rate Salary Rate
סיים
- אינו ערך מציאותי 1מכיוון שאנחנו יודעים ש:, אנחנו יוצאים מן הלולאהRateעבור
![Page 37: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/37.jpg)
Ex2.11-Flags
' Read input data until the input rate equals the flag
' Requires reading rate input twice, before the loop ‘and in the loop
1: Const EndOfData = -1 ' Serves as a flag
2: Dim Rate, Hours, Salary As Decimal
3: Console.WriteLine("What is the Rate?")
4: Rate = Console.ReadLine()
37
![Page 38: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/38.jpg)
Ex2.11-Flags 5: Do While Rate <> EndOfData
6: Console.WriteLine("How many hours?")
7: Hours = Console.ReadLine()
8: Salary = Hours * Rate
9: Console.WriteLine("Your Salary is: {0: C}”,Salary)
10: Console.WriteLine("What is the Rate?")
11: Rate = Console.ReadLine()
12: Loop38
![Page 39: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/39.jpg)
-Ex2.11-Flagsהסבר קריאת 3,4שורות :Rate .לפני הלולאה
, לא ניכנס ללולאה.1בסוף, כשיהיה -
קריאת 11, 10שורות :Rate לפני סוף , לא ניכנס שוב 1הלולאה. כשמזינים -
ללולאה. נמשיך עם יתר התוכנית.
39
![Page 40: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/40.jpg)
40
” במשתנה המשמש NO“דרך שנייה לציין הסוף: הצבת כדגל
התחל
Flag <>”NO” Hours Salary Hours *Rate
SalaryRate
סיים
הלולאה תמשיך להתבצע כל עוד לא נתנו ערך . כל ערך אחר Flag" למשתנה שנקרא NOשל "
יאפשר ללולאה להמשיך להתבצע, ולכן זה כל פעם שהשאלה Enterמפסיק ללחוץ על
אם להמשיך נשאלת, חוץ מאשר בפעם ".NOהאחרונה, שאז חייבים להזין "
See Ex2.12-QuestionFlag
Flag ”YES”
No More?
Flag ”NO”
כן
לא
![Page 41: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/41.jpg)
Program Ex12-QuestionFlag ' Read input data until the flag variable indicates
end of data ' Requires defining a special flag variable Const EndOfData = "NO" ' Serves as a flag Dim Rate, Hours, Salary As Decimal Dim Flag As String = "Yes" Do While Flag.ToUpper <> EndOfData Console.WriteLine("What is the Rate?") Rate = Console.ReadLine() Console.WriteLine("How many hours?") Hours = Console.ReadLine() Salary = Hours * Rate Console.WriteLine("Your Salary is: {0: C}” ,
Salary) Console.WriteLine("Any more(Yes/No)?") Flag = Console.ReadLine() Loop End Sub 41
![Page 42: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/42.jpg)
Ex12.2-QuestionFlagהסבר - יתרונות לשיטה זו פקודת קריאה למשתנהRateמופיעה רק פעם אחת
– משתנה נוסףFlagמשמש כדגל –
.התנאי מתבסס על משתנה הדגל
חסרון: חייבים לענות על שאלת ההמשך כל פעםשהלולאה מתבצעת
42
![Page 43: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/43.jpg)
דרך שלישית לציין סוף נתוניםDim Rate as string, Rate_Num as SingleDim EndOfData as BooleanDo Until EndOfData If Rate = “” then
EndOfData = True Else
If IsNumeric (Rate) Then Rate_Num = Rate …. End If
EndIfLoop
מאפשר לחיצתENTERכשהנתונים נגמרים שאלות אי-זוגיות8תרגיל –
43
![Page 44: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/44.jpg)
Select הרחבה שלIF 2, שבמקור עובד עם רק
אפשרויות
מחלק את כל האופציות לקבוצות מקבילות
דרך פשוטה לתאר כל קבוצה ואבריה
מסתיים בטיפול בקבוצה הראשונה שהקלטתואם לה (גם אם הוא תואם לכמה קבוצות)
44
![Page 45: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/45.jpg)
דוגמא יכולים רק לרכב על אופניים13 עד 1ילדים מגיל
יכולים גם לרכב על אופנוע14,15ילדים בגיל
ומעלה יכולים גם לנהוג ברכב16אנשים בני
תוכנית: קולט גיל, מדפיס אופציות הפתוחותלאותו אדם
45
![Page 46: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/46.jpg)
Selectקוד לדוגמא עם 1: Dim Age As Integer 2: Console.WriteLine("Input Age") 3: Age = Console.ReadLine() 4: Select Case Age 5: Case 1 6: Console.WriteLine("Only bike") 7: Case 2, 3, 4 8: Console.WriteLine("Only bike") 9: Case 5, 6, 7 To 1310: Console.WriteLine("Only bike")11: ' Alternative way of showing this12: ' Case Is < 1413: ' Console.WriteLine("Only bike")14: Case Is < 1615: Console.WriteLine("Only bike or motorcycle")16: Case Else17: Console.WriteLine(“Even a Car")18: End Select
46
![Page 47: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/47.jpg)
Select FormatFormat:Select Case <ביטוי לבדיקה> [Case <רשימה להשוואה> פקודות] ……………………… [Case Else פקודות]End Select
47
![Page 48: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/48.jpg)
Select Format - Explanation ביטוי לבדיקה)test expression : (1 4 מתוך
אפשרויות
1 ביטוי אריתמטי אם ערך שלם או דצימלי. אם החלק .
), רשימת 4/3העשרוני חוזר על עצמו ( למשל
ההשוואה צריכה להכיל טווח ולא ערך מדויק.
2 ביטוי בוליאני .
3) או יותר מחרוזות מחוברות 1. ביטוי מסוג מחרוזת
על ידי אופרטורים המתאימים למחרוזות)
4תאריך .48
![Page 49: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/49.jpg)
-Select Formatהסבר האפשרויות דלהלן, מופרדות 3 או יותר מ-1רשימה להשוואה
על ידי פסיקים:
), למשל אריתמטי עם ערך שלם או דצימלי, Expression. ביטוי (1
מסוג מחרוזת, תאריך, או בוליאני
2 .Expression1 TO expression2 אם מדובר על ביטוי מסוג .
מחרוזת, אנו מקבלים כל מחרוזת שערכו האלפביתי הוא בין
expression1-ו expression2“ למשל .black” to “green כולל ”
"brown"
3. IS <operator> expression כאשר operator :הוא אחד מתוך
<>,=,=<,=>,<,>
49
![Page 50: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/50.jpg)
הסבר התוכנית הביטוי האריתמטי מכיל רק משתנה 4שורה :
Ageאחד,
ביטוי אריתמטי המורכב ממספר אחד5שורה :
ביטויים אריתמטיים חד-ערכיים 7שורה :
מופרדים על ידי פסיקים
7: כולל אופציית הטווח: 9שורה To 1350
![Page 51: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/51.jpg)
הסבר התוכנית שימוש בפורמט: 12שורה :IS
<operator<
מתבצעת (12: אם שורה 14שורה Age ) , לא מבצעים שורה זו, על אף 14 >
Age < 16שעדיין:
מתבצעת אם לא נבחר אופציה 16שורה :
אחרת
51
![Page 52: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/52.jpg)
דוגמת מחשבון קלוט שני מספרים ואופרטור, למשל
חילוק
פלוט את התוצאה
הביטוי לבדיקה ורשימת ההשוואה הםמחרוזות
52
![Page 53: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/53.jpg)
קוד לדוגמת מחשבון Dim Num1, Num2 As Integer Dim Op, Ans As String Console.WriteLine("Please type a
number") Num1 = Console.ReadLine() Console.WriteLine("Please type
another number") Num2 = Console.ReadLine() Console.WriteLine("Do you want +, -,
*, or / ?") Op = Console.ReadLine() Op = Op.ToUpper 'Translates literal
operators to capital letters. 53
![Page 54: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/54.jpg)
קוד לדוגמת מחשבון - המשךSelect Case (Op) Case "+", "ADD", "PLUS" Ans = Num1 + Num2 Console.WriteLine(Num1 & " plus " & Num2 & "
is " & Ans) Case "-", "SUBTRACT", "MINUS" Ans = Num1 - Num2 Console.WriteLine(Num1 & " minus " & Num2 &
" is " & Ans) Case "*", "MULTIPLY", "TIMES" Ans = Num1 * Num2 Console.WriteLine(Num1 & " times " & Num2 &
" is " & Ans) Case "/", "DIVIDE", "INTO" Ans = Num1 / Num2 Console.WriteLine(Num1 & " into " & Num2 & "
is " & Ans) Case Else Beep() Console.WriteLine("You didn't input a correct
operator.")End Select
54
![Page 55: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/55.jpg)
If עם Selectדוגמא של :כללי תשלום לשעות נוספות150% שעות עבודה8 אחרי 1-5: ימים 200% שעות עובדה5: יום שישי, אחרי 300%מוצאי שבת, לכל שעות עבודה :
:קלטRate, Hours, Day :פלטSalary(שכר לאותו יום)
55
![Page 56: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/56.jpg)
(קוד)If עם Selectדוגמא של Dim Day As IntegerDim Taut As BooleanDim Rate, Hours, Salary As DecimalConsole.WriteLine("Please type in
the rate")Rate = Console.ReadLine()Console.WriteLine("Please type in the number of
hours")Hours = Console.ReadLine()Console.WriteLine("Please type day of the
week: 1-7")Day = Console.ReadLine()
56
![Page 57: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/57.jpg)
(קוד - המשך)If עם Selectדוגמא של Select Case Day Case 1 To 5 If Hours <= 8 Then Salary = Rate * Hours Else Salary = Rate * 8 + Rate * 1.5 * (Hours - 8) End If Case 6 If Hours <= 5 Then Salary = Rate * Hours Else Salary = Rate * 5 + Rate * 2 * (Hours - 5) End If Case 7 Salary = Rate * 3 * Hours Case Else Taut = True End Select
57
![Page 58: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/58.jpg)
(קוד - המשך)If עם Selectדוגמא של If Taut Then Console.WriteLine("Day of the week - between 1 and 7
only")Else Console.WriteLine("Your salary is: " & Format(Salary,
"$#.00"))End IfAlternative Method: Declare Day as StringInstead of Case 1 to 5, write
Case “Rishon”,”Sheni”,…..”Chamishi”Instead of Case 6 write
Case “Shishi”Instead of Case 7 write
Case “Motzai Shabbat” 58
![Page 59: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/59.jpg)
Selectמגבלות של Selectיכול לטפל בביטוי לבדיקה אחד בלבד
עדיף להשתמש ב-2אם יש לנו ,ElseIf
דוגמא: במקרה הקודם, ילדים משפיעים על שכר
שעות נוספות. בכל קטגוריה של שעות נוספות,
5 יותר אם יש לך ילדים למטה מגיל 25%מקבלים
). Children(משתנה בוליאני שנקרא 59
![Page 60: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/60.jpg)
הרחבת הדוגמא של שעות נוספות Console.WriteLine("Do you have children under 5: Type True or False")
Children = Console.ReadLine()
If Day >= 1 And Day <= 5 And Not Children Then
If Hours <= 8 Then
Salary = Rate * Hours
Else
Salary = Rate * 8 + Rate * 1.5 * (Hours - 8)
End If
ElseIf Day >= 1 And Day <= 5 And Children Then
If Hours <= 8 Then
Salary = Rate * Hours
Else
Salary = Rate * 8 + Rate * 1.75 * (Hours - 8)
End If60
![Page 61: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/61.jpg)
הרחבת הדוגמא של שעות נוספות - המשך
ElseIf Day = 6 And Not Children Then
If Hours <= 5 Then
Salary = Rate * Hours
Else
Salary = Rate * 5 + Rate * 2 * (Hours - 5)
End If
ElseIf Day = 6 And Children Then
If Hours <= 5 Then
Salary = Rate * Hours
Else
Salary = Rate * 5 + Rate * 2.25 * (Hours - 5)
End If61
![Page 62: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/62.jpg)
הרחבת הדוגמא של שעות נוספות - המשך
ElseIf Day = 7 And Not Children Then
Salary = Rate * 3 * Hours
ElseIf Day = 7 And Children Then
Salary = Rate * 3.25 * Hours
Else
Taut = True
End If62
![Page 63: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/63.jpg)
Select עוד דוגמא - הודעות שונות מודפסות על גבי רישיון הנהיגה, תלוי
))60,>31-50,50-59, 18-30בקבוצת הגיל
קלט: תאריך לידה
פלט: ההודעה המתאימה
:דרוש
1 עריכה – כדי להיות בטוח שתאריך הקלט הוא .
תאריך תקין
2 חישוב הגיל, מבוסס על תאריך הנוכחי ותאריך .
הלידה.
63
![Page 64: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/64.jpg)
עריכת תאריך הלידה וקביעת הגיל
64
Dim Birthday, Birthdate As DateTime, Age As Integer, sbirthdate As String
Console.WriteLine("Please type in your birthdate")
sbirthdate = Console.ReadLine()
If Not IsDate(sbirthdate) Then
Console.WriteLine("Bad date")
Else
Birthdate = sbirthdate
End If
Birthday = DateSerial(Now.Year, Birthdate.Month, Birthdate.Day)
If Birthday < Now Then
Age = Now.Year - Birthdate.Year
Else
Age = Now.Year - Birthdate.Year - 1
End If
Console.WriteLine(Age)
![Page 65: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/65.jpg)
הדפסת ההודעה הנכונה על רישיון הנהיגה
65
Select case age
Case 18 to 30
Case 31 to 50
Case 51 to 60
Case Is > 60
End select, שאלות 9תרגיל
אי-זוגיות
![Page 66: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/66.jpg)
- Ex2.19יצירת מספרים מקריים נתכנת משחק שנקרא: נחש את המספר
:כללים1בקש מן השחקן גבול עליון ותחתון .2קבע את מספר המטרה על ידי בחירת מספר מקרי .3בקש מן השחקן לנחש מספר .4 אם הוא מנחש נכון את המספר, המשחק נגמר .
ומספרים לו כמה ניחושים נדרשו 5 אם ניחש לא נכון, אומרים לו אם הניחוש היה גבוה .
.3או נמוך, ומחזירים אותו לצעד 66
![Page 67: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/67.jpg)
– Ex2.19 –Random Numbers קליטת גבול עליון ותחתון Dim TargetNumber, UpperBound, LowerBound,
CurrentGuess, _ Guesscount As Integer
Dim Input As String
Dim RandomObject As Random = New Random
Console.Write("Please enter the lower bound: ")
Input = Console.ReadLine()
If Not IsNumeric(Input) Then
Console.WriteLine("Not Numeric")
Exit Sub
Else
LowerBound = Input
End If67
![Page 68: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/68.jpg)
– Ex2.19 –Random Numbers קליטת גבול עליון ותחתון
Console.Write("Please enter the upper bound: ")
Input = Console.ReadLine()
If Not IsNumeric(Input) Then
Console.WriteLine("Not Numeric")
Exit Sub
Else
UpperBound = Input
End If 68
![Page 69: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/69.jpg)
Ex2.19 –Random Numbers Target Number = RandomObject.Next(LowerBound, UpperBound + 1)
CurrentGuess = 0
Guesscount = 0
Do While CurrentGuess <> TargetNumber
Console.Write("Please enter a guess: ")
Input = Console.ReadLine()
If Not IsNumeric(Input) Then
Console.WriteLine("Not Numeric")
Exit Sub
Else
CurrentGuess = Input
End If69
![Page 70: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/70.jpg)
Ex2.19 –Random NumbersGuesscount += 1
If CurrentGuess < TargetNumber Then
Console.WriteLine("Your guess is low")
ElseIf CurrentGuess > TargetNumber Then
Console.WriteLine("Your guess is high")
End If
Loop Console.WriteLine("Your did it in " & Guesscount & "
guesses.")70
![Page 71: לולאות- Loops שני סוגי לולאות:](https://reader034.fdocuments.net/reader034/viewer/2022050722/5a4d1ae17f8b9ab0599776d9/html5/thumbnails/71.jpg)
Ex2.19 –Random NumbersProgramהסבר התוכנית
ליצור מספרים מקריים, מתחילים על ידי כתיבת
Dim RandomObject As Random = New Random()
הערה: אם כותבים מספר כלשהו בסוגריים, זה גורםלאותה סדרה מקרית להופיע כל פעם שמריצים את
התוכנית
:יצירת מספרים מקריים בין הגבולות הרצוייםTarget Number =
RandomObject.Next(LowerBound, UpperBound + 1)
71