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

Podobné dokumenty
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

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

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

Úvod do programování. Lekce 1

Základy programování (IZP)

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

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Více o konstruktorech a destruktorech

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

PROGRAMOVÁNÍ V C++ CVIČENÍ

Jazyk C++, některá rozšíření oproti C

Zápis programu v jazyce C#

Základy C++ I. Jan Hnilica Počítačové modelování 18

Abstraktní třídy, polymorfní struktury

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

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

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

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

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

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

Algoritmizace a programování

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

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

přetížení operátorů (o)

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

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Odvozené a strukturované typy dat

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

Opakování programování

Základy programování (IZP)

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

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

IUJCE 07/08 Přednáška č. 1

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

Struktura programu v době běhu

Prostory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Konstruktory a destruktory

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

přetížení operátorů (o)

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

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

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

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

Výrazy, operace, příkazy

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

Programování C++ Lukáš Tomášek. verze

Programovací jazyk C++ Hodina 1

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Mělká a hluboká kopie

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

Ukazatele, dynamická alokace

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

Množina čísel int stl-set-int.cpp

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

5 Přehled operátorů, příkazy, přetypování

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

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

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

Základy programování (IZP)

Programovací jazyk C++ Cvičení 2

Racionální čísla, operátory, výrazy, knihovní funkce

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Racionální čísla, operátory, výrazy, knihovní funkce

Výrazy, operace, příkazy

Úvod do programovacích jazyků (Java)

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Data, výrazy, příkazy

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

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

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

IUJCE 07/08 Přednáška č. 6

Jazyk C# a platforma.net

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

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

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

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

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

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

PŘETĚŽOVÁNÍ OPERÁTORŮ

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

2 Datové typy v jazyce C

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

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

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Základy programování (IZP)

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

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

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

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;

Programování v C++ První kroky

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Transkript:

verze 0.3

Hello World Nejjednoduší program ukazující vypsání textu. #include <iostream> using namespace std; int main(void) { cout << "Hello World" << endl; return 0; }

Pamět Proměnná Vyhrazuje místo v paměti pro uložení dat Ukazatel Proměnná obsahující adresu místa v paměti Obrázek

Proměnná Založení proměnné: typ nazev; Přiřazení hodnoty: nazev = 1; Přiřazení hodnoty jiné proměnné: nazev=nazev_2; Vypsání hodnoty proměnné: cout << nazev; Načtení promměné ze vstupu: cin >> nazev;

Základní datové typy Datové typy: Celá čísla: int, long, long long Celá čísla bez zaménka: unsigned int,... Racionální čísla: float, double, long double bool

Obor platnosti proměnné Globální proměnné: deklarované mimo funkce přístupné v celém programu Lokální proměnné: deklarované v bloku { } přístupné jen v daném bloku

Literálni konstanty Typy: 10 int 1.0 double

Aritmetika číslených datových typů Operátory: + sčítání - odečítání * násobení / dělení % modulo ++ inkrementace hodnoty -- dekrementace hodnoty

Aritmetika číslených datových typů probíhá nad stejným datovým typem jako jsou operandy:: int + int = int double + double = double int/int = int!!!!!!!!!!! float/int =?? -> automatické přetypování -> float/float = float Operátor přetypování: (typ)promenna program se pokusí převést proměnou na žádaný typ Přetečení: unsigned int a=0; a--; a==uint_max

Ukazatele Proměnné ukládající adresu jiné proměnné Založení ukazatele: datovy_typ * nazev_ukazatele; Přiřazení adresy proměnné do ukazatele: nazev_ukazatele = &promenna; Přiřazení hodnoty do proměnné na kterou ukazuje ukazatel: *nazev_ukazatele=1; Vypsání hodnoty proměnné na kterou ukazuje ukazatel: cout << *nazev_ukazatele;

Ukazatele Operátory: &promena *uk sizeof(typ) new typ delete uk (typ*)uk Typ: void vrací adresu proměnné dereference ukazatele vrací velikost datového typu alokuje pamět velikosti daného typu vrcí ukazatel na ni uvolňuje pamět na kterou ukazuje ukazatel přetypování ukazatele

Řízení běhu programu Řízení běhu programu: Podmíněné bloky Smyčky Funkce

Řízení běhu programu IF Podmíněný blok programu: if(podmínka) { //příkazy pokud byla podmínka splněna } nebo if(podmínka) { //příkazy pokud byla podmínka splněna } else { //příkazy pokud nebyla podmínka splněna }

Řízení běhu programu WHILE while(podmínka) { //smyčka poběží pokud bude podmínka platit }

Řízení běhu programu FOR for(pred_behem;podminka;po_kazde_iteraci) { //smyčka poběží pokud bude podmínka platit } Typycky: for(int i=0;i<n;i++) cout << i;

Řízení běhu smyčky break; zastavení nejbližší smyčky continue; ukončení aktuální iterace smyčky

Podmínky Libovolná nenulová hodnota je pravdivá Operátory: == Rovnost hodot promměných!= Nerovnost hodnot proměnných < Menší než > Větší než <= Menší nebo rovno >= Větší nebo rovno = Přiřazení hodnoty Má hodnotu přiřazované hodnoty

Skládání podmínek Operátory:! NOT, negace OR, nebo && AND, a

Funkce Podporogramy Tvoříme pro části kódu které se opakují v různých místech Tvoříme pro ucelené kroky kódu, pro zpřehlednění Deklarace musí předcházet použití Parametry se chovají jako lokální proměnné založené ve funkci inicializované předávanou hodnotou Parametry se předávají hodnotou return slouží pro okamžité opuštění funkce a předává návratovou hodnotu

Funkce Obecně Deklarace: jen hlavička funkce se středníkem typ nazev(typ param1,typ param2,...); Definice: typ nazev(typ para1,typ param2,...) { //dělej něco užitečného }

Funkce Bez parametrů Bez návratové hodnoty void nazev(void) { //dělej něco užitečného } Volání v programu: nazev();

Funkce S parametry Bez návratové hodnoty void nazev(typ param1, typ param2,... ) { //dělej něco užitečného } Volání v programu: nazev(promenna_1,promenna_2,...);

Funkce S parametry S návratovou hodnotou typ nazev(typ param1, typ param2,... ) { //dělej něco užitečného return neco; } Volání v programu: promenna = nazev(promenna_1,promenna_2,...);

Pole N proměnných stejného typu umístěných v paměti zasebou Počet prvků musí být konstanta v době překladu (v C) Pole lze přetypovat na ukazatel typu prvku pole Nejsou kontrolovány hranice pole Obrázek Indexy jsou od 0 do N-1

Pole Založení pole: typ nazev[pocet_prvku]; Přistup pomocí Operátoru Indexu: nazev[index] = 1; Založení dynamicky alokovaného pole: typ * uk = new typ [pocet_prvnku] Uvolneni dynamicky alokovaného pole: delete [] uk;

Pole a ukazatele Operátor Indexu [] lze použít i na dereferenci ukazatele a přistoupení k požadovanému prvku K prvkům pole lze přistupovat pomocí ukazatelů Operátor inkrementace ++ zvyšuje adresu ukazatele o velikost typu ukazatele

Struktury: Námi definvaný datový typ obsahující více položek jiných datových typů Zvyšuje čitelnost kódu Umožňuje tvořit dynamické datové struktury (spojový seznam,...) Předchůdce Objektů v C/C++ asi 5 způsobů definic, my se naučíme jeden.

Struktury: Obecně: typedef struct { typ nazev_polozky1; typ nazev_polozky2;... } nazev_strukury; Příklad: typedef struct { double re; double im; } komplexni_cislo;

Struktury použití: Deklarace proměné: nazev_struktury nazev_promenne; Pristup k polozkam struktury: nazev_strukury.nazev_polozky Pristup k polozkam dynamicky akokovaných strukur: (*uk).nazev_polozky uk->nazev_polozky

Rozdělení programu do více souborů: Zpřehlední kódu projektu Umožňuje tvorbu knihoven Funkce jednotého charakteru umístíme do separátního souboru Deklarace funkcí se umíst ují do Hlavičkového souboru nazev.h Definice funkcí se umíst ují do souboru nazev.cpp V souboru, kde budeme funkce volat připojíme hlavičkový soubor #include "nazev.h"

Hlavičkový soubor: nazev.h #ifndef MOJE_FUNKCE_H #define MOJE_FUNKCE_H #endif //deklarace funkcí typ nazev1(typ parametr); typ nazev2(typ parametr); //deklarace strukur,...

Implementační soubor: nazev.cpp #include "nazev.h" typ nazev1(typ parametr) { } typ nazev2(typ parametr) { }

Použití: main.cpp #include "nazev.h" int main(void) { nazev1(5); return 0; }

Řetězce Pole znaků char Deklarace char text[255]; Inicializace char text[]="hello World"; Hodnota jednoho znaku: a Posledni znak vždy 0: \0 Specialní znaky: \0 \t \n

Převod řetězce na číslo #include <stdlib.h> int strtol(char *text, char **end,int soustava); double strtod(char *text, char **end); Struktura text text na převedeni Otevření: end adresa ukazatele, na kterou se zapíše ukazatel ukazující prvni znak za převedenym čislem Pokud se konverze nezdaří pak *end==text

Soubory Funkce: Struktura FILE Otevření: FILE* fopen(char * nazev, char * mode); Uzavření: fclose(file* soubor); Módy: Čtení "r" Zápis: "w" Zápis na konex: "a"

Soubory Čtení char * fgets ( char * text, int max, FILE * soubor ) text misto pro uložení max maximální počet načtenych zanků soubor soubor otevřený pro čtení vrací: NULL když nic nenačte, jinak adresu načtených dat.

Soubory Zápis int fputs ( char * text, FILE * stream ); text text pro zapsání soubor soubor otevřený pro zápis vraci: počet zapsaných znaků

printf int printf ( char * format,... ); Výstup na STDOUT, obdoboa COUT format řetězec pro vypsani s řidicimi znaky... parametry dle řidicich znaku printf ( "cislo: %d \n",5);

printf %d vypis int %f vypis double %s vypis řetězce (char *) \n enter \t tabulator

fprintf int fprintf (FILE *soubor, char * format,... ); soubor soubor otevřený pro čtení format řetězec pro vypsani s řidicimi znaky... parametry dle řidicich znaku

sprintf int sprintf (char * s, char * format,... ); int sprintf ( char * s, int n, char * format,... ); int snprintf ( char * s, int n, char * format,... ) s vystupni řetězec n maximalni delka format řetězec pro vypsani s řidicimi znaky... parametry dle řidicich znaku

Konec A to je vše