Computer Programming Fall 2014

Preview:

DESCRIPTION

Computer Programming Fall 2014. תרגול 1. אתר הקורס. http://www.cs.bgu.ac.il/~prog141 באתר הקורס מופיעים: הודעות חשובות מצוות הקורס יתפרסמו תחת announcements עבודות יתפרסמו תחת assignments מבחנים משנים קודמות יפורסמו תחת previous exams ציונים לעבודות יפורסמו תחת grades - PowerPoint PPT Presentation

Citation preview

1

ComputerProgramming

Fall 2014

1תרגול

אתר הקורס

2

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

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

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

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

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

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

עבודות

3

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

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

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

כללי

4

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

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

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

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

מטרת התירגול

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

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

(.wikipediaצעדים )

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

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

מהקטן לגדול.

5

1שאלה

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

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

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

:דוגמא

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

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

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

פיתרון

hour, mins, offsetקלוט 1.

.2totalMin offset + mins

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

.4mins 60 % totalMin

hour :: minsהדפס 5.

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

7

8

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

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

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

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

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

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

9

2שאלה

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

2שאלה

num1 ? num2num1 ? num3num2 ? num3

num1 > num2num1 ? num3num2 ? num3

num1 > num2num1 > num3num2 ? num3

num1 > num2num1 > num3num2 > num3

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

:מצב התחלתי

:מצב סופי

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

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

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

לולאות

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

>פקודות<

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

>פקודות<

15

3שאלה

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

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

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

פתרון

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נאמת את נכונות האלגוריתם: •

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

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

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

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

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

5שאלה

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

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

. . .7

1

5

1

3

11

4

1

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

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

6שאלה

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

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

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

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

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

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

#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שאלה

7שאלה

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

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

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

פתרון

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

0sum .2

. בצע:3

sum+num%10sum .3.1

num/10num .3.2

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

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

Recommended