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

בשחמה יעדמל אובמ - moodlearn.ariel.ac.il 1 Author: saher Created Date: 4/2/2015 7:27:06 AM

Embed Size (px)

Citation preview

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

C בשפת ראשונים צעדים :2 הרצאה

, י שי ארצי"מבוסס על שקפים שנערכו עסאהר , איתן אביאור, ל"גיתית רוקנשטיין ז

. רון קימל ודן רביב, מיכאל אלעד,אסמיר 2014אוקטובר , יחיאל קמחי: עדכון אחרון

2 © כל הזכויות שמורות. מבוא למדעי המחשב הרצאה 2

תוכנייה

משתנים קבועים ומזהים•

טיפוסי מידע בסיסיים•

ביטויים•

ביטויים לוגיים•

3 © כל הזכויות שמורות. מבוא למדעי המחשב

בסיס לדיון –דוגמת תוכנית

#include <stdio.h>

#define MANY 100

int main()

{ int sum = 0;

printf("Please enter %d of values\n“, MANY);

for (int i = 0; i < MANY; ++i) {

int num;

if (scanf("%d", &num) < 1) {

printf(“Input Error (item %d)\n”, i + 1);

return 1;

}

sum += num;

}

printf("The sum of %d numbers is %d\n", MANY, sum);

return 0;

}

שערכו עשוי להשתנות במהלך , תא בזיכרון(: variable)משתנה •

.ובו נשמרים נתונים הנחוצים עבור פעולת התכנית, התכנית

4 © כל הזכויות שמורות. מבוא למדעי המחשב

gsa = tg * 0.90 + hg * 0.10 + factor;

משתנים ומזהים

נועד כדי לתת שם (: identifier)מזהה •

.לטיפוס או לפונקציה, למשתנה

ספרות , מזהה יכול להיות מורכב מאותיות–

.אך אינו יכול להתחיל בספרה'_' והתו

.מומלץ לבחור מזהים בעלי משמעות–

.מזהים ארוכים מדי פוגעים בקריאות–

5 1002

x

כתובת

בזיכרון

מזהה

תוכן התא

שערכו עשוי להשתנות במהלך , תא בזיכרון(: variable)משתנה •

.ובו נשמרים נתונים הנחוצים עבור פעולת התכנית, התכנית

5 © כל הזכויות שמורות. מבוא למדעי המחשב

משתנים ומזהים

grade_of_semester_A = test_grade * 0.90 +

hw_grade * 0.10 + factor;

נועד כדי לתת שם (: identifier)מזהה •

.לטיפוס או לפונקציה, למשתנה

ספרות , מזהה יכול להיות מורכב מאותיות–

.אך אינו יכול להתחיל בספרה'_' והתו

.מומלץ לבחור מזהים בעלי משמעות–

.מזהים ארוכים מדי פוגעים בקריאות–

5 1002

x

כתובת

בזיכרון

מזהה

תוכן התא

6 © כל הזכויות שמורות. מבוא למדעי המחשב

Constants -קבועים

בפקודות שמשמאל •

,מופיעים קבועי שלמים

קבועי ממשיים וקבועי

.תווים

מלים שמורות בסגול•

!משמעותן קבועה–

int main()

{

int num_of_students;

double failure_rate;

char success_sign, failure_sign;

.

.

.

num_of_students = 600;

success_sign = '+';

failure_sign = 'F';

if (failure_rate > 0.25) ...

.

.

.

}

7 © כל הזכויות שמורות. מבוא למדעי המחשב

"ממשיים"שלמים ו -קבועי מספרים

:דוגמאות לקבועים שלמים•

– 200 -40 032 0x1B7

: דוגמאות לקבועים ממשיים•

–6. -2.5 .53 2.0

–3.3e+9 -2E7 2e-7

2מיוצג בזיכרון באופן שונה מהקבוע 2.0הקבוע •

(Octal) בסיס אוקטלי

= 3 * 8 + 2 = 26

(Hexadecimal)בסיס הקסדצימלי

= 1 * 162 + B * 16 + 7 = 439

1

6

= 2 * 10-7

8 © כל הזכויות שמורות. מבוא למדעי המחשב

קבועי תו ומחרוזת

(. string)נקראת קבוע מחרוזת "…"סדרת תווים הנתונה בתוך •

מאבדים המילים והתווים את המשמעות שיש להם , בתוך המחרוזת• : למשל. מחוץ למחרוזת

לא מתבצעת פעולת חיבור–

לא גורם לסיום התכנית–

•'a' הינו קבוע תו ."a" הינו קבוע מחרוזת.

?מה ההבדל ביניהם–

(:רשימה חלקית)קבועי תו מיוחדים •

מעבר שורה–

גרש–

גרשיים–

סוף מחרוזת–

"a = b + c";

printf("return 1");

'\n'

'\''

'\"'

'\0'

9 © כל הזכויות שמורות. מבוא למדעי המחשב

define#י "הגדרת קבועים סימבוליים ע

יוחלפו כל preprocessing-ההוראה הבאה גורמת לכך שבשלב ה• .1000בסדרת התווים MAX_SIZEהמופעים של

. בתוך מחרוזת אינם מוחלפים MAX_SIZEמופעים של •

. איננו משתנה ולא מוקצה עבורו זיכרון MAX_SIZE: שימו לב•

: סיבות לשימוש בהגדרה זו•

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

תורמת לקריאות התכנית PIהגדרת קבוע –

(:של מספר ארוך וחוסכת הקלדות חוזרות )

להפוך , באמצעות שינוי בודד, לעיל מאפשרת MAX_SIZEהגדרת הקבוע –

.נתונים 2500 -נתונים לתכנית המטפלת ב 1000 -תכנית המטפלת ב

:דוגמה נוספת–

#define MAX_SIZE 1000

#define PI 3.14159265

#define EOF <ערך שלילי> scanf מחזירהEOF

בעת כישלון טוטאלי

#define MANY 100

#define MAX_GRADE 100

10 © כל הזכויות שמורות. מבוא למדעי המחשב

תוכנייה

משתנים קבועים ומזהים•

טיפוסי מידע בסיסיים•

ביטויים•

ביטויים לוגיים•

11 © כל הזכויות שמורות. מבוא למדעי המחשב

Cטיפוסי משתנים וקבועים בשפת

. גם למשתנים טיפוסים שונים, בדומה לקבועים•

.יש להגדיר משתנים לפני שנעשה בהם שימוש•

:ההגדרה הינה הוראה לקומפיילר•

.להקצות תא בזיכרון בגודל המתאים –

. לקרוא לו בשם הנתון –

.לפרש את תוכנו לפי הטיפוס הנתון–

.ניתן להוסיף גם אתחול•

כיצד , טיפוס המשתנה קובע את גודל תא הזיכרון שמוקצה עבורו•

מפרשים את הסדרה הבינארית השמורה בו ואת הפעולות אותן ניתן

.לבצע עליו

int num, sum;

double weight = 0.0;

char digit = '4';

12 © כל הזכויות שמורות. מבוא למדעי המחשב

הטיפוסים השלמים

. intהטיפוס הבסיסי הינו •

.אלא אם מסומן אחרת, intכל קבוע שלם הינו מטיפוס •

•ANSI-C אינה קובעת את המקום המוקצה לייצוג ערך מטיפוסint . . בתים 4מוקצים בדרך כלל , במערכות הנפוצות כיום

עצם /מציאת גודל של טיפוס–

: ♠קובע את תחום הערכים השלמים שניתן לייצג בו intגודלו של •

( 215-כ גם "בד) 215+1,…,-2,-1,0,1,…,215-1- (:bit16 )בתים 2–

( 231-כ גם "בד) 231+1,…,-2,-1,0,1,…,231-1- (:bit32 )בתים 4–

–215 = 32768, 231 = 2147483648

מעבר להיותה בינארית, התחום המדויק תלוי גם בשיטת הייצוג של ערכים שליליים ♠

int b = 3;

int a = sizeof (int),

c = sizeof b;

13 © כל הזכויות שמורות. מבוא למדעי המחשב

המשך -הטיפוסים השלמים

מבחינת הגדלים . char ,short, long: טיפוסים שלמים נוספים•

:מתקיים תמיד( מספר הבתים שכל טיפוס תופס)

1 = char ≤ short ≤ int ≤ long

לפני שמות הטיפוסים unsignedעל ידי הוספת המילה השמורה •

השלמים נוותר על ייצוג המספרים השליליים ונכפיל את תחום

.המספרים החיובים הניתנים לייצוג

:לדוגמה •

–int ( בתים 4נניח :)-231-1,…,1,0,1-,2-,…,231

–unsigned int :0,1,…,232-1

(:<limits.h>דוגמות מתוך )י המהדר "קבועים המסופקים ע•

גודל גודל גודל גודל

INT_MIN, INT_MAX, UINT_MAX

14 © כל הזכויות שמורות. מבוא למדעי המחשב

ייצוג תווים

.הינם מטיפוס שלם'n' '0' 'a' 'A\' תו כגון קבועי•

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

:פיה-על, ASCIIהיא טבלת

מנת לשמור את -מספיק על, שגודלו בית בודד, charמשתנה מטיפוס •

. ASCIIכל הערכים המופיעים בטבלת

:שקולותהבאות ההשמות•

char letter = 'd';

char letter = 100;

0 ... 48 49 ... 65 66 ... 97 98 ... 127

\0 ... 0 1 ... A B ... a b ... DEL

אסקיבמחשבים בעלי קידוד

15 © כל הזכויות שמורות. מבוא למדעי המחשב

המחשה: ASCII-טבלת ה

#include <stdio.h>

#include <limits.h>

int main()

{

int i;

for (i = 0; i < UCHAR_MAX; i++){

char val = i; // Redundant

printf("%d: %c ---> %d\n", i, i, val);

}

return 0;

{

RUN

See the complete table in http://www.lookuptables.com/

. doubleהטיפוס הבסיסי הינו •

.אלא אם מסומן אחרת, doubleקבועים ממשיים הינם מטיפוס •

:מתקיים. float, long double: טיפוסים ממשים נוספים•

float ≤ double ≤ long double

.בתים float 4בתים ועבור 8הוא doubleגודל נפוץ עבור •

(.Floating Point) המספרים הממשיים מיוצגים בשיטת הנקודה הצפה•

.מקורבמספרים ממשיים במחשב הינו ייצוג•

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

16 © כל הזכויות שמורות. מבוא למדעי המחשב

"(נקודה צפה"או FP" )ממשיים"הטיפוסים ה

גודל גודל גודל

printf("%g\n", 1.42 - 1.5 + 0.08);

-6.93889e-17

17 © כל הזכויות שמורות. מבוא למדעי המחשב

ייצוג בשיטת הנקודה הצפה

:צפה מיוצגים במחשב כשברים בינאריים' המספרים בנק•

.מיוצגים במדויק 2מספרים שלמים ושברים שמנתם חזקה של –

.שברים אחרים מיוצגים במקורב–

היתרה מגדילה את התחום , ביות"ידי יותר ס-כאשר טיפוס מיוצג על•

(.או הטווח/וכתוצאה גדל הדיוק ו) exponent-או ה/ו mantissa-של ה

sign exponent mantissa

2.5 10.1

0 | 10 | 101

es2m1

: (<FLT_DIG, DBL_DIG in <float.h)דיוק מובטח מזערי בספרות עשרוניות

float => 6, double => 10, long double => 10

18 © כל הזכויות שמורות. מבוא למדעי המחשב

sizeofהאופרטור

מחזיר את מספר הבתים הדרוש כדי לאחסן את sizeofהאופרטור •

object כאשר . בזיכרוןobject הינו:

(.type)שם של טיפוס –

(.expression)או ביטוי –

sizeof (object)

RUN

Show Show

RUN

19 © כל הזכויות שמורות. מבוא למדעי המחשב

(casting)המרת טיפוסים מפורשת

. castingלהמרת טיפוסים מפורשת קוראים •

אזי ערך , 1שערכו intהוא ביטוי מטיפוס expאם •

.doubleוטיפוסו הוא 1.0הוא exp(double)הביטוי

/., *, -, +לאופרטור ההמרה יש קדימות גבוהה יותר מ •

:דוגמאות•

int i = 1, j = 2;

double x;

x = i / j;

x = (double)i / j;

x = i / (double)j;

x = (double)(i / j);

0.0

0.5

0.5

0.0

20 © כל הזכויות שמורות. מבוא למדעי המחשב

תוכנייה

ומזהיםמשתנים קבועים •

טיפוסי מידע בסיסיים•

ביטויים•

ביטויים לוגיים•

21 © כל הזכויות שמורות. מבוא למדעי המחשב

(expressions)ביטויים

.לכל ביטוי יש טיפוס ויש ערך•

. משתנים ואופרטורים, ביטוי הינו צירוף בעל משמעות של קבועים• :לדוגמה

.ביטויים-ביטויים לפעמים מורכבים מתתי•

שימו לב לסוגים השונים של פעולות שיכולות להרכיב ביטוי•

( unaryאונארית)מקומית -חד–

( binaryבינארית )מקומית -דו–

( ternaryטרנארית)מקומית -תלת–

7

x

x = 3 + y

(x > 0) && (x < 70)

x++

found ? x : y

++i -x

a * b a == b

a < 0 ? –a : a

22 © כל הזכויות שמורות. מבוא למדעי המחשב

הטיפוס של ביטוי חשבוני

פעולות חשבון המתבצעות על ערכים מאותו טיפוס •

.מובילות לתוצאות מאותו הטיפוס

מתבצעת , קבועים מטיפוסים שונים/אם בביטוי מעורבים משתנים•

של הערכים לטיפוס ( conversion/promotion) המרה אוטומטית

.הכללי יותר

:למשל•

char short int long float double

2 + 7.5 2.0 + 7.5

char c;

int i;

c + i; (int)c + i;

* float -לא להשתמש ב

23 © כל הזכויות שמורות. מבוא למדעי המחשב

(וחילוק בשלמים)פעולות חשבון

חיסור/חילוק על פני חיבור/עדיפות לכפל: פעולות החשבון•

משמאל לימין( associativityצרופיות ) קיבוציות–

כמו הרוב המכריע של הפעולות–

.תוצאת חלוקה בשלמים היא מספר שלם: מפתיעמקרה •

:חיוביים( מחלק)ומכנה ( מחולק)עבור מונה •

a / b is ⌊a : b⌋ :החלק השלם–

a % b is a − ⌊a : b⌋ * b :השארית–

a / b * b + a % b is a :מתקיים–

?מה קורה כשיש מספרים שליליים•

שיטת השאריתלפי ±5 / ±11a

b 11 -11

5 2 ∟ 1 -2 ∟ -1

-5 -2 ∟ 1 2 ∟ -1

24 © כל הזכויות שמורות. מבוא למדעי המחשב

פעולות השמה

ה • מָּ מעתיקה את ערכו של ( Assignment Operation)פעולת ַהשָּ .הביטוי בצד הימני אל המקום אשר מצוין בביטוי שבצד השמאלי

(.אינו מציין השוואה =)הוא אופרטור ההשמה = Cבשפת !שימו לב–

. הביטוי בצד השמאלי חייב לציין מקום ואילו הביטוי מימין מציין ערך• :z = yבביטוי , למשל

.z( המשתנה עצמו)הנמצא בצד שמאל מציין את המקום zהביטוי –

.yהנמצא בצד ימין מציין את ערכו הנוכחי של המשתנה yהביטוי –

!האסוציאטיביות של אופרטורי השמה היא מימין לשמאל• :נאפס שלושה משתנים בביטוי אחד, לדוגמה

a = b = c = 0

: ביטוי השמה•

כטיפוס העצם משמאל טיפוסו–

כערך החדש של העצם משמאל ערכו–

25 © כל הזכויות שמורות. מבוא למדעי המחשב

המשך -פעולות השמה

כאשר הטיפוס של הערך המושם שונה מזה של המקום אליו מתבצעת •

שימו לב שלפעמים המרות כאלו גורמות . נדרשת המרה, ההשמה

(.יותר" קטן"אם ממירים לטיפוס )לאובדן אינפורמציה

:פעולת השמה מקוצרת עבור כל Cקיימת בשפת •

* / % -+ :פעולת חשבון–

& ^ | >> << :ביות"פעולת ס–

double z;

int x, y = 4;

x = y * 3.6;

double 14.4

14 int

z = y / 5.0;

double 0.8

double 0.8

z = y / 5;

int 0

double 0.0

(Decrement)ונסיגה ( Increment)קיימים קיצורים לפעולות קידום C -ב•

כאשר פעולת הקידום או הנסיגה•

ערך הביטוי כולו כערכו לאחר השינוי -בצד שמאל –

ערך הביטוי כולו כערכו לפני השינוי -בצד ימין –

26 © כל הזכויות שמורות. מבוא למדעי המחשב

פעולות קידום ונסיגה

x++ x += 1 x = x + 1

++x x += 1 x = x + 1

x-- x -= 1 x = x - 1

--x x -= 1 x = x - 1

x = 5;

y = ++x;

z = x++;

5

6

7

?

6

6

?

?

6

x y z

27 © כל הזכויות שמורות. מבוא למדעי המחשב

( חלקית)טבלת קדימויות ואסוציאטיביות

( z=9נניח)? כיצד מחושב הביטוי הבא•

אסוציאטיביות סימן הפעולה סוג הפעולה

משמאל לימין ( ) סוגריים

מימין לשמאל - + -- ++ פעולות אונאריות

משמאל לימין % / * פעולות כפל וחילוק

משמאל לימין - + פעולות חיבור וחיסור

מימין לשמאל =% =/ =* =- =+ = פעולות השמה

x = y = 4 + z++ * 5 / (2 + 7)

9 9

45 5

9

9 9

תמו

דיק

מה הערך ?zשל

28 © כל הזכויות שמורות. מבוא למדעי המחשב

(casting)המרת טיפוסים מפורשת

. castingלהמרת טיפוסים מפורשת קוראים •

אזי ערך , 1שערכו intהוא ביטוי מטיפוס expאם •

.doubleוטיפוסו הוא 1.0הוא exp(double)הביטוי

/., *, -, +לאופרטור ההמרה יש קדימות גבוהה יותר מ •

:דוגמאות•

int i = 1, j = 2;

double x;

x = i / j;

x = (double)i / j;

x = i / (double)j;

x = (double)(i / j);

0.0

0.5

0.5

0.0

29 © כל הזכויות שמורות. מבוא למדעי המחשב

המרת טמפרטורה -דוגמה

100

90

80

70

60

50

40

30

20

10

0

-10

-20

-40

212 200

180

160

140

100

120

80

60

40

20

0

-20

32

-17.78

℉ ℃

T — Temperature F — Freezing point of water B — Boiling point of water

∆ — Increment above F

TC

TF Ff Bf

Fc

Bc

30 © כל הזכויות שמורות. מבוא למדעי המחשב

המרת טמפרטורה -דוגמה

100

90

80

70

60

50

40

30

20

10

0

-10

-20

-40

212 200

180

160

140

100

120

80

60

40

20

0

-20

32

-17.78

℉ ℃

T — Temperature F — Freezing point of water B — Boiling point of water

∆ — Increment above F

Tc − Fc

──── Bc − Fc

Tf − Ff

──── Bf − Ff

= ∆ =

Tc − 0

───── 100 − 0

Tf − 32

───── 212 − 32

=

Tc =

Tf − 32

───── 212 − 32

× 100

Tf =

Tc

── 100

× (212 − 32) + 32

31 © כל הזכויות שמורות. מבוא למדעי המחשב

C°-ל F°-תוכנית להמרה מ

#include <stdio.h>

#define CEL_BOIL 100

#define FAHR_FREEZE 32

#define FAHR_BOIL 212

int main()

{

int cel_temp, fahr_temp;

printf("Fahrenheit temperature: ");

scanf("%d", &fahr_temp);

cel_temp = (fahr_temp - FAHR_FREEZE)

/ (FAHR_BOIL - FAHR_FREEZE) * CEL_BOIL;

printf("%d\370F = %d\370C\n", fahr_temp, cel_temp);

return 0;

}

Bug!

(חלוקה בשלמים)

RUN

32 © כל הזכויות שמורות. מבוא למדעי המחשב

C°-ל F°-תוכנית להמרה מ

#include <stdio.h>

#define CEL_BOIL 100

#define FAHR_FREEZE 32

#define FAHR_BOIL 212

int main()

{

int cel_temp, fahr_temp;

printf("Fahrenheit temperature: ");

scanf("%d", &fahr_temp);

cel_temp = (fahr_temp - FAHR_FREEZE)

/ (FAHR_BOIL - FAHR_FREEZE) * CEL_BOIL;

printf("%d\370F = %d\370C\n", fahr_temp, cel_temp);

return 0;

}

Bug!

(חלוקה בשלמים)

RUN

-50 0 50 100 150 200 250 300-50

0

50

100

150

33 © כל הזכויות שמורות. מבוא למדעי המחשב

2ניסיון – C°-ל F°-תוכנית להמרה מ

#include <stdio.h>

#define CEL_BOIL 100

#define FAHR_FREEZE 32

#define FAHR_BOIL 212

int main()

{

double cel_temp, fahr_temp;

printf("Fahrenheit temperature: ");

scanf("%lf", &fahr_temp);

cel_temp = (fahr_temp - FAHR_FREEZE)

/ (FAHR_BOIL - FAHR_FREEZE) * CEL_BOIL;

printf("%.2f\370F = %.2f\370C\n", fahr_temp, cel_temp);

return 0;

}

מאיזה טיפוס כל

?ביטוי

RUN

34 © כל הזכויות שמורות. מבוא למדעי המחשב

תוכנייה

ומזהיםמשתנים קבועים •

טיפוסי מידע בסיסיים•

ביטויים•

ביטויים לוגיים•

35 © כל הזכויות שמורות. מבוא למדעי המחשב

ביטויים וערכי אמת

.ניתן גם לייחס ערך לוגי C-לכל ביטוי חשבוני שנכתוב ב•

.False, True: ערכי אמת בסיסיים•

:מייחסים לכל ביטוי ערך אמת באופן הבא Cבשפת •

.Falseאזי ערך האמת שלו הינו 0אם ערכו המספרי של הביטוי הינו –

.Trueאזי ערך האמת שלו הינו 0 -אם ערכו המספרי של הביטוי שונה מ–

ביטוי ערך אמת

True a

False a+b

False a+=b

True a=2*c

int a = 3,

b = -3, c = 1;

36 © כל הזכויות שמורות. מבוא למדעי המחשב

פעולות השוואה

:ששת אופרטורי ההשוואה•

== != < <= > >=

.לימין משמאל הינה ההשוואה אופרטורי של האסוציאטיביות•

ביטוי ערך שלם ערך אמת

F 0 a == b

F 0 b == a

T 1 b <= 8

T 1 a != b

T 1 0 < b < 8

T -2 a = b

F 0 b = a

int a = 0, b = -2;

?הפתעה )*(

37 © כל הזכויות שמורות. מבוא למדעי המחשב

אופרטורים לוגיים

מאפשרים ליצור ביטויים לוגיים •

:לדוגמה. מורכבים

(0 < b) && (b < 8) שם האופרטור משמעות לוגית

and &&

or ||

not !

!exp1 exp1 || exp2 exp1 && exp2 exp2 exp1

0 1 1 !=0 !=0

0 1 0 0 !=0

1 1 0 !=0 0

1 0 0 0 0

38 © כל הזכויות שמורות. מבוא למדעי המחשב

טבלת קדימויות ואסוציאטיביות

אסוציאטיביות סימן הפעולה סוג הפעולה

משמאל לימין ( ) סוגריים

מימין לשמאל sizeof (type) ! - + -- ++ פעולות אונאריות

משמאל לימין % / * פעולות כפל וחילוק

משמאל לימין - + פעולות חיבור וחיסור

משמאל לימין =< < => > פעולות יחס

משמאל לימין =! == פעולות השוואה

משמאל לימין && (and" )ו"פעולות

משמאל לימין || (or" )או"פעולות

מימין לשמאל : ? פעולת תנאי

מימין לשמאל =% =/ =* =- =+ = פעולות השמה

תמו

דיק

כבר הוצג קודם

39 © כל הזכויות שמורות. מבוא למדעי המחשב

(lazy evaluation)חישוב עצל –אופרטורים לוגיים

.האסוציאטיביות של האופרטורים הלוגיים הינה משמאל לימין•

.אופרטורים של השוואה קודמים לאופרטורים לוגיים•

חישוב ערכם של ביטויים בהם מופיעים אופרטורים לוגיים !שימו לב•

לדוגמה מתוך אתר . נעצר ברגע שערך הביטוי אינו ניתן לשינוי

:היכרויות

is_match = (age > 21) && (eyes == BLUE ||

hair == BLOND);

21אם הגיל אינו מעל

לא ממשיכים בבדיקה 21אם הגיל מעל

והעיניים כחולות לא

בודקים את צבע השיער

40 © כל הזכויות שמורות. מבוא למדעי המחשב

bool –בא לשכונה טיפוס חדש : C99תקן

#include<stdio.h>

#include<stdbool.h>

int main()

{

bool drunk = true;

bool has_driving_license = false;

if(!has_driving_license || drunk)

printf("Cannot drive!\n");