1 / 23

מבוא למדעי המחשב לתעשייה וניהול

הרצאה 7. מבוא למדעי המחשב לתעשייה וניהול. סברוטינות subroutines. שימוש חוזר בקטעי קוד ומודולריות. מניע 1: נניח שכתבנו קטע קוד המבצע מטלה מסוימת למשל - מציאת מינימום, חישוב ממוצע, הדפסה, קריאת קלט רוצים לחזור על אותה המטלה יותר מפעם אחת (לאו דווקא ברצף) האם חייבים לכתוב שוב את אותו הקוד?

gray-cooper
Download Presentation

מבוא למדעי המחשב לתעשייה וניהול

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. הרצאה 7 מבוא למדעי המחשב לתעשייה וניהול

  2. סברוטינותsubroutines

  3. שימוש חוזר בקטעי קוד ומודולריות • מניע 1: • נניח שכתבנו קטע קוד המבצע מטלה מסוימת • למשל - מציאת מינימום, חישוב ממוצע, הדפסה, קריאת קלט • רוצים לחזור על אותה המטלה יותר מפעם אחת • (לאו דווקא ברצף) • האם חייבים לכתוב שוב את אותו הקוד? • מניע 2: • רוצים לחלק את הקוד לחלקים בעלי משמעות למען סדר, קריאה נוחה, כתיבה נוחה ?

  4. שגרה - subroutine

  5. שגרה - Sub • "שגרה" (subroutine) היא אוסף של פקודות המבצעות מטלה • השגרה מתחילה ב Sub nameOfSub() • ומסתיימת ב End Sub • באמצע יופיעו הפקודות המרכיבות את השגרה. • נשתמש ב Sub כאשר יש צורך באיגוד של מספר פקודות ביחד • ואין צורך במתן משוב לאחר ביצוע הפקודות

  6. דוגמא1 ל Sub ModuleModule1 Sub Print() Console.WriteLine("Im in the sub") EndSub Sub Main() Print() Console.WriteLine("Im in main") Print() Console.ReadKey() EndSub EndModule

  7. דוגמא2 ל Sub ModuleModule1 Sub Print() Console.WriteLine("Im in the sub") EndSub Sub Main() ForiAsInteger = 0 To 9 Print() Next Console.ReadKey() EndSub EndModule

  8. דוגמא3 ל Sub ModuleModule1 SubAddNumbers() Dim first AsInteger Dim second AsInteger Dim answer AsInteger Console.WriteLine("Please type a number") first = Console.ReadLine() Console.WriteLine("Please type another number") second = Console.ReadLine() answer = first + second Console.WriteLine("The total is " & answer) EndSub Sub Main() AddNumbers() Console.ReadKey() EndSub EndModule

  9. דוגמא4 ל Sub- העברת פרמטר ModuleModule1 Sub Print(ByVal x AsInteger) Console.WriteLine("Im in the sub, number " & x) EndSub Sub Main() Dim a AsInteger = 1 Print(a) a = 2 Print(a) Console.ReadKey() EndSub EndModule

  10. דוגמא5 ל Sub- העברת כמה פרמטרים ModuleModule1 Sub Add(ByVal x AsInteger, ByVal y AsInteger) Dim sum AsInteger sum = x + y Console.WriteLine("The sum is " & sum) EndSub Sub Main() Add(2, 3) Dim a AsInteger = 20, b AsInteger = 15 Add(a, b) 'Console.WriteLine("The sum is " & sum)אי אפשר לעשות את זה. Console.ReadKey() EndSub EndModule

  11. תחומי הגדרה של משתנים • ניתן להגדיר משתנים במקומות שונים בקוד • מיקום ההגדרה משפיע על תחום ההגדרה (איפה המשתנה מוכר) • משתנה מקומי (local) • משתנה שמוכר רק בתוך שגרה מסוימת • מגדירים בתוך Sub(או בתוך Function) • משתנה גלובלי (global) • משתנה שמוכר בכל חלקי התוכנית • מגדירים בתוך המודול, לא בתוך Sub (וגם לא בתוך Function)

  12. דוגמא 6 ל Sub תחומי הגדרה ModuleModule1 Dim b AsInteger SubmySub() Dim a AsInteger = 6 a = a + 1 b = 5 'c = 87 EndSub Sub Main() Dim c AsInteger c = c * 2 b = 8 Console.WriteLine(b) mySub() 'a = 4 +2 Console.WriteLine(b) EndSub EndModule

  13. דוגמא 7 ל Sub ModuleModule1 PublicSub print(ByVal j AsInteger) Console.WriteLine("Good morning" & j) EndSub Sub Main() DimiAsInteger Fori = 1 To 10 print(i) Next Console.ReadKey() EndSub EndModule

  14. דוגמא 8 ל Sub- שימו לב לתחומי הגדרה של המשתנים! ModuleModule1 PublicSub print(ByVal j AsInteger, ByVal k AsInteger) Console.WriteLine("Good morning " & j + k) EndSub Sub Main() Dim i AsInteger, j AsInteger Fori = 1 To 10 j = 2 print(i, j) Next Console.ReadKey() EndSub EndModule

  15. דוגמאות לתרגול מה שלמדנו עד כה...

  16. הורדת רווחים ממחרוזת: Dim x AsInteger DimIsSpaceAsBoolean = False x = Console.Read() While x <> AscW(vbCr) Ifx = AscW(" ") Then 'If Not (IsSpace) Then IfIsSpace = FalseThen IsSpace = True Console.Write(ChrW(x)) EndIf Else Console.Write(ChrW(x)) IsSpace= False EndIf x = Console.Read() EndWhile

  17. היפוך ספרות: Dim x AsInteger Dimresult, valAsInteger x = Console.Read() val = x - AscW(0) result = result + val * 1 x = Console.Read() val = x - AscW(0) result = result + val * 10 Console.WriteLine("the reversed number is " & result)

  18. קצת מתמטיקה...סדרת פיבונאצ'י: • סדרת פיבונאצ'י היא הסדרה שאיבריה הראשונים 1 ו-1, וכל איבר אחר בה שווה לסכום שני קודמיו

  19. סדרת פיבונאצ'י: Dim a AsInteger = 0, b AsInteger = 1, i AsInteger, n AsInteger Console.WriteLine("Enter a even n") n = Console.ReadLine() Console.WriteLine(a) Console.WriteLine(b) Ifn Mod 2 = 0 Then Fori = 1 To (n - 2) / 2 a = a + b Console.WriteLine(a) b = a + b Console.WriteLine(b) Next Else Console.WriteLine("n has to be even") EndIf

  20. משחק ניחוש: Dimnum, guess AsInteger DimRandomClassAsNewRandom() num= RandomClass.Next(1, 100) Do Console.WriteLine("Please try to guess the number") guess = Console.ReadLine() If(guess > num) Then Console.WriteLine("You guessed too high") ElseIf(guess < num) Then Console.WriteLine("You guessed too low") Else Console.WriteLine("You got it") EndIf LoopWhile (num <> guess)

  21. האם מספר אקראי הוא ראשוני (א): Dim b AsInteger = 2, iAsInteger = 3 האם חיוני לקבוע את ערכי bו i?' Dimdegel_IntAsInteger = 0 Randomize() b = CInt(Rnd() * 60 + 10) Console.WriteLine(b) Fori = 2 To b - 1 If b Modi = 0 Then degel_Int= 1 EndIf Next Ifdegel_Int = 0 Then Console.WriteLine("yes") Else Console.WriteLine("no") EndIf

  22. האם מספר אקראי הוא ראשוני (ב): Dim b AsInteger = 2, i AsInteger = 3 DimdegelAsBoolean = False Randomize() b = CInt(Rnd() * 60 + 10) Console.WriteLine(b) Fori = 2 To b - 1 If b Modi = 0 Then degel = True EndIf Next Ifdegel = FalseThen'using a Boolean degel 'If Not (degel) Then 'this does the same as the line above Console.WriteLine("yes") Else Console.WriteLine("no") EndIf

  23. עצרת של מספר אקראי: Dim a AsInteger = 1, iAsInteger = 0, n AsInteger = 0 Randomize() n = Int(8 * Rnd()) If n > 0 Then Fori = 1 To n a = a * i Next EndIf Console.WriteLine("the factorial of " & n & "is: " & a)

More Related