המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

Computer Programming תרגול 1 Summer 2016

מצגות קשורות


מצגת בנושא: "Computer Programming תרגול 1 Summer 2016"— תמליל מצגת:

1 Computer Programming תרגול 1 Summer 2016
Introduction to C - Fall Amir Menczel

2 אתר הקורס https://www.cs.bgu.ac.il/~prog163 באתר הקורס מופיעים:
הודעות חשובות מצוות הקורס יתפרסמו תחת announcements עבודות יתפרסמו תחת assignments מבחנים משנים קודמות יפורסמו תחת previous exams ציונים לעבודות יפורסמו תחת grades שאלות על העבודות ניתן לשאול תחת forum

3 עבודות במהלך הקורס יהיו 5 עבודות (בערך כל 10 ימים תהיה הגשת עבודה).
העבודות תוגשנה ביחידים. בקשות לדחיית העבודה (עקב מילואים, או מחלה) יש להגיש להפנות למרצי הקורס בלבד!

4 כללי ניתן לחלק את עבודת התכנות באופן גס לשני חלקים:
מציאת אלגוריתם – דרך מסודרת לביצוע מה שאנו רוצים לבצע. כתיבת האלגוריתם בשפה שבה אנחנו עובדים (C במקרה שלנו. האלגוריתם הוא בעצם פתרון כללי לבעיה ואינו קשור לשפה ספציפית. ניתן לתאר אותו למשל גם בעברית.

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

6 תרשימי זרימה

7 שאלה 1 כתוב תכנית המקבלת כקלט את הזמן הנוכחי בצורת מספר השעות (hours) מספר הדקות (minutes) ומספר נוסף חיובי (offset) בדקות, אשר יכול להיות יותר גדול מ- 60. יש לחבר את offset לזמן הנוכחי על מנת לחשב את הזמן החדש ולהדפיס אותו על המסך. דוגמא: הקלט hours: 23, minutes: 32, offset: : הפלט hours: 1, minutes: : רמז: השתמשו בפעולה / (חלוקה ללא שארית) ובפעולה % (שארית)

8 פיתרון קלוט hour, mins, offset totalMin  offset + mins
hour  24 % (60 / totalMin + hour) mins  60 % totalMin הדפס hour :: mins נבדוק נכונות האלגוריתם

9

10 משפטי בקרה אם-אז (if-else)
מבנה הפקודה: אם <תנאי> אז <פקודה/ות> אחרת דוגמה: אם x < 0 אז הדפס "x מספר שלילי" הדפס "x מספר חיובי"

11 שאלה 2 כתוב תכנית הקולטת מן המשתמש שלושה מס' שלמים ומדפיסה אותם בסדר יורד. בתכנית יש לבצע לכל היותר שלוש פעולות ההשוואה.

12 שאלה 2 נניח שאנו רוצים לקבל num1>num2>num3 : מצב התחלתי:
מצב סופי:

13 פיתרון שאלה 2 קלוט num3, num2, num1 אם num1<num2 אזי:

14 שאלה 2 #include <stdio.h> int main() {
int num1,num2,num3; //These are the numbers that will be sorted. int temp; //This is a variable that will be used for swapping. printf("Please enter three integers:\n"); scanf("%d %d %d",&num1 ,&num2 , &num3); if(num1 < num2) { //Swap between num1 and num2 so that num1 will //hold the larger value: temp=num1; num1=num2; num2=temp; } num1 > num2 num1 ? num3 num2 ? num3

15 שאלה 2 if(num1 < num3) { //Swap between num1 and num3 so that num1 will hold the //larger value: temp=num1; num1=num3; num3=temp; } if(num2 < num3) { //Swap between num2 and num3 so that num2 will hold the temp=num2; num2=num3; printf("The numbers in increasing order are: %d, %d and %d.\n",num3,num2,num1); num1 > num2 num1 > num3 num2 ? num3 num1 > num2 num1 > num3 num2 > num3

16 לולאות כל עוד <תנאי> בצע <פקודות> עבור i מ-1 עד 10 בצע

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

18 פתרון הגדר משתנים: num,div קלוט ל-num מספר שלם שגדול מ- 1
כל עוד div קטן מ-num וגם div לא מחלק את numבצע הוסף אחד ל- div אם div שווה ל-num, אזי החזר: num הוא ראשוני אחרת החזר: num אינו ראשוני נאמת את נכונות האלגוריתם: 6, 5

19 שיפורים אפשריים 1. לרוץ עד למחצית המספר.
2. לרוץ עד השורש הריבועי של המספר.

20 שאלה 4 כתוב תכנית המקבלת כקלט מספר שלם n (גדול מ- 1) ומחשבת את האיבר המתאים בסדרת פיבונצ'י הבאה: n: 0, 1, 2, 3, 4, 5, 6, . . . F(n): 0, 1, 1, 2, 3, 5, 8, . . . כך למשל 24 האיברים הראשונים של הסדרה הם: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, תזכורת: F(n)=F(n-1)+F(n-2) F(0)=0, F(1)=1

21 פיתרון שאלה 4 קלוט את n. Fn2 0. 1 .Fn1 n Fn. עבור i מ-2 עד n בצע:
5.1 Fn Fn1 + Fn2 . 5.2 Fn Fn1. Fn Fn 5.3 הדפס את Fn

22 שאלה 4 #include <stdio.h> #include <stdlib.h> void main()
{ int n, Fn, Fn1, Fn2, i; printf(" N = "); scanf("%d", &n) ; Fn2 = 0 ; Fn1 = 1 ; Fn = n ; for (i=2 ; i <= n ; i++){ Fn = Fn1 + Fn2; Fn2 = Fn1; Fn1 = Fn; } printf("F(%d) = %d \n", n, Fn);

23 שאלה 5 כתוב תכנית המחשבת את ערכו המקורב של pi= באמצעות טור לייבניץ ברמת הדיוק של .δ= טור לייבניץ הינו: החישוב מסתיים כאשר הערך המוחלט של המחובר האחרון של הטור יהיה קטן או שווה ל- .δהתכנית תדפיס את הערך של pi המחושב ואת מספר המחוברים של הטור שיש לסכום אותם.

24 פיתרון שאלה 5 denom 1. 1 sign 0.0 pi. DELTA 0.0001 בצע
/ denom next 5.2 pi pi + sign*next 5.3 denom denom + 2 5.4 sign sign*(-1) 5.5 כל עוד (next>(DELTA/4)) הדפס את 4*pi ואת (denom-1)/2.

25 שאלה 5 #include <stdio.h> #define DELTA 0.0001 void main() {
int denom=1, sign=1; float pi=0.0, next; do { next = 1.0 / denom; pi += sign * next; denom+= 2; sign *= -1; } while (next > (DELTA/4)); printf("PI=%f #members=%d \n", pi*4, (denom-1)/2); }

26 שאלה 6 כתוב תכנית המקבלת מספר מהמשתמש, המספר מהווה ציון של מבחן. אם הציון מתחת ל 56 התכנית תדפיס הודעת כשלון. אם הציון מעל 80 התכנית תדפיס הודעת מעבר בציון טוב. בכל מקרה אחר התכנית תדפיס הודעת מעבר. (ניתן להניח כי הערך המוזן מספרי וכי ערכו נע בין 0 ל 100). צייר תרשים זרימה.

27 שאלה 6 #include <stdio.h> void main() { int grade;
printf("Enter grade\n"); scanf("%d",&grade); if (grade<56){ printf("failed\n"); } else{ if ((grade>=56) && (grade<=79)){ printf("passed\n"); printf("good grade\n");

28 שאלה 7 כתוב תכנית שמקבלת מספר שלם חיובי ומחזירה את המספר שהוא היפוך ספרותיו לדוגמה: 2375 יתקבל עבור הקלט 5732 1025 יתקבל עבור 5201 או למשל גם עבור (מתעלמים מהאפסים העודפים במקרה זה)

29 פתרון 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)


הורד את "ppt "Computer Programming תרגול 1 Summer 2016

מצגות קשורות


מודעות Google