A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze 2009.01.

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

(instance konkrétní třídy)
Programování v C jazyku - SEMINÁŘ
Programování funkcí v Excelu
Standardní knihovní funkce: matematika a datum a čas
Základní pojmy v jazyce C
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Algoritmizace a programování
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Operátory (1. část) 3 A1PRG - Programování – Seminář
Datové typy 6 A1PRG - Programování – Seminář
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Sémantická analýza Jakub Yaghob
DEKLARACE PROMĚNNÝCH A KONSTANT
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Počítače a programování 1
Cvičení.
Vstupy a výstupy znaků a) Terminálový vstup a výstup ( getchar(), putchar() ) Přečtěte znak pomocí systémové funkce getchar() a vypište ho pomocí putchar().
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Napište program v C pro výpočet plochy obdélníka se stranami A=3 a B=2. Výsledek vytiskněte s patřičným komentářem na obrazovku formátovým příkazem printf.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
A1PRG - Programování – Seminář Ing. Michal Řízení běhu programu 5 Verze
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
C# - konverze datových typů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
Pokročilé programování v C++ (část B)
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
C – procedury Mgr. Lenka Švancarová.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Úvod do programování2 Vyučující: Mgr. Vítězslav Jersák Web: xjv.webnode.cz.
POSLOUPNOST test. ZKUSTE ODPOVĚDĚT Co je to komentář? Poznámky, které nám pomohou pochopit, když se k programu vrátíme po delší době, co jsme chtěli tou,
Programování v jazyce C++
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Překladače 6. Sémantická analýza
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Počítače a programování 2
PB071 – Programování v jazyce C Jaro 2017
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Překladače Syntaktická analýza
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Programování v jazyce C++
Oblast platnosti identifikátoru (1)
Typ pole (1) Proměnná typu pole představuje kolekci proměnných stejného datového typu, které mohou být označovány společným jménem (identifikátorem) Pole.
Překladače 6. Sémantická analýza
Opakování ze 3. cvičení deklarace proměnných výpis na monitor (výstup)
C# přehled vlastností.
Transkript prezentace:

A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze

Agenda  Typová konverze  Oblast platnosti  Paměťové třídy

Typová konverze  Řeší situaci, kdy s určitou proměnnou potřebujeme pracovat jako s proměnnou jiného datového typu.  Typová konverze je pouze dočasná – tj. je platná pouze pro daný výraz.  2 druhy typové konverze:  Implicitní  Explicitní

Implicitní typová konverze  Probíhá automaticky (bez zásahu programátora).  Datový typ s nižší prioritou je automaticky konvertován na datový typ s vyšší prioritou.  Př. int x = 5; int y = 2; float z = x + y;

Implicitní typová konverze  Priorita datových typů: int unsigned int long unsigned long double long double

Explicitní typová konverze  Označována termínem „přetypování“.  Požadovaný datový typ se uvede do závorky před identifikátor proměnné.  Př. int x = 5; int y = 2; float z = x / (float)y;

Přetypování  Přetypování je nutné důkladně uvážit – může totiž ovlivnit správnost výsledku.  Příklad: float x = 2.816; int y = 3; int z; z = (int)(x * y); z = (int)x * y;

Oblast platnosti  Oblast zdrojového kódu, ve které je daná proměnná viditelná.  Oblasti platnosti proměnných:  Lokální proměnná  Globální proměnná

Oblast platnosti  Lokální proměnná:  Je definována uvnitř programového bloku (většinou funkce).  Je možné k ní přistupovat pouze v rámci bloku, ve kterém byla definována.  Není inicializována na výchozí hodnotu (obsahuje náhodné číslo) – nutno ji inicializovat

Oblast platnosti  Globální proměnná:  Je definována mimo jakoukoliv funkci.  Je platná od místa definice až do konce zdrojového souboru.  Je inicializována na výchozí nulovou hodnotu

Oblast platnosti - příklad

Paměťové třídy  Kromě identifikátoru a datového typu jsou proměnné určeny ještě paměťovou třídou, které náleží.  Paměťová třída určuje, kde bude proměnná v paměti uložena, jakou bude mít viditelnost a jakou životnost.

Paměťové třídy  Modifikátory:  auto  extern  static  register  volatile  const

Modifikátor auto  Implicitně používán pro všechny lokální proměnné, jejichž paměťová třída nebyla určena jiným modifikátorem.  Slouží pro vytváření automatických proměnných – paměť se pro ně alokuje až při vstupu do bloku, kde jsou definovány.  Po opuštění bloku je tato paměť opět uvolněna.

Modifikátor auto  V případě návratu do stejného bloku paměť znovu alokována.  Neexistuje záruka, že bude alokována na stejném místě!  Neexistuje záruka, že v této paměti bude stejná hodnota, jako na konci předešlého průchodu blokem.  Nejsou implicitně inicializovány nulovou hodnotou.

Modifikátor auto  Není nutné inicializovat konstantou, možno inicializovat i proměnnou nebo návratovou hodnotou funkce:  Př.: auto int x = 5; auto float y = (float)x; auto long z = pow(3,x);

Modifikátor auto  Proměnná s modifikátorem auto platí pouze v bloku, kde byla definována.  Existuje-li i globální proměnná se stejným názvem, bude použita proměnná s modifikátorem auto

Modifikátor auto - příklad #include int hodnota = 10; int vypocet() { auto int hodnota; hodnota = 15; printf(″%d″,hodnota); return 0; } int main() { vypocet(); printf(″%d″,hodnota); return 0; }

Modifikátor extern  Použití při odděleném překladu souborů  Říká překladači, že daná proměnná je definována v jiném souboru – zpřístupní se pro daný soubor  Namísto definice je tedy použita deklarace proměnné

Modifikátor extern - příklad soubor s1.c: … int hodnota; … Soubor s2.c: … extern int hodnota; …

Modifikátor static  Slouží pro vytváření statických proměnných.  Viditelnost shodná s automatickou proměnnou (tj. pouze v bloku, kde je definována – mimo tento blok není viditelná, ale na dané paměťové pozici zůstává).  Platnost po celou dobu vykonávání programu (tj. při opakovaném průchodu bloku si pamatuje hodnotu).

Modifikátor static #include int funkce() { static int i=0; i = i+2; return i; } int main() { int j; for (j=0; j<10; j++) printf("%d ", funkce()); return 0; }

Modifikátor register  Modifikátor, který ovlivňuje optimalizaci kódu programu.  Možnost uložit proměnnou přímo do registru procesoru.  Použití klíčového slova register pouze doporučuje umístění do registrů procesoru, záleží na překladači a jejich obsazenosti.

Modifikátor register  Modifikátor, který ovlivňuje optimalizaci kódu programu.  Možnost uložit proměnnou přímo do registru procesoru.  Použití klíčového slova register pouze doporučuje umístění do registrů procesoru, záleží na překladači a jejich obsazenosti.

Modifikátor register  Možno vytvářet pouze pro lokální proměnné  Životnost a viditelnost stejná jako u automatické proměnné.  Nemožnost používat operátor reference.

Modifikátor register - příklad #include int main() { register int x = 5; x = x + 1; printf(″%d″,x); return 0; }

Modifikátor volatile  Ovlivňuje optimalizaci kódu.  Takto označená proměnná nebude optimalizována.  Používá se především v případech, kdy hodnota proměnné může být měněna nějakým asynchronním procesem z vnějšku programu, např. pomocí přerušení.

Modifikátor volatile - příklad volatile int i; i=0; while (i==0) ; //smyčku ukončí až vnější událost, která //změní hodnotu i

Modifikátor const  Vytváření konstantních proměnných  Konstantní proměnná:  Nelze ji měnit přiřazením.  Hodnotu lze přiřadit pouze inicializací při její definici.  Alternativa k symbolickým konstantám (zabírá však místo v paměti).  Lze měnit pouze pomocí ukazatelů.

Modifikátor const - příklad #include int main() { const int hodnota = 20; int *ukazatel = &hodnota; //chyba, nelze provést: hodnota=30; printf("%d\n", hodnota); // nepřímá změna hodnoty konst. Proměnné: *ukazatel = 40; printf("%d\n", hodnota); }

A1PRG-s 09. Typová konverze Děkuji za pozornost Ing. Michal Heczko 218/U3 Prezentace k dispozici na