מבוא כללי למדעי המחשב שיעור 2

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
צורה נורמלית של גרייבך הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב תרגול מספר 3.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
מבוא כללי למדעי המחשב שיעור שלישי: בקרת זרימה.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
תכנות תרגול 2 שבוע : צור קשר מתרגל – שי גוטנר, ביה " ס למדעי המחשב. מתרגל – שי גוטנר, ביה " ס למדעי המחשב. דואר אלקטרוני : דואר.
תכנות תרגול 3 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 5 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא כללי למדעי המחשב שיעור רביעי: לולאות
מבוא למדעי המחשב תרגול מספר.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא ידעו.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 1 שבוע : צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. דואר אלקטרוני :
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
הרצאה 3: משפטים, תנאים ולולאות
מבוא למדעי המחשב סיבוכיות.
מבוא כללי למדעי המחשב תרגול 2
ניתוח זמן ריצה (על קצה המזלג)
SQL בסיסי – הגדרה אינדוקטיבית
ניתוח זמן ריצה (על קצה המזלג)
הרצאה 3: משפטים, תנאים ולולאות
ניתוח זמן ריצה (על קצה המזלג)
מבוא כללי למדעי המחשב תרגול 4
מודל חישוב בסיסי שיעור 1.
עקרונות בסיסיים בתכנות Visual Basic
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

מבוא כללי למדעי המחשב שיעור 2 מרצה: שי גוטנר

שיעור קודם int a,b; בנית תוכנית בסיסית int main() { return 0; } .......   return 0; } הגדרת משתנים int a,b; שימוש בפונקציות פלט printf(“The number of secs is %d\n”, secs);

המחרוזת מציינת מהו פורמט הקלט שעל המשתמש להכניס פקודת קלט scanf(“%d”, &a); המחרוזת מציינת מהו פורמט הקלט שעל המשתמש להכניס %d מסמל שאנו מצפים למשתנה מסוג int &a מציין שהמספר יוכנס לתוך המשתנה a(נרחיב בנושא זה מאוחר יותר)

פעולות חשבון –int int a,b; /* Read two integer numbers. */ int main() { int a,b;   /* Read two integer numbers. */ printf(“Enter two integers\n”); scanf(“%d%d”, &a, &b);   /* Perform some calculations. */ printf(“%d + %d = %d”, a, b, a+ b); printf(“%d - %d = %d”, a, b, a - b); printf(“%d * %d = %d”, a, b, a * b); printf(“%d / %d = %d”, a, b, a / b); printf(“%d mod %d = %d”, a, b, a % b);   return 0; }

תוכנית - פלט Enter two integers 4 2 4 + 2 = 6 4 - 2 = 2 4 * 2 = 8 4 - 2 = 2 4 * 2 = 8 4 / 2 = 2 4 mod 2 = 0

תוכנית - פלט Enter two integers 7 3 7 + 3 = 10 7 - 3 = 4 7 * 3 = 21 7 3 7 + 3 = 10 7 - 3 = 4 7 * 3 = 21 7 / 3 = 2 7 mod 3 = 1

פעולות חשבון –float int main() { float x, y; printf (“Enter two numbers:\n”); scanf (“%f%f”, &x, &y);   /* Perform some calculations. */ printf(“%f + %f = %f”, x, y, x+ y); printf(“%f - %f = %f”, x, y, x- y); printf(“%f * %f = %f”, x, y, x * y); printf(“%f / %f = %f”, x, y, x / y);   return 0; }

תוכנית - פלט Enter two numbers: 4 2 4.000000 + 2.000000 = 6.000000 4.000000 - 2.000000 = 2.000000 4.000000 * 2.000000 = 8.000000 4.000000 / 2.000000 = 2.000000

תוכנית - פלט Enter two numbers 7 3 7.000000 + 3.00000 = 10.000000 7 3 7.000000 + 3.00000 = 10.000000 7.000000 - 3.00000 = 4.000000 7.000000 * 3.00000 = 21.000000 7.000000 / 3.00000 = 2.333333

טיפוסים בסיסיים format טווח מה מייצג שם %d תלוי מערכת הפעלה מספר שלם int %f(%e, %g) 3.4E +/- 38(6 digits) מספר ממשי float Printf :%f(%e, %g) Scanf: %lf (%le, %lg) 1.7E +/- 308(15 digits) double %c –128 to 127 תו char

פורמטים שונים – קליטה והדפסה #include <stdio.h> int main () { char c1, c2, c3; int i; float x; double y; printf("Input three characters\n an int, a float, and a double:\n "); scanf("%c%c%c%d%f%lf", &c1, &c2, &c3, &i, &x, &y); printf("\nHere is the data that you typed in:\n"); printf("%3c%3c%3c%5d%17g%17g\n\n", c1, c2, c3, i, x, y); return 0; }

פלט Input three characters an int, a float, and a double: Abc 4 3.4 4.7 Here is the data that you typed in: A b c 4 3.4 4.7

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

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

מציאת המספר המינימלי מבין שני מספרים אלגוריתם קלט: num1,num2 אתחול: minnum1 בדיקה: אם min>num2 אז minnum2 פלט: min אם נרצה לממש את התוכנית הזו ב-C מה חסר לנו?

משפט if ב C if (expression) Statements else מה זה expression ? זהו ביטוי שמחושב ערכו אם ערכו הוא שונה מ 0 אז מתבצעות הפעולות שאחרי ה-if. אם הוא שווה ל 0 אז הפעולות לא מתבצעות. אם מופיע else אז מתבצעות הפעולות שאחרי ה else. אופציונאלי

תרגום ל-C #include <stdio.h> int main() { } int min, a, b; scanf(“%d%d”, &a, &b); min = a; if (min > b) min = b; printf(“The min is %d\n”, min); return 0; }

משפטי if מורכבים יותר משפט if רגיל מחכה לפעולה אחת בלבד אחריו וכך גם else if (x < 5) printf(“ 5 is larger than x\n”); else printf(“ 5 is smaller or equal to x\n”); אם נרצה לגרום למספר פעולות לקרות במידה ומשפט התנאי מתקיים (או לא מתקיים) כיצד נעשה זאת ?

משפטי if מורכבים יותר למשל נרצה שאם xגדול מ 5 נקלוט מספר ל x 1. printf(“ 5 is larger than x\n”); 2. scanf(“%d”, &x); else printf(“ 5 is smaller or equal to x\n”); נרצה שגם שורה אחת וגם שורה שתיים יתבצעו במידה ומשפט התנאי מתקיים.

משפטי if מורכבים יותר הפתרון: כדי לשייכם יחד נפתח בלוק של קוד עבורם ע"י שימוש בסוגריים מסולסלים. if (x < 5) { printf(“ 5 is larger than x\n”); scanf(“%d”, &x); } else printf(“ 5 is smaller or equal to x\n”);

קינון של משפטי if if (grade >= 90) printf(“A\n”); else printf(“B\n”); if (grade >= 70) printf(“C\n”); printf(“Failed\n”); המון if ו else, איך אפשר לקרוא את זה ? בנוסף אין כלל סוגרים מסולסלים. נזכור שגם if וגם else מצפים לפעולה אחת לביצוע.

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

לולאת while כשמה כן היא, מתבצעת כל עוד מתקיים תנאי מסוים. init expressionביטוי האתחול - while (loop expression) הלולאה המילה while היא כמובן מילה שמורה של C

דוגמא- תוכנית המוצאת את החזקה הראשונה של 2 אשר גדולה מ 1000. #include <stdio.h> int main() { int product = 2; while (product <= 1000) product = product * 2; printf (“The minimal number is %d\n”, product); return 0; }

דוגמא 2: תוכנית הקולטת 10 מספרים ומחשבת את הממוצע שלהם int main() { int counter, grade,total; float average; total = 0; counter =1; while (counter <= 10) printf(“Enter grade:\n”); scanf(“%d”,&grade); total = total + grade; counter = counter + 1; } average = total / 10.0; printf(“The average %f\n”,average); return 0; הגדרת משתנים שלב האתחול שלב העיבוד

פעולות לוגיות ב C כדי לבנות ביטויים לוגים מורכבים יותר ישנם אופרטורים לוגים שמקשרים שני ביטויים. AND וגם - && OR או - || NOT שלילה - !

אופרטורים לוגים ב – C טבלת אמת X !X X Y X && Y X || Y 1 0 0 0 1 1 0 1 1

סדר הקדימויות של קריאת האופרטורים: X = 0; Y = 1; Z = 1; if (X && Y || Z) printf(“True\n”); else printf(“False\n”);

סדר הקדימויות של קריאת האופרטורים: ((X && Y) || Z) = ((0 && 1) || 1) = 1 (X && (Y || Z)) = (0 && (1 || 1)) = 0 כלומר צריך לדעת כיצד C מפרשת את הביטוי ללא סוגרים. סדר העדיפויות של הפעולות הוא כך: ! && || בתוכנית שלנו ללא הסוגרים שקול למצב הראשון

סדר הקדימויות של קריאת האופרטורים: 3 < j < 5 נניח כי j = 7 היינו רוצים כי ערך הביטוי יהיה אפס (3 < j ) < 5 -> 1 < 5  1 לכן היינו צריכים להשתמש בתנאי הבא: 3 < j && j < 5 שקול ל- (3 < j) && (j < 5)

פעולות לוגיות – עוד על סדר הביצוע הפעולות האריתמטיות (+, -, *, /, %) מבוצעות תמיד לפני פעולות ההשוואה (==, > וכו') שמבוצעות לפני הפעולות הלוגיות && ו- ||. ל- ! (NOT) יש את הקדימות הגבוהה ביותר (עוד לפני פעולות אריתמטיות). דוגמאות לתנאים: (5+4>8) (!1 >= 0||1) 0 >= 0 || 1 1 || 1 1