Algoritmizace a programování

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

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 -

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

Algoritmizace a programování

Algoritmizace a programování

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

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

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

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

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

Jazyk C stručný přehled

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

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

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

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

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

Programování v jazyce C pro chemiky (C2160) 10. Grafická knihovna g2

Programovací jazyk C++ Hodina 1

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

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

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

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

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

Odvozené a strukturované typy dat

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

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Struktura programu v době běhu

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

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Opakování programování

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

PREPROCESOR POKRAČOVÁNÍ

Úvod do programování. Lekce 1

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

Sada 1 - Základy programování

Dílčí příklady použití jazykových konstrukcí v projektu. Jazyk C Příklady. Pravidla překladu v gmake. Zadání

Třídy a struktury v C++

Programování v jazyce C a C++

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

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

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

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

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

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

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ý

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

Algoritmizace a programování

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

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

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;

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

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

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

Abstraktní datové typy, moduly

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

11. Přehled prog. jazyků

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

Abstraktní třídy, polymorfní struktury

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

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

Zápis programu v jazyce C#

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

Programování v jazyce C a C++

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

Profilová část maturitní zkoušky 2017/2018

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

Základy programování (IZP)

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

Procesy a vlákna (Processes and Threads)

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

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

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

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

Základy programování (IZP)

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í

Algoritmizace a programování

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

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

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, #include "stdafx.h" #include "stdio.h"

Prezentace a vysvětlení programového prostředí NXC

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

Algoritmizace a programování

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

Algoritmizace a programování

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

Assembler - 5.část. poslední změna této stránky: Zpět

Úvod do programovacích jazyků (Java)

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

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

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Algoritmizace prostorových úloh

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

Úvod do programování. Lekce 3

2 Datové typy v jazyce C

ČÁST 1. Základy 32bitového programování ve Windows

Základy programování (IZP)

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

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

Transkript:

Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura (1) Struktura je množina prvků (proměnných), které nemusí být stejného typu Skladba struktury je definovaná uživatelem jako nový typ sestavený z již definovaných typů K prvkům struktury se přistupuje tečkovou notací K prvkům struktury je možné přistupovat i pomocí ukazatele na strukturu operátorem -> A8B14ADP Jazyk C - Strukturované proměnné 2 J. Zděnek - 2011 1

Struktury mohou být vnořené Struktura (2) Pro struktury stejného typu je definována operace přiřazení struct1=struct2 (pro proměnné typu pole přímé přiřazení není definováno, jen po prvcích) Struktury (jako celek) nelze porovnávat relačním operátorem == Struktura může být do funkce předávána hodnotou i odkazem Struktura může být návratovou hodnotou funkce A8B14ADP Jazyk C - Strukturované proměnné 3 Struktura (3) Struktura (struct) - sablona (tag): př: struct Tid{ // <==== Tid=jmeno sablony (tag) char jmeno[20]; // Prvky struktury, pole char adresa[50]; // - - pole long int telefon; // - - int }; struct Tid sk1,skavt[20]; // struktura, pole struktur struct Tid *pid; // ukazatel na strukturu sk1.jmeno= Jan Novak ; // teckova notace sk1.telefon=123456; skavt[0].jmeno= Jan Novak ; // prvek pole skavt[3].telefon=123456; pid=&sk1; // do pid adresa struktury pid->jmeno= Jan Novak ; // odkaz pomoci -> pid->telefon=123456; (*pid).jmeno= Jan Novak ; // odkaz pomoci * (*pid).telefon=123456; A8B14ADP Jazyk C - Strukturované proměnné 4 J. Zděnek - 2011 2

Struktura (4) Struktura (struct) - nový typ (typedef): př: typedef struct { // <==== Pomoci Typedef char jmeno[20]; // Prvky struktury, pole char adresa[50]; // - - pole long int telefon; // - - int }Tid,*Tidp; Tid sk1,skavt[20]; // struktura, pole struktur Tidp pid; // ukazatel na strukturu sk1.jmeno= Jan Novak ; // teckova notace sk1.telefon=123456; skavt[0].jmeno= Jan Novak ; // prvek pole skavt[3].telefon=123456; pid=&sk1; // do pid adresa struktury pid->jmeno= Jan Novak ; // odkaz pomoci -> pid->telefon=123456; (*pid).jmeno= Jan Novak ; // odkaz pomoci * (*pid).telefon=123456; A8B14ADP Jazyk C - Strukturované proměnné 5 Struktura (struct) - inicializace: Struktura (5) př: struct Tid{ char jmeno[20]; // <==== Tid=jmeno sablony (tag) // Prvky struktury, pole char adresa[50]; // - - pole long int telefon; // - - int }; struct Tid sk1={ Jan Novak, Na kopecku 23, 123456}; A8B14ADP Jazyk C - Strukturované proměnné 6 J. Zděnek - 2011 3

Union (1) Sdílená paměť (union): Union je množina prvků (proměnných), které nemusí být stejného typu Prvky unionu sdílejí společně stejná paměťová místa (překrývají se) Velikost unionu je dána velikostí největšího z jeho prvků Skladba unionu je definovaná uživatelem jako nový typ sestavený z již definovaných typů A8B14ADP Jazyk C - Strukturované proměnné 7 Union (2) K prvkům unionu se přistupuje tečkovou notací: př: union Tnum{ long n; double x }; // <==== Tnum=jmeno sablony (tag) union Tnum nx; // nx - promenna typu union Tnum nx.n=123456789l; // do n hodnota long nx.x=2.1456; // do x hodnota double (prekryva n) A8B14ADP Jazyk C - Strukturované proměnné 8 J. Zděnek - 2011 4

Preprocesor (1) Preprocesor (Preprocessor): Zdrojový text programu v C je před vlastní překladem předzpracován Předzpracování provede Preprocesor takto: - Odstraní komentáře - Nahradí makra jejich definicí - Vykoná ostatní direktivy preprocesoru Každá direktiva preprocesoru začíná na samostatném řádku znakem # Příliš dlouhou příkazovou řádku je možné rozdělit znakem \ A8B14ADP Jazyk C - Strukturované proměnné 9 Preprocesor (2) Direktivy preprocesoru umožňují: Definovat makra a rušit jejich definice #define, #undef Testovat zda je makro definováno #defined Vkládat do zdrojového textu hlavičkové soubory #include Řídit podmíněný překlad #if, #elif, #else, #endif, #ifdef, #ifndef Definovat nové příkazy preprocesoru závislé na implementaci #pragma A8B14ADP Jazyk C - Strukturované proměnné 10 J. Zděnek - 2011 5

Standardní knihovny (1) Standardní knihovny (ANSI C library Standard Library) : Vlastní jazyk C neobsahuje žádné prostředky pro: vstup a výstup dat, složitější matematické operace, práci s řetězci, třídění, blokové přesuny dat v paměti, práci s datem a časem, komunikaci s operačním systémem, správu paměti pro dynamické přidělování, vyhodnocení běhových chyb (run-time errors) apod. Tyto a další funkce jsou však obsaženy ve standardních knihovnách (ANSI C Library) dodávaných s překladači jazyka C. A8B14ADP Jazyk C - Strukturované proměnné 11 Standardní knihovny (2) Uživatel dostává k dispozici: přeložený kód knihoven (který se připojuje linkuje k uživatelovu kódu) hlavičkové soubory (headers) s prototypy funkcí, novými typy, makry a konstantami Hlavičkové soubory (obdoba interface v Javě) se připojují k uživatelovu kódu direktivou preprocesoru #include < >. Je zvykem, že hlavičkové soubory mají rozšíření *,h, např. stdio.h A8B14ADP Jazyk C - Strukturované proměnné 12 J. Zděnek - 2011 6

Standardní knihovny (3) Standardní knihovny jsou rozděleny do následujících částí (uvedeno pro ANSI C95): Vstup a výstup (formátovaný i neformátovaný) stdin.h Rozsahy čísel jednotlivých typů limits.h Matematické funkce stdlib.h math.h Zpracování běhových chyb (run-time errors) errno.h assert.h A8B14ADP Jazyk C - Strukturované proměnné 13 Standardní knihovny (4) Standardní knihovny jsou rozděleny do následujících částí (pokrač.): Klasifikace znaků (typ char) ctype.h Práce s řetězci (string handling) string.h Internacionalizace (adaptace pro různé jazykové mutace) locale.h Vyhledávání a třídění stdlib.h Blokové přenosy dat v paměti string.h A8B14ADP Jazyk C - Strukturované proměnné 14 J. Zděnek - 2011 7

Standardní knihovny (5) Standardní knihovny jsou rozděleny do následujících částí (pokrač.): Správa paměti (Dynamic Memory Management) stdlib.h Datum a čas time.h Komunikace s operačním systémem stdlib.h signal.h Nelokální skok (lokální je součástí jazyka, viz goto) setjump.h A8B14ADP Jazyk C - Strukturované proměnné 15 Algoritmizace a programování Strukturované proměnné Struktura, union KONEC České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné 16 J. Zděnek - 2011 8