Zápis znakù pomocí výjimkových kódù

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

Práce s řetězci. IUJCE Přednáška č. 10. string.h. vrací: délku řetězce str (bez '\0')

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

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

Knihovny funkcí. Chyby v CRT. IUJCE Přednáška č. 9

Algoritmizace a programování

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

Paměť počítače. alg2 1

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Knihovní funkce jazyka C

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

Algoritmizace a programování

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

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Základy programování (IZP)

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

MS EXCEL_vybrané matematické funkce

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Algoritmy a datové struktury

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

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

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Algoritmizace a programování

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Úvod do programování. Lekce 1

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

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

Informatika Datové formáty

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Matematická analýza ve Vesmíru. Jiří Bouchala

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Datové typy a jejich reprezentace v počítači.

Základy algoritmizace a programování

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

Bakalářská matematika I

8. Elementární funkce. I. Exponenciální funkce Definice: Pro komplexní hodnoty z definujeme exponenciální funkci předpisem ( ) e z z k k!.

FUNKCE 2. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Čísla a číselné soustavy.

1.2 Realizace èekání pomocí jednoduché programové smyèky Pøíklad 3: Chceme-li, aby dítì blikalo baterkou v co nejpøesnìjším intervalu, øekneme mu: Roz

Základy programování (IZP)

UŽIVATELSKY DEFINOVANÉ FUNKCE

Iterační výpočty Projekt č. 2

Text může být postupně upravován a doplňován. Datum poslední úpravy najdete u odkazu na stažení souboru. Veronika Sobotíková

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

- tzv. standardní vstupní a výstupní proud (input / output stream)

. je zlomkem. Ten je smysluplný pro jakýkoli jmenovatel různý od nuly. Musí tedy platit = 0

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

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

x (D(f) D(g)) : (f + g)(x) = f(x) + g(x), (2) rozdíl funkcí f g znamená: x (D(f) D(g)) : (f g)(x) = f(x) g(x), (3) součin funkcí f.

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Sada 1 - Základy programování

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Øízený pøeklad - make

Architektury počítačů

Fz =a z + a z +...+a z +a z =

Ošetření chyb a výjimky

PŘEDNÁŠKA KURZU BPC2A

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Programy na PODMÍNĚNÝ příkaz IF a CASE

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

Příklad 1. Řešení 1a Máme vyšetřit lichost či sudost funkce ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 3

Popis funkcí a maker standardních knihoven

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

7. Datové typy v Javě

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

baspelin CPM Popis komunikaèního protokolu CPM KOMPR

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Úvod do programovacích jazyků (Java)

Jazyk C# a platforma.net

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

REÁLNÁ FUNKCE JEDNÉ PROMĚNNÉ

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

GeoGebra známá i neznámá (pokročilí)

MODAM Mgr. Zuzana Morávková, Ph.D.

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

Kapitola1. Lineární lomená funkce Kvadratická funkce Mocninná funkce s obecným reálným exponentem Funkce n-tá odmocnina...

Proměnná a její uložení v paměti

SBÍRKA ÚLOH I. Základní poznatky Teorie množin. Kniha Kapitola Podkapitola Opakování ze ZŠ Co se hodí si zapamatovat. Přírozená čísla.

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

Základy programování (IZP)

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

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

awk programovatelný filtr

Základy programování (IZP)

14 UKAZATELE A ØETÌZCE

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

I. Kalkulátor Rebell SC2040 manuál s příklady Tlačítko: MODE CLR

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

Základy programování (IZP)

2. cvičení z ZI1 - Excel

Základy jazyka C. Základy programování 1 Tomáš Kühr

Vytváøení sí ového diagramu z databáze: pøíklad

v aritmetické jednotce počíta

Sada 1 - PHP. 03. Proměnné, konstanty

Transkript:

Výjimkové kódy Zápis znakù pomocí výjimkových kódù '\r' '\n' '\t' '\\' '\'' '\"' '\0' '\377' '\xa7' CR (carriage return) LF (line feed) tabulátor zpìtné lomítko apostrof uvozovka ASCII 0 ASCII 255 ASCII 167 x musí být malé! následují 2 šestnáctkové èíslice \ <spec-znak> \ <osmièkový-kód> \x<šestnáctkový-kód> ASCII* kód znaku v osmièkové soustavì (max. 3 èíslice)

Øetìzcové konstanty - I. Øetìzcové konstanty - posloupnost znakù uzavøená v uvozovkách, lze používat výjimkové kódy stejnì jako u znakových konstant "" "\" Nazdar! \"" "Stisknìte libovolnou klávesu. \n" "Velmi dlouhá øetìzcová konstanta je roz\ dìlená na více øádek (i v klasickém C)" text musí zaèínat na zaèátku øádky - pøípadné mezery, tabulátory, apod. budou souèástí øetìzce "Tato dlouhá øetìzcová konstanta pak je roz" "dìlená pouze v ANSI C" v ANSI C je možné "sestavit" øetìzcovou konstantu z více èástí, obsah øetìzce je pouze uvnitø uvozovek, tj. mezery, tabulátory, apod. na zaèátku øádky nevadí

Øetìzcové konstanty - II. Deklarace øetìzcových konstant char s1[] = "abcdef"; char *s2 = "ghijkl"; znaky v øetìzci lze vždy pøepisovat znaky v øetìzci nelze pøepisovat - je-li nutné explicitnì zabránit pøepisování øetìzce, lze uvést const char msg[] = "Message..."; POZOR! sizeof("abcdef") == 7 char *str1, *str2; str1 = "abcd"; str2 = "abcd"; if (str1 == str2)... pøekladaè za øetìzcovou konstantu automaticky pøipojí '\0' pøekladaè mùže (ale nemusí) stejné øetìzcové konstanty sdílet

Znakové a øetìzcové konstanty Znakové a øetìzcové konstanty - znaková konstanta: jeden nebo více znakù uzavøených v apostrofech const int c = 'A'; const int c = 'ABCD'; - implicitnì je znaková konstanta typu int, je ale možné pøekladaè pøimìt, aby jí deklaroval jako long int a to uvedení prefixu L: L'A' hodnota c je 65 hodnota c je 0x41424344 nebo (dle arch) 0x44434241 - nìkteré pøekladaèe (napø. Watcom) znakové konstanty s prefixem L pøekládají jinak, než definuje norma ANSI C - pokud se zapsaná znaková konstanta nevejde do implicitního datového typu (int), hlásí pøekladaè chybu

Zpracování znakù - I. Zpracování znakù - všechny funkce pro zpracování znakù (dále popsané) jsou definované ve standardní knihovnì ctype, tj. pøipojit pomocí #include <ctype.h> - funkce jsou dvojího druhu: klasifikaèní a pøevodní - jména klasifikaèních funkcí zaèínají prefixem is... a vrací nulovou nebo nenulovou hodnotu (int) podle toho, zda daný znak nepatøí nebo patøí do urèité tøídy znakù - jména pøevodních funkcí zaèínají prefixem to... a vrací hodnotu typu int reprezentující pøevedený znak - POZOR! - v nìkterých implementacích pùsobí problémy nestandardní znaky (znaky nár. abeced, "široké" znaky)

Zpracování znakù - II. isalnum(), isalpha() a iscntrl() int isalnum(int c); int isalpha(int c); int iscntrl(int c); - isalnum() vrací nenulovou hodnotu, je-li c v množinì znakù {'0'..'9', 'A'..'Z', 'a'..'z'} (shodné s isalpha(c) isdigit(c)) - isalpha() vrací nenulovou hodnotu, je-li c velké nebo malé písmeno (shodné s islower(c) isupper(c)) - iscntrl() vrací nenulovou hodnotu, je-li c v množinì øídicích znakù {'\0'..'\037', '\177'} (pro ASCII)

Zpracování znakù - III. isdigit(), isxdigit() a isspace() int isdigit(int c); int isxdigit(int c); int isspace(int c); - isdigit() vrací nenulovou hodnotu, je-li c v množinì znakù {'0'..'9'} - isxdigit() vrací nenulovou hodnotu, je-li c v množinì znakù {'0'..'9', 'A'..'F', 'a'..'f'} - isspace() vrací nenulovou hodnotu, je-li c v množinì tzv. bílých znakù {'\t', '\r', '\n', '\f', '\v', ' '}

Zpracování znakù - IV. isgraph(), isprint() a ispunct() int isgraph(int c); int isprint(int c); int ispunct(int c); - isgraph() vrací nenulovou hodnotu, je-li c v množinì grafických znakù, tj. všech kromì bílých znakù - isprint() vrací nenulovou hodnotu, je-li c v množinì tisknutelných znakù - pro ASCII {'\040'..'\176'} (ve vìtšinì implementací shodné s!iscntrl(c)) - ispunct() vrací nenulovou hodnotu, je-li c v množinì tzv. interpunkèních znakù {'!', '"', '#', '$', '%', '^', '(', ')',...}

Zpracování znakù - V. islower() a isupper() a tolower() a toupper() int islower(int c); int isupper(int c); - islower() vrací nenulovou hodnotu, je-li c v množinì malých písmen {'a'..'z'} - isupper() vrací nenulovou hodnotu, je-li c v množinì velkých písmen {'A'..'Z'} int tolower(int c); int toupper(int c); - pøevádí c na malé/velké písmeno nebo vrací nezmìnìný - POZOR! - pro nìkteré znaky národních abeced neumí pøevod provést => vrací nezmìnìný parametr

Matematické funkce - I. Matematické funkce - vìtšina matematických funkcí je definovaná v knihovnì math, tj. pøipojit pomocí #include <math.h> - nìkteré (celoèíselné, absolutní hodnoty) jsou definované v knihovnì stdlib - o vzniklých chybách informuje globální promìnná int errno z knihovny errno - mùže nastat chyba oboru EDOM nebo rozsahu ERANGE - tradièní návratovou hodnotou v pøípadì chyby je 0, ale nìkteré implementace mají možnost vracet speciální hodnoty NaN (Not a Number), +Inf (Positive Infinity) a -Inf (Negative Infinity) - tuto možnost ostatnì nabízí i norma IEEE pro zobrazení èísel s pohyblivou øádovou èárkou

Matematické funkce - II. abs(), labs(), fabs(), div() a ldiv() int abs(int x); long labs(long x); double fabs(double x); } - vrací absolutní hodnotu svých argumentù div_t div(int n, int d); ldiv_t ldiv(long n, long d); definovány ve <stdlib.h> - vypoèítávají zároveò podíl a zbytek po celoèíselném dìlení hodnoty n hodnotou d - typ div_t je definován jako: struct div_t { int quot; int rem; } - ldiv analogicky pro typ long

Matematické funkce - III. ceil(), floor(), fmod() double ceil(double x); double floor(double x); double fmod(double x, double y); - ceil() vrací nejmenší reálné èíslo, které není menší než x a jehož hodnota je celoèíselná - floor() vrací nejvìtší reálné èíslo, které není vìtší než x a jehož hodnota je celoèíselná - fmod() vrací zbytek po celoèíselném dìlení hodnoty x hodnotou y - definice pro typ double staèí, promìnné typu float se na nìj automaticky rozšíøí (na PC se obvykle vnitønì pracuje s 80-bitovým desetinným èíslem, typ extended - není souèástí ANSI C)

Matematické funkce - IV. exp(), log(), log10() double exp(double x); double log(double x); double log10(double x); - exp() vypoèítává exponenciální funkci promìnné x, tj. x e, kde e je základ pøirozených logaritmù - log() vypoèítává pøirozený logaritmus hodnoty x - je-li x záporné, nastává chyba oboru (EDOM); je-li x blízké nule, mùže nastat chyba rozsahu (ERANGE) smìrem k -Inf - log10() vypoèítává logaritmus pøi základu 10 - podmínky chyby jsou stejné jako v pøípadì log()

Matematické funkce - V. Logaritmus o jiném základì - jazyk C neposkytuje funkci pro výpoèet logaritmu o jiném základì než 10 (log10()) a e (log()) - je tøeba využít matematického poznatku, že log x = n log x 10 log n 10 - v informatice užiteèný logaritmus dualis (dvojkový logaritmus), který vypoèítává poèet bitù nutných k uložení x rùzných stavù (hodnot), lze nadefinovat takto double log2(double x) { return log(x) / log(2); }

Matematické funkce - VI. frexp(), ldexp(), modf() double frexp(double x, int *nptr); double ldexp(double x, int n); double modf(double x, double *nptr); - frexp() rozdìlí reálné èíslo x na mantisu z intervalu 0 U [0.5, 1) a exponent - mantisa se pøedává jako návratová hodnota, exponent se uloží na adresu nptr - ldexp() je funkce inverzní - modf() rozdìlí reálné èíslo x na desetinnou èást, která se vrací jako návratová hodnota a na celou èást, která se uloží na adresu nptr modf() je nevhodné jméno, protože navrácená hodnota je desetinnou èástí pøedaného argumentu

Matematické funkce - VII. Mocniny - pow() a sqrt() double pow(double x, double y); double sqrt(double x); y - pow() vypoèítá hodnotu x - chyba oboru (EDOM) nastane, když je x záporné a y není celé, nebo je-li x nula a y není kladné - sqrt() vypoèítává nezápornou druhou odmocninu z x - chyba nastane, je-li x záporné Obecná odmocnina 1 n x n = x

Matematické funkce - VIII. Generátor náhodných èísel - srand() a rand() int rand(void); void srand(unsigned seed); - rand() vrací pøi každém volání jinou celoèíselnou hodnotu z intervalu <0, RAND_MAX> - RAND_MAX je definováno ve stdlib a musí mít (dle ANSI normy) hodnotu alespoò 32767 - srand() lze použít pro nastavení poèáteèní hodnoty generátoru pseudonáhodných èísel - inicializuje-li se generátor stejnou hodnotou, sekvence následných volání rand() vrací stejné posloupnosti èísel - není-li generátor zinicializován voláním srand(), vrací rand() takovou posloupnost hodnot, jako by inicializace byla provedena èíslem 1 - generátor produkuje èísla s rovnomìrným rozdìlením } definovány ve <stdlib.h>

Matematické funkce - IX. Goniometrické funkce - sin(), cos(), tan() double sin(double x); double cos(double x); double tan(double x); - argument se oèekává v radiánech - chyba oboru (EDOM) ani rozsahu (ERANGE) nenastane, ale výsledek nemusí mít význam pro velké hodnoty x - chyba rozsahu mùže nastat u funkce tan() pro hodnoty x blízké sudému násobku

Matematické funkce - X. Cyklometrické funkce - asin(), acos(), atan(), atan2() double asin(double x); double acos(double x); double atan(double x); double atan2(double y, double x); - návratová hodnota je v radiánech - chyba oboru (EDOM) nastane v pøípadì funkcí asin() a acos() tehdy, leží-li argument mimo interval (-1, 1) - chyba oboru (EDOM) ani rozsahu (ERANGE) nenastane v pøípadì atan() - atan2() vrací (v termínech kartézského souøadného systému) úhel mezi osou x a pøímkou procházející bodem o souøadnicích [x, y]; chyba nastane, jsou-li oba parametry rovny nule

Matematické funkce - XI. Hyperbolometrické funkce - sinh(), cosh(), tanh() double sinh(double x); double cosh(double x); double tanh(double x); - chyba rozsahu (ERANGE) nastane tehdy, je-li absolutní hodnota parametru funkcí sinh() nebo cosh() veliká