Slide 1

מסמכים קשורים
Microsoft PowerPoint - L01-n.ppt

Slide 1

Microsoft PowerPoint - Lecture1

PowerPoint Presentation

Slide 1

PowerPoint Presentation

Slide 1

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

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

Slide 1

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

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

PowerPoint Presentation

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

Microsoft Word - c_SimA_MoedB2005.doc

Slide 1

PowerPoint Presentation

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

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

PowerPoint Presentation

PowerPoint Presentation

פתרון מבחן במיקרו בקרים תשעו

Microsoft Word B

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

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

Slide 1

Slide 1

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

Microsoft Word - Ass1Bgu2019b_java docx

Slide 1

תרגול 1

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

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

Comp. Arch. Lecture 1

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

T01-1page

Microsoft PowerPoint - rec1.ppt

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

Slide 1

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

מערכות הפעלה

תרגול מס' 1

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

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Slide 1

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

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

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - YL-05.ppt

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

Tutorial 11

Slide 1

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

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

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

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

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

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

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

מצגת של PowerPoint

Microsoft PowerPoint - rec3.ppt

PowerPoint Presentation

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

אגף כלכלה תקציב ומסחר

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

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

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

Slide 1

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

מבוא לאסמבלי

מקביליות

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

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

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

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

PowerPoint Presentation

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

פייתון

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

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

בחן במערכות הפעלה

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

Microsoft PowerPoint - CE_Candidates_2011.ppt [Compatibility Mode]

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

ייבוא וייצוא של קבצי אקסל וטקסט

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

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

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

הגנה - שקפי תרגול

Microsoft Word - UsingXMTenvironment.rtf

Slide 1

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

תמליל:

תוכנייה How a computer works? חומרת המחשב רקע תוכנה רקע צעדים ראשונים בשפת C * חלקים מפרק זה מבוססים על: http://www.eingang.org/lecture 4

חומרה )Hardware( אנו מוקפים מחשבים,,Laptop טלוויזיה,,DVD ועוד. לכל אלו מבנה עקרוני משותף:,ipod מכונית, מכונת כביסה, טלפון, Bus אמצעי פלט זיכרון ראשי CPU אמצעי קלט התקני אחסון 5

חומרה: המרכיבים השונים :Bus ערוץ תקשורת פנימי שדרכו עובר מידע בין היחידות השונות. רוחבו מכתיב את מהירותו )לדוגמה,.)64bits.1 - Central Processing Unit( CPU יחידת עיבוד מרכזית(: אוסף רכיבים ומעגלים אלקטרוניים המנהלים את פעילות המחשב. יחידה זו מבצעת הבאת פקודות מהזיכרון, פענוחן, וביצוען..2 זיכרון ראשי memory( :)RAM בו נשמרים הנתונים והפקודות של התכניות בזמן ביצועם. Random-Access-Memory מהיר. המידע ברובו אינו נשמר כאשר מכבים את המחשב..3 6

חומרה: המרכיבים השונים - המשך זיכרון משני disk( :)cdrom,disk on key,hard עליו נשמרת מידע משני שאינו נחוץ לפעולות המחשב המידיות. בעת הצורך מועבר מידע מהזיכרון המשני לראשי ולהפך. המידע בזיכרון המשני נשמר עד אשר מוחקים אותו..4 אמצעי קלט ופלט devices( :)I/O התקני חומרה כדוגמת מקלדת, עכבר, מסך, מצלמה, מדפסת, אמצעי תקשורת וכיו"ב שבאמצעותם נקלטים נתונים הנחוצים לתכניות שמריץ המחשב ומוצגים )פלט( נתונים שמייצרות תכניות אלו..5 7

חוק Moore להתקדמות בציוד מחשוב עליה פי 100 כל כ- 10 שנים פקטור 1.3~ לשנה ניתן להראות גרפים דומים המתייחסים לגידול במהירותם ונפחם של זיכרונות.)RAM( 8

חוק Moore מקור: wikimedia 9

:CPU קצב עבודה מחזורי הפקודות מבוצעים תחת פיקוחו של השעון הפנימי. מקובל לכן למדוד את מהירות ה CPU על פי תדירות השעון )מספר הפעימות בשנייה(. דוגמאות: 1. II Apple )מתחילת שנות ה- 80 (: ~1MHz )מיליון תקתוקי שעון בשנייה(. 2. מחשב 486 משנת 93': כ- )33 33MHz מיליון בשנייה(. 3. מחשבי 3.5GHz :Pentium IV )כשלושה וחצי מיליארד בשנייה(. 4. טלפון סלולארי נוקיה 6680:.280MHz.800MHz : Apple של iphone 4S.5 ביצוע פקודה אחת נמשך מספר מחזורי שעון. 10

מרכיבי ה- CPU Arithmetic Logic Unit( ALU יחידה אריתמטית לוגית(: זוהי יחידת החישוב המבצעת פעולות אריתמטיות )חיבור, כפל,...(. פעולות לוגיות OR(.)AND, השוואת נתונים הנמצאים בזיכרון הראשי או ברגיסטרים. רגיסטרים )אוגרים(: מספר יחידות זיכרון שהגישה אליהן מהירה במיוחד )מעין RAM מקומי וקטן בתוך ה- CPU (. אחד הרגיסטרים משמש כ- counter program )המציין מהי הפקודה הבאה לביצוע(. 11

פעולת ה- :CPU דוגמה המטרה: חישוב C=A+B והשמת התוצאה ב- C..RAM נמצאים ב- C וכן,B,A תאי זיכרון RAM A B ל- R1, צעדי הפעולה: רגיסטרים R1 CPU ALU העבר תוכן A העבר תוכן B ל- R2, R2 חבר R1 ל- R2, C R3 העבר התוצאה מ- R3 ל- C. ב- 4 צעדי שעון הושלמה פעולת חיבור ב-.CPU 12

ארגון הזיכרון במחשב התקני זיכרון משמשים לכתיבת )שמירת( מידע ו/או לקריאתו )שחזורו(. זיכרון פועל כטבלה, לקוראו. בה לכל תא כתובת אליה ניתן לגשת ולטעון ערך או סיבית )bit( הינה יחידת המידע הקטנה ביותר של הזיכרון במחשב. סיבית מקבלת ערכים בינאריים, כלומר 0 או 1. זיכרון מאורגן בבתים )bytes( בני 8 סיביות. בית: יחידת הזיכרון הקטנה ביותר בעלת כתובת. ניתן לפרש סדרה כזו כמספר הכתוב בבסיס 2. משמעויות נוספות שיתכנו: חלק מפקודה, ועוד. 13

הזיכרון הראשי התקן זיכרון קטן )יחסית לדיסק( שהגישה אליו מהירה בנוי משבבי זיכרון.(chips) - הזיכרון הראשי גודל הזיכרון )RAM( המקובל כיום למחשבים ביתיים הוא 1-12. GB KB = 2 10 bytes MB= 2 20 bytes GB = 2 30 bytes TB = 2 40 bytes.64 גודל הזיכרון ב- Apple II היה KB הזיכרון הראשי הינו.)Random Access Memory( RAM בזיכרון מסוג זה ניתן לגשת לכל כתובת באופן ישיר, כלומר אין צורך לבצע מעבר על כל הזיכרון כדי להגיע לכתובת הרצויה. 14

ספירה בבסיס שתיים )בינארי( דרך בנייתו של מספר עשרוני: 9 3 7 5 * 10 3 10 2 10 1 10 0 9375 = 9000 +300 + 70 + 5 1 0 1 0 * 0 2 3 2 2 2 1 2 0 ובאנלוגיה, המרה ממספר בינארי לעשרוני תיעשה ע"י 10 = 8 + 0 + 2 + 15

וההמרה חזרה... תרגום ממספר עשרוני לבינארי 10 )עשרוני( =? 0 0 1 0 1 0 2 5 2 4 2 3 2 2 2 1 2 0 תרגום ממספר עשרוני למספר בינארי גישה שונה: מנה 0 / 2 1 / 2 2 / 2 מנה מנה מנה 5 / 2 10 שארית שארית שארית שארית 1 0 1 0 16

תוכנייה How a computer works? חומרת המחשב רקע תוכנה רקע צעדים ראשונים בשפת C 17

תוכנה )Software( תוכנית מחשב הינה סדרת פקודות שנועדו לבצע משימה מסוימת. פקודות התוכנית, בשעת ריצתה, נמצאות בזיכרון הראשי. ב- CPU יש מנגנון אשר באופן סידרתי קורא פקודה, מפענח אותה ומבצעה. הפקודות מבוצעות בזו אחר זו, למעט פקודות הסתעפות. לפי סדר ישיבתן בזיכרון, 18

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

תוכנה: שפת מכונה שפת מכונה: השפה שמבין ה- CPU והיא משתנה בין מחשב למחשב. שפות מכונה מכילות פקודות בסיסיות מהסוגים הבאים: העברת נתונים בין הרגיסטרים ותאי הזיכרון. פעולות אריתמטיות ולוגיות. קפיצות והסתעפויות מותנות. שפת מכונה הינה שפה בינארית. 01000010 פקודה לדוגמא: 00010000 move from R1 to R2 20

תוכנה: שפת אסמבלי )סף( שפת סף )Assembly( : ייצוג סמלי של שפת מכונה. למשל, mov mov mov #0, x #1, y #0, i השם 0 מה עושה התוכנית? x במשתנה השם 1 y במשתנה השם 0 i במשתנה mov #30, n השם 30 במשתנה n loop: mov y, t העתק את ערכו של המשתנה t y למשתנה add x, y הוסף את ערכו של המשתנה y x למשתנה mov t, x העתק את ערכו של המשתנה x t למשתנה add #1, i הוסף i 1 למשתנה cmp i, n n השווה את המשתנה i עם המשתנה blt ואם קטן יותר חזור loop אסמבלר: תכנית המתרגמת פקודות שפת סף לשפת מכונה בינארית. 21

תוכנה: שפה עילית x = 0; y = 1; i = 0; n = 30; do { t = y; y = y + x; x = t; } while(i++ < n); :)...,Pascal שפה עילית,C(,Fortran,C++,Java דמוית אנגלית. פקודות מורכבות יותר מפקודות מכונה. מה עושה התוכנית? תכנית בשפה עילית מתאימה לריצה על מחשבים שונים ואינה תלויה בשפת המכונה של מעבד ספציפי. compiler )מהדר(: תכנית המתרגמת תכניות משפה עילית לתכניות בשפת מכונה של מעבד נתון. את קוד המכונה )קובץ הרצה( המתקבל ניתן להריץ פעמים רבות. y = 1, 1, 2, 3, 5, 8, 13, 21, 34, i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 22

שלב התרגום ושלב ההרצה מהדר compiler תוכנית בשפת מכונה my_prog.exe שגיאות הידור )אם יש( compilation errors תוכנית בשפה עילית my_prog.c פלט התוכנית output תוכנית בשפת מכונה my_prog.exe שגיאות הרצה )אם יש( runtime errors קלט לתוכנית input 23

שפת C פותחה ע"י דניס ריצ'י )Dennis Ritchie( במקור יועדה לכתיבת מערכת הפעלה בשנות ה- 70 של המאה ה- 20 )UNIX( ומהדר.)Compiler( זוהי שפה יעילה המאפשרת כתיבה עילית וירידה לפרטים ברמת הביטים )אם רוצים זאת(. בשימוש נרחב במגוון יישומים הנדסיים. שפה זו הינה הבסיס ל- ++C, קל לשגות בה, ל-,Java ול- Ada. וקשה לאתר ולתקן שגיאות אלה. הרגלים נכונים בתכנות משפרים את המצב, ממש! זו השפה בה נתמקד בקורס זה 25

תוכנייה How a computer works? חומרת המחשב רקע תוכנה רקע צעדים ראשונים בשפת C 26

איך אומרים Hello World בשפת C? /* The traditional first program in honor of Dennis Ritchie who invented C at Bell Labs in 1972 */ RUN #include<stdio.h> int main() { printf("hello World!\n"); return 0; } 27

מבנה תוכנית בשפת C /* The traditional first program in honor of Dennis Ritchie who invented C at Bell Labs in 1972 */ #include<stdio.h> RUN הערה הכללת קובץ int main() { printf("hello World!\n"); return 0; } הדפסה למסך ע"י קריאה לפונקציה mainהפונקציה ערך מוחזר אנו נעבור על כל אחד ממרכיבי התוכנית בשקפים הבאים 28

הערות /*... */ */ הערה )Comment( טקסט בתוך ההערה מתחילה בצירוף */ ומסתיימת בצירוף הערה יכולה להשתרע על פני מספר שורות דוגמה: /* In this part of the program we handle the computation of the final grades. */ לפי תקן C99 הערה היא גם טקסט שבא אחרי // עד לסוף השורה: // This is a comment a = b + c; // This is another comment 29

פונקציות פונקציה )Function( לקבל ערכים )פרמטרים( לחשב חישוב מסוים לבצע קלט/פלט להחזיר ערך יחידת חישוב אשר יכולה: )ודברים נוספים( בשפות אחרות משתמשים גם במונחים...,Routine,Procedure לכל פונקציה: הצהרה המתארת את שמה, הפרמטרים שהיא מקבלת ואת ערך החזרה. הגדרת גוף הפונקציה. הגדרה מכילה, בין היתר, לפני השימוש בפונקציה חייבת לבוא ההצהרה עליה. נרחיב את נושא הפונקציות בהמשך הקורס. קלט\פלט ערכי מוצא פונקציה את ההצהרה. פרמטרי כניסה 30

פונקציות דוגמה הצהרה בלבד: שם טיפוס מוחזר double power(double x, int n); double power(double x, int n) { double p; int i; הגדרה: שני פרמטרים } p = 1.0; for (i = 0; i < n; ++i) p = p * x; return p; 31

קבצי כותרת והכללתם ע"י #include קובץ כותרת File( :)Header הצהרות על עצמים חיצוניים. קובץ בעל סיומת "h." אשר מכיל #include <stdio.h> // #include <math.h> // מכיל מכיל הצהרות הצהרות על על פונקציות פונקציות קלט-פלט מתמטיות הנחיה להכליל קובץ כותרת בתוכנית HelloWorld שראינו, ישנה הכללה של stdio.h כיוון שאנו משתמשים בפונקציה printf המוצהרת שם. ללא הכללה זו הקוד לא היה עובר קומפילציה כי הקומפיילר מצפה לראות הצהרה על הפונקציה לפני השימוש בה. 32

פלט מעוצב ע"י printf stdio.h פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה )פירוט בתרגול(, ואחריה באים הערכים אותם יש לכתוב לפי הפורמט. כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה. מחרוזת הבקרה יכולה גם להכיל טקסט רגיל )ללא %( שיודפס כמו שהוא. ערך החזרה: מספר התווים שנכתבו, או מספר שלילי בעת כישלון. דוגמאות: printf("just printing text.\n"); int i = 5; printf("the sum of %d and %d is %d", i, 2, 2+i); 33

קלט מעוצב ע"י scanf stdio.h פרמטרים: הארגומנט הראשון הוא מחרוזת בקרה )פירוט בתרגול(, ואחריה באים המשתנים אותם יש לקרוא לפי הפורמט. כל ארגומנט מתאים לקוד ה-% הבא בתור במחרוזת הבקרה. יש להוסיף & לפני שם המשתנה )נבין מדוע בהמשך(. ערך החזרה: מספר הנתונים שנקראו בהצלחה, או 1- כשלון. במקרה של לא לשכוח את ה-& int i; double x; float y; scanf("%d%lf%f", &i, &x, &y); דוגמה: 34

הפונקציה main תוכנית ב- C חייבת להכיל פונקציה אשר שמה הוא.main הביצוע המעשי של התוכנית יחל בפונקציה זו. int main() {... } בשלב זה נניח כי main אינה מקבלת פרמטרים. הערך המוחזר ממנה הוא ההפעלה. "קוד סיום התוכנית". ערך זה מוחזר למערכת 0: סיום בהצלחה שונה מ- 0 : בעיה כלשהי 35

מחזור החיים של תוכנה ניתוח הבעיה )הגדרת הקלט והפלט הרצוי( תכנון - Design : מציאת האלגוריתם )algorithm( לפתרון. i. תכנון מבנה הנתונים..ii.iii חלוקת האלגוריתם לתתי-מרכיבים. מימוש : קידוד באמצעות שפת התכנות שנבחרה. מציאת שגיאות,)debug( שימוש ותחזוקה..1.2.3.4 כאשר כותבים תוכניות גדולות ומורכבות, שלב 4 הינו הארוך ביותר. ככל ששלבים 1,2 יסודיים יותר, כך שלבים 3 ו- 4 קצרים ופשוטים יותר. במקרים מסוימים )בעיות מורכבות( שלב )i( 2 הוא הקשה ביותר. 36

תוכנית ראשונה בשפת C הגדרת הבעיה נכתוב תכנית מחשב בשפת C הקוראת 10 מספרים מהמשתמש ומדפיסה את סכומם. הגדרת הבעיה: קלט: סדרה של 10 מספרים. פלט: סכום המספרים. 37

תוכנית ראשונה בשפת C תכנון האלגוריתם: אפס את הסכום. בצע 10 פעמים קרא את הערך הבא. הוסף ערך זה לסכום. הוצא את הסכום כפלט. מבנה הנתונים.1.2.3 נזדקק לשלשה תאי זיכרון: הסכום )sum( המספר הנקרא הנוכחי )num( מספר הערכים שקראנו עד כה )i( בחירת האלגוריתם ומבנה הנתונים בד"כ אינה תלויה בשפת התכנות. 38

תוכנית ראשונה בשפת C הקוד #include <stdio.h> int main() { int i, sum = 0; RUN for (i = 0; i < 10; i++) { int num; scanf("%d", &num); sum += num; // sum = sum + num; } printf("%d\n", sum); } return 0; 39

תוכנית לסיכום מספרים שיפורים #include <stdio.h> int main() { int i, sum = 0, numbers_to_read; RUN printf("please enter number of values\n"); scanf("%d", &numbers_to_read); for (i = 0; i < numbers_to_read; i++) { int num; printf("enter the next integer: "); scanf("%d", &num); sum = sum + num; } printf("the sum of the %d numbers is %d\n", numbers_to_read, sum); } return 0; 40

תוכנית לסיכום 10 מספרים בדיקת קלט...... printf("please enter number of values\n"); scanf_result = scanf("%d", &numbers_to_read); if(scanf_result < 1) { printf("failed reading the number of values\n"); return 1; } for( i = 0; i < numbers_to_read; i++ ) { printf("enter the next integer: "); int num; scanf("%d", &num); sum = sum + num; } RUN איזו בדיקה נוספת כדאי לעשות? מה יקרה אם נכניס מספר שאינו שלם? 41

מקוד המקור לתוכנית שרצה - התהליך קוד מטרה נוסף other.obj קוד מקור prog.c מהדר )קומפיילר( קוד מטרה prog.obj ספריה libc.lib ק ש ר )linker( תוכנית לביצוע prog.exe 42

סוגי שגיאות שגיאות תחביר Errors( )Syntax קוד מקור שאינו חוקי: המהדר מגלה בקלות. החלפת השורה sum); printf("%d \n", בשורה printf("%d \n", num); תגרום לקבלת הודעה מהקומפיילר על כך שהמשתנה num אינו מוגדר. שגיאות משמעות Errors( )Semantic קוד מקור חוקי אבל שגוי: קשה יותר לגלות. sum += num; החלפת השורה בשורה עדיף sum = sum + num; sum = num + num; תוביל לשגיאה בפעולת התוכנית, אך הקומפיילר לא יראה בה שגיאה. שגיאות זמן ריצה Errors( )Run-time כגון חלוקה ב- 0 וכד': מתגלות בזמן הריצה. Bug! שגיאות לוגיות Errors( )Logical שגיאות בפיתוח האלגוריתם: לא תמיד מצליחים לאתר את כולן. 43