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

Slides:



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

מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
מחרוזות של תווים. מבוא לתכנות למנע"ס - שבוע מספר 5 - מאיר קומר - סמסטר ב' - תשס"ו מחרוזות - Strings Dim s As String s = “hello” s = s & “kita” או s =
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
סוגי מידע / משתנים ד " ר אבי רוזנפלד. סוגאורךטווח Boolean1 Bit0,1 Byte1 byte0-255 Char 2 bytes תו Decimal16 bytes0 through +/-79,228,162,514,264,337,593,543,950,335.
תכנות ב C#. דוגמא לפלט using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
תרגילים. גדול, קטן, וממוצע מקובץ Imports System.IO Module Module1 Sub Main() Dim readnum As StreamReader readnum = _ My.Computer.FileSystem.OpenTextFileReader.
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
מרצה: פרופסור דורון פלד
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
חלון הפקודות מיועד לבצע פעולה אחת בכל פעם. כיצד אפשר לבצע רשימת פקודות או אפליקציות מורכבות ?
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
פתרון בוחן הכיתה. שאלה #1 Module Module1 Sub Main() Dim x, z As Integer x = Console.ReadLine() z = Console.ReadLine() If (x = 0) Then Console.WriteLine("Error")
פתרון תרגיל 11. שאלה #1 Module Module1 Sub Main() Dim x(10, 10) As Integer Dim i, j As Integer For i = 1 To 10 For j = 1 To 10 x(i, j) = i * j Console.Write("
מערכים מבוא לתכנות למנע"ס - שבוע מספר 8 - מאיר קומר - סמסטר ב' - תשס"ו והנה בעיה כתוב תוכנית אשר תקלוט 36 מספרים ותדפיס כמה מתוכם גדולים יותר מהממוצע.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
מבוא כללי למדעי המחשב שיעור רביעי: לולאות
מבוא למדעי המחשב תרגול מספר.
מבני בקרה לולאות. פקודת CASE Module Module1 Sub Main() Dim input As Char input = Console.ReadLine() Select Case (input) Case "A" Console.WriteLine("A.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
פתרון תרגילים #9. דוגמה פשוטה #1 Module Module1 Sub Main() Dim x As String x = Console.ReadLine For i = 1 To x.Length() - 1 Step 2 Console.WriteLine(x(i))
מערכים דו ממדי ו STRUCTS פונקציות בוליאנית Module Module1 Function Flip(ByVal word1 As String) As Boolean Dim i As Integer For i = 0 To word1.Length()
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
פונקציות. פונקציות מוכרות Imports System.Math Module Module1 Sub Main() Dim x As Decimal = Math.Abs(-10.4) Dim y As Decimal Console.WriteLine("I will.
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
מחסנית ותור Stacks and Queues. מחסנית Stack מחסנית - Stack ADT סוג של מערך מוגבל מהיר מאוד ותופס מעט זיכרון שימוש ב LIFO – LIFO (Last In, First Out)
הרצאה 3 מבוא למדעי המחשב לתעשייה וניהול הודעות : הודעות : או דרך moodle – ושם לפנות ל : אתר מכון טל החומר.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
1 Microsoft® Visual Basic®.NET Language # 2. 2 Flow-Control Statements If … End If Select Case … End Select For… Next Do … Loop Exit.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
1 מבוא למדעי המחשב הרצאה 5: פונקציות. 2 מבוא לפונקציות חלוקה של אלגוריתם לתת משימות: משימה - פונקציה: דוגמאות מציאת המקסימלי מבין שני איברים האינדקס של.
אלגוריתמי חיפוש. Brute Force Module Module1 Function BruteForce(ByRef x() As Integer, ByRef item As Integer) As Integer Dim i As Integer For i = 0 To.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבוא למדעי המחשב לתעשייה וניהול
מחלקות classes.
מבוא למדעי המחשב סיבוכיות.
תוכנה 1 תרגול 13 – סיכום.
פקודות data לסדר את המקרים לפי סדר מסויים Sort cases.
הרצאה 3: משפטים, תנאים ולולאות
מבוא כללי למדעי המחשב פונקציות
סוגי משתנים קרן כליף.
תוכנה 1 תרגול 13 – סיכום.
מחסנית ותור Stacks and Queues.
תוכנה 1 תרגול 13 – סיכום.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

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

סברוטינות subroutines

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

שגרה - subroutine

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

דוגמא 1 ל Sub Module Module1 Sub Print() Console.WriteLine("Im in the sub") End Sub Sub Main() Print() Console.WriteLine("Im in main") Print() Console.ReadKey() End Sub End Module

דוגמא 2 ל Sub Module Module1 Sub Print() Console.WriteLine("Im in the sub") End Sub Sub Main() For i As Integer = 0 To 9 Print() Next Console.ReadKey() End Sub End Module

Module Module1 Sub AddNumbers() Dim first As Integer Dim second As Integer Dim answer As Integer 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) End Sub Sub Main() AddNumbers() Console.ReadKey() End Sub End Module דוגמא 3 ל Sub

דוגמא 4 ל Sub- העברת פרמטר Module Module1 Sub Print(ByVal x As Integer) Console.WriteLine("Im in the sub, number " & x) End Sub Sub Main() Dim a As Integer = 1 Print(a) a = 2 Print(a) Console.ReadKey() End Sub End Module

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

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

Module Module1 Dim b As Integer Sub mySub() Dim a As Integer = 6 a = a + 1 b = 5 'c = 87 End Sub Sub Main() Dim c As Integer c = c * 2 b = 8 Console.WriteLine(b) mySub() 'a = 4 +2 Console.WriteLine(b) End Sub End Module דוגמא 6 ל Sub תחומי הגדרה

Module Module1 Public Sub print(ByVal j As Integer) Console.WriteLine("Good morning" & j) End Sub Sub Main() Dim i As Integer For i = 1 To 10 print(i) Next Console.ReadKey() End Sub End Module דוגמא 7 ל Sub

Module Module1 Public Sub print(ByVal j As Integer, ByVal k As Integer) Console.WriteLine("Good morning " & j + k) End Sub Sub Main() Dim i As Integer, j As Integer For i = 1 To 10 j = 2 print(i, j) Next Console.ReadKey() End Sub End Module דוגמא 8 ל Sub- שימו לב לתחומי הגדרה של המשתנים !

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

Dim x As Integer Dim IsSpace As Boolean = False x = Console.Read() While x <> AscW(vbCr) If x = AscW(" ") Then 'If Not (IsSpace) Then If IsSpace = False Then IsSpace = True Console.Write(ChrW(x)) End If Else Console.Write(ChrW(x)) IsSpace = False End If x = Console.Read() End While הורדת רווחים ממחרוזת :

Dim x As Integer Dim result, val As Integer 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) היפוך ספרות :

קצת מתמטיקה... סדרת פיבונאצ ' י :

Dim a As Integer = 0, b As Integer = 1, i As Integer, n As Integer Console.WriteLine("Enter a even n") n = Console.ReadLine() Console.WriteLine(a) Console.WriteLine(b) If n Mod 2 = 0 Then For i = 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") End If סדרת פיבונאצ ' י :

Dim num, guess As Integer Dim RandomClass As New Random() 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") End If Loop While (num <> guess) משחק ניחוש :

Dim b As Integer = 2, i As Integer = 3 האם חיוני לקבוע את ערכי b ו i?' Dim degel_Int As Integer = 0 Randomize() b = CInt(Rnd() * ) Console.WriteLine(b) For i = 2 To b - 1 If b Mod i = 0 Then degel_Int = 1 End If Next If degel_Int = 0 Then Console.WriteLine("yes") Else Console.WriteLine("no") End If האם מספר אקראי הוא ראשוני ( א ):

Dim b As Integer = 2, i As Integer = 3 Dim degel As Boolean = False Randomize() b = CInt(Rnd() * ) Console.WriteLine(b) For i = 2 To b - 1 If b Mod i = 0 Then degel = True End If Next If degel = False Then 'using a Boolean degel 'If Not (degel) Then 'this does the same as the line above Console.WriteLine("yes") Else Console.WriteLine("no") End If האם מספר אקראי הוא ראשוני ( ב ):

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