580 likes | 590 Views
Assignments. איתחול משתנים. כאשר מגדירים משתנה ערכו הוא בלתי מוגדר, וצריכים להזהר בשימושו. על מנת להשתמש בהם צריך להציב ערך. קיימם 3 דרכים להצבה ערך : איתחול השמה קליטה ממשתמש קליטה מקובץ דוגמאות איתחול: int e = 7 , r = 34, t; double ab = 9.7; char c = `k. = זה לא שווה.
E N D
Assignments Department of Computer Science-BGU
איתחול משתנים • כאשר מגדירים משתנה ערכו הוא בלתי מוגדר, וצריכים להזהר בשימושו. • על מנת להשתמש בהם צריך להציב ערך. • קיימם 3 דרכים להצבה ערך : • איתחול • השמה • קליטה ממשתמש • קליטה מקובץ • דוגמאות איתחול: • int e = 7 , r = 34, t; • double ab = 9.7; • char c = `k Department of Computer Science-BGU
= זה לא שווה • האם זה אפשרי ? int a; a = a + 1; • כן – בסמנטיקה של השפה C • משמעות של הסימן = היא לא שיוויון אלא השמה! (assignment) Department of Computer Science-BGU
printf and scanf • printf – prints to the standard output (for example screen). • Can also accept variables and print their values. • scanf – gets values from the standard input (for example keyboard), and assigns them to variables. Department of Computer Science-BGU
printf - מדפיסה על המסך printf ("z=%d\n",z); • The sequence %d is a special sequence and is not printed! • It indicates to printf to print the value of an integer variable written after the printed string. • With many variables: printf ("zeros=%d- ones=%d-letters=%d\n",a , b, d); Department of Computer Science-BGU
טבלאות עם printf • printf (“%4d%7d\n”,a,b) • printf (“%8.2f%10.4g\n”,c,d) רוחב שדה של הדפסת המשתנים רוחב שדה של הדפסת המשתנים כולל הנקודה העשרונית מספר הספרות המודפסות אחרי הנקודה העשרונית Department of Computer Science-BGU
scanf– מקבל נתונים מהמשתמש scanf("%lf", &var); • הוראה זו ממתין עד שהמשתמש מקליד ערך מתאים וסוג המשתנה ובהמשך על enter . • הערך מאוחסן במשתנה בשם var. • משמעות &var היא הכתובת של המשתנה var בחלק של הזכרון מוגדר כמחסנית (stack). • ניתן לקבל ערכים לשניים או יותר משתנים ביחד:scanf("%lf%lf", &var1, &var2); Department of Computer Science-BGU
prinft/scanf - Conversion codes - %? • ? is replaced by a respective variable. • %c – a character • %d – an integer, %u – an unsigned integer. • %ld – a long integer. • %f – a float. • %lf – a double. • %g – a nicer way to show a double (in printf) • %x – an hexadecimal. • %s – a string . • %% - the ‘%’ character (in printf) Department of Computer Science-BGU
Operator \? • \n – New line. • \t – Tabulator space. • \\ - Symbol \ Department of Computer Science-BGU
Example /* Get a length in cm and convert to inches */ #include <stdio.h> void main() { double cm, inches; printf("Please enter length in centimeters: "); scanf("%lf",&cm); inches = cm / 2.54; printf(“%g centimeters are equal to %g inches\n", cm,inches); } Department of Computer Science-BGU
Exercise Write a program that accepts as input - • The Dollar-Shekel exchange rate • An integer amount of dollars and outputs - • The equivalent amount in Shekels Department of Computer Science-BGU
Solution #include <stdio.h> void main() { double shekels, xchange; int dollars; printf("Enter the US$-NIS exchange rate: "); scanf("%lf", &xchange); printf("Enter the amount of dollars: "); scanf("%d", &dollars); shekels = dollars * xchange; printf("%d dollars = %g shekels\n", dollars, shekels); } Department of Computer Science-BGU
char זה גם מספר • char variable is used to store a text character: • Letters. • Digits. • Keyboard signs. • Non-printable characters. • But also small numbers (0 to 255). Department of Computer Science-BGU
ASCII (American Standard Code for Information Interchange) • Every character is assigned a numeric code. • `` operator in C returns this code, `A`=65 • ASCII code 0 (NULL character) is important. • Note continuous sets of numbers, upper case and lower case characters. • Generally, you don't care about the numbers. • Look for the ASCII table in the course page. Department of Computer Science-BGU
דוגמא כאשר charזה גם מספר #include <stdio.h> void main(){ char i = 'b'; printf("i as a character is %c\n", i); // print b printf("i as an integer is %d\n", i); // print 98 printf("The character after %c is %c\n", i, i + 1); // b c } Department of Computer Science-BGU
דוגמא נוספת /* Get the position of a letter in the abc */ #include <stdio.h> void main() { char letter; printf("Please enter a lowercase letter\n"); scanf("%c", &letter); printf("The position of this letter in the abc is %d\n", letter-'a'+1); } Department of Computer Science-BGU
תרגיל Write a program that accepts as input – • A lowercase letter and outputs – • The same letter in uppercase (e.g., if the input is ‘g’, the output should be ‘G’) Department of Computer Science-BGU
פתרון /* Convert a letter to uppercase */ #include <stdio.h> void main() { char letter; printf("Please enter a lowercase letter\n"); scanf("%c", &letter); printf("This letter in uppercase is %c\n", letter-'a'+’A’); } Department of Computer Science-BGU
Arithmetic operators • An operator is an action (in our case, usually a mathematical one) performed on something (e.g. constants, variables). • That “something” is called an operand. • Common operators: • Braces () • Assignment = • Addition + • Subtraction - • Multiplication * • Division / • Modulo % Department of Computer Science-BGU
לפתור את החידה ! • Suppose a program’s execution reaches the following line : scanf(“%d%c”, &i, &ch); • And suppose the user input is – 100 b • What will be the contents of i and ch? • Answer • i = 100 • ch = ‘ ‘ (there’s a space in there) כאן יש רווח Department of Computer Science-BGU
Spaces in scanf • One way to overcome this problem is to introduce a space before the %c – scanf(“%d %c”, &i, &ch); • The space tells scanf to ignore all whitespace characters that come after the %d is read Department of Computer Science-BGU
Operations with different types For example - • 3 + 4 = 7 • 3.0 + 4 = 7.0 • 3 / 4 = 0 • 3.0 / 4 = 0.75 Department of Computer Science-BGU
Casting • לפעמים אנו משתמשים במשתנה מסוג אחד בפעולה שרוצים לקבל משתנה מסוג אחר. • צריכים לבצע casting לסוג החדש • אופרטור casting הוא מסוג (type) Department of Computer Science-BGU
Casting #include <stdio.h> void main() { int a=1, b=2; printf("%d / %d = %d\n", a, b, a/b); // print 0 printf("%d / %d = %g\n", a, b, (float)a / b); // print 0.50 } Department of Computer Science-BGU
דוגמא – מה השתבש ? #include <stdio.h> void main(){ int a = 10; int b = 20; printf("The average of %d and %d is %d\n", a, b, (a + b) * (1 / 2)); } Ouput: The average of 10 and 20 is 0 Department of Computer Science-BGU
האם זה עובד ? #include <stdio.h> void main(){ int a = 10, b = 20; printf ("The average of %d and %d is %d\n", a, b, (a + b)*(1.0 / 2)); } Ouput: The average of 10 and 20 is 0 Department of Computer Science-BGU
זה עובד !! #include <stdio.h> void main(void) { int a = 10; int b = 20; printf ("The average of %d and %d is %f\n", a, b, (a + b)*(1.0 / 2)); } Ouput: The average of 10 and 20 is 15.0000 Department of Computer Science-BGU
Incremental operators • Used as a short-hand for incrementing (or decrementing) variables. i++ or ++i== i = i + 1 i-- or --I == i = i – 1 i += a==i = i + a i -= a== i = i - a i *= a==i = i * a i /= a== i = i / a Department of Computer Science-BGU
Prefix ++i and postfix i++ #include <stdio.h> void main() { int i=5; printf("i++=%d\n",i++); // print 5 printf(“++i=%d\n",++i); // print 7 } Department of Computer Science-BGU
משפטי תנאי Department of Computer Science-BGU
דוגמא של מבנה ? Department of Computer Science-BGU
True or false • In C, every expression has a numeric value • An expression is ‘true’ when its non-zero • If it is zero, it is ‘false’ Department of Computer Science-BGU
אופרטורים יחס • They are – • A == B (Note the difference from A = B) • A != B • A < B • A > B • A <= B • A >= B • The value of logical expression is non-zero if it’s true, zero if it’s false Department of Computer Science-BGU
אופרטורים לוגיים • Allows to evaluate two or more expressions - • A && B – ‘and’ - True when both A and B are true • A || B – ‘or’ (inclusive or) - True when either A or B (or both) are true • !A – ‘not’ - True when A is not, and vice versa. Department of Computer Science-BGU
AND - && Department of Computer Science-BGU
OR - || Department of Computer Science-BGU
NOT - ! Department of Computer Science-BGU
Logical Expressions • There are logical order in the expressions(similar to the algebraic order) • && - similar to * • || - similar to + • ! - similar t0 negative • (A <= B) && (N != M) || (Y > Z) is different from (A <= B) && ((N != M) || (Y > Z)) Department of Computer Science-BGU
משפטי תנאי • ביצוע של משפטי תנאי מבוסס על ערך לוגי של ביטוי. • ביטוים אלה נקראיים : controlling expression . • משפט תנאי if • משפט תנאי switch Department of Computer Science-BGU
משפט תנאי if • used to execute conditionally a statement or block of code. if (expression) statement • If expression is true, statement is executed (what is true?). • statement can be replaced by a block of statements, enclosed in curly braces. if (expression) { statements … } Department of Computer Science-BGU
דוגמא /* This program displays the absolute value of a number given by the user */ #include <stdio.h> void main() { double num; printf("Please enter a real number: "); scanf("%lf", &num); if (num<0) num = -num; printf("The absolute value is %g\n", num); } Department of Computer Science-BGU
משפט תנאי if – else if (expression) statement1 (or block of statements) else statement2 (or block of statements) • if expression is true, statement1 is executed. • if expression is false, statement2 is executed • both statements can be (and very often are) replaced by blocks of statements (“compound statements”) Department of Computer Science-BGU
דוגמא ( חלק מתכנית) int first, second, min; /* … */ if (first < second) { min = first; printf ("The first number is smaller than the second.\n"); } else { min = second; printf ("The second number is smaller than the first\n"); } printf("The smaller number is equal to %d\n", min); /* … */ Department of Computer Science-BGU
דוגמא נוספת int a, b; printf("Enter two Numbers\n"); scanf("%d%d", &a, &b); if (a == b) { printf("The numbers equal %d\n", a); printf("The expression a == b is %d\n", a == b); } else { printf("The numbers are not equal\n"); printf("The expression a == b is %d\n", a == b); } Department of Computer Science-BGU
אופרטור = במשפטי תנאי • The assignment operator is also an operator. Hence, expressions involving it have a numeric value. • This value equals to whatever appears on the right of the assignment operator • For example – • (x = 4) equals 4 -> true • (y = 0) equals 0 -> false Department of Computer Science-BGU
A very common mistake • Very often a programmer might confuse between the equality operator and the assignment operator - • if (x==4) … • if (x=4) … • The second is usually a mistake, but legal in C so the compiler doesn’t call it! Department of Computer Science-BGU
Else-if • if statements distinguish between exactly 2 cases and execute different code in each case • The else-if construction allows for a multi-way decision Department of Computer Science-BGU
Else-if if (expression) statement else if (expression) statement else if (expression) statement else statement Department of Computer Science-BGU
An example if (grade >= 90) printf ("A\n"); else if (grade >= 80) printf ("B\n"); else if (grade >= 70) printf ("C\n"); else if (grade >= 60) printf ("D\n"); else printf ("F\n"); Department of Computer Science-BGU
אופרטור: ? expr1? expr2: expr3 • If expr1 is true (non-zero), expr2 is evaluated. Otherwise, expr3 is evaluated Department of Computer Science-BGU