Oblast platnosti identifikátoru (1)

Slides:



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

Standardní knihovní funkce pro práci s textovými řetězci
Programování v C jazyku - SEMINÁŘ
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Programovací jazyk C++
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
Programování 2 Cvičení 5.
25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Algoritmizace a programování Podprogramy v Delphi - 10
Středoevropské centrum pro vytváření a realizaci inovovaných technicko-ekonomických studijních programů Registrační číslo CZ.1.07/2.2.00/ Tento.
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í.
C# pro začátečníky Mgr. Jaromír Osčádal
Materiály k přednášce Úvod do programování Ondřej Čepek.
Generování mezikódu Jakub Yaghob
ADT Strom.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Metody řazení s lineární časovou složitostí
Procedury a funkce Základní charakteristika a použití v programu.
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
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Objektové programování
Algoritmy vyhledávání a řazení
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Počítače a programování 1
JavaScript Podmínky, cykly a pole.
Cvičení.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Proměnná typu "pole" Mezi proměnné typu "pole" patří všechny superglobální proměnné. Mezi proměnné typu "pole" patří všechny superglobální proměnné. To.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
JavaScript Funkce.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
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.
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES CYKLY V PHP.
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.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Pokročilé programování v C++ (část B)
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
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é.
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Počítače a programování 2
Typ struktura (1) Datový typ struktura (struct) je agrego-vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové.
Y36PJC Programování v jazyce C/C++
Programovací jazyk C# 4. část - cykly.
M2160 – Úvod do programování II
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é.
Y36PJC Programování v jazyce C/C++
Výukový materiál zpracován v rámci projektu
Vzorové řešení zápočtového testu
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.
Programování v jazyce C++
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Řetězce (24) Funkce strchr: deklarována v: string.h
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
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.
MU002 – Informační technologie Základy algoritmizace 5/13
Řetězce (1) Řetězec (string) je posloupnost znaků (hod-not typu char)
Typ ukazatel (1) Proměnné typu ukazatel (pointer) uchovávají paměťovou adresu Hodnota ukazatele říká, kde (na jaké adrese) se v paměti nachází nějaký objekt.
Algoritmizace a datové struktury (14ASD)
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Proměnné (1) Proměnná: Definice proměnných:
Transkript prezentace:

Oblast platnosti identifikátoru (1) Oblast (rozsah) platnosti identifikátoru je část programu, v níž je daný identifikátor viditel-ný (dostupný)  lze jej použít Identifikátorem rozumíme např. identifikátor proměnné, funkce nebo typu Definice identifikátorů (např. proměnných) lze rozdělit na: globální definice lokální definice 16/07/2018

Oblast platnosti identifikátoru (2) Globální definice (proměnných): definuje proměnné, jejichž oblast platnosti je od místa definice až do konce souboru vyskytují se vně definic funkcí Lokální definice (proměnných): definuje proměnné, jejichž oblast platnosti je od místa definice až do konce funkce, v níž jsou definovány vyskytují se uvnitř definic funkcí 16/07/2018

Oblast platnosti identifikátoru (3) Proměnné definované uvnitř bloku: jazyk C rovněž povoluje, aby proměnné byly de-finovány uvnitř složeného příkazu (bloku) oblast platnosti těchto proměnných je od místa definice až do konce složeného příkazu Proměnné definované v cyklu for: u příkazu cyklu for je možné v části inicializace definovat řídící proměnnou cyklu oblast platnosti této proměnné je omezena na právě prováděný cyklus 16/07/2018

Oblast platnosti identifikátoru (4) Poznámka: identifikátory označující formální parametry funkce mají oblast platnosti pouze uvnitř pro-váděné funkce (podobně jako lokální proměnné) identifikátory definované direktivou #define jsou platné až do konce souboru nebo do odstra-nění definice pomocí direktivy #undef příklad: #define N 100 #undef N 16/07/2018

Oblast platnosti identifikátoru (5) Jazyk C umožňuje, aby některé identifikátory byly překryty (zastíněny): identifikátor definovaný na vyšší úrovni (např. globální proměnná) může být překrytý identifiká-torem, který je stejně pojmenován a je definován na nižší úrovni (např. lokální proměnná) Poznámka: identifikátory: reprezentující formální parametry definované pomocí direktivy #define nemohou být překryty 16/07/2018

Funkce bez parametru Globálních proměnných je možné využít pro komunikaci funkce se svým okolím namísto komunikace pomocí formálních a skutečných parametrů Jsou-li uvnitř funkce globální proměnné mě-něny nežádoucím způsobem, může dojít k tzv. vedlejšímu efektu (side effect) Proto se pro zajištění vazby funkcí na své okolí preferuje užití formálních a skutečných parametrů 16/07/2018

Ukazatele na funkce (1) Jazyk C dovoluje definovat proměnnou jako ukazatel na funkci vracející hodnotu určitého datového typu Tato proměnná může následně obsahovat ad-resu, kde se v operační paměti nachází pře-dem definovaná funkce Definice proměnné, jež reprezentuje ukazatel na funkci se provádí: datový_typ (*ptrFun) (typy formálních parametrů); 16/07/2018

Ukazatele na funkce (2) datový_typ: ptrFun: typy formálních parametrů: typ hodnoty, kterou funkce (na níž bude ukazovat pro-měnná ptrFun) vrací ptrFun: identifikátor proměnné typu ukazatel na funkci musí být zapsán v kulatých závorkách typy formálních parametrů: seznam (pouze) datových typů specifikuje, jaké jsou typy formálních parametrů funk-ce, na níž bude proměnná ptrFun ukazovat jednotlivé typy se oddělují symbolem čárka 16/07/2018

Ukazatele na funkce (3) Příklad: double (*ptrFun) (int, int); definuje proměnnou ptrFun, která může obsahovat ukazatel na libovolnou funkci, jež má dva formální parametry typu int a vrací hodnotu typu double Nechť je dána např. funkce: double prumer(int x, int y) { return (x+y)/2.0; } 16/07/2018

Ukazatele na funkce (4) Potom lze provést přiřazení: ptrFun = prumer; Proměnná ptrFun nyní obsahuje ukazatel (adresu), kde se v operační paměti nachází funkce prumer Proměnnou ptrFun lze nyní použít pro vy-volání funkce prumer Příklad: double z; z = ptrFun(2,3); 16/07/2018

Ukazatele na funkce (5) Ukazatelů na funkce lze využít pro předání funkce jako parametru jiné funkci Příklad: double vypocet(int x, int y, double (*pF) (int, int)) { return pF(x,y); } z = vypocet(2,3,prumer); 16/07/2018

Ukazatele na funkce (6) Funkce qsort: deklarována v: stdlib.h prototyp: void qsort(void *base, size_t num, size_t size, int (*compar) (const void *, const void *)); funkce: seřadí num prvků pole, na jehož začátek ukazuje ukaza-tel base každý prvek řazeného pole zabírá v operační paměti size bytů 16/07/2018

Ukazatele na funkce (7) vrácená hodnota: pořadí prvků je určováno funkcí compar, která je opakovaně volána, aby provedla porovnání dvou prvků funkce compar musí: mít následující hlavičku: int compar(const void *p1, const void *p2); vracet hodnotu: <0 jestliže prvek odkazovaný pomocí p1 předchází prvek odkazovaný pomocí p2 0 jestliže prvek odkazovaný pomocí p1 je roven prvku odkazovanému pomocí p2 >0 jestliže prvek odkazovaný pomocí p1 následuje prvek odkazovaný pomocí p2 jako řadící algoritmu se používá metoda Quick sort vrácená hodnota: funkce nevrací žádnou hodnotu 16/07/2018

Ukazatele na funkce (8) Funkce bsearch: deklarována v: stdlib.h prototyp: void *bsearch(const void *key, const void *base, size_t num, size_t size, int (*compar) (const void *, const void *)); funkce: hledá zadaný klíč (na nějž ukazuje ukazatel key) v poli, na jehož začátek ukazuje ukazatel base prohledávané pole obsahuje num prvků a každý prvek pole zabírá v operační paměti size bytů 16/07/2018

Ukazatele na funkce (9) Poznámka: vrácená hodnota: porovnávání prvků je prováděno funkcí compar, pro kterou platí stejná pravidla jako u funkce qsort jako vyhledávací metoda je použito binární vyhledávání  prvky v zadaném poli musí být nejprve seřazeny vrácená hodnota: jestliže je prvek nalezen, pak funkce vrací ukazatel na nalezený prvek v opačném případě funkce vrací hodnotu NULL Poznámka: datový typ size_t je chápán jako celočíselný typ bez znaménka 16/07/2018

Makra (1) Pro realizaci jednodušších výpočtů lze místo funkcí využít i tzv. makra Makra je možné definovat pomocí direktivy preprocesoru #define Příklad: #define PRUMER(A,B) (((A)+(B))/2) Dříve definované makro lze následně použít x=PRUMER(3+5,2*8); 16/07/2018

Makra (2) Makra jsou zpracovávána preprocesorem na úrovni zdrojového kódu Preprocesor provede odpovídající náhradu makra jeho definicí: Např.: x=(((3+5)+(2*8))/2)); 16/07/2018

M2160 Úvod do programování II (1) Rekurze Řetězce Datový typ struktura Pojmenované datové typy Datový typ union Práce se soubory: textové soubory binární soubory Dynamické proměnné 16/07/2018

M2160 Úvod do programování II (2) Dynamické datové struktury: zásobník fronta binární vyhledávací strom Předávání parametrů z příkazové řádky OS Složitost algoritmů Úvod do objektově orientovaného programo-vání – jazyk C# Tvorba aplikací s grafickým uživatelským rozhraním (GUI) 16/07/2018