Top Banner
1 Computer Programming Fall 2014 ללללל1
28

Computer Programming Fall 2014

Jan 03, 2016

Download

Documents

shaine-edwards

Computer Programming Fall 2014. תרגול 1. אתר הקורס. http://www.cs.bgu.ac.il/~prog141 באתר הקורס מופיעים: הודעות חשובות מצוות הקורס יתפרסמו תחת announcements עבודות יתפרסמו תחת assignments מבחנים משנים קודמות יפורסמו תחת previous exams ציונים לעבודות יפורסמו תחת grades - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computer Programming Fall 2014

1

ComputerProgramming

Fall 2014

1תרגול

Page 2: Computer Programming Fall 2014

אתר הקורס

2

•http://www.cs.bgu.ac.il/~prog141באתר הקורס מופיעים:

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

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

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

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

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

Page 3: Computer Programming Fall 2014

עבודות

3

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

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

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

Page 4: Computer Programming Fall 2014

כללי

4

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

מציאת אלגוריתם – דרך מסודרת לביצוע מה שאנו 1.רוצים לבצע.

Cכתיבת האלגוריתם בשפה שבה אנחנו עובדים )2.במקרה שלנו.

האלגוריתם הוא בעצם פתרון כללי לבעיה ואינו קשור לשפה ספציפית. ניתן לתאר אותו למשל גם בעברית.

Page 5: Computer Programming Fall 2014

מטרת התירגול

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

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

(.wikipediaצעדים )

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

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

מהקטן לגדול.

5

Page 6: Computer Programming Fall 2014

1שאלה

השעות מספר בצורת הנוכחי הזמן את כקלט המקבלת תכנית כתוב (hours )מספר הדקות (minutes )ומספר נוסף חיובי( offset ) ,בדקות

.60אשר יכול להיות יותר גדול מ-

לזמן הנוכחי על מנת לחשב את הזמן החדש ולהדפיס offset יש לחבר את.אותו על המסך

:דוגמא

:hours: 23, minutes: 32, offset: 145 הקלט

:hours: 1, minutes: 57 הפלט

רמז: השתמשו בפעולה / )חלוקה ללא שארית( ובפעולה % )שארית(

Page 7: Computer Programming Fall 2014

פיתרון

hour, mins, offsetקלוט 1.

.2totalMin offset + mins

.3hour 24 % )60 / totalMin + hour(

.4mins 60 % totalMin

hour :: minsהדפס 5.

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

7

Page 8: Computer Programming Fall 2014

8

Page 9: Computer Programming Fall 2014

)if-else( משפטי בקרה אם-אז

:מבנה הפקודה•אז>תנאי< אם

ות</>פקודהאחרת

ות</>פקודה:דוגמה•

אזx < 0אם מספר שלילי"xהדפס "

אחרת מספר חיובי"xהדפס "

9

Page 10: Computer Programming Fall 2014

2שאלה

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

Page 11: Computer Programming Fall 2014

2שאלה

num1 ? num2num1 ? num3num2 ? num3

num1 > num2num1 ? num3num2 ? num3

num1 > num2num1 > num3num2 ? num3

num1 > num2num1 > num3num2 > num3

:num1>num2>num3 נניח שאנו רוצים לקבל

:מצב התחלתי

:מצב סופי

Page 12: Computer Programming Fall 2014

2פיתרון שאלה

num3, num2, num1קלוט 1.

אזי:num1<num2אם 2.

.num2 לבין num1 החלף ערכים בין המשתנים 2.1

אזי:num1<num3אם 3.

num3 ו-num1 החלף ערכים בין המשתנים 3.1

אזי:num2<num3 אם •

.num3 ו-num2 החלף ערכים בין המשתנים 4.1

.num1, num2, num3הדפס את 1.

12

Page 13: Computer Programming Fall 2014

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 > num2num1 ? num3num2 ? num3

Page 14: Computer Programming Fall 2014

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 //larger value: temp=num2; num2=num3; num3=temp; } printf)"The numbers in increasing order are: %d, %d and

%d.\n",num3,num2,num1(;

}

num1 > num2num1 > num3num2 ? num3

num1 > num2num1 > num3num2 > num3

Page 15: Computer Programming Fall 2014

לולאות

בצע>תנאי< כל עוד

>פקודות<

בצע10 עד 1 מ-iעבור

>פקודות<

15

Page 16: Computer Programming Fall 2014

3שאלה

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

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

.1מתחלק אך ורק בעצמו וב-

Page 17: Computer Programming Fall 2014

פתרון

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

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

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

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

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

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

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

. אחרת,5•

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

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

Page 18: Computer Programming Fall 2014

שיפורים אפשריים

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

Page 19: Computer Programming Fall 2014

4שאלה

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

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, 28657.

תזכורת:

F(n)=F(n-1)+F(n-2)

F(0)=0, F(1)=1

Page 20: Computer Programming Fall 2014

4פיתרון שאלה .nאת קלוט 1.

.2Fn2 0.

.31 .Fn1

.4n Fn.

בצע:n עד 2 מ-iעבור 5.

5.1 Fn Fn1 + Fn2 .

5.2 Fn2 Fn1.

Fn1 Fn 5.3

Fnהדפס את 6.

20

Page 21: Computer Programming Fall 2014

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);}

Page 22: Computer Programming Fall 2014

5שאלה

pi=3.141592653 של המקורב ערכו את המחשבת תכנית כתוב:הינו לייבניץ טור δ=0.0001 .של הדיוק ברמת לייבניץ טור באמצעות

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

. . .7

1

5

1

3

11

4

1

Page 23: Computer Programming Fall 2014

5פיתרון שאלה .1denom 1.

.21 sign

.30.0 pi.

.4DELTA 0.0001

בצע5.

5.1 1.0 / denom next

5.2 pi pi + sign*next

5.3 denom denom + 2

5.4 sign sign*(-1)

)next>(DELTA/4)( כל עוד 5.5

.denom-1/(2( ואת pi*4הדפס את • 23

Page 24: Computer Programming Fall 2014

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(;}

Page 25: Computer Programming Fall 2014

6שאלה

המקבלת מספר מהמשתמש, המספר מהווה ציון תכנית כתובשל מבחן.

התכנית תדפיס הודעת כשלון.56אם הציון מתחת ל

התכנית תדפיס הודעת מעבר בציון טוב.80אם הציון מעל

בכל מקרה אחר התכנית תדפיס הודעת מעבר.

(.100 ל 0)ניתן להניח כי הערך המוזן מספרי וכי ערכו נע בין

.צייר תרשים זרימה

Page 26: Computer Programming Fall 2014

#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");

}

else{

printf("good grade\n");

}

}

}

ףוס הלחתה

טולקgrade

ספדה”לשכנ“

ןכ

grade<56ספדה

ןויצ“”בוט

ספדה”רבע“

56 79grade

ןכ

אל אל

6שאלה

Page 27: Computer Programming Fall 2014

7שאלה

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

לדוגמה:•5732 יתקבל עבור הקלט 2375• 52010 או למשל גם עבור 5201 יתקבל עבור 1025•

)מתעלמים מהאפסים העודפים במקרה זה(

Page 28: Computer Programming Fall 2014

פתרון

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

0sum .2

. בצע:3

sum+num%10sum .3.1

num/10num .3.2

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

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