Presentation is loading. Please wait.

Presentation is loading. Please wait.

רובוטיקה ותכנות שיעור 7.

Similar presentations


Presentation on theme: "רובוטיקה ותכנות שיעור 7."— Presentation transcript:

1 רובוטיקה ותכנות שיעור 7

2 נושאי השיעור אלגוריתמיקה Bottom -up תת שגרות ו- לולאות - מתקדם Easy C
1 אלגוריתמיקה Bottom -up 2 תת שגרות ו- לולאות - מתקדם 3 Easy C 4 פקודות מתקדמות דוגמאות 5

3 אלגוריתמיקה אלגוריתמיקה – תחום המחקר, הידע והמומחיות האנושית, המתמחים באלגוריתמים. אלגוריתם - רצף הוראות המיועד לפתרון בעיה. או דרך מוגדרת היטב, שיטתית, לביצוע משימה מסוימת.

4 אלגוריתמיקה אפיית עוגה: (כתהליך פיתוח) חומרים מתכון תנור,
כלי אפייה, אופה

5 אלגוריתמיקה אפיית עוגה: (כתהליך פיתוח) חומרים (קלט) חומרה תוכנה מתכון
חומרה תוכנה מתכון אלגוריתם תנור, כלי אפייה, אופה פלט

6 אלגוריתמיקה קלט תהליך פיתוח: תוכנה אלגוריתם חומרה פלט

7 אלגוריתמיקה מה המטרה? חשבו! מה הצורך? מה התועלת?

8 מטרה – ביצוע הפעולות תוך הצלחה מרבית לפי מדדים קבועים מראש:
אלגוריתמיקה צורך (בסיסי) – ביצוע פעולות. מטרה – ביצוע הפעולות תוך הצלחה מרבית לפי מדדים קבועים מראש: זמן – שאיפה לצמצום, ביצוע מהיר. נפח מקום (זיכרון) – שאיפה לחיסכון במקום. תוצאה סופית – האם המשימה הושלמה?

9 אילו אלגוריתמים אתם מכירים?
אלגוריתמיקה אלגוריתמים לדוגמא: אילו אלגוריתמים אתם מכירים?

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

11 אלגוריתמיקה נחזור לדוגמת העוגה:
הצורך הוא בהכנת עוגה (עבור יומולדת וכדומה) מטרת האלגוריתם היא להכין את העוגה תוך שימוש בחומרים ובאמצעים העומדים לרשותנו: חומרי גלם, תנור, כלי אפייה

12 אלגוריתמיקה חשוב! שלבי פיתוח תכנן! בצע!

13 אלגוריתמיקה אלגוריתם פשוט ביותר: חשוב!
פתחו אלגוריתם לחישוב סכומם של שני מספרים, A ו- B

14 אלגוריתמיקה אלגוריתם פשוט ביותר:
פתחו אלגוריתם לחישוב סכומם של שני מספרים, A ו- B התשובה ברורה מאליה : C=A+B

15 אלגוריתמיקה אלגוריתם פשוט ביותר: ואם נרצה לחשב סכומם של כמה מספרים?
למשל, מכונה המקבלת כפלט את שכר העובדים בחברה מסוימת, ומוציאה כפלט את השכר הכולל של כולם?

16 אלגוריתמיקה תכנן! קליטת נתונים אלגוריתם: חיבור המספר שהתקבל
לתוך משתנה של סכום האם קיימים עוד קלטים? אם כן, המשך לקלוט, אחרת - המשך לבלוק הבא הוצא הודעה מתאימה עם הפלט המבוקש

17 אלגוריתמיקה להוסיף קוד מ איזי C - בצע! זמן חישוב

18 אלגוריתמיקה אלגוריתם פשוט ביותר:
מה מגביל אותנו? מה ההבדל בין חברה עם 3 עובדים לבין חברה עם 100,000 עובדים? זמן חישוב

19 אלגוריתמיקה סיכום ביניים – תהליך אלגוריתמי: מחשבה:
אפיון אוסף הקלטים החוקיים הגדרת הפלטים הרצויים כפונקציה של הקלט

20 אלגוריתמיקה סיכום ביניים – תהליך אלגוריתמי: תכנון:
בניית סכימת בלוקים כללית

21 אלגוריתמיקה סיכום ביניים – תהליך אלגוריתמי: ביצוע:
כתיבת קוד – "תרגום" סכימת הבלוקים

22 אלגוריתמיקה נעבור לאלגוריתם טיפה מורכב יותר:
פתחו אלגוריתם לחישוב המחלק המשותף הגבוה ביותר של שני מספרים! נחזור לדוגמא זו בהמשך...

23 נושאי השיעור אלגוריתמיקה Bottom -up תת שגרות ו- לולאות - מתקדם Easy C
1 אלגוריתמיקה Bottom -up 2 תת שגרות ו- לולאות - מתקדם 3 Easy C 4 פקודות מתקדמות דוגמאות 5

24 תת שגרות ותכנון BOTTOM-UP
תכנון נכון נעשה בשלבים – הרובוט שלנו: דרוש רובוט ש: יתחיל תנועה בהישמע שריקה מתווה התנועה יהיה במסלול ריבועי הרובוט יחפש נר, כשיזהה אותו, יתקדם לעברו. אם הרובוט מתנגש במכשול – נוסע מעט אחורה ומסתובב.

25 תת שגרות ותכנון BOTTOM-UP
הגדרת החלקים הפרטיים של המערכת צירופם לרכיב גדול יותר צירוף נוסף ליצירת המערכת הכוללת המערכת מבוססת על חלקיה היסודיים

26 תת שגרות ותכנון BOTTOM-UP
תכנון נכון נעשה בשלבים – הרובוט שלנו: BOTTOM – UP: נתכנן כל בלוק בנפרד החל מהאלמנטים הקטנים ביותר בלוק זיהוי נר בלוק תיאור מכשול בלוק תיאור תנועה

27 תת שגרות ותכנון BOTTOM-UP
ניתן להשתמש בבלוק מסוים בתוך בלוק אחר. למשל – נרצה שגם תוך כדי חיפוש הנר וגם בתנועתו הרגילה, הרובוט יגיב למכשול לפי פקודות בלוק תיאור מכשול. בלוק זיהוי נר בלוק תיאור מכשול בלוק תיאור תנועה בלוק תיאור מכשול בלוק תיאור מכשול

28 תת שגרות ותכנון BOTTOM-UP
ניתן להשתמש בבלוק מסוים בתוך בלוק אחר. התוכנה מאפשרת לנו לשלב תהליכים (בלוקים) זה בזה. היתרון הגדול: כתבנו קוד (בלוק) עבור פונקציה (פעולה) ספציפית, ואנו יכולים להשתמש בבלוק הזה כמה שנרצה.

29 תת שגרות ותכנון BOTTOM-UP
תכנון נכון נעשה בשלבים – הרובוט שלנו: עבור כל דרישה, יש לכתוב רצף פקודות נפרד, בלוק נפרד. לבסוף, נקשר ונשלב בין כל התהליכים ליצירת התוכנית.

30 תת שגרות ותכנון BOTTOM-UP
בצעו תכנון מטה-מעלה של קוד אשר מבצע את הפעולות המתמטיות הבאות: הנחה את הכיתה: תכנה אשר מקבלת כקלט 2 מספרים ויודעת לבצע את כל הפעולות הללו. המטרה היא לתכנן ברמת בלוקים, כל בלוק יבצע חישוב של פעולה אחת. כל הבלוקים ביחד ירכיבו את התוכנה הכללית השלמה.

31 נושאי השיעור אלגוריתמיקה Bottom -up תת שגרות ו- לולאות - מתקדם Easy C
1 אלגוריתמיקה Bottom -up 2 תת שגרות ו- לולאות - מתקדם 3 Easy C 4 פקודות מתקדמות דוגמאות 5

32 לולאות - מתקדם BREAK, CONTINUE, RETURN

33 לולאות - מתקדם דוגמא: בנינו זרוע לרובוט. טווח התנועה של הזרוע, היושבת על גלגל שיניים הוא 360 מעלות. מה יקרה אם הזרוע תיתקל במרכב של הרובוט? המנוע של הזרוע יישרף? הזרוע תינזק? המרכב יינזק? יש להימנע מכך בכל מחיר!!! כיצד?

34 לולאות - מתקדם מרכיבים חיישן מפסק גבול (הזכור לנו משיעור חיישנים) בקצה הטווח המותר. תוכנה: כותבים קוד, אשר מקבל כפלט את נתוני החיישן. בהינתן שהמפסק נלחץ, דהיינו הגיעה הזרוע לקצה הטווח המותר – פעל בהתאם! מהי הפעולה? כרצוננו, למשל, החזר את הזרוע למצב התחלתי, מצב שיווי משקל.

35 לולאות - מתקדם להוסיף תמונה לגבי השקף הקודם

36 לולאות - מתקדם הגדרת מונח:
מעבר אחד על גוף הלולאה - מתחילת הסוגריים המסולסלות ועד סופן, נקרא איטרציה.

37 לולאות - מתקדם CONTINUE
שימוש בפקודה זו בתוך לולאה מקפיץ את הלולאה לאיטרציה הבאה.

38 לולאות - מתקדם CONTINUE

39 לולאות - מתקדם

40 לולאות - מתקדם CONTINUE התוכנה שראינו מבצעת:
יצירת לולאה שתתבצע 10 פעמים מדפיסה “loops begins” ואת הערך של X מקבלת ערך ממפסק הגבול אם המפסק לא נלחץ – מדלגת על פקודת continue, מאפשרת הפעלת זרוע אם המפסק נלחץ, פקודת continue מתבצעת והתוכנה קופצת מיידית לאיטרציה הבאה של הלולאה. בכך מדלגת על הפעלת הזרוע. להדגיש את ההבדל - מאיזו שורה קופצים ולאיפה.

41 לולאות - מתקדם דוגמא נוספת לפקודת continue

42 לולאות - מתקדם לשורה הזו לא נגיע

43 לולאות - מתקדם BREAK שימוש בפקודה זו בתוך הלולאה מסיים את כל האיטרציות של הלולאה – "הורג" את הלולאה.

44 לולאות - מתקדם BREAK

45 לולאות - מתקדם BREAK התוכנה שראינו מבצעת: יצירת לולאה אינסופית
מקבלת ערך ממפסק הגבול בודקת אם המפסק נלחץ אם המפסק לא נלחץ – מדפיסה הודעה שהלולאה ממשיכה, וכן הלאה. אם המפסק נלחץ, פקודת BREAK מתבצעת, הלולאה מסתיימת, מודפסת הודעה שהלולאה נוטרלה. להדגיש השוני בין סיום איטרציה אחת לבין סיום כל הלולאה.

46 לולאות - מתקדם

47 לולאות - מתקדם RETURN פקודה זו מבצעת אותה פעולה כמו פקודת BREAK, ובנוסף מחזירה ערך מסוים.

48 לולאות - מתקדם RETURN תוכנית זו קוראת לפונקציה Sample_return ודוחפת את
הערך שלה למשתנה result מדפיסה את הערך שבתוך result מהי הפונקציה sample_return?

49 לולאות - מתקדם RETURN

50 לולאות - מתקדם RETURN sample_return יוצרת לולאה אינסופית
דוחפת את הערך 18 למשתנה change מחזירה את הערך של change לפונקציה שקוראת לה פקודת ה return "הורגת" את לולאת ה while

51 לולאות - מתקדם RETURN מה יהיה הערך שיקבל result? Change

52 לולאות - מתקדם פקודות שימושיות בשפות תכנות:
בעיה: מערכת המקבלת כקלט מספר בינארי בן 3 סיביות (חשבו – כמה קלטים שונים אפשריים?) ומוציאה פלט בדמות הודעה כתובה המציינת את היום המתאים בשבוע בהנחה שהקלט מסמן את הימים, איזה קלט אינו חוקי?

53 לולאות - מתקדם פקודת SWITCH CASE:
קיימת שיטה נוחה לענות על כל סוגי הקלטים האפשריים כאמור, סוגי הקלט האפשריים: 1

54 לולאות - מתקדם פקודת SWITCH CASE:
קיימת שיטה נוחה לענות על כל סוגי הקלטים האפשריים כאמור, סוגי הקלט החוקיים (מדוע?): 1

55 לולאות - מתקדם שיטה שכבר למדנו: day: -- משתנה בינארי if day == '001'
then printf ('today is sunday'); elsif day == '010' then printf ('today is monday'); elsif day == '011' then printf ('today is tuesday'); elsif day == '100' then printf ('today is wendsday'); elsif day == '101' then printf ('today is thursday'); elsif day == '110 then printf ('today is friday'); elsif day == '111 then printf ('today is saturday');

56 לולאות - מתקדם פקודת SWITCH CASE: שיטה זו נוחה בהרבה... day:
קלט פקודת SWITCH CASE: day: Switch day is: case '001' printf ('today is sunday'); case '010' printf ('today is monday'); case '011' printf ('today is tuesday'); case '100' printf ('today is wendsday'); case '101' printf ('today is thursday'); case '110' printf ('today is friday'); case '111' printf ('today is saturday'); שיטה זו נוחה בהרבה... פלטים

57 לולאות - מתקדם ברוב שפות התוכנה הפקודה הזו קיימת.
ב Easy C, לדאבוננו, עדיין לא...

58 נושאי השיעור אלגוריתמיקה Bottom -up תת שגרות ו- לולאות - מתקדם Easy C
1 אלגוריתמיקה Bottom -up 2 תת שגרות ו- לולאות - מתקדם 3 Easy C 4 פקודות מתקדמות דוגמאות 5

59 פקודות מתקדמות Easy C ראינו בשיעור הקודם אפשרויות ניהוג ושליטה Arcade
Tank אלו הם בלוקים מוכנים נשתמש בהם לפעולות הכלליות – כגון הסעת הרובוט. פעולות כלליות – משותפות

60 פקודות מתקדמות Easy C קיימות פקודות ספציפיות, המאפשרות שליטה על מנוע / סרבו (servo) יחיד: Motor RX Servo RX ואפשרות לקבל מהם מידע RX input

61 פקודות מתקדמות Easy C Motor RX באמצעות הפקודה הזו ניתן לשלוט על
מנוע הזרוע דרך השלט גם פקודה זו תימצא בתוך לולאה, לשם קיומה התמידי

62 פקודות מתקדמות Easy C Motor RX בבחירת הפקודה ייפתח החלון הבא:
בחירת ערוץ התקשורת מהבקר בחירת לחצני התקשורת מהשלט בחירת המנוע המבוקש הערות

63 פקודות מתקדמות Easy C Motor RX הערה:
משדר יחיד: היה ולא הגדרנו ערוץ תקשורת – ברירת המחדל היא הערוץ שמחובר. שני משדרים: ברירת המחדל היא ערוץ RX1

64 פקודות מתקדמות Easy C Servo RX זהה ל - Motor RX, שולט במנועי סרבו
אותן הגדרות

65 פקודות מתקדמות Easy C RX Input
בלוק זה מאפשר לנו לקבל משוב מאחד הערוצים ולאחסן ערך זה במשתנה. נוכל, למשל, לקבל מידע על מיקום הזרוע ביחס לקרקע מנתוני המנוע המזיז אותה.

66 פקודות מתקדמות Easy C RX Input בחירת הערוץ בחירת צ'אנל הערה

67 נושאי השיעור אלגוריתמיקה Bottom -up תת שגרות ו- לולאות - מתקדם Easy C
1 אלגוריתמיקה Bottom -up 2 תת שגרות ו- לולאות - מתקדם 3 Easy C 4 פקודות מתקדמות דוגמאות 5

68 אלגוריתמיקה - דוגמאות נעבור לאלגוריתם טיפה מורכב יותר:
פתחו אלגוריתם לחישוב המחלק המשותף הגבוה ביותר של שני מספרים!

69 שלבי פיתוח אלגוריתמיקה חשוב! תכנן! בצע!
הציעו דרך לחשב את המחלק המשותף המקסימלי בצע!

70 אלגוריתמיקה - דוגמאות חשוב! מהם הקלטים המתקבלים? מהו הפלט הדרוש?
איזה חישוב יש לבצע? כל קבוצה בעצמה

71 אלגוריתמיקה - דוגמאות תכנן: רמה עליונה: קלט: שני מספרים, a,b כך ש:
אלגוריתם: מציאת המחלק המשותף הגדול ביותר טרם תכננו את הרמה העליונה, אנו מבצעים עיצוב מטה-מעלה. הדיאגרמה רק לשם המחשה. החזרת ערך המחלק המשותף הגדול ביותר

72 אלגוריתם: מציאת המחלק המשותף הגדול ביותר
אלגוריתמיקה - דוגמאות אלגוריתם: מציאת המחלק המשותף הגדול ביותר תכנן: רמה פנימית: בצע פעולת מודולו על שני המספרים, A>B אם השארית שווה לאפס החזר את המספר הקטן כGCD אחרת –המספר הגדול יהיה המספר הקטן מאיטרציה קודמת, (A=B) והמספר הקטן החדש יהיה השארית מאיטרציה קודמת (B=A%B) זוהי רמת התכנון הבסיסית.

73 אלגוריתמיקה - דוגמאות תכנן: כל קבוצה בעצמה

74 דוגמאות בצע! /* a & b are the numbers whose GCD is to be found. Given a > b */ int gcd(int a,int b) { int temp; while(1) --- הלולאה אינסופית temp = a%b; --- השארית של חלוקת המספר הגדול בקטן if(temp==0) return b; --- אם אין שארית סיימנו* a = b; ---חשבו מה תפקיד שורה זו? b = temp;--- חשבו מה תפקיד שורה זו? * החזר את המחלק המשותף המקסימלי, הממוקם במשתנה b, פקודת return קוטעת את הלולאה האינסופית.

75 אלגוריתם: מציאת המחלק המשותף הגדול ביותר
אלגוריתמיקה - דוגמאות אלגוריתם: מציאת המחלק המשותף הגדול ביותר דוגמה: a=80, b=32 a%b=16 16 שונה מ - 0 כל קבוצה בעצמה a=32; B=16 בצע לולאה שוב

76 אלגוריתם: מציאת המחלק המשותף הגדול ביותר
אלגוריתמיקה - דוגמאות אלגוריתם: מציאת המחלק המשותף הגדול ביותר דוגמה: a=80, b=32 GCD=16 a%b=0 השארית שווה ל 0 כל קבוצה בעצמה GCD=b b=16

77 אלגוריתמיקה - דוגמאות חיפוש מרחבי הגדרת הבעיה:
נתון חדר במידות ידועות קיים חפץ (נר, למשל) במקום כלשהו בחדר יש להגיע אל הנר בדרך המהירה והיעילה ביותר פתרון: נחשוב, נתכנן ונבצע...

78 אלגוריתמיקה – חיפוש מרחבי
חשוב! הציעו דרכים לחיפוש במרחב: הקצה 5 דקות למטלה זו. כל קבוצה תציג את הרעיון.

79 אלגוריתמיקה – חיפוש מרחבי
חשוב! הציעו דרכים לחיפוש במרחב: חיפוש שורה אחר שורה חיפוש מעגלי חיפוש מדגמי

80 אלגוריתמיקה – חיפוש מרחבי
חשוב! הציעו דרכים לחיפוש במרחב: חיפוש שורה אחר שורה

81 אלגוריתמיקה – חיפוש מרחבי
חשוב! הציעו דרכים לחיפוש במרחב: חיפוש מעגלי

82 אלגוריתמיקה – חיפוש מרחבי
חשוב! הציעו דרכים לחיפוש במרחב: חיפוש מדגמי (אקראי)

83 אלגוריתמיקה – חיפוש מרחבי
חשוב! מדדים: מהי הדרך המהירה ביותר? איך לא נחפש באותו מקום פעמיים? כיצד נכסה את כל המרחב?

84 אלגוריתמיקה – חיפוש מרחבי
סריקה של המרחב תכנן! רמה עליונה: לא מצאתי את החפץ? כן הפסק חיפוש

85 אלגוריתמיקה – חיפוש מרחבי
סריקה של המרחב – דוגמת חיפוש שורות תכנן! רמה פנימית: חלק את המרחב למשבצות אם השורה אי-זוגית – התקדם שמאלה אם השורה זוגית – התקדם ימינה סיימת שורה – עבור לשורה הבאה

86 אלגוריתמיקה – חיפוש מרחבי
room width = W (x axis) room lenth = L (y axis) room edges: (0,0), (W-1,0), (0,L-1), (W-1, L-1) robot start at (0,0) line by line (most simple): /* after reaching end of line i want the robot to go up and the back - so i won't go over a line 2 times */ for (k=0; k<L; k++) {    if (k % 2 == 0) { /*even line */         for (i=0; i<W; i++) {            advance(i,k);            if (candle_is_here() == 1) return "found"          }     } else { /* odd line */         for (i=W-1; i>=0; i--) {   }}} return "no candle" ביצוע:

87 אלגוריתמיקה – חיפוש מרחבי
קישורים ללמידה עצמית – אלגוריתמי מיון:


Download ppt "רובוטיקה ותכנות שיעור 7."

Similar presentations


Ads by Google