Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Podobné dokumenty
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

Pointery II. Jan Hnilica Počítačové modelování 17

Programování v jazyce C pro chemiky (C2160) 7. Ukazatele, Funkce pro práci s řetězci

10 Práce s řetězci - pokračování

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

Základy programování (IZP)

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Programování v C++ 1, 14. cvičení

Základy programování (IZP)

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

POČÍTAČE A PROGRAMOVÁNÍ

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

- jak udělat konstantu long int: L long velka = 78L;

Programovanie v jazyku C - struktury a polia

2 Datové typy v jazyce C

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Operační systémy. Cvičení 4: Programování v C pod Unixem

Úvod do programování - Java. Cvičení č.4

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Operační systémy. Cvičení 3: Programování v C pod Unixem

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základy programování (IZP)

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Základy programování (IZP)

Struktura programu v době běhu

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Programovanie v jazyku C - pole treba poorat...

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Základy programování (IZP)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Úvod do programování. Lekce 5

BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 7., 9. a 10. listopadu 2017

Řetězce. Často potřebujeme v řetězci přepsat nějaké znaky. Nemůžeme ale zapsat např.

Zápis programu v jazyce C#

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programovanie v jazyku C - funkcie a makra

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programování v jazyce C pro chemiky (C2160) 6. Funkce, struktury

Práce se soubory. Základy programování 2 Tomáš Kühr

C# konzole Podíl dvou čísel, podmínka IF

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Základy programování (IZP)

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D.

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

Funkce, intuitivní chápání složitosti

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Algoritmizace a programování

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Př. další použití pointerů

Programovací jazyk C++ Hodina 1

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Standardní algoritmy vyhledávací.

8 Třídy, objekty, metody, předávání argumentů metod

Sada 1 - Základy programování

Operátory. Základy programování 1 Tomáš Kühr

Programování v C++ 1, 5. cvičení

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Pole a kolekce. v C#, Javě a C++

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Základy programování (IZP)

Programovani v Maplu Procedura

Algoritmizace a programování

Formátové specifikace formátovací řetězce

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programování v jazyce C a C++

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

PB161 Programování v jazyce C++ Přednáška 4

Programování v C++ 1, 1. cvičení

Transkript:

Pole a Funkce Úvod do programování 1 Tomáš Kühr

(Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně zpracovat větším množství dat moje_pole 2 3 5 7 11 13 17 int int int int int int int

Vytvoření pole u Pole je proměnná před použitím je potřeba jej vytvořit u bez inicializace: typ identifikátor[velikost]; u s inicializací: typ identifikátor[velikost] = {inicializační hodnoty; u Inicializační hodnoty oddělujeme čárkou u Hodnot může být i méně, než jaká je velikost pole u V případně neuvedení velikosti se tato určí podle počtu uvedených hodnot u Příklady: int cisla[5]; int cisla[5] = { 1, 2, 3, 4, 5 ; int cisla[] = { 1, 2, 3, 4, 5 ; int cisla[10] = { 1, 2, 3, 4, 5 ; double desetinna[4]; double desetinna[] = { 1.1, 5.1, 3.2, 1e5 ;

Používání pole u K prvkům přistupujeme pomocí operátoru indexu [ ] u Prvky mají indexy od 0 do velikosti pole 1 u Příklad: int i; int pole[10]; for (i = 0; i < 10; i++){ pole[i] = i + 1; for (i = 0; i < 10; i++){ printf("%i, ", pole[i]);

Velikost pole u Velikost nelze z proměnné typu pole nijak zjistit u Při práci s polem ji obvykle máme uloženou v nějaké proměnné u V ANSI C: #define VELIKOST 10... int i; int pole[velikost]; for (i = 0; i < VELIKOST; i++){ pole[i] = i + 1; u Od C99 funguje také: int i; const int velikost = 10; int pole[velikost]; for (i = 0; i<velikost; i++){ pole[i] = i + 1;

Textové řetězce u Pole znaků ukončených znakem '\0' u Velikost pole tedy je délka řetězce + 1 u Funkce pro práci s řetězci najdete v knihovně string.h u Příklad vytvoření: char retezec[] = "ahoj"; char retezec[] = { 'a', 'h', 'o', 'j', '\0' ; u Příklad využití zarážky: char retezec[] = "ahoj"; char znak; int i = 0; while (znak = retezec[i]){ printf("%c ", znak); i++;

Vybrané funkce ze string.h u Délka řetězce: strlen u Kopírování řetězce: strcpy, strncpy u Spojení řetězců: strcat, strncat u Porovnávání řetězců (lexikografické): strcmp, strncmp u Hledání znaku vřetězci: strchr (zleva), strrchr (zprava) u Hledání podřetězce v řetězci: strstr u A mnoho dalších...

Funkce u Relativně samostatná část programu u Je ji možné opakovaně volat z libovolných částí programu u Může mít své vstupy = parametry funkce u I výstup = návratová hodnota funkce u Příklady: main, printf, scanf, 8

Vytvoření funkce u Funkci nelze definovat uvnitř jiné funkce (včetně main) u Funkci je potřeba definovat dříve, než ji voláte u Obecně: typ_výsledku jméno_funkce(typ_p1 jméno_p1,..., typ_pn jméno_pn){ příkazy_těla_funkce... u V těle funkce se mohou využívat identifikátory parametrů u Parametry se chovají jako lokální proměnné u Tělo funkce může obsahovat příkaz return pro nastavení výsledku u Příkaz return ihned funkci ukončí 9

Příklad vytvoření funkce u Funkce bez návratové hodnoty: void vypis_max(int prvni, int druhe){ int max; max = (prvni < druhe)? druhe : prvni; printf("maximum je %d.\n", max); return; u Funkce s výsledkem: int maximum(int prvni, int druhe){ int max; max = (prvni < druhe)? druhe : prvni; return max; 10

Použití funkce u Pomocí operátoru volání funkce (kulaté závorky) u Uvnitř závorek uvádíme hodnoty vstupů u Tyto se pak vloží do parametrů u Návratovou hodnotu můžeme, ale nemusíme použít u Příklady: int main(){ int a = 5, b = 10; int vetsi = maximum(b, 3 * a); printf("max: %d\n", maximum(vetsi, a + b)); vypis_max(a*b, a + b); return 0; 11

Funkce pracující s polem u Pole lze předat do funkce jako vstup u Zatím ho ale neumíme vrátit z funkce jako výsledek u Pozor, změny provedené v poli se projeví i mimo funkci u Příklad: void vypis_pole_cisel(int pole[], int delka) { for (int i = 0; i < delka; i++) printf("%i, ", pole[i]); int main() { int cisla[] = {1, 2, -7, 14; vypis_pole_cisel(cisla, 4); return 0; 12

Příklad s modifikací pole #define DELKA 3 void plus10(int vstup[], int pocet){ for (int i = 0; i < pocet; i++){ vstup[i] += 10; int main(){ int pole[] = { 10, 20, 30 ; plus10(pole, 3); for (int i = 0; i < DELKA; i++){ printf("%d, ", pole[i]); return 0; 13

Deklarace funkce u Hodí se především u větších programů u Je komplikované /nepřehledné funkce definovat dříve, než jsou použity u Někdy je toto dokonce nemožné u Deklarace = popis funkce dostačující k tomu, aby překladač věděl, jak bude funkce používána u Uvádí se zpravidla na začátku programu u Udává jméno funkce, typy parametrů a návratové hodnoty u Obecně: typ_výsledku jméno_funkce(typ_p1 jméno_p1,...); typ_výsledku jméno_funkce(typ_p1,...); 14

Příklad s deklarací int soucet(int, int); void novy_radek(); int soucet(int a, int b) { int soucet = a + b; printf("soucet a + b = %i", soucet); novy_radek(); return soucet; void novy_radek() { printf("\n"); 15

Rozsah platnosti - lokální proměnná u Definována uvnitř bloku (funkce, cyklus, ) u Vzniká při vstupu programu do bloku u Existuje po dobu vykonávání příkazů v bloku u Zaniká při opuštění bloku u Příklad: // tady proměnná znak ještě neexistuje while (text[i]!= '\0'){ char znak = text[i] - 'A' + 'a'; printf("%c\n", znak); // tady proměnná znak už neexistuje 16

Rozsah platnosti - globální proměnná u Definována mimo jakékoli bloky u Vzniká spuštěním programu u Přístupná ze všech míst programu u Lokální identifikátory mohou překrýt ty globální (i jiné lokální) u Zaniká při ukončení programu u Příklad: int pocet = 10; // proměnná přístupná odkudkoli int main(){...... 17

Rozsah platnosti - statická proměnná u Definujeme uvnitř bloku u Pomocí klíčového slova static u Vzniká (a je inicializována) při prvním vstupu do bloku u Přístupná je pouze z daného bloku u Zaniká ale až ukončením programu u Příklad: int porovnej(int prvni, int druhe){ static int pocet = 0; pocet++; if (prvni < druhe) return -pocet; if (prvni == druhe) return 0; return pocet; 18

Pole cvičení 4 Vytvořte program, který vyhledá v zadaném poli zadané číslo a vypíše jeho index (nebo informaci o tom, že číslo v poli nebylo nalezeno). Při testování můžete pole nechat načítat od uživatele. Program by měl být ale funkční bez ohledu na to, jaká čísla pole obsahuje... Příklad použití: Zadejte cislo: -5 Zadejte cislo: 17 Zadejte cislo: 3 Zadejte cislo: 2 Zadejte cislo: 8 Zadejte hledane cislo: 2 Index hledaneho cisla je: 3 Zadejte hledane cislo: 20 Hledane cislo nebylo nalezeno.

Pole cvičení 5 Vytvořte program, který projde dané pole a spočítá, kolik čísel v tomto poli je v zadaném rozmezí (mezi zadanými 2 hodnotami). Při testování programu si zkuste nalezená čísla třeba i vypisovat do konzole. Příklad použití: Zadejte cislo: -5 Zadejte cislo: 17 Zadejte cislo: 3 Zadejte cislo: 2 Zadejte cislo: 8 Zadejte zacatek intervalu: 0 Zadejte konec intervalu: 10 Pocet cisel v intervalu je: 3

Funkce cvičení 3 Vytvořte program, který po zadání typu tělesa (válec, kvádr,...) a jeho rozměrů vypočítá objem a povrch tohoto tělesa. Jednotlivé výpočty objemů a povrchů vybraných těles naprogramujte pomocí funkcí. Načítání dat a výpisy pak ponechte v hlavní funkci programu. Příklad použití: Zadejte typ telesa (1=valec, 2=kvadr): 2 Zadejte prvni rozmer: 1 Zadejte druhy rozmer: 2 Zadejte treti rozmer: 3 Objem je: 6 Povrch je: 22