slide1
Download
Skip this Video
Download Presentation
Computer Programming in C – Fall 2012

Loading in 2 Seconds...

play fullscreen
1 / 22

Computer Programming in C – Fall 2012 - PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Computer Programming in C – Fall 2012' - gretchen-roth


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
slide1
ComputerProgramming

Fall 2012

תרגול 1

31.10.2011

Computer Programming in C – Fall 2012

1

slide2
אתר הקורס
  • http://www.cs.bgu.ac.il/~prog121
  • באתר הקורס מופיעים:
  • הודעות חשובות מצוות הקורס יתפרסמו תחת announcements
  • עבודות יתפרסמו תחת assignments
  • מבחנים משנים קודמות יפורסמו תחת previous exams
  • ציונים לעבודות יפורסמו תחת grades
  • שאלות על העבודות ניתן לשאול תחת forum
slide3
עבודות
  • במהלך הקורס יהיו 6 עבודות (בערך כל 10 ימים תהיה הגשת עבודה).
  • העבודות יוגשו ביחידים.
  • בקשות לדחיית העבודה (עקב מילואים, או מחלה) יש להגיש להפנות למרצי הקורס בלבד!
slide4
מטרת התרגול – פיתוח חשיבה אלגוריתמית
  • אלגוריתם
    • דרך שיטתית (כלומר כזו שצעדיה מוגדרים היטב) לביצוע של משימה מסוימת, על נתונים, במספר סופי של צעדים (wikipedia).
  • אלגוריתם צריך להיות נכון כדי למלא את ייעודו
  • רצוי שיהיה גם יעיל (חסכוני במשאבים)
slide5
פתרון בעיות – שלבי עבודה
  • כאשר מוצגת בפנינו בעייה שעלינו לפתור, למשל, חיבור שני מספרים, נכתוב אלגוריתם כללי לפתרונה.
  • דוגמה לאלגוריתם אשר מחבר שני מספרים:
    • נגדיר משתנים num2,num1 ו sum
    • קלוט שני מספרים שלמים לתוך num1 ו-num2
    • השם num1 + num2 לתוך sum
    • הדפס את sum למסך
  • נבצע בדיקה ידנית כדי לראות שהאלגוריתם נכון.
slide6
פתרון בעיות – שלבי עבודה (המשך)

הערה

הגדרת משתנים

פלט למסך

קלט

ביטוי חשבוני

פלט למסך

slide7
תרגיל מספר 1
  • כתבו אלגוריתים אשר מקבל זמן hh::mm ומספר חיובי offset. על האלגוריתים להוסיף offset דקות לזמן
  • לדוגמא
    • עבור 21::30 ו-180 נקבל 00::30
    • עבור 07::01 ו-199 נקבל 10::20
  • רמזים
    • השתמשו באופרטור השארית % (למשל 26 % 24 = 2)
    • מספר הדקות הכולל שווה למספר הדקות ועוד offset
    • מספר השעות להוספה שווה מספר הדקות הכולל חלקי 60
    • מספר הדקות החדש שווה מספר הדקות הכולל שארית 60
slide8
פתרון
  • פתרון

הגדר משתנים: 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
slide9
משפטי בקרה אם-אז
  • אלגוריתם פשוט, המקבל שני מספרים שלמים ומדפיס את הגדול מביניהם יראה כך:
    • נגדיר משתנים num2,num1 ו max
    • קלוט שני מספרים num1 ו-num2
    • אם num1 גדול מ-num2 אזי
      • num1max
    • אחרת
      • num2max
    • הדפס את max
  • נבדוק את נכונות האלגוריתים
    • מקרה עבורו num2 < num1 למשל 60 ו- 20
    • מקרה עבורו num1 < num2 למשל 60 ו- 67
    • מקרה עבורו num2 = num1 למשל 60 ו- 60
slide10
תרגיל מספר 2
  • כתבו אלגוריתם אשר מקבל שלושה מספרים ומחזיר את הגדול מביניהם
slide11
פתרון
    • הגדר משתנים: 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}
slide12
תרגיל מספר 3
  • כתוב תכנית שמקבלת מספר שלם חיובי ובודקת שהמספר מורכב מספרות בסדר עולה ומדפיסה הודעה מתאימה. דוגמאות:
  • 489 is ok
  • 364 is not ok
slide13
פתרון
  • הגדר משתנים: 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

slide14
תרגיל 4
  • כתוב תכנית שמקבלת מספר שלם חיובי ומחזירה את המספר שהוא היפוך ספרותיו
  • לדוגמה:
  • 2375 יתקבל עבור הקלט 5732
  • 1025 יתקבל עבור 5201 או למשל גם עבור 52010 (מתעלמים מהאפסים העודפים במקרה זה)
slide15
פתרון

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)

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

הגדר משתנים: 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

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

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

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

slide19
תרגיל מספר 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, . . .

.

slide20
פתרון

הגדר משתנים: 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.1 fn  fn-1+fn-2

5.2.fn-2  fn-1

5.3.fn-1  fn

5.4. הוסף אחד ל i

(חזור ל-5)

6. הדפס את fn

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

slide22
פתרון

הגדר משתנים: 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.1 last_result  result

5.2. result  result + multiplier/i

5.3. multiplier  -1* multiplier

5.4.i  i + 2

(חזור ל-5)

6. הדפס את result*4

ad