Download presentation
Presentation is loading. Please wait.
1
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12
2
ספריות
3
3 הרבה מטלות חוזרות על עצמם בתכניות שונות מיון מערך מציאת מילה במחרוזת וכו ' מפתחי שפות תכנות וסביבות פיתוח מתחשבים בזה ומספקים אוספים של פרוצדורות שמבצעות את הפעולות האלו אוספים אלה מכונים ספריות ( באנגלית : libraries) את הפרוצדורות בספריות מחלקים לפי נושאים : Math Console וכו ' רעיון של ספריות
4
פרוצדורות עבור עבודה עם מערך
5
5 מיון מערך Sort - הפיכה - Reverse Module Module1 Sub Main() Dim x() As Integer = {1, 7, 5, 50, -1} Array.Sort(x) Array.Reverse(x) For i = 0 To x.Length - 1 Console.Write(x(i) & " ") Next Console.ReadKey() End Sub End Module דוגמאות של פרוצדורות עבור עבודה עם מערך
6
פרוצדורות עבור עבודה עם מחרוזת
7
דוגמאות של פרוצדורות עבור עבודה עם מחרוזת Remove Insert StrReverse Replace IndexOf SubString
8
הסרה ממחרוזת Remove Remove(start, count ) מסירה count תווים החל מהמקום start ומחזירה את המחרוזת החדשה Module Module1 Sub Main() Dim str As String = "This is my string" Dim str2 As String str2 = str.Remove(0, 8) Console.WriteLine(str2) Console.WriteLine(str) Console.ReadKey() End Sub End Module
9
הוספה למחרוזת Insert Insert(start, str) מוסיפה את המחרוזת str החל מהמקום start ומחזירה את המחרוזת החדשה Module Module1 Sub Main() Dim str As String = "This is my string" Dim newStr As String = str.Insert(11, "nice ") Console.WriteLine(newStr) Console.WriteLine(str) Console.ReadKey() End Sub End Module
10
היפוך מחרוזת StrReverse StrReverse(str) הופכת את המחרוזת str ומחזירה את המחרוזת החדשה Module Module1 Sub Main() Dim str As String = "This is my string" Dim newStr As String = StrReverse(str) Console.WriteLine(newStr) Console.WriteLine(str) Console.ReadKey() End Sub End Module
11
החלפה במחרוזת Replace Replace(str1, str2) מחליפה את המחרוזת str1 במחרוזת str2 ומחזירה את המחרוזת החדשה Module Module1 Sub Main() Dim str As String = "If u can imagine it, u can do it" Console.WriteLine(str.Replace("u", "you")) Console.ReadKey() End Sub End Module
12
חיפוש במחרוזת IndexOf IndexOf(str) מחזירה מיקום של מחרוזת str במחרוזת אם לא נמצא, מחזירה -1 IndexOf(str, start) מחזירה מיקום של המחרוזת str אחרי ( וכולל ) מיקום start במחרוזת אם לא נמצא מחזיר -1 Module Module1 Sub Main() Dim s As String = "one book on a table" Dim start As Integer = -1 While True start = s.IndexOf("on", start + 1) If start = -1 Then Exit While Console.WriteLine("Found {0} at {1}", "on", start) End While Console.ReadKey() End Sub End Module
13
חלק ממחרוזת SubString SubString(start, count ) מייצרת מחרוזת חדשה של count תווים החל מהמקום start Module Module1 Sub Main() Dim str As String Console.WriteLine("Please enter a string") str = Console.ReadLine() Dim pos As Integer = str.IndexOf("a") str = str.Substring(pos + 1, 5) Console.WriteLine("the five letters after a are:" & str) End Sub End Module
14
פונקציה שמחזירה מערך
15
פונקציה יכולה להחזיר מערך דוגמה : פונקציות Split(ch) ו Split(chs) מפצלת את המחרוזת str. הן משתמשות בתו ch או בתווים במערך chs כסימני הפרדה. Module Module1 Sub Main() Dim str As String = "This;is,my;;string" Dim sep() As Char = {";", ","} Console.WriteLine("There are {0} parts in {1}", _ str.Split(sep).Length, str) Console.WriteLine("There are {0} parts in {1}", _ str.Split(",").Length, str) Console.ReadKey() End Sub End Module
16
דוגמה נוספת יש לכתוב פונקציה המקבלת בתור פרמטרים שני מערכים של מספרים ממוינים לפי סדר עולה של המספרים ומחזירה מערך ממוין שכולל את כל המספרים של שני המערכים. קיימות שתי גרסאות של הבעיה : מותר להשתמש ב Array.Sort אסור להשתמש ב Array.Sort כי עבור מערכים גדולים, Array.Sort יכולה להיות אטית מדי נרצה לשים איברים בסדר נכון מיד ( ללא צורך למיין אחר כך )
17
פתרון 1 (אם מותר להשתמש ב Array.Sort) Module Module1 Function Merge(ByVal arr1() As Integer, ByVal arr2() As Integer) _ As Integer() Dim res(arr1.Length + arr2.Length - 1) As Integer For i = 0 To res.Length - 1 If i < arr1.Length Then res(i) = arr1(i) Else res(i) = arr2(i - arr1.Length) End If Next Array.Sort(res) Return res End Function Sub Main() Dim a() As Integer = {1, 3, 5, 7} Dim b() As Integer = {2, 4, 6, 8} Dim c() As Integer = Merge(a, b) For i = 0 To c.Length - 1 Console.Write(c(i) & " ") Next Console.ReadKey() End Sub End Module
18
פתרון 2 (אם אסור להשתמש ב Array.Sort) Function Merge(ByVal arr1() As Integer, ByVal arr2() As Integer) _ As Integer() Dim res(arr1.Length + arr2.Length - 1) As Integer Dim pos1 = 0, pos2 = 0, pos As Integer = 0 While pos1 < arr1.Length And pos2 < arr2.Length If arr1(pos1) < arr2(pos2) Then res(pos) = arr1(pos1) : pos1 += 1 Else res(pos) = arr2(pos2) : pos2 += 1 End If pos += 1 End While For i = pos1 To arr1.Length - 1 res(pos) = arr1(i) : pos += 1 Next For i = pos2 To arr2.Length - 1 res(pos) = arr2(i) : pos += 1 Next Return res End Function
19
פתרון 3 (אם אסור להשתמש ב Array.Sort) Function LastEl(ByVal arr() As Integer) Return arr(arr.Length - 1) End Function Function MergeSmallLarge(ByVal arr1() As Integer, ByVal arr2() As Integer) _ As Integer() Dim res(arr1.Length + arr2.Length - 1) As Integer Dim pos1 = 0, pos2 = 0, pos As Integer = 0 While pos1 < arr1.Length If arr1(pos1) < arr2(pos2) Then res(pos) = arr1(pos1) : pos1 += 1 Else res(pos) = arr2(pos2) : pos2 += 1 End If pos += 1 End While For i = pos2 To arr2.Length - 1 res(pos) = arr2(i) : pos += 1 Next Return res End Function Function Merge(ByVal arr1() As Integer, ByVal arr2() As Integer) As Integer() If LastEl(arr1) < LastEl(arr2) Then Return MergeSmallLarge(arr1, arr2) Return MergeSmallLarge(arr2, arr1) End Function
20
פתרון 4 (אם אסור להשתמש ב Array.Sort) Function Merge(ByVal arr1() As Integer, ByVal arr2() As Integer) _ As Integer() Dim res(arr1.Length + arr2.Length - 1) As Integer Dim pos1 = 0, pos2 = 0, pos As Integer = 0 While pos1 < arr1.Length Or pos2 < arr2.Length Dim el1, el2 As Integer If pos1 < arr1.Length Then el1 = arr1(pos1) _ Else el1 = arr2(pos2) + 1 If pos2 < arr2.Length Then el2 = arr2(pos2) _ Else el2 = arr1(pos1) + 1 If el1 < el2 Then res(pos) = el1 : pos1 += 1 Else res(pos) = el2 : pos2 += 1 End If pos += 1 End While Return res End Function
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.