
isFound מתחיל ב-false והופך ל-true כשנמצא מחלק.!isFound, כלומר true אם לא נמצא מחלק.parseInt.הטקסט המלא של הדקות הראשונות בהרצאה «תרגילים 17-18» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו ממשיכים עם התרגילים שלנו ועכשיו אנחנו יותר נתמקד בפונקציות ועכשיו אנחנו צריכים לעשות תרגיל שבו אנחנו בודקים האם מספר 9973 האם זה מספר פריים נמבר פריים נמבר זה מספר שמתחלק רק בעצמו או באחד הוא לא מתחלק בשום דבר אחר לדוגמה 7 האם הוא מתחלק ב-2 3 4 5 6 הוא לא מתחלק בשום דבר ולכן הוא נקרא Prime
Number. בעברית הדבר הזה נקרא מספר ראשוני, זאת אומרת האם הוא מספר ראשוני וגם אנחנו צריכים לתת ליוזר או צדה לעשות בדיקה משלו למספר אבל בוא נתחיל מזה האם 9973 זה מספר ראשוני או לא.
אז אנחנו מתחילים בזה שאנחנו בעצם נעשה פונקציית עזר שנקראת פונקציית שק פריים נמבר פונקציית עזר הזאת אנחנו גם נצטרך אותה בהמשך פונקציית שק פריים נמבר תחזיר לי האם המספר הוא ראשוני או לא ראשוני ואם הוא מספר ראשוני תחזיר לי true ואם לא false והיא תבדוק לי את מה היא תבדוק לי את מה שאני אעביר לה בסוגריים כפרמטר זה
פונקציית עזר שלי אני מעביר לה num to check כפרמטר והיא בודקת האם הוא ראשוני או לא מחזירה לי את זה ואז task 17 וtask 18 ישתמשו בפונקציה הזאת זו פונקציית עזר אוניברסלית כזאת שבודקת.
איך אנחנו נבדוק אם המספר ראשוני או לא? אנחנו נתחיל מזה שנבדוק האם מצאנו משהו שהוא מתחלק בו ללא שארית, אבל אנחנו צריכים לבדוק את כל המספרים מ-2, 3, 4, מ-2 עד numb to check מינוס 1. זאת אומרת אנחנו בודקים נניח עבור 7 את כל המספרים 2, 3, 4, 5 ו-6.
מסתובבים ובודקים. ואם מצאנו משהו שהוא מתחלק בו, אז אנחנו isfound ישווה ל-true. הופכים את הערך של ה-IsFound, IsFound זה כמו פלאג כזה, כמו דגל כזה, אם מצאנו או לא.
אנחנו צריכים לבדוק האם num2check מתחלק ב-2, 3, 4, 5, מתחלק ב-i ללא שווי. זאת אומרת, אנחנו לוקחים את ה-num2check הזה, את המספר הקבוע שלי, שהעבירו לי בפרמטר, ובודקים אותו עבור i2, i3, i4, ואם כן, עושים isFound שווה true.
וברגע שמצאנו, אנחנו מחזירים את הדגל הזה ל-true, זה אומר שמצאנו, אבל אם מצאנו משהו, להפך זה אומר שהוא לא ראשוני אנחנו צריכים פה לעשות להפוך את הערך של isfound אז מה אנחנו עושים אנחנו עושים משתנה עזר שנקרא isprime number ועושים לו סימן קריאה isfound מה זה אומר סימן קריאה זה אומר הפוך not אז
לוקחים את הערך של isfound והופכים אותו וברגע שהפכנו אותו אם הוא היה true הוא נהיה false ואם הוא היה false הוא נהיה true אנחנו הופכים אותו עם סימן קריאה ואז מחזירים למה?
אם מצאנו משהו שהוא מתחלק בו אז זה אומר שהוא לא ראשוני יפה וזאת המטרה שלנו לבדוק שהמספר לא מתחלק בשום דבר בין שתיים לאחד שלפניו זה נקרא למצוא מספר ראשוני יפה מאוד עכשיו אני מקווה שאתם מבינים מה הולך פה זה יחסית פשוט אנחנו מתחילים בזה שלא מצאנו עוברים על כל המספרים בודקים אם הם מתחלקים ללא שארית ב-i ואם כן אז
מחזירים שימו לב פונקציה מחזירה בשם שלה את הערך הרטורן מחזיר בשם של הפונקציה את הערך.
מה זה אומר? זה אומר שאני יכול לקרוא לה מבחוץ ולהעביר לה לדוגמה פרמטר 9973. ואז מה שקורה שאני קורא לפונקציה שלי היא מחזירה לי ערך בפקודת רטורן והערך המוחזר אני שומר אותו במשתנה עזר שלי isPrimeNumber ואם PrimeNumber שווה true אז אני אכתוב על המסך שהמספר הוא מספר ראשוני.
מה שהיה חשוב לי להראות לכם שהפונקציה מחזירה ערך ומקבלת בסוגריים פרמטרים ואפשר לעשות פונקציה אוניברסלית ובגלל שהיא כזאת שיכולה לעזור לי בהרבה שאלות לדוגמה פונקציה שבודקת לי מספר ראשוני או לא אני לא אדפיס שום דבר במסך אני אחזיר ערך
למי שקרא לי ומי שקרא לי הוא כבר יחשוב מה הוא רוצה לעשות תכף תראו שפעם אחת אנחנו רוצים להדפיס הודעה כזאת ופעם שנייה אנחנו רוצים הודעה אחרת הנקודה הכי חשובה להבין שהפונקציה שלנו יכולה להחזיר ערך, ואת הערך הזה אנחנו צריכים לשמור איפשהו, ואם אנחנו לא נשמור אותו הוא פשוט הולך לאיבוד, התוצאה הולכת לאיבוד.
ככה בעצם גם עובד ה-JQuery שהם כתבו פונקציות בדיוק כמונו, רק פונקציות שעוזרות לנו לדוגמה להדפיס משהו על המסך או לעשות כל מיני אפקטים.
יפה מאוד. אנחנו גם יכולים לקצר את הכתיבה ולרשום ישר, לקרוא לפונקציה ישר בתוך ה-if, אנחנו רוצים לעשות את זה יותר קריב ויותר פשוט וגם יותר קל לבדוק את זה כי אנחנו יכולים לשים breakpoint אנחנו עושים נקודת עצירה ואז לראות בדיוק מה החזיר לי פונקציה יותר קל לבדוק
את זה אם משתנה איזה קוד צריך להיות קוד קריב ופשוט לא קוד מסובך כי אנחנו צריכים לתחזק אותו עוד חצי שנה לשנות משהו לשפר משהו בואו נעבור עם הדבאגר שורה שורה שכחתי לעשות כפתור שמפעיל task 17 נעשה זה כפתור שנקרא task17 ובואו נפעיל את זה ונראה איך זה פועל
אנחנו לוחצים על task17 ועוברים שורה שורה בקוד לראות בדיוק מה קורה אז מה שקורה זה שאם אני אלחץ על f10 עכשיו הוא ידלג לי מעל הפונקציה שלי זאת אומרת הוא לא ייכנס פנימה הוא לא יראה לי מה קורה בפנים זאת אומרת יבצע אותה מהר מהר ויחזור לתוכנה הראשית הזאת אם אני אלחץ f11 את החץ למטה הזה עם נקודה הוא ייכנס פנימה ולא ידלג
הוא ייכנס פנימה לתוך הפונקציה ויראה לי את הפקודות שקורות שמה והנה נכנסתי לתוך הפונקציה שלי עם ערך 9973. מתחילים בזה ש-isfound שווה false כאילו לא נמצא.
מתחילים לבדוק האם 9973 מתחלק ב-2 האם הוא עכשיו הוא מתחלק ב-3 אנחנו רואים ש-isfound נשאר false כי אנחנו עושים שורה שורה ורואים האם זה מתחלק עכשיו ב-4 אם זה יתחלק ב-4 אז הוא יהפוך ל-true בואו נריץ רק מהר עד לנקודת הצירה הבאה.
סימנתי שורה 311 כנקודת הצירה הבאה, ואנחנו רואים שה-i האחרון זה 9972. למעשה ה-i האחרון זה משהו שהוא כבר לא בדק, הוא העלה אותו ולא בדק, אבל זה פחות חשוב לי עכשיו מאשר חשוב לי ש-isfound שווה true, isfound שווה false.
ברגע ש-isfound שווה false זה אומר שהוא לא מצא שום דבר שמתחלק במספר הזה. אנחנו רואים ש-prime number נהיה true, שימו לב. מה שסימן קריאה עשה הוא לקח את ה-isfound שווה false והפך אותו ל-isfound שווה true יפה מאוד יפה מאוד אז isfound שווה true וזה מה שרציתי ללמד אתכם שהם בעצם הופכים את
הערך ועכשיו כשחזרנו חזרה לפונקציה הראשית שלי חזר לי הערך מהפונקציית אזר שלי ו-isprime number שווה true וזהו זאת אומרת הפונקציה הראשית שלי נורא פרורה נורא פשוטה לקריאה עכשיו אנחנו נעשה משימה מספר 18 ואתם תראו אנחנו שוב נעזרים באותה פונקציה אבל בואו נבדוק שנייה מה יקרה אם יהיה
לנו מספר שהוא לא ראשוני נניח 9972 בואו נראה מה מתבצע מה קורה במקרה כזה במקרה כזה תסתכלו מה יקרה הפונקציה הראשית שלי קוראת לפונקציית עזר עם פרמטר 9972 אנחנו נכנסים פנימה מתחילים לבדוק האם 9972 מתחלק ב-2 כן הוא מתחלק והופכים את ה-isfound שימו לב עכשיו נהפוך אותו מ-isfound מ-false ל-true
והנה הפכנו אותו. הפכנו אותו ל-true, יפה מאוד. הפכנו אותו ל-true, ואין טעם יותר לבדוק. אני ממשיך לבדוק את זה, אבל זה מיותר. צריך לעצור את הלולאה, לא עשינו את זה.
הוא סתם בדק 9,000 מספרים, אבל הוא עושה את זה מאוד מהר. והופכים את הערך, וזהו. יופי. אז אני רואה שזה כן עובד.
רק דבר אחד שהציק לי פה, שאני רוצה, אחרי שהוא מוצא שהמספר הוא כן מתחלק, אין טעם לבדוק את כל האחרים. אם הוא מתחלק ב-2 אין טעם לבדוק 3, 4, 5, 6 כי הוא כבר לא ראשוני מבחינתי אז ישר שיקפוץ הפקודת ברייק אומרת לו ישר לקפוץ לשורה 304 אחרי הלולאה ישר לקפוץ לשם ישר לדלג יפה מאוד אז בואו נעבור עכשיו שורה שורה ונראה עוד פעם אנחנו קוראים לפונקציית עזר עם
מספר 9972 בודקים האם הוא מתחלק ב-2 הוא כן מתחלק ב-2 isfound נהיה true ואנחנו עכשיו קופצים ישר מחוץ ללולאה. הופה, לשורה שאחרי הלולאה. אתם רואים? זאת הלולאה.
ישר קפצנו לשורה שאחריה. יפה מאוד, וזהו, והכל עובד כמו שרצינו. הברייק, הדבר היחיד שהברייק הוסיף לנו, פקודת ברייק הוסיפה לנו, שלא המשכנו עם הלולאה כשכבר ברורה לנו התוצאה הסופית.
אוקיי? אין טעם להמשיך לבדוק, אז עשינו פקודת ברייק. יופי, וזה התרגיל מספר 17. עכשיו אנחנו נעבור לתרגיל 18 שבתרגיל 18 מבקשים מאיתנו לבדוק באותה צורה רק 20 מספרים ראשוניים מ-1 עד 20 מי הם המספרים הראשוניים בין 1 ל-20 האם 2 הוא ראשוני האם 3 הוא ראשוני האם 7 הוא ראשוני האם 8 הוא ראשוני את כל המספרים 1 עד 20 יפה מאוד ואנחנו עכשיו נבדוק את כל
המספרים 1 עד 20 האם הם ראשוניים או לא וגם ניתן למשתמש להכניס איזשהו מספר ונבדוק עבורו את המספר אנחנו צריכים שלושה כפתורים בעצם שני כפתורים בטקסט בוקס תיבת טקסט כפתור ראשון יבדוק לי את כל המספרים מ-1 עד 20 הוא יבדוק לי האם המספר הוא ראשוני פריים נאמבר
בין 1 ל-20 תיבת טקסט המשתמש יכניס לנו פה את המספר שהוא רוצה לבדוק ואנחנו נבדוק עבורו את המספר שהוא מתעניין בו יפה מאוד בואו נעשה עכשיו נתחיל בפונקציה ראשונה task18a ואחרי זה נעבור ל-b אנחנו צריכים לבדוק האם ה-20 מספרים הם ראשוניים או לא אז אנחנו עושים לולאת for מ-1 עד 20 ובתוך הלולאה מ-1 עד 20 אנחנו צריכים לקרוא בעצם
לפונקציה שלנו שיבדוק לי פעם את מספר 1 פעם מספר 2 פעם מספר 3 פעם מספר 4 כל פעם תבדוק לי מספר אחר אוקיי אז אנחנו קוראים לפונקציית עזר שלנו שבודקת לי כל פעם i אחר כל פעם מספר אחר 1, 2, 3, 4 ואנחנו צריכים לשמור את התוצאה איפשהו יפה מאוד אבל זה למעשה מה שעשינו בתרגיל
האחרון אז בואו פשוט נעתיק את זה שזה בדיוק אותו דבר אנחנו פשוט לוקחים מעתיקים את התרגיל האחרון פשוט בתוך הלולה אנחנו עושים את