Procedurálne programovanie

Содержание

Слайд 2

ACM ICPC je opäť tu! Lokálne kolo programátorskej súťaže na STU

ACM ICPC je opäť tu!

Lokálne kolo programátorskej súťaže na STU v

rámci
CTU Open Contest
27. - 28. 10. 2017

www.fiit.stuba.sk/acm

Pošli registračný e-mail na acm.icpc@fiit.stuba.sk
do stredy 25. 10. 2017 do 18.00 hod.
Viac informácii na:

Слайд 3

Obsah prednášky Opakovanie riadiace štruktúry príkazy vetvenia (?:, if-else, switch) príkazy cyklov (while, do-while, for) príklady

Obsah prednášky

Opakovanie
riadiace štruktúry
príkazy vetvenia (?:, if-else, switch)
príkazy cyklov (while, do-while,

for)
príklady
Слайд 4

Cieľ prednášky Naučiť sa: vytvárať bloky príkazov zapisovať podmienky definovať a

Cieľ prednášky

Naučiť sa:
vytvárať bloky príkazov
zapisovať podmienky
definovať a riadiť cykly s podmienkami

na začiatku aj na konci cyklu
používať vnorené cykly
Слайд 5

Ako byť dobrým programátorom? Úlohou programátora je vytvoriť riešenie problému využitím

Ako byť dobrým programátorom?

Úlohou programátora je vytvoriť riešenie problému využitím počítačového

programu
Program môže byť opakovane použitý pre rôzne výskyty toho istého problému.
Programátor musí:
Porozumieť problému
Vymyslieť a navrhnúť riešenie
Vyjadriť riešenie v programovacom jazyku
Najlepší programátori PRAVIDELNE robia chyby.
Väčší riešený problém rozdeľte na menšie podproblémy (funkcie). Programujte po malých kúskoch, a každý kúsok si dôsledne overte, či je správny.
Слайд 6

PROCEDURÁLNE PROGRAMOVANIE Opakovanie

PROCEDURÁLNE PROGRAMOVANIE
Opakovanie

Слайд 7

Ako sa vykonáva tento jednoduchý program v pamäti? #include int main()

Ako sa vykonáva tento jednoduchý program v pamäti?

#include
int main()
{
int a,b,c;
scanf("%d %d",

&a, &b);
c = a+b;
printf("a = %d, b = %d, c = %d", a,b,c);
return 0;
}

Príklad
Pamäť

???

Слайд 8

Premenné a rozsah ich platnosti (bloky) Kde inicializovať premenné? Premenná -

Premenné a rozsah ich platnosti (bloky) Kde inicializovať premenné?

Premenná - previazanie pamäti

s nejakým menom
Deklarácia: int a, b, c; -- tri (rôzne) premenné typu int
Program môže mať rôznu dĺžku a štruktúru...
Rozsah platnosti premenných nám hovorí, kde v programe môžeme meno premennej použiť, a s ktorou pamäťou je meno premennej previazané
Blok – časť kódu, ktorá je zoskupená spolu, typicky ohraničená zloženými zátvorkami { }
Príklad (rozsah platnosti premenných vyznačený stĺpcami): int a = 5, c ; if (...) { int b = 4; c = 20; } b = b+1;

b

a
c

CHYBA premenná b na tomto mieste neexistuje!!!

Слайд 9

Rozsah platnosti premenných lokálna, globálna premenná Blok – rozsah platnosti v

Rozsah platnosti premenných lokálna, globálna premenná

Blok – rozsah platnosti v rámci bloku


Funkcia – rozsah platnosti v rámci volania funkcie (resp. v rámci bloku tela funkcie)
Globálny – rozsah platnosti vo všetkých funkciách
Čo ak v rozličných rozsahoch platnosti je premenná rovnakého názvu? Ak je x v globálnom rozsahu (globálna premenná x) a deklarujeme aj nejakú novú premennú x vo funkcii (lokálna premenná x), tak sa vo funkcii vyhradí nová pamäť pre premennú x v rozsahu platnosti funkcie a v čase vykonávania tejto funkcie do globálneho x nie je možné prostredníctvom mena ‘x’ zapisovať
Názorný príklad ukladania globálnej a lokálnej premennej do pamäte.
Слайд 10

Typová konverzia Typ premenných – nutné určiť Pri zmene typu premennej

Typová konverzia

Typ premenných – nutné určiť
Pri zmene typu premennej počas vykonávania

programu je nutná typová konverzia (pretypovanie premennej).
Implicitná (samovoľná, automatická )
Explicitná (vynútená, požadovaná)
Слайд 11

príklad zaokrúhľovanie, alebo odstránenie desatinnej časti reálneho čísla #include int main(void)

príklad zaokrúhľovanie, alebo odstránenie desatinnej časti reálneho čísla

#include
int main(void)
{
double

realne;
int cele;
printf("Zadaj realne cislo: ");
scanf("%lf", &realne);
printf("Vypis cisla bez desatinnej casti:\n");
printf("1.: %.0lf (format tlace - zaokruhluje)\n", realne);
printf("2.: %d (explicitna typova konverzia)\n", (int)realne);
cele = realne;
printf("3.: %d (implicitna typova konverzia)\n",cele);
return 0;
}

Vyskúšajte možnosť použitia knižnice
#include
a funkcií
floor(realne); a ceil(realne); round(realne);

Слайд 12

Pozor na rozdiel medzi = a == = symbol priradenia ==

Pozor na rozdiel medzi = a ==

= symbol priradenia
== symbol porovnania
Int

a,b;

int a,b;
a = b;
if(a == b)
{

}

Слайд 13

príklad1: skrátené vyhodnocovanie výrazov Čo vypíše program? #include int main(void) {

príklad1: skrátené vyhodnocovanie výrazov

Čo vypíše program?

#include
int main(void)
{

int i = 20, j = 4;
if ((i %= j) && ++j == 5)
printf ("Logicky sucin\n");
printf("i: %d j: %d\n", i, j);
return 0;
}
Слайд 14

príklad2: skrátené vyhodnocovanie výrazov Čo vypíše program? #include int main(void) {

príklad2: skrátené vyhodnocovanie výrazov

Čo vypíše program?

#include
int main(void)
{
int i =

15, j = 5;
if ((i %= j)==0 || ++j)
printf("i = %d j = %d\n", i, j);
else
printf("i = %d j = %d\n", i+1, j+1);
return 0;
}
Слайд 15

príklad3: skrátené vyhodnocovanie výrazov Čo vypíše program? #include int main() {

príklad3: skrátené vyhodnocovanie výrazov

Čo vypíše program?

#include
int main()
{
int i = -1,

j = 0, k = 1;
if (i++ && !j || k++)
j++;
if (i++ || j && !i || k++)
j++;
printf("%d %d %d\n", i, j, k);
return 0;
}
Слайд 16

Opakovanie príklad if #include int main() { int c; if( c=getchar()

Opakovanie príklad if

#include
int main()
{
int c;
if( c=getchar() >='0'

&& c <='9')
printf("cislica");
return 0;
}

program načíta znak z klávesnice a ak je to číslica, vypíše správu

Kde je chyba?

( )

Слайд 17

Opakovanie if else #include int main (void) { char c; printf

Opakovanie if else

#include
int main (void)
{
char c;
printf ("Zadaj znak:\n");

scanf ("%c", &c);
if ( (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') )
printf ("Abecedny znak\n");
else if ( c >= '0' && c <= '9' )
printf ("Cislica\n");
else
printf ("Specialny znak\n");
return 0;
}
Слайд 18

Opakovanie príklad: priestupný rok program zistí, či rok je priestupný Rok

Opakovanie príklad: priestupný rok

program zistí, či rok je priestupný

Rok je priestupný,

ak je deliteľný 4
Rok, ktorý je deliteľný 100 nie je priestupný
Rok, ktorý je deliteľný 400 je priestupný
1700, 1800, 1900, 2100 a 2200 nie sú priestupné 

Ako by sme to prepísali do jednej podmienky (jedna if-else konštrukcia)

Слайд 19

#include int main() { int rok; printf("Zadajte rok: "); scanf("%d", &rok);

#include
int main()
{
int rok;
printf("Zadajte rok: ");
scanf("%d", &rok);
if(((rok % 4 ==

0)&&(rok % 100 != 0))||(rok % 400 == 0))
printf("%d je priestupny rok", rok);
else
printf("%d nie je priestupny rok", rok);
return 0;
}

Príklad: priestupný rok

Слайд 20

Riadiace štruktúry Viacnásobné vetvenie Cykly

Riadiace štruktúry

Viacnásobné vetvenie
Cykly

Слайд 21

Mnohonásobné vetvenie if (c == 'a') ... else if (c ==

Mnohonásobné vetvenie

if (c == 'a')
...
else if (c == 'b')

...
else if (c == 'c')
...
else if (c == 'd')
...
else
...

jednoduchšie: príkazom switch

Слайд 22

Príkaz switch výraz, podľa ktorého sa rozhoduje, musí byť typu int

Príkaz switch

výraz, podľa ktorého sa rozhoduje, musí byť typu int


každá vetva by mala byť ukončená príkazom break
v každej vetve môže byť viac príkazov, ktoré nie je nutné uzatvárať do zátvoriek
vetva default - vykonáva sa, keď žiadna iná vetva nie je splnená

switch (vyraz) {
case hodnota_1 : prikaz_1; break;
...
case hodnota_n : prikaz_n; break;
default : prikaz_def; break;
}

Слайд 23

Príklad Jednoduchá kalkulačka Po vybraní typu operácie budú zadané hodnoty operandov

Príklad
Jednoduchá kalkulačka
Po vybraní typu operácie budú zadané hodnoty operandov a vypočítaný

výsledok.
Použitie príkazu switch
Слайд 24

#include int main() { int operacia, n1, n2, vysledok; printf("Aku operaciu

#include
int main()
{
int operacia, n1, n2, vysledok;
printf("Aku operaciu chcete vykonat?\n");
printf("stlac 1

na scitanie\n");
printf("stlac 2 na odcitanie\n");
printf("stlac 3 na nasobenie\n");
printf("stlac 4 na delenie\n");
scanf("%d", &operacia);
printf("Zadaj prve cislo\n");
scanf("%d", &n1);
printf("Zadaj druhe cislo\n");
scanf("%d", &n2);

Pokračovanie ->

Слайд 25

switch(operacia) { case 1: vysledok = n1+n2; printf("Vysledok scitania je %d\n",

switch(operacia)
{
case 1: vysledok = n1+n2;
printf("Vysledok scitania je %d\n", vysledok);
break;
case 2: vysledok

= n1-n2;
printf("Vysledok odcitania je %d\n", vysledok);
break;
case 3: vysledok = n1*n2;
printf("Vysledok nasobenia je %d\n", vysledok);
break;
case 4: vysledok = n1/n2;
printf("Vysledok delenia je %d\n", vysledok);
break;
default:printf("Chyba");
}
return 0;
}
Слайд 26

Iteračné príkazy - cykly umožňujú opakovať vykonávanie príkazu alebo bloku príkazov

Iteračné príkazy - cykly

umožňujú opakovať vykonávanie príkazu alebo bloku príkazov
tri príkazy:

while, for, do-while
vo všetkých typoch cyklov je možné použiť príkazy na zmenu "normálneho" behu cyklu:

break

ukončuje cyklus

continue

prechádza na ďalšiu iteráciu

Слайд 27

Príkaz while cyklus iteruje pokiaľ platí podmienka: testuje podmienku pred prechodom

Príkaz while
cyklus iteruje pokiaľ platí podmienka:
testuje podmienku pred prechodom cyklu
cyklus teda

nemusí prebehnúť ani raz
používame ho, ak ukončovacia podmienka závisí na nejakom príkaze v tele cyklu
ak by bola podmienka splnená stále cyklus by bol nekonečný , napr. while (1)

while (podmienka)
prikaz;

Слайд 28

cyklus while

cyklus while

Слайд 29

Príklad NSD, použitie cyklu while #include int main() { int u,

Príklad NSD, použitie cyklu while

#include
int main()
{
int u, v, pom;
printf ("Zadaj

dve kladne cele cisla\n");
scanf ("%d %d", &u, &v);
while ( v != 0 ) {
pom = u % v;
u = v;
v = pom;
}
printf ("NSD zadanych cisel je: %d\n", u);
return 0;
}
Слайд 30

Príklad: reverzné číslo, použitie cyklu while #include int main (void) {

Príklad: reverzné číslo, použitie cyklu while

#include
int main (void)
{
int cislo, reverz_cislo;
printf

("Zadaj cele cislo: ");
scanf ("%d", &cislo);
while ( cislo != 0 ) {
reverz_cislo = cislo % 10;
printf ("%d", reverz_cislo);
cislo = cislo / 10;
}
printf ("\n");
return 0;
}
Слайд 31

Príkaz do-while testuje podmienku po prechode cyklu cyklus sa vykoná aspoň

Príkaz do-while

testuje podmienku po prechode cyklu
cyklus sa vykoná aspoň raz
program opúšťa

cyklus pri nesplnenej podmienke

do {
prikazy;
}while (podmienka)

Слайд 32

cyklus do while

cyklus do while

Слайд 33

Príklad: reverzné číslo, použitie cyklu do while #include int main ()

Príklad: reverzné číslo, použitie cyklu do while

#include
int main ()
{
int cislo,

reverz_cislo;
printf ("Zadaj cele cislo:");
scanf ("%d", &cislo);
do {
reverz_cislo = cislo % 10;
printf ("%d", reverz_cislo);
cislo = cislo / 10;
}
while ( cislo != 0 );
printf ("\n");
return 0;
}

Výpis reverzného čísla

Слайд 34

Napíš 100x ... "I will use Google before asking dumb questions."

Napíš 100x ...

"I will use Google before asking dumb questions."

Ak je

vopred známy počet opakovaní → cyklus for
Слайд 35

Príkaz for používa sa, keď dopredu vieme počet prechodov cyklom for

Príkaz for

používa sa, keď dopredu vieme počet prechodov cyklom

for (vyraz_start; vyraz_stop;

vyraz_iter)
prikaz;

Vyhodnotí sa vyraz_start,zistí sa pravdivosť vyraz_stop, ak je pravdivý vykonajú sa príkazy v tele cyklu, potom sa zvýši iterácia a nasleduje ďalší cyklus. Cyklus končí ak výraz vyraz_stop nie je pravdivý

Слайд 36

Príkaz for výrazy vyraz_start, vyraz_stop, vyraz_iter nemusia spolu súvisieť a nemusia

Príkaz for

výrazy vyraz_start, vyraz_stop, vyraz_iter nemusia spolu súvisieť a nemusia byť

vôbec uvedené- v každom prípade treba uviesť bodkočiarku.
for(;;)nekonečný cyklus
priebeh for-cyklu:
na začiatku sa vyhodnotí vyraz_start
otestuje sa, či je vyraz_stop pravdivý,ak je nepravdivý skončí
ak je pravdivý, vykoná sa prikaz a vykoná sa vyraz_iter
návrat na začiatok cyklu (ďalšia iterácia)
dajú sa použiť break a continue

for (vyraz_start; vyraz_stop; vyraz_iter)
prikaz;

Слайд 37

cyklus for

cyklus for

Слайд 38

Príklad cyklus for #include int main() { int i, n; scanf("%d",

Príklad cyklus for

#include
int main()
{
int i, n;
scanf("%d", &n );
for (i=1; i<=n;

i++)
printf("%d\n", i++);
return 0;
}

Výpis čísel od 1 po n
Kde je chyba?

Слайд 39

Príkaz for dá sa prepísať ako while cyklus: vyraz_start; while (vyraz_stop)

Príkaz for

dá sa prepísať ako while cyklus:

vyraz_start;
while (vyraz_stop) {
prikaz;
vyraz_iter;
}

for

(vyraz_start; vyraz_stop; vyraz_iter)
prikaz;
Слайд 40

Príklad cyklus while #include int main() { int i = 1,

Príklad cyklus while

#include
int main()
{
int i = 1, n;
scanf("%d", &n );
while(i<=n){

printf("%d\n", i);
i++;
}
return 0;
}

Výpis čísel od 1 po n

Слайд 41

Príklad cyklus do while #include int main() { int i =

Príklad cyklus do while

#include
int main()
{
int i = 1, n;
scanf("%d", &n

);
if(n >= 1)
do {
printf("%d\n", i++);
} while(i<=n);
return 0;
}

Výpis čísel od 1 po n

Слайд 42

Odporúčania mať len jednu riadiacu premennú inicializácia v inicializačnej časti príkaz

Odporúčania

mať len jednu riadiacu premennú
inicializácia v inicializačnej časti
príkaz continue je

vhodné nahradiť if-else konštrukciou
príkaz break - len v nutných prípadoch, najlepšie maximálne na jednom mieste
cykly while a for sú prehľadnejšie ako do-while, preto ich uprednostňujte
Слайд 43

Príklad výpis písmen - opakovane Výpis písmen od A po zadané

Príklad výpis písmen - opakovane

Výpis písmen od A po zadané písmeno

– zvolený počet krát.

#include
int main() {
int c1, c2;
int i, n;
printf("Zadajte velke pismeno: ");
c2 = getchar();
if(c2 >= 'A' && c2 <= 'Z') {
printf("Kolkokrat vypisat A - %c? ", c2);
scanf("%d", &n);
for(i=1; i<=n; i++) {
for(c1='A'; c1<=c2; c1++)
putchar(c1);
putchar('\n');
}
}
return 0;
}

pre c2=H, n=6
ABCDEFGH
ABCDEFGH
ABCDEFGH
ABCDEFGH
ABCDEFGH
ABCDEFGH

Слайд 44

Príklad: doplňte chýbajúce príkazy #include int main() { int i, j,

Príklad: doplňte chýbajúce príkazy

#include
int main() {
int i, j, n;

printf ("Zadaj pocet pismen scanf("%d", &n);
for(i=1; i<=n; i++) {
putchar('\n');
}
return 0;
}

Výpis prvých 1, 2, 3, ...n písmen po zadané n
v uvedenom tvare:

for(j=0; j putchar('A'+j);

pre n: 5
A
AB
ABC
ABCD
ABCDE

Слайд 45

#include int main( ) { int i, j, k = 1,

#include
int main( )
{
int i, j, k = 1, rozmer;
printf("zadaj

rozmer Floydovho trojuholnika\n");
scanf("%d", &rozmer);
for(i = 1; k <= rozmer; ++i)
{
for(j = 1; j <= i; ++j)
printf("%d ", k++);
printf("\n");
}
return 0;
}

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

Vypíšte Floydov trojuholník
rozmer=20;

Слайд 46

Príklad: hviezdičkovanie trojuholníka #include int main() { int i, j, n,

Príklad: hviezdičkovanie trojuholníka

#include
int main() {
int i, j, n, r;

scanf("%d", &n);
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++)
if(i < j)
putchar('*');
else
printf("%d", i%10);
putchar('\n');
}
return 0;
}

1**********
22*********
333********
4444*******
55555******
666666*****
7777777****
88888888***
999999999**
0000000000*
11111111111

Pre daný počet riadkov (11) vykreslite obrázok

Слайд 47

#include int main() { int i, j, n; scanf("%d", &n); if(n

#include
int main() {
int i, j, n;
scanf("%d", &n);
if(n

< 1 || n > 15) return 0;
for(i=1; i<=n; i++) {
for(j=1; j<=2*n-1; j++) {
if(j <= n-i || j >= n+i)
putchar('*');
else
printf("%d", i%10);
}
putchar('\n');
}
return 0;
}

*******1*******
******222******
*****33333*****
****4444444****
***555555555***
**66666666666**
*7777777777777*
888888888888888

Pre daný počet riadkov (8) (z určeného intervalu) vykreslite obrázok

Слайд 48

#include int main() { int i, j, n, cislo; scanf("%d", &n);

#include
int main() {
int i, j, n, cislo;
scanf("%d", &n);

if(n < 1 || n > 15) return 0;
for(i=1; i<=n; i++) {
cislo = i;
for(j=1; j<=2*n-1; j++)
if(j <= n-i || j >= n+i)
putchar('*');
else {
printf("%d",cislo%10);
cislo++;
}
putchar('\n');
}
return 0;
}

******1******
*****234*****
****34567****
***4567890***
**567890123**
*67890123456*
7890123456789

Pre daný počet riadkov (7) vykreslite obrázok

Слайд 49

#include int main() { int i, j, n, cislo; scanf("%d", &n);

#include
int main() {
int i, j, n, cislo;
scanf("%d", &n);

if(n < 1 || n > 15) return 0;
for(i=1; i<=n; i++) {
cislo = i;
for(j=1; j<=2*n-1; j++)
if(j <= n-i || j >= n+i)
putchar('*');
else {
printf("%d", cislo%10);
if(j < n/2+1)
cislo++;
else
cislo--;
}
putchar('\n');
}
return 0;
}

*******1*******
******232******
*****34543*****
****4567654****
***567898765***
**67890109876**
*7890123210987*
890123454321098

Pre daný počet riadkov (8) vykreslite obrázok

Слайд 50

ÚLOHY SI NAPROGRAMUJTE, ZVÝŠENÚ POZORNOSŤ VENUJTE FAREBNE VYZNAČENÝM ČASTIAM PROGRAMU Opakovanie

ÚLOHY SI NAPROGRAMUJTE, ZVÝŠENÚ POZORNOSŤ VENUJTE FAREBNE VYZNAČENÝM ČASTIAM PROGRAMU
Opakovanie

Слайд 51

príklad: doplňte chýbajúcu časť programu #include void main() { int i,

príklad: doplňte chýbajúcu časť programu

#include
void main() {
int i, j,

n, sucet;
printf("Zadajte n: ");
scanf("%d", &n);
for (i=1; i<=n; i++) {
sucet = 0;
for (j=1; j<= ; j++)
sucet += j;
printf("1 - %2d: %2d\n", i, sucet);
}
}

pre n: 7
1 - 1: 1
1 - 2: 3
1 - 3: 6
1 - 4: 10
1 - 5: 15
1 - 6: 21
1 - 7: 28

program vypíše súčty
1 + ... + i
pre všetky i od + do n

Слайд 52

Príklad: break a continue #include int main() { int i; for(i=5;

Príklad: break a continue

#include
int main() {
int i;
for(i=5;

i<=10; i=i+1) {
if(i == 8)
break;
printf("prvy for – i: %d\n", i);
}
for(i=5; i<=10; i=i+1) {
if(i == 8)
continue;
printf("druhy for – i: %d\n", i);
}
return 0;
}

Čo vypíše program?

prvy for – i: 5
prvy for – i: 6
prvy for – i: 7

druhy for – i: 5
druhy for – i: 6
druhy for – i: 7
druhy for – i: 9
druhy for – i: 10

Слайд 53

Príklad: trojuholník Pre n=5: * ** *** **** ***** Program vykrelí

Príklad: trojuholník

Pre n=5:
*
**
***
****
*****

Program vykrelí trojuholník z hviezdičiek

a medzier

#include
int main() {
int i, j, n;
scanf("%d", &n);
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++)
if(i>=j)
putchar('*');
else putchar(' ');
putchar('\n');
}
return 0;
}

Слайд 54

Príklad: trojuholník – pridaný for (1) Pre n=5: * ** ***

Príklad: trojuholník – pridaný for (1)

Pre n=5:
*
**
***
****
*****
*


**
***
****
*****

#include
int main() {
int i, j, n, k;
scanf("%d", &n);
for(k=1; k<=2; k++)
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++)
if(i>=j)
putchar('*');
else putchar(' ');
putchar('\n');
}
return 0;
}

Čo urobí pridanie for-cyklu?

Слайд 55

Príklad: trojuholník – pridaný for (2) Pre n=5: * * **

Príklad: trojuholník – pridaný for (2)

Pre n=5:
* *
** **
***

***
**** ****
**********

#include
int main() {
int i, j, n, k;
scanf("%d", &n);
for(i=1; i<=n; i++) {
for(k=1; k<=2; k++)
for(j=1; j<=n; j++)
if(i>=j) putchar('*');
else putchar(' ');
putchar('\n');
}
return 0;
}

Čo urobí pridanie for-cyklu?

Слайд 56

Príklad: trojuholník – pridaný for (3) Pre n=5: ** **** ******

Príklad: trojuholník – pridaný for (3)

Pre n=5:
**
****
******
********
**********

#include


int main() {
int i, j, n, k;
scanf("%d", &n);
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++)
for(k=1; k<=2; k++)
if(i>=j) putchar('*');
else putchar(' ');
putchar('\n');
}
return 0;
}

Čo urobí pridanie for-cyklu?

Слайд 57

príklad #include int main() { int i, dlzka; printf("Zadajte dlzku: ");

príklad

#include
int main()
{
int i, dlzka;
printf("Zadajte dlzku: ");
scanf("%d",

&dlzka);
for (i = 1; i <= dlzka; i++)
if (i % 2)
putchar('-');
else
putchar('*');
return 0;
}

dlzka: 8
-*-*-*-*

do riadku nakreslí striedavo na každú druhú pozíciu hviezdičku

Слайд 58

príklad #include int main() { int dlzka, i, j; printf("Zadajte dlzku

príklad

#include
int main()
{
int dlzka, i, j;
printf("Zadajte dlzku ramena:

");
scanf("%d", &dlzka);
for (i = 1; i <= dlzka * 2 + 1; i++) {
for (j = 1; j <= dlzka * 2 + 1; j++)
if (j == dlzka+1 || i == dlzka+1)
putchar('*');
else
putchar('-');
putchar('\n');
}
return 0;
}

pomocou hviezdičiek nakreslí kríž

dlzka: 3
---*---
---*---
---*---
*******
---*---
---*---
---*---

Слайд 59

príklad #include int main() { int r, i, j; printf("Zadajte rozmer:

príklad

#include
int main()
{
int r, i, j;
printf("Zadajte rozmer: ");

scanf("%d", &r);
for (i=1; i<=r; i++) {
for (j=1; j<=r; j++)
if ((i % 2 == 0 && j % 2 == 1) ||
(i % 2 == 1 && j % 2 == 0))
putchar('*');
else
putchar(' ');
putchar('\n');
}
return 0;
}

pomocou hviezdičiek nakreslí uvedený vzor

r: 10
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

Слайд 60

príklad ... for (i=1; i for (j=1; j if (i %

príklad

...
for (i=1; i<=r; i++) {
for (j=1; j<=r; j++)

if (i % 2 == 1 && (j % 6 == 1 || j % 6 == 2) ||
i % 2 == 0 && j % 6 != 1 && j % 6 != 2)
putchar('*');
else
putchar('-');
putchar('\n');
}
...

pomocou hviezdičiek nakreslí uvedený vzor

r: 14
**----**----**
--****--****--
**----**----**
--****--****--
**----**----**
--****--****--

len zátvorky, ktoré musia byť

Слайд 61

príklad #include int main() { int i, j, r; printf("Zadajte rozmer:

príklad

#include
int main() {
int i, j, r;
printf("Zadajte rozmer: ");

scanf("%d", &r);
for (i=1; i<=r; i++) {
for (j=1; j<=r; j++)
if ((i > 1) && (i < r) &&
(j > 1) && (j < r))
putchar('*');
else
putchar('-');
putchar('\n');
}
return 0;
}

pomocou hviezdičiek nakreslí štvorec v ráme

r: 4
----
-**-
-**-
----

vnútorné zátvorky nemusia byť

Слайд 62

príklad ... int i, j, k, n, r; ... for (i=1;

príklad

...
int i, j, k, n, r;
...
for (i=1; i<=r; i++) {
for

(j=1; j<=r; j++)
if ((i > 1) && (i < r) &&
(j > 1) && (j < r))
putchar('*');
else
putchar('-');
putchar('\n');
}

pomocou hviezdičiek nakreslí štvorce v ráme pod seba

r: 4, n:2
----
-**-
-**-
----
----
-**-
-**-
----

n-krát za sebou zopakujeme kreslenie štvorca

for (k=1; k<=n; k++) {
}

Слайд 63

príklad ... int i, j, k, n, r; ... for (i=1;

príklad

...
int i, j, k, n, r;
...
for (i=1; i<=r; i++) {
for

(j=1; j<=r; j++)
if((i > 1) && (i < r) &&
(j > 1) && (j < r))
putchar('*');
else
putchar('-');
putchar('\n');
}

pomocou hviezdičiek nakreslí štvorce vedľa seba

pre r: 4, n:2
--------
-**--**-
-**--**-
--------

n-krát zopakujeme každý riadok

for (k=1; k<=n; k++) {
}