+ All Categories
Home > Documents > C# Pro Zelenáče - Miroslav Virius (2002)

C# Pro Zelenáče - Miroslav Virius (2002)

Date post: 14-Feb-2018
Category:
Upload: watson
View: 332 times
Download: 14 times
Share this document with a friend

of 124

Transcript
  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    1/124

    @ Ing.

    Miroslav

    Virius,

    CSc.,2002

    Vydal: Neocortex sPol. s r. o.

    Na

    Rovnosti

    224513,

    130

    00

    Praha

    3

    TeI.:

    284

    860

    942,284

    860

    882

    http:

    /www.neo.czl

    Tisk:

    EKoN,

    dru stvo,

    ihlava

    Wirrtlrlws.jc

    cgistrovan

    bchodn

    nmka

    Micnl,,xl| 't

    ,tlr1ttlntIitltt

    ( ) l l r. zky

    1lavouka

    h

    a

    mouchy

    o

    task

    l..tlrcc

    '| ip

    Ar t

    .|irr

    riplrrlrrri

    ilzvy

    tnohou

    bjt

    ochrannyrni

    nnrkarrri

    tclxt

    tt1.l,is|ttrt'lr

    rryrrri

    rclrrirrlrryltti

    ttitlrrkarni

    slrr nj 'ch

    lrustn |

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    2/124

    - ' l ' l ' i r l i r ' l 'oxt...............

    Vy t vt l .c r r nstance'... ' . ....

    A r ttltttittckll

    sprva

    pamti.

    'l

    SIr li l i

    i

    r". ikIady

    'l

    I l i r rzcrt i krv..............

    I r lyv progl lt i l l . ...............

    . l .t

    St 'ztt i t t t t

    I

    . t , i 'l r .cnyeznam.... ' ' . ' . ' .

    l )t ' ( ' l \ ( 'z l l l l ll l (1 ... . . . . . . . . . . . . . . . . . . .

    I tr lr lt 'ntr ' lr lrtt 'eL:zi lanlu

    .I

    l

    V y Ic1 t r r 1 | | l c s l [ l p

    \

    /, i t r ' i ruitnt '

    ir()slr 'o

    \

    | Zri l ' l ; rr l rr i

    roirrry

    Kolncrtlr i i

    . . . . . . . . . . . . .

    |( i . l rv i i I t lv l t ' . . . . ..

    lil

    tl I

    )i,

    i i t

    )i

    /

    l{ '

    l ' ,

    1 'l

    rl

    I

    r,

    I

    9I

    rr

    't

    1

    r

    .l

    ,r

    I

    '1ti

    r lti

    l i l l

    lr ll

    l l l '

    l i l -=

    l l l i

    l i l ' i

    l i l i i

    l l l

    l l l l

    I l l l

    ll l

    lll

    Ir crr

    i

    . ik i i l r lI

    l :ipis

    progutttttt

    5. l 't 'oslot 'y.jrt tcrt

    ...........

    | ckliu rcc

    ploskrru

    nren

    S1rtrt lv ii r r rosttlr

    jmcn

    (

    lobiilrri

    rostor.jmcn

    rrsirrg.............

    5.1 Al l ibuty

    Nc\| itcl .rtr i lr t rty..........

    (l

    | ' r r lt t t t t t tl

    (| i l toV

    typy.'............

    (t ,

    l)rtlttt tltt...'.' ..'.. .l...

    ,

    l .y1ly

    r

    rt .r l l t t lt t t............. ' . .

    ( l ']

    |

    r lrI lr

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    3/124

    Parametry

    etod ...........

    Nestatick

    etody........'..

    Statick

    etody....'.....

    Lokln

    promnn

    Rekurze..........

    Destruktor......

    9.6Vlastnosti.............,....

    Deklarace

    vlastnosti

    T i da

    Bod.'....

    9'7 Ddn

    Konstruktor

    otomka

    base,..............

    P edefinovan

    etody

    a vlastnosti.....

    Nepolymorfn chovn

    pedefinovanj'ch metod

    Po|ymorfni

    hovn

    metod.............

    P k l ad

    grafi

    k objekty.... ' . .....

    Abstraktni

    metody,

    abstraktn

    dy..........'..

    Zapc etn

    dy,

    ape etn

    etody

    9.tl

    Struktury

    t dy

    l

    )

    ) a l Iastnosti d..............

    |0. Rozhran

    ............. '....

    l)ck

    arace a irnp|em entace

    ozhran......

    P ou i t

    ozhrani

    ...... ' . .... ' . ....

    K|onovn

    bjektt...... ' . .. '

    Soznam

    ako

    (t mr)

    tandardn

    ontejner......'.

    l

    ().2

    ct ovn

    pertoru

    Zk|adni

    ravidla..'......

    I)oklaraoc

    pet en ho

    pertoru.'......

    Ncp mo

    ietovan

    pertory''.....

    N ktcr pertory

    vo vojice

    Komp|exn

    s la ' . . .' . . . . . ' .. . . .

    Konverzn

    portor.'.''...''

    lndexovni.....

    l().3 dlosti

    l)olcgt

    ro

    d|ost'....

    l)r:kIaracc

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    4/124

    Uvod

    V t to

    nize se

    seznm te

    e

    zklady

    programovac ho

    azyka

    C#,

    ktt.lt

    jo

    lravou

    ovinkou

    po tku et ho

    is c i let .

    niha

    je

    ur ena

    .ll)|ll,l

    tyIn

    za te n k rm'

    proto

    nepedpokldm,

    e byste

    mli

    ja|

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    5/124

    trllttili l tttr

    whl lr

    Ar r, ly l r ' ,

    ffir

    dh

    cl

    ob

    s

    Nav c zkladn nstroje

    pro

    vyvoj

    program l

    v C#

    jsou

    k disptlzt.

    zdarma

    -

    a

    pokud

    to

    nepekaz

    njak soudn

    procesy'

    tak zdallrrl

    z lstanou;

    prrm

    kapitole

    Se do tete,

    de

    a

    ak

    je

    m

    ete

    skat'

    Pokud znte mou knihu

    Java

    pro

    zelen e,

    e

    vy la v nakladalc|slrl

    Neocortex

    v roce 2001' zjistite, enkter

    sti to nihy se

    nii;rlr.I

    n

    podobaj .

    j jsem

    si toho v iml. Drivodem

    je

    pedev m

    krllr.r.

    trost, e nkter

    ysy

    C#

    jsou

    npadn

    podobn

    odpov daj c m

    ysirrrr

    Javy, a

    proto

    i v .klad o nich mus bjt

    podobnj'.

    Typografick onvence

    Kurziva z;namen

    ztraznni. P eme ak tak nov zavdn cr

    rrlitri

    V

    popisech

    syntaxe

    a,ryka

    C# ozna uje

    ojmy,

    kter

    e

    tolllr

    r'a|

    tllc vyjasnit

    (tzv.

    neterminln

    symboly).

    . l.u n

    p eme popisu

    Syntaxe symboly, kter ze

    p mo l;rs;l|

    hr

    pr()gramu tzv'

    terminln ymboly).

    Noproporcionln m

    smem

    eme

    kzky

    program t,

    ysltr1ly

    1rrt-

    t a ctak

    | ov

    lova, dentifiktory p.

    'l.cnto

    yrnbol

    zna ujeonec

    p kladu.

    |{u i kapozoruje a m sta, ter i zas|ou ivy enou ()Z(||.ttl|hl

    |)avoukupozoruje na informace, kter ze

    naj tna intcrrlclrr'

    71rtr|t

    c||ajdc

    o

    zdrojov

    oubory

    pik|adri

    t to nihy.

    T.ato

    kona

    upozorujena

    poznmky

    u r en

    qdev m

    lcruiiiitrt.

    zna.i

    programovac

    azyk

    C

    nebo

    C++. Pokud tento

    .jitzyh

    rr.ri

    rrtu ctc.jcignorovat'

    t

    J.ato kona upozorr"rjea

    poznmky

    u r en

    cdev n r

    ]|crri i|. i i lrr,

    zna. j

    rogramovaci

    azyk

    Java. Pokud tcnto

    azyk

    noznii lc. | l l l 'Fl

    ignoruvat.

    Moucha

    upozorujona tno n

    progralntorsk

    hyby

    i| tl i l

    t| l l

    it

    prrlbIcnralick/t

    t t s ta '

    Zdrojov

    exty

    p k|ad

    l ' l1rIrrotIrrl.jtl vr:xty oolr

    k Iat l ii

    lrjtrr

    l l i lry

    si rrtricIt.

    rl11|

    z it t lct .t tclt rv( l

    t t lrcsy WWV .|](\().r

    zo str t l lky ttt lv it t t |rr rrt ir

    kt lt t t1rt . i t lt r lv t lry

    )r()gr i|| l lctr l

    )KZIP, a t rl v c l r r tt lt .cst iIrrvr i

    ' .t t rtL

    V

    lcx lrt

    krr i lry

    sc

    t t it r

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    6/124

    1

    Ne

    pravdu a neme

    Ne za neme

    rogranloval,

    rr l | i

    rytl|trlttt

    c scznmit s

    pojmy,

    kter

    budeme

    pozdji

    potebtrvitt,

    )tlv ttle i kr ttcc

    nco

    o nejen o

    po t a-

    c h

    programovac ch

    jazyc|c|r,

    r|c rrk

    t

    algoritmech a objektov

    orientovan m rogramovlirr .Mtttl|tz lrt|rtrist zrte; pestovm

    doporu uji uto kapitolu

    alcs1ltri'llt tlt1

    l .c s t,

    bychom

    si sjednotili

    terminoloeii.

    1,1

    Po ta

    o

    po ta ch

    e astotovo i

    jakrl

    t

    ,,stro'j oh

    a zpracovnnforma-

    c ...S t m vysta id , tcr

    po t ir o

    lastnnezajimaj , le chtj

    vypadat

    nformovan.

    ovem

    prograrntor,

    to i ten nejzelenj

    ze|en , us

    po ta ch

    d t

    ecc.jen

    trochu

    c.

    S

    trochou

    zjednoduen ri eme ici, e

    b n '

    o t a

    e skld ze

    ry k|anich

    st :

    l Sou st, ter opravdu

    ,,po it,,,

    edy zpracovv informace,a

    rak i

    innost echostatn ch

    st

    o ta e'

    e

    nuzyv

    proce-

    sor.

    )

    opera n

    am

    slou

    pechodn mu

    kldn dat

    (informac ),

    kter

    po ta

    pracovv,a

    progamu'

    edy

    p kazu'

    ter

    r uji,

    co

    m dlat. Pou v

    t

    pro

    ni tak nglick zklatka

    RAM

    (Ran-

    dom Access Memory,

    doslova

    ,pam

    s nhodnlm

    p stupem..).

    Ve,

    co

    je

    v t to

    pamti,

    se

    pi

    vypnut

    po ita e

    trati,

    ,,zapomene".

    l

    Vstupn

    1Stupn

    a zen

    lou

    o ta i

    vjmn informaci s

    okol m.Nejb nj

    stupn

    a izenijsou

    klvesnice,my ,

    skencr.

    atd.Nejobvyklej .stupni a zensobn ch o ta rie obrazov-

    ka monitorunebo

    iskrna'Pro vstupn v 'stupn a izeni

    e

    pot|-

    vzkratkaV/V nebo lo

    (z

    ang|ick honpuVoutpuD.

    l

    Vnj

    trval)

    pam

    lou trval mu kldn

    dat a

    prograrrrii;

    datav

    n

    se

    p

    ypnut

    o ta e

    eztrcej . zpravid|amnoltrr-

    nsobn t apacitu

    e opera n

    am ,

    le

    prce

    s n

    c

    tak

    mnohonsobn

    omalej

    e

    rce

    opera n

    amt

    p ib| i n

    i-

    s ckr t t).l ako n . j

    am

    e

    pou v aj ev n

    rrngnctick

    |i s

    ky

    (pevn

    isk,

    l iskctrr).ncs c

    a st o

    rltrivri

    kr l I rtpttktn

    | isk

    (( ' l) .

    )vl)).

    (' #1 r ;c' +,trir\tt

    * b"

    l

    Bity

    opera n

    am

    opera n

    pamti

    je

    tvoenaelektronickj'mi obvody,

    kter mohou m t

    dva

    dobe rozliiteln staYy

    -

    nap . vypnuto nebo zapnuto' Jeden

    z tchto stavri oblykle odpov d slici 0' druhj'

    s lici l

    '

    Jakkoli

    ridaje do

    pamti proto

    m eme zapisovat

    jen

    pomoc nul a

    jedni ek,

    v

    tzv.

    dvojkov

    soustav. Ka dm sto,

    na kterm eme apsat

    ednu

    s lici 0

    nebo 1'

    oma ujeme

    jako

    bit. opera n

    pam

    e

    tedy

    dlouh

    ada

    itri.

    S

    jednotlivfmi

    bity v ak obvykle

    nepracujeme, nebo

    e

    to nepohodl-

    n.Proto se bity v opera n amti sdru uj do vt ch elkri. V dne -

    nch

    po ta ch

    e zpravidla

    pou vaj

    kupiny velikosti 8

    bitu, kter

    se

    nazlvaji bajty

    (anglicky

    byte, tj. slabika).

    Aby mohl

    po ta

    pamt

    snadno

    pracovat,

    jsou jednotliv

    bajty,

    kter

    pam

    tvo ,o slovny.

    Po te n

    ajt

    m slo0, nsleduj c

    m

    slo

    atd. Toto

    poadov

    slo e nazyv adresa bajtu'

    (Na

    nkte-

    r ,ch

    po ta ch,

    etn PC,

    je

    zle itost s adresami

    trochu slo itj ,

    ale to mri emev souvislosti s

    azykem

    C#

    ponechat

    stranou.)

    Bajty

    Adresa

    Datov

    ypy a

    promnn

    Nen k jistit, enejmen slo,termri eedenbajt obsahovat,

    se skld

    z

    osmi

    nul

    a

    pedstavuje

    v des tkovoustav ulu.

    Nejvt-

    akov slo e bude skldat

    z osmijedni ek v des tkovoustav

    pedstawje

    55. To

    je

    alostnmlo; v b rj.ch

    programech

    e ob-

    vykle objevuj daleko vt sla.

    roto se

    pro

    ukldn dat obvykle

    pou ivqi

    rznelk kupinyza sebounsleduj c chajtri.

    Ani to

    ovem

    nesta . ezmeme-li nap.dva za sebou

    nsleduj c

    bajty,mri eme o

    nich ulo it el sla tozmez d 0 do

    65 535

    (od

    0 do l

    11 111111111ll1

    ve dvojkov

    oustav).okud

    nm

    ani

    o

    ncvysta ,

    emevz t skupinu 4 nebo teba bajtr. en e

    ani to

    nc c

    rob| m,

    o dlat,kdy budeme

    potebovat

    pom sla' el-

    n

    s la,

    naky nebo t eba

    ogickhodnoty

    (e

    vyjaduji, e

    njak

    tvrzcn lat eboneplat ).

    Mus nrc ody naj t

    njakj' zptisob,kteqf nm umo n

    eprezentovat

    t|rrlrr

    iiznj'oh

    ,druh

    .

    v

    pamtipo ta e .

    inj'mi slovy,

    mus me ajt

    zp tstlb,

    iukj'rn

    r i t

    hodnot

    ednozna n

    iad me

    kupinu bitu,

    ktcr tltttlc ttltt toclnotu

    cdstavovat

    jak

    futo hodnofu

    po ta i

    atkridovrtt.

    Brtovy

    yp

    Mi i rrtro r l

    tttlr|..

    lrlhrxlnout,

    c brrj l hodnotou010000o1 ude

    ped-

    a|nvtrvtl l ttttk

    A.'

    ' ITr

    rkupitrtt

    ritti rnii c rr.j inj 'ch

    okolnost

    ak

    1lft.t|nItlvrtvttl

    cld.

    l l lIrr.ktcrrttri t|cs lktrvr

    tlttstav

    rodnotu 5.

    I Nc: tt lr lrtt 't l lr:rtr\t lrttttr ' l .l

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    7/124

    Bajt

    se stejnou

    hodnotou

    ale

    mri e j't

    i sou st

    t ho

    elku

    s

    na-

    prosto n 'mvyznamem.

    odtudje

    vidt,

    e

    po ta i

    esta

    nt adresu

    bajtu

    nebo

    bajt r,

    ni-

    mi

    pracuje.Vedle adresy

    mus

    vdt,

    ak

    velkj,

    risek

    _

    kolik

    bajtu

    m vzit

    a

    jak

    mjeho

    obsah

    nterpretovat.

    infmi

    slovy,

    mus znt

    datovy

    yp

    honoty,

    ter

    e

    tam ulo ena

    mus

    dt,

    zda

    de

    o cel

    s lo,

    nak,

    ogickou

    hodnotu

    td.

    Datovj.typ

    tak r uje

    perace,

    ter

    ze s danou

    hodnotou

    provdt.

    Cel

    sla

    ze nap klad

    tat

    ode tat,

    naky

    |ze spojovat

    do etz-

    cri, edy do souvisl hoexfu.

    |'rttln nn

    A dosud

    sme

    se hodnotami,

    lo enj'mi

    pamti,

    zabyva|i

    hlediska

    po ta e;yn se na

    n

    pod vejme hlediska

    programtora.

    odnotu,

    s

    n udeme

    ht t

    e sv m

    rogramu

    pracovat,

    otebujemelo it

    do

    pamti: Mus me

    si vyhradit

    m sto

    a ci,

    ak ho

    ypu budou

    daje,

    kter ude

    obsahovat.

    akov to

    m sto

    pro

    ukldn

    hodnoty budeme

    nazyvat

    romnn.

    Po taude

    s

    promnnou achinet

    pomoc

    ej

    adresy

    (poadov ho

    slajej ho

    o te nho

    ajtu).

    Pro

    programtora y ale

    prce

    s

    adre-

    sou byla

    nepohodln'

    a

    proto

    i

    pojmenujeme, me

    identifilctor.

    Tomu se

    V

    programovn ik eklarace

    promnn '.

    t4

    l

    ' t r zt | j i

    lvit||rttc,

    c idonti l .ikator

    Il i

    } ,{|

    ||rIt l .

    ttt ictt

    r r r l t lt l t t t '

    (,H 1lt t ?+: || l i t i t :

    1.3

    Programy

    a

    programovac

    azyky

    Budeme-li

    od

    po ta e

    ht t'

    aby

    zpracovva|

    ata,

    kter

    mu

    pedlo-

    me,

    mus me

    mu tak

    ci, o

    s nimi

    m vlastrr

    lat

    _

    mus me

    mu

    dt

    program. Program'

    P1dobn

    ako

    data,

    ulo me

    o

    opera n

    a-

    mti^

    Procesor

    um s

    daty

    provdt uzn

    ednoduch

    perace.

    Um

    nap.

    se st,

    de st'

    ynsobit

    nebo vydlit

    dv

    s la,

    ame-|i

    mu

    jejich

    adresy,

    um

    vz t

    znak a

    zobtazit

    ho na displeji

    atd.

    Proto e

    ak do

    jeho

    pamti

    nelze

    ulo it

    nic

    jin ho

    ne - sla,

    us

    blt

    tyto

    p kazy

    vyjdeny

    zakdovny

    -

    tak

    s ly .

    seln

    y'jden

    nstrukc

    (pikaz r)ro procesor enazlv strojouj, d a e to edin vc, kter

    procesor ozum .

    Aby

    ncbyl ivot

    p l i

    ednoduchj.,

    ou vaj

    uzn

    procesory

    uzn

    strojov

    k

    dy,

    tak e

    programy

    ve

    strojov m

    du

    nejsou obvykle

    p cnositcInczi

    po ta ir zn .mi

    rocesory.

    tcdy

    jm

    ntl

    tttttIttrttttit

    ' i in

    r is t i

    t5

    To ale nen na

    programovn

    e strojov m

    du to nejhor .

    e

    asi

    jasn ,

    e

    programovn

    e strojov m

    du

    je

    velice

    namhav ne-

    pehledn .

    ak o t m ikdo nedl; m sto oho se

    pou vaj

    zv.

    v y

    rogramovac

    azylql,jako

    e

    Ada, Basic,

    C, C++,

    .

    ,

    atak

    C#,

    Program ve vy m

    rogramovacim

    azyku

    obsahuje

    popis

    een

    rilohy yjdeny

    pomoc

    ybranj.ch

    nglickych

    slov

    a

    p padnomo-

    c matematickych vyrazn zapsanych

    podobn

    jako

    v

    matematice.

    Napsat

    program

    ve vy m

    rogramovac m

    azyce je

    pochopiteln

    dalekosnaz

    enapsat

    dpov daj c

    rog am

    e

    strojov mdu.

    ovemnic nen zaarmo: rogramve lry mrogramovac mazyku

    ne|zena

    po ta i mo

    pustit, ebo

    o t a

    u nerozum . akov ,to

    program

    se

    proto

    mus

    bu

    pelo it

    o skojov ho

    du nebo nter-

    pretovat.

    V obou

    p padech

    tomu

    potebujeme

    a l

    rogram

    nebo

    skupinu

    programri),

    ter o za ns udlaj .

    Textovj'soubor,kterj'obsahujezpis

    progamu

    e vy m

    rogramo-

    vac m

    jazykl,

    se

    zpravidla nazyv zdrojovy kd nebo zdrojol5l

    pro-

    gram,

    v

    programtorsk

    antjrce

    ,zdrojtk,,.

    pekladu

    o strojov ho

    k6du

    (kompilaci)

    slou i

    program

    zvan

    p eklada ebo|i

    kompiltor'

    astos n m spolupracuje

    et

    sestavovac

    rogram

    nebo|i

    inker,

    kterj. dok e pojit nkolik nezvisle

    pelo en .ch

    st

    rogramu

    do

    jednoho

    celku. Linker tak

    pipoj

    nihovny

    -

    sti

    programu,

    ter

    u nkdonaprogramovaledem ktermri eme en pou vat'

    Pekladem

    a p padn

    slednjm sestaven m)

    rogramu

    znikne sou-

    bor obsahuj c trojovj'

    kd, kter''

    j i

    |ze na

    clov m

    o ta i

    pustit.

    Mezi typick

    pekldan

    rogr Imovaci

    azyky

    pat

    ap. C, C++

    neboPascal.

    M sto

    pekladu

    akmri eme nkter 'ch

    p padechou it

    peciln

    program'

    kter''

    bude st

    drojovf

    text a

    interpretovat o, tj.

    provdt

    p ikazy,

    ter ^v m najde. Typickj.m interpretovanfm

    azykem je

    klasickj'Basic'.

    Interpretovan

    rogramy

    obvykle b

    odstatn omaleji

    ne

    pekl-

    clan

    rogramy.

    Vedle toho

    mus me a

    clov ,po tapolu

    s na m

    programemnstalovat ak nterpreta nrogram.

    (]ll.ic

    tak trochu zvl tn

    pad.

    dtojovy kd

    programu

    napsan ho

    v

    ltltnttl

    iazycc

    se

    pelo ,

    vem

    ikoli

    do strojov ho

    du

    po ta e,

    ttle t|tr tlnivcrzIn ho

    pomocn ho

    azyka

    ozna ovan ho

    icrosaft

    .

    .lir

    re

    lrcIj,hr

    ilrrrrl llrrsicrt;.icho ot| rvrrrorzc sc

    p .ck|daly

    o strojov ho

    krir|tt rr

    1rrr*|r.rltli

    crzl. Vistttrl

    |ttsiecltr.Nli'|..

    o

    ,t lc|"ttl l ,

    tcjn.jako

    C#, o

    kIt ' t t t t

    i

    1trrvlrrrr

    lr t lc

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    8/124

    .||'T'

    t lu st

    pros(|,crl

    NET

    Intermediate

    Language.,

    (MSll,

    ncb

    en

    IL). Ten se

    pomoc

    dal ho

    peklada e

    evede

    do strojov ho

    kdu

    c lov ho

    po ta e

    a|e zpra-

    vi|a

    a v okam iku,

    kdy

    program

    spust me.

    To

    znamen, e na c lov m

    po ta i

    us bjt

    peklada ,

    te

    pekl.

    d

    z IL do strojov ho

    kdu. Tento

    po ta

    e

    nazlv JIT

    (z

    anglick ho

    Just In Time,nebo

    p eklprv v dob, kdy

    je

    to

    poteba).

    Vc

    jc

    ale

    jet

    slo itj :

    Na c lov m

    po ta i

    mus instalovno

    prosted

    'NET

    Framework,

    kter krom

    peklada ri

    IT obsahuje

    i dal sou-

    sti

    potebn ro

    bh

    program

    lytvoenj'ch v

    jazyce

    C#.

    Na zvr jet dopln me, e peklada ibovoln ho programovac htl

    jazyka

    (i

    C#)

    zrove kontroluje syntaktickou

    sprvnost

    programu

    .

    tey

    zdaje

    program

    napsn

    podle

    jistj'ch

    formln ch

    pravidel,

    kter

    zaru uji, e mu

    po ta orozum .

    (Syntaktick

    sprvnost

    programu

    bohu el nezaru uje vcnou

    sprvnost

    programu'

    tj.

    nezaru lje,

    c

    program

    bude dlat

    to' co si

    pejeme.)

    opera n

    yst m

    Po ta ez

    programov ho

    vybaven

    by nm nebyl

    mnoho

    platny.

    Proto se s

    n m zpravidla dodv

    alespo

    jeden

    zkladn

    program,

    kterj' se rozebhne

    automaticky

    hned

    po

    sputn

    o t a e

    b i

    po

    celou dobu jeho provozu. Tento program se nazyv opera n yst ma

    ,,o iluje..

    po ta ,

    j.

    prij m pokyny

    u ivatele, star

    se o

    jejich

    provo-

    den a

    informuje u ivatele o

    v 'sledc ch. Pokyny

    mohou bj't vyjdeny

    p kazem

    apsanjlm

    v

    p kazov

    dce,

    kliknut m my

    na ikon nebtl

    jinj'm

    zp rsobem.

    opera n syst m

    m ov$em

    jet

    adu dal ch ioh,

    z nich

    pro

    niis

    nejd le itj i

    e,

    e

    poskytrrje

    sluby dal m

    program

    m. Star sc

    tl

    jejich

    spou tn ,

    pidlovn

    pamti, poskytuje

    nstroje

    pro prci sc

    soubory atd.

    Kdy nap. hceme

    v

    programu

    otev t oubor,

    progrll |

    ped

    odpoviajic

    po adavek

    opera n mu yst mu

    a ten se

    postar1r l

    ve

    potebn .

    Mezi

    nejznmj pera n yst my

    na osobn ch

    po ta ch

    at

    rizllc

    verze Windows a Linuxu.

    Programy, vytvoen

    jazyce

    C#,

    mohou

    (zarim)

    b et

    pouzo rur

    po ta ch

    ybavenj,ch opera n m

    yst memWindows

    NT vcrzc

    4.

    Windows 2000 ncbo Windows

    XP. na nicb

    e

    instalovn .NE]..

    |lrlr

    rrrcwork.

    'V

    1rrlsIcr|trI

    | r r| r

    c trrkrJ

    ou v

    z na c n

    \nnntut

    l,

    ((,ll ''

    spr lIc r ty

    rr r

    zi irrzyk). lo ltr l| .tctt lrl

    rrzyk

    r r klct|rr| i

    t r r r r ' r sIi

    rrrrHIlcr l|

    Nl i , l ' l i t .t t t t tcwtrt l .

    IryIy

    r i iIntv

    ttt .zit l t t rxItrI

    t l .gtt lt izt tr:Ii( .MA

    Ilrktr

    l l l t t rIa r l

    I ' l l 1ttt :t.'lrtrtti(1('ft

    I Nr

    j

    rr ltt ttyl l l :rtt-tte,t i l t ' 11

    Program algoritmus

    Jazyk C#,

    podobn

    ako

    ostatn

    rogramovaci

    jazyky,

    s|rrtri

    z

    pisu

    programu.

    U vime, e

    program

    e

    njah

    soubor nstrtrkt:i

    trfikrrz).

    kter

    po ta i

    kaj , o m

    dlat.

    Ka y

    program

    pedstawje

    nvod k e en

    jak ho

    prrrlrl.lrlrt,

    'f i

    programovn

    i

    ale mus me

    uvdomit, e

    po t a

    eum

    nir|il z1riilrrlr.

    jak

    probl m

    vye it: o musme

    udlat my.

    Ky u znntc cr:s|tt,

    tllt

    naj t een ' ri eme

    o nau it ak

    po ta .

    o t a

    m

    en

    tt,

    ,tt ltt

    my - nebo nkdo iny - nau , a co m program.

    Algoritmus

    Nvod, ktenj.

    chceme

    pedlo it

    o ta i ,

    us

    m t

    u r i t

    lastlrtlsti;

    nkter z n ch

    mohou vypadat

    jako

    samozejm ,

    le

    pesto

    c

    ztlc

    uvedeme.

    t

    Nvod mus

    v st k

    po adovan mu

    v .sledku.

    I kdy to mo n

    lrypad sm n,nen

    to v dy

    ednoduch

    z|e itost.

    Mus me nap.

    uv it,

    za

    jalEch

    p edpoklad

    ur it .

    postup

    vede ke sprvn mu

    rnj'sledku a zda

    budou tyto

    pedpoklady

    splnny

    pro

    data, s nimi

    bude n nvod

    pracovat.

    l

    Mus se

    skldat

    z

    krokri, kterj'm

    po t a

    ozum

    -

    tzv.

    elementr.

    n ch

    krok.

    (To

    pro

    ns znamen,

    e ho mus me

    umt zapsat

    v n-

    kter mprogramovac m

    azyce,

    nejl pev C#.)

    l

    Tchto

    kroku nesm bjt nekone n

    mnoho.

    Nejde o to' e

    bychom

    mohli napsat

    program'

    kter .

    e

    nekone n

    velky; to

    se vm asi ne.

    poda .

    en ale nic t k ho

    napsat htky

    program'

    kter'' nikdy

    neskon ,

    roto e

    se v nm

    bude do nekone na

    opakovat

    ur it

    skupina

    nstrukc.

    Nvod' kterj'tyto

    podm nky

    spluje,

    se obvykle

    ozna uje

    ako

    algo-

    ritmu,s,

    Na

    program

    se

    m eme

    d vat

    ako

    na zpis algoritmu

    v

    pro-

    grttrntlvac tn

    azyce.

    Nr: za ncrneprogramovat,

    mus me

    tedy znt

    zprisob,

    jak

    danj'

    pro-

    b|nr vy c it'

    Pak

    mus me

    postup

    een

    apsat

    ako

    algoritmus", edy

    .iuktr

    osltlupnost

    lementrn ch

    rokri.

    Pitom e

    pou v

    bvykle tzv.

    mr|txlu ,shtru dol : Nvod

    se

    rozkld

    na men

    men rseky,

    tlrrsp jcrnc

    clcmcntrnim krokrim. P itom

    e

    samozejmmri e tt,

    c

    btlt|ctttc

    nttsol

    pct|choz

    ozd|en

    upravit, nkter roky

    spo.jit,

    t tr1klcr

    rrtky

    p . idat

    p.

    .

    AIgtrri l t t tttrtt t teltrt|tt lr

    'jc'jiclr

    t rvr 'hrr.ic

    tlntlvi'initrrclarriIr;

    1 i r r rrnir;h

    nIe

    1t|.et|1xtkIrir l t

    rrttItlsllr itro trtlkr.llt||rtt

    rrlgrtttttrlvitcilrtl.jazyka.

    o ' j i r r i

    tgr1i

    |nxr ' l| l t t

    t tn1lI.

    5|).

    As i r r r :jzr t tl r t t j l

    sr lrr

    r l iIry ). Krrrr lIrrr

    4|,

    kterzrru-

    I l re l r I l t tl I t r lrrltkt|ttlltrl

    t lrr1tr lt t l t t trvtteiItrr

    t lzykn

    lt1*et|1rrrkIr itIrr i i .

    Motodn

    |bora

    drrl l

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    9/124

    P klad

    Metodu

    shora dolri si

    uk eme

    na nsleduj c m

    p kladu:

    Mme skupi-

    nu N se ln j,ch

    romnnj 'ch, ter zna me

    [0]'

    A[1], . ..

    ,

    A[N-1

    .

    Takovouto

    skupinu

    promnnj'ch stejn ho

    ypu, se

    kterj.mi

    m emc

    zachuet

    ako

    s

    jedn m

    celkem,

    nazlvme

    pole.

    Ze

    tedy mme

    pole A

    s

    prvky

    AtO],

    At1], . . .

    ,

    A [N- l ]. s l a,

    z na u j c

    ednot l iv

    rvky

    pole,

    se nazyvaJi

    indexy.

    Na m rkolem

    je

    uspodat

    ole A tak, aby

    platila podm nka

    Pole

    Ato] < At1] . . .

    < AtN.1].

    oha

    ,,zpeh ael,,

    odnoty' ulo en v prvc ch pole, aby splovaly

    podm nku

    (l),

    se nazyv t dn

    ole.

    Na m rikolem

    tedy

    je

    set dit

    pole A.

    N

    prvn

    pokus

    o napsn

    algoritmu

    tidn o y

    mohl lypadat

    takto:

    1. Najdi v

    poli

    n

    prvek,

    kteqi obsahuje

    nejmen

    hodnofu, a

    vym

    jeho

    obsah

    s

    prvkem, kterj'

    je

    na

    prvn m m st

    (na

    m st s indexem

    0) .

    2. Najdi v

    poli

    A

    prvek,

    kter ' obsahuje

    druhou

    nejmen

    hodnofu,

    a vym

    ho s

    prvkem, kterj'

    je

    na

    druh m

    m st.

    3. ,.. atd.,dokud

    nen

    pole

    set dn .

    Ie ejm , e tentopostup povede k c li; pro na e r ely e ale p li

    nehod, nebo

    program

    nemri e

    obsahovat

    njak

    ,,..,

    atd.,,.Mus me

    proto

    naj t

    ep ormulaci.

    Kl em k rispchu

    bude nsleduj c

    rvaha:

    Pot , co

    v

    prvn m kroku

    vyhledme

    nejmen

    prvek

    z cel ho

    pole

    a dme

    ho na

    prvn

    m sto,

    e

    nejmen

    hodnota

    j i

    na sv m

    m st a

    nemus me se o

    ni

    starat.

    Sta

    tedy set dit

    bytek

    flole.

    (Znmj'

    princip

    rozdl a

    panuj

    se

    neuplat.

    uje

    en

    v

    politice.)

    Ve druh m

    kroku

    nm

    posta

    aj t

    nejmen

    rvek

    ze

    zbyl ho riseku

    pole

    At1l, .

    .

    .

    ,

    A[N-1] a ten dt

    na druh

    m sto, e

    tet m roku

    naj t

    nejmen odnotu

    mezt

    A|2), .. .

    ,

    AtN-l] atd' V

    posledn m roku

    budeme

    rledat

    e jmen

    prvkri

    AtN-2],

    AtN-1].

    Pak bude

    pole

    set .

    dn ,

    j. bude

    vyhovovat podm nce 1).

    5

    Ve skute nosti

    de

    o

    iazen

    prvlr^

    odle

    vel kosti,

    nikoli o rozdlovni

    dtl

    t d . esk

    rogramtorsk

    hant ,rce

    se ale zpravidla

    mluv o tidn ,

    a

    prokl

    u trt|roto erm nu

    zistaneme. ostatn

    anglicky

    termin sorting

    znamen

    takt

    l t | t ii 'iko|i

    azeni.

    .'

    |'opsant

    ctoda se

    nazlv t dn

    j'brem

    (selection

    sort) a

    je

    vhodn

    prtl

    n ton i

    o|c; pro

    rozs,lr|

    o|c

    se

    zpravid|apou vtzv.rych|

    c l n

    quick-

    srrrt) ' 'I ir

    ' jc

    vcIrni

    clbkt ivni

    poslrrp,.1cho

    k|ad

    aIc

    p|.csrrIrrr.jet imco

    n i r i

    krr iIry.

    t rx| r tr l rnrJ i |rr l i lrrnrrcc

    iz llap .

    c t r : t n r|iIrr

    rr iIrv

    .1

    rcIrr l

    |5|.

    ' tt

    1

    rt

    ;

    p

    1111:p,

    (1)

    ll l

    I

    f\ lp

    t lrrrnrlrtartr 'ttrtttte

    lq

    fur'mulace

    V imnte

    si,

    e vlastn

    stle opakujeme

    podobnou

    akci:

    Vyhledme

    nejmen

    rvek v

    irseku

    pole

    a

    dme

    ho

    na

    prvn

    m sto v

    tomto

    seku.

    Pitom v

    ka dmnsleduj c m

    kroku

    pracujeme se stle

    men m

    se-

    kem

    pole'

    Zkoumany risek

    pole

    zain

    postupn

    prvkem

    s indexem

    0,

    1, . . .

    .

    N-2.

    Zapime

    v .sledek

    pedelfch

    rivah

    jako

    posloupnost krokri,

    kter

    bychom

    mohli

    pova oval za

    elementm .

    Pi vjpo tu

    budeme

    pou .

    vat

    pomocnou

    promnnou i, kter

    nm

    poslou

    ako

    ,po tadlo...

    l. Dopromnn vlo hodnotu0.

    2'

    Mezi

    prvky Ati

    ],

    ..'

    ,

    AtN-1] najdi

    ten, kter 'obsahuje

    ncjlrrcrl

    hodnotu.

    3.

    Vym

    tuto hodnotu

    s hodnotou

    prvku,

    kterf

    je

    na

    j

    -t m

    nr slc\.

    4. Zvt ihodnotupromnn

    1 o 1.

    5. Je-li

    j

    csc lut' k&.

    cs

    iciosft tn) uisual

    cs.HEr

    conpilcp

    uersion

    ?.8'B.9465

    ots

    llicFsoft

    (n)

    .HEI

    Fpane{ork

    vcrsion 1.6.3?65

    opyright

    (C)

    }.|iclosoft

    cotsporation

    26a1.

    nll rights

    P e$ ge . l .

    ltt

    ( ' l t

    1r1 t c' l+'tttt i 't '

    -"

    '

    l 't

    t 'tt l

    l ,l

    t ,t i ,

    tt,t,t '

    .l l ,

    Znakovj, etzec,

    ter .

    sme

    v naem

    ruh m

    rogramu

    1pisovali' se

    nlm

    neve el a

    eden

    dek.

    roto

    sme

    ho rozdlili

    do

    dvou

    etzo-

    vlch konstant, ter

    sme

    spojili znam nkem lus:

    '.

    l uou ky L l r i i

    e rn

    '

    +

    .'i ipl

    d'bel k dy.

    '

    l)rtrgram si tyto dva znakov

    etzce pojil

    v

    jeden

    a ten

    pak

    vypsal.

    Podobn lze

    samozejm pojit i

    v ce znakovych etzcri.

    Programtoii,

    e tina my

    Mnoz programtofi p omenteke srrlm programrim bu anglic-

    ky

    (kdyby

    to nlrodou

    etl

    nkdo

    ciz ...) nebo

    alespo cesky

    (tj.

    bez

    |t/t k

    a rek).

    Drivod

    je jednoduchj':

    U

    jsme

    si

    nazna ili,

    e ru-

    tlj'oh

    prosted ch

    e m eme setkat

    s ruznj,mi zpri soby kdovn

    e -

    titty' a

    pi

    penosu programu

    z

    jednoho

    prosted

    do

    jin ho

    mohou

    vzniknout

    probl my.

    V

    na n ize

    budeme ov em

    pst

    komente

    drisledn esky, to zna-

    tncn i

    s

    diakritickj.mi

    znam nky. I zde

    je

    drivod

    jednoduchy:

    Jak

    vidite

    z teto kratke

    veticlE, ceslq;

    psane

    komentare byvaji spatne

    sro-

    :umitelne, Nebudeme

    si tedy

    pidlvat

    zbyte nou prci

    s lu tn m

    ocstiny.

    Nav c

    programovaci

    jazyk

    C#

    je

    ur en

    -

    alespo

    zatim

    _

    pot|zc pro

    Windows,

    a

    proto

    n

    prob| my

    s

    penosem

    do

    jinj'ch

    prosted ehrozi.

    'litk

    pou vn

    znaki

    s diakritickj'mi znam nky

    v identifiktorech,

    |ec|y

    vc

    jm nech

    t d,

    romnnfch

    ap., nen

    p l i

    bvykl

    *

    pede-

    vrn

    proto,

    e

    en

    mlo

    programovac ch

    jazryki

    to

    dovoluje. C#

    je

    ztttint

    sp e estnou

    nj'jimkou; vt ina

    programovacich

    jazykl

    po a-

    t|rrjc,aby se identi iktory

    skldaly

    pouze

    z

    p smen

    anglick abecedy

    rr z s lic.

    v em v

    posledn

    dob se stle astji

    bjevuj

    peklada e,

    kterprlu vn

    rodn chabeced

    podporuj .

    e to logick :Mri emeJi

    r|tivttl sou stcm

    sv ho

    programu

    nezkomolen

    jm na,

    m eme

    se

    lttttizc

    tlust cditna

    probl m,

    ktery e me'

    roto budeme

    t tomo nosti

    l , t ,t t i tutt.

    Beakupenassemb|y)

    Ktly

    .isrrrc

    si i. ka|i, c pek|adem

    drojov ho

    progTamu

    vznikne

    l1trtslitr.:lrry

    tlttlrtl l. ,rc ' kal i. j sme

    i celou

    pravdu.

    Pek lada

    e skute -

    ltrlsti

    vylvrr'i .t ctl,tt so nazj'v

    assembly

    (budeme

    o

    pekldat

    lo-

    vettl 'rr. 'r-rl1lr, l l i) '

    , . '

    V ..

    j ltt..tttt

    i () l ||Xt| ' l I

    ttt trzr l i l

    rtI

    r r r .r r r r

    . i r ly ncr ,l l | c j

    t l t()m' zdapouil.

    1t.tttt.

    tt lt lt i r vr.Ikri

    t istttcttrt.

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    20/124

    Seskupen

    mr e bsahovat

    eden

    nebo nkolik modulri,

    tj. souboru

    vc

    formtu

    PE

    pro prosted

    NET;

    mri e

    t

    o spustiteln

    oubory

    (.ex..1"

    o dynamick

    knihovny

    (.dl

    l) nebo o

    j in

    sou sti

    rogramri.

    Vet||c

    toho obsahuje

    tzv. manifest, soubor

    s dodate n1|mi

    nformacemi.

    .Soubory

    .exe nebo .dll obsahuj

    krom instrukc

    v

    jazyku

    IL ta|it|

    tzv, metaata.

    To

    jsou

    dopluj c

    nformace o datov .ch

    typech

    -

    napi

    jak

    se

    jmenuj

    t dyv nich,

    jak

    maj metody atd.

    Tyto informirt'r.

    mohou vw ivat

    nejen

    peklada e,

    le i ostatn

    programy' nap.

    1li

    automatick m

    generovn

    dokumentace.

    Z

    programri

    jsou

    dostuprrtl

    pomoc tzv. reflexe.

    V seskupen

    e

    tak u|o ena nformace

    o verzi a o kultu e

    (culturr|

    Verze

    jsou

    slovny'

    slo verze seskupen

    se skld

    z hlavn hrr

    rr

    vedlej ho sla,

    s la

    ekladu

    a sla evize.

    Kultura znamen vlaslrr

    jazykovou

    mutaci seskupen .

    Seskupen

    pedstalrrj zk|adni

    jednotku

    pi

    en

    otov ch

    progrrr

    mri. Prosted NET

    rozli uje soukrom

    a sd len seskupen

    (privirlc.

    shared assembly).

    Soukrom seskupen

    sou

    sou st

    edin

    apliklrcr',

    sd len seskupen

    slou vem

    programrim

    spoutnfm

    v

    prosti'cr|l

    'NET.

    slovniverzi se

    pou v

    pouze pro

    sd len seskupen .

    Rozsah t to nihy

    nm nedovoli zabyvat se

    sd lenfmi seskupen nri.

    4t l

    |

    . l t ,,t t t tult tr , l t+\1i ' l* ltrt l t '

    l

    Jednoduch

    klady

    V

    minul kapitole

    jsme

    napsali svrij

    prvn program

    v C#, ukzali

    jsme

    si,

    ak

    ho

    pelo it

    spustit. V t to apitole si

    postupn

    uk eme

    nkte.

    r dal

    mo nosti

    jaryka

    C#.

    Mjte

    pros m

    stle na

    pamti,

    e

    jde

    o

    rivodn

    pehled,

    ejich

    hlavn m

    c lem

    e

    vytvoit si

    prostedky'

    kter

    nm umo n ukazovat si rozumn p klady,a si za nemevykldat

    jazyk

    C#,,naostro".

    Drobn

    ipravy

    programu

    Pod vejme eznovu

    na n

    prvn

    nebo druhf

    program.

    Zatimvime, e

    zpis

    System. onsol .

    Wri

    eL

    ne

    'Huja

    .')

    p edstaluje

    p sob,

    ak

    vypsat

    znakovy etzec

    'Hujaj'..

    Rozeberme

    si to

    trochu

    podrobnji.

    Vo|n| Pi vj'sfupu vyu ivme slu eb objekfu, kterj' je pro ns pipraven

    v

    knihovn

    jazyka

    C#

    (pesnji

    v knihovn

    prosted

    NET Fra.

    rnework)

    a ktery

    se

    menuje

    System.Con.sole.

    etody to hoto objektu

    rnimo

    jin

    umo uj

    stup

    do standardn ho

    lstupu a ten

    nj.

    Zpis Sys

    em. on o e W te

    L.i e

    '.

    H a '. te dy

    pedstautje

    oln

    m tody ,'i

    t e L ne

    (

    )

    objektu Sy

    em Co o e.

    Vol/rn metody

    za in

    m nem

    objektu, za

    nim

    je

    te kou

    pipojeno

    .jrnntl

    mctody. Za

    jm nem

    metody nsleduj kulat

    zvorky,

    v

    nich

    tttohou blt tzv'

    parqmetry

    metody

    (data,

    kter

    m metoda zpracovat)'

    Vrr|/rn

    mctody

    zprisob , e se metoda spust

    *

    provedou

    se

    p kazy'

    klcr.jsor"r

    n naprogramovny.

    tldek N krlyptlt .cbuicmcozdlit vystupuj c ext do nkolika dkri.Vez'

    tttttto

    ap .

    druhj'

    program

    z

    pedchoz

    apitoly a upravme

    ho tak,

    ttlry

    v |rr l lutilu krn

    koni zapsa| do t dk

    ,

    do

    ka dho

    v

    slo-

    vl l.

    .|et| ltrttt

    ttttltltls l i. joozd l i l ystupuj ic

    ext

    do

    nkolika etzcovj 'ch

    krl tt l l t t t t l

    t kttt l r l t t

    r l ic l r yps ir l

    p t r rnoc

    ctody ,^]rj teLine(

    '

    nebo

    Inlrr tttlItrtltt

    rrr

    ypstitti rttlttlt ho

    cxlrr

    pfc.jdc

    na novy

    dek.N

    Irnr { ln l

    y et ly nolt l yput l tt lrrkkr:

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    21/124

    /*

    Pechod na novy

    rdek

    C/ l

    1 41 , ."a.

    crass

    lruryKun

    {

    stat ic void

    Maino

    {

    System.Consol e' 14r i e L

    ne

    ''

    ' lu o u k ykrjr''

    ;

    System.Console.|drjteLine(, 'p ern

    p1' '

    ;

    System.Consol

    e.Wri teLi ne

    ''bel

    sk dy.' '

    )

    ;

    )

    l

    Zdrojovy ext

    ohoto

    programu

    ajdete a www v

    adresi ap03\0

    Jestli e opelo mespust me, ostaneme

    1

    o u k y

    p

    ern

    p'l

    d 'be] sk

    dy .

    Jazyk C#

    ovem nabiz ijin , a v

    tomto

    p pad

    ep een. o

    takttl

    zapsan ho

    nakov ho etzce sice

    pechod

    na novy dek nemri eme

    zapsat

    p mo,

    ale mri eme do

    nj

    v|o it

    tzv. dic

    osloupnost, kterii

    pechod

    na nov dekvyzna i.

    \n

    dic

    posloupnost

    pro p echod

    na novy

    dek m tvar \n. Vlo me-|i

    ji

    do lrypisovan ho etzce, ude

    metoda |v]an

    )

    vypadat takto:

    stat ic void

    l4ain(

    t

    System.,Conso1e.WriteLjne("luou ky

    t i \np ern' '+

    upl\nd.bel

    k dy.'.

    ;

    l

    V .stup

    takto upraven ho

    programu

    bude stejn;f

    ako

    v

    pedchozirrt

    p pad.

    eho

    zdrojovj'1text

    najdete na WWW v souboru

    zlonZ'l''

    v

    adres i ap03\01.

    t)os|ovnj'

    V C#

    mme

    jet

    tet mo nost

    -

    pou t

    zv.

    doslovnf

    etzec.

    I.t:tt

    ctzec

    m e

    obsahovat

    i

    p mo

    zapsany

    pechod

    na novf dek.Zapisujcrrrc

    ho

    do

    uvozovek,

    ped

    n ale

    um st me

    et

    znak @

    ,,zavin ..).

    Mcltl

    da

    Ma n

    (

    )

    s doslovnym

    etzcem

    ude

    m t tvar

    publ ic

    stat ic void

    l4ain()

    {

    System. onso'l Wri e

    L ne

    @'.

    l u ou ky ri

    p

    ern

    p1

    be1

    k

    dy

    '

    ;

    l

    V 'stup

    programu po

    t to iprav bude stejnj.

    ako

    v

    pedchoz ch

    ii

    padcch.

    V imntc si, e entokrt

    sme

    nepotebovali lit et zcc

    rn

    rr krrI ik rs t i. a toto

    pohodl

    sme

    ov em zaplat i l i hor

    prirvrrtt

    zt| lrrirrvi:hocxtu.. luk clruh ' '

    ak

    1rcli

    ' r t|ckttl i trttsi

    a n it lt1srrr.

    soubor

    zl om1cs

    */

    4Z

    .sEre

    1

    .lt 't l t t rultu' l tc\

    i ' l l l t t r lv

    4.t

    &

    Vinual

    C#

    u lev ho okraje strnky,

    nebo kdybychom

    je

    odsadili,

    staly by se

    vloen

    mezery

    jeho

    sou st lypsaly by se

    i do v .stupu.

    Zdrojovy text tohoto

    programu najdete na WWW v souboru

    zl om3. s

    v adresi

    ap03\01.

    Pou vte-li Visual C#,

    nejsp

    ste

    v .stup

    n ho na ich

    programri

    dosud

    nevidli: Konzolov okno

    se

    po

    sputn

    rogramu

    sice oteve,

    ale

    pi

    ukon en

    rogramu

    se hned zase

    zav e. Pokud chcete u tohoto

    prosted

    tstat,m ete

    pou it

    nsleduj c

    trik: Jako

    posledn p ikaz

    v

    metod Main

    )

    napite

    p ikaz

    System.Consol. ReadLi e(

    Tento

    p kaz

    prisob ,

    e

    se

    program

    zastavi a bude

    ekat, stisknete

    klvesu

    Enter; teprve

    pak

    skon .Upraven

    metoda

    l.4ain( na eho

    posledn ho programu

    tedy bude m t var

    publ ic

    stat ic

    void Main()

    {

    System.Console.| , ' ] r i teLine( ' '1

    oU ky \ np e rn ' '+

    ,'tipl

    \nbe1sk

    dy.

    '

    ;

    System. onsol . ReadLi

    e(

    I

    Jmen

    V

    pedchoz ch

    dstavc ch

    sme

    si ekli' e

    pou vme

    bjekt,

    kter'.

    se

    jmenujeSystem. onsol . Tenton ueve pkndlouhj'a eho opako-

    van ypisovn

    ep jemnrnavn ;

    atst i ale mri eme st

    rce

    uetit' e si

    pov me

    ak,

    mus me i

    ale nco

    povdt

    o

    tzv.

    prosto-

    rech

    men.

    Ve velkfch

    programech a

    tak ve velkj'ch

    programovfch

    knihov-

    nch) se vyskytuje obrovsk

    mno stv bjektu

    a v echny

    e

    teba

    jednozna n

    ojmenovat

    pidlit

    im

    identifiktor.

    Aby nedo lo e

    zmatkrim, zavdi

    jazyk

    C#

    mo nost

    pidat

    e

    jm nu

    objektu

    et

    jak si

    ,pijnreni,,

    za at o do

    prostoru

    men.

    Jm no

    bjektu e

    pak

    skld

    z vlastn hodenti rktoru,

    ed

    terj,

    e

    te kou

    ipojeno

    mno

    odpov daj c ho

    rostoru

    men.

    Rrizn

    bjekty

    mohou

    mt

    tejn

    m na,

    pokud

    sou

    v rriznj'ch

    rostorech

    men.

    V na crn pade Systemm no rostorumen a Conso]emno

    olr.jcktu.

    ll,'

    | l l

    |)tlkttt|

    l)r()granlu

    ou vme

    c e

    men

    z

    jednoho

    rostoru

    men,

    ttclrtr

    rtlkttc|

    ott iv tntc

    edno m no

    pakovan,

    m eme

    eklada i

    i,lci.c

    ..pi jlrreni..

    jrrr no

    rostoru

    |men

    budeme ynechvat.

    o

    vy. j r t | |.| rrrr:

    zv.

    | i rck ivrtu

    t. '

    tr1,. icrir var

    urf

    tg

    7z'o,r/o

    '

    jtrtt'rti

    | | t l tt t ;c t tt t 'i

    1 i .

    t tr izetrtr.

    ) | | )P. l . l | l r|,

    rrttt l

    .

    '

    1r| .cpsrr l

    akl

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    22/124

    /* Prostory

    jmen

    -

    soubor zlom4.cs

    */

    using System;

    crdss lruIyKun

    t

    publ ic

    stat ic void 14ain(

    -i

    Console.Wr"i eL.ine( ' 'l

    u ou k r j . '

    ;

    Console.lr ']r i teLine( ' 'p ern

    r ipl ' ,

    ;

    Console.t , ' l r jteL.ine( ' 'd'belsk

    dy.' ')

    ;

    I

    I

    Jeho zdrojorn- text

    najdete na WWW

    v adresi Ka

    p

    03

    \

    0 1.

    3.2

    Po ta

    t'

    po t

    Promnn

    Typ nt

    Zat m

    jsme

    si hrli se znakovj'mi

    etzci. Zkusme

    nyn napsat

    prtr

    gram,

    ktery

    vypo te sou et vou sel

    vytiskne ho.

    K tomu ale

    budeme

    poebovat

    m sto

    v

    pamti,

    kam

    ulo me hodnoty

    obou s tanc

    '

    a

    tak

    m sto na

    ulo en ".fsledku;

    in 'mi

    slovy, but|c

    me

    potebovat

    promnn .

    Abychom

    mohli

    promnn

    pou vat,

    mr"rsi

    me

    po ta i ik.zat,

    by

    e

    vy voiil'

    mus me

    e

    deklaroyat.

    K naimprvn m pokusrim pou ijemecel s la, ro n se v jazyce

    (.//

    pou v

    atov .typ int. Deklaraci

    promnn

    ypu int

    v C# m

    crrrc

    zj

    ednodu en

    opsat

    takto:

    int

    jm no

    =

    hodnota1

    kde

    jm no

    je

    identifik|or

    deklarovan

    promnn

    a hodnota

    peds|rr

    vuje hodnotu' kterou

    bu8e tato

    promnn

    obsahovat hned

    po

    vytvtr|'c

    n .

    (Pokud

    na

    po te n

    odnot

    nez|e i nebo

    pokud

    ji

    v okami|irr

    deklarace neznme,

    mri eme uto tzv.

    inicializaci vynechat')

    Nyn m eme

    napsat nap. akoqfto

    program:

    / / S t n v ou s el

    -

    soubor Sou et . cs

    using System;

    c] ass Sou et

    I

    stat ic void lYain(

    I

    :

    55;

    /

    P run

    s t an ec

    :

    66;

    //

    Druh

    s t an ec

    / / Sou e t

    r

    [l :

    in t

    ln1.

    rnL.

    (

    a

    b

    c;

    r)

    {{

    *

    '

    l

    .l5,Il,,lhlt lI

    , , i

    ,i .ikltt,lv

    {

    Console.WriteLine(

    . 'Sou et

    s e]

    {0}

    a

    {1}

    je

    {2\,,

    '

    a

    '

    b, c);

    l

    )

    V

    prvn ch

    dvou

    dc chmetody

    l"]ain() deklarujeme

    promnn

    a,

    resp. b, s

    po te n mi

    odnotami

    55' resp. 66. Ve tet m

    dku dekla-

    rujeme

    promnnou

    c, kter

    po te n

    odnofu

    neur me.

    Pozdji

    do

    n

    ulo me

    sou eta+b,tak e

    na

    jej

    po te n odnot nezle .)

    V nsleduj c m

    dku vypo teme sou et

    a+b a

    jeho

    hodnotu ulo me

    do

    promnn c.

    opertor

    :

    zde

    tey neznamen

    rovnost, a|e

    p i azen

    - ulo en hodnoty do promnn .

    Pod vejme se

    na

    p kaz,

    terj'm vypisujeme

    v 'sledek.

    Vo1n metody

    |dr teLi ne(

    )

    m nyn

    4

    parametry

    -

    znakovy

    etzec

    promnn a, b

    a

    c.

    Jednotliv

    parametry

    sou

    oddleny

    rkami.

    Znakov

    etzec, kter '

    p edvme metod

    WriteLine(

    ),

    obsahuje

    krom o ekvan ho

    extu tak peci rkace

    0}, {1

    a

    1ZI,

    kter r uj

    m sta,

    na nich m tato metoda

    lrypsat hodnoty dal ch

    parametr

    .

    Ve

    slo en1ich

    zvorkch

    jsou

    poadov

    sla

    tchto

    parametru

    (ov em

    po tan

    od 0), tak e

    O]t

    namen m sto,

    kde vystoup

    hodnota

    pro-

    mnn a,

    {1}

    pedstavuje

    m sto,

    kde

    se

    lyp e

    hodnota

    promnn b

    atd. Po

    pelo en

    spu tn

    yp e ento

    program

    Sou e t s e155 a 66 je 12 1

    Deklarujeme-li

    nkolik

    promnnj,ch

    stejn ho

    ypu,

    m eme v echny

    deklarace

    zapsat do

    jednoho

    dku zajedno

    jmno

    typu; v

    pedchoz m

    pikladu

    sme

    nap.mohli napsat

    inLa:55.b:66,c;

    Promnnou

    jsme

    c ale nemuseli deklarovat.

    M sto

    toho

    jsme

    mohli

    r, i lpsatvyraz

    +o

    ako

    tvrfj 'parametrmetody

    ,JrieLine(

    ):

    (] r l t l : ,o]e.| , l r

    t eLi ne ( '' S ou e t s e l

    0}

    a

    {i}

    je

    {2}' ' ,

    a ' b, a+b);

    Zt|rtljov '

    text tohoto

    programu po

    uvedenych

    ripravch

    najdete na

    wWW v souboru

    ap03\02\Sou et .

    z'

    |'rlkttt|

    rychtlnr chtli s tat

    ak eln sla, amozejm

    m

    eme.

    l) l|t()V},

    yp,

    pou vanj '

    ro

    reln s la ' e v C#

    nazlv doub]

    .

    S ta

    lcr|yv

    p cr|cltoz l t trograrnu

    m sto nt

    pst

    v ude

    oubl .

    |tr:rlIlrrllis|rt tt icttto

    pr()gralnu

    aapsat

    podobn

    ako

    v b nm

    i.

    vtl|.

    1rtttIzr:

    rr s tr llcselirrrr13rky tijontc osetinnou

    e ku.

    niciali-

    Zl|( 'c

    ) t1'|| l | l t tyt: l t

    r

    t )

    )|.() l(|

    tti ir:t t |

    t i l ; r .

    va r

    r l l t l l r l l

    n

    r"' .1.

    lr

    1r(r. l ' :

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    23/124

    Druh

    mocnina

    liorrn|ni

    purametr

    Zrojovy text akto

    upraven ho

    rogramu

    najdete a

    WWW v soubo-

    ru

    Kap03\O2\Sou et2.cz.estl i e

    o

    pe lo te

    spust te esk1

    h

    Windows,

    vyp e

    Sou e t

    e . | 55,1 a

    66

    '2

    je

    I2I

    '3

    V imntesi,

    e

    program p i

    rrlstupu

    pou il

    okln ch

    zvyklost ,

    .j.

    v

    reln m

    sle

    apsaldesetinnou

    rku, ikoli

    te ku.

    Metoda,

    terVypo te

    odnotu

    Nau ili jsme se s tat, od vejmese na dal po etn perace. Nikohtr

    asi nepekvapi,

    e

    pro

    ode tn e

    pou v

    opertor--;

    ovem

    prtr

    nsoben se

    pou v

    opertor

    *,

    kte mus me v y,,

    Zapsat, a

    pro

    dlen

    pou vme

    opertor /

    (lom tko).

    Jazyk C#

    nem ny

    zvl tn opertor

    pro

    operaci

    umocovn '

    lr

    proto

    si

    nap ememetodu, kter

    ho nahrad .Mri e vypadat

    takto:

    //

    |Yetoda

    ro

    vypo e t ruh

    mocnjny e. lych sel

    s tatjc

    int Dvojmoc(intn)

    t

    return n*n;

    l

    Deklarace t to metody za in opt

    kl ovj/m slovem

    stat.i c,

    nebrtl'

    jde

    o statickou

    metodu

    (mri eme

    i

    volat,

    i kdy neexistuje

    r'|rrri

    instance dan dy).Dle

    nsleduje slovo

    i nt, kter ik, e tato

    ttte

    toda, ypo te avrti ce|

    slo.Dvojmoc

    e

    identifiktor t to

    netody;

    zrt

    n m v zvorkch

    nsleduje specifikace

    parametr

    t tometody.

    Metoda Dvojmoc(

    m

    teden

    formln

    parametr

    typu

    jnt,

    ktery

    st'

    jmenuje

    n. Tento

    pafametr

    pedstavuje

    slo,

    eho

    druhou

    mocttitttt

    chceme spo tat.

    Druhou mocninu sla

    n

    pedstavuje

    yraz

    n*n. Slovo

    return, kletii

    mu

    pedchzi,ik, e n*n

    e

    v .sledek,

    kter'' m metoda

    DVo.jltttl.

    r

    vrtit. Proveden

    p kazu

    eturn tak

    prisob ' ese

    program z mclrtrly

    vrt na m sto, odkud

    jsme ji

    zavola|i.

    Celj'

    program,

    kterj,metodu

    Dvo

    moc

    )

    tak

    ou ije'm em t virr

    /i

    Metoda

    pro

    v .po etr uh mocn' i

    y

    -

    soubot. voj

    cs

    r:

    ass I'est

    I

    st.aLic inl Dvo.imoc(int n)

    | ' .

    V t lttt lett l i tIicc

    lt itk tt/tst l lrctt i

    t c kr r re l t r r f| r :k c1as l t t y t tccI l i iv t i t t tt .

    l

    lrtrtslt*

    t t Ir |ct t tc

    rl lrt

    'ttt i l t .Ir.vct||c:i.'Itr.

    Irr

    v

    (. l l

    t t r .Irc ' Nr .:t l t i icIt || l l | ,r | |

    trqtl '

    i

    I

    l l 'h(t

    lU l \() l l ( 'c

    i.

    tttttslt ltt '1',=rl1

    tr l;r lrt l '

    I

    |

    ,| l

    7tt

    l

    .:t , l | l t l t . l ,

    (i

    *'

    l

    . l t , l l t t tl l t t t . l tl . ' l l i /

    tt,l| 47

    motody

    I{trv| lrrr

    nelilly

    {

    return

    n*n;

    I

    stat ic

    void

    Maino

    {

    int

    n

    :

    12 ;

    System.

    onsol

    .

    , l r teL

    ne (

    ',Druh

    mocnina

    s la

    {0}

    je

    );

    l

    {11",

    n,

    Dvojmoc(n)

    Mohli jsme ovem ak napsat

    int

    n

    :

    12 :

    int

    m

    :

    Dvojmoc(n);

    a

    v metod

    ,dri

    eLi ne(

    )

    vypsat

    hodnofu promnn

    m;

    nj'sledek

    y

    byl

    stejnj'- program

    by vypsal

    Druh

    mocnina

    s l

    12

    je

    74 4

    Pod vejme

    se

    b l e na

    zpis

    Dvojmoc(i),

    kter'' p edstavuje

    oln

    metody

    Dvojmoc(

    .

    Tento

    zpisv programu

    zprisob ,

    epo i ta

    rove-

    e

    p kazy

    v tle

    t to

    metody

    a

    pitom

    si za formln parametr

    n closa-

    d hodnofu,

    kterou

    mu

    pi.voln

    pedme

    v tomto p pad

    odnotu

    ulo enou

    v

    promnn

    .

    ( kme,

    e

    sme

    metodu

    zavolali

    se

    skute -

    nym parametrem i .) Potom na m sto,kde jsme voln metody

    zapsa|i,

    dosad

    v 'sledek.

    V imnte

    Si tak ,

    e

    sme

    pi

    voln

    metody

    pou ili

    samotny

    identifi-

    ktor,

    zat mco i

    voln

    metody

    WrjteL.ine(

    jsme

    k

    jej mu

    mnu

    museli pipojit

    jmno

    objekfu,

    k

    nmu pat i.

    Pi

    voln

    metody

    t e

    liid1l 51a6;

    vdt

    samotn

    identifiktor.

    Zdrcljov1|

    oubor

    Dvoj

    cs

    najdete

    na

    WWW

    v

    adres i ap03\02.

    l)tx| vc.imc

    e nyn

    na

    prvn

    dek

    deklarace

    metody

    Dvojmoc(

    '

    kter

    ttt var

    ..

    tI,r.

    t ' Dvo.jrnoc

    nt

    n

    ikrrrtc

    ll

    hlavi ku

    metor]y

    a obsahuje

    v echny

    nformace

    drile it

    1lrr l' j c j

    t l l i tn .

    de sc

    nap.

    ozv me, etato

    etoda

    I

    sc.jtttcttu

    e

    )vrr, i rrror

    l

    jc

    s| l rt ickr i

    k l i r lv

    |t lvt l ,

    r r

    ).

    l

    v t . tt t : ysIct| r. :k

    y1ltt

    rl l

    l

    rr

    1rfl

    lrIr, irri

    i

    ttttls i lttc

    r - r. lt| rr l

    eltlr. l lr

    kutc I ryararnetr

    ypu

    nt .

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    24/124

    3.3

    Zk|adn

    stup

    Pedchoz

    programy

    mly

    jednu

    zsad

    vadu: Umly

    se s t

    nebtl

    umocnit

    pouze

    sla, ter

    jsme

    zapsalrido

    programu' Kdybychom

    a|c

    v y, kdy budeme

    cht t

    se s tdv

    s la,

    nli

    pepisovat a znovu

    pekldat

    celf

    program,

    asi by

    ns

    programovn

    rychle

    pestalo

    avit.

    Je zejm ,

    e

    potebujemenstroje,

    kter by

    programu

    umo nili

    i st

    za bhu

    vstupn data.

    Problematice

    vstupri

    a v ,stupri v C#

    se budeme

    vnovat

    podrobrr

    pozdji;

    zatim se

    nau me lespo

    s t

    ednoduch

    data

    ze standardni

    ho vstupu (tedy z klvesnice). Nap eme du V,kter nm poskytrrt.

    metody

    pro

    vstup celj.ch

    arelnych

    sel znakovj,ch

    etzcri.

    rotoc

    je

    budeme

    cht t volat,

    ani bychom

    vytveli

    instance

    t dy VV, budtrrl

    statick .

    Ne se

    pust me

    do

    programovn , mus me si

    ci kolik vc:

    1. T da ystem.Console

    bsahuje

    metodu

    ReadLine(

    .

    Tuto mett l t| tt

    volme bezparametrtt;

    pe te

    e standardn ho

    sfupu

    -

    tedy

    z klri

    vesnice

    -

    znakov

    etzeca wt

    ho'

    2. Y

    ptogramu v C#

    mri eme znakovy etzec

    ulo it

    do

    instattcr.

    knihovn dy

    tri ng.

    3. Na tenj' znakovy etzec,kter ' obsahuje zpis sla,e tebapI.c

    v s tna s lo .

    tomu

    nm

    pos lou

    ta ti ck

    metody

    Toint1''r

    ,

    p padn oDo b e

    (

    )

    knihovn dy y

    em. o

    ve t.

    Vyzbrojeni

    tmito

    vdomostmi

    j i

    m eme

    zkusit napsat

    tdu

    tv

    Nejjednodu

    ude

    metoda

    I nStri ng

    ),

    kter na tea wt

    znakrrvy

    etzec..

    I

    using

    System;

    statj c s tr i

    ng 1nStr i

    ng(

    //

    N a t e

    vrt

    etzec

    {

    retunn Console.ReadLine(

    l

    Metoda 1n]nt(

    ),

    kter na te vricel'

    slo, ude

    trochu s|o i l ' i i

    s tat i c

    i nt lnInt(

    )

    I

    //

    Na t e

    a v r t s ] o

    typu

    itt l

    str ing

    s

    -

    lnStr ing();

    inL i

    ==

    onvert.ToInt32(s);

    fcl .Ll rn

    l;

    I

    4H

    (' lt

    1tt

    t ;r lt 'ttrt i 't '

    '

    | . l t 't l t t r*lt tr ' l ie"l , i iAl,t , ly .1 9

    &

    &P

    Nejprve

    do promnn

    s

    typu

    stning

    u lo me

    etzec16,

    ter'wt

    metoda

    ReadLj

    e(

    .Pakzavolme

    metodu

    ConVert.ToInt32(s

    , kter

    se

    pokus

    pev st

    etzec

    s

    na

    selnou

    odnofu;

    v 'sledek

    wt me.

    Stru nji

    bychom

    tuto

    metodu

    mohli

    zapsat

    nsleduj c m

    zprisobem;

    publ

    c

    stat ic

    int

    InInt(

    )

    {

    neturn

    Convert.ToInt32(

    nStr ing(

    ) );

    l

    Podobn

    bude

    vypadat

    metoda

    InDoub'le(),

    ter

    bude

    s t

    vracet

    hodnofu ypu double (reln s lo) .

    Ce| , vlpis

    t i dy

    najdete

    v

    ns|eduj c m

    dd|u;

    e j

    zdrojovy

    text

    e

    na

    WWW

    v

    souboru

    ap03\04\01\VV.

    s.

    Poznamenejme,

    e metody

    1nint(

    )

    a InDoubl

    (

    )

    poadu j ,

    bychom

    ka d

    sfupuj c

    slo

    zapsali

    na

    samostatnou

    dku,

    u

    -u;i.j"sic

    rudu

    dal ch

    nectnost .

    Pozdji

    pochopiteln

    nap eme

    ponku

    lep

    verzi

    t dy

    V.

    Vytv me

    ynamickou

    nihovnu

    Nyn

    mri eme

    trrto

    t dupou ivat.

    Jak?

    Prvn , co ns napadne, e okop rovatt duVVdo kd ho z program

    ,

    ve kter m

    budeme

    potebovat

    nco

    pe s t.

    o

    je

    ale

    velice

    ne ikovn

    *

    pi

    kop rovn

    mri eme

    na

    nco

    zapomenout,

    mri eme

    omylem

    pou t

    tarou

    verzi,kter

    nebude

    dlat'

    co potebujeme,

    mri e

    s stt

    ada

    dal ch

    nep jemnost .

    aleko

    lep

    by

    bylo pelo it

    i

    futo

    t du

    jcdnou

    prov dy

    a

    pakji

    u jen pou vatjako

    vou

    vlastn

    nihovnu.

    Abyohom

    ovem

    mohli

    t du

    Vpou vat

    z

    jinychprogramri,

    mus me

    v n

    prov st

    nkolik

    drobnj,ch

    rprav:

    Mus me

    ci ,

    e t idu

    VV

    iako

    cc|ck

    a

    jej

    ednotliv

    metody

    sm

    pou vat

    dokoli.

    K tomu poslou

    sltlvo

    pubIic,

    k ter

    ap eme

    ed

    lovo

    c-l ss

    a

    ped

    eklarace

    me-

    lrtrl'

    Po

    to

    rprav

    ude

    t da

    V

    vypadat

    akto:

    /

    , ' 'ot l I lor

    VV.

    : l ;

    zkl

    adn

    pr^ostedky

    ro

    vstup

    tt ' , rr; 'y, ,, r ' rrr;

    l rtt l r l i r

    r l , r , , ' ,

    VV

    I

    lrrr lr l

    r ',l ,r l

    ir,,lr

    lrr;

    lrr i jt.rjngo

    I

    l

    r ' l

    l l l

    lt

    (.otr ',olr '.1(r ',rr l l

    irrr '(

    ):

    I

    .. . ' . , . . , ' ,

    vc sklt lct.t rr l l|

    1t ' l iIttt lr,c

    sIr r i t js|:

    )r r ;r l r ll t t t l t tt t . ' '

    c

    ttIt li

    p

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    25/124

    publ ic stat ic

    inl

    InlnL()

    t

    /*str ing

    s

    :

    InStr ing();

    l/

    Iytot1

    dky

    -i

    t

    i

    :

    Convert.ToInt32(s);

    ll

    )ze

    pepsat s tru n. i

    return

    i;*/

    //

    takto:

    '

    return

    Convert.ToInt32(

    nStr i

    ng(

    ;

    I

    pub'1

    c

    stat i

    c

    doubl

    InDoubl

    (

    )

    t

    r e u

    n C

    on

    ve t .

    To

    D ub

    e

    (

    TnS

    r n

    g

    (

    )

    )

    ;

    ))

    Nvn

    tento

    soubor

    pelo me'

    entokrt

    ale

    nechceme

    vytvoit

    spustt

    teinj,

    souborlz,

    nyy

    knihovnu,

    a

    proto

    pou ijeme

    v

    p kazov

    tlet.

    pep nat:

    ] bra

    y.

    Program.csc

    tedy

    zavolme

    p kazem

    csc

    /t: l ibrarY

    VV.cs

    Pekladem

    znikne

    soubor

    VV.

    dl

    l, kterj,

    pedstavuje

    zv.

    dynamicktrtt

    knihovnu.

    Pouit

    ynamick

    nihovny

    Nyn

    zkus me

    na i

    knihovnu

    pou t.

    Proto e

    nm

    nejde

    o

    nic

    jinrrr

    n o vyzkorr en unk nosti, nap eme ednoduchj, program, klct.i'

    pe te

    standardn ho

    stupu

    s lo

    l 'yp e

    eho

    dvojnsobek:

    /i

    Iest

    kni

    hovnY

    soubor

    Pokus.

    s

    usi

    ng

    System;

    class

    ]est

    I

    t

    s tat ic

    void

    lYaino

    i

    Console.WriteLine( , 'zadej

    s ]o:' '

    )

    int

    i

    :

    VV.InTnt() ;

    Consol

    .VJri

    eLi

    ne(

    'Jeho

    dvojnsobek

    e

    . .+2*i

    )

    ;

    l

    )

    Tento soubornajdetena WWW v adresi ap03\03'

    Pi

    p ekladu

    ovem

    narazime

    na

    probl m:

    T du

    V

    peklada

    reztui

    l

    pozaduie,

    abychom

    mu

    ekli,

    kde

    ji

    najde.

    K tomu

    nm

    posltltri

    tti.

    pinae

    l,

    |,

    zaktem

    uvedeme

    m no

    knihovny

    (pesn j i

    jltt(.tttr

    ..'

    skupcn ) , . jc

    bsahuje

    d u

    V.

    P k az

    pekladu

    ak bu

    1

    potebujeme

    po tat ou in *2*

    ...

    *n.

    Po et

    irritc| i i tt nr c

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    26/124

    P k az

    hi

    1e

    l,odrn nky,

    rc|n n

    pertory

    Typ

    bool

    5. Vrt me

    se

    na klok 2.

    Kroky

    3

    a 5 opakujeme'

    dokud

    e

    splnna

    podm nka

    n > 1.

    (Takov trr

    opakovn

    se obvykle

    ozna ujejako

    cyklus.)

    obsahuje-li

    promnn

    n hodnotu

    0 nebo

    l, tento

    algoritmus

    s kon ,

    aniz

    kroky

    3 a 5

    probhnou.

    Promnn

    s

    proto bude

    obsahoval

    sprvnj'

    v .sledek.

    obsahuje-li

    promnn n cel slo

    t

    e

    1, u lo

    e do

    s ve 3.

    krrt

    ku sou in

    *n

    (tedy n' nebo obsahuje

    na

    po tku

    1)' Pak

    se obsah

    rl

    zmen 1 , tak e s

    postupn znikne

    sou i n

    *(n-1)*...*2.

    o.|c

    po adovany

    n

    Takov to

    opakovn

    krokri 3

    a 5

    |ze naprogramovat

    pomoc

    p kazrr

    whi e.

    (Hovo me

    ak

    cyklu

    whi

    1e.) eho

    tvar

    e

    whi|eQl

    od

    m k a)

    |p

    azy}

    a

    zprisob ,

    e

    progtam bude

    provdt

    p kazy uzav en

    e slo enyc|r

    zv orkch,

    dokud

    j

    e sp|nna

    p

    o dmnka.

    Pesn ji:

    l

    Program

    nejprve

    vyhodnoti

    podm nku

    (4isti, za

    e

    splnna).

    l

    Pokud

    nen ,

    p ikaz whi

    1e

    skon .

    o znamen,

    e

    p kazy,

    uza\ c

    n mezt

    slo enfmi

    zvorkami

    (nazyvan

    tak

    ,,tlo

    cyklu..),

    st.

    pesko program bude

    pokra ovat

    p kazem, te

    nsledujc

    zrl

    nimi.

    r

    Je-li

    podm nka splnna,

    provedou se

    p kazyuzaven

    mezi

    sloc

    nj'mi

    zvorkami.

    Pak

    Se Znovu

    vyhodnot podm nka,

    a

    nen -li

    s1r|

    nna,

    p kazwhj

    1e

    skon

    td.

    Podm nka

    je

    vyraz,

    kte|j,

    je

    bu

    pravdiu ,

    1 kme,

    e

    podm nkir

    1r'

    splnna)

    nebo nepravdiuj,( ikitme.

    e

    podm nka

    nen splnna).

    Nc;

    stji

    obsahuje

    porovnn hodnot

    promnnj'ch

    pomoc

    zv.

    rela r l t ' | t

    opertoru

    >'

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    27/124

    Opertory

    ' f+a--

    x:xopy;

    Ve

    skute nosti

    ovem

    nejdejen o

    tisporu

    pipsan :Pou it chto

    opc

    rtor r mo uje

    peklada i ak rytvoit

    rychlej

    progam.

    S

    potrr

    t m

    tchto opertoru

    mri eme

    pepsat

    yklus

    pro

    v1ilpo et

    aktorilu

    tl.l

    tvaru

    whi e(n

    ) 1)

    {

    //

    0pakuj,

    dokud

    je

    n )1

    s

    *:

    n; / l

    To t o

    s: s*n

    n

    -:1;

    ll

    To t o

    n: n

    -

    1

    )

    ovem

    zvt en

    nebo zmen en

    hodnoty

    promnn o 1 e natolik t.lrli

    t

    e

    pro

    to

    jazyk

    C#

    zav di zv|tni opertory

    ++

    a

    - -.

    Tyto opertory

    m eme zapsat

    bu

    ped promnnou' na

    kterott

    tttii

    prisobit

    (pak

    hovo me

    prefixov m opertoru),

    nebo za ni

    (pak hrrvrl

    me

    o

    postfixov m

    opertoru).

    Postfixovj, opertor

    zp sob ,

    c

    lit-

    nejprve

    pou ije

    nezmnna

    hodnota

    promnn

    a

    teprve

    pak

    sc

    lirlrr

    hodnota

    zvt

    nebo zmen .

    re rxov'.|

    pertor

    zprisob ,

    e se

    nc.i;tt

    e

    zmn

    hodnota

    promnn , atato zmnn

    hodnota

    se

    pak pou ijc.

    Pkaz

    n

    -:1;

    v metod f ( ) proto m eme nahradit p ikazem

    n--:

    nebo

    - -n

    .

    V tomto

    p pad ezarc| na

    tom, zda

    pouijeme

    prefixovy nebrl

    1rrrnl=

    fixov '

    opertor. Jedin ,

    o

    potebujeme,

    e

    zmen ito

    1 hodntr(rr

    rlrr

    enouv

    promnn n.

    V

    pedchoz m j'kladu

    jsme

    si ale

    ekli,

    e

    pou ijeme-li vc

    vyrirrt|

    postfixovy opertor

    -

    *,

    vypo te

    program hodnotu

    vyrazu

    z

    piivr'r|ttl

    hodnoty

    promnn a teprve

    pak

    tuto

    hodnotu

    zmn . Proto

    ltliir'rrtc

    cyklus

    v

    metod

    f

    (

    )

    pepsat

    akto:

    whi le(n

    )

    1)

    I

    s

    *:

    n--;

    I

    Mo rr

    m

    to na

    prvn pohled

    pipad

    l o i t

    zbytc n

    ,trt1'.t

    ttttt .

    v r rc

    jazyky,

    ocltlbn .iako.jazyky

    i rozcn

    maj alc svc

    vi l:

    rri lr.

    irl irlrrly a

    p lrt . i

    hrtlosti

    progranritlrlri i

    c

    zrrri l t

    ptrtrivlrl.

    tItrr1r't.y

    lcx l

    1lrrrgt ' t t ttttt

    l i tktr l Ip| . i IVcI l( ) ll

    t tcIr l tIrrtt

    r

    r

    1111j1|L.1

    rlr

    WW.\\.

    v

    sottltttt 'tt

    ',r1r0

    \04\l,rf

    I

    ',i

    ".

    5d l'

    ll

    1tt

    ,'

    e' l+'ltt ' r"t

    I

    .le'tltttlitr'li i

    1ti'lk

    ttrlt '

    55

    Podm nka

    Metoda f

    ()

    tedy

    um

    po tat

    aktorily

    celj'ch kladn;fch

    se l'ov em

    zadme-|ij

    jako

    skute nj'

    parametr

    nap. slo

    _I,

    vrti 1, i kdy

    pro

    zpom slanen faktoril

    definovn. To nen dobr , a

    proto

    se

    to

    pokus me

    napravit.

    Abychom mohli ur it,co m

    program

    dlat, v zvislosti natom, zda

    je

    splnna

    ur it

    podm nka, pou vme

    v C#

    pikaz

    i f .

    Jeho

    zjednodu-

    enj'popis

    e

    if(po dm nka)

    {p kazy

    1

    \

    nebo

    if@odm nka)

    {p kazy

    1\

    e|se

    |p kazy

    2|

    (Prvn

    mo nost

    ozna ujeme

    ako

    ne

    pln

    if, druhou

    1ako

    upln

    lr.)

    Za

    slovem

    i f

    je

    v

    zvorkch

    zapsna

    podm nka.

    Pak nsleduje

    skupi-

    na

    pikaz

    ve

    slo enj'ch

    zvorkch, zde

    ozna en

    p kazy-I.

    Pak

    mri e

    et

    nsledovat slovo e] se a za n m

    dal skupina

    p kazri

    e

    slo enj.ch zvorkch

    (p kazy

    -),

    Yyznam tohoto

    p ikazu

    je:

    l

    Program nejprve

    lyhodnot podm nku.

    r

    Je-li

    podm nka

    splnna,

    provecle

    p kazy_l.

    V

    p pad,

    e

    jsme

    pou ili

    variantu S el se,

    p esko ip kazy-2.

    l

    Nen -li

    podm nka

    splnna,

    pesko

    kazy-l.

    Jestli e

    sme

    pou.

    ili variantu

    S

    e.l e,

    provee

    p knzyJ,

    jinak

    neprovede nic a

    pe-

    jde

    na

    p kaz

    sleduj c zap ikazem if.

    Vyzbrojeni t mto novj'm

    poznatkem

    se mri eme

    pustit

    do

    riprav

    ped-

    choz ho

    programu.

    Prvn ,

    co ns mri e napadnout'

    je

    testovat

    ped

    ka dlm volnm, zda nhodou nepedvme

    funkci

    f

    (

    )

    zpom

    pa-

    ramctr.

    Upraven metoda |Va n

    )

    mri em t tvar

    ',

    .aLic

    void lv lain()

    I

    ( ,onsolc.WriteLine( ' ,Zadej

    e' l

    nezporn

    s lo :

    ' ' ) ;

    i rr l n

    ,VV.lnTnt.();

    i f(n >-.

    0)

    I

    (] r l tr. 'o l t . . | ,n]r i

    ,eI

    ne(. 'Faktori1

    s 'l a

    {0}

    je

    {1}. ' ' '

    I

    n. f(n)) :

    r ' l ' , r '

    I

    ( lorr, ,olr ' . l l r iLcl

    rrr. ( "/adal

    si

    {O}."

    +

    ''

    |.t

    Ir l t . | .1

    u prtrn ho J:;- l nen def inovn. ., n);

    v soubortt

    i f(m

    l: 0)

    {

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    28/124

    Zdrojovy

    text

    programu

    po ttl rprav

    ajdete

    na

    WWW

    KapO3\04\Fakt3.cs.

    lndikace

    hyby

    I kdy takto

    upraveny

    program funguje

    a v

    p pad adn

    zporn htl

    s la

    vyp e

    m sto

    vysledku

    upozornn '

    nen

    pou it .

    postup dobry.

    Pokud

    bychom

    toti chtli

    metodu

    f

    (

    )

    pou vat

    v

    programu na

    v ce

    m stech,

    museli bychom

    mt

    neustle

    na

    pamti, e

    pro

    zporn

    s li r

    nefunguje

    sprvn.

    Rozumnj

    proto bude upravit

    de rnici

    metody

    f ( ) tak, aby v p pad hybn hodnoty skute n ho arametru nevrit

    cela

    nesmysln '

    vysledek.

    Jedn m

    z asto

    pou vanj'ch

    programtorsk',ch

    trikri

    je

    wtit

    v taktr

    vm

    p pad odnotu,

    kter

    signalizuje

    chybu.

    Faktorilje

    v dy

    k|atl

    n slo,

    proto

    by

    mohla

    metoda

    f

    (

    )

    v

    p pad pom ho

    paramelrl|

    vracet

    nap.

    odnofu 0:

    static

    int

    f( int

    n)

    {

    i f(n

    (

    0) return

    0;

    'i

    nt s:1;

    //

    Pomocn

    while(n

    )

    1)

    {

    s

    *:

    n--;

    )

    neturn ;

    I

    Dostane-li

    metoda

    f

    ()

    nezpomy

    parametr,

    nebude

    podm nka

    v

    pi|

    kazu

    i

    f

    splnna.

    ^Program

    edy

    pesko i

    kaz etunn

    v

    i f, vyptlt.lr

    hodnotu

    faktorifu

    a vrt ji.

    Pedme-li

    t to

    metod

    tt

    )

    zporny

    1lrt

    rametr,

    rovede

    se

    p kaz eturn

    O v

    if aprogram

    Se

    Z

    metody

    1( l

    ihned vrt .

    Cyklus

    whi e se

    tedy neprovede.

    Tuto

    verzi

    programu najdete

    na

    WWW v

    souboru

    kap03\04\

    a

    4

    '

    Vyijimky

    Skute nost, e metoda f {) indikuje chybnou hodnotu parall| |l||.

    znamenur it

    pokrok,

    ovem

    nijak velkj,.

    Po ka d m

    oln

    rrlclrlrlv

    f

    (

    )

    toti budeme

    muset

    kontroLovat,

    da nhodou

    nevrtila

    0. Me

    Itrr|.r

    |'4an

    )

    naeho

    programu

    pak

    bude

    mt

    tvar

    l/

    Kdy

    ()

    jndikuje

    chybu

    Vracenou

    odnotou

    static

    void 14aino

    {

    Conso'le.|nlr itel'ine(.'Zadej

    e 1

    nezpor 'n

    l ; ] rl : ' '

    r 'nt.

    ..

    VV.lnln1.():

    int.

    m

    *

    f

    (n);

    / /

    S ta 1

    ne

    p ln

    if

    promnn, obsahuje

    vysl

    edek

    5(r

    i lt.tltttultt,. lt l. ' lttillttlr

    .7

    E

    vtj ir ttka

    Conso]e.|,Jr. i teLjne( ' 'Faktor ' i

    1 s l a

    {0}.'

    +"

    je

    {1}.",

    n, m);

    I

    el se

    t

    Consol e.lalr i teLine(

    "ladal

    js

    j

    {0}.

    "

    +

    '.

    Faktorj.J zporn ho

    s la nen def inovn. ' . , | | ) :

    l

    )

    Pou vn metody f

    ()

    se t m nijak nezjednodu ilo.

    Navic

    tttt.|trt|

    kter vracej hodnoty ( k e jim tak unkce), astoptlrriviitttc 'r'

    slo itj ch yrazech,

    jako

    je

    x

    :

    (f(n)-f(n-1))

    /f(n-2)

    :

    Pokud

    bychom opravdu chtli vyu t

    chopnosti to

    irlr|icc

    tlr|thrlr,l

    chybu

    pomoci

    vrcen

    hodnoty, museli

    bychom

    nc.jprvc

    vv1ttrr-|l

    f

    (n),

    vrcenou

    hodnotuulo i t

    do

    pomocn rom nIrc

    t z|irrttlltl|rrt

    zda nedo lo

    chyb,

    otom

    ud|at tot f

    (n.1)

    a

    s

    l t l|

    ''

    ].

    '|{|g|.|

    by

    pak

    byl

    nepehlednj',

    eho

    zpis

    by

    neodpov dir| l tlcttttt

    ti1rir'

    e en ho

    robl mu.

    Proto modern

    programovaci

    jazyky

    pou ivaji

    v laktlv.tlt|rt

    r l1lir

    mechanizmus uljimek.

    V tomto rivodu si ho

    popi crnc:

    ieltt

    c|tttt |rr|

    nodu en; emri eme e mu ale vyhnout, proto c ttttrrhc rtclrrr|vf|rl

    z knihoven

    prosted

    NET vj'jimky

    pou vaj .

    Vj'jimka

    je

    chyba, kterou nedok e

    dan meto

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    29/124

    d lu

    t t o

    kapitoly

    se dozv mc'

    e zpisem

    new System.Excepl

    on

    zprva vlastn

    vytvime

    nstanci

    dy ystem.

    xcepti

    on.)

    Uprav me

    tedy

    metodu

    f

    (

    )

    do

    tvaru

    stat ic

    int

    f( int

    n)

    {

    i f(n

    (

    0)

    throw

    new

    Exception(''Faktori]

    nen

    definovn.');

    i nt s

    :

    1; / /

    Pomocn

    romnn, bsahuje

    vys l

    edek

    ll

    ...

    a dle

    stejn

    jako

    pedt m

    ..

    l

    Dostane-li

    tato metoda

    f

    (

    )

    jako

    parametr nezpom

    s lo,

    vyptlr:lc

    jeho

    faktoril.

    Dostane-li

    a|e

    zpom

    s lo,

    probhne

    p kaz hr.r'w

    i

    p.og.u- skon

    hybovj.m

    hl en mlg

    Unhand1

    d Except i

    n:

    System.

    xcept i

    n:

    Faktori

    l nen

    def i

    novn

    at

    Vypo et . f (In t32

    )

    at

    Vypo et . | '4a

    n(

    )

    Tato

    zprva

    nm oznamuj

    e,

    e vmik|a

    neo eten

    jjimka

    typtr

    ,u

    tem.Exception,

    to v metod

    ()

    t d y

    ypo e t ,

    terou

    sme

    vrr| l t| l

    v

    metod

    Mai

    )

    t d y

    1 ipo et .

    N program nyn pi patn adan mvstupu vyp ezprvu o c|lylrrr

    skon .

    o

    je

    skvl

    pi

    adn ,

    ale skute nj'program

    se

    takto

    c|trrr' l

    nemri e;

    my Se s

    t m v ak

    zat m spokoj me.

    Pozdji

    se

    samoz 't.1ttl

    nau me

    fjimky

    zachycovat

    a

    o etovat.

    Tento

    programnajdete

    p WWW

    v souboru

    Kap03\04\Fakt5

    r:',.

    P i

    programovn dy

    V

    sme

    pou i l imetody

    Convert.ToltrI

    . 't

    9

    Convert.ToDoub]

    (

    ).

    Pedme-li

    mto

    metodm

    ako

    skr'rte ny

    li|tl|=

    metr znakovj

    etzec,

    ter ' nep edstavuje

    e l ,

    resp.

    relrti'

    | '.|rr,

    vyvolaj

    tak vyjimku.

    Magick

    s|a

    Po chv l i

    experimentu

    s vjpo ty faktorilu zjist me,c prrt |trlr|ttrr|ti

    v t

    e 12

    nedv

    n

    program

    sprvn

    j'sledky.

    Drvtltl

    '|c

    ;t.r|tlrr=

    duchf:

    vypo ten

    s lo

    sou

    p l i

    elk

    a

    nevejdou

    sc tltl

    pittttt-|r

    y-

    lrrazcn

    pro

    promnnou ypu

    i nt.

    |.,| ' t ,k t t t I

    ttt it le i l t.t lvt.i1

    tait lst itItrvl ittr l

    Visrr lrI

    SlrrrIirr.Nl i '|'.

    l i \ l r l \ ' .r '' ' | ' IF t I

    r I i r t I t lp1rv ' t lk t l t r .

    lct.(.ttttttt

    t it l l i tIt lc.

    e

    Ilttr lc

    Irttt

    tt.r lp.t.ttttt

    lt lIi| |' lrr

    It it l .al

    ttt.lttt i

    yzttttttt t

    tttrIt l

    trt

    l i r I t t t ' r tv eIr

    ('

    ll

    1t1

    .,

    ' lr it,i ,' '

    &

    rcP

    5H

    l , lc ' , l tu,, l t t , ' l t i l i i ' l i l ' t r l t '

    5r )

    S

    parametrem

    vt m

    ne |2, upozomit,

    e

    e

    nco patn;

    ejl peopt

    vyvolat vljimku.

    Nic nm samoejm

    nebrn upravit za tek

    tIo

    metody

    do

    tvaru

    stat ic

    in, t f( int n)

    I

    //

    Ir ik s etzc. i vysvt l me

    o

    nko] ik odstavc t ]e

    i f(n

    (

    0) throw

    new Exception( , 'Faktori l

    . '+

    n

    +

    nen def .i

    ovn,'

    i f(n

    ) 12) throw new

    Except ion( ' 'P 1 . i

    e lk s lo :' ,

    +

    n) ;

    /*

    ...

    a dle stejn

    jako

    ped t m

    ..

    */

    )

    Jen e akto

    zapsan

    podm nka

    pedstavuje

    pravdu skvlj'

    zprisob,

    ak

    si v budoucnu

    pidlat

    problmy.

    V tuto chv li

    sice dobe v me,

    co

    slo

    12 znamen, ale a se

    k

    programu

    po

    njak dob wt me'

    aby-

    chom

    ho opravili

    nebo

    upravili,

    budeme

    muset zdlouhav

    pemj' let

    nad

    jeho

    vfzramem.

    Co kdy se

    pozdji

    rozhodneme

    pou it k

    vjpo-

    tu aktorilu

    jinj'

    dator{'

    typ s vt m

    ozsahem a budeme

    cht t futo

    konstantu zmnil? V

    programu

    se toti

    mri e vyskytovat

    v ce dvanc-

    tck s ruznj,m vyznamem

    a my budeme

    muset

    nad ka dou

    pemylet,

    z,da

    eto

    ta,

    kterou chceme

    zmnit, nebo njak

    jin.

    Takovj,mto

    pimo

    zapsanlm

    konstantm

    (literlrim)

    ikaji

    program-

    toi

    ,,magick

    sl. a

    pokud

    mo no se

    jim

    vyhj'baj .

    M sto toho

    pou-

    v a j

    ojmenovan konstanty, kter

    m eme v C# deklarovat

    pomoc

    slova const,nap.

    r:orrst nt lv lez 12;

    V dal m

    progamu pak

    pou vme

    dentirktor

    Mez;

    pi

    akj'chkoli

    rpravch

    ta

    mnit deklaraci

    t to konstanty,

    nemus me

    hledat

    jej

    pou it programu.

    |)oklarace

    dy ypo et edy

    mri e a inat

    / /

    froLrbor ap03\04\fkt6.

    s na l,J {W

    r

    l . t

    ,.;

    Vpo e t

    I

    c:onsL nt Mez

    IZ t

    ,,

    . r l . i r:

    nt

    f( int n)

    I

    l l ( r l

    (

    0) throvv ew

    Exception(. 'Faktoril

    .+

    n

    +

    ''

    nen def

    novn''

    ;

    i l (n

    )

    Mez)

    1-hrow ewExcept ion( ' 'P l i

    e lk

    s ]o .: '.

    +

    nr ;

    //

    '

    .

    '

    t l ' i

    t'

    . i . t

    tt

    pt-.dt,im

    ..

    I t rr v i t tt t t l e

    i trrk ii1listt

    . | ' r

    l i / ,

    v t 'l k

    s lo :' '

    +

    n.

    opertor

    +

    tttftetttc

    lrrtti|

    rrrr

    ;rrtje'rti. c l zcc

    |trlc|not

  • 7/23/2019 C# Pro Zelene - Miroslav Virius (2002)

    30/124

    3.5 Univerz|n

    pis

    A

    dosud

    jsme

    programovali

    t dy, ter obsahovaly

    pouze

    static|itl

    metody a nevy adovaly vytven nstanc . To ale

    nen

    v

    objektovyt'|t

    jazycich

    p l i

    blykl , a

    proto

    Se v

    tomto

    odd lu

    nau me

    prac()Vlll

    -

    s instancemi.

    T da ext

    Zatim

    jsme

    vypisovali text zadany

    pomoc

    etzcovj'ch

    konstant. N

    yrr|

    se pokus me za dit, bychom mohli tento text programov mnit.

    K ukldn zrrakov .ch

    etzc

    ou vme

    v

    C#

    knihovn t du

    tr't tl.t

    Mohli bychom tedy v

    hlavn

    (a

    zat mjedin ) t d a eho

    progri|||||l

    definovat datovou slo ku typu

    string. Proto ev ak budeme s

    nir1rt

    sem cht t

    manipulovat i zptisobem' kterj' t da tr^ing neumoI"trr;t..

    vytvo me

    i

    pro

    npis zv| tni du, terou nazveme

    TeXt.

    Tato

    t da ude obsahovat

    datovou slo ku npi s typu

    stri ng' dtl

    rrii

    budeme ukldat

    po aovany

    text; a

    proto e

    pravidla

    objektovi.lrli

    programovniikaji,

    e s

    datovj'mi

    slo kami by neml zachzet

    ni|'t,|u

    jiny

    ne metody dan iy, deklarujeme

    ji jako

    soukromou

    *

    s

    pr".islrt

    pov..fmi rvy

    pr

    vaL


Recommended