Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.

Podobné prezentace


Prezentace na téma: "OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače."— Transkript prezentace:

1 OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST BPC1E PŘEDNÁŠKA 4

2 Příkazy pro větvení (1/7) if(test) statement; if(test) statement_this; else statement_that; char day = '1'; if(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"); Podmíněný příkaz: podmínka - pravdivá - nepravdivá příkaz

3 Větvení typu if Příkazy pro větvení (2/7)

4 Větvení typu if - else Příkazy pro větvení (3/7)

5 Kombinované větvení if – else if – else Příkazy pro větvení (4/7)

6 Test ? Statement_this : Statement_that; Podmínkový operátor ?: podmínka příkaz pro pravdivost příkaz pro nepravdivost Výběr z větší hodnoty: Příklad: BPC1E_Ex19.c int a, b, c; a = 3; b = 9; c = (a > b) ? a : b; // c = 9 // if (a>b) c = a; // else c = b; Příkazy pro větvení (5/7)

7 Přepínač swich-case : pro případy, kdy vybíráme z více než dvou možností výraz s výsledkem celočíselné hodnoty 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; } vystoupení z přepínače - není povinné příkaz vykonaný v případě jakékoli jiné hodnoty value Příkazy pro větvení (6/7)

8 printf("Which girl should go to the cinema with me?\n"); srand(time(NULL)); switch(rand()%9)// random number from 0 to 8 { case 0: printf("Jana"); break; //if rand()%9 is 0 case 1: printf("Eva"); break; //if rand()%9 is 1 case 2: printf("Klara"); break; //if rand()%9 is 2 case 3: printf("Milena"); break; //if rand()%9 is 3 case 4: printf("Dominika"); break; //if rand()%9 is 4 case 5: printf("Erika"); break; //if rand()%9 is 5 case 6: printf("Petra"); break; //if rand()%9 is 6 case 7: printf("Zuzana"); break; //if rand()%9 is 7 default: printf("alone"); //if rand()%9 is not from 0 to 7, i.e. 8 } Přepínač – příklad Příklad: BPC1E_Ex20.c Příkazy pro větvení (7/7)

9 Příkazy pro cykly (1/9) Ani jeden parametr není povinný: for( ; ; ) je nekonečná smyčka 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 if(text[n]!=' ') // excluding space text[n] -= 2; // character code shift printf("%s\n", text); Cyklus for Příklad: BPC1E_Ex21.c

10 for Příkazy pro cykly (2/9)

11 Lichoběžníková aproximace: obsah pro jeden úsek: Příklad - numerická integrace Obecně: Integrál: je součet všech dílčích ploch pro jednotlivé úseky Příkazy pro cykly (3/9)

12 Výpočet: Příklad - numerická integrace sin(x) pro interval 0 až π Program: #include #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 Příkazy pro cykly (4/9)

13 Příklad: BPC1E_Ex22.c 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); } return 0; } Příkazy pro cykly (5/9)

14 while(test) statement; Cyklus while float temp[31]={-1.1,-0.3,-7.6,-2.7,-1.2,-2.6,-3.3, … … 2.4 };//day temperatures in January unsigned int day = 1; while(temp[day–1]<=0) // pass the loop while temp<=0 day++; printf("%d. January temperature ovecomes 0, it was %3.1f deg. C!\n", day, temp[day-1]); return 0; Princip totožný s for (inicializace a inkrementace mimo hlavičku) Příklad: BPC1E_Ex23.c Příkazy pro cykly (6/9)

15 while Příkazy pro cykly (7/9)

16 do statement; while(test); int code;// number for password do {printf("Insert access code:\n"); scanf("%d", &code); //number from stdin to variable code } while(code != 12345); // test of proper password 12345 printf("\n\nAccess allowed"); printf("\n\nInsert +ENTER for exit"); do//exit after insertion c=getchar(); while (c!=' '); return 0; Cyklus do - while Příklad: BPC1E_Ex24.c Příkazy pro cykly (8/9)

17 do - while Příkazy pro cykly (9/9)

18 Příkazy pro přenos řízení (1/3) Použití: – těla cyklů ( for, do, while ) – tělo přepínače ( switch ). Přerušení vykonávaného iteračního cyklu: – break : vystoupení z celého cyklu – continue : pokračování další iterací Příkazy continue a break for/do/while/switch-case {…; if(…) break; if(…) continue; …; }

19 char c; int code, test, n=3; // n is the number of trials do { printf("Insert access code:\n"); scanf("%d", &code); //number from stdin to variable code n--; //decrementation of the number of trials test=(code == 12345); // test of proper password ”12345” if((test==0)&&(n==0))break; // if no proper // code and 3 trials done - acces denied } while(!test); // in test is info about access, // 0 means denied, 1 means allowed break – př. test vstupního hesla s omezeným počtem testů Příklad: BPC1E_Ex25.c Příkazy pro přenos řízení (2/3)

20 int num; //input number int test, n, m=0; printf("Input number:"); scanf("%d", &num); //number from stdin to variable num for(n=2; n<=100; n++) //loop for n from 2 to 100 { test = (num%n==0); //test if n is divider if(!test) continue; //if not, next n printf("\n%d", n); //if yes, print n m++; //number of dividers – incr. } printf("Number of dividers: %d\n", m); continue – př. hledání dělitelů Příklad: BPC1E_Ex26.c Příkazy pro přenos řízení (3/3)

21 Sestavte program pro simulaci dopravní situace. Ze simulované světelné křižovatky (jeden příjezd) odjede každou minutu rcars automobilů, v proměnné wcars je počáteční stav čekajících aut, v poli ncars je uveden počet aut, které každou minutu přijedou ke křižovatce a v proměnné mcars je maximální počet aut čekajících před křižovatkou, aniž by došlo ke kolapsu (auta by zůstali stát v předcházející křižovatce). V proměnných hours a mins je aktuální čas počátku simulace. Simulátor nechť zobrazuje graficky i číselně stav aut stojících před křižovatkou a současně určuje, zda nedošlo ke kolapsu a nebo kdy došlo ke kolapsu. Příklad (1/4) int main() { int rcars = 10; int wcars = 5; int ncars[30] = {7, 8, 8, 9, … 5, 6};

22 Příklad (2/4) int mcars=95; int hours=7; //start at 7:50 int mins=50; int inc=30; int i, j; for(i=0; i<inc; i++) { wcars+=ncars[i]-rcars; if(wcars<0) wcars=0; mins++; if(mins==60) { mins=0; hours++; if(hours==24) hours=0; }

23 Příklad (3/4) if(mins>=10) printf("%d:%d ", hours, mins); else printf("%d:0%d ", hours, mins); for(j=0; j<wcars; j++) printf("%c", 219); printf(" %d\n", wcars); if(wcars>mcars) { printf("Traffic breakdown arises at %d:%d.\n", hours, mins); break; } if(wcars<=mcars) printf("Traffic breakdown will not arise.\n"); return 0; }

24 Příklad (4/4) Výstup dopravní simulace: Příklad: BPC1E_Ex27.c

25 Téma následující přednášky DĚKUJI ZA POZORNOST – Řetězce – Funkce stdio.h pro řetězce – Funkce string.h pro řetězce – Příklady


Stáhnout ppt "OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače."

Podobné prezentace


Reklamy Google