Úvod do jazyka C Algoritmizácia úloh 4.

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

Click on each of us to hear our sounds.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Tutorial #4 Summer 2005.
Princípy počítačov Letný semester 2003 / 2004
INTRANSNET Contract No. G7RT-CT
Example Bullet Point Slide
Princípy počítačov 1 LS 2002/2003
VOĽNE DOSTUPNÝ REFERENČNÝ MANAŽÉR
Renesancia a humanizmus
Zmluva o poskytnutí grantu
CSP problém (problém rešpektujúci obmedzenia)
Prečo šimpanzy nevedia rozprávať?
Obsluha výnimiek.
BEZPEČNOSŤ DATABÁZ Bezpečnosť informačných systémov
Domény a DNS.
RIZIKÁ PRI REALIZOVANÍ PROJEKTU
MATLAB (1) - úvod do programovania vedeckých problémov
Procedurálne programovanie: 2. prednáška
DATABÁZOVÉ JAZYKY.
Databázový systém pre malý a veľký podnik
Yulia Šurinová "There is always a better way; it should be found."
Programovací jazyk programovací jazyk Pascal Delphi
Makrá v PowerPointe Joshua Lajčiak.
Barbora Ondíková VII.D 2014/2015
PHP Jemný úvod do PHP Mgr. Ján Guniš, KUI, 2003
Človek vo sfére peňazí ročník.
aktivácia Vladimír Hricka License Sales Specialist Microsoft Slovakia
7. prednáška 3. november 2003.
Protokoly HTTP a FTP.
Mgr. Valentína Gunišová
Princípy počítačov 1 LS 2002/2003
Využitie IKT na hodinách anglického jazyka
Výučba cudzích jazykov
Ako sme pristúpili k citlivej téme migrácie v našej škole
Informatika, I. ročník Gymnázium, Park mládeže 5, Košice
Skrutkovica na rotačnej ploche
Vlastnosti kvantitatívnych dát
Ing. Róbert Chovanculiak, Ph.D. INESS
História vzniku internetu
Šifrovanie Dešifrovanie
Ako manažovať smartfóny z cloudu TechDays East 2014
CSS - Cascading Style Sheets
Dvojrozmerné polia Kód ITMS projektu:
PRACOVNÉ PROSTREDIE PRI PRÁCI S POČÍTAČMI Z HĽADISKA ERGONÓMIE
Vysoko subjektívna prezentácia o používaní podcastov
Heuristické optimalizačné procesy
Heuristické optimalizačné procesy
Zásady hygieny pri stolovaní
REACH 2018 Nájdite svojich spoluregistrujúcich a pripravte sa na spoločnú registráciu.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
Polymorfizmus.
4. Užívateľské prostredie UNIXu
Veľkosť trhu agentúrnych zamestnancov
De Bonových 6 klobúkov myslenia
Výnimky I, adresáre a súbory
Seminár č. 9 - osnova Metódy sieťového plánovania a riadenia:
Základné tematické okruhy
Interaktívna kniha a e-learningový systém pre deti - Opera nehryzie
Termonukleárna fúzia a Studená fúzia.
8. prednáška 10. november 2003.
Kde je Sever a nie len Sever
Využitie biomasy v environmentálnych biotechnológiách
Metalová hudba.
...bzučanie miliónov plastických koliesok
Podpora adaptívneho WEB-u prostriedkami strojového učenia
CSC215 Homework Homework 03 Due date: Oct 07, 2016.
Iteration Statement for
Control Structure គោលបំណងនៃមេរៀន អ្វីជា Control structure ?
Presentation transcript:

Úvod do jazyka C Algoritmizácia úloh 4

Riadiace štruktúry Riadiace štruktúry predpisujú poradie vykonávania jednotlivých výpočtov. príkaz blok podmienený príkaz príkaz cyklu prepínač príkaz skoku

Príkaz a blok Príkaz vzniká pridaním znaku ";" za priradenie a = 1; Blok je tvorený postupnosťou príkazov jazyka C, uzavrenou v dvojici zložených zátvoriek { }

Tvorba podmienok if( <vyraz> ) else while( <vyraz> ) switch( <vyraz>)

Podmienený príkaz Podmienka NIE ÁNO Príkaz 2 Príkaz 1

Podmienený príkaz if (podmienka) príkaz; else príkaz2; Podmienený príkaz umožňuje vykonávať vetvenie priebehu programu 1. skrátený tvar if (podmienka) príkaz; 2. úplný tvar if (podmienka) príkaz1; else príkaz2; V obidvoch prípadoch sú príkazy ukončené bodkočiarkou!!

Príklad – párne čísla if (delenie == 0) printf("Cislo je parne\n"); else printf("Cislo je neparne\n");

Príklad – párne čísla if (delenie == 0) { printf("Cislo je parne\n"); } else printf("Cislo je neparne\n");

Príklad – odpoveď užívateľa printf(“\n\r Chcete pokracovat (a/n) ??? ”); c=getchar(); if (c == ‘a’) { printf(“Uzivatel chce pokracovat”); } else printf(“Uzivatel nechce pokracovat”);

Príklad – párne čísla #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int cislo, delenie; printf("Zadaj cele cislo\n"); scanf("%d", &cislo); delenie=cislo%2; if (delenie == 0) printf("Cislo je parne\n"); else printf("Cislo je neparne\n"); system("PAUSE"); return 0; }

Pravdivý / nepravdivý výraz V jazyku C nie je implicitne typ Boolean. Používa sa typ int, kde hodnota „0“ znamená FALSE a nenulová hodnota (najčastejšie „1“ ) je TRUE.

Cyklus while nie Podmienka áno Príkaz

while (podmienka) príkaz; Cyklus while while (podmienka) príkaz; Cyklus sa vykonáva, kým je podmienka splnená. Telo cyklu sa teda nemusí vykonať ani raz.

Výpis 10-tich riadkov #include <stdio.h> int main() { int i=0; while (i<10) printf(“\n Riadok cislo %d”, i); i++; } return 0;

Príklad – spočítanie čísel #include <stdio.h> int main() { int cislo=0, sucet=0; while(cislo!=100) printf(“\n\r Zadaj cislo: ”); scanf(“%d”,&cislo); sucet = sucet + cislo; } printf(“\n\r Sucet: %d ”, sucet); return 0;

Príkaz while: príklad #include <stdio.h> program číta znaky z klávesnice, opisuje ich na obrazovku, znaky ‘0’ si nevšíma a skončí po prečítaní znaku * #include <stdio.h> int main(int argc, char *argv[]) { int c; while ((c = getchar()) != '*') if (c != ‘0’) putchar(c); } načítanie znaku - musí byť uzátvorkované, lebo != má väčšiu prioritu ako =

Príkaz do-while do { prikazy; } while (podmienka) testuje podmienku po prechode cyklu cyklus sa vykoná aspoň raz program opúšťa cyklus pri nesplnenej podmienke do { prikazy; } while (podmienka)

Príkaz do-while Príkaz nie Podmienka áno

Príklad #include <stdio.h> int main() { int cislo=0, sucet=0; do printf(“\n\r Zadaj cislo: ”); scanf(“%d”,&cislo); sucet = sucet + cislo; } while(cislo!=100) printf(“\n\r Sucet: %d ”, sucet); return 0; }

Príkazy break a continue Oba príkazy je možné použiť vo všetkých typoch cyklov Mení „normálny“ priebeh cyklu break ukončuje vnútornú neuzatvorenú slučku a opúšťa cyklus continue skáče na koniec vnútornej neuzatvorenej slučky a tým sa vynúti ďalšia iterácia slučky – cyklus neopustí

Príkaz break #include <stdio.h> int main() { int i=0; while(i<20) if(i==10) break; printf(“\n\r i = %d”); i++; } return 0;

Príkaz continue #include <stdio.h> int main() { int i=0; while(i<100) if(i==10) break; printf(“\n\r i = %d”); i++; } return 0;

Príkaz goto Príkaz nepodmieneného skoku na návestie. V programe C nemusí byť návestie deklarované. Má sa používať čo najmenej ( účelné použitie napríklad pri výskoku z vnorených cykloch). printf("\n Zadej znak: "); c=getchar(); while (getchar() !='\n'); goto tam; printf(" Bol zadany znak 'a'\n"); tam: printf(" Program bude pokračovat tu\n");

Ternárny operátor podmienený výraz Syntax (podmienka) ? výraz_1 : výraz_2 Ak platí podmienka, vyhodnotí sa výraz_1 Ak neplatí podmienka, vyhodnotí sa výraz_2

Príklad int i, k, j = 2; i = (j == 2) ? 1 : 3; i bude 1 k = (i > j) ? i : j; k bude 2

Použitie ternárneho operátora #include <stdio.h> int main() { int cislo1,cislo2,vysledok; printf(" Zadajte prve cislo : "); scanf("%d",&cislo1); printf(" Zadajte druhe cislo : "); scanf("%d",&cislo2); vysledok = ( cislo1>cislo2) ? cislo1 : cislo2 ; printf("Hodnota vacsieho cisla je %d\n",vysledok ); return 0; }

Podmienený výraz Príklad: Konverzia znaku na malé písmeno c = (c >= ‘A‘ && c <= ‘Z‘) ? c + (‘a‘ - ‘A‘) : c;

Operátor čiarky Syntax výraz_1 , výraz_2 int i = 2, j = 4; výraz sa spracováva tak, že sa vyhodnotí prvý výraz a potom sa vyhodnotí druhý výraz, ktorý je aj záverečným výsledkom Príklad: int i = 2, j = 4; j = (i++, i – j); i bude 3 a j bude -1

Príkazy cyklu cyklus while cyklus do while cyklus for Príkaz cyklu sa používa pre riadenie opakovania nejakého výpočtu. Určuje spôsob a podmienku ukončenia opakovania. Jazyk C pozná tri varianty príkazu cyklu: cyklus while cyklus do while cyklus for

Cyklus FOR for(i = 0; i< 10; i++) for(začiatok ; podmienka behu ; zmena ) {     príkaz 1;     príkaz 2;     ...     príkaz n; } for(i = 0; i< 10; i++)

Príklady použitia for #include <stdio.h> int main() { int i; for (i=0; i<20; i++) printf(“%d.) Pekny den\n“,i); } return 0;

Príklady použitia for #include <stdio.h> int main() { int i; for (i=20; i<40; i++) printf(“%d.) Pekny den\n“,i); } return 0; 33 33

Príklady použitia for #include <stdio.h> int main() { int i; for (i=20; i>0; i--) printf(“%d.) Pekny den\n“,i); } return 0; 34 34

Príklady použitia for #include <stdio.h> int main(void) { int i, cislo; printf("\n\r Zadaj cislo: "); scanf("%d", &cislo); for(i=0; i<10; i++) printf("\n\r %d * %d = %d", i, cislo, i*cislo); } while(1); 36 36

Príklady použitia for #include <stdio.h> int main(void) { int i,,zv; for(i=40; i<80; i++) zv=i%3; if(zv==0) printf("\n\r Cislo %d je delitelne tromi",i); } 37 37

Prepínač switch Príkaz Podmienka 1 2 3 n Príkaz Príkaz Príkaz Príkaz

Prepínač switch Prepínač umožňuje vykonávať vetvenie programu na viac ako dve vetvy. Vetvenie sa vykonáva na základe vyhodnotenia výrazu, ktorý je celočíselného typu. Ak sa nájde zhoda medzi hodnotou výrazu a cestou case, pokračuje výpočet touto vetvou (až po príkaz break), inak je skok na default vetvu. Tvar príkazu je :

Prepínač switch switch (výraz) { case hodnota1: prikazy; break; case hodnotax: default : prikaz; }

Príklad na výpis známok #include <stdio.h> int main() { int zn; scanf(“%d”,&zn); switch(zn) case 1 : printf("vyborne");break; case 2 : printf("velmi dobre");break; case 3 : printf("dobre");break; case 4 : printf("nevyhovel");break; default : printf(“nespravny vstup %d\n",zn);break; } while(1); return 0;

............. tu bude vloženie hodnôt X a Y if ((y < 0) && (x < 0)) kv=3; else if ((y < 0) && (x > 0)) kv=4; else if ((y > 0) && (x > 0)) kv=1; else if ((y > 0) && (x < 0)) kv=2; switch (kv) { case 1 : printf("Bod je v prvom kvadrante");break; case 2 : printf("Bod je v druhom kvadrante");break; case 3 : printf("Bod je v tretom kvadrante");break; case 4 : printf("Bod je v stvrtom kvadrante");break; default : printf("Bod sa nachadza na osi");break; }

Relačné a logické operátory význam C rovnosť == nerovnosť != menšie < menšie alebo rovné <= väčšie > väčšie alebo rovné >= význam C logický súčin && logický súčet || negácia !

Priority vyhodnocovania logických výrazov Operátor smer vyhodnocovania ! ++ -- - + (typ) sprava doľava * / % zľava doprava + - zľava doprava < <= >= > zľava doprava == != zľava doprava && zľava doprava || zľava doprava unárne operátory + pretypovanie

Priority vyhodnocovania logických výrazov aritmetické operátory a operátory porovnania majú väčšiu prioritu ako logické operátory ( ) ( ) Závorky tam nemusia byť, pretože >= a <= má väčšiu prioritu ako && ( c >= 'A' && c <= 'Z' ) ak si nie ste istí, či zátvorky dať, radšej ich uveďte nezamieňajte && za & a || za | - & a | sú bitové operácie

Viac podmienok #include <stdio.h> int main() { int cislo; scanf(“%d”,&cislo); if( (cislo>5) && (cislo<10) ) printf(“cislo je medzi 5 a 10”); else printf(“cislo je mimo intervalu”); while(1); return 0; }

Viac podmienok #include <stdio.h> int main() { int cislo; scanf(“%d”,&cislo); if(cislo<5) printf(“\n\r cislo je mensie ako 5”); if( (cislo>5) && (cislo<10) ) printf(“cislo je medzi 5 a 10”); if(cislo>10) printf(“\n\r cislo je vacsie ako 10”); while(1); return 0; }

Viac podmienok #include <stdio.h> int main() { int cislo; scanf(“%d”,&cislo); if ( ((cislo%2)==0) || ((cislo%3)==0) ) printf(“\n\r Cislo je delitelne 2mi alebo 3mi”); } while(1); return 0;

Viac podmienok - while #include <stdio.h> int main(int argc, char *argv[]) { int cislo=0, sucet=0; while(cislo!=123) printf("\n\r Zadaj cislo: "); scanf("%d",&cislo); sucet=sucet+cislo; } printf("\n\r Sucet cisiel je %d ",sucet); while(1); return 0;

Viac podmienok - while #include <stdio.h> int main(int argc, char *argv[]) { int cislo=0, sucet=0; while( (cislo>-10) && (cislo<10)) printf("\n\r Zadaj cislo: "); scanf("%d",&cislo); sucet=sucet+cislo; }; printf("\n\r Sucet cisiel je %d ",sucet); while(1); return 0; }

Skrátené vyhodnocovanie logických výrazov Logický súčin a súčet sa vyhodnocujú v skrátenom vyhodnotení (short circuit). Argumenty sú vyhodnocované zľava doprava a keď je možné určiť konečný výsledok, vyhodnocovanie skončí. if (y != 0 && x / y < z) k deleniu nulou nedojde, pretože v prípade že y=0 dojde k ukončeniu vyhodnotenia po prvom člene y != 0 (podmienka x / y < z vyhodnocovaná nie je). Poznámka: v Pascale by došlo k chybe if ((y<>0) AND (x/y<z))

priradením i = 5 porovnaním i == 5 Poznámka Rozdiel medzi: výsledok je: i je rovné 5 porovnaním i == 5