מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
מחרוזות של תווים. מבוא לתכנות למנע"ס - שבוע מספר 5 - מאיר קומר - סמסטר ב' - תשס"ו מחרוזות - Strings Dim s As String s = “hello” s = s & “kita” או s =
תכנות תרגול 9 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 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 חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול. הבית האדום כתובת : רחוב קוקוריקו 2 הבית הירוק כתובת : רחוב קוקוריקו 4 הבית הצהוב כתובת : רחוב קוקוריקו 1 הבית הורוד כתובת.
תכנות תרגול 9 שבוע : מערכים int a; a=5; int a[10]; a[2] = 5; 5 a a[0] a[1] a[2] a[9]  5 משתנה בודד מערך גישה למשתנה השלישי במערך.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
שיעור שישי: מערכים ופונקציות
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
אלגוריתמים, WINDOWS והחיים. מבוא למדעי המחשב - מאיר קומר - סמסטר א '- תשס " ט - שיעור מספר 7 מיוןsort.
מבוא למדעי המחשב מחרוזות, מצביעים וכתובות
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
שימוש במערך דינמי : ArrayList. מאפיינים חשובים בכל LIST יכולת להכניס מידע בלי תלות בטיפוס יכולת למחוק מידע יכולת להוסיף מידע פונקציות נוספות ( מיון, חיפוש.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
תכנות תרגול 14 שבוע:
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
פתרון בוחן הכיתה. שאלה #1 Module Module1 Sub Main() Dim x, z As Integer x = Console.ReadLine() z = Console.ReadLine() If (x = 0) Then Console.WriteLine("Error")
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מערכים מבוא לתכנות למנע"ס - שבוע מספר 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.
מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
Stacks and Queues. Stack ADT סוג של מערך מוגבל מהר מאוד ולוקחים מעט זכרון שימוש ב LIFO – LIFO (Last In, First Out) lists. –אפשר להוסיף רק בסוף הרשימה.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
פתרון תרגילים #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)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול 7. מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
פונקציות. פונקציות מוכרות Imports System.Math Module Module1 Sub Main() Dim x As Decimal = Math.Abs(-10.4) Dim y As Decimal Console.WriteLine("I will.
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
מחסנית ותור Stacks and Queues. מחסנית Stack מחסנית - Stack ADT סוג של מערך מוגבל מהיר מאוד ותופס מעט זיכרון שימוש ב LIFO – LIFO (Last In, First Out)
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
קורס תכנות שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
מחסנית ותור Stacks and Queues. מחסנית Stack מחסנית - Stack ADT סוג של מערך מוגבל מהיר מאוד ותופס מעט זיכרון שימוש ב LIFO – LIFO (Last In, First Out)
מבנים קרן כליף. ביחידה זו נלמד :  מהו מבנה (struct)  איתחול מבנה  השמת מבנים  השוואת מבנים  העברת מבנה לפונקציה  מבנה בתוך מבנה  מערך של מבנים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
אלגוריתמי חיפוש. Brute Force Module Module1 Function BruteForce(ByRef x() As Integer, ByRef item As Integer) As Integer Dim i As Integer For i = 0 To.
מחרוזות – הטיפוס String
Programming Arrays.
מבוא למדעי המחשב לתעשייה וניהול
מחלקות classes.
מבוא כללי למדעי המחשב תרגול 4
מחסנית ותור Stacks and Queues.
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון

שלום! המייל של אבי: המייל של אריאלה: כתובת האתר:

מה לומדים? מבנה נתונים אלגוריתמים תכנות WINDOWS

דרישות הקורס חשיבה! דרך ארץ! (אין חובת נוכחות!) תרגילים – 12% מבחן – 88%

מחרוזות של תווים Strings

שקף מאת מאיר קומר תזכורת: מחרוזות - Strings Dim s As String s = “hello” s = s & “kita” או s = s + “kita” hellohellokita

זהירות! אי אפשר לעשות השמה לתוך מקום מסוים במחרוזת (זה לא מערך!) Dim s,t As String s = “hello” t = s(2) t = s.chars(2) t(0) = s(2) t.chars(0) = s.chars(2) פעולות מותרות: פעולות אסורות:

אז מה עושים? Length מחזירה אורך של מחרוזת Remove(start, count ) מסירה count תווים החל מהמקום start –ומחזירה את המחרוזת החדשה Insert(start, str) מוסיפה את המחרוזת str החל מהמקום start –ומחזירה את המחרוזת החדשה Replace(str1, str2) מחליפה את המחרוזת או התו str1 במחרוזת או תו str2 –בכל מקרה מחזירה את המחרוזת החדשה IndexOf(str), IndexOf(str, start) מחזירה מיקום המחרוזת (או תו) str במחרוזת –מיקום מתחיל מ 0 או מ start, אם לא נמצא מחזיר -1 LastIndexOf(str), LastIndexOf(str, end) מחזירה מיקום מסוף מחרוזת (או התו) str –מיקום מתחיל מסוף המחרוזת או מ end, אם לא נמצא מחזיר -1 SubString(start, count ) מייצרת מחרוזת של count תווים החל מהמקום start –ומחזירה את המחרוזת החדשה Chars(start) – לקריאה בלבד! אי אפשר לבצע השמה לתוך

שימו לב! בכל הפונקציות שהצגנו השינוי אינו מתבצע במחרוזת עליה פעלנו: s = "hello" s.Replace("h", "y") במחרוזת s עדיין יש "hello" אם נרצה לשנות את המחרוזת s, ולהפוך בתוכה את המחרוזת: s = "hello" s = s.Replace("h", "y") עכשיו במחרוזת s יש "yello"

שימוש בסיסי במחרוזת Module Module1 Sub Main() Dim x As String x = Console.ReadLine Console.WriteLine("The Length is " & x.Length()) Console.WriteLine("The first letter is " & x(0)) Console.WriteLine("The second letter is " & x(1)) Console.WriteLine("The third letter is " & x(2)) Console.WriteLine("What will this do??? " & x(2000)) End Sub End Module

שימוש בסיסי במחרוזת Module Module1 Sub Main() Dim x As String x = Console.ReadLine Console.WriteLine("The first letter is " & x(0)) If (x(0) = "A") Then Console.WriteLine("Yeah!") End If If (x(1) = " ") Then Console.WriteLine("Space in second position") End If End Sub End Module

פעולות בסיסיות במחזרות Module Module1 Sub Main() Dim word As String word = Console.ReadLine 'word(0) = "B" ' Won't work! word = word.Replace("a", "b") 'word.Replace("a", "b") also won't work Console.WriteLine("The word now is " & word) word = word.Remove(0, 2) 'takes out first 2 letters Console.WriteLine("The word now is " & word) word = word.Insert(0, "B2") 'add string at position Console.WriteLine("The word now is " & word) End Sub End Module

דוגמא של לולאה במחרוזת Module Module1 Sub Main() Dim x As String Dim i, j As Integer x = Console.ReadLine Console.WriteLine("The Length is " & x.Length()) For i = 0 To x.Length() - 1 For j = 0 To i Console.Write(x(j)) Next Console.WriteLine() Next End Sub End Module

פונקציה יותר מסובכת Module Module1 Function Change(ByVal x As String) As String Dim i As Integer For i = 0 To x.Length() - 1 If x(i) = "a" Or x(i) = "e" Or x(i) = "i" Then x = x.Remove(i, 1) 'Takes out that letter Console.WriteLine("The word is now " & x) x = x.Insert(i, "Z") 'Puts something else there End If Next Return x End Function Sub Main() Dim word As String word = Console.ReadLine Console.WriteLine("The Word is " & Change(word)) End Sub End Module

פונקציה יותר מסובכת עם REF Module Module1 Sub Change(ByRef x As String) Dim i As Integer For i = 0 To x.Length() - 1 If x(i) = "a" Or x(i) = "e" Or x(i) = "i" Then x = x.Remove(i, 1) 'Takes out that letter Console.WriteLine("The word is now " & x) x = x.Insert(i, "Z") 'Puts something else there End If Next End Sub Sub Main() Dim word As String word = Console.ReadLine Change(word) Console.WriteLine("The Word is " & word) End Sub End Module

שיטות נוספות לביצוע פעולות על מחרוזות ב VB Len Left Right Mid הערה: בשיטות אלו הספירה מתחילה מ 1 ולא מ 0 (בניגוד למה שהכרנו)

שקף מאת מאיר קומר מחזירה אורך המחרוזת Module Module1 Sub Main() Dim word As String word = Console.ReadLine Console.WriteLine(Len(word)) Console.WriteLine(word.Length()) End Sub End Module פעולות על מחרוזות Len

שקף מאת מאיר קומר מחזירה תת - מחרוזת משמאל a = “hello kita” x = Left (a,2) פעולות על מחרוזות Left he כמה תוים איזה מחרוזת

שקף מאת מאיר קומר מחזירה תת - מחרוזת מימין a = “hello kita” x = Right (a,6) פעולות על מחרוזות Right o kita כמה תוים איזה מחרוזת

שקף מאת מאיר קומר מחזירה תת - מחרוזת a = “hello kita” x = Mid (a,2,3) פעולות על מחרוזות Mid ell כמה תוים החל מתו -

שקף מאת מאיר קומר תרגול קטן Len (s) Left (s,6) Right (s,7) Mid (s,6,8) s = "arur haman baruch mordechai" 27 arur h rdechai haman ba Mid (Right(s,9),2,3) ord Right (s,9) & Mid (s,11,7) mordechai baruch Left (s,10) = Mid (s,1,11)? לא

מערכים

יש לקלוט 10מספרים למערך. להוסיף לכל מספר את המספר שבא אחריו במערך. למספר האחרון במערך לא להוסיף דבר. יש להדפיס את המערך. Module Module1 Sub Main() Dim x(10) As Integer Dim i As Integer Dim len As Integer = x.Length() Console.WriteLine("Length is {0} ", len) For i = 0 To len - 1 'Familiar? x(i) = Console.ReadLine() Next For i = 0 To len - 2 'why - 2? x(i) = x(i) + x(i + 1) Next For i = 0 To len - 1 Console.WriteLine("In pos {0} I have {1} ", i, x(i)) Next End Sub End Module

פונקציות קיימות... במערך חד מימדי: x.Length() Array.Resize(x, i) Array.Sort(x) Array.Reverse(x) במערך דו מימדי: x.Length() x.GetLength(0) x.GetLength(1)

פונקציות במערך – דוגמא Sub Print(ByVal x() As Integer) Dim i As Integer Console.WriteLine() Console.WriteLine("Now printing the array") For i = 0 To x.Length() - 1 'why -1 ??? Console.Write(x(i) & " ") If (i + 1) Mod 15 = 0 Then Console.WriteLine("") Next End Sub

המשך דוגמא - שימוש בפונקציה Sub Main() Dim i As Integer Dim targetArray(100) As Integer Dim rand As New Random For i = 0 To 100 targetArray(i) = rand.Next(-1000, 1000) Next ' Sort the entire targetArray. Array.Sort(targetArray) Print(targetArray) Array.Reverse(targetArray) Print(targetArray) Array.Resize(targetArray, 10) Array.Sort(targetArray) Print(targetArray) Console.WriteLine(vbNewLine) End Sub

המשך דוגמא - פלט Now printing the array Now printing the array Now printing the array

עוד דרך לשנות את גודל המערך ReDim Module Module1 Sub Main() Dim x() As Integer = {1, 2, 53, 3, 1, 23} Print(x) ReDim Preserve x(10) Print(x) ReDim x(15) Print(x) End Sub End Module פלט: Now printing the array Now printing the array Now printing the array

Structure

תזכורת דרך לבנות מבנה נתונים בסיסי –Structure מייצר "טיפוס" חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות: עובד: שם, טלפון, דרגה סטודנט: שם, ת"ז, ממוצע מוצר: שם, מחיר, משקל מספר מרוכב: חלק ממשי, חלק מדומה

Structure סינטקס: Structure שם המבנה משתנה 1 משתנה 2... End Structure דוגמא: Structure Oved Dim name As String Dim maskoret As Integer End Structure

Structs (Structures) Module Module1 Structure Oved Dim name As String Dim maskoret As Integer End Structure Sub Main() Dim x As Oved x.name = "Avi" x.maskoret = 1234 Dim People(10) As Oved People(0).name = "Yossi" People(1).name = "Moshe" People(2).name = "Lea" Console.WriteLine("People's Size is " & People.Length()) Console.WriteLine("The first name is " & People(0).name) Console.Write("The length of the first name is ") Console.WriteLine(People(0).name.Length()) End Sub End Module

מערך של Structure C++ Programming: From Problem Analysis to Program Design, Fifth Edition

דוגמא עם לולאות Module Module1 Structure Oved Dim name As String Dim maskoret As Integer End Structure Sub Main() Dim People(10) As Oved Dim i As Integer For i = 0 To 2 Console.WriteLine("Please enter person number " & i) People(i).name = Console.ReadLine People(i).maskoret = Console.ReadLine() Next Dim min As Integer = People(0).maskoret Dim temp As String = People(0).name For i = 1 To 2 If (People(i).maskoret < min) Then min = People(i).maskoret temp = People(i).name End If Next Console.WriteLine("The min is " & min & " his name is " & temp) End Sub End Module

Module Module1 Structure Oved Dim name As String Dim maskoret As Integer End Structure Sub Main() Dim People(10) As Oved Dim i As Integer For i = 0 To 2 Console.WriteLine("Please enter person number " & i) People(i).name = Console.ReadLine People(i).maskoret = Console.ReadLine() Next Dim min As Integer = 0 Dim temp As String = People(0).name For i = 1 To 2 If (People(i).maskoret < People(min).maskoret) Then min = i End If Next Console.WriteLine("The min is " & People(min).maskoret & " his name is " & People(min).name) End Sub End Module מה ההבדל ?

עם פונקציה... Structure Oved Public name As String Public maskoret As Integer End Structure Sub Main() Dim People(5) As Oved Dim i As Integer For i = 0 To People.Length() - 1 Console.WriteLine("Please enter the person's name") People(i).name = Console.ReadLine Console.WriteLine("Please enter their maskoret") People(i).maskoret = Console.ReadLine Next Console.WriteLine("High " & PrintHighest(People)) End Sub

הפונקציה Function PrintHighest(ByVal x() As Oved) As Integer Dim i As Integer Dim high As Integer = x(0).maskoret For i = 0 To x.Length - 1 If x(i).maskoret > high Then high = x(i).maskoret End If Next Return high End Function

Module Module1 Sub Main() Dim x As Oved x.name = "Avi" x.maskoret = 1234 Dim People(10) As Oved People(0).name = "Yossi" People(1).name = "Moshe" People(2).name = "Lea" Dim value As Integer = PrintHighest(People) Console.WriteLine("Highest is " & value) End Sub Structure Oved Public name As String Public maskoret As Integer End Structure Function PrintHighest(ByVal x() As Oved) As Integer Dim i As Integer Dim high As Integer = x(0).maskoret For i = 0 To x.Length - 1 If x(i).maskoret > high Then high = x(i).maskoret End If Next Return high End Function End Module מה יופיע פה?

תרגיל – תכנון חנות ברצוננו לייצר טבלה המכילה את רשימת המוצרים בחנות. לכל מוצר יש: שם ברקוד מחיר Structure Shop Dim name As String Dim code As Integer Dim price As Double End Structure

Module Module1 Structure Shop Dim name As String Dim code As Integer Dim price As Double End Structure Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = makolet(2).name = "Shoko" makolet(2).code = 122 makolet(2).price = 4.25 Dim i As Integer For i = 0 To makolet.Length() - 1 Console.WriteLine("Product {0} is: {1}, its price is: {2}", i, makolet(i).name, makolet(i).price) Next End Sub End Module Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: Product 2 is: Shoko, its price is: 4.25 Product 3 is:, its price is: 0 Product 4 is:, its price is: 0 Product 5 is:, its price is: 0 Product 6 is:, its price is: 0 Product 7 is:, its price is: 0 Product 8 is:, its price is: 0 Product 9 is:, its price is: 0 Product 10 is:, its price is: 0 מימוש חנות

Module Module1 Structure Shop Dim name As String Dim code As Integer Dim price As Double End Structure Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = makolet(2).name = "Shoko" makolet(2).code = 122 makolet(2).price = 4.25 Dim i As Integer For i = 0 To makolet.Length() - 1 If makolet(i).name <> Nothing Then Console.WriteLine("Product {0} is: {1}, its price is: {2}", i, makolet(i).name, makolet(i).price) End If Next End Sub End Module בלי הדפסת מוצרים ריקים Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: Product 2 is: Shoko, its price is: 4.25

Module Module1 Structure Shop Dim name As String Dim code As Integer Dim price As Double End Structure Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = makolet(2).name = "Shoko" makolet(2).code = 122 makolet(2).price = 4.25 PrintPrice(makolet) End Sub Sub PrintPrice(ByVal s() As Shop) Dim i As Integer For i = 0 To s.Length() - 1 If s(i).name <> Nothing Then Console.WriteLine("Product {0} is: {1}, its price is: {2}", i, s(i).name, s(i).price) End If Next End Sub End Module עם פונקציה Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: Product 2 is: Shoko, its price is: 4.25

רוצים יכולת למצוא את שם המוצר הכי זול נכתוב פונקציה נרצה להעביר לפונקציה את המערך של החנות נרצה לקבל מהפונקציה את השם של המוצר שימו לב – הפונקציה לא מדפיסה שום דבר!!! Function GetZol(ByVal s() As Shop) As String Dim i As Integer Dim idx As Integer = 0 Dim min As Double = s(0).price For i = 1 To s.Length() - 1 If s(i).name <> Nothing And s(i).price < min Then min = s(i).price idx = i End If Next Return s(idx).name End Function

הדפסת רשימת המוצרים המלאה ואת המוצר הכי זול במכולת נניח שיש לנו את הפונקציות הבאות (כמו שהגדרנו קודם) Sub PrintPrice(ByVal s() As Shop) Function GetZol(ByVal s() As Shop) As String נדפיס את כל המוצרים המכולת בעזרת פונקציה נדפיס את שם המוצר הזול ביותר נשתמש בפונקציה למציאת שם המוצר, ואז נדפיס

Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = PrintPrice(makolet) Dim zol As String zol = GetZol(makolet) Console.WriteLine("The cheapest thing in makolet is " & zol) End Sub Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: The cheapest thing in makolet is Cheese הקוד :

Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = Dim bakery(10) As Shop bakery(0).name = "roll" bakery(0).code = 333 bakery(0).price = 6.32 bakery(1).name = "pita" bakery(1).code = 777 bakery(1).price = 3.6 PrintPrice(makolet) Dim zol As String zol = GetZol(makolet) Console.WriteLine("The cheapest thing in makolet is " & zol) PrintPrice(bakery) zol = GetZol(bakery) Console.WriteLine("The cheapest thing in bakery is " & zol) End Sub Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: The cheapest thing in makolet is Cheese Product 0 is: roll, its price is: 6.32 Product 1 is: pita, its price is: 3.6 The cheapest thing in bakery is pita ואם יש גם מכולת וגם מאפיה? נשתמש באותה פונקציה שוב... נעביר לה פרמטר אחר, ונקבל ממנה משהו אחר

Sub Main() Dim makolet(10) As Shop makolet(0).name = "Cheese" makolet(0).code = 111 makolet(0).price = 8.75 makolet(1).name = "Shnitzel" makolet(1).code = 222 makolet(1).price = Dim bakery(10) As Shop bakery(0).name = "roll" bakery(0).code = 333 bakery(0).price = 6.32 bakery(1).name = "pita" bakery(1).code = 777 bakery(1).price = 3.6 PrintPrice(makolet) Dim zol As String Console.WriteLine("The cheapest thing in makolet is " & GetZol(makolet)) PrintPrice(bakery) Console.WriteLine("The cheapest thing in makolet is " & GetZol(bakery)) End Sub Product 0 is: Cheese, its price is: 8.75 Product 1 is: Shnitzel, its price is: The cheapest thing in makolet is Cheese Product 0 is: roll, its price is: 6.32 Product 1 is: pita, its price is: 3.6 The cheapest thing in bakery is pita אפשר גם לשתול את מה שחוזר מהפונקציה ישר לתוך פקודת הדפסה

Function Kupa(ByVal cart() As String, ByVal s() As Shop) As Single Dim total As Single = 0 For i = 0 To cart.Length - 1 For j = 0 To s.Length() - 1 If cart(i) = s(j).name Then total += s(j).price End If Next Return total End Function פונקציה לחישוב סכום המוצרים בסל

Sub Main() Dim super(10) As Shop super(0).name = "Shoko" super(0).code = 111 super(0).price = 4.75 super(1).name = "Apple" super(1).code = 222 super(1).price = 2.45 super(2).name = "Bread" super(2).code = 333 super(2).price = 5.05 super(3).name = "Bag" super(3).code = 444 super(3).price = 1.2 Dim lunch() As String = {"Bread", "Shoko"} Console.WriteLine("Lunch costs " & Kupa(lunch, super) & " shekel.") End Sub Lunch costs 9.8 shekel. המשך חישוב סכום המוצרים בסל

תרגיל בצע השוואת מחירים לסל קניות לחג פסח? –איזה קלט נבקש מהמשתמש? –מה צריך להיות מוגדר בתוכנית? –איך נכתוב את התוכנית?