Algoritmus a problém - UKF

Prednka 6 sbory kontanty Sbory daje uloen v poli (listboxe) je niekedy iaduce uloi kvli zrchleniu ladenia kvli uchovaniu dleitch hodnt vezmime najprv pole Ulote do sboru moje data sla, ktor mte uloen v poli.

na to, aby sme daje mohli uklada, potrebujeme v prvom rade uri typ sboru, do ktorho budeme zapisova v pascale sa typ sboru asto odvja od typu dajov, ktor do ukladme mono ho definova ako typ alebo ho posta len deklarova type TSubor=file of integer; var subor:file of integer; Kd pre poet 10 var pole:array[1..10] of integer; subor:file of integer; i:integer; begin for i:=1 to 10 do pole[i]:=random(1000); // pripravi premennu subor tak, aby ukazovala na udaje // v subore mojedata assignfile(subor,'mojedata'); // vytvori (ak existuje vymaze) subor a pripravi ho na zapis // pokial nie je zadana cesta vytvori ho v aktualnom adresari rewrite(subor); for i:=1 to 10 do // vypise (zapise) udaje na miesto, kam ukazuje premenna subor

// u nas ukazuje na subor mojedata, takze sa zapisuje tam write(subor,pole[i]); // ukonci subor, potvrdi zapis a zatvori subor closefile(subor); end; Natanie dajov zo sboru predstavuje opan prstup k dajom hypoteticky tu vak existuje mal zdrhe: me sa sta, e programtor bude chcie otvori daje zo sboru inho programtora, ktorho poet prvkov nie je toton s tm jeho zsah do programu je pomerne jednoduch, no vyaduje prepsanie hodnoty na viacerch

miestach urit rieenie poskytuje pouitie premennej pocet, ktorou by sme kd pri zpise i pri tan mohli nahradi neriei sa tm vak deklarcia (defincia) poa, ktor neme ako ohranienia pouva hodnoty premennch (nie s v dobe vyhradzovania pamte pre pole znme) problm sa riei pouvanm kontnt (kov slovo const) Kontanty s poas behu programu nemenn zmenou hodnoty sa menia na vetkch miestach naraz mu by deklarovan v prslunej procedre, obvykle sa vak umiestuj pre klauzulu Type na zaiatku sboru Kd s vyuitm kontanty procedure TForm1.Button2Click(Sender: TObject);

const pocet=10; var pole:array[1..pocet] of integer; subor:file of integer; i:integer; begin // opat pripravi premennu tak, aby ukazovala na udaje // v subore mojedata assignfile(subor,'mojedata'); // otvori subor na citanie reset(subor); for i:=1 to pocet do // precita zo suboru udaj a posunie citajuci // ukazovatel o poziciu dalej read(subor,pole[i]); // zatvori subor closefile(subor); end; Praktickejie rieenie nie

vdy je potrebn vyuva vetky vyhraden poloky poa niekedy ich pre istotu vyhradme viac ako spotrebujeme a nemusme ich ani zaleka uloi vetky (napr. neukladme nulov poloky a pod.) pokia by sme zo sboru natavali viac hodnt ako je v om uloench - skolabuje ukazovate na sbor ns v kadom momente doke informova o tom, i sme u pretali vetky daje sta sa len vhodne opta Kd procedure TForm1.Button3Click(Sender: TObject); var pole:array[1..pocet] of integer; subor:file of integer; i:integer; begin assignfile(subor,'mojedata'); // otvori subor na citanie reset(subor);

i:=0; // index pola, do ktoreho sa nacitava // kym nie je koniec (End Of File) suboru while not EOF(subor) do begin inc(i); // index sa posunie // mozno ho pouzit aj na zistenie poctu ulozenych zaznamov read(subor,pole[i]); // udaj sa precita do pola end; ShowMessage(Nacital si +IntToStr(i)+ poloziek.) closefile(subor); end; daje v sbore of integer pokia sa pozrieme do sboru obsahujceho uloen pole sel, uvidme len aksi nezmyslen znaky, ktor pre ns ni nevyjadruj avak systm ich z nejakho dvodu nata ako sla, ktor sme zadvali ak

daje zobrazme hexadecimlne, vidme, e sbor obsahuje 10 tvorbajtc, t.j. pre kad zapsan slo prve 4 bajty, ktormi je reprezentovan typ integer. Pokia by sme daje chceli zrekontruova, prostrednctvom prevodu zo 16- kovej do desiatkovej sstavy by sme nemali ma problm... daje v sbore of integer II. vhodou takhoto zpisu je rchle a jednoduch ukladanie numerickch hodnt aj ich natavanie priamo do celoselnho poa nevhodou je nemonos (saenie) zsahu do dajov v sbore o o krajie by bolo, keby sme daje videli a mohli prepsa aj manulne v nejakom tom textovom sbore ... o to pomalie bude samozrejme ukladanie i natavanie, pretoe budeme potrebova daje konvertova z selnch na textov...

Textov sbor ako najprijatenejie rieenie na ukladanie textovch informci sa jav file of string pokia vak takto typ sboru definujeme (deklarujeme), kompiltor ns alej nepust typ nie je pouiten ako typ sboru problmom je variabiln (nie pevn) dka (a tm aj kapacita pouitej pamte) pre premenn typu string prvm rieenm je uri presn poet znakov, ktor sa maj pre jednu poloku v sbore vyhradi, napr.: file of string[50] tm sa zabezpe

ukladanie 50 znakovch hodnt bez ohadu na to, i bud naplnen alebo nie Textov sbor II. tento spsob vak prli plytv miestom alternatvou je poui sbor typu text zpis: var subor:text teda nie file of text potreba deklarova subor v asti public alebo private (neposta ho poui v deklaranej asti procedry) prpadne definova najprv vlastn typ v sekcii type

(potom ho mono poui i v deklarcii procedry) tento typ nepodporuje mnoh funkcie typovch sborov, no pre nae alie potreby je optimlny Prklad Ulote daje z poa do textovho sboru data.txt tak, aby boli zrozumiten aj po otvoren v textovom editore. procedure TForm1.Button1Click(Sender: TObject); const pocet=20; var i:integer; pole:array[1..pocet] of integer; begin for i:=1 to pocet do pole[i]:=-50+random(101); // generuje nahodne hodnoty -50-50

// subor je deklarovany v casti private ako text assignfile(subor,'data.txt'); rewrite(subor); for i:=1 to pocet do write(subor,IntToStr(pole[i])); closefile(subor); end; Prklad II. vsledok je sce na prv pohad zrozumiten no na pohad druh nm prli naden asi nebudeme niekedy je toti problematick posdi kde jedno slo kon a druh zana vkladajme nov slo vdy do novho riadku: assignfile(subor,'data.txt'); rewrite(subor); for i:=1 to pocet do writeln(subor,IntToStr(pole[i]));

closefile(subor); ln zabezpe po zpise automatick odriadkovanie Prklad III. Uloen daje natajte do poa. var pocet:integer; pole:array[1..20] of integer; riadok:string; begin pocet:=0; assignfile(subor,'data.txt'); reset(subor); while not EOF(subor) do begin // do premennej riadok precita text z aktualneho riadku

readln(subor,riadok); inc(pocet); // zvysi pocet // riadok skonvertuje na cislo a vlozi do pola // priamo vlozit nie je mozne, pretoze treba robit konverziu // a parametrom readln musi byt premenna nie konverzna funkcia pole[pocet]:=StrToInt(riadok); end; closefile(subor); end; Ukladanie a tanie listboxu pln analgia, uvdzame len kd zpis: assignfile(subor,'data.txt'); rewrite(subor); for i:=0 to Listbox1.Items.Count-1 do

writeln(subor,Listbox1.Items.Strings[i]); closefile(subor); tanie: Listbox1.Items.Clear; assignfile(subor,'data.txt'); reset(subor); while not EOF(subor) do begin readln(subor,riadok); Listbox1.Items.Add(riadok); end; closefile(subor); Urenie nzvu sboru za behu ukladanie doposia do pevne stanovenho sboru prax: vber sboru v dialgu rieenie: pouitie systmovch dialgov

SaveDialog OpenDialog Dialgy Uloi relatvne zloitejia opercia, ktor vak riei pouvanie dialgov (v systme preddefinovan formulr umoujci nastavenie zkladnch parametrov systmu) pre ukladanie: SaveDialog vsledkom je zskanie zadanho nzvu sboru Parametre SaveDialogu DeaultExt koncovka, ktor sa auto- maticky prid sboru

pri uloen v prpade nepouitia: run zadvanie koncovky sbor bez koncovky => ochudobnenie o ikonu a automatick otvorenie po dvojkliku Parametre II. Filter uruje zoznam typov sborov v dialgovom okne prv stpec obsahuje text, ktor bude v okne zobrazen, druh masku sborov, ktor sa bud zobrazova Title text zobrazovan v hlavike ukladacieho dialgu Pouitie dialgu v aplikcii

Dialogs (Save, Open...) nevizulne komponenty, t.j. po spusten aplikcie ich nevidie, no mono ich v kde pouva nepeme kd do udalosti zobrazenej po dvojkliku ast chyba v nich verzich!!! potrebn volanie, ktor zobraz okno, umon zadanie nzvu a po zatvoren ho vrti Uloenie procedure TForm1.Button1Click(Sender: TObject); var nazov:string; i:integer; begin // ak sa savedialog ukonci potvrdenim (kliknutim na ulozit), prebehne // vetva podmienky ak sa zrusi, nic sa neudeje // execute - funkcia, ktora vrati hodnotu true pre potvrdenie a false pre zrusenie

if savedialog1.execute then begin // do premennej precitame nazov suboru zadany v SaveDialogu // uloen je kompletn cesta k sboru nazov:=SaveDialog1.FileName; // nasleduje u znme ukladanie assignfile(subor,nazov); rewrite(subor); for i:=0 to Listbox1.Items.Count-1 do writeln(subor,Listbox1.Items.Strings[i]); closefile(subor); end; end; Otvorenie analgia s uloenm

pouije sa OpenDialog mono nastavi Title a Filter ako prednastaven sa berie typ sboru zadan vo filtri ako prv begin if opendialog1.execute then begin nazov:=OpenDialog1.FileName; Listbox1.Items.Clear; assignfile(subor,nazov); reset(subor); while not EOF(subor) do begin readln(subor,riadok); Listbox1.Items.Add(riadok); end; closefile(subor); end; end;

Existencia sboru niekedy me by uiton zisti, i sa dan sbor u v zadanej lokalite nenachdza: if FileExists(nazov) then napr. kvli tomu, aby sa mohol vymaza: DeleteFile(nazov); Reprezentcia dajovch typov aby sme vedeli, koko miesta na disku zaber integer:

Typ Rozsah vekos Integer -2147483648..2147483647 znamienkov 32-bitov (4 bajty) Cardinal 0..4294967295 bez znamienka 32-bitov Typ Rozsah vekos Shortint -128..127 signed 8-bit Smallint -32768..32767 signed 16-bit Longint -2147483648..2147483647 signed 32-bit Int64 -2^63..2^63-1 signed 64-bit Byte 0..255 unsigned 8-bit Word 0..65535 unsigned 16-bit

Longword 0..4294967295 unsigned 32-bit Integer pozostva zo 4 bajtov, z ktorch 1 bit je vyhraden pre znamienko do jednho bytu mono zakdova 256 rznych hodnt do dvoch bajtov 256*256 samotn slo sa vypota ako bajt1*256+bajt2 do troch bajtov 256*256*256 slo sa sa vypota ako bajt1*256^2+bajt2*256+bajt3 zo trvtho bajtu pouijeme len 7 bitov (8. je znamienkov) 128*256*256*256 Reprezentcia typov II. char: je reprezentovan jednm bajtom 256 hodnt transformcia selnch hodnt

na znaky sa realizuje prostrednctvom ASCII tabuky, kde kadej numerickej hodnote zodpoved jeden znak boolean postauje 1 bit, no obvykle sa v prostred Win32 vyuva cel byt. real pozostva z dvoch ast: mantisa slice urujce presnos sla exponent nsobok desiatky napr. 1,4587E20 predstavuje slo 1,4587 * 10^20 mantisa: 1,4587 exponent: 20 m presnejiu hodnotu poadujeme, tm viac bitov m ma mantisa m vie (menie) slo poadujeme, tm viac bitov m by vyhradench pre exponent

Reprezentcia typov III. Typ Real Real48 Single Double Extended Comp

Currency Rozsah 5.0 x 10^-324 .. 1.7 x 10^308 2.9 x 10^-39 .. 1.7 x 10^38 1.5 x 10^-45 .. 3.4 x 10^38 5.0 x 10^-324 .. 1.7 x 10^308 3.6 x 10^-4951 .. 1.1 x 10^4932 -2^63+1 .. 2^63 -1 -922337203685477.5808 .. 922337203685477.5807 mantisa 15-16 vekos 8 bytov 11-12 7-8

6 4 15-16 19-20 19-20 8 10 8 19-20 8 comp je vlastne integer, no nie je ordinlny, preto sa uvdza medzi relnymi typmi Jednoduch lohy na sbory

Hodnoty zadan v sbore typu integer natajte do listboxu a njdite medzi nimi maximum. Natajte do listboxu riadky z textovho sboru a do sboru vysledok.txt ulote najdlhie a najkratie slovo. Pre zadan text uloen v sbore vypte do listboxu vetky rzne riadky, ktor sa v om vyskytuj. Pre zadan text uloen v sbore vypte do listboxu vetky rzne slov, ktor sa v om vyskytuj (slov s oddelen medzerami). K rznym slovm pridajte i poetnos v samostatnom listboxe prostrednctvom poa v tom istom listboxe vypte slovo, ktor sa vyskytuje najviac rz

Recently Viewed Presentations

  • Particle Image Velocimetry for Fluid Dynamics Measurements Lyes

    Particle Image Velocimetry for Fluid Dynamics Measurements Lyes

    Lyes KADEM, Ph.D; Eng [email protected] Laboratory for Cardiovascular Fluid Dynamics MIE - Concordia University Presentation What is PIV? Very Basic Idea Behind Optical flow measurements Very Basic Idea Behind Optical flow measurements Very Basic Idea Behind Optical flow measurements ...
  • Itä-Suomen yliopisto - tulevaisuuden yliopisto ajassa

    Itä-Suomen yliopisto - tulevaisuuden yliopisto ajassa

    Senior Lecturer Esko Ryökäs (Senior Lecturer Kristine Järnefelt) Professor Jarmo Jääskeläinen (Tiina Jääskeläinen) ... In spring 2015, the university appointed a FINEEC team to support and guide the university's preparations for the audit, and to prepare the self-evaluations.
  • Swamps - Montgomery County Public Schools

    Swamps - Montgomery County Public Schools

    Description. Has pore soil. Lots of animals. Mostly fresh water. Also can have salt water. Wetland
  • How the Special Needs Brain Learns

    How the Special Needs Brain Learns

    How the Special Needs Brain Learns David Sousa By Dr. Paul A. Rodríguez ** Introduction, Chapters 1 & 2 Something to Remember "Learning and retention are more likely to occur when students can observe, engage in, discuss, reflect upon, and...
  • Government Intervention in the economy

    Government Intervention in the economy

    spillover cost. Qmarket. Pmarket. S. private. Coase Theorem. Ronald Coase is a Nobel Laureate in Economics. His theory states that resources can be allocated efficiently if private ownership rights are assigned and when there are no transaction costs.
  • Ocean Process Analysis Laboratory ,Institute for the Study of ...

    Ocean Process Analysis Laboratory ,Institute for the Study of ...

    Arial MS Pゴシック Tahoma Wingdings Times New Roman Times MS Mincho 宋体 ocean 1_ocean Evaluation and application of operational altimeter-derived ocean surface current datasets on the NW Atlantic shelf H. Feng1, D. Vandemark1, J. Levin2 and J. Wilkin2 1Ocean Process...
  • Step 3a Review - AFCEA International

    Step 3a Review - AFCEA International

    Times New Roman Arial Times Arial Narrow Wingdings Symbol 1_Blank Presentation Blank Presentation 2_Blank Presentation 3_Blank Presentation Microsoft Excel Chart Microsoft Excel Worksheet Adobe Photoshop Image How NETCENTS Helped NCI Achieve Large Business Status Customer Foundation Slide 3 Slide 4...
  • Duty to Warn/Right to Protect Legal Infrastructure for

    Duty to Warn/Right to Protect Legal Infrastructure for

    California Law Post Tarasoff. Psychotherapists; duty to warn of threatened violent behavior of patient; immunity from monetary liability. There shall be no monetary liability on the part of, and no cause of action shall arise against, any person who is...