Computer Programming תרגול 1 Summer 2016

Slides:



Advertisements
מצגות קשורות
הערכות מילוליות קורס מנב"ס בתוכניות להכשרת מנהלים ומורים במוסדות להשכלה גבוהה, תשס"ה. © כל הזכויות שמורות למשרד החינוך התרבות והספורט.
Advertisements

הרצאה בכנס מוח "המורה אני רוצה להצליח במבחן, אבל אני לא מספיק להעתיק מהלוח, אולי את מוכנה..." דינה סלע, מטח אורנה רוזנבלט,
הרצאה 02 סוגי משתנים קרן כליף.
קורס ניהול ידע מפגש 3 - פורטלים 2know.kmrom.com.
ניווט רובוט מסוג ROOMBA במרחב ממופה
יצירת מקרו הפעלת מקרו יצירת לחצן / פקד דוגמה מסכמת
Computer Programming Fall 2012 תרגול 6 פונקציות
מבוא לתכנות ב-JAVA מעבדה 1
על הסתיו ועוד, בגן ה"תמרים" בעכו שם הגננות: מירב קדוש אלה נאמן
תרגול 11: רקורסיה ופיתוח טלסקופי
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
תרגול 5: לולאות ומערכים.
Isotopes and Atomic Mass
מבוא למדעי המחשב מ' - תירגול 9
תירגול 10: מבנים (structs) וקבצים
Marina Kogan Sadetsky –
אלקטרושליליות ופולריות הקשר
Jump tables, review questions
הרצאה 3: משפטים, תנאים ולולאות
פריסת כותרת כותרת משנה.
פריסת כותרת כותרת משנה.
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
תירגול 11: מיונים וחיפוש בינארי
נערך ע"י אריק הוד הגימנסיה העברית הרצליה
Entity Relationship Diagram – ERD
תירגול 3: לולאות, קלט, וטיפוסים
תכנות בשפת C תרגול 8 רקורסיה
Engineering Programming A
תירגול 8:מצביעים והקצאה דינאמית
מבוא למדעי המחשב הרצאה 9: רקורסיה
תרגול 6: פונקציות, סוגי משתנים, top-down design
S. Even, "Graph Algorithms", Computer Science Press, 1979
תירגול 2: מבוא לתיכנות ב-C
האם אתם יודעים כיצד כותבים מגילה?
כל הזכויות שמורות לגבריאל אנקרי © 2017
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
מבוא לתכנות למערכות מידע
Computer Architecture and System Programming Laboratory
מהו"ת – בתי מדרש למורים הפסגה 5, ירושלים , פקס
אלגוריתמי מיון רקורסיביים
כל הזכויות שמורות לגבריאל אנקרי © 2017
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
מת"מ מעבדה 7-8 רשימות.
Solving Simultaneous Linear Equations Using GPU
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא לתכנות ב- JAVA מעבדה 4
מבוא לתכנות בWINDOWS ד"ר אבי רוזנפלד.
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Introduction to Programming in C
מצביעים Pointers – המשך...
גן "יסמין "עכו שם הגננת: מרגלית פוגל שם הסייעת: זיוה אוזן
הרצאה 01 סוגי נתונים בתוכנית
לבית: המשיכו וקראו עד סוף פרק א' נושא תנועה.
הצג את עצמך, את עמותת תפוח ואת נושא הפעילות.
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
ברוכים הבאים למת"ם מבוא לתכנות מערכות הוכן ע"י שרי דואק
אי-שיוויון קלאוזיוס עד עתה מצאנו ניסוחים כמותיים לשינוי באנטרופיה בתהליכים קוואזיסטאטיים. מה קורה בתהליכים שאינם קוואזיסטאטיים? הקושי עם תהליך שאינו קוואזיסטאטי.
מערכת הערעורים מסכי סטודנטים.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
Java Programming רשימות מקושרות - המשך
Engineering Programming A
רשימות מקושרות עבודה עם קבצים דוגמה
תמליל מצגת:

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

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

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

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

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

תרשימי זרימה

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

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

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

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

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

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

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

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

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

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

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

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

שאלה 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, 28657. תזכורת: F(n)=F(n-1)+F(n-2) F(0)=0, F(1)=1

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

שאלה 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 המחושב ואת מספר המחוברים של הטור שיש לסכום אותם.

פיתרון שאלה 5 denom 1. 1 sign 0.0 pi. DELTA 0.0001 בצע 5.1 1.0 / 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.

שאלה 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 התכנית תדפיס הודעת מעבר בציון טוב. בכל מקרה אחר התכנית תדפיס הודעת מעבר. (ניתן להניח כי הערך המוזן מספרי וכי ערכו נע בין 0 ל 100). צייר תרשים זרימה.

שאלה 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");

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

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