1 / 34

Computers and Programming CPC

Computers and Programming CPC. The 2 nd lecture Jiří Šebesta. TOPIC. Expressions Arithmetic conversions Operators Statements in C – introduction Selection statements Iteration statements I. Expressions (1/3). Operand: variable, constant or function calling returning a value.

zed
Télécharger la présentation

Computers and Programming CPC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computers and Programming CPC The 2nd lecture Jiří Šebesta

  2. TOPIC Expressions Arithmetic conversions Operators Statements in C – introduction Selection statements Iteration statements I.

  3. Expressions (1/3) • Operand: • variable, constant or function calling returning a value Expression: serves to computing value consists of operands and operators • Operator: • symbol defining anarithmetic, logic, assignment, comparison and other operation using operands

  4. Expressions (2/3) int main(void) { int y1, y2, a=10, b=6; char c; y1 = a + b; // a, b are operands y2 = a / b; // +, / are operators printf("%3d\n", y1); printf("%3d\n", y2); scanf("%c", &c); return 0; } Operandsas variables Example: Ex06.c + Ex07.c

  5. Expressions (3/3) ... #include "math.h"// library for math. functions int main(void) { double y, x=10000.2501; char c; y = sqrt(x); printf("Square root of %10.4f is %10.8f\n", x, y); scanf("%c", &c); return 0; } Operands as returning value from function calling Example: Ex08

  6. Arithmetic conversions (1/2) • All operands of the type … • …char, shortconverted toint • …floatconverted todouble • If one operand is of the type … • …double, the second converted todouble • …long, the second converted tolong • …unsigned, the 2nd converted tounsigned

  7. Arithmetic conversions (2/2) int a, b, c; float d, e; char f = 'A'; a = 3/5; // {int} = {int}/{int} b = 3/5.0; // {int} = {int}/{float} c = f+1; // {int} = {char->int}+{int} d = 3/5; // {float} = {int}/{int} e = 3/5.0; // {float} = {int}/{float} printf("%3d\n", a);// 0 printf("%3d\n", b);// 0 printf("%3d\n", c);// 66 (ASCII of 'A' is 65) printf("%6.2f\n", d);// 0.00 printf("%6.2f\n", e);// 0.60 Example: arithmetic conversion Example: Ex09.c

  8. int a=1, b=6; a = -a; //changing sign b = !b; //negation printf("%3d\n", a);//-1 printf("%3d\n", b);//0 Operators (1/10) • Unary (a single operand): • changing a sign; • logic negation; • etc. • Binary (two operands): • arithmetic (addition, division, …); • logic (and, or, xor, …); • comparison (>, , ==, , <, , …); • assignment (=, …). int a=1, b=6, c, d, e; c = a<=b; d = a!=b; //not equal e = a==b; printf("%3d\n", c);//1 printf("%3d\n",d);//1 printf("%3d\n",e); //0 Example: Ex10.c + Ex11.c

  9. Operators (2/10) Arithmetic

  10. Example: priority ofarithmetic operators (highernumberin col. of priority = lower priority) Operators (3/10) int a=3, b=12, c=7; intx, y,z; x=-a + b % c;//-3 + (12 % 7) = -3 + 5 = 2 y =-(a + b) % c;//-(3 + 12) % 7 = -15 % 7 = -1 z=(-a + b) % c;//(-3 + 12) % 7 = 9 % 7 = 2 printf("%3d\n",x); printf("%3d\n", y); printf("%3d\n",z); Example: Ex12.c

  11. Comparison Operators (4/10) inta =1, b =6, c, d, e; c = a <= b;//a is smaller or equals b, c = 1 d = a != b;//a does not equal b, d = 1 e = a == b;//a equals b, e = 0 Example: Ex13.c

  12. results of comparison operator • 0 = false • or • 1 = true • comparison operators can be used in complex expressions for testing of complicated conditions Operators (5/10) int a=3, b=12, c=7; x= a + b == c;//(3 + 12) == 7 => x = 0 y = a +(b == c);//3 + (12 == 7) = 3 + 0 => y = 3 z= a <= b + c != a;//(3 <= (12 + 7)) != 3 =//(3 <= 19) != 3 => z = 1; Example: Ex14.c

  13. Logic Operators (6/10) int a=3, b=12, c=7; x=!a || b;//!3 || 12 => 0 || 1 => x = 1 y =!(a || b);//!(3 || 12) => !(0 || 1) => y = 0 z= a || b && c;//3 || (12 && 7) => 0 || (1 && 1) //=> z = 1 Example: Ex15.c

  14. Bit-wise Operators (7/10) int b=12, c=7; x= b >>2;//1100b => 0011b = 3 y = b & c;//1100b & 0111b = 0100b = 4 z= b ^ c;//1100b ^ 0111b = 1011b = 11 Example: Ex16.c

  15. Truth table for bit-wise operators Operators (8/10)

  16. Increment / decrement Operators (9/10) double r1, r2, a1=5.1, a2=5.1, b=4.2; r1 = a1++ + b; //r1 = 5.1 + 4.2 = 9.3 //a1 = a1 + 1 = 6.1 r2 = ++a2 + b; //a2 = a2 + 1 = 6.1 //r2 = 6.1 + 4.2 = 10.3 printf("%6.2f\n", a1); printf("%6.2f\n", r1); printf("%6.2f\n", a2); printf("%6.2f\n", r2); Increment, decrement:priority = 2 Example: Ex17.c

  17. Assignment Operators (10/10) double r1=2.2, r2=3.3, a1=4.4, a2=5.5; int s1=4, s2=4; r1 += a2-a1;//r1=r1+(a2-a1) r2 /= a2-a1;//r2=r2/(a2-a1) printf("%6.2f\n", r1); printf("%6.2f\n", r2); s1 <<= 2;//00000100b=> 00010000b s2 >>= 2;//00000100b=> 00000001b printf( "%3d\n", s1); printf( "%3d\n", s2); Example: Ex18.c

  18. Statements – introduction (1/4) • If a statement does not cause • control transfer to another part of the program • program interruption • then statements are executed sequentially Program:a sequence of statements (incl. expression statements, e.g. function calling) • Standard statement (ANSII C/C++): given by the reserved word(e.g. for, if, else) • notice: reserved words are blue in MS Visual Studio or Code:Blocks –they may not be used as names of variables

  19. Empty statement Statements – introduction (2/4) if(err) goto end; // in case of error go to end c++; // otherwise increment end: ; // label and empty command an empty block {} hasthe same meaning as a empty statement • Expression statement: • assignments • function calling • etc.

  20. Expression statement – an example Statements – introduction (3/4) C++ ; A = cos(b) + c; Compound statement:a sequence of statements closed in braces – {stat1; stat2; stat3;} • Compound statementcan contain another compound statement: • a nested block • a superior block

  21. Compound statements – an example Statements – introduction (4/4) int main( void) { char text[40] = "The momentary laps of ..."; int n, conv = 0; for(n=0; n<strlen(text); n++) { if( text[n]=='') { text[n+1] = text[n+1] - 32; conv++; } } printf("Mod.:%s (%d changed)",text, conv); getchar(); return 0; }

  22. Selection statements (1/7) if(test) statement; if(test) statement_this; else statement_that; condition - true - false Conditioned statement: char day = '1'; if(day<48 || day >57) printf("Not a number\n"); else if(day>48 && day<56)// 1,2,3,…7 printf("Now is the %cth day\n", day); else printf("An invalid day number\n");

  23. Selection statements (2/7) if

  24. Selection statements (3/7) if - else

  25. Selection statements (4/7) if – else if – else

  26. Selection statements (5/7) Test?Statement_this :Statement_that; statement for true condition statement for false condition condition Selection of higher value: Ternary condition ?: (operator) int a,b,c; a =3; b =9; c =(a>b) ? a : b;// c = 9 // if (a>b)c = a; // else c = b; Example: Ex19.c

  27. Selection statements (6/7) expression with integer value switch(value) { case 1 : statement_1; break; case 2 : statement_2; break; case 3 : statement_3; break; case 4 : statement_4; break; default: statement_other; } Switch statement:when choosing from more than two possibilities • leaving • the switch body expression in case of another value

  28. Selection statements (7/7) printf("Which girl should go to the cinema with me?\n") srand(time(NULL)); switch(rand()%9)// random number from 0 to 8 { case0: printf("Jana");break;//if rand()%9 is 0 case1: printf("Eva");break;//if rand()%9 is 1 case2: printf("Klara");break;//if rand()%9 is 2 case3: printf("Milena");break;//if rand()%9 is 3 case4: printf("Dominika");break;//if rand()%9 is 4 case5: printf("Erika");break;//if rand()%9 is 5 case6: printf("Petra");break;//if rand()%9 is 6 case7: printf("Zuzana");break;//if rand()%9 is 7 default: printf("alone");//if rand()%9 is not from 0 to 7, i.e. 8 } Switch statement – an example Example: Ex20.c

  29. for Iteration statements I. (1/5) for(init; test; update) statement; char text[] = "Vjku\"oguucig\"ku\"ugetgv#"; unsigned int n; for(n=0; text[n]!='\0'; n++)// loop for all chars in str if(text[n]!='') // excluding space text[n] -= 2;// character code shift printf("%s\n", text); None parameter is compulsory:for( ; ; ) is an infinite loop Example: Ex21.c

  30. for Iteration statements I. (2/5)

  31. Example - numeric integration Iteration statements I. (3/5)  Trapezoid approximation:area for one section: • Generally: •  Integral: • is a sum of all partial areas for all sections

  32. Example - numeric integration of sin(x) for interval from 0 to π Iteration statements I. (4/5) •  Program: #include <stdio.h> #include <stdlib.h> #include <math.h> #define pi 3.141529 int main(void) { double a[101], f[101];//a = angle, f = func. value int n, i; double sum = 0, step;//step = lenght of interval int start = 3, stop = 100; // max. is 100 Calculation:

  33. Iteration statements I. (5/5) for(n=start;n<=stop;n++) { sum = 0; for(i=0;i<=n;i++) { a[i] = 180.0*i/(n*1.0); f[i] = sin(a[i]*pi/180.0); } step = pi/(1.0*n); for(i=0;i<n;i++) sum += f[i]*step + (f[i+1]-f[i])*step/2.0; printf("\nFor %d intervals is integral %10.8f.", n, sum); } Example: Ex22.c

  34. TOPIC OF THE NEXTLECTURE Statements II. Strings Libraries stdio.h and string.h THANK YOUFOR YOUR ATTENTION

More Related