Slide 1

מסמכים קשורים
Slide 1

מבוא לתכנות ב- JAVA תרגול 7

PowerPoint Presentation

תרגול 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

Slide 1

Tutorial 11

Microsoft Word B

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

מהוא לתכנות ב- JAVA מעבדה 3

הגשה תוך שבוע בשעת התרגול

מבוא למדעי המחשב

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב - חובלים

Microsoft Word - c_SimA_MoedB2005.doc

סדנת תכנות ב C/C++

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבוא למדעי המחשב - חובלים

Slide 1

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

הגשה תוך שבוע בשעת התרגול

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Slide 1

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

PRESENTATION NAME

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

שקופית 1

תרגיל בית מספר 1#

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

PowerPoint Presentation

מבוא למדעי המחשב

234114

PowerPoint Presentation

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

Microsoft Word - c_SimA_MoedA2006.doc

מתכונת עיצוב 3013

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

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

מבוא למדעי המחשב

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

ex1-bash

תרגול 3 - מערכים

PowerPoint Presentation

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

מבוא לתכנות ב- JAVA תרגול 11

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

מבוא למדעי המחשב

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

Microsoft PowerPoint - rec1.ppt

Homework Dry 3

תכנות מונחה עצמים א' – תש"ע

Microsoft PowerPoint - rec3.ppt

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

מבוא למדעי המחשב

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

תוכן העניינים

תרגול 1

תוכן העניינים

PowerPoint Presentation

Microsoft Word - pitaron222Java_2007.doc

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מבוא למדעי המחשב

Slide 1

Slide 1

Slide 1

PowerPoint Presentation

Microsoft Word - ExamA_Final_Solution.docx

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

Slide 1

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft Word - SDAROT 806 PITRONOT.doc

תורת הקומפילציה

מספר בקשה 3f40e793 6b a0e9 da8f5a75fe53 פרטי המוצרים שלי

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

סיכום הוראות Touch touchend יקרא לפונקציה כשיסתיים המגע עם הסמארטפון. - touchmove יקרא לפונקציה במהלך תזוזת המגע עם הסמארטפון. touchstart יקרא לפונקצי

Microsoft PowerPoint - L01-n.ppt

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

<4D F736F F D20FAF8E2E5EC20E0ECE2E1F8E420EEF2E5F8E D F9E0ECE5FA2E646F63>

מקביליות

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

PowerPoint Presentation

פרק ג': עיצובים

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

מקביליות

תמליל:

Introduction to Programming in C תרגול 7 1 1

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

דוגמה מס' 1 הגדרה: פלינדרום הוא רצף תווים שניתן לקרוא משני הכיוונים ללא שינוי בתוצאה. דוגמאות:,"ABBA","ABA" "לבלבל". כתוב פונקציה רקורסיבית המקבלת מחרוזת, ומחזירה TRUE אם המחרוזת היא פלינדרום, FALSE אם אינה. )נניח כי FALSE מוגדר כ- 0 ו- TRUE מוגדר כ- 1 (

דוגמה מס' 1 int is_pal(char s[], int first,int last) { if (first>=last) return TRUE; return (s[first] == s[last]) && is_pal(s, first+1,last-1);

דוגמה מס' 1- מחסנית ריצה: void main() { is_pal("abba",0, 3); s= ABBA, first=0, last = 3 if (0>=3) return TRUE; return (s[0] == s[3]) && is_pal(s, 1, 2); s= ABBA, first=1, last = 2 if (1>=2) return TRUE; return (s[1] == s[2]) && is_pal(s, 2, 1); s= ABBA, first=2, last = 1 if (2>=1) return TRUE; return...

דוגמה מס' 1- פונקציית מעטפת: int is_pal2(char s[]) { return is_pal(s, 0, strlen(s) 1);

harmonic number דוגמה מס' 2 השלם n מס' הרמוני של המס' מוגדר באופן הבא: 1 n 1 n 1... 1 2 1 h( n) ברצוננו לכתוב פונקציה רקורסיבית rec_harmonic_num(n) אשר תדפיס למסך את הפיתוח של.h(n) למשל, עבור הקריאה,rec_harmonic_num(5) המסך: 1/5+1/4+1/3+1/2+1=2.28 נקבל על

תזכורת משתנים סטאטיים מגדירים באופן הבא: static int var; ניתן לאתחל בשורת ההגדרה בלבד כאשר חייבים לאתחל בביטויי קבוע!!! אם אנחנו לא מאתחלים אותם, המערכת תאתחל אותם אוטומטית לאפס. ה- scope של משתנים סטאטיים הוא רק הפונקציה שבה הם הוגדרו אך הם ממשיכים להתקיים גם אחרי שביצוע הפונקציה נגמר )למעשה עד סוף ריצת התוכנית(. לפיכך הערך של משתנה סטאטי בפונקציה כלשהי נשמר בין קריאות עוקבות לפונקציה זו.

harmonic number דוגמה מס' 2 void rec_harmonic_sum(int n) { static double sum=1; if(n==1)/*stop condition*/ { printf("1=%.2f\n",sum); sum=1; /*Must initialize the static variable "sum" so that we can call this function repeatedly in the same program run. Make sure you understand why!!! */ return; printf("1/%d+",n); sum+=1.0/n; /*The "1." syntax is used in order to prevent automatic casting to integer type (so that the expression "1/n" will be evaluated as type double). */ rec_harmonic_sum(n-1); /*The recursive call. */

abc דוגמה מס' 3 כתוב פונקציה רקורסיבית אשר חתימתה היא: void abc(char arr[],int lastplace, int curplace) המקבלת מערך של char םי-, את אינדקס סוף המערך ומספר שלם שהוא המקום במערך ממנו אנו מעונינים להתחיל במילוי המערך בתווים )בקריאה ראשונה יהיה מס' זה שווה ל- 0(. הפונקציה מדפיסה את כל האפשרויות למלא את המערך מהמקום שקיבלה,,curPlace עד המקום lastplace באותיות a,b,c במילים אחרות, מטרת הפונקציה היא להדפיס את כל האפשרויות ליצור מילה באורך מסוים בעזרת האותיות. a,b,c

abc דוגמה מס' 3 למשל: עבור התוכנית הבאה: void abcwarper(char word[],int lengthofword){ abc(word, lengthofword,0); void main(){ char word[5]; abcwarper(word,3); נקבל את הפלט: aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc

המקום הנוכחי שאנחנו משנים אינדקס סוף המערך כתובתו של תחילת המערך abc דוגמה מס' 3 void abc(char arr[],int lastplace, int curplace) { if (curplace == lastplace) { arr[curplace]='\0'; printf("%s\t",arr); תנאי העצירה: אם הגענו ל- lastplace אז שים במקום הנוכחי יש '0\' )הגענו לסוף(, הדפס את המחרוזת )מהתחלתה( וחזור. return; arr[curplace] = 'a'; abc (arr,lastplace,curplace+1); arr[curplace] = 'b'; abc (arr,lastplace,curplace+1); arr[curplace] = 'c'; abc (arr,lastplace,curplace+1); כעת אנחנו עובדים על המקום curplace במערך: הצב בו a, וקרא לפונק' abc )עם כתובת המערך, ואינדקס המקום הבא( אשר תדאג למילוי כל האפשרויות הקימות בשאר המערך. a, במקום b שחזרת, הצב את לאחר ושוב קרא לפונק' עם המקום הבא במערך כפרמטר. c. לגבי כנ"ל

abc דוגמה מס' 3 נראה את תרשים הקריאות המתקבל מהרצת הדוגמא שלמעלה )בדומה לתרשים הקריאות שראינו בכתה(: כל ריבוע מייצג קריאה לפונקציה, כאשר בתוך כל ריבוע מופיע תוכן המערך שהפונקציה מקבלת. ערך הפרמטר curplaceהוא משותף לכל רמה בתרשים ומצויין בצד ימין.??? curplace=0 a?? b?? c?? curplace=1 aa? ab? ac? ba? bb? bc? ca? cb? cc? curplace=2 aaa aab aac aba abb abc aca acb acc baa bab bac bba bbbbbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc curplace=3 הדפסה: aaa aab aac aba abb abc aca acb acc baa bab bac bbabbbbbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc

דוגמה מס' 4 כתבו תוכנית הקולטת עד 20 ערכים שלמים )1- מציין סוף קלט( למערך ומוצאת את הערך המקסימאלי. לשם כך, ניתן לפרק את הבעיה לשתי בעיות קטנות יותר כתבו פונקציה רקורסיבית שקולטת את המערך 1) כתבו פונקציה רקורסיבית שמחזירה את הערך המקסימאלי 2)

דוגמה מס' 4 int GetArray(int arr[], int i){ int num; if (i > MAX_LEN 1){ return 0; scanf("%d", & num); if (num!= -1) { arr[i] = num; return GetArray(arr, i + 1) +1; int Max(int a[], int i,int length){ int max; if (i == length -1) { return a[i]; max = Max(a, i + 1); return (a[i] > max? a[i] : max); else { return 0; int main(){ int max,a[max_len],length; length = GetArray(a, 0); max=max(a,0, length ); printf( max=%d\n max); return 0;

דוגמה מס' 5 כתוב פונקציה רקורסיבית אשר מקבלת מחרוזת s, תו,ch ומספר שלם n. הפונקציה תחפש את המופע ה- n -י של ch במחרוזת s ותחזיר את האינדקס שלו. דוגמא: בהינתן המחרוזת, abbc התו b, והשלם 2 )עבור n( הפונקציה תחזיר 2. התו b מופיע בפעם השנייה במחרוזת s באינדקס 2 במחרוזת.

דוגמה מס' 5 int FindNOccurence(char s[], char ch, int n, int index){ if (n == 0) return index -1; if (s[index] == '\0') return -1; if (s[index] == ch) return FindNOccurence (s, ch, n 1, index + 1); { return FindNOccurence(s, ch, n, index + 1);

דוגמה מס' 6 נתונה הפונקציה הרקורסיבית הבאה: #include <stdio.h> int secret( int n){ If( n<0 ) return 1 + secret ( -1 * n); if ( n<10 ) return 1; return 1 + secret( n/10 ); secret(12345)? secret(-4321) ו- מה הערך של מה מבצעת הפונקציה secret עבור פרמטר חיובי ועבור פרמטר שלילי? כתוב פונקציה זו מחדש בצורה לא רקורסיבית.

פתרון: סעיף א': סעיף ב': דוגמה מס' 6 5 בשני המקרים. הפונקציה מחזירה את מס' התווים שמייצגים את הארגומנט. כך למשל הפלט של התוכנית הבאה: void main() { char s[80]; printf("%d\n",secret(-43221)); printf("%d\n",secret(12345)); יהיה: 6 5

דוגמה מס' 6 כתוב אותה פונקציה בצורה לא רקורסיבית. פתרון: int itersecret( int n){ int len=1; if( n<0 ) { n=(-1) * n; len++; while( n>=10 ) { n/=10; len++; return len;

דוגמה מס' 7 עיין בפונקציה הבאה : int what(int a, int b){ if(!a &&!b) return 1; if(a > b) return a * what(a-1, b); return b * what(a, b-1); בהנחה שהפונקציה הנ"ל מקבלת שני ערכים אי-שליליים )חיוביים או אפס(, סמן את כל התשובות הנכונות )בדף התשובות(: הפונקציה נכנסת לרקורסיה אינסופית. 1. הערך המוחזר של הפונקציה תמיד 0. 2. הערך המוחזר של הפונקציה יכול להיות 0. 3. הערך המוחזר של הפונקציה תמיד 1. 4. הערך המוחזר של הפונקציה יכול להיות 1. 5. בקבלת שני ערכים חיוביים a ו- b, אם הערכים לא גדולים מידי,הפונקציה מחזירה את 6. הערך של b!.a! x אף לא אחת מהתשובות לעיל. 7.

) וגם 1=b :5 )למשל כאשרa=0 וגםb=0 ) + 6 )יש להדגים למשל עבור 2=a פתרון

דוגמה מס' 8 Subset Sum problem נתונה סדרת ערכים שלמים )כמערך( arr ומספר שלם S. צ"ל: האם קיימת תת-סדרה במערך כך שסכומה S. arr למשל עבור: 7 6 5 1 17 ו- 14=S.14 התשובה היא כן כי קיימת תת-סדרה במערך שהיא: 7,6,1 וסכומה

דוגמה מס' 8 האלגוריתם: עבור כל איבר i במערך, יש 2 אפשרויות: אפשרות א': כן לוקחים את האיבר ה- i, ומנסים למצוא SubsetSum בגודל S-arr[i] במערך קטן יותר ב- 1. i, ומנסים למצוא אפשרות ב': לא לוקחים את האיבר ה- SubsetSum בגודל S במערך קטן יותר ב- 1. תנאי העצירה שלנו יהיו: אם קיבלנו באיזשהו שלב 0==S אז נמצא SubsetSum במערך ונחזיר 1. אחרת, אם קיבלנו 0>S או n==0, אז הבחירות שלקחנו עד עכשיו אינן מובילות לפתרון )אם 0>S אזי עברנו את הסכום המבוקש ואם n==0 אזי עדיין לא הגענו לסכום ואין לרשותנו אברים מתוכם נוכל לבחור( ונחזיר 0.

דוגמה מס' 8 int SubsetSum(int arr[], int idx, int n, int S) { if (S==0) return 1; //This is stopping condition #1. if (S<0 n==0) return 0; //This is stopping condition #2. return SubsetSum(arr, idx+1, n-1, S-arr[idx]) SubsetSum(arr, idx+1, n-1, S); טיפול באפשרות א' טיפול באפשרות ב'

דוגמה מס' 9 שנו את הפונקציה שכתבתם בשאלה הקודמת כך שהיא תחזיר את כמות תתי-הקבוצות של איברי המערך המקיימות שסכומן שווה בדיוק ל- s.

דוגמה מס' 9 int SubsetSum(int arr[], int idx, int n, int S) { if (S==0) return 1; //This is stopping condition #1. if (S<0 n==0) return 0; //This is stopping condition #2. return SubsetSum(arr, idx+1, n-1, S-arr[idx]) + SubsetSum(arr, idx+1, n-1, S);

דוגמה מס' 10 נתון מערך דו-מימדי בגודל m*n המכיל מספרים טבעיים קטנים מ- 100. מסלול חוקי במערך מתחיל בתא (0,0) ומסתיים בתא,(m-1,n-1) כאשר ההתקדמות תלויה בספרת האחדות והעשרות של המס' שבתא הנוכחי. אם בתא (2,3) רשום המס' 13, אז ישנם 2 דרכים להתקדם מתא זה: 1( 1+ בשורות ו 3+ בעמודות. כלומר לתא (3,6). 2( 3+ בשורות ו 1+ בעמודות. כלומר לתא (5,4). אם בתא רשום מס' חד ספרתי, למשל 3, נתייחס אליו כאל 03.

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

דוגמה מס' 10

דוגמה מס' 11 * * * * * * * * * * * * * * * * * כתבו פונקציה רקורסיבית lines) void X(int שמדפיסה את האות X באמצעות כוכביות ב- lines שורות )נניח ש- lines תמיד אי-זוגי(. ניתן להשתמש בלולאות. לדוגמא עבור (9)X יודפס: הכוכבית הראשונה חייבת להופיע בתחילת השורה הראשונה. אין להגדיר פונקציה נוספת.

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

דוגמה מס' 11 void X(int lines){ int static blank; int I; for (i=0; i<blank; i++) putchar(' '); putchar('*'); if(lines==1){ puts(""); return; for (i=0; i<lines-2; i++) putchar(' '); puts("*"); blank++; X(lines-2); blank--; for (i=0; i<blank; i++) putchar(' '); putchar('*'); for (i=0; i<lines-2; i++) putchar(' '); puts("*");