2 Datové typy v jazyce C



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

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

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

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

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

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

Základy programování (IZP)

Odvozené a strukturované typy dat

Ú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 }

Zjednodušené základy jazyku C. Josef Podstata

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

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

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

Základy algoritmizace a programování

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

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

Algoritmizace a programování

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

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

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

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

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í

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

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

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

Programovací jazyk C++ Hodina 1

Programovací jazyk Pascal

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

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

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

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

ALGORITMIZACE A PROGRAMOVÁNÍ

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

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

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

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

7: #include <stdio.h> //standardni knihovna

Výčtový typ strana 67

Zápis programu v jazyce C#

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Úvod do programování. Lekce 1

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Základy programování (IZP)

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

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

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

NPRG031 Programování II --- 2/2 Z, Zk

POČÍTAČE A PROGRAMOVÁNÍ

Základy programování (IZP)

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

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

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

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

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

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

Základy programování (IZP)

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.

Úvod do programovacích jazyků (Java)

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

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

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

Programování v jazyce C pro chemiky (C2160) 6. Funkce, struktury

1. D Y N A M I C K É DAT O V É STRUKTUR Y

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

Sada 1 - Základy programování

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

Algoritmizace prostorových úloh

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

Objektově orientované programování

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

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

MAXScript výukový kurz

Algoritmizace a programování

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 -

Algoritmizace a programování

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

1. Téma 03 - Rozhodování

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základy algoritmizace a programování

Úvod do programovacích jazyků (Java)

Programujeme v softwaru Statistica

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

Algoritmizace prostorových úloh

Úvod do programování. Lekce 5

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

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

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

6. Příkazy a řídící struktury v Javě

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Třídy a struktury v C++

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

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

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

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Transkript:

1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý, a nepřehledný program, je rozdělení úlohy na dílčí podúlohy, které jsou implementovány v jednotlivých funkcích. Každý procedurální programovací jazyk má vnitřně implementované konstrukty pro proramové cykly (for cykly, while cykly). Navíc je zpravidla přidána možnost sestavení nových datových struktur z vnitřně definovaných. 2 Datové typy v jazyce C Základní jednotou informace je bit, ta nabývá dvou hodnot 0 nebo 1. Prakticky si realizaci bitu můžeme představit jako přepínač, kdy poloha on odpovídá 1 a poloha off odpovídá 0. V paměti počítače jsou bity organizovány do větší struktury obsahující 8 bitů. Tato jednotka je pojmenována byte. Table 1: Datové typy v C jmého datového typu velikost v bytech (B) obsah char 1 znak int 4 celé číslo float 4 číslo s plovoucí desetinou čárkou double 8 číslo s plovoucí desetinou čárkou 3 Odvozené datové typy Pomocí konstrukce typedef struct<structure body><name> můžeme odvodit vlastní typy které obsahují více položek. Například definujme strukturu VECTOR. typedef structfloat x,y,z; VECTOR; V programu pak deklarujete, např., proměnnou v jako typ VECOR následně 1

VECTOR v; K jednotlivým prvkům struktury pak přistupujet pře operátor tečka, tj.,.. Podívejte se na následující příklad p.x=1.0; p.y=2.0; p.z=7.0; 4 Pole Pro potřeby automatického zpracování více dat stejného datového typu se dobře hodí pole. Pole je od ostatních proměnných odlišuje hranatými závorkami za jménem proměnné. Napřiklad deklarujeme pole A o 10 prvcích datového typu int, int A[10]; Jednotlivé prvky pole jsou od sebe odlišeny intexem od 0 do 9, tj., prvky výše deklarovaného pole A jsou A[0], A[1], A[2],..., A[9]. Takto jsem si ukázali deklaraci jednozorměrného pole. Pro případ dvourozměrného pole je postup následující, int B[2][10]; Tímto příkladem jsme deklarovali pole B které má 2 řádky a 10 sloupců. U vícerozměrných polí postupujeme analogicky. 5 Funkce main Ve svém programu můžete definovat bezpočet funkcí. Mezi nimi však musí být jedna vyjímečná, která je volána systémem jako první, je to funkce main. Každá funkce se skládá z hlavičky obsahující vrácený datový typ, název funkce a v kulatých závorkách argumenty funkce. V případě funkce main budeme používat její hlavičku ve tvaru 2

int main(int c, char *argv[]) kde je vidět, že vrací hodnotu typu int, prvním argumentem je počet argumentů na příkazové řádce, a jejím druhým argumentem je pole řetězců obsahující hodnoty argumentů na příkazové řádce. Uveďmě jednoduchý příklad programu v C. 6 Hello world V této sekci uvádím sérii variací na příklad HelloWorld. Začněme tou nejjednodušší první variantou int main(int c, char *argv[]) printf("hello world\n"); Na prvním řádku je tzv. direktiva preprocesoru pro vkládání jiného souboru. V tomto případě je to soubor stdio.h, který obsahuje hlavičky ke standartním vstupně/výstupním (I/0) fukcím. Na druhém řádku je hlavička hlavní funkce, funkce main. Tělo funkce je uvozeno kroucenými závorkami. V těle funkce jsou dva řádky. Na prvním řádku voláme funkci printfjejímž argumentem je řetězec, který má být vytištěn na standartní výstup (většinou na obrazovku). Všimněte si, řádek je ujončen středníkem( ; ). Středník vždy ukončuje řádek. Na druhém řádku je příkaz return, kterým systém informujeme o stavu ukončeného programu (zda proběhl vpořádku, pokud ne tak jaká nastala chyba). V dalším příkladu si ukážeme jak vytisknou na obrazovku počet argumenů na řádce taky jednotlivé argumenty. int main(int c, char *argv[]) int i; printf("hello world\n"); for(i=0;i<c;i++) 3

printf("argv[%d]=%s\n",i,argv[i]); V tomto příkladu přibylo několik nových řádků. Nejprve si všimněte deklarace proměnné (int i;). Tímto řádkem jsme v paměti počítače staticky alokovali 4 byty pro celočíselnou proměnou i,která slouží k indexaci pole argv.za voláním příkazu printfpřibyl cyklus for, ve které se bude v každém kroku cyklu zvyšovat hodnota uložená v io jedničku (i++) a to postupné od 0 až po hodnotu uloženou v proměnné c. V každém kroku cyklu je volána funkce printf, která vytiskne na obrazovku hodnotu indexu ia hodnotu argumentu argv[i]. 7 Řešení kvadratická rovnice Když zapíšeme obecnou kvadratickou rovnici ve tvaru tak její řešení hledáme ve tvaru ax 2 +bx+c = 0 (1) x 1 = b+ D 2a x 2 = b D 2a kde je D diskriminant rovnice, jehož hodnotu určíme z výrazu (2) (3) D = b 2 4ac (4) Před samotným programováním musíme provést analýzu úlohy. Jaké hodnoty mohou nabývat parametry a,b,c. Jestli D může být libovolné číslo, atp. V našem případě musí být a! = 0 a D > 0(pokud hledáme řešení pouze v prostoru reálných čísel). Výsledný program by mohl vypadat takto #include<stdlib.h> #include<math.h> int main(int nc, char *argv[]) 4

float a,b,c,d,x1,x2; if(nc==4) a=atof(argv[1]); b=atof(argv[2]); c=atof(argv[3]); if(fabs(a)>1.0e-8) D=b*b-4.0*a*c; if(d>0.0) x1=(-b+sqrt(d))/(2.0*a); x2=(-b-sqrt(d))/(2.0*a); else else else printf("x1=%f x2=%f\n",x1,x2); printf("reseni neni v prostoru realnych cisel\n"); return -3; printf("neni kvadraticka rovnice\n"); return -2; printf("nedostatek argumentu\n"); return -1;... další text bude v brzku následovat :-)... 5