לולאות- loops שני סוגי לולאות:

71
תתתתתת- Loops תתת תתתת תתתתתת: 1 . Do While Loop תתתתת תתתתתת תת תתתת תתתתת- תתתתתת, תתתתתת תתתתתת תתתתתת תת תתת תתתתת תתתתת תתתתתתת תתתתתתת:Do Until Loop תתתתת תתתתתת תת תתתת- תתתתת תת תתתתתת, תתתתתת תתתתתת תתתתתת תת תתת תתתתת תתתתת תת תתתתתתת1 Do-While-Loop תת תתתתת תת תתתתת תת תתתת תתתתתתDo Until Loop תת תתתתת תת תתתתת תתתת תתתתתת

Upload: judith-mckenzie

Post on 06-Jan-2018

247 views

Category:

Documents


4 download

DESCRIPTION

לולאות- Loops 2. Do Loop While - תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי מתקיים, ואם כן, תמשיך להיכנס ללולאה ווריאציה: Do Loop Until - תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי לא מתקיים, ואם לא, תמשיך להיכנס ללולאה Do-Loop-While מתבצע לפחות פעם אחת ובודק. אם התנאי קיים ממשיך. Do-Loop-Until מתבצע לפחות פעם אחת ובודק. אם התנאי לא קיים ממשיך.

TRANSCRIPT

Page 1: לולאות- Loops שני סוגי לולאות:

Loops -לולאות :שני סוגי לולאות

1 .Do While Loop תיכנס ללולאה אם תנאי כלשהו מתקיים, ותמשיך - להיכנס ללולאה כל עוד התנאי ממשיך להתקיים

:וריאציהDo Until Loop ,תיכנס ללולאה אם תנאי כלשהו לא מתקיים - ותמשיך להיכנס ללולאה כל עוד התנאי ממשיך לא להתקיים

1

Do-While-Loop

לא מתבצע אם התנאי לא קיים בהתחלה

Do Until Loop

לא מתבצע אם התנאי קיים בהתחלה

Page 2: לולאות- Loops שני סוגי לולאות:

Loops -לולאות 2 .Do Loop While תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי -

מתקיים, ואם כן, תמשיך להיכנס ללולאה :ווריאציהDo Loop Until תיכנס ללולאה בכל מקרה, ואז תבדוק אם התנאי -

לא מתקיים, ואם לא, תמשיך להיכנס ללולאה

2

Do-Loop-While

.מתבצע לפחות פעם אחת ובודק. אם התנאי קיים ממשיך

Do-Loop-Until

.מתבצע לפחות פעם אחת ובודק. אם התנאי לא קיים ממשיך

Page 3: לולאות- Loops שני סוגי לולאות:

Do-While-Loop קידוד -

3

Do [{While |Until}] ביטוי בוליאני

[פקודות]

[Exit Do]

[פקודות]

Loop

Do While – ממשיכים להיכנס ללולאה כל עוד התנאימתקיים, ויוצאים מיד כאשר הוא מפסיק להתקיים

Do Until - ממשיכים להיכנס ללולאה כל עוד התנאי לאמתקיים, ויוצאים מיד כאשר הוא מתחיל להתקיים

מיושרים. התוכן של הלולאה מוכנס Loop ו-Doהערה: המילים פנימה.

Page 4: לולאות- Loops שני סוגי לולאות:

Alternative Coding for Do-While-Loop

4

הוא כדלהלן:Doהשימוש הכי נפוץ של פקודת

Do While ביטוי בוליאני

[פקודות]

[Exit Do]

[פקודות]

Loop

היות והוא כל כך נפוץ, קיימת צורה מיוחדת עבורו:

While ביטוי בוליאני

[פקודות]

[Exit While]

[פקודות]

End While

Page 5: לולאות- Loops שני סוגי לולאות:

Do-Whileתרשים זרימה עבור

5

סיים

Count 1

Count<=10 Count Count+1Count

התחל

Page 6: לולאות- Loops שני סוגי לולאות:

תוכנית ללולאה פשוטה 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 שני סוגי לולאות:

+=אופרטור חדש: במקום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 שני סוגי לולאות:

דוגמא

8

קלטים:

A 8 – ספרה, למשל

B מספר כלשהו עם הרבה – 57382ספרות, למשל

סיפרה A אם Trueפלט: False, אחרת Bהמוכלת ב-

Page 9: לולאות- Loops שני סוגי לולאות:

9

התחל

B=0 or Found C B Mod 10

סיים

Found <--False

לא

A, B

כן

C=A

Found True

B B\10Found

תרשים זרימה

Page 10: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

פתרון יותר קל ויותר קצר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 שני סוגי לולאות:

לולאות - בדיקה בסוף

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 שני סוגי לולאות:

Do-Loop-While/Until

13

Count Count + 1

Count > 10

התחל

Count 11

Count

סיים

לא

Page 14: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

עוד דוגמא

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 שני סוגי לולאות:

טעויות אפשריות

16

טעותע yטעותטע

><c c first

e i second

i e third

טעותi First letter in sentencee Second letter in

sentence

Page 17: לולאות- Loops שני סוגי לולאות:

17

התחל

pos = -1?

סיים

pos -1, num 0

לא

Text

כן

Check for Spelling Mistake

Page 18: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

הסבר התוכנית" עוברים דרך המילה בקפיצות מאותi" לאות "i עד "

" בעזרת פקודת iשמגיעים לסוף המילה. מוצאים כל אות "indexof כאשר בכל פעם מתחילים את החיפוש מן התו

" הקודם. iשבא אחרי ה- " אפשרויות, ומתייחסים לכל אחת בנפרד.5ישנן 1 .pos = -1 זה קורה כאשר לא נשארו הופעות נוספות .

של האות (או שכלל לא היו). מדפיסים אז את מספר ההופעות

2 .pos=0" דהיינו שיש ,i במקום הראשון במלה, ואז אם "" במקום השני התוכנית מתריעה על טעותeיש "

3 .pos=1" דהיינו שיש ,i במקום השני במלה, , ואז אם "" אחריו, התוכנית מתריעה על טעותe" לפניו ו- "cיש "

21

Page 22: לולאות- Loops שני סוגי לולאות:

הסבר התוכנית4 .pos>=2 אבל לא שווה למקום האחרון במילה דהיינו ,

" במקום שני והלאה אבל לא במקום האחרון, ואז iשיש "" x" לפניו, כאשר "xe" אחריו, או "e" לפניו ו- "cאם יש "

", אזי שוב פעם התוכנית מתריעה cמסמן כל אות חוץ מ-"על טעות.

5" יש .i" במקום האחרון, ואז אם יש "xe" לפניו, כאשר "x "", אזי שוב פעם התוכנית מתריעה cמסמן כל אות חוץ מ-"

על טעות.

22

Page 23: לולאות- Loops שני סוגי לולאות:

מאפיינים של לולאות1אתחל משתנה האינדקס .

2 בדוק תנאי (או בהתחלה או בסוף של הלולאה) שמכיל .

את משתנה האינדקס. תנאי זה חייב לשנות את ערכו

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

3.הגדל את ערכו של משתנה האינדקס.

23

Page 24: לולאות- Loops שני סוגי לולאות:

For – Next Loop לולאתFor – Next המאפיינים לפקודה אחת. 3 משלב כל

General Format:For counter [as datatype] = first to last [Step כמות][פקודות] [Exit For][פקודות] Next [counter]

24

Page 25: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

–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 שני סוגי לולאות:

27

! N דוגמא - חישוב

התחל

i >N Natzeret<--Natzeret * i

סיים

Natzeret 1i1

ii + 1

לא

N

כן

Page 28: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

דוגמא קשה - פענוח ספרות רומיות מספר רומי מיוצג על ידי רצף של תווים כאשר לכל תו יש משמעות מספרית לפי

הערכים הבאים: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 שני סוגי לולאות:

פענוח ספרות רומיות 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 שני סוגי לולאות:

פענוח ספרות רומיות 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 שני סוגי לולאות:

פענוח ספרות רומיות 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 שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

לולאות עם גבול עליון לא ידוע דוגמא: חשב את המשכורת של מספר לא ידוע של

עובדים.

:שתי אפשריות

1 מספר העובדים לא ידוע בזמן כתיבת התוכנית, אבל כן .

ידוע בזמן הרצת התוכנית.

.פתרון: הזן בזמן ההרצה את מספר העובדים

2.מספר העובדים לא ידוע גם בזמן ההרצה .

:פתרון Do-While שמכיל תנאי שהופך להיותFalse

אחרי הזנת פרטי העובד האחרון.35

Page 36: לולאות- Loops שני סוגי לולאות:

36

דוגמא: הענקת ערך לא מציאותי למשתנה כלשהו בסוף קריאת הנתונים

התחל

Rate

Rate <>-1 HoursSalary Hours

*Rate Salary Rate

סיים

- אינו ערך מציאותי 1מכיוון שאנחנו יודעים ש:, אנחנו יוצאים מן הלולאהRateעבור

Page 37: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

-Ex2.11-Flagsהסבר קריאת 3,4שורות :Rate .לפני הלולאה

, לא ניכנס ללולאה.1בסוף, כשיהיה -

קריאת 11, 10שורות :Rate לפני סוף , לא ניכנס שוב 1הלולאה. כשמזינים -

ללולאה. נמשיך עם יתר התוכנית.

39

Page 40: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

Ex12.2-QuestionFlagהסבר - יתרונות לשיטה זו פקודת קריאה למשתנהRateמופיעה רק פעם אחת

– משתנה נוסףFlagמשמש כדגל –

.התנאי מתבסס על משתנה הדגל

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

42

Page 43: לולאות- Loops שני סוגי לולאות:

דרך שלישית לציין סוף נתונים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 שני סוגי לולאות:

Select הרחבה שלIF 2, שבמקור עובד עם רק

אפשרויות

מחלק את כל האופציות לקבוצות מקבילות

דרך פשוטה לתאר כל קבוצה ואבריה

מסתיים בטיפול בקבוצה הראשונה שהקלטתואם לה (גם אם הוא תואם לכמה קבוצות)

44

Page 45: לולאות- Loops שני סוגי לולאות:

דוגמא יכולים רק לרכב על אופניים13 עד 1ילדים מגיל

יכולים גם לרכב על אופנוע14,15ילדים בגיל

ומעלה יכולים גם לנהוג ברכב16אנשים בני

תוכנית: קולט גיל, מדפיס אופציות הפתוחותלאותו אדם

45

Page 46: לולאות- Loops שני סוגי לולאות:

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 שני סוגי לולאות:

Select FormatFormat:Select Case <ביטוי לבדיקה> [Case <רשימה להשוואה> פקודות] ……………………… [Case Else פקודות]End Select

47

Page 48: לולאות- Loops שני סוגי לולאות:

Select Format - Explanation ביטוי לבדיקה)test expression : (1 4 מתוך

אפשרויות

1 ביטוי אריתמטי אם ערך שלם או דצימלי. אם החלק .

), רשימת 4/3העשרוני חוזר על עצמו ( למשל

ההשוואה צריכה להכיל טווח ולא ערך מדויק.

2 ביטוי בוליאני .

3) או יותר מחרוזות מחוברות 1. ביטוי מסוג מחרוזת

על ידי אופרטורים המתאימים למחרוזות)

4תאריך .48

Page 49: לולאות- Loops שני סוגי לולאות:

-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 שני סוגי לולאות:

הסבר התוכנית הביטוי האריתמטי מכיל רק משתנה 4שורה :

Ageאחד,

ביטוי אריתמטי המורכב ממספר אחד5שורה :

ביטויים אריתמטיים חד-ערכיים 7שורה :

מופרדים על ידי פסיקים

7: כולל אופציית הטווח: 9שורה To 1350

Page 51: לולאות- Loops שני סוגי לולאות:

הסבר התוכנית שימוש בפורמט: 12שורה :IS

<operator<

מתבצעת (12: אם שורה 14שורה Age ) , לא מבצעים שורה זו, על אף 14 >

Age < 16שעדיין:

מתבצעת אם לא נבחר אופציה 16שורה :

אחרת

51

Page 52: לולאות- Loops שני סוגי לולאות:

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

חילוק

פלוט את התוצאה

הביטוי לבדיקה ורשימת ההשוואה הםמחרוזות

52

Page 53: לולאות- Loops שני סוגי לולאות:

קוד לדוגמת מחשבון 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 שני סוגי לולאות:

קוד לדוגמת מחשבון - המשך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 שני סוגי לולאות:

If עם Selectדוגמא של :כללי תשלום לשעות נוספות150% שעות עבודה8 אחרי 1-5: ימים 200% שעות עובדה5: יום שישי, אחרי 300%מוצאי שבת, לכל שעות עבודה :

:קלטRate, Hours, Day :פלטSalary(שכר לאותו יום)

55

Page 56: לולאות- Loops שני סוגי לולאות:

(קוד)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 שני סוגי לולאות:

(קוד - המשך)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 שני סוגי לולאות:

(קוד - המשך)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 שני סוגי לולאות:

Selectמגבלות של Selectיכול לטפל בביטוי לבדיקה אחד בלבד

עדיף להשתמש ב-2אם יש לנו ,ElseIf

דוגמא: במקרה הקודם, ילדים משפיעים על שכר

שעות נוספות. בכל קטגוריה של שעות נוספות,

5 יותר אם יש לך ילדים למטה מגיל 25%מקבלים

). Children(משתנה בוליאני שנקרא 59

Page 60: לולאות- Loops שני סוגי לולאות:

הרחבת הדוגמא של שעות נוספות 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 שני סוגי לולאות:

הרחבת הדוגמא של שעות נוספות - המשך

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 שני סוגי לולאות:

הרחבת הדוגמא של שעות נוספות - המשך

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 שני סוגי לולאות:

Select עוד דוגמא - הודעות שונות מודפסות על גבי רישיון הנהיגה, תלוי

))60,>31-50,50-59, 18-30בקבוצת הגיל

קלט: תאריך לידה

פלט: ההודעה המתאימה

:דרוש

1 עריכה – כדי להיות בטוח שתאריך הקלט הוא .

תאריך תקין

2 חישוב הגיל, מבוסס על תאריך הנוכחי ותאריך .

הלידה.

63

Page 64: לולאות- Loops שני סוגי לולאות:

עריכת תאריך הלידה וקביעת הגיל

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 שני סוגי לולאות:

הדפסת ההודעה הנכונה על רישיון הנהיגה

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 שני סוגי לולאות:

- Ex2.19יצירת מספרים מקריים נתכנת משחק שנקרא: נחש את המספר

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

ומספרים לו כמה ניחושים נדרשו 5 אם ניחש לא נכון, אומרים לו אם הניחוש היה גבוה .

.3או נמוך, ומחזירים אותו לצעד 66

Page 67: לולאות- Loops שני סוגי לולאות:

– 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 שני סוגי לולאות:

– 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 שני סוגי לולאות:

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 שני סוגי לולאות:

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 שני סוגי לולאות:

Ex2.19 –Random NumbersProgramהסבר התוכנית

ליצור מספרים מקריים, מתחילים על ידי כתיבת

Dim RandomObject As Random = New Random()

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

התוכנית

:יצירת מספרים מקריים בין הגבולות הרצוייםTarget Number =

RandomObject.Next(LowerBound, UpperBound + 1)

71