+ All Categories
Home > Documents > Počítače a programování 1

Počítače a programování 1

Date post: 19-Mar-2016
Category:
Upload: cole
View: 54 times
Download: 1 times
Share this document with a friend
Description:
Počítače a programování 1. P řednáška 3 7 .10.2013 Jiří Šebesta. T ÉMA. Číselné soustavy Základní struktura programu Algoritmy Data a proměnné. Číselné soustavy (1/2). Používané soustavy :. Obecná definice vyjádření :. Číselné soustavy (2/2). - PowerPoint PPT Presentation
25
T É MA a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad BPC1E: Počítače a programování 1 pro obor EST PŘEDNÁŠKA 3 Prezentace vznikla za podpory projektu: Komplexní inovace studijních programů a zvyšování kvality výuky na FEKT VUT v Brně OP VK CZ.1.07/2.2.00/28.0193
Transcript
Page 1: Počítače a programování  1

TÉMAa) Příkazy pro větvení

b) Příkazy pro cykly

c) Příkazy pro řízení přenosu

d) Příklad

BPC1E: Počítače a programování 1 pro obor EST

PŘEDNÁŠKA 3

Prezentace vznikla za podpory projektu:

Komplexní inovace studijních programů a zvyšování kvality výuky na FEKT VUT v BrněOP VK CZ.1.07/2.2.00/28.0193

Page 2: Počítače a programování  1

Příkazy pro větvení (1/7)Příkazy pro větvení (1/7)

if(test) statement; if(test) statement_this;else statement_that;

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");

• Podmíněný příkaz:

podmínka - pravdivá - nepravdivá

příkaz

Page 3: Počítače a programování  1

• Větvení typu if

Příkazy pro větvení (2/7)Příkazy pro větvení (2/7)

Page 4: Počítače a programování  1

• Větvení typu if - else

Příkazy pro větvení (3/7)Příkazy pro větvení (3/7)

Page 5: Počítače a programování  1

• Kombinované větvení if – else if – else

Příkazy pro větvení (4/7)Příkazy pro větvení (4/7)

Page 6: Počítače a programování  1

Test ? Statement_this : Statement_that;

• Podmínkový operátor ?:

podmínkapří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)Příkazy pro větvení (5/7)

Page 7: Počítače a programování  1

• 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)Příkazy pro větvení (6/7)

Page 8: Počítače a programování  1

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)Příkazy pro větvení (7/7)

Page 9: Počítače a programování  1

Příkazy pro cykly (1/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

Page 10: Počítače a programování  1

• for

Příkazy pro cykly (Příkazy pro cykly (22/9)/9)

Page 11: Počítače a programování  1

• Lichoběžníková aproximace: obsah pro jeden úsek:

• Příklad - numerická integrace

2

)()( 010100101

xfxfxxxfxxS xx

2

)()( 111)()1(

nnnnnnnnxnx

xfxfxxxfxxS

• Obecně:

• Integrál: je součet všech dílčích ploch pro jednotlivé úseky

Příkazy pro cykly (Příkazy pro cykly (33/9)/9)

Page 12: Počítače a programování  1

• Výpočet:

• Příklad - numerická integrace sin(x) pro interval 0 až π

2)11(0coscos)cos()sin( 00

xdxx

• 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 intervalint start = 3, stop = 100; // max. is 100

Příkazy pro cykly (Příkazy pro cykly (44/9)/9)

Page 13: Počítače a programování  1

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 (Příkazy pro cykly (55/9)/9)

Page 14: Počítače a programování  1

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)Příkazy pro cykly (6/9)

Page 15: Počítače a programování  1

• while

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

Page 16: Počítače a programování  1

do statement; while(test);

int code; // number for passworddo{ printf("Insert access code:\n");

scanf("%d", &code); //number from stdin to variable code

}while(code != 12345); // test of proper password 12345printf("\n\nAccess allowed");printf("\n\nInsert <space>+ENTER for exit");do //exit after <space> insertion

c=getchar();while (c!=' ');return 0;

• Cyklus do - while

Příklad: BPC1E_Ex24.c

Příkazy pro cykly (8/9)Příkazy pro cykly (8/9)

Page 17: Počítače a programování  1

• do - while

Příkazy pro cykly (9/9)Příkazy pro cykly (9/9)

Page 18: Počítače a programování  1

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; …;

}

Page 19: Počítače a programování  1

char c; int code, test, n=3; // n is the number of trialsdo{

printf("Insert access code:\n");scanf("%d", &code); //number from stdin to

variable coden--; //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)

Page 20: Počítače a programování  1

int num; //input numberint test, n, m=0;printf("Input number:");scanf("%d", &num); //number from stdin to variable numfor(n=2; n<=100; n++) //loop for n from 2 to 100{

test = (num%n==0); //test if n is dividerif(!test)

continue; //if not, next nprintf("\n%d", n); //if yes, print nm++; //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)

Page 21: Počítače a programování  1

• 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 (Příklad (11/4)/4)

int main(){ int rcars = 10; int wcars = 5; int ncars[30] = {7, 8, 8, 9, … 5, 6};

Page 22: Počítače a programování  1

Příklad (2/4)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; }

Page 23: Počítače a programování  1

Příklad (3/4)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;}

Page 24: Počítače a programování  1

Příklad (4/4)Příklad (4/4) • Výstup dopravní simulace:

Příklad: BPC1E_Ex27.c

Page 25: Počítače a programování  1

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


Recommended