24
ססססס סס'5 : סססססס ססססס ססססססס סססססס

תרגול מס' 5 : המתרגם

  • Upload
    ling

  • View
    61

  • Download
    0

Embed Size (px)

DESCRIPTION

תרגול מס' 5 : המתרגם. שימוש במחלקות קיימות. משימה. תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם. שאלות. האם כבר יש שירות תרגום שאנחנו יכולים להשתמש בו? אולי נוכל לעשות שימוש ב Microsoft Translate ? כיצד קוראים מקבצים? - PowerPoint PPT Presentation

Citation preview

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

: המתרגם5תרגול מס'

שימוש במחלקות קיימות

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

משימה

תכנית המתרגמת קטעי טקסט לשפהאחרת

הקלט: קובץ המכיל את קטעי הטקסט וכןאת

השפה אליה רוצים לתרגם

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

2

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

שאלות

האם כבר יש שירות תרגום שאנחנו יכוליםלהשתמש בו?

אולי נוכל לעשות שימוש בMicrosoft Translate??כיצד קוראים מקבצים?מה הפורמט של הקלט

נצטרך להחליט

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

3

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

הפשטה

כצעד ראשון נפתור בעיה הרבה יותר פשוטה

תכנית שמתרגמת את המילה“Hello ”מאנגלית לצרפתית

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

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

4

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

API – Application Programming Interface

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

5

ממשק המאפשר לאפליקציה לתקשר עםתוכנה אחרת

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

Eureka!

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

6

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

שלב א'

public class TranslatorEngine1 {private static final String APIkey = "Your Bing Developer API key goes here";

public static void main(String[] args) throws Exception {Translate.setKey(APIkey);

String TranslatedText = Translate.execute("Hello", Language.ENGLISH, Language.FRENCH);

System.out.println(TranslatedText);}

}

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

7

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

אינטראקציה עם המשתמש

נתחיל להתקדם עקב בצד אגודל אל היעדשלנו

קלט מהמשתמש יינתן בשורת הפקודה:המילה לתרגוםפרמטר ראשון פרמטר שני: שפת המקורפרמטר שלישי: שפת היעד

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

8

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

שלב ב'

public class TranslatorEngine2 {private static final String APIkey = "Your Bing Developer API key goes here";

public static void main(String[] args) throws Exception {\Translate.setKey(APIkey);

String TranslatedText = Translate.execute(args[0],

Language.fromString(args[1]),Language.fromString(args[2]));

System.out.println(TranslatedText);}

}

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

9

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

קריאת קלט

( נקרא קלט מהמשתמשconsole)עדיין מילה אחתאין שימוש בקבצים

נשתמש במחלקהScanner?מה הפורמט של הקלט

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

10

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

Scannerהמחלקה

סורק טקסט פשוט"את הקלט לרכיביו השונים )מילה, "שובר

מספר וכדומה( בעת יצירה מקבל כפרמטר מהיכן לקרוא את

הקלט

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

11

Scanner s = new Scanner(System.in);int anInt = s.nextInt();float aFloat = s.nextFloat();String aString = s.next();String aLine = s.nextLine();

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

פורמט הקלט

מהו הפרוטוקול המשותף שחולקיםהאפליקציה והמשתמש לצורך התקשורת

ביניהםאיזה מידע דרוש)... ,כיצד הוא מקודד )מספר, מחרוזתמה סדר הפרמטרים

:נבחר<word< <source-lang< <target-lang<

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

12

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

דוגמא

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

13

Scanner s = new Scanner(System.in);System.out.println("enter line:");while (s.hasNext())

System.out.println(s.next());

standard inputקרא מ-

הבאTokenקרא את ה-

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

public class TranslatorEngine3 {private static final String APIkey = "Your Bing Developer API key goes here";

public static void main(String[] args) throws Exception {Translate.setKey(APIkey);

Scanner s = new Scanner(System.in);String[] fragments = s.nextLine().split(" ");String TranslatedText =

Translate.execute(fragments[0],

Language.fromString(fragments[1]),

Language.fromString(fragments[2]));System.out.println(TranslatedText);

}}

שלב ג'

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

14

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

קבצים

במקום לקרוא את שורת הקלט מהמשתמשנקרא אותה מקובץ

קובץ מיצג ע"י המחלקהFile( נאתחל את האוביקט עם המסלולpath )

לקובץ

File f = new File(“C:\\Software1\\example.txt”);

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

15

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

( לקובץPathמסלול )

– מסלול יחסיRelative pathnew File)“example.txt”(-בeclipse המיקום הנוכחי הוא Project root

– מסלול מלאAbsolute pathnew File)“C:\\Software1\\example.txt”(

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

16

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

public class TranslatorEngine4 {private static final String APIkey = "API key";private static final String FILE_NAME = “example.txt”;

public static void main(String[] args) throws Exception {Translate.setKey(APIkey);

Scanner s = new Scanner(new File(FILE_NAME));String[] fragments = s.nextLine().split(" ");String TranslatedText =

Translate.execute(fragments[0],

Language.fromString(fragments[1]),

Language.fromString(fragments[2]));System.out.println(TranslatedText);

}}

שלב ד'

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

17

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

קלטים מרובים

מספר שורות קלט מקובץנקרא מספר קלטים עד לסוף הקובץ

שימוש במתודותhasNextLine-ו nextLine

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

18

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

public class TranslatorEngine5 {private static final String APIkey = "API key";private static final String FILE_NAME = “...";

public static void main(String[] args) throws Exception {Translate.setKey(APIkey);

Scanner s = new Scanner(new File(FILE_NAME));while (s.hasNextLine()) {

String[] fragments = s.nextLine().split(" ");

System.out.println(Translate.execute(fragments[0], Language.fromString(fragments[1]),

Language.fromString(fragments[2])));}

}}

שלב ה'

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

19

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

פיסקה

פיסקה ולא רק מילה אחת?מה יהיה הפורמט החדש

:נבחר <source-lang<#<target-lang<#<paragraph<

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

20

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

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

21

Example - ScannerSet delimiters

String input = "1 fish 2 fish red fish blue fish";Scanner s =

new Scanner(input).useDelimiter(" *fish *");while (s.hasNext())

System.out.println(s.next());s.close;)(

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

public class TranslatorEngine6 {private static final String APIkey = "API key";private static final String FILE_NAME = “...";public static void main(String[] args) throws Exception {

Translate.setKey(APIkey);

Scanner s = new Scanner(new File(FILE_NAME));s.useDelimiter("#");Language from = Language.fromString(s.next());Language to = Language.fromString(s.next());s.skip("#");StringBuffer text = new StringBuffer();while (s.hasNextLine()) {

text.append(s.nextLine());text.append(' ');

}System.out.println(Translate.execute(text.toString(), from,

to));}

}

שלב ו'

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

22

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

לאן עכשיו?

תרגום מספר קבציםמספר פסקאות בקובץ יחידלוותר על חלק מהפרמטרים

זיהוי אוטומטי של שפת הקלטשימוש בשמות משמעותיים לשפותGUI...

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

23

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

מה חסר?

טיפול בשגיאותחסרים פרמטריםשפות לא מוגדרותמנגנון התרגום נכשלקובץ לא קיים...

Javaתכנות מתקדם בשפת אוניברסיטת תל אביב

24