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



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

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

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

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

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

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

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:

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

Algoritmizace a programování

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

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

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

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

Standardní vstup a výstup

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

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

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

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

Úvod do programování. Lekce 1

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Algoritmizace a programování

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

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

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Zápis programu v jazyce C#

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

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

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

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

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

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

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

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

Operátory. Základy programování 1 Tomáš Kühr

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

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

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Programovací jazyk C++ Hodina 1

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.

KTE / ZPE Informační technologie

Vstup a výstup datové proudy v C

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í

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

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

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Jazyk C# a platforma.net

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

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

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

Datové typy strana 29

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

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

Základy algoritmizace a programování

vstup a výstupv jazyce C

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

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

Informatika Datové formáty

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: Ukončí program. Nula znamená, že vše proběhlo bez chyby.

Programovanie v jazyku C - ti to zratam...

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

Programovací jazyk Pascal

3 KTE / ZPE Informační technologie

vstup a výstupy jazyce C

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

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

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

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;

Algoritmizace a programování

Algoritmizace a programování

První začátky s C. Struktura programu a základní prvky. Základní termíny (1) Základní termíny (2)

Struktura programu a základní prvky

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

Základy programování (IZP)

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

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Úvod do programovacích jazyků (Java)

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

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

KTE / ZPE Informační technologie

BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 10., 12. a 13. října 2017

Základní jednotky používané ve výpočetní technice

Algoritmy v jazyku C a C++

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

Základy programování v C

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

Datové typy pro reálná čísla

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

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

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

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

Stručný návod k programu Octave

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

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

Základy programování v C

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

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

Transkript:

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte desitkove cislo: "); scanf("%d", &dcislo); printf("\n"); mezivysledek = dcislo; do { vysledek[kolikbcislic] = mezivysledek % 2; mezivysledek = mezivysledek / 2; kolikbcislic++; } while (mezivysledek > 0); kolikbcislic--; printf("cislo %d je v binarni podobe: \n", dcislo); for (i = kolikbcislic; i >= 0; i--) { printf("%1d", vysledek[i]); } printf("\n\nhotovo."); } while(!kbhit()) ; return 0;

Formátovaný vstup a výstup Pro formátovaný vstup je v stdio.h funkce scanf(); Pro výstup: printf(); Základní použití : scanf("%d", &i); - tato funkce takto zavolaná přečte z klávesnice celé číslo (%d) a uloží ho do proměnné i. int i = 12; printf("i je %d \n", i); Vypíše na výstup řetězec: I je 12 (a odřádkuje.) Např.: - úryvek z programu přečte z klávesnice 2 čísla a vytiskne je. int i, j; scanf("%d %d", &i, &j); // Načte 2 čísla, může být zapsáno i odděleně printf("%d + %d = %d", i, j, i + j); - pokud zadáme například čísla 4 a 7 bude mít volání funkce printf výstup: 4 + 7 = 11 - tj. posloupnost %d nahradí příslušným číslem a ostatní text mezi zůstane stejný.

Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % určující formát vstupu/výstupu - pokud chcete zobrazit znak %, musíte použít zdvojení %% Řetězec Data %c Znak (raději použít putchar()) %d nebo %i signed int %ld signed long int %u unsigned int %lu unsigned long int %f float(pro printf double) %Lf long double(l musí být velké!) %lf double (obv. nejde u printf()) %x hexadecimální malými písmeny např. 1a2c %X hexadecimální velkými písmeny např. 1A2C %o celé číslo v osmičkové soustavě %s řetězec (string) Příklady : int i, j; i = 7; j = 4; printf("soucet je %d.", i + j); vypíše : soucet je 11. printf("pracovali na 100 %%."); vypíše : Pracovali na 100 %. (pro výpis znaku % je nutné napsat %%) printf("soucet je %d soucin je %d\n", i + j, i * j); vypíše : soucet je 11 soucin je 28 a odřádkuje printf("\007ha! Ivan!");

vypíše : Ha! Ivan! (a pískne \007 = \a pozor jen na některých systémech) printf("toto je \"BackSlash\" : \\"); vypíše : Toto je "BackSlash" : \ Přípomínka (z MATLABu) cesta k souboru: "C:\\windows\\supervirus\\od_vildy_bránaře\\baf.exe" Pozor při tisknu jedné proměnné vícekrát, musím samozřejmě v printfu tuto proměnnou zapsat tolikrát, kolikrát ji tisknu: int c = 'A'; printf("znak %c má hodnotu %d (%Xh)", c, c, c); vypíše : Znak A má hodnotu 65 (41h) printf("znak %c má hodnotu %d (%Xh)", '*', '*', '*'); vypíše : Znak * má hodnotu 42 (2Ah) Formátovní počtu míst ve výpisu a počtu desetinných míst printf("je přesně %2d:%02d hodin.", hodiny, minuty); vypíše : Je přesně 1:05 hodin. - 2 v řídící posloupnosti znamená, že číslo bude tištěno minimálně na 2 znaky, zleva se doplňují mezery), pokud uvedu %02 budou se zleva doplňovat nuly. printf("toto je reálné číslo : %4.2f ", 2.8356); vypíše : Toto je reálné číslo : 2.83 %4.2 znamená, že reálné číslo bude tištěno na 4 znaky, z nich 2 budou za desetinnou tečkou (desetinná místa) a + jedna desetinná tečka (taky se počítá) Pro řetězec (string): printf("toto je %s", "Nějaký textový řetězec"); vypíše : Toto je Nějaký textový řetězec - hlavně pro případy, kdy je textový řetězec v proměnné: Musím mít #include <string.h> na začátku, kvůli strcpy(a,b)... char jmeno[20];

strcpy(jmeno, "Petr Kropik"); // naplním řetězec jmeno... nějaký program... printf("jmenuji se %s", jmeno); Pozor výjimka u scanf: char jmeno[20]; scanf("%s", jmeno); // naplním řetězec jmeno,zde není znak &... nějaký program... printf("jmenuji se %s", jmeno); Časté chyby : int i, j; printf("%d", i, j); // mnoho argumentů printf("%d %d", i); // málo argumentů scanf("%d", i); // chybí operátor &, tedy má být &i; (pokračování na další straně)

Konstanty - dokončení Např.: int x, y, z; x = 25; y = 023; z = 0xF2; long int velka; velka = 2455665537L; printf("\nvelka: %ld\n", velka); Vytiskne: Velka: -1839301759 Reálné konstanty Např.: 0.345 0.25.25 3.146767 5e6 znamená 5. 10 6 8.566E23 znamená 8,566. 10 23 Pozor!!!!! 0.0 tohle nula typu double 0 tohle je nula typu int - stejně tak 3.0, 4.0, 8.0 jsou double - stejně tak 3, 4, 8 jsou int - implicitně jsou reálné konstanty typu double, tj. napíšu-li 2.345, chápe to C jako double Pokud potřebuji konst. typu float: 1.3e3f nebo 1.3e3F

Pokud potřebuji konst. typu long double (pozor nechodí v Dev C++ pod Windows): 13.56e35L Znakové konstanty - uzavřeny do apostrofů 'a' '*' 'M' - hodnota odvozena z tabulky ASCII (ordinální čísla) - POZOR znakové konstanty v C jsou typu int - pro zápis "neviditelných", netisknutelných znaků (nový řádek, backspace, tabelátor atp.) použijeme kód zapsaný do uvozovek tímto způbem: '\kod' kde kod je oktalová nebo šestnáctková číslice Např.: '\012' '\007' '\x0a' '\XD' '\x1f' (pozn. kódům uvozeným znakem \ se někdy říká escape sekvence) '\n' nový řádek ('\x0a') '\r' návrat na začátek téhož řádku ('\x0d') '\f' odstránkovat chová se dle OS ('\x0c') '\t' tabelátor ('\x09') '\b' backspace ('\x08') '\a' pípnutí chová se dle OS ('\x07') '\\' znak \ ('\x5c') důležité v řetězcích, hlavně tam, kde je v řetězci uložena cesta na disku (např. "C:\\Windows\\system32\\supervir.exe") '\'' znak ' ('\x2c')

'\0' nulový znak ('\x00') používá se jako znak na konci řetězce tj. ukončuje řetězce (tzv. nulový byte) '"' uvozovky jako jeden znak v řetězci, ale musím napsat \" Řetězcové konstanty - uvedeny mezi uvozovkami, např. "Jak se máte?" Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz

Operátory Unární - unární a unární + Např.: +5-5 -8.345 - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement - sníží hodnotu proměnné o 1 a = 5; a++; // funguje jako a = a + 1; // v a je teď 6 Používají dvěma způsoby - jako prefix před názvem proměnné: ++i nebo --i - proměnná i je napřed zvýšena (snížena) o 1 a teprve následně se vykonná zbytek řádku - jako postfix za názvem proměnné: i++ nebo i-- - napřed se vykonná výpočet v řádku a teprve potom je proměnná i je zvýšena (snížena) o 1 Např.: int i = 5, j = 1, k; i++; // i bude 6 j = ++i; // i bude 7, j bude 7 j = 0; // vynulujeme j (bude 0), i zůstává 7 j = i++; // j bude 7 dle i a pak i bude 8 k = --j + 2; // j bude 6, potom +2 a k bude 8 k = j-- + 2; // j je 6, +2, k bude 8, j bude 5 #include <stdio.h> int main(void) { int i; i = 5;

printf("prefix: %d\n", ++i); i = 5; printf("postfix: %d\n", i++); printf("a ted i: %d\n", i); } while(!kbhit()) ; return 0;

Základní binární operátory - sčítání + - odečítání - násobení * - reálné dělení / - celočíselné dělení / - dělení modulo % - zbytek po celočíselném dělení (např. 10%3 bude 1) Jak je to s tím dělením? - C to pozná podle datových typů operandů Tj.: int / int dělí celočíselně (např. 13 / 5 bude 2) int / float dělí reálně int / double dělí reálně float / int dělí reálně double / int dělí reálně atd. pro další typy (long, short jsou jako int, long double jako double) Pozor, toto je zdrojem častých chyb: double vysl, pi; pi = 3.1415; vysl = 4 / 3 * pi; vysl bude 3.1415, protože 4 typu int / 3 typu int je 1 Správný zápis: double vysl, pi; pi = 3.1415; vysl = 4.0 / 3.0 * pi; // stačí 4/3.0 nebo 4.0/3 Stejná chyba: double vysl, pi; int a, b; a = 4; b = 3; pi = 3.1415; vysl = a / b * pi;

vysl bude 3.1415, protože a typu int / b typu int je 1 Přiřazovací operátor - v C vypadá takto = Upozornění: double a; a = 5; - nezpůsobí chybu, ale nutím program k převodu 5 typu int na 5.0 typu double. Zbytečně. Korektnější: double a; a = 5.0; l-hodnota = výraz; // hodnota nalevo od přiřazení Další operátory přiřazení += např. a += b * 3 + x znamená a = a + (b * 3 + x) -= totéž obdobně *= např. a *= b + 3 - x znamená a = a * (b + 3 - x) /= totéž obdobně %= totéž obdobně atd. totéž pro ostatní binární operátory (bez mezery)