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



Podobné dokumenty
Zápis programu v jazyce C#

Úvod do programovacích jazyků (Java)

Algoritmizace a programování

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

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

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

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

Jazyk C# a platforma.net

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

Algoritmizace a programování

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

Programovací jazyk Pascal

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

Programovací jazyk C++ Hodina 1

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

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

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

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

Úvod do programování. Lekce 1

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

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

Paměť počítače. alg2 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

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

Objektově orientované programování

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

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

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

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

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

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

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

PŘETĚŽOVÁNÍ OPERÁTORŮ

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

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

Opakování programování

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

Výrazy, operace, příkazy

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

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

Algoritmizace a programování

Data, výrazy, příkazy

Datové typy strana 29

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

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

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

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

ADT/ADS = abstraktní datové typy / struktury

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

Proměnné a datové typy

Programování v jazyce JavaScript

Výrazy, operace, příkazy

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

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

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

URČITÝM ZPŮSOBEM PODOBNÉ

KTE / ZPE Informační technologie

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

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

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

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

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

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

NPRG031 Programování II 1 / :47:55

přetížení operátorů (o)

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

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

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

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

Algoritmizace a programování

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

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

První kapitola úvod do problematiky

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í

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

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

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Úvod do programovacích jazyků (Java)

Seminář Java II p.1/43

Notice:Jagran Infotech Ltd. Printed by Fontographer 4.1 on 6/3/2003 at 7:12 PM

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

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

Výčtový typ strana 67

LEKCE 6. Operátory. V této lekci najdete:

přetížení operátorů (o)

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

NMIN201 Objektově orientované programování 2016/17 1 / :03:29

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

PREPROCESOR POKRAČOVÁNÍ

Jazyk C++ I. Polymorfismus

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

Inovace bakalářského studijního oboru Aplikovaná chemie

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.

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

Základy programování (IZP)

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

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

7. Datové typy v Javě

Transkript:

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# Seznámit žáky se strukturou programu v jazycích C/C#, s klíčovými slovy jazyků C/C#, s psaním komentářů, se základními datovými typy, deklarací a definicí proměnných, s použitím přetypování, s definicí konstant, pojmem lokální a globální proměnné a konstanty, s pojmem a využitím Escape sekvencí, s tvorbou výrazů, dělením operátorů, s příkazem přiřazení. Klíčové pojmy: struktura programu v jazycích C/C#, s klíčová slova jazyků C/C#, psaní komentářů, základní datové typy, deklarace a definice proměnných, přetypování, konstanty, lokální a globální proměnné a konstanty, Escape sekvence, s tvorba výrazů, dělení operátorů, příkaz přiřazení. Struktura programu v jazyku C Programy v jazyce C mají pevnou strukturu, kterou je třeba dodržet. Obecně může program obsahovat následující části: Vložení hlavičkových souborů Deklarace globálních proměnných a konstant Deklarace a definice funkcí Definice funkce main Možné definice dalších funkcí Povinné části u jednoduchého programu jsou: Vložení hlavičkových souborů Definice funkce main Program 1 Příklad struktury jednoduchého programu, který vypíše text Ahoj. Zeleně jsou zvýrazněny komentáře. printf je funkce pro výpis textu, uvedeného v kulatých závorkách a uvozovkách. Příkazy funkce main jsou uvedeny ve složených závorkách {. Všechny příkazy jsou ukončeny znakem středník. return 0 je příkaz, který vrací řízení do volající jednotky s návratovou hodnotou 0. 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 1/20

#include <stdio.h> //vložení hlavičkového souboru // Definice funkce main int main(){ printf("ahoj"); //výpis textu na obrazovku return 0; Struktura programu v jazyku C# V jazyku C# místo pojmu funkce používáme pojem metoda. Program začíná připojením jmenných prostorů, potřebných pro volání metod. Jmenný prostor System umožňuje použít metodu Write("Ahoj") pro výpis příslušného textu na obrazovku. Main() je hlavní metoda programu, touto metodou začíná vykonávání programu na rozdíl od jazyka C se píše s velkým M. Metody můžeme definovat pouze uvnitř tříd proto je metoda Main() tak zvaně zapouzdřena do třídy Program. Jednotlivé položky tříd i metod se uvádí ve složených závorkách: {. Uvnitř metody Main() je příkaz pro výpis textu na obrazovku (konzolu). using System; // připojení jmenného prostoru class Program // definice třídy { static void Main() // hlavní metoda { Console.Write("Ahoj"); // výpis textu Klíčová slova jazyků C a C# Jazyk C má 32 tzv. klíčových slov, které mají speciální význam. Jsou to základní slova jazyka. Nelze je použít jako identifikátory (jména proměnných, konstant, funkcí, ). Seznam klíčových slov jazyka C: auto double int struct break else long switch case enum register typedef char extern return union 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 2/20

const float short unsigned continue for signed void default goto sizeof volatile do if static while Význam uvedených slov bude postupně vysvětlován v dalším výkladu. Jazyk C# si rezervuje 76 identifikátorů jako klíčová slova. abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum even explicite extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref autoreturn sbyte dealer short sizeof stackalloc static string struct switch this throw trne try typeof uint ulong unchecked unsafe ushort using virtual void while Hlavičkové soubory jazyka C Hlavičkové soubory jsou soubory s příponou h. Umožňují používat knihovní funkce. Obsahují mimo jiné informace o knihovních funkcích (jejich tzv. hlavičky, neboli prototypy) např. stdio.h obsahuje mimo jiné informace o funkci printf, která umožňuje výpis na obrazovku. 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 3/20

Komentáře Popisují význam příkazů usnadňují orientaci v programu. Můžeme použít dva typy komentáře: Víceřádkový komentář začíná /* a končí */. /* Toto je dlouhý komentář, který zabírá pět řádků. */ Jednořádkový komentář začíná // a končí koncem řádku printf(" Ahoj "); // výpis řetězce Komentář lze použít také pro dočasné vynechání řádků programu, jestliže na začátku řádku uvedeme //. Proměnné Programy pracují s daty, jejichž obsah se během programu mění. Definice proměnných: Proměnné jsou pojmenovaná místa v paměti, do nichž můžeme ukládat hodnoty, které se během programu mohou měnit. V jazyku C /C++/ C# /Java musí být všechny proměnné deklarovány, nebo definovány. Definice a deklarace proměnných Deklarace je uvedení typu a jména proměnné. Deklarace má tvar. Typ_proměnné jméno_proměnné; Více proměnných lze deklarovat pomocí seznamu: Typ_proměnné jméno_proměnné1, jméno_proměnné2; Definice je uvedení typu, jména a hodnoty proměnné. Definice má tvar: Typ_proměnné jméno_proměnné= hodnota proměnné; Více proměnných lze definovat pomocí seznamu: Typ_proměnné jméno_proměnné1=hodnota1, jméno_proměnné2=hodnota2; Všechny proměnné musí být před svým použitím deklarovány, nebo definovány. 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 4/20

Všechny příkazy, deklarace a definice jsou v jazycích C /C++/ C# /Java ukončeny znakem středník (;). Základní typy dat jazyka C/C# Jazyk C podporuje 5 základních typů dat, další C-like jazyky (C++/ C# /Java) mají ještě více datových typů. Typ Klíčové slovo typu Znak char Celé číslo se znaménkem int Reálné (racionální) číslo float Reálné (racionální) číslo s dvojnásobnou přesností double Bez hodnoty void Primitivní typy dat jazyka C# Primitivní datové typy jazyka C# jsou vestavěné typy jazyka C#: int, long, float, double, decimal, string, char, bool, sbyte, byte, short, ushort, uint, ulong Význam uvedených primitivních datových typů. Pro deklarování a definování proměnných lze použít klíčové slovo v prvním sloupci, nebo též mapovaný typ ve třetím sloupci uvedené tabulky: TYP BAJTU MAPOVANÝ TYP POPIS byte 1 Byte bajt bez znaménka sbyte 1 Byte bajt se znaménkem short 2 Int16 slovo se znaménkem ushort 2 UInt16 slovo bez znaménka int 4 Int32 celé číslo se znaménkem uint 4 UInt32 celé číslo bez znaménka long 8 Int64 velké celé číslo se znaménkem ulong 8 UInt64 velké celé číslo bez znaménka float 4 Sing1e číslo s pohyblivou des.čárkou doub1e 8 Doub1e číslo s pohyblivou des. čárkou a dvojitou přesností decimal 8 Decima1 číslo s pevnou přesností string 2 byty na znak String řetězec v kódování Unicode char 2 Char znak v kódování Unicode bool 1 Boolean logická hodnota 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 5/20

Konvence pro tvorbu identifikátorů Identifikátory jsou jména, která dáváme například proměnným, funkcím, strukturám, třídám, objektům, Identifikátor se musí lišit od jiných identifikátorů a kteréhokoliv klíčového slova. Identifikátor je tvořen posloupností alfanumerických znaků a podtržítka, přičemž musí být splněny následující podmínky: prvním symbolem smí být písmeno nebo podtržítko následuje libovolná kombinace písmen, číslic a podtržítek Jazyky C/C++/C# /Java v identifikátorech rozlišují malá a velká písmena (jsou tzv. case sensitive ) Program 2 Program ukazuje deklarace a definice proměnných různého typu. Deklarace a definice proměnných v jazyku C int main(){ int a=0; float napeti,proud=10.5,odpor1=123.456; return 0; Celá a desetinná část se oddělují tečkou. Deklarace a definice proměnných v jazyku C# class Program { static void Main() { int a = 0; double napeti, proud = 10.5, odpor1 = 123.456; Konstanty Konstanty jsou pojmenovaná místa v paměti, jejichž hodnoty (na rozdíl od proměnných) nelze měnit. Musíme je definovat tzn. určit jejich typ, jméno a hodnotu. Definice konstanty se uvádí klíčovým slovem const: const typ jmeno=hodnota; 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 6/20

Příklad: const float pi=3.14; const klíčové slovo float klíčové slovo datový typ pi název konstanty 3.14 hodnota konstanty Typy konstant Stejné jako datové typy proměnných: int, float, char, double Konstantní řetězec Text v uvozovkách např.: "Dobrý den" Lokální a globální proměnné a konstanty Proměnné lze deklarovat, nebo definovat uvnitř funkce (lokální), nebo mimo všechny funkce (globální). Lokální proměnné v jedné funkci nemají žádný vztah k lokálním proměnným v jiné funkci. Stejně tak můžeme definovat lokální i globální konstanty. Program 3 Deklarace a definice lokálních a globálních proměnných v jazyku C #include <stdio.h> #include <conio.h> // Definice dvou globálních proměnných int a=10,b=100; main(){ // Deklarace lokální proměnné int c; Deklarace a definice lokálních a globálních proměnných v jazyku C# class Program { // Definice dvou globálních proměnných static int a = 10, b = 100; static void Main() { // Deklarace lokální proměnné int c; Console.Write(a); 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 7/20

Console.ReadKey(); Console.Write(b); Console.ReadKey(); Modifikátory datových typů v C Modifikátory jsou klíčová slova, která umožňují pozměnit reprezentaci proměnné, aby přesněji vyhovovaly konkrétním požadavkům na proměnnou. Jazyk C poskytuje 4 modifikátory: long použitelné na int i double - zvětšuje velikost reprezentace proměnné short použitelné na int- zmenšuje velikost reprezentace proměnné signed použitelné na celé číslo se znaménkem unsigned použitelné na celé číslo bez znaménka Všechny datové typy definované normou ANSI C Různé datové typy zabírají různé místo v paměti. ANSI American National Standard Institute Tabulka velikosti a rozsahu různých datových typů Typická velikost Minimální rozsah v bytech char 1-127 až 127 unsigned char 1 0 až 255 signed char 1-127 až 127 int 2 nebo 4-32767 až 32767 (pro 2 byty) unsigned int 2 nebo 4 0 až 65535 (pro 2 byty) signed int 2 nebo 4, stejné jako int short int 2 stejné jako int unsigned short int 2 0 až 65 535 signed short int 2 stejné jako int long int 4-2 147 483 647 až 2 147 483 647 signed long int 4 stejné jako long int unsigned long int 4 0 až 4 294 967 295 float 4 přesnost na 6 číslic double 8 přesnost na 10 číslic long double 10 přesnost na 10 číslic 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 8/20

Ukazatele Zvláštním druhem proměnných jsou ukazatele. Jsou to proměnné, které obsahují adresy jiných proměnných. Escape sekvence Konstanty, uvozené zpětným lomítkem: \. Vznikly pro potřebu zadávání řídících znaků. Mohou být: jednoduché, kdy opačné lomítko následuje jediný znak- umožňují odřádkovat, pípnout, nastavit kurzor na začátek řádku, vrátit se o jeden znak zpět, Dále slouží pro zápis speciálních znaků, jako například uvozovky, nebo zpětné lomítko. Pokud má být v řetězci, ohraničeném uvozovkami uveden znak uvozovky, musí být zapsán pomocí sekvence: \". Má-li být v řetězci zapsán znak zpětné lomítko, musí se zdvojit. víceznakové, kdy za \ následuje x a šestnáctkový kód znaku o a osmičkový kód znaku Tak jsme schopni napsat znak pomocí známého kódu. Přehled escape sekvencí obsahuje tabulka: posloupnost jméno význam \a Alert (Bell) pípnutí \b Backspace návrat o jeden znak \f Formfeed nová stránka nebo obrazovka \n Newline přesun na začátek nového řádku \r Carriage return přesun na začátek aktuálního řádku \t Horizontal tab přesun na následující tabelační pozici \v Vertical tab stanovený přesun dolů \\ Backslash obrácené lomítko \' Single quote apostrof \" Double quote uvozovky \? Question mark otazník \OOO ASCII znak zadaný jako osmičková hodnota \xhhh ASCII znak zadaný jako šestnáctková hodnota Program 4 Příklady využití některých escape sekvencí 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 9/20

V jazyku C: #include <stdio.h> #include <conio.h> //potřebné pro getch() int main(){ printf("ahoj "); //výpis Ahoj getch(); //čekání na stisk klávesy printf("\rnazdar"); //přesun na zač. řádku a výpis Nazdar getch(); printf("\rdobr\xec den"); //výpis ý getch(); return 0; V jazyku C#: V jayzku C# je možné přímo vypisovat znaky s diakritikou. using System; // připojení jmenného prostoru class Program // definice třídy { static void Main() // hlavní funkce { Console.Write("Ahoj "); //výpis Ahoj Console.ReadKey(); Console.Write("\rNazdar"); //přesun na zač. řádku a výpis Nazdar Console.ReadKey(); Console.Write("\rDobrý den"); //výpis Dobrý den Console.ReadKey(); 2.11.11 Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# 10/20

Tabulka ASCII, obsahující šestnáctkové kódy znaků 21! 22 " 23 # 24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C, 2D - 2E. 2F / 30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 7 38 8 39 9 3A : 3B ; 3C < 3D = 3E > 3F? 40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G 48 H 49 I 4A J 4B K 4C L 4D M 4E N 4F O 50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W 58 X 59 Y 5A Z 5B [ 5C \ 5D ] 5E ^ 5F _ 60 ` 61 a 62 b 63 c 64 d 65 e 66 f 67 g 68 h 69 i 6A j 6B k 6C l 6D m 6E n 6F o 70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w 78 x 79 y 7A z 7B { 7C 7D 7E ~ 7F 80 Ç 81 ü 82 é 83 â 84 ä 85 ů 86 ć 87 ç 88 ł 89 ë 8A Ő 8B ő 8C î 8D Ź 8E Ä 8F Ć 90 É 91 Ĺ 92 ĺ 93 ô 94 ö 95 Ľ 96 ľ 97 Ś 98 ś 99 Ö 9A Ü 9B Ť 9C ť 9D Ł 9E 9F č A0 á A1 í A2 ó A3 ú A4 Ą A5 ą A6 Ž A7 ž A8 Ę A9 ę AA AB ź AC Č AD ş AE «AF» B0 B1 B2 B3 B4 B5 Á B6 Â B7 Ě B8 Ş B9 BA BB BC BD Ż BE ż BF C0 C1 C2 C3 C4 C5 C6 Ă C7 ă C8 C9 CA CB CC CD CE CF D0 đ D1 Đ D2 Ď D3 Ë D4 ď D5 Ň D6 Í D7 Î D8 ě D9 DA DB DC DD Ţ DE Ů DF E0 Ó E1 ß E2 Ô E3 Ń E4 ń E5 ň E6 Š E7 š E8 Ŕ E9 Ú EA ŕ EB Ű EC ý ED Ý EE ţ EF F0 F1 F2 F3 ˇ F4 F5 F6 F7 F8 F9 FA FB ű FC Ř FD ř FE FF 2.11.11 Struktura programu, proměnné, konstanty, výrazy 11/20

Tabulka českých znaků a jejich šestnáctkových kódů: A0 á B5 Á 9F č AC Č D4 ď 82 é 90 É D8 ě A1 í D6 Í E5 ň D5 Ň A2 ó E0 Ó FD ř FC Ř E7 š E6 Š 9C ť 9B Ť A3 ú E9 Ú 85 ů DE Ů EC ý ED Ý A7 ž Uvedená tabulka nám umožní psát české texty. Operátory Operátory jsou symboly prováděných operací známé jsou aritmetické operátory: +, -, *,/ Slouží k vytváření výrazů. Tvorba výrazů Výraz je předpis pro výpočet hodnoty. Obsahuje operátory a operandy. Operandem výrazu může být: Konstanta Proměnná Volání funkce (metody) Použití některých operátorů má přednost před jinými operátory - má vyšší prioritu. Priorita operátorů může být změněna pomocí kulatých závorek. Příklad: (a+b)/(c+d) Dělení operátorů Operátory rozdělujeme podle počtu operandů (arity) na: operátory unární mají 1 operand binární mají 2 operandy ternární má 3 operandy 2.11.11 Struktura programu, proměnné, konstanty, výrazy 12/20

Binární operátory jsou: aritmetické, relační, logické, bitové operátory přiřazení posuvu Příkaz přiřazení Ve většině programů je příkaz přiřazení nejčastějším příkazem. Má tvar: Proměná = výraz; Slouží k uložení hodnoty výrazu napravo od operátoru přiřazení do proměnné nalevo od operátoru přiřazení. Operátory přiřazení jsou uvedeny na konci tabulky a mají nejnižší prioritu tzn. nejprve se vyhodnotí výraz napravo od operátoru přiřazení a získaná hodnota se přiřadí do proměnné nalevo od operátoru přiřazení. Příklady: Program ilustruje přiřazení konstantních hodnot do proměnných V ladícím okně jsou uvedeny hodnoty lokálních proměnných po provedení příkazů přiřazení. Program ilustruje vyhodnocení výrazu se závorkami Nejprve se vyhodnotí podvýrazy v závorkách, a potom se použije operátor dělení. 2.11.11 Struktura programu, proměnné, konstanty, výrazy 13/20

Unární operátory Unární operátory mají 1 operand. +, - plus a mínus před číselnou proměnnou Příklad: a=-a; // hodnotu proměnné změníme na opačnou & reference (získání adresy objektu) * dereference (získání objektu dle adresy)! logická negace ~ bitová negace ++, -- inkrementace resp. dekrementace hodnoty, prefixový i postfixový zápis (typ) přetypování na typ uvedený v závorkách sizeof operátor pro získání délky objektu nebo typu Unární operátory inkrementace a dekrementace Často používanými unárními operátory jsou: ++ inkrementace - zvyšuje hodnotu proměnné o 1 -- dekrementace - snižuje hodnotu proměnné o 1 Je-li operátor použitý před proměnnou (prefixový tvar), nejprve se hodnota proměnné upraví (inkrementuje, nebo dekrementuje), a potom se použije. Je-li operátor použitý za proměnnou (postfixový tvar), nejprve se stará hodnota proměnné použije, a potom se upraví její hodnota (inkrementuje, nebo dekrementuje). Příklad: int a=10,b=15,c=124; a++; // a bude 11 /* 2.11.11 Struktura programu, proměnné, konstanty, výrazy 14/20

V dalším příkaze se použije stará hodnota b (15) c se nejprve zvýší o 1 na 125, a obě hodnoty se přičtou ke stávající hodnotě a (11) */ a= a + b++ + ++c; // Výsledná hodnota v a bude 151 Změnu hodnoty proměnných lze po každém kroku (stisk klávesy F10) sledovat v okně watch. Unární operátor sizeof, určující velikost typu v bytech Různé datové typy zabírají různé místo v paměti viz. Chyba! Nenalezen zdroj odkazů.chyba! Nenalezen zdroj odkazů.chyba! Nenalezen zdroj odkazů. Tabulka velikosti a rozsahu různých datových typů. Velikost typu v bytech lze určit operátorem sizeof. Použití operátoru: sizeof(typ) Příklad: Příkaz: int i=sizeof(int); Uloží do proměnné i velikost celočíselného datového typu int v bytech. Adresový operátor & Unární operátor, uvádí se před proměnnou - slouží k určení adresy proměnné. Jeho časté použití v jazyku C je načítání hodnoty do proměnných funkcí scanf. 2.11.11 Struktura programu, proměnné, konstanty, výrazy 15/20

Binární operátory Binární operátory mají 2 operandy. = přiřazení + sčítání - odčítání * násobení / dělení % zbytek po celočíselném dělení (modulo) <<, >> bitový posun vlevo resp. vpravo & bitový součin (and) bitový součet (or) ^ && bitový vylučovací soucet (xor) logický součin (and) logický součet (or). tečka, přímý přístup ke členu struktury -> nepřímý přístup ke členu struktury, čárka, oddělení výrazů < menší než > větší než <= menší nebo rovno >= větší nebo rovno == rovnost!= nerovnost Aritmetické operátory Aritmetické operátory jsou. + sčítání - odčítání * násobení / dělení % zbytek po celočíselném dělení (modulo) +, -, *, / lze je použít s jakýmkoliv základním datovým typem % (zbytek po celočíselném dělení) je použitelný pouze s celočíselným typem Příklad: Zápis výrazu lze zpřehlednit závorkami: int pocet=3; float cislo=1.5,hodnota=7,celkem; celkem=(pocet*cislo) + (21/hodnota) - (12 % pocet); 2.11.11 Struktura programu, proměnné, konstanty, výrazy 16/20

int a,b=25,c=125; a=(b + c)/(c - b); Po provedení uvedeného příkazu bude (možná překvapivě) v proměnné a hodnota 1. Je to proto, že použijeme-li operátor / pro celočíselné proměnné (nebo výrazy) bude výsledkem celočíselný podíl (bez desetinné části). V příkladu je dále vidět použití kulatých závorek pro zvýšení priority výpočtu výrazů: nejprve se vyhodnotí výrazy: (b + c) a (c - b), a potom se provede jejich podíl. Jestliže bychom chtěli mít v proměnné a hodnotu podílu i s desetinnými místy, museli bychom proměnné deklarovat a definovat jako float, nebo double: float a,b=25,c=125; a=(b + c)/(c - b); V proměnné a nyní bude hodnota 1.5. Příklad na použití operátoru %: Oddělení jednotlivých cifer trojciferného čísla v proměnné d a jejich umístění do proměnných c0, c1, c2. int d = 123, c0, c1, c2; c0 = d % 10; d /= 10; c1 = d % 10; c2 = d / 10; Příklad ukazuje, že operátor % má vyšší prioritu, než + Na obrázku je program a obsah proměnných při jeho krokování. Z hodnot proměnných vysledek1, vysledek2, vysledek3 použije operátor % a potom operátor +, i když jejich pořadí je opačné. je vidět, že nejprve se 2.11.11 Struktura programu, proměnné, konstanty, výrazy 17/20

Přetypování proměnné (výrazu) Přetypování proměnné (výrazu) je změna typu proměnné (výrazu) na požadovaný typ. Provádíme ho tak, že před proměnnou (výraz) uvedeme v kulatých závorkách požadovaný typ, na který chceme proměnnou (výraz) přetypovat. Program 5 V programu je ukázka přetypování hodnoty celočíselné proměnné i a výrazu )(a+b)/2 na typ float. Zde je přetypování hodnoty výrazu na float nutné, aby se průměr vypočítal s desetinnými místy. float f; int i=123; f=(float)i; // Přetypování hodnoty proměnné i na float int a=1,b=2; float c; // Přetypování hodnoty výrazu na float c=(float)(a+b)/2; 2.11.11 Struktura programu, proměnné, konstanty, výrazy 18/20

Rozšířené přiřazovací operátory Operátor přiřazení lze kombinovat s jinými operátory, např. +=, -=, *=, /=, <<=, ^=, čímž vznikne rozšířený přiřazovací operátor. Příklad: A+=10;// přičtení 10 k stávající hodnotě A B*=2; // vynásobení stávající hodnotu B dvěma Logické operátory Slouží k logickým operacím, které se používají při tvorbě podmínek, které lze vyhodnotit jako pravda/nepravda (true/false) && logický součin (and) logický součet (or)! negace (not) Relační operátory Slouží k porovnání dvou hodnot: nalevo a napravo od operátoru. < menší než > větší než <= menší nebo rovno >= větší nebo rovno == rovnost!= nerovnost Bitové operátory Slouží k práci s jednotlivými bity. & bitový součin (and) bitový součet (or) ^ bitový vylučovací součet (xor) ~ bitová negace Priorita operátorů Priorita operátorů je přednost při vyhodnocování výrazů. Nejvyšší prioritu mají operátory v prvním řádku následující tabulky a nejnižší v posledním řádku tabulky. 2.11.11 Struktura programu, proměnné, konstanty, výrazy 19/20

operátor typ operátoru [ ], ( ),., -> postfixové ++, postfixové -- prefixové ++, prefixové --, sizeof, &,*, +, -, ~,! přetypování, unární +, unární - *, /, % násobení, dělení, dělení modulo +,- sčítání, odčítání <<, >> bitový posun <, >, <=, >= relační ==,!= rovnost, nerovnost & bitové AND ^ bitové vylučovací OR (XOR) bitové OR && logické AND logické OR? : podmíněné vyhodnocení =, *=, /=, %=, +=, -=, <<=, >>=, &=, =, ^= přiřazení Shrnutí: Uvedená kapitola popisuje základy při tvorbě konzolových aplikacích v jazycích C a C#. Kostra aplikace je pro oba jazyky odlišná, neboť jazyk C# je objektově orientovaný a metodu Main je třeba zapouzdřit do třídy. Klíčová slova jazyka C tvoří podmnožinu klíčových slov C#, stejně tak i množina datových typů. Psaní komentářů, deklarace a definice proměnných a konstant, přetypování, operátory, tvorba výrazů a příkazy přiřazení jsou v obou jazycích stejné - C# je tzv. C-like jazyk. 2.11.11 Struktura programu, proměnné, konstanty, výrazy 20/20