תרגול מס' 5

30
ססססס סס'5 םםםםםם ססססססס )סססס ססססס( סססס1 סססס ססססס ססססס, סס סססססס

Upload: justus

Post on 29-Jan-2016

53 views

Category:

Documents


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: תרגול מס' 5

5תרגול מס'

נושאים  מחרוזות)מיון )מיון בועות

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

Page 2: תרגול מס' 5

מחרוזותהקדמה

( היא מחלקה המייצגת טקסט )רצף של תווים(. Stringמחרוזת )

ונגמר באורך 0מיספור אינדקס התווים במחרוזת מתחיל מ

.1המחרוזת פחות

String "abcd"

Index 0123

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

Page 3: תרגול מס' 5

מחרוזותפעולות על מחרוזות:

הגדרה ואתחול•

String s1;

String s2 = "abcd";

String s3 = "";

String s4 = null;

String s5 = new String();

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

Page 4: תרגול מס' 5

מחרוזותמחרוזת אורך•

מבוא למדעי המחשב, בן גוריון 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

Page 5: תרגול מס' 5

מחרוזות

גישה לתו במיקום )אינדקס( מסוים•

s2.charAt(0)

s2.charAt(1)

s2.charAt(5)

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

String s2 = "abcd";

'a'

'b'

StringIndexOutOfBoundsException

:String index out of range

Page 6: תרגול מס' 5

מחרוזות

(.j )לא כולל את j ועד אינדקס i החל מאינדקס תת-מחרוזת•

String s2 = "abcd";

s2.substring(1,3) "bc"

s2.substring(1) "bcd"

(.false או true בין תוכן שתי מחרוזות. התוצאה בוליאנית )השוואה•

s2.equals(s3)

+ שרשור•

s2+"efg" יוצר מחרוזת חדשה "abcdefg" המחרוזת .s2.לא משתנה

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

מה משווה האופרטור "==" ?

Page 7: תרגול מס' 5

מחרוזות

– מחרוזת עם סדר תווים הפוך 1דוגמה

המקבלת מחרוזת ומחזירה מחרוזת אחרת reverseלפנינו פונקציה

מפעילה את mainשבה התווים בסדר )מיקום( הפוך. הפונקציה

reverse על המחרוזת "Hello"( ומדפיסה את התוצאה olleH.)

public static void main (String[] args) {

System.out.println(reverse("Hello"));

}

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

Page 8: תרגול מס' 5

פתרון

public static 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;

}

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

Page 9: תרגול מס' 5

מחרוזות – חיפוש של תת-מחרוזת במחרוזת2דוגמה

sub ו- str המקבלת שתי מחרוזת isSubstringלפנינו פונקציה

כתת מחרוזת. הפונקציה str מופיעה בתוך subובודקת האם

מחזירה תשובה בוליאנית.

.1 באינדקס " abcd" מופיעה כתת-מחרוזת במחרוזת "bc"למשל, המחרוזת

String "abcd"

Index 0123

בעלות אורך זהה."abcd" לתתי מחרוזות של "bc"הרעיון: נשווה את

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

Page 10: תרגול מס' 5

public static boolean 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;

}

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

Page 11: תרגול מס' 5

ASCIIטבלת

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

Page 12: תרגול מס' 5

– צופן קיסר 3דוגמה :סכמה של צופן כללי

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

Page 13: תרגול מס' 5

- צופן קיסר3דוגמה

( המקבל Cipherצופן הצפנה, אלגוריתם הוא קריא( טקסט . טקסט מוצפן, ומחזיר מפתחו

צופן קיסר מבוסס על רעיון החלפת האותיות של הטקסט •הקריא, לשם יצירתו של הטקסט המוצפן: האלפבית המשמש

להצפנה מוסט מעגלית במספר קבוע של 'מקומות' מן האלפבית הרגיל.

(= מספר מקומות ההסטה.keyהמפתח )•

לפי עדויות היסטוריות יוליוס קיסר עשה בשיטה זו שימוש נרחב.•

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

Page 14: תרגול מס' 5

- צופן קיסר3דוגמה

תתורגם... BABY מקומות המילה3למשל, בהזזת של

.EDEBלמילה

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

Page 15: תרגול מס' 5

public static String encrypt(String str, int key) {

String ans = "";

final int 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';

}

else if ('a'<=c && c<='z') {

c = c - 'a';

c = ((c + key) % ALPHABET_SIZE )+'a';

}

ans = ans + (char)c;

}

return ans;

}מבוא למדעי המחשב, בן גוריון 15

Page 16: תרגול מס' 5

- צופן קיסר3דוגמה :כמה הערות

int c = str.charAt(i)בפקודה 1.

.int ל charמתרחשת המרת טיפוס אוטומאטית מ

. 'c-'A ו- A'<=c' כנ"ל בביטויים כמו

ans = ans + (char)cבפקודה 2.

. פעולה זו נחוצה מכיוון char ל intיש המרת טיפוס מפורשת מ

.)int )65 ולא char ('A')שנרצה לשרשר למחרוזת התוצאה ערך

, ASCIIהערכים המספריים של כל תו מסוכמים בטבלה )טבלת 3.

(. אין כלל צורך לזכור את הטבלה בע"פ.UNICODEתקן

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

Page 17: תרגול מס' 5

- צופן קיסר3דוגמה public static void 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: מהי פעולת פענוח )שאלה

: בדומה להצפנה, מלבד חיסור של מפתח ההזזה במקום תשובהחיבורו.

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

Page 18: תרגול מס' 5

- צופן קיסר3דוגמה

פריצת צופן קיסר

בהינתן טקסט מוצפן כיצד ניתן לגלות את הטקסט הקריא מבלי •לדעת את המפתח?

ניתן לנחש את המפתח בו הוצפן הטקסט באמצעות סטטיסטיקה •על השכיחויות של אותיות האלף בית האנגלי בטקסט כלשהו.

.12%, שכיחותה Eהאות השכיחה ביותר בטקסט באנגלית היא

הבא תכתבו תוכנית המוצאת את האות השכיחה ביותר quizב –• וככה Eבטקסט נתון. סביר להניח שאות זו היא הקידוד של האות

ניתן לחשב בכמה הזזנו את האותיות.

ניתן לנסות את כל ההסטות האפשריות )כמה כאלו יש?( •ולהשוות את התוצאה למילון.

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

Page 19: תרגול מס' 5

מיונים

n של A( - הגדרת הבעיה: בהינתן מערך array sortמיון מערך )מספרים שלמים, חשב מערך ממוין של אותם מספרים.

 למשל:

Input: 7, 18, 28, 4, 10Output: 4, 7, 10, 18, 28

ישנן שיטות מיון רבות, למשל:(Selection Sortמיון בחירה )•((Insertion Sortמיון הכנסה •(Bubble Sortמיון בועות )•

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

Page 20: תרגול מס' 5

)Bubble Sort( מיון בועות

תיאור השיטה:

תוך כדי המיון, החלק הימני של המערך כבר ממוין )"מעל פני הים"( והחלק השמאלי של המערך אינו ממוין )"מתחת לפני

הים"(.

בכל סבב, "בועה" מבעבעת עד שהיא מגיעה לפני הים. הבועה "סוחבת" איתה ערכים גדולים: בבעבוע הבועה, בכל שני תאים סמוכים בהן עוברת הבועה, מוחלפים הערכים אם אינם בסדר

המיון.

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

http://www.youtube.com/watch?v=gWkvvsJHbwY

Page 21: תרגול מס' 5

)Bubble Sort( מיון בועות

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

וכן הלאה עד אשר המערך כולו מעל פני הים.

Page 22: תרגול מס' 5

public static void 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 */

} מבוא למדעי המחשב, בן גוריון 22

Page 23: תרגול מס' 5

)Bubble Sort( מיון בועות

(array[index] > array[index+1]): כמה השוואות מתבצעות? שאלה

השוואות. הלולאה החיצונית n: הלולאה הפנימית מבצעת תשובההשוואות. n2 סה"כ פעמים. nמתבצעת

 

: האם כל ההשואות נחוצות? שאלה

: לא. תשובהאם המערך כבר ממוין אין צורך להמשיך בלולאה )לא צריך •

לבעבע עוד בועה(.השוואות הנעשות בחלק הממויין מיותרות )פני הים יורדים, ויש •

להשוות איברים רק מתחת לפני הים(.

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

Page 24: תרגול מס' 5

public static void 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;

}

}

}

} מבוא למדעי המחשב, בן גוריון 24

Page 25: תרגול מס' 5

שאלות מבחנים

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

Page 26: תרגול מס' 5

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

Page 27: תרגול מס' 5

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

Page 28: תרגול מס' 5

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

Page 29: תרגול מס' 5

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

Page 30: תרגול מס' 5

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