Computer
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Computer Programming in C – Fall 2012 PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on
  • Presentation posted in: General

Computer Programming Fall 2012. תרגול 1. 31.10.2011. Computer Programming in C – Fall 2012. 1. אתר הקורס. http://www.cs.bgu.ac.il/~prog121 באתר הקורס מופיעים: הודעות חשובות מצוות הקורס יתפרסמו תחת announcements עבודות יתפרסמו תחת assignments

Download Presentation

Computer Programming in C – Fall 2012

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Computer programming in c fall 2012

ComputerProgramming

Fall 2012

תרגול 1

31.10.2011

Computer Programming in C – Fall 2012

1


Computer programming in c fall 2012

אתר הקורס

  • http://www.cs.bgu.ac.il/~prog121

  • באתר הקורס מופיעים:

  • הודעות חשובות מצוות הקורס יתפרסמו תחת announcements

  • עבודות יתפרסמו תחת assignments

  • מבחנים משנים קודמות יפורסמו תחת previous exams

  • ציונים לעבודות יפורסמו תחת grades

  • שאלות על העבודות ניתן לשאול תחת forum


Computer programming in c fall 2012

עבודות

  • במהלך הקורס יהיו 6 עבודות (בערך כל 10 ימים תהיה הגשת עבודה).

  • העבודות יוגשו ביחידים.

  • בקשות לדחיית העבודה (עקב מילואים, או מחלה) יש להגיש להפנות למרצי הקורס בלבד!


Computer programming in c fall 2012

מטרת התרגול – פיתוח חשיבה אלגוריתמית

  • אלגוריתם

    • דרך שיטתית (כלומר כזו שצעדיה מוגדרים היטב) לביצוע של משימה מסוימת, על נתונים, במספר סופי של צעדים (wikipedia).

  • אלגוריתם צריך להיות נכון כדי למלא את ייעודו

  • רצוי שיהיה גם יעיל (חסכוני במשאבים)


Computer programming in c fall 2012

פתרון בעיות – שלבי עבודה

  • כאשר מוצגת בפנינו בעייה שעלינו לפתור, למשל, חיבור שני מספרים, נכתוב אלגוריתם כללי לפתרונה.

  • דוגמה לאלגוריתם אשר מחבר שני מספרים:

    • נגדיר משתנים num2,num1 ו sum

    • קלוט שני מספרים שלמים לתוך num1 ו-num2

    • השם num1 + num2 לתוך sum

    • הדפס את sum למסך

  • נבצע בדיקה ידנית כדי לראות שהאלגוריתם נכון.


Computer programming in c fall 2012

פתרון בעיות – שלבי עבודה (המשך)

הערה

הגדרת משתנים

פלט למסך

קלט

ביטוי חשבוני

פלט למסך


Computer programming in c fall 2012

תרגיל מספר 1

  • כתבו אלגוריתים אשר מקבל זמן hh::mm ומספר חיובי offset. על האלגוריתים להוסיף offset דקות לזמן

  • לדוגמא

    • עבור 21::30 ו-180 נקבל 00::30

    • עבור 07::01 ו-199 נקבל 10::20

  • רמזים

    • השתמשו באופרטור השארית % (למשל 26 % 24 = 2)

    • מספר הדקות הכולל שווה למספר הדקות ועוד offset

    • מספר השעות להוספה שווה מספר הדקות הכולל חלקי 60

    • מספר הדקות החדש שווה מספר הדקות הכולל שארית 60


Computer programming in c fall 2012

פתרון

  • פתרון

    הגדר משתנים: hours, minutes, offset, total_minutes

    • נקלוט hours, minutes ו-offset בהתאמה

    • total_minutesminutes + offset

    • new hourhours + total_minutes / 60) % 24)

    • new minutestotal_minutes % 60

  • נבדוק את נכונות האלגוריתים

    • נשתדל לכסות את כל המקרים כולל "מקרי קצה"

    • מקרה עבורו מספר הדקות עולה בלבד. למשל 21:09 ו-11

    • מקרה עבורו מספר הדקות מתאפס. למשל 21:09 ו-51

    • מקרה עבורו מספר הדקות עובר ל"סבב חדש". למשל 21:09 ו-52

    • מקרה עבורו השעה מתעגלת. למשל 21:09 ו-180


Computer programming in c fall 2012

משפטי בקרה אם-אז

  • אלגוריתם פשוט, המקבל שני מספרים שלמים ומדפיס את הגדול מביניהם יראה כך:

    • נגדיר משתנים num2,num1 ו max

    • קלוט שני מספרים num1 ו-num2

    • אם num1 גדול מ-num2 אזי

      • num1max

    • אחרת

      • num2max

    • הדפס את max

  • נבדוק את נכונות האלגוריתים

    • מקרה עבורו num2 < num1 למשל 60 ו- 20

    • מקרה עבורו num1 < num2 למשל 60 ו- 67

    • מקרה עבורו num2 = num1 למשל 60 ו- 60


Computer programming in c fall 2012

תרגיל מספר 2

  • כתבו אלגוריתם אשר מקבל שלושה מספרים ומחזיר את הגדול מביניהם


Computer programming in c fall 2012

פתרון

  • הגדר משתנים: num1, num2, num3, max

  • נקלוט num1, num2, ו-num3 בהתאמה

  • אם num1 > num2 אזי num1max

  • אחרתnum2max

  • אם num3 > max אזי num3max

  • הדפס את max

  • נאמת את נכונות האלגוריתם

    • סדר גודל של 9מקרים שונים. 3 עבור התנאי הראשון כפול 3 עבור השני: {2,2,2},{2,2,1},{2,2,3},{2,1,2},{2,1,1},{2,1,3},{1,2,2},{1,2,2},

    • {1,2,3}


  • Computer programming in c fall 2012

    תרגיל מספר 3

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

    • 489 is ok

    • 364 is not ok


    Computer programming in c fall 2012

    פתרון

    • הגדר משתנים: num, digit, prev_digit

    • קלוט מספר ל-num

    • prev_digit 10

    • כל עוד num>0 בצע:

      4.1.digitnum % 10

      4.2.num / 10  num

      4.3.אם digit > prev_digit אזי: הדפס:“not ok” , וסיים

      4.4.אחרת: prev_digitdigit

      (חזור ל-4)

      5. הדפס: "ok"

      נאמת את נכונות האלגוריתם:364, 489, 5


    Computer programming in c fall 2012

    תרגיל 4

    • כתוב תכנית שמקבלת מספר שלם חיובי ומחזירה את המספר שהוא היפוך ספרותיו

    • לדוגמה:

    • 2375 יתקבל עבור הקלט 5732

    • 1025 יתקבל עבור 5201 או למשל גם עבור 52010 (מתעלמים מהאפסים העודפים במקרה זה)


    Computer programming in c fall 2012

    פתרון

    1. קלוט מספר חיובי ל-num

    0sum .2

    3. בצע:

    sum+num%10sum .3.1

    num/10num .3.2

    .3.3 אם num=0 הדפס sum וסיים

    3.4. אחרת: sum*10sum(חזור ל-3)


    Computer programming in c fall 2012

    תרגיל מספר 5

    • כתבו אלגוריתם המקבל כקלט מספר טבעי (שלם שגדול מאפס) וגדול מ-1 ומחזיר כפלט האם המספר הזה הוא ראשוני.

    • תזכורת: מספר טבעי שגדול מ-1 נקרא ראשוני אם הוא מתחלק אך ורק בעצמו וב-1.


    Computer programming in c fall 2012

    פתרון

    הגדר משתנים: num,div

    1. קלוט ל-num מספר שלםשגדול מ- 1

    2. אתחל משתנה div עם הערך 2

    3. כל עוד div קטן מ-num וגם div לא מחלק את mבצע

    3.1. הוסף אחד ל- div

    4. אם div שווה ל-num, אזי

    4.1.החזר: num הוא ראשוני

    5. אחרת,

    5.1.החזר: num אינו ראשוני

    נאמת את נכונות האלגוריתם: 6, 5


    Computer programming in c fall 2012

    שיפורים אפשריים לאלגוריתם הנ"ל

    1. לרוץ עד למחצית המספר.

    2. לרוץ עד השורש הריבועי של המספר.


    Computer programming in c fall 2012

    תרגיל מספר 6

    כתוב תכנית המקבלת כקלט מספר שלם n ומחשבת את האיבר המתאים בסדרת פיבונאצ'י:

    תזכורת: סידרת פיבונאצ'י מוגדרת באופן הבא:

    n=0, 0

    n=1, 1 = fn

    אחרת, fn-1+fn-2

    כלומר:

    n: 0, 1, 2, 3, 4, 5, 6, . . .

    fn: 0, 1, 1, 2, 3, 5, 8, . . .

    .


    Computer programming in c fall 2012

    פתרון

    הגדר משתנים: fn, fn-1, fn-2, n, i.

    1. אם n=0 הדפס 0 וסיים אם n=1 הדפס 1 וסיים

    fn-2 .20

    fn-1 .31

    i .42

    5. כל עוד i <= n בצע:

    5.1fn  fn-1+fn-2

    5.2.fn-2  fn-1

    5.3.fn-1  fn

    5.4. הוסף אחד ל i

    (חזור ל-5)

    6. הדפס את fn

    נאמת את נכונות האלגוריתם: 0, 1, 4


    Computer programming in c fall 2012

    תרגיל מספר 7


    Computer programming in c fall 2012

    פתרון

    הגדר משתנים: multiplier, result, d,last_result, i.

    i .11

    result.20

    last_result.3-1

    multiplier .41

    5. כל עוד |result – last_result| > /40.0001 בצע:

    5.1last_result  result

    5.2. result  result + multiplier/i

    5.3. multiplier  -1* multiplier

    5.4.i  i + 2

    (חזור ל-5)

    6. הדפס את result*4


  • Login