תרגול מס' 5

Post on 29-Jan-2016

53 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

5תרגול מס'

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

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

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

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

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

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

String "abcd"

Index 0123

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

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

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

String s1;

String s2 = "abcd";

String s3 = "";

String s4 = null;

String s5 = new String();

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

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

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

מחרוזות

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

s2.charAt(0)

s2.charAt(1)

s2.charAt(5)

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

String s2 = "abcd";

'a'

'b'

StringIndexOutOfBoundsException

:String index out of range

מחרוזות

(.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

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

מחרוזות

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

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

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

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

public static void main (String[] args) {

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

}

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

פתרון

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

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

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

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

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

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

String "abcd"

Index 0123

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

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

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

ASCIIטבלת

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

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

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

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

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

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

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

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

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

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

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

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

.EDEBלמילה

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

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

- צופן קיסר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

- צופן קיסר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

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

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

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

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

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

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

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

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

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

מיונים

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

 למשל:

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

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

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

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

תיאור השיטה:

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

הים"(.

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

המיון.

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

שאלות מבחנים

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

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

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

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

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

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

top related