1 / 30

תרגול מס' 5

תרגול מס' 5. נושאים מחרוזות מיון (מיון בועות). מחרוזות. הקדמה מחרוזת ( String ) היא מחלקה המייצגת טקסט (רצף של תווים). מיספור אינדקס התווים במחרוזת מתחיל מ 0 ונגמר באורך המחרוזת פחות 1. String " abcd " Index 0123. מחרוזות. פעולות על מחרוזות: הגדרה ואתחול String s1;

justus
Download Presentation

תרגול מס' 5

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. תרגול מס' 5 נושאים מחרוזות מיון (מיון בועות) מבוא למדעי המחשב, בן גוריון

  2. מחרוזות הקדמה מחרוזת (String) היא מחלקה המייצגת טקסט (רצף של תווים). מיספור אינדקס התווים במחרוזת מתחיל מ 0 ונגמר באורך המחרוזת פחות 1. String "abcd"Index 0123 מבוא למדעי המחשב, בן גוריון

  3. מחרוזות פעולות על מחרוזות: • הגדרה ואתחול String s1; String s2 = "abcd"; String s3 =""; String s4 = null; String s5 = new String(); מבוא למדעי המחשב, בן גוריון

  4. מחרוזות • אורךמחרוזת String s2 = "abcd"; System.out.println(s2.length()); String s3 = ""; System.out.println(s3.length()); String s4 = null; System.out.println(s4.length()); 4 0 NullPointerException מבוא למדעי המחשב, בן גוריון

  5. מחרוזות String s2 = "abcd"; • גישה לתו במיקום (אינדקס) מסוים s2.charAt(0) s2.charAt(1) s2.charAt(5) 'a' 'b' StringIndexOutOfBoundsException :String index out of range מבוא למדעי המחשב, בן גוריון

  6. מחרוזות • תת-מחרוזת החל מאינדקס i ועד אינדקס j (לא כולל את j). String s2 = "abcd"; s2.substring(1,3) "bc" s2.substring(1) "bcd" • השוואה בין תוכן שתי מחרוזות. התוצאה בוליאנית (true או false). s2.equals(s3) • שרשור+ s2+"efg" יוצר מחרוזת חדשה "abcdefg". המחרוזת s2 לא משתנה. מה משווה האופרטור "==" ? מבוא למדעי המחשב, בן גוריון

  7. מחרוזות דוגמה 1 – מחרוזת עם סדר תווים הפוך לפנינו פונקציה reverse המקבלת מחרוזת ומחזירה מחרוזת אחרת שבה התווים בסדר (מיקום) הפוך. הפונקציה main מפעילה את reverse על המחרוזת "Hello" ומדפיסה את התוצאה (olleH). publicstaticvoid main (String[] args){System.out.println(reverse("Hello")); } מבוא למדעי המחשב, בן גוריון

  8. פתרון publicstatic String reverse(String data) { String rev = new String(); for (int j=data.length()-1; j>=0; j=j-1) { rev = rev + data.charAt(j); } return rev; } מבוא למדעי המחשב, בן גוריון

  9. מחרוזות דוגמה 2 – חיפוש של תת-מחרוזת במחרוזת לפנינו פונקציה isSubstring המקבלת שתי מחרוזתstr ו- sub ובודקת האם sub מופיעה בתוך str כתת מחרוזת. הפונקציה מחזירה תשובה בוליאנית. למשל, המחרוזת "bc" מופיעה כתת-מחרוזת במחרוזת "abcd" באינדקס 1. String "abcd" Index 0123 הרעיון: נשווה את "bc" לתתי מחרוזות של "abcd" בעלות אורך זהה. מבוא למדעי המחשב, בן גוריון

  10. publicstaticboolean isSubstring(String str,String sub){ boolean isFound = false; int lastInd = str.length()- sub.length(); for (int i=0; i<=lastInd && !isFound; i=i+1) { String strSub = str.substring(i, i+sub.length()); if (strSub.equals(sub)) { isFound = true; } } return isFound; } מבוא למדעי המחשב, בן גוריון

  11. טבלת ASCII מבוא למדעי המחשב, בן גוריון

  12. דוגמה 3 – צופן קיסר סכמה של צופן כללי: מבוא למדעי המחשב, בן גוריון

  13. דוגמה 3- צופן קיסר צופן (Cipher) הוא אלגוריתם הצפנה, המקבל טקסט קריא ומפתח, ומחזיר טקסט מוצפן. • צופן קיסר מבוסס על רעיון החלפת האותיות של הטקסט הקריא, לשם יצירתו של הטקסט המוצפן: האלפבית המשמש להצפנה מוסט מעגלית במספר קבוע של 'מקומות' מן האלפבית הרגיל. • המפתח (key)= מספר מקומות ההסטה. • לפי עדויות היסטוריות יוליוס קיסר עשה בשיטה זו שימוש נרחב. מבוא למדעי המחשב, בן גוריון

  14. דוגמה 3- צופן קיסר למשל, בהזזת של 3 מקומות המילהBABY תתורגם... למילה EDEB. מבוא למדעי המחשב, בן גוריון

  15. publicstatic String encrypt(String str, int key) { String ans = ""; finalint ALPHABET_SIZE = 26; for (int i = 0; i < str.length(); i=i+1) { int c = str.charAt(i); if ('A'<=c && c<='Z') { c = c - 'A'; c = ((c + key) % ALPHABET_SIZE )+'A'; } elseif ('a'<=c && c<='z') { c = c - 'a'; c = ((c + key) % ALPHABET_SIZE )+'a'; } ans = ans + (char)c; } return ans; } מבוא למדעי המחשב, בן גוריון

  16. דוגמה 3- צופן קיסר כמה הערות: • בפקודה int c = str.charAt(i)מתרחשת המרת טיפוס אוטומאטית מ char ל int.כנ"ל בביטויים כמו'A'<=c ו-c-'A'. • בפקודה ans = ans + (char)cיש המרת טיפוס מפורשת מ int ל char. פעולה זו נחוצה מכיוון שנרצה לשרשר למחרוזת התוצאה ערך char ('A') ולא int (65). • הערכים המספריים של כל תו מסוכמים בטבלה (טבלת ASCII, תקן UNICODE). אין כלל צורך לזכור את הטבלה בע"פ. מבוא למדעי המחשב, בן גוריון

  17. דוגמה 3- צופן קיסר publicstaticvoid main(String[] args) { String str = "BEN GURION UNIVERSITY"; int key = 3; String encrypted = encrypt(str, key); System.out.println(encrypted);// "EHQ JXULRQ XQLYHUVLWB" String decrypted = decrypt(encrypted, key); System.out.println(decrypted);// "BEN GURION UNIVERSITY" } שאלה: מהי פעולת פענוח (decrypt) של צופן קיסר? תשובה: בדומה להצפנה, מלבד חיסור של מפתח ההזזה במקום חיבורו. מבוא למדעי המחשב, בן גוריון

  18. דוגמה 3- צופן קיסר פריצת צופן קיסר • בהינתן טקסט מוצפן כיצד ניתן לגלות את הטקסט הקריא מבלי לדעת את המפתח? • ניתן לנחש את המפתח בו הוצפן הטקסט באמצעות סטטיסטיקה על השכיחויות של אותיות האלף בית האנגלי בטקסט כלשהו. האות השכיחה ביותר בטקסט באנגלית היא E, שכיחותה 12%. • ב –quiz הבא תכתבו תוכנית המוצאת את האות השכיחה ביותר בטקסט נתון. סביר להניח שאות זו היא הקידוד של האות E וככה ניתן לחשב בכמה הזזנו את האותיות. • ניתן לנסות את כל ההסטות האפשריות (כמה כאלו יש?) ולהשוות את התוצאה למילון. מבוא למדעי המחשב, בן גוריון

  19. מיונים מיון מערך (array sort) - הגדרת הבעיה: בהינתן מערך A של n מספרים שלמים, חשב מערך ממוין של אותם מספרים. למשל: Input: 7, 18, 28, 4, 10 Output: 4, 7, 10, 18, 28 ישנן שיטות מיון רבות, למשל: • מיון בחירה (Selection Sort) • מיון הכנסה Insertion Sort)) • מיון בועות (Bubble Sort) מבוא למדעי המחשב, בן גוריון

  20. מיון בועות (Bubble Sort) תיאור השיטה: תוך כדי המיון, החלק הימני של המערך כבר ממוין ("מעל פני הים") והחלק השמאלי של המערך אינו ממוין ("מתחת לפני הים"). בכל סבב, "בועה" מבעבעת עד שהיא מגיעה לפני הים. הבועה "סוחבת" איתה ערכים גדולים: בבעבוע הבועה, בכל שני תאים סמוכים בהן עוברת הבועה, מוחלפים הערכים אם אינם בסדר המיון. http://www.youtube.com/watch?v=gWkvvsJHbwY מבוא למדעי המחשב, בן גוריון

  21. מיון בועות (Bubble Sort) 18 7 28 4 10 7 18 28 4 10 7 18 28 4 10 7 18 4 28 10 7 18 4 10 28 7 18 4 10 28 7 18 4 10 28 7 4 18 10 28 7 4 10 1828 7 4 10 18 28 7 4 10 1828 4 7 10 1828 4 7 10 1828 4 7 10 1828 4 7 10 1828 וכן הלאה עד אשר המערך כולו מעל פני הים. מבוא למדעי המחשב, בן גוריון

  22. publicstaticvoid bubbleSort(int[] array){ int tmp; /* @pre: bbl=0 */ for (int bbl=0; bbl<array.length-1; bbl=bbl+1) { /* @inv: array[array.length-bbl.. array.length-1] is sorted * and all numbers array[array.length-bbl.. array.length-1] * are bigger than the numbers array[0 .. array.length-bbl-1] */ for (int index=0; index < array.length-1; index=index+1){ if (array[index] > array[index+1]) { tmp = array[index]; array[index] = array[index+1]; array[index+1] = tmp; } } } /* @post: array is sorted */ } מבוא למדעי המחשב, בן גוריון

  23. מיון בועות(Bubble Sort) שאלה: כמה השוואות מתבצעות? (array[index] > array[index+1]) תשובה: הלולאה הפנימית מבצעת n השוואות. הלולאה החיצונית מתבצעת n פעמים. סה"כ n2השוואות. שאלה: האם כל ההשואות נחוצות? תשובה: לא. • אם המערך כבר ממוין אין צורך להמשיך בלולאה (לא צריך לבעבע עוד בועה). • השוואות הנעשות בחלק הממויין מיותרות (פני הים יורדים, ויש להשוות איברים רק מתחת לפני הים). מבוא למדעי המחשב, בן גוריון

  24. publicstaticvoid bubbleSort(int[] array){ boolean isSorted = false; int tmp; for (int bbl=0; !isSorted && bbl<array.length-1; bbl=bbl+1){ isSorted = true; for (int index=0; index<array.length-1-bbl; index=index+1){ if (array[index] > array[index+1]) { tmp = array[index]; array[index] = array[index+1]; array[index+1] = tmp; isSorted = false; } } } } מבוא למדעי המחשב, בן גוריון

  25. שאלות מבחנים מבוא למדעי המחשב, בן גוריון

  26. מבוא למדעי המחשב, בן גוריון

  27. מבוא למדעי המחשב, בן גוריון

  28. מבוא למדעי המחשב, בן גוריון

  29. מבוא למדעי המחשב, בן גוריון

  30. מבוא למדעי המחשב, בן גוריון

More Related