28
ללללל ללללל ללללל ללללל1 1 לללל לללל: : 30 30 . . 10 10 .0 .0 5 5

תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

  • View
    257

  • Download
    0

Embed Size (px)

Citation preview

Page 1: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

11תכנות תרגול תכנות תרגול

::שבועשבוע

3030..1010.0.055

Page 2: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

צור קשרצור קשר

מתרגל – ליעם רודיטי, ביה"ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה"ס למדעי המחשב. •

[email protected]@tau.ac.ilדואר אלקטרוני: דואר אלקטרוני: •

054-5579099054-5579099, , 03-64003-64053985398טלפונים: טלפונים: •

אתר הקורס: אתר הקורס: •www.cs.tau.ac.il/~liamr/cprog6A.htmwww.cs.tau.ac.il/~liamr/cprog6A.htm

Page 3: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

שעת קבלהשעת קבלה

20:00-18:0020:00-18:00רביעי רביעי •

בתאום מראש אפשר תמיד!בתאום מראש אפשר תמיד!•

((open spaceopen spaceבניין שרייבר קומת מרתף )בניין שרייבר קומת מרתף )•

Page 4: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס
Page 5: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

שיעורי ביתשיעורי בית

תרגילי בית תרגילי בית10-1410-14•

הגשת תדפיסי קוד ודוגמאות הרצה. הגשת תדפיסי קוד ודוגמאות הרצה. •

הגשה ביחידיםהגשה ביחידים•

מהציון הסופי מהציון הסופי20%20%•

פתרונות יחולקו לכל תרגיל !פתרונות יחולקו לכל תרגיל !•

Page 6: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

מטרת התרגולמטרת התרגול

Developer StudioDeveloper Studioידע בסיסי בהפעלת הידע בסיסי בהפעלת ה• . .

ראשונה )ושנייה ושלישית ... ( ראשונה )ושנייה ושלישית ... (CCתוכנית תוכנית •

Page 7: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

כתיבת התוכנהכתיבת התוכנה

כתיבת התוכנית עצמה נעשית ע"י כתיבת קובץ כתיבת התוכנית עצמה נעשית ע"י כתיבת קובץ • CCכללי שפת כללי שפת טקסט רגיל אשר תוכנו מקיים את טקסט רגיל אשר תוכנו מקיים את

ניתן לחשוב על כך כמו על כתיבת מסמך באנגלית. ניתן לחשוב על כך כמו על כתיבת מסמך באנגלית.

כלליכללי שמקיים את שמקיים את קובץ טקסטקובץ טקסטזה נעשה ע"י כתיבת זה נעשה ע"י כתיבת

. . השפה האנגליתהשפה האנגלית

Page 8: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

הבנת התוכנההבנת התוכנה

כדי שהמחשב ידע להבין את מה שכתבנו ישנו כדי שהמחשב ידע להבין את מה שכתבנו ישנו • לשפת המחשב לשפת המחשב CCשפת שפת כלי שמתרגם את כלי שמתרגם את

( ( compilercompiler ) )המהדרהמהדרהבסיסית כלי זה הוא הבסיסית כלי זה הוא . . CCשפת שפת של של

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

עבריתעבריתהיא היא

Page 9: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

סביבת העבודהסביבת העבודה

נותנת לנו את נותנת לנו את DevStudioDevStudioסביבת העבודה סביבת העבודה • editoreditor באמצעות באמצעותCCבשפת בשפת האפשרות לכתוב תוכנה האפשרות לכתוב תוכנה

CCנוח שמאפשר לנו לכתוב את הטקסט של נוח שמאפשר לנו לכתוב את הטקסט של

בנוסף היא מספקת לנו את המהדר שיתרגם את בנוסף היא מספקת לנו את המהדר שיתרגם את •הקוד שלנו לקובץ שהמחשב ידע להפעיל – קבצים הקוד שלנו לקובץ שהמחשב ידע להפעיל – קבצים

((executableexecutable אלו נקראים קבצי הפעלה ) אלו נקראים קבצי הפעלה )

Page 10: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

הפעלת התוכנההפעלת התוכנה

DeskTopDeskTop על ה על הDevStudioDevStudio של שלICONICONקיים קיים •

Page 11: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

עבודה עם סביבת העבודהעבודה עם סביבת העבודה

מספר שלביםמספר שלבים

יצירת פרויקט מיקומו בספריה מתאימהיצירת פרויקט מיקומו בספריה מתאימה•

יצירת קובץ לכתיבת הקודיצירת קובץ לכתיבת הקוד•

כתיבת הקודכתיבת הקוד•

תרגומו באמצעות המהדרתרגומו באמצעות המהדר•

הרצה ובדיקה שאכן מה שרצינו קורה!!!הרצה ובדיקה שאכן מה שרצינו קורה!!!•

Page 12: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

עבודה עם סביבת העבודהעבודה עם סביבת העבודה

יצירת פרויקט מיקומו בספריה מתאימהיצירת פרויקט מיקומו בספריה מתאימה•

יצירת קובץ לכתיבת הקודיצירת קובץ לכתיבת הקוד•

כתיבת הקודכתיבת הקוד•

תרגומו באמצעות המהדרתרגומו באמצעות המהדר•

הרצה ובדיקה שאכן מה שרצינו קורה!!!הרצה ובדיקה שאכן מה שרצינו קורה!!!•

מספר שלביםמספר שלבים

Page 13: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

התוכנית הראשונההתוכנית הראשונה

#include <stdio.h>#include <stdio.h>

void main()void main()

{{

printf ("Hello World!!!\n");printf ("Hello World!!!\n");

}}

hello.c

hello.exe

Page 14: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

התוכנית הראשונההתוכנית הראשונה

#include <stdio.h>#include <stdio.h>

void main()void main()

{{

printf ("Hello World!!!\n");printf ("Hello World!!!\n");

}}

מעטפת התוכנית

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

Page 15: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

התוכנית הראשונההתוכנית הראשונה

#include <stdio.h>#include <stdio.h>

void main(){

printf ("Hello World!!!\n");printf ("Hello World!!!\n");}

גוף התוכנית

קריאה לפונקציה אשר מדפיסה את הטקסט:Hello World!!!

Page 16: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

פונקצית ההדפסהפונקצית ההדפסה

printfprintf ("Hello World!!!\n");("Hello World!!!\n");

שם הפונקציה

הוא מסמן לרדת שורה לא מודפס!.לא מודפס!. n\הסימן כלומר התו הבא שיודפס ע"י התוכנית יודפס

בשורה חדשה!בשורה חדשה!

הטקסט להדפסה )מופיע בין

גרשיים(

printfprintf ("Hello World!!!\n");("Hello World!!!\n");printfprintf (("Hello World!!!\n""Hello World!!!\n"));;printfprintf (("Hello World!!!\n""Hello World!!!\n"););\n\n

Page 17: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

התוכנית הראשונההתוכנית הראשונה

#include <stdio.h>#include <stdio.h>

void main()void main()

{{

printf ("Hello World!!!\n");printf ("Hello World!!!\n");

}}

? למה זה משמש

לא Cשל שפת פונקציהפונקציה ההדפסה מתבצעת ע"יולכן צריך להגיד לתוכנית איפה נמצאת פקודהפקודה

שבה נשתמש. הגדרת הפונקציההגדרת הפונקציה

Page 18: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

11תרגיל תרגיל

צרו פרויקט חדש וכתבו תוכנית המדפיסה את שמכם צרו פרויקט חדש וכתבו תוכנית המדפיסה את שמכם

למסך כך שהשם הפרטי יופיע בשורה הראשונה ושם למסך כך שהשם הפרטי יופיע בשורה הראשונה ושם

המשפחה בשורה השנייה.המשפחה בשורה השנייה.

Page 19: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

11פתרון תרגיל פתרון תרגיל

#include <stdio.h>#include <stdio.h>

void main()void main()

{{

printf ("Shai\nGutner\n");printf ("Shai\nGutner\n");

}}

Page 20: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

הגדרת משתניםהגדרת משתנים

#include <stdio.h>#include <stdio.h>

void main()void main()

{{

int x,yint x,y;;

int z=0int z=0;;

}}

הגדרנו כאן שלושה משתניםהגדרנו כאן שלושה משתניםx , y , zx , y , z

כללי הגדרת משתנים: ( typetype לפני שם המשתנה נציין את סוגו )•

שזה מספר שלם intintהסוג הוא בדוגמא ניתן להגדיר מספר משתנים בשורה כולם •

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

( z )כמו שעשינו עם

רק לאחר פתיחת סוגרים מסולסליםניתן להגדיר משתנים

Page 21: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

הדפסת משתנים ופעולות חשבוןהדפסת משתנים ופעולות חשבון#include <stdio.h>#include <stdio.h>

void main()void main(){{

int x,y;int x,y;int z;int z;x=3;x=3;y=y=77;;z = x*y;z = x*y;printf ("z=%d\n",z);printf ("z=%d\n",z);printf ("y/x=%d\n",y/x);printf ("y/x=%d\n",y/x);printf ("y%%x=%d\n",y%x);printf ("y%%x=%d\n",y%x);

}}

z=21

הפעולות בתוכנית: כפל *•חילוק /•שארית %•

פלט:

y/x=2y%x=1

Page 22: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

פונקצית ההדפסה- הדפסת פונקצית ההדפסה- הדפסת משתנהמשתנה

printfprintf ( ("z=%d\n","z=%d\n", zz ););

שם הפונקציה

הוא מסמן לפונקצית לא מודפס! d%הסימן ההדפסה שכאן צריך לשלב ערך של משתנה שיגיע

מאוחר יותר לאחר הגרשיים

הטקסט להדפסה )מופיע בין

גרשיים(

המשתנה לשילוב במקום

%d

%d%d

Page 23: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

22תרגיל תרגיל

מאתחלת מאתחלת שלושה משתניםשלושה משתניםכתבו תוכנית המגדירה כתבו תוכנית המגדירה

שלהם את שלהם את המכפלההמכפלה ומדפיסה את ומדפיסה את 33 ו ו 22 11אותם ל אותם ל

שלהם. שלהם.הסכוםהסכום שלהם ואת שלהם ואת ההפרשההפרש

Page 24: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

22פתרון תרגיל פתרון תרגיל #include <stdio.h>#include <stdio.h>void main()void main(){{

int x,y,z;int x,y,z;x=1;x=1;y=2;y=2;z=3;z=3;printf ("x*y*z=%d\n",x*y*z);printf ("x*y*z=%d\n",x*y*z);printf ("x+y+z=%d\n",x+y+z);printf ("x+y+z=%d\n",x+y+z);printf ("x-y-z=%d\n",x-y-z);printf ("x-y-z=%d\n",x-y-z);

}}

שפונקצית ההדפסהשפונקצית ההדפסהנשים לב מקבלת גם ביטוי מתמטי מחשבת

אותו ומדפיסה את ערכו

Page 25: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

קליטת ערכים למשתנים קליטת ערכים למשתנים מהמשתמשמהמשתמש#include <stdio.h>#include <stdio.h>

void main()void main()

{{

int num, num1;int num, num1;

printf("Enter two positive numbers\printf("Enter two positive numbers\n");n");

scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);

}}

הוראה למשתמש

קליטת הערכים

Page 26: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

פונקצית הקליטהפונקצית הקליטה

scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);

שם הפונקציה

אופי הקלט

)מופיע בין גרשיים(

הקלט יכנס

למשתניםnum

num1ו- ? & מה פשר הסימן

&& &&

Page 27: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

33תרגיל תרגיל

כתבו תוכנית הקולטת שני מספרים מהמשתמש כתבו תוכנית הקולטת שני מספרים מהמשתמש

ומדפיסה את ההפרש שלהם ואת החלוקה ומדפיסה את ההפרש שלהם ואת החלוקה שלהם.שלהם.

Page 28: תכנות תרגול 1 שבוע : 30.10.05. צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס

33פתרון תרגיל פתרון תרגיל #include <stdio.h>#include <stdio.h>void main()void main(){{

int num, num1, s,q;int num, num1, s,q;printf("Enter two positive numbers\n");printf("Enter two positive numbers\n");scanf("%d%d", &num, &num1);scanf("%d%d", &num, &num1);s = num - num1;s = num - num1;printf("subtraction of %d from %d is %d\n", num1, printf("subtraction of %d from %d is %d\n", num1, num, s);num, s);q = num / num1;q = num / num1;printf("quotient of %d and %d is %d\n", num, num1, printf("quotient of %d and %d is %d\n", num, num1, q);q);

}}

הוראה למשתמשקליטת הערכים