Funkcije za rad sa simbolima. Formiranje novog simbola iz složenog objekta s gradijentnom ispunom

05.11.2019 Vijesti

Simbol

Simbol je jedan znak. Bilo koje – slovo, broj, aritmetički znak ili prostor, interpunkcija ili podvlaka... I također posebni znakovi - novi red, BackSpace, znak dolara ili postotak. Tip "znak" u Delphiju je označen sa Char:

ShowMessage("Unijeli ste " + c);

ShowMessage("Premjesti u novi" + c + "redak");

Već smo rekli da se simboli uzimaju iz tablice simbola ANSI ili UNICODE. Većina simbola se koristi, neki su simboli pomoćni. imajte na umu da veliko slovo"A" i malo "a" su različiti simboli! Također, latinsko “s” i rusko “s” su različiti simboli, iako su slični kao dva graška u mahuni.

Null znak se ne koristi, on je rezerviran kao potpuna null. Programeri su pronašli dostojnu upotrebu za ovaj znak, koristeći ga u događajima unosa teksta kada trebaju spriječiti korisnika da unese bilo kakve znakove. Ne možemo vidjeti servisne znakove u tekstu polje. Servisni simboli su , <Unesi>, <tab> i drugi. Svaki znak računalo obrađuje kao broj od 0 do 255, dakle riječ"HELLO" u memoriji stroja izgledat će kao niz brojeva: "207 208 200 194 197 210".

Funkcije simbola

U praksi je često potrebno obraditi pojedine znakove. Varijablama znakovnog tipa Char mogu se dodijeliti vrijednosti na ovaj način:

Budući da je za računalo simbol broj, simbolički podaci se mogu međusobno uspoređivati. U ovom slučaju, najveći simbol će biti onaj čiji je broj u tablici simbola veći. Na primjer, "i" će biti veće od "a":

ako je b > c tada ShowMessage("Istina!")

else ShowMessage("False!");

Pri radu sa znakovnim varijablama često se koriste funkcije Chr() i Ord(). Funkcija Chr() uzima broj kao parametar i vraća znak koji odgovara tom broju u tablici ANSI:

funkcija Chr (X: Byte): Char;

Funkcija Ord() radi upravo suprotno, uzima znak kao parametar i vraća broj pod kojim je taj znak pohranjen u tablici ANSI:

funkcija Red (C: Char): Bajt;

Varijable znakova mogu se koristiti s ovim funkcijama:

U prvom retku smo u varijabli a upisali simbol "I" koji u tablici simbola odgovara broju 200. U drugu, cjelobrojnu varijablu upisali smo broj 200, jer je simbol s tim brojem bio zapisan u varijablu a koju smo proslijedili kao parametar. Na kraju, u trećem smo retku u cijelu varijablu upisali broj 102, koji odgovara simbolu "f".


Crta

String je skup znakova. Niz se može predstaviti kao statički ili dinamički niz znakovnih podataka. Već smo raspravljali o vrstama nizova u “Control construct if, for petlja”: AnsiString – niz iz ANSI– simboli, i WideString– niz UNICODE – znakova.

Vrsta String nije zasebna vrsta; zadana je AnsiString. Međutim, može se rekonfigurirati za WideString, iako to nije potrebno. Dakle, slobodno navedite varijable niza kao String:

s:= "Ovo je više redaka" + #13 + "string";

Kao što možete vidjeti iz primjera, string može biti sastavljen od nekoliko podstringova, a mogu mu se dodati čak i pojedinačni znakovi. U primjeru smo dodali znak broj 13, ovo je znak novog retka. Kao rezultat izvršavanja ovog koda, ShowMessage() procedura će prikazati poruku podijeljenu u dva retka:

Ovo je višelinijski

ShortString– kratki niz iz ANSI– simboli. Može sadržavati od 0 do 255 znakova. Rijetko korišten. Zapravo, možete deklarirati tip String s unaprijed određenom veličinom:

Kao što vidite, niz je deklariran s numeričkim indeksom, gotovo kao niz. Zapravo, znakovni niz i postoji niz podatke o znakovima i možete s njima rukovati na isti način. Indeksiranje znakovi u retku počinju s jedinicom, odnosno indeks 1 odgovara 1. znaku retka.

string:= "Zdravo";

niz := "a"; //promijenjen 5. znak retka

ShowMessage(stroke); //rezultat: niz "Privatno"

Ovo je također niz, i s tim ćemo se morati pozabaviti u budućnosti. Ovaj niz radi potpuno drugačije od Stringa. String predstavlja niz znakova, čiji nulti element sadrži broj bajt, dodijeljen pod ovom crtom. A varijabla tip PChar– ovo nije sama linija, ali pokazivač na početak retka, tj varijabla pokazuje na prvi znak niza u memoriji računala. Gdje onda PChar pohranjuje količinu bajt u redu?! I nigdje! Već smo govorili o tablici simbola ANSI, i otkrili da je nulti znak prazan. Evo posljednjeg lika PChar upravo taj simbol pohranjuje, i Računalo, nakon što ga je pronašao, smatra da je linija gotova.

Sa žicama PChar vrlo je nezgodan za rad, ali to ćemo morati učiniti kada izravno radimo s WinAPI funkcijama. WinAPI funkcije su funkcije Windows, ne Delphi. Međutim, Delphi vam omogućuje da ih koristite. Ponekad je to potrebno, na primjer, kada Delphi alati nisu dovoljni za izvršenje predviđenog zadatka. Korištenje takvih funkcija nije uvijek prikladno, ali procesor ih izvršava puno brže, budući da su sadržane u operacijski sustav. Primjer - funkcija Okvir za poruke().

Jeste li već navikli na prikazivanje poruka pomoću Delphijeve ShowMessage() funkcije? Naviknite se na novu značajku!

Application.MessageBox("linija 1", "linija 2",[ gumbi + tip_prozora]);

· linija 1 - prikazuje tekst unutar prozora.

· red 2 – tekst u naslovu prozora.

Ako ne navedete [buttons + window_type], pojavit će se jednostavan prozor s gumbom OK, kao u funkciji ShowMessage().

Riječ "simbol" ima mnogo značenja; posebno pod simbolom in Adobe program Illustrator razumije vektorski objekt koji je pohranjen u paleti Simboli(Simboli) (slika 1), otvara se naredbom Prozor=>Simboli(Prozor=>Simboli), te je namijenjen za višekratnu upotrebu. Rad sa simbolima pomalo podsjeća na kloniranje objekata, ali samo na prvi pogled, budući da je to temeljno različite tehnologije s različitim mogućnostima i namjenama. Zajedničko je samo to da bilo koji simbol iz palete Simboli može se mnogo puta umnožiti.

Među mogućnostima rada sa simboličkim objektima u Adobe Illustratoru nije samo opetovano umetanje određenog simbola iz palete Simboli, ali i razne manipulacije njime. Simboli se mogu raspršivati ​​poput spreja, povećavati, smanjivati ​​i rotirati, mijenjati raspored simbola u grupi, gustoću simboličkih objekata, stupanj prozirnosti i sjenčanja itd. U te svrhe program ima skupinu posebnih simboličkih alata Alat za simbole, koji uključuje alate Simbol raspršivač(Prskalica likova), Mjenjač simbola(Promjena znakova), Symbol Scruncher((Gustoća objekta), Symbol Sizer(veličina znakova), Simbol Spinner(rotacija znakova), Simbol Stainer(toniranje znakova), Screener simbola(Transparentnost znakova) i Styler simbola(Stilizacija likova) (sl. 2). A ono što je najvažnije je da ako promijenite simbol, možete odmah ažurirati sve njegove kopije na stvorena slika; i nije važno koliko su značajne promjene koje ste napravili.

Vrijedno je napomenuti da uporaba simboličkih objekata na slikama ima mnoge prednosti: zbog činjenice da simboli predstavljaju objekte slične jedni drugima (to znači da se svaki element na slici odnosi na svoj izvorni uzorak simbola), ukupni volumen slike slika se smanjuje, što je važno kako kod izrade web grafike, tako i kod razvoja animacija, kartografskih slika itd. Osim toga, rad sa slikom je značajno pojednostavljen, budući da svaka promjena simbola u paleti Symbols automatski dovodi do odgovarajuće uređivanje svih grafičkih objekata izgrađenih na njegovoj osnovi u slici, što značajno ubrzava razvoj. Potonje je posebno važno za dizajnere koji se bave razvojem kartografskih objekata - karata, dijagrama i dijagrama koji sadrže veliki broj sličnih elemenata koji igraju ulogu simbola. Ovo štedi dizajnere od ponovljenih operacija kopiranja i lijepljenja, kao i ručnog uređivanja svakog znaka iste vrste. Tehnički gledano, cijeli proces izrade npr. karte je znatno pojednostavljen, a broj potrebnih koraka smanjen. Kao rezultat toga, za izradu kartografske slike dovoljno je postaviti objekte simbola na prava mjesta, a sve njihove ostale karakteristike mogu se konfigurirati kasnije, i to istovremeno za sve elemente iste vrste uključene u sliku.

Isporučeni simboli nalaze se u nekoliko biblioteka (iako njihov ukupan broj nije velik (slika 3)), a pristup traženoj biblioteci može se dobiti pomoću naredbe Prozor=>Biblioteka simbola(Prozor=>Biblioteka simbola). Broj simbola može se višestruko povećati, kako preuzimanjem simbola potrebnih za rad s Interneta, tako i stvaranjem novih simbola vlastitim rukama. Zapravo, bilo koji objekt, grupa objekata ili cijela slika može se pohraniti kao simbol, bilo da uključuje nacrtane elemente, tekst, ugrađene slike ili kombinaciju tih elemenata. Ovo je vrlo zgodno jer vam omogućuje da proširite svoju knjižnicu. Simboli oni grafički elementi koji se opetovano koriste u određenom razvoju.

Rad s pojedinačnim simbolima u paleti Symbols

Postavljanje pojedinačnih znakova u dokument

Na primjer, razmotrite najjednostavnija situacija, kada određeni algoritam treba prikazati u obliku dijagrama. Napravite novi dokument i otvorite biblioteku simbola Karte pomoću naredbe Prozor=>Biblioteka simbola=>Grafikoni(Prozor=>Biblioteka simbola=>Karta). Zatim uzastopno povucite željene simbole iz palete simbola u stvoreni dijagram i postavite ih po želji. Postoji još jedan način premještanja simbola u sliku - možete odabrati simbol i kliknuti na gumb Postavite primjerak simbola(Place Symbol Instance) paleta Simboli, što će uzrokovati pojavu jedne instance simbola u središtu slike. Tada se umetnuti simbol može pomicati na isti način, prethodno ga selektirajući alatom Izbor(Označi) ili Izravni odabir(Djelomičan izbor).

Na kraju rada, kako biste postigli određenu simetriju elemenata kruga, morat ćete sekvencijalno odabrati alatom za izravni odabir dok držite tipku Shift one simbole koje je potrebno postaviti u središte dokumenta, vodoravno ili okomito, i kliknite na odgovarajuće gumbe palete Uskladiti(Poravnanje). Rezultat može nalikovati riži. 4.

Ako vam veličine nekih objekata ne odgovaraju, one se lako mogu promijeniti odabirom određenog simboličkog objekta pomoću alata Izbor, koji će objekt automatski zatvoriti u dimenzionalni spremnik, a veličinu podesiti na uobičajeni način - povlačenjem jedne od oznaka spremnika (slika 5).

Ako trebate promijeniti dizajn svih ili samo nekih simbola, najlakši način je koristiti jedan od ugrađenih stilova. Da biste to učinili, odaberite objekte koje želite uređivati ​​pomoću alata Izbor(Sl. 6) i kliknite na odgovarajući stil u paleti Stilovi(Stilovi) u ovom primjeru stil je odabran Blue Goo(slika 7).

Ako vam niti jedan od stilova dizajna ne odgovara u ovoj situaciji, tada ćete morati prekinuti vezu sa simboličkim elementima palete Simboli, odabir slikovnih objekata pomoću alata Izbor i klikom na gumb Prekini vezu na simbol Simboli. Izgled odabranog područja odmah će se promijeniti: simboli će biti zatvoreni u velikim spremnicima i pretvoriti se u obične vektorske objekte (slika 8). To znači da možete promijeniti značajke ispune i obruba bilo kojeg elementa, na primjer postavljanjem gradijentne ispune, te izvršiti sve druge transformacije s njima (Slika 9).

Riža. 8. Promjena prirode odabira elemenata kruga nakon prekida veza

Kopiranje znakova u dokumentu

Objekti znakova jednako su jednostavni za kopiranje kao i obični vektorski objekti samo pritiskom tipke Alt. Na primjer, povucite bilo koji od simbola s palete Simboli na radni list. Ako je potrebno, prilagodite njegovu veličinu i pritisnite tipku Alt više puta, započnite dupliciranje pomicanjem miša dok držite pritisnutu lijevu tipku (slika 10).

Uređivanje pojedinačnih znakova u dokumentu

Simbolični elementi ugrađeni u sliku mogu se transformirati (promijeniti veličinu, rotirati, prikazati itd.), poput običnih vektorskih objekata, i poravnati pomoću gumba palete Uskladiti(Poravnanje), promijenite prozirnost i način miješanja u paleti Transparentnost(Prozirnost) (sl. 11 i 12) i ukrasite raznim stilovima iz palete Stilovi(Stilovi).

Riža. 12. Rezultat uvođenja niza simbola u rastersku sliku s njihovom naknadnom transformacijom, promjenom stupnja prozirnosti i načina miješanja

Zahvaljujući prisutnosti posebnih simboličkih alata iz skupine Alat za simbole Pojedinačne znakove možete uređivati ​​na sasvim drugačiji način, u nekim slučajevima to se ispostavlja prikladnijim od, na primjer, klasičnih opcija transformacije. Ocijeniti mogućnosti alata iz grupe Alat za simbole, eksperimentirajmo malo s njima koristeći primjer stvaranja nove slike. Prvo, prijeđimo s palete Simboli simbol vatre (sl. 13). Aktivirajte alat u paleti alata Symbol Sizer(Veličina znakova) i nekoliko puta kliknite na ugrađeni simbol dok veličina slike ne postane dovoljno velika (Sl. 14). Neke prednosti primjene Symbol Sizer u usporedbi s uobičajenim odabirom predmeta alatom Selecton i naknadne promjene veličine pomicanjem graničnih točaka dimenzionalnog spremnika je da za proporcionalnu promjenu veličine nema potrebe držati tipku Shift, jer je prema zadanim postavkama alat konfiguriran za proporcionalnu promjenu veličine.

Nakon toga uzmite alat Mjenjač simbola(Shift simboli) i povucite simbol u donji desni kut (Sl. 15). Pomoću alata Simbol Spinner(Rotate symbols) malo zarotirajte objekt simbola (Sl. 16), dodajte još jedan simbol iz biblioteke simbola u prvi plan Priroda, za otvaranje koje koristite naredbu Prozor=>Biblioteka simbola=>Priroda(Prozor=>Biblioteka simbola=>Priroda) (Slika 17). Zatim ćemo alatom promijeniti tonalitet boja simbola vatre Simbol Stainer(Toniranje znakova) da biste to učinili, odaberite znak pomoću alata Selecton, postavite odgovarajuću boju u prozor Ispunite(ispuni) i kliknite na simbol. Eventualno izgled slika će se odmah promijeniti: prijelazi boja će biti sačuvani, ali će njihov tonalitet postati drugačiji, približavajući se boji navedenoj u prozoru Ispunite(Slika 18). Imajte na umu da korištenjem simboličkih alata možete promijeniti tonalitet, ali ne i boju ispune ili obrub simboličkih objekata, potonje je moguće samo nakon prekida veze između simbola u paleti Simboli i njegovu kopiju na slici (naredba Prekini vezu na simbol Prekini vezu sa simbolom).

Na kraju, malo smanjimo prozirnost simbola vatre. Da biste to učinili, odaberite simbol i odaberite alat Screener simbola(Prozirnost znakova) i prvo promijenite njegove parametre, jer prema zadanim postavkama uvelike smanjuje prozirnost. Dvaput kliknite na alat Screener simbola i smanjiti intenzitet utjecaja alata smanjenjem vrijednosti u polju Intenzitet(Intenzitet) od 8, na primjer, do 2 (slika 19). Kliknimo na simbol vatre i rezultirajući rezultat može nalikovati slici. 20.

Pretvorimo sada sliku u crtež olovkom promjenom stilizacije objekata pomoću alata Styler simbola(Stil karaktera). Odaberite oba znaka pomoću alata Izbor, uključite instrument Styler simbola, a zatim aktivirajte željeni stil u ovom primjeru, stil je odabran Vanjski potez od 1 točke(slika 21).

Riža. 21. Crtež olovkom formiran na temelju simboličkih predmeta

Stvaranje novih simbola

Kao što je navedeno, simboli se mogu stvoriti iz bilo kojeg objekta koji se koristi u Adobe Illustratoru, uključujući jednostavne i složene staze, tekstualne objekte, uvezene slike piksela, gradijentne mreže i grupe objekata, kao i same simbole.

Formiranje novog simbola iz složenog objekta s gradijentnom ispunom

Recimo da već imate vektorski objekt u obliku gumba s gradijentnom mrežom (slika 22). Na temelju toga izraditi simbol i smjestiti ga u paletu Simboli, potrebno je odabrati objekt pomoću alata Izbor i povucite ga na paletu ili kliknite na gumb Novi simbol (Novi simbol) u paleti Simboli(slika 23). Na isti način stvorit ćemo još jednu identičnu sliku sličnog gumba, ali zelene boje (trebat ćemo oba simbola daljnji rad) (Slika 24). Ako je potrebno da taj simbol istovremeno postane i simbol na slici, odnosno da se pojavi veza između simbola i odgovarajućeg simboličkog objekta na slici, tada prilikom povlačenja morate držati pritisnutu tipku Shift.

Riža. 22. Izvorna slika (gumb i odgovarajuća paleta slojeva)

U redu je ako se simbol postavljen u paletu pokaže neuspješnim - lako ga je ukloniti odabirom u paleti Simboli i klikom na gumb Brisanje simbola(Simbol brisanja) ove palete.

Imajte na umu da kada otvorite ili stvorite novu sliku, paleta koja se otvara Simboliće imati izvorni izgled, odnosno neće biti stvorenih novih simbola. Stoga je potrebno sliku s novim simbolima spremiti u paletu na uobičajeni način pomoću naredbe Datoteka=>Spremi(Datoteka=>Spremi) s nastavkom *ai. Nakon toga, spremljenu paletu možete otvoriti kao odgovarajuću biblioteku i koristiti u svom radu.

Pokušajmo sada upotrijebiti stvoreni simbol na primjeru generiranja kartografske slike. Otvorite izvornu kartu (Sl. 25), kojoj trebate dodati lokacije gradova i odmarališta u obliku posebnih ikona. Otvorimo paletu Simboli naredbom novostvorenih simbola Prozor=>Biblioteka simbola=>Ostala biblioteka(Prozor=>Knjižnica simbola=>Ostale biblioteke), a zatim redom postavljajte plave gumbe na lokacije gradova (Slika 26), zelene gumbe u odmarališta (Slika 27).

Riža. 27. Konačni izgled izrađene kartografske slike s označenim gradovima i izletištima

Ako ste izradili sliku koja sadrži više kopija simbola i želite promijeniti neke od njih, na primjer, smanjiti prozirnost nekih simbola (oni će odgovarati jeftinijim odmaralištima), tada se ova radnja izvodi u dvije faze . Prvo morate pomoću alata odabrati na slici Izravni odabir objekte znakova koji se mogu uređivati, a zatim smanjiti njihovu neprozirnost u paleti Transparentnost(Slika 28). Na isti način možete promijeniti veličinu znakovnih elemenata pozivom naredbe Transformacija=>Skala(Transformation=>Size) iz skočnog izbornika (Sl. 29), te niz drugih parametara. Ako su potrebne ozbiljnije izmjene, na primjer za promjenu ispune, prvo ćete simbol morati pretvoriti u vektorski objekt, a tek onda urediti.

Riža. 28. Rezultat istovremene promjene transparentnosti nekoliko simboličkih objekata (slika i paleta Transparency)

Riža. 29. Rezultat istovremenog mijenjanja veličine nekoliko simboličkih objekata (slika i prozor skale)

Formiranje novog simbola korištenjem Blend prijelaza

Sada pogledajmo složeniju opciju. Pretpostavimo da je naš zadatak stvoriti kartu s uputama za vožnju, na primjer, do ureda tvrtke (danas su slične karte dostupne na internetu na mnogim stranicama). Ako se pri izradi takve karte ne uzme u obzir raznolikost arhitekture, a sve zgrade budu prikazane u obliku nekih stiliziranih standardnih zgrada, onda se uz pomoć simboličkih objekata u programu Adobe Illustrator to može vrlo brzo realizirati. .

Da bismo stvorili tipičnu zgradu, stvorit ćemo dvije pravokutne vektorske staze i spojiti ih pomoću Blend prijelaza, postavljajući opciju Glatka boja(izglađen prijelaz boja) (Sl. 30), rezultat će biti paralelopiped koji će prikazati zgradu. Zatim ćemo mu dodati prozore, a s obzirom na to da ćemo morati nacrtati dosta prozora, lakše će biti prvo kreirati odgovarajući simbol i smjestiti ga u paletu Simboli(Slika 31). Nakon toga ćemo stiliziranoj zgradi dodati prozore jednostavnim povlačenjem simbola prozora na zgradu (slika 32).

Kao što je već spomenuto, predložena shematska karta sastojat će se od potpuno identičnih zgrada, zbog čega bi stvorena zgrada trebala biti spremljena kao simbol u paleti Simboli, nakon što ste ga prethodno odabrali alatom Izbor(Slika 33). Nakon toga početak izrade karte više neće biti težak; bit će dovoljno umetnuti simbole kuća u potrebne dijelove karte, poravnati ih u odnosu na središte (gumb Okomito središte palete Uskladiti) i jedan u odnosu na drugi (gumbi Vertikalni distribucijski centar I Horizontalni distribucijski centar palete Uskladiti), dodajte brojeve kućama i stvorite ulice i zelene površine između njih. Možda će na početku rada shematska karta izgledati nešto poput one na Sl. 34.

Formiranje novog simbola od kista

U sljedećoj fazi izrade dijagrama morate naznačiti rutu do ureda, što je najprikladnije učiniti pomoću strelica. Možete jednostavno izraditi obris takve staze i dizajnirati je prikladnim kistom u obliku strelice, ali ova opcija ima dva "ali": prvo, staza često izgleda isprekidano (konkretno, morate preskočiti nazive ulica , itd.), zbog čega ćete morati izraditi nekoliko kontura i, prilikom izrade svake konture, prilagoditi postavke kista, što je nezgodno, a drugo, vrlo je moguće da jednostavno ne želite izravno koristiti četka u obliku strelice, jer kontura stvorena uz njegovu pomoć neće biti dovoljno atraktivna.

Možete, naravno, izraditi novi na temelju odgovarajućeg kista, ali postoji još jedan način, koji je brži i praktičniji: izradite poseban simbol na temelju kista u obliku strelice i uredite ga prema svojim željama. Pogledajmo ovu opciju u detalje: iz biblioteke kistova otvorite paletu Uzorak strelice pomoću naredbe Prozor=>Biblioteka kistova=>Uzorak strelice(Window=>Symbol Library=>Arrow Patterns), odaberite odgovarajući kist (u ovom slučaju se koristi kist Arrow 144) i oblikujte fragment strelice (Sl. 35). Povucite ga na paletu Simboli kada se tipka pritisne Shift tako da se uzorak na slici automatski pretvara u simbol, ovo će biti privremeni simbol " Strijela" Zatim smanjite njegovu veličinu na uobičajeni način, prekinite vezu s paletom Simboli klikom na gumb Prekini vezu na simbol(Prekini vezu sa simbolom) koji se nalazi na dnu palete Simboli, i dodajte, primjerice, obrub strelici (možete primijeniti i nešto zanimljivije - primijeniti odgovarajući filtar, stvoriti Blend prijelaz itd.). Nakon toga, povucite ga natrag na paletu Simboli, a privremeni simbol “Strelica” izbrišite odabirom i klikom na gumb Brisanje simbola(Simbol brisanja) ove palete (Sl. 36). Na kraju nacrtajte put do ureda koristeći simbol koji ste upravo stvorili " Strijela" Ne zaboravite da će biti brže umnožiti simbole ne tako da ih opetovano povlačite iz palete Simboli, te pomicanjem simbola na slici uz pritisak tipke Alt. Moguće je da će slika na kraju poprimiti oblik prikazan na sl. 37.

Automatska zamjena znakova u crtežu

Ako stvorena slika već koristi neke simbole (od onih uključenih u isporuku ili izrađenih ručno) i tijekom rada se ispostavi da neke od njih treba zamijeniti drugima dostupnima u paleti Simboli, tada će ova radnja trajati nekoliko sekundi. Da biste to učinili, u prethodno stvorenoj Sl. 27 odaberite alatom Izravni odabir zamjenjivi znakovi, u paleti Simbol s odaberite simbol kojim želite zamijeniti i odaberite naredbu Zamijeni iz izbornika palete Simbol(Zamijeni simbol) (Sl. 38) svi odabrani simboli će biti zamijenjeni.

Riža. 38. Rezultat zamjene nekoliko simboličkih objekata (slika i paleta Simboli)

Uređivanje simbola u paleti Symbols

Pretpostavimo da neki od simbola palete Simboli(bez obzira da li je dio jedne od knjižnica ili ste je kreirali vi) treba radikalno promijeniti. To je moguće samo nakon što je veza prekinuta, stoga odaberite jedan od simbola gumba koji smo već izradili i kliknite na gumb Prekini vezu na simbol(Prekini vezu sa simbolom) koji se nalazi na dnu palete Simboli. Simbol će ponovno postati normalni vektorski objekt i bit će ga lako promijeniti. Promijenimo, na primjer, boju gumba iz zelene u crvenu (slika 39).

Riža. 39. Modificirana paleta simbola s ugrađenim simbolima gumba i uređenim simbolom u obliku vektorskog objekta (ovo se može vidjeti iz markera za odabir)

Za zamjenu simbola u paleti Simboli njegovu uređenu verziju, odaberite modificirani simbol, aktivirajte izvorni simbol u paleti Simboli a zatim iz izbornika palete odaberite naredbu Redefinirajte simbol(Redefiniraj simbol) (Slika 40) Ovo će promijeniti simbol u paleti (Slika 41). Imajte na umu da ako ste uredili simbol na slici gdje je korišten, u našem slučaju, na primjer, u promijenjenoj paleti Simboli(vidi sl. 27), tada će redefiniranje simbola automatski dovesti ne samo do njegove zamjene u paleti Simboli, ali i na ažuriranje svih njegovih kopija na slici (Sl. 42).

Riža. 42. Kartografska slika nakon redefiniranja simbola koji je prethodno korišten za označavanje odmarališta, u skladu s paletom Simboli

Rad s grupama znakova

Ako govorimo o istovremenom postavljanju i naknadnoj obradi ne jednog, već nekoliko instanci istog simbola (to jest, grupe simbola), tada će biti potrebni posebni alati za simbole Alat za simbole: raspršivač simbola(Prskalica likova), Mjenjač simbola(Promjena znakova), Symbol Scruncher((Gustoća objekta), Symbol Sizer(veličina znakova), Simbol Spinner(rotacija znakova), Simbol Stainer(toniranje znakova), Screener simbola(Transparentnost znakova) i Styler simbola(Stil karaktera). Svaki alat u ovoj grupi ima vlastite postavke koje su definirane u dijaloškom okviru Mogućnosti alata za simbolizam(Opcije alata Character Objects Tool Options). dvostruki klik miševi.

Takve skupine simbola predstavljaju jedan objekt (Sl. 43), a sve naknadne moguće transformacije u odnosu na njih: transformacija, promjene zasićenosti, boje, položaja, veličine, rotacije, prozirnosti i prekrivanja stilova primjenjuju se odmah na sve elemente grupa.

Prskanje grupe likova

Na primjer, otvorimo sliku (Sl. 44) i pokušajmo na nju pošpricati snježne pahulje, prikladan primjer snježne pahulje dostupan je u biblioteci simbola Priroda. U usporedbi s veličinom izvorne slike, uzorak pahuljice je prevelik, stoga najprije umetnite jednu njezinu instancu na uobičajeni način, povlačeći je s palete na crtež (slika 45). Zatim aktivirajte alat Izbor i bez poništavanja odabira pahuljice smanjiti njezinu veličinu na prihvatljivu veličinu (Sl. 46) dok držite tipku Shift za održavanje proporcija. Povucite novi uzorak simbola pahulje u paletu Simboli i ostavite ga tamo kao aktivni simbol.

Nakon toga odaberite alat Simbol raspršivač i ukrasite sliku prskanjem snježnih pahulja preko dizajna; nije teško, pogotovo jer tehnologija za rad s Simbol raspršivač vrlo sličan radu s pištoljem za prskanje u bilo kojem grafičkom paketu. Sasvim je moguće da će neke pahulje završiti izvan slike (Slika 47), u tom slučaju odaberite cijelu grupu snježnih pahulja alatom za odabir i promijenite joj veličinu na uobičajeni način (Slika 48).

Riža. 47. Kao rezultat prskanja simbola alatom Symbol Sprayer, neke od snježnih pahulja završile su izvan slike

Ako postavke alata Simbol raspršivač niste zadovoljni (prema zadanim postavkama uzimaju se prosječne vrijednosti za sve njegove postavke), a zatim ih je lako ispraviti dvostrukim klikom na alat i odgovarajućim prilagodbama u prozoru Mogućnosti alata za simbolizam. Pretpostavimo, na primjer, da nismo zadovoljni bojom snježnih pahulja i gustoćom njihovog rasporeda. Da biste promijenili boju, odnosno osigurali da se simboli kreiraju uzimajući u obzir boju odabranu u prozoru Ispunite(ispuni), na popisu Mrlja Morat će se instalirati opcija (Bojanje). Korisnik definiran(Korisnik definiran). A da biste povećali gustoću, trebali biste povećati vrijednost parametra Gustoća skupa simbola(Gustoća skupa znakova), na primjer, kao na sl. 49. Rezultat može nalikovati riži. 50.

Riža. 50. Nakon stvaranja dodatnih simboličkih objekata, pahuljice su gušće raspoređene i imaju tamniju nijansu u skladu s bojom postavljenom u prozoru Ispuna.

Među postavkama možete promijeniti vrijednosti sljedećih parametara:

  • Poviti(Density of objects) relativna gustoća objekata uzimajući u obzir izvorna veličina simbol;
  • Veličina(Veličina) veličina raspršenih simbola, uzimajući u obzir izvornu veličinu simbola;
  • Spin(Rotation) određivanje rotacija generiranih znakova uzimajući u obzir kretanje pokazivača miša;
  • Zaslon(Transparentnost) uzimajući u obzir stupanj transparentnosti simbola;
  • Stil(Stil) određivanje karakternog dizajna simbola, uzimajući u obzir parametre aktivnog stila.

Za svaki od ovih parametara moguće su dvije postavke: Prosjek(Srednji) dodaje novu instancu simbola s medijem vrijednosti parametara, A Korisnik definiran(Korisnički definirano) omogućuje generiranje simbola na temelju korisničkih specifičnih postavki.

U polju Promjer(Promjer) postavlja promjer kruga utjecaja alata u polju Intenzitet(Intenzitet) određuje stupanj promjene u generiranim znakovima. Što je vrijednost veća, to je veći stupanj promjene.

Također, bolje je raditi s uključenim potvrdnim okvirom Prikaži veličinu i intenzitet četke(Display brush size and intensity) u ovom slučaju, veličina simbola spreja se prikazuje na ekranu u obliku kruga, koji određuje područje udara alata.

Uređivanje grupe znakova

Uzmimo sl. kao izvornu sliku. 51, u donjem dijelu poprskati simbole trave iz biblioteke simbola Priroda i uredite veličinu dobivene grupe znakova u skladu s veličinom izvorne slike (Sl. 52). Zatim, da biste povećali gustoću objekata u ovoj grupi simbola, pozovite izbornik alata Symbol Scruncher(Object Density) duplim klikom na alat i povećanjem vrijednosti parametra Gustoća skupa simbola(Gustoća skupa znakova), na primjer kao na sl. 53. Zatim kliknite na odabranu grupu simbola, što će dovesti do njihovog zbijanja (Sl. 54).

Dovršimo sliku prskanjem još nekoliko skupina simbola trave i dodamo dvije karakterni objekt u obliku kamenja. Pomaknimo potonji ispod trave za to morate odabrati svaki od objekata, desnom tipkom miša kliknite na njega i odaberite naredbu Rasporedi=>Pošalji unatrag ( Move=>Pomicanje unatrag) (Sl. 55).

Riža. 55. Slika nakon dodavanja nekoliko grupa znakova i dva pojedinačna znaka

Učinimo travu u donjem desnom kutu slike tamnijom pomoću alata Simbol Stainer(Sjenčanje znakova). Pomoću alata odaberite odgovarajuću grupu simbola Selecton, postavite boju prozora na tamnozelenu Ispunite(Ispuni) i kliknite na grupu simbola (Sl. 56) za veći efekt, možete pomicati miš preko grupe simbola, što će dovesti do daljnjeg postupnog prebojavanja simbola. Kao rezultat toga, simboli trave će ostati, ali će se njihov ton boje promijeniti kako bi odgovarao boji definiranoj u prozoru Ispunite(Sl. 57).

Riža. 56. Utjecaj alata Symbol Stainer na grupu simbola

Nakon toga posvijetlite travu u gornjem lijevom kutu. To se može učiniti gore opisanom metodom, prethodno postavite boju na svijetlozelenu u paleti ili mijenjanjem stupnja prozirnosti odgovarajuće grupe simbola pomoću alata Screener simbola(Transparentnost znakova). Upotrijebimo drugu metodu, tj. odaberite grupu simbola i kliknite na grupu (ili povucite preko nje; ovisi o tome na koliko će simbola i u kojoj mjeri utjecati) pomoću alata Screener simbola(Slika 58). Moguće je da će nakon transformacija slika početi nalikovati Sl. 59.

Riža. 58. Utjecaj alata Symbol Screener na grupu simbola

Nakon što smo prošli nizove, sada možemo razumjeti što je tekst kao specifična podatkovna struktura programskog jezika: tekst je skup znakova ili niz čiji su elementi karakterni tip podataka Chr. Na primjer, ako se naš tekst sastoji od 100 znakova, tada ga možemo deklarirati na sljedeći način: Upišite Text=rry od chr; U mnogim programskim jezicima, oni rade s tekstom kao nizom znakova, obrađujući svaki znak zasebno. Ova sredstva kombiniraju, s jedne strane, koncept...


Podijelite svoj rad na društvenim mrežama

Ako vam ovaj rad ne odgovara, na dnu stranice nalazi se popis sličnih radova. Također možete koristiti gumb za pretraživanje


String vrsta podataka. Rad sa znakovima i nizovima.

Nakon što smo prošli kroz nizove, sada možemo razumjeti što je tekst kao specifična podatkovna struktura programskog jezika: tekst je skup znakova ili niz, čiji su elementi karakterni tip podataka Char. Na primjer, ako se naš tekst sastoji od 100 znakova, tada bismo ga mogli deklarirati na sljedeći način:

Tip

Tekst=niz znakova;

U mnogim programskim jezicima tekst se obrađuje kao niz znakova, obrađujući svaki znak zasebno. No programski jezik TurboPascal pruža praktičnije alate za rad s tekstom od nekih drugih jezika, omogućujući korisniku izvođenje osnovnih operacija s tekstom: kombiniranje fraza, rečenica ili fragmenata teksta, brisanje riječi, izračunavanje duljine teksta, pretraživanje i umetanje određenog fragmentirati u zadanu poziciju, a druge operacije izravno koristeći alate, funkcije i postupke predviđene u samom jeziku. Ovi alati kombiniraju, s jedne strane, koncept teksta kao niza znakova i, s druge strane, omogućuju vam da radite sa svim tekstom navedenim pomoću posebno deklariranogstring varijabla, kao kod jedne cijele strukture, jedan cijeli dio.

Vrsta podataka niza deklarirana je korištenjem rezervirane riječi kratke žice:

a: kratka struna;

b: kratka struna;

Varijabla a je string varijabla koja je namijenjena za unos i izvođenje operacija nad stringovima duljine do 255 znakova (od 1. do 255.). Nulti bajt niza uvijek pohranjuje vrijednost njegove trenutne duljine. Ako niz sadrži manje od 255 znakova, tada će nulti bajt sadržavati binarni kod njegove trenutne duljine i bit će nemoguće pristupiti praznim znakovima brojevima koji prelaze duljinu niza. Trenutna duljina niza uvijek se može pronaći pomoću posebne funkcije Duljina , o čemu će biti riječi kasnije, ili izravnim pristupom njegovom nultom bajtu.

Duljina niza b odmah označen u 80 znakova. Pravi niz može biti manji od ove vrijednosti, ali ne smije premašiti 80 znakova. Ima smisla ograničiti niz ako znamo da naša varijabla niza može pohraniti bilo koju od svojih vrijednosti, nikad ne prelazeći određenu veličinu. Na primjer, ako pohranjuje nedvosmisleni odgovor ("da", "ne" ili "ne znam"), tada je u tom slučaju preporučljivo, kako bi se uštedjela računalna memorija, koristiti string varijablu koja se sastoji od znakova (za najduži izraz “Ne znam”: 6 slova i još jedan razmak).

Nakon što smo stvorili varijable niza, sada im se mogu dodijeliti vrijednosti niza, označene apostrofima, ovako:

a:=kada su studenti ušli u kabinet;

a:=proljeće BAL";

b:=posada je formirana, gospodine";

b:= NOGOMET ;

a:=#4$& *&^;

b:=15478 564 22; jdjjk;

a:=2547;

b:=točno;

Morate razlikovati nizove od stvarnih brojeva i vrijednosti. Na primjer, s linijom a ne možemo izvoditi nikakve aritmetičke operacije jer a (2547) u ovom slučaju samo skup znakova, a ne broj. Također značenje b nije logička varijabla, već samo riječ "točno".

Kada smo inicijalizirali varijable na početku programa, dali smo im neku vrijednost, obično 0. Nizovi se inicijaliziraju s praznim operatorom‘’ . Ova procedura u nulti bajt zapisuje vrijednost duljine niza 0. Imajte na umu da su pisanje razmaka i nulti niz različite radnje. Drugim riječima, nakon operacija a:= "; b:=; linija a sadržavat će razmak i liniju b bit će prazan i neće sadržavati znakove.

Za unos niza s tipkovnice možete upotrijebiti uobičajeni operator read() bez organiziranja petlje duž njegove duljine (za razliku od unosa nizova):

čitati);

readln(b);

Ispis linija na ekranu je sličan:

napisati(a);

writeln(b);

Znakovima niza može se pristupiti izravno. U ovom slučaju, niz djeluje kao niz:

a:=y;

napisati(b);

U prvom slučaju, 10. znak retka a uzima vrijednost slova " s ", au drugom slučaju ispisujemo 3. znak retka b . Samo budite oprezni: ako reci ne sadrže ove znakove (njihova trenutna duljina bit će manja ili će red biti prazan), tada će program biti prekinut zbog pogreške, stoga omogućite razne opcije i uvijek provjerite trenutnu duljinu retka softver(putem Dužina)!

Operacija ulančavanja primjenjiva je na nizove, u terminima tzv ulančavanje . Ova operacija kombinira nekoliko redaka u jedan veliki. Kako bismo dodali više nizova, moramo koristiti uobičajeni operator zbrajanja "+". Evo kako to izgleda u primjerima:

a:=Zbrajanje + redovi; //a=Dodavanje nizova

a:=Dodavanje +prvog +i+drugog+ reda;

//a=zbrajanje prvog i drugog retka

Također možete kombinirati same varijable niza, na primjer:

a:=a+b;

Za rad s varijablama niza u Pascal jezik Predviđeni su sljedeći posebni postupci i funkcije:

1. Funkcija duljine:

Duljina(e: niz): cijeli broj;

Ova funkcija vraća trenutnu duljinu niza s u cjelobrojnu varijablu.

Evo primjera korištenja ove funkcije:

N: cijeli broj;

A: kratka struna;

Početi

a:=1. red ;

n:=duljina(a); //n=10

Kraj.

2. Pos funkcija:

Pos(Podniz, s:niz): bajt;

Funkcija Pos vraća cjelobrojnu vrijednost tipa Byte koja odgovara indeksu prvog znaka podniza koji se pojavljuje u nizu s. Ako podniz nije sadržan u nizu s, tada funkcija vraća 0.

Primjer:

n:=Poz(niz, a); //n=5; (vrijednosti preuzete iz prvog primjera)

3. Funkcija kopiranja:

Kopija(i): niz; Indeks, Broj: cijeli broj: niz;

Funkcija Copy kopira dio niza s, počevši od znaka s brojem indeksa, za broj znakova Count.

Primjer:

B: kratka struna;

Početi

a := 1. red;

b:=Kopiraj(a, 3, 5); //b sadrži th stranicu

Kraj.

4. Funkcija Concat:

Concat(s1; s2; …; sn): niz;

Ova funkcija ulančava više nizova izvodeći operaciju ulančavanja svojih argumenata. Ova se operacija također može izvesti pomoću operatora zbrajanja “+”, kao što smo vidjeli gore.

5. Val postupak:

Val(s: niz; Var v; Var kod: cijeli broj;);

s niz brojeva, v varijabla tipa cijeli ili realni

Procedura, za razliku od funkcije, ne vraća nikakvu vrijednost, već samo mijenja svoje parametre. Dok se varijabli može dodijeliti vrijednost funkcije, vrijednost procedure se ne može dodijeliti.

Funkcija Val vraća u varijabli v broj koji se nalazi u nizu. U tom slučaju cijeli red mora sadržavati samo broj. Inače, ako

konverzija nije uspjela, vrijednost koda sadrži broj pozicije u retku gdje je došlo do greške tijekom konverzije, inače vraća vrijednost 0.

Primjer:

A: kratka struna;

V, m: cijeli broj;

Početi

a:=2356;

Val(a, v, m); //v=2356, m=0

Kraj.

6.Str postupak:

Str(y; s: niz);

Varijabla y je broj koji pripada nekom od numeričkih tipova podataka.

Postupak Str pretvara broj u niz s.

Primjer:

Str(10254, a); //linija a sada sadrži 10254

7. Postupak umetanja:

Insert(s1: niz; Var s2: niz; indeks: cijeli broj);

Umetanje postupka umeće niz s1 u niz s2, počevši od pozicije indeks . Ako rezultirajući niz s2 postane duži od 255 znakova, tada se znakovi koji nisu uključeni na kraju jednostavno odbacuju.

Primjer:

S1, s2: kratka struna;

Ind:cijeli broj;

Početi

s1:=1- i ;

s2:= niz;

Umetni (s1, s2, 7); //s2= red 1

Kraj.

8. Postupak brisanja:

Delete(Var s: string; Index: integer; Count: integer);

Postupak Brisanje uklanja iz niza s njegov dio počevši od položaja indeks i nastavlja za brojati elemente.

Primjer:

A: kratka struna;

P, m: cijeli broj;

Početi

a:=niz;

Izbriši(a, 2, 3); //crtaa počela sadržavati ska

Kraj.

Primjeri programa za korištenje tipa podataka string.

1) Napišite program koji pronalazi broj slova “k” u tekstu.

program Pr_27_28_1;

($APPTYPE KONZOLA)

koristi

SysUtils;

A, a_spremi: niz;

s:bajt;

Const bukva="k";

Početi

Writeln("Unesite tekst");

Readln(a); // unesite tekst

a_spremi:=a; //sam tekst će se promijeniti, pa ćemo spremiti njegovu kopiju

s:=0; //inicijaliziranje brojača slova "K" snimanje inicijala

//vrijednosti

Dok je Pos("k",a)>0 do //sve dok se "K" pojavljuje u tekstu

početi

Izbriši(a,Pos("k",a),1); //uklonite slovo "K" (da biste pronašli nova slova "K")

s:=s+1; //i povećajte brojač za 1

kraj;

Writeln("Vaš tekst: ",a_save, " soderjit ",s, " bukv "k""); // izlaz testa i

Readln; //broj slova "K" koji se nalaze u njemu

Kraj.

2) Sada da vidimo kako možete istaknuti neke riječi ili grupe riječi u tekstu. Ako pomoću programskog algoritma možemo odrediti gdje se nalaze riječi teksta, moći ćemo izvršiti potrebne operacije nad tim riječima i tekstom u cjelini (kopiranje, mijenjanje, brisanje, dodavanje simbola između riječi i mnoge druge operacije ).

Duljina našeg teksta može se odrediti pomoću funkcije Length(s). Dakle, petlja, koja će proći kroz sve znakove našeg teksta, napisana je na sljedeći način (i varijabla integer tipa, s naš tekst):

Dok ja

početi

kraj;

Svaka riječ u tekstu završava određenim simbolom, na primjer, razmakom, točkom, dvotočkom ili nekom vrstom znaka (uskličnik, upitnik, navodnici itd.). Kako bismo pojednostavili zadatak, pretpostavit ćemo da su sve riječi u tekstu odvojene razmacima, a sam tekst završava točkom. Kao što je rečeno u lekciji o karakternom tipu podataka Char, svaki znak ima svoj vlastiti jedinstveni kod. Popis svih kodova nalazi se u tablici ASC2, u kojoj razmakni kod odgovara broju 32. Da biste pristupili bilo kojem znaku, trebate navesti sam znak u apostrofima ili navesti njegov kod iza znaka hash# . Znak razmaka je znak koji se ne može prikazati, pa mu pristupamo ovako:#32 .

Da bismo istaknuli bilo koju riječ u tekstu, moramo pronaći kraj te riječi: razmak ili točku (za posljednju riječ). Petlja koja pronalazi svaku riječ u tekstu napisana je na sljedeći način:

inach:=i;

dok (S[i]<>#32) i (S[i]<>".") čini

početi

St:=St+S[i]; inc(i);

kraj;

Varijabla I pohranjuje broj trenutnog tekstualnog znaka, inach pohranjuje broj prvog znaka riječi (u odnosu na naš zadatak, riječ se može smatrati i brojem i bilo kojim skupom prikazanih znakova). Varijabilna S sadrži naš tekst, a u Sv Naša istaknuta riječ sastavljena je slovo po slovo.

Ako želimo izbrisati pronađenu riječ, na primjer, ako ta riječ sadrži više od 8 slova, moramo napisati sljedeći fragment programa:

inach:=i;

dok (S[i]<>#32) i (S[i]<>".") čini

početi

St:=St+S[i]; inc(i);

Kraj;

Ako je i>8 tada

Brisanje(S, inach, i-1);

else inach:=inach+i-1;

Sada napišimo program koji će generirati novi tekst koji sadrži izvorni tekst samo riječi koje počinju i završavaju istim slovom:

programText2z;

($APPTYPE KONZOLA)

koristi

SysUtils;

Var S,St: niz;

Z: 0..50;

Inach,i: bajt;

B: ugljen;

Početi

Writeln("Napiši prijedlog");

Readln(S);

i:=1; z:=0; St:=""; inach:=1; //inicijalizacija

Dok ja do //opća petlja (dok sav tekst ne bude gotov)

početi

b:=S[i]; //odaberite prvi znak

dok (S[i]<>#32) i (S[i]<>".") čini // petlja odabire riječ

Početi

St:=St+S[i]; inc(z); inc(i);

kraj;

Ako b<>S onda //ako prvo i zadnje slovo riječi nisu jednaki, tadadelete(St,inach,z) //morate izbrisati ovu riječ iz generiranog

//tekst

Drugo

početak inach:=inach+z+1; St:=St+#32; kraj; //u suprotnom možete krenuti dalje, //dodavajući razmak nakon riječi

ako S[i]<>"." Zatim inc(i); z:=0; //ako kraj teksta nije dosegnut, tada resetirajte brojač za broj znakova u riječi (z) i povećajte broj trenutnog znaka za 1

kraj;

Writeln("Potreban prijedlog:");

Writeln(St); //ispis dobivenog teksta

Readln;

Kraj.

Drugi slični radovi koji bi vas mogli zanimati.vshm>

2764. Vrsta niza 22,07 KB
Predstavljanje memorije Neki programski jezici nameću ograničenja maksimalna duljina nizove, ali većina jezika nema takva ograničenja. Glavni problemi u strojnom predstavljanju vrste niza: nizovi mogu imati prilično značajnu veličinu, do nekoliko desetaka megabajta; Veličina se mijenja tijekom vremena, što otežava dodavanje i uklanjanje znakova. Predstavljanje niza znakova U ovom pristupu, nizovi su predstavljeni kao niz znakova; veličina niza pohranjuje se u zasebnom...
7176. ORGANIZACIJA BAZA PODATAKA I SUSTAVI UPRAVLJANJA BAZAMA PODATAKA 116,07 KB
Na primjer kao informacijski sistem Možete pogledati vozni red vlakova ili knjigu narudžbi. Atribut zabilježen na bilo kojem mediju za pohranu naziva se podatkovni element, podatkovno polje ili jednostavno polje. Pri obradi podataka često se susreću objekti iste vrste s istim svojstvima.
8335. Analogne i diskretne informacije. Mediji za pohranu podataka. Operacije s podacima. Kodiranje podataka. Sustavi brojeva. Entropija i količina informacija 227,54 KB
Sustavi brojeva. Brojčani sustavi Kodiranje podataka koristi se odavno: Morseova abeceda Brailleova abeceda pomorskog signala itd. U povijesti čovječanstva za kodiranje brojeva najpoznatija su dva brojevna sustava: nepozicijski i pozicijski. Oba brojevna sustava karakterizira baza prema broju različitih znamenki kojima se zapisuju brojevi, primjerice od 0 do 9 m.
8334. Shannon i Hartley formule. Izračun količine informacija. Kodiranje znakovnih, grafičkih i audio podataka. Struktura podataka Shannonova formula 140,5 KB
Za rješavanje inverznih problema, kada je nesigurnost (H) ili količina informacija dobivena kao rezultat njenog uklanjanja (I) poznata i potrebno je odrediti koliko jednako vjerojatnih alternativa odgovara pojavi ove nesigurnosti, upotrijebite inverz Hartley formula, koja je izvedena u skladu s definicijom logaritma i izgleda još jednostavnije ...
10584. Rad na rječniku 12,01 KB
Rad na vokabularu jedan je od glavnih ciljeva i zadataka u metodici nastave stranog jezika, a ujedno i jedan od najtežih problema iz više razloga, a jedan od njih je i dinamičnost vokabulara. Što se tiče leksičkog sastava moderne njemački jezik onda se broj leksičkih jedinica kojima se izvorni govornici služe u svakodnevnoj komunikaciji Stndrtsprche kreće od 300. Sasvim je očito da je svladavanje takvog volumena teško, ako ne i nemoguće, čak i za izvornog govornika, da ne govorimo...
19204. Rad s tiskom 31 KB
Osiguravanje materijala za tisak, na temelju kojih novinari pripremaju poruke, reportaže, članke, eseje; odgovaranje na novinarske upite i pružanje sveobuhvatnih informativnih usluga (mogućnost novinarima da prikupljaju i tehnički obrađuju izvorne informacije), praćenje - praćenje, analiziranje i vrednovanje tiskovnih, radijskih i televizijskih poruka. Poduzimanje mjera, ako je potrebno, za ispravljanje pogrešaka u porukama i izdavanje odgovora.
3933. Rad s nizovima u PHP-u 8,92 KB
Umetanje uklanjanje i zamjena elemenata u nizu Funkcija rry_push dodaje jedan ili više elemenata na kraj niza, a funkcija rry_pop uklanja zadnji element niza. Funkcija rry_splice uklanja duljinu elemenata niza počevši od offset offseta i, ako je naveden treći parametar, zamjenjuje izbrisane elemente elementima niza. replcement, ako parametar duljine nije naveden, uklanja elemente do kraja niza. Funkcija rry_unique uklanja duplicirane vrijednosti iz niza, ostavljajući samo jednu od njih. Funkcija rry_merge spaja...
3696. Rad s makroskopskim preparatima 4,7 KB
Oblik organa je očuvan ili ne, ako nije, kakva je deformacija. Veličina organa se povećava i smanjuje otprilike koliko puta. Boja organa s površine.
3936. Rad s datotečnim sustavom u PHP-u 9,24 KB
Svaka datoteka, osim naziva i sadržaja, ima skup parametara koji određuju njezine karakteristike (vrijeme nastanka, ID vlasnika, broj poveznica na ovu datoteku V sustav datoteka i tako dalje.). Funkcije u nastavku omogućuju pristup ovim informacijama
6343. ENERGIJA, RAD, SNAGA 59,23 KB
Pojmovi energija i rad naširoko se koriste u svakodnevnom životu. Poznato je da se rad obavlja zbog rezerve energije i, naprotiv, radom možete povećati rezervu energije u bilo kojem uređaju. Na primjer, radeći rad pri navijanju sata stvaramo rezervu energije u opruzi zahvaljujući kojoj sat onda radi. Koncept energije povezuje sve prirodne pojave.

p»í̈Trustworthy SEO agencija Indija može povećati prihode malih poduzeća

80% korisnika pretražuje na Googleu i drugim tražilicama prije kupnje, a više od 50% upita generiranih putem tražilica se pretvara. Ove dvije statistike dokazuju važnost optimizacije za tražilice. Mnogo je takvih statistika i činjenica koje jasno govore: svako malo, srednje ili veliko poduzeće treba profesionalne SEO usluge. Mala poduzeća i novoosnovana poduzeća često se suočavaju s problemima s proračunom. Oni mogu uzeti pomoć bilo koje pouzdane SEO agencije iz Indije kako bi dobili najbolju SEO uslugu u svom proračunu i povećali svoje prihode.
Pretraživanje ima velik utjecaj na umove potrošača. Prema različitim statistikama koje dijele glavni stručnjaci za optimizaciju tražilica na različitim ovlaštenim web stranicama kao što su Search Engine Land, Moz, SEO Journal, Digital Marketers India, Hubspot itd. SEO hvata većinu potencijalnih kupaca. Također, potencijalni klijenti koji dolaze iz rezultata organskog pretraživanja imaju višu stopu konverzije. Ove statistike i ponašanje potrošača jasnije pokazuju da najbolja SEO usluga nije luksuz, već nužnost za bilo koji posao.
Kako bi zaobišla konkurenciju i povećala rast poslovanja, svaka organizacija mora koristiti usluge optimizacije za tražilice. Veliki brendovi mogu uložiti dovoljno novca za stručne SEO usluge koje nudi vrhunska SEO tvrtka ili stručnjak za SEO, ali vlasnici malih tvrtki često kompromitiraju kvalitetu ove usluge zbog manjeg budžeta. Teška je činjenica da male tvrtke i startupi na kraju napuštaju prilike koje se mogu stvoriti uz profesionalnu SEO uslugu ili koriste jeftinu SEO uslugu koja ne daje pozitivne rezultate.
Vlasnici malih tvrtki i novoosnovana poduzeća mogu iskoristiti prednosti profesionalnih SEO usluga čak i uz ograničen proračun. Najbolje rješenje je pronaći pouzdanu SEO tvrtku sa sjedištem u Indiji. U Indiji postoji mnogo stručnjaka za SEO koji surađuju s agencijom za digitalni marketing i nude usluge najbolje u industriji. Oni vam mogu pružiti potrebne SEO usluge u okviru vašeg proračuna. O plaćama se može pregovarati s agencijom za SEO u Indiji kako biste dobili bolje usluge po nižim cijenama. Međutim, nemojte nasjedati na jeftinu SEO uslugu koja naplaćuje manje i obećajte da ćete dati više jer stručnost dolazi na svoju cijenu. Morate vidjeti portfelj ili postaviti odgovarajuća pitanja prije nego što ugovarate tvrtku za svoje poslovanje.
Stručnjaci za SEO u Indiji poznaju najbolje prakse optimizacije za tražilice. Također, postoje neki SEO stručnjaci u Indiji, kao što je Ash Vyas, koji su specijalizirani za stvaranje najbolje strategije za optimizaciju tražilica za tvrtku u navedenom proračunu. Stručnjaci za SEO će izraditi jasan plan i također će podijeliti koji mogu biti očekivani rezultati. Na taj način možete biti dobro svjesni svoje investicije i povrata. To pomaže u donošenju bolje poslovne odluke.
Dobra ideja je pronaći i ugovoriti pouzdanu SEO tvrtku iz Indije koja nudi najbolje SEO usluge što je prije moguće. Također možete započeti s malim proračunom i ograničenim aktivnostima kako biste počeli indeksirati svoje web-stranice i poboljšati svoje ključne riječi u tražilicama. Nemojte čekati savršeno vrijeme ili dan kada ćete imati tisuće dolara za uložiti u najbolje SEO usluge. Rani početak pomoći će vam da postignete brže rezultate ako možete biti agresivniji sa svojim marketinškim pristupom. Pouzdana SEO tvrtka sa sjedištem u Indiji pomoći će vam definirati vaše trenutne i buduće planove kako biste postigli dobre rezultate. Više indeksiranih stranica s poboljšanim rangiranjem i vjerodostojnim brendom vašeg poslovanja napravljenim stalnim profesionalnim SEO praksama udvostručit će upite, poslovanje i prihode. Svaka mala tvrtka može započeti s dvoznamenkastim ulaganjem u profesionalne SEO usluge. Postoje mnoge SEO agencije u Indiji koje nude niske proračune, ali rezultat su orijentiranih usluga optimizacije za tražilice.

ankete iz progonstva

  • CraigWew

    12.04.2018

    p»í̈Važnost uspostavljanja odnosa s kupcem u prodaji nekretnina i općoj prodaji

    Važnost uspostavljanja odnosa s kupcem.
    Uspostavljanje odnosa s kupcem mora se zaslužiti i mora mu se pristupiti kao vrlo sastavnom dijelu prodajnog procesa.
    Kako biste pridobili klijenta i sebe da se međusobno povežete na stvarnoj osnovi, to uključuje dvije stvari!
    Prvo, morat ćete biti svjesni i biti prisutni! Drugo, morate razumjeti da postoje dvije različite faze koje će se dogoditi tijekom ovog procesa.
    A-Budi tamo-što to znači?
    o Većina ljudi zapravo ne sluša drugu osobu dok priča. Općenito su toliko zauzeti formuliranjem svog sljedećeg odgovora ili izjave da nikako ne mogu slušati.
    o Ako ovo zvuči kao vi, biti tamo znači šutjeti i slušati!
    B-Što je prva ili početna faza?
    o Općenito imate samo nekoliko minuta da se afirmirate u umu kupaca kao netko s kim žele poslovati.
    o Kada ste u nedoumici, najbolje je prvo postaviti pitanja koja će ih izvući i govoriti o njima samima.
    o Također je uvijek sigurno pojaviti se kao profesionalac - ne mislim na stoika ili suhopara, već na nekoga tko zna što radi, govori i izgleda.
    C-Ostale faze
    o Kako vrijeme bude prolazilo, kroz razgovor i pitanja koja će imati, ili ćete utvrditi svoju sposobnost ili ne.
    o Budite svjesni da će vas vjerojatno neko vrijeme odmjeravati. Dobra je vijest da će se u nekom trenutku, ako ste uspjeli uspostaviti odnos, opustiti i oboje se možete usredotočiti na pronalaženje ili prodaju kuće.
    Što mi još može pomoći da razvijem odnos?
    o Pokušavajući razumjeti različite tipove osobnosti, a zatim izgovarajući i postavljajući prava pitanja.
    o Ako imate dobar odnos (na istoj ste valnoj duljini kao kupac), onda je prodaja u biti gotova, sada je samo pitanje pronalaženja pravog doma ili ispunjavanja popisnih papira.
    Što je s različitim osobnostima
    o Budući da ovo nije knjiga o psihijatriji, za sada samo razumite dvije glavne vrste.
    o Postoje introvertirani i ekstrovertirani ljudi.
    o Znate tip. Razmislite o tri osobe koje poznajete i koje odgovaraju svakoj klasifikaciji.
    Što je s govorom tijela i obrascima govora?
    o Ako govore brzo ili sporo, pokušajte oponašati njihove govorne obrasce.
    o Ako govore glasno ili tiho, učinite isto. Jesu li nagnuti naprijed ili nazad?
    o Nepotrebno je reći da postoji mnogo knjiga napisanih o ovoj temi. Samo imajte na umu da je to važan čimbenik—posebno kada sjedite u konferencijskoj sobi ili kod nekoga kod kuće i raspravljate o poslu od 400.000 dolara.
    Razvijanje odnosa je vještina koja se može naučiti i poboljšati.
    o Svi smo iskusili prodavača koji nam je nešto prodao, a nismo se osjećali kao da smo prodani. Razlog je taj što su on ili ona učinili da se osjećate ugodno tamo gdje ste im vjerovali.
    Kako razvijamo odnos?
    o Koristite oči i uši i postavljajte pitanja. Objasniti
    o Koristite oči:
    o Pogledajte njihovu haljinu-njihov auto-njihovu osobnu imovinu, mislim stvarno ih pogledajte i dešifrirajte što vam to govori o njima.
    o Koristite uši:
    o Slušajte što govore i postavljajte pitanja kako biste došli do dna njihove stvarne MOTIVACIJE!
    Tijekom cijelog ovog razgovora, vjerojatno ćete otkriti jednu ili dvije stvari koje su vam zajedničke s njima. (Obitelj, geografska područja, ribolov, itd.) Kada naiđete na zajednički jezik, dajte im do znanja da ste bliski, a zatim odvojite minutu da o tome porazgovarate s njima.
    Što je cilj?
    o Nakon što vas prihvate kao jednog od njih, u poziciji ste stvarno steći sjajno iskustvo u prodaji budući da sada radite zajedno, a zatim kao tim—više niste prodavač, sada ste na poziciji savjetnika .
    o Zapamtite, kupac vam ili hoće ili neće dopustiti da uđete u njegov svijet. Ako to razumijete i zaista naporno radite kako biste postali suosjećajni s njim/njom, možete steći poziciju od povjerenja. U većini slučajeva, zapravo ćete ih vidjeti kako se opuštaju (govor tijela) kada se to dogodi, vi ste na putu.
    o Kao ilustraciju, jeste li ikada održali govor i primijetili da kada se konačno povežete s članom publike, oni će kimnuti u znak odobravanja. Sve te stvari mogu izgledati banalno, ali nisu.
    Za kraj, ako možete steći povjerenje kupaca, prodaja proizvoda ili usluge je puno lakša, a iskustvo može biti ugodno za sve uključene.
    Uvijek imajte na umu da je Win/Win najbolja situacija.

Uvod

Obrada teksta jedan je od najčešćih programskih zadataka. Ako trebate obraditi bilo kakve tekstualne podatke, jednostavno ne možete bez poznavanja materijala koji će biti predstavljen u nastavku. Pogotovo ako podatke niste generirali vi osobno, već netko program treće strane ili drugu osobu.

Simboli

Znak je jedna jedinica teksta. Ovo je slovo, broj, neka vrsta znaka. Tablica znakovnih kodova sastoji se od 256 pozicije, tj. svaki lik ima svoje jedinstveni kod od 0 do 255. Znak s nekim kodom N napiši ovako: #N. To je upravo način na koji su simboli naznačeni u programskom kodu. Budući da je kod znaka broj koji ne prelazi 255, očito je da u memoriji znak zauzima 1 bajt. Kao što znate, ne postoji dimenzija manja od bajta. Točnije, postoji - to je bit, ali ne možemo raditi s bitovima u programu: bajt je minimalna jedinica. Tablicu simbola i njihovih kodova možete pogledati pomoću standardni uslužni program "tablica simbola", uključen u Windows (prečac se nalazi u izborniku Start - Programi - Pribor - Alati sustava). Ali vrlo brzo ćemo i sami napisati nešto slično.

Žice

Linija, tzv tekst je skup znakova, bilo koji njihov niz. Prema tome, jedan znak je također niz, također tekst. Tekstualni niz ima određenu dužinu. Duljina niza je broj znakova koje sadrži. Ako jedan znak zauzima 1 bajt, tada niz od N znakova zauzima N bajtova.
Postoje i druge tablice kodova u kojima 1 znak nije predstavljen s jednim bajtom, već s dva. Ovaj Unicode (Unicode). Tablica Unicode sadrži znakove iz svih jezika svijeta. Nažalost, rad s Unicodeom prilično je težak i njegova je podrška za sada samo lokalna. Delphi ne nudi Unicode mogućnosti. Softverski dio da, ali ovdje su vizualni elementi - obrasci, gumbi itd. ne može prikazati tekst u Unicode formatu. Nadajmo se da će se takva podrška pojaviti u bliskoj budućnosti. Također se pozivaju 2 bajta u jednoj riječi (riječ). Otuda naziv odgovarajućeg numeričkog tipa podataka - Riječ(broj koji zauzima 2 bajta u memoriji, vrijednosti od 0 do 65535). Broj "ćelija" u Unicode tablici je 65536 i to je sasvim dovoljno za pohranjivanje svih jezika svijeta. Ako odlučite da je "1 bajt - 256 vrijednosti, zatim 2 bajta - 2 * 256 = 512 vrijednosti", savjetujem vam da zapamtite binarni sustav i princip pohrane podataka u računalu.

Vrste podataka

Prijeđimo izravno na programiranje. Postoje odgovarajući tipovi podataka za rad sa znakovima i nizovima:

Char - jedan znak (tj. 1 bajt);
Niz - niz znakova, tekst (N bajtova).

Službeno, nizovi mogu sadržavati samo 255 znakova, ali u Delphiju možete napisati mnogo više po nizu. Postoje posebne vrste podataka za pohranu velikih tekstova i tekstova s ​​posebnim znakovima. AnsiString I WideString(potonji je, usput rečeno, dvobajtni, tj. za Unicode).

Da biste postavili tekstualne vrijednosti u Pascalu, koristite jednostruki navodnici(ne dvostruko!). Oni. Kada želite dodijeliti vrijednost string varijabli, trebali biste to učiniti ovako:

S:="tekst" ;

Znakovi su navedeni na isti način, samo što je jedan znak u navodnicima.

Ako želite strogo ograničiti duljinu teksta pohranjenog u varijabli niza, možete to učiniti ovako:

var s: niz [10];

Maksimalna duljina retka navedena je u zagradama.

Operacije nizova

Glavna operacija s nizovima je zbrajanje. Kao i brojevi, nizovi se mogu dodavati. A ako ne možete dodati stolce s narančama u brojevima, onda možete u redovima. Dodavanje nizova je jednostavno njihovo kombiniranje. Primjer:

var s: niz; ... s :="123" +"456" ; //s = "123456"

Budući da je svaki red niz znakova, svaki znak ima svoj serijski broj. U Pascalu numeriranje znakova u redovima počinje od 1. Tj. u redu " ABC"simbol" A" - prvi, " B" - drugo, itd.
Serijski broj znaka u retku nije izmišljen slučajno, jer se pomoću tih brojeva, indeksa, izvršavaju radnje na recima. Možete dobiti bilo koji znak iz niza tako da navedete njegov broj u uglatim zagradama pored naziva varijable. Na primjer:

var s: niz; c: char; ... s :="Zdravo!" ; c:=s[ 2 ] ; //c = "e"

Malo kasnije, kada budemo proučavali nizove, bit će jasno da je string niz znakova. To podrazumijeva oblik adresiranja pojedinih simbola.

Obrada nizova

Prijeđimo na funkcije i postupke za obradu nizova.

Duljina niza

Duljina niza može se pronaći pomoću funkcije Duljina(). Funkcija uzima jedan parametar - niz i vraća njegovu duljinu. Primjer:

var Str: String; L: cijeli broj; ( ... ) Str :="Pozdrav!" ; L:=Duljina(Str); //L = 6

Pronalaženje podniza u nizu

Inherentni zadatak je pronaći podniz u nizu. Oni. problem se formulira na sljedeći način: postoji niz S1. Odredite s koje pozicije struna ulazi u nju S2. Nemoguće je zamisliti bilo kakvu obradu bez izvođenja ove operacije.
Dakle, za takav nalaz postoji funkcija poz(). Funkcija uzima dva parametra: prvi - podniz, koji treba pronaći, drugi - crta, u kojem želite pretraživati. Pretraga se provodi uzimajući u obzir velika i mala slova. Ako funkcija pronađe pojavljivanje podniza u nizu, vraća broj pozicije njegovog prvog pojavljivanja. Ako nije pronađen nijedan unos, funkcija vraća 0. Primjer:

var Str1, Str2: Niz; P: cijeli broj; ( ... ) Str1:="Bok! Kako ste?" ; Str2:="učiniti" ; P:=Poz (Str2, Str1) ; //P = 9

Uklanjanje dijela linije

Pomoću postupka možete izbrisati dio retka Izbrisati(). Treba napomenuti da je ovo procedura, a ne funkcija - ona izvodi radnje izravno na varijabli koja joj je proslijeđena. Dakle, prvi parametar je varijabla tipa string iz koje se briše fragment (upravo varijabla! Specifična vrijednost nije postavljena, jer procedura ne vraća rezultat), drugi parametar je broj znaka iz kojeg se fragment treba izbrisati, treći parametar je broj znakova za uklanjanje. Primjer:

var Str1: Niz; ( ... ) Str1:="Zdravo, svijete!" ; Izbriši(Str1, 6, 7); // Str1 = "Zdravo!"

Treba napomenuti da ako je duljina izbrisanog fragmenta veća od broja znakova u retku, počevši od navedenog položaja (tj. "idemo preko ruba"), funkcija će raditi normalno. Stoga, ako trebate ukloniti fragment iz niza od nekog znaka do kraja, ne morate izračunati broj tih znakova. Najbolji način sam će postaviti duljinu ovog niza.

Evo primjera. Recimo da želite pronaći prvo slovo " u nizu a" i izbrišite dio retka koji slijedi. Učinimo to na sljedeći način: pronađite poziciju slova u retku pomoću funkcije poz(), i izbrišite fragment pomoću funkcije Izbrisati().

var Str: String; ( ... ) Str :="Ovo je test." ; Izbriši (Str ,Pos ("a" ,Str ) ,Length (Str ) ) ;

Pokušajmo zamijeniti vrijednosti i vidjeti što se prosljeđuje funkciji Izbrisati. Prvo slovo " a" u retku nalazi se na poziciji 9. Duljina cijelog retka je 15 znakova. To znači da je poziv funkcije sljedeći: Delete(Str,9,15). Iz slova " se vidi da je " a"ima samo 7 znakova do kraja retka... Ali funkcija će obaviti svoj posao, unatoč ovoj razlici. Rezultat će, naravno, biti redak " Ovo je". Ovaj primjer istodobno pokazao kombinaciju nekoliko funkcija.

Kopiranje (izdvajanje) dijela niza

Drugi važan zadatak je kopiranje dijela niza. Na primjer, izdvajanje pojedinačnih riječi iz teksta. Možete odabrati fragment retka uklanjanjem nepotrebnih dijelova, ali ova metoda je nezgodna. Funkcija Kopirati() omogućuje kopiranje određenog dijela niza. Funkcija ima 3 parametra: tekst (string) iz kojeg se kopira, broj znaka iz kojeg se kopira i broj znakova za kopiranje. Rezultat funkcije bit će fragment niza.

Primjer: recimo da treba odabrati prvu riječ iz rečenice (riječi su odvojene razmakom). Postavit ćemo ga na obrazac Uredi1 (TEdit) u koji će se unijeti kazna. Operacija će se izvršiti pritiskom na tipku. Imamo:

procedure TForm1.Button1Click (Pošiljatelj: TObject ) ; var s,riječ: niz; begin s:=Edit1.Text ; riječ:=Kopiraj (s,1 ,Pos (" " ,s) -1 ) ; ShowMessage("Prva riječ: " +riječ) ; kraj ;

U ovom slučaju, fragment od početka do prvog razmaka kopira se iz niza. Uzima se da je broj znakova jedan manji, jer inače će se prostor također kopirati.

Umetanje podniza u niz

Ako želite umetnuti još jedan redak u postojeći redak, možete upotrijebiti postupak Umetnuti(). Prvi parametar je redak koji treba umetnuti, drugi je varijabla koja sadrži redak u koji želite umetnuti, treći je pozicija (broj znaka) počevši od kojeg će se redak umetnuti. Primjer:

procedure TForm2.Button1Click (Pošiljatelj: TObject) ; var S: niz; početak S:="1234567890" ; Umetni("000",S,3); ShowMessage(S) end ;

U ovom slučaju, rezultat će biti niz "1200034567890".

"Ozbiljniji" primjer

Gore navedeni primjeri samo demonstriraju princip rada sa nizovima pomoću funkcija Duljina(), poz(), Izbrisati() I Kopirati(). Sada riješimo složeniji problem koji će zahtijevati kombiniranu upotrebu ovih funkcija.

Zadatak: rastavite tekst unesen u polje Memo na riječi i prikažite ih u ListBoxu, jednu po retku. Riječi su međusobno odvojene razmacima, točkama, zarezima, uskličnicima i upitnicima. Osim toga, prikazati ukupan broj riječi u tekstu i najdužu od tih riječi.

Tako je... Zadatak nije nimalo lak. Prvo, trebali biste odmah shvatiti da trebate koristiti petlje. Bez njih nema jer ne znamo koji će tekst biti prebačen u program na obradu. Drugo, riječi su odvojene različitim simbolima - to stvara dodatne poteškoće. Pa krenimo redom.

Sučelje: Podsjetnik1 (TMemo), Gumb1 (TButton), ListBox1 (TListBox), Oznaka1, Oznaka2 (TLabel).

Prvo prenesimo uneseni tekst u varijablu. Kako bismo odjednom preuzeli sav tekst iz Memoa, okrenimo se svojstvu Linije.Tekst:

procedure TForm1.Button1Click (Pošiljatelj: TObject ) ; var Tekst: niz; begin Text:=Memo1.Lines .Text ; kraj ;

Sada prijeđimo na obradu. Prvo što trebate učiniti je riješiti znakove za razdvajanje. Činjenica je da takvi simboli mogu lako doći u niz, jer nakon zareza, točke i drugih znakova postoji razmak. Ovu poteškoću možete zaobići na ovaj jednostavan način: zamijenite sve znakove za razdvajanje jednim, na primjer, zarezom. Da bismo to učinili, prođimo kroz sve likove i izvršimo potrebne zamjene. Kako bismo odredili je li znak graničnik, sve graničnike zapisujemo u zasebnu varijablu niza (konstantu), a zatim tražimo svaki znak u tom nizu pomoću funkcije poz(). Sve ove zamjene bit će napravljene u varijabli tako da izvorni tekst u dopisu (tj. na ekranu) ne utječe. Međutim, da biste provjerili međurezultate rada, ima smisla negdje ispisati obrađeni tekst. Na primjer, u drugo polje Memo. Za prolazak kroz sve znakove koristite petlju ZA, gdje će varijabla proći kroz serijske brojeve svih znakova, tj. od 1 do duljine retka teksta:

procedure TForm1.Button1Click (Pošiljatelj: TObject ) ; const DelSym = ".,!?" ; var Tekst: niz; i:cijeli broj; begin Text:=Memo1.Lines .Text ; for i:= 1 to Length (Text) do if Pos (Text[ i] ,DelSym) > 0 then Text[ i] :="," ; Memo2.Text :=Tekst; kraj ;

Sada moramo ukloniti smetnje. Prvo, prvi znak ne bi trebao biti graničnik, tj. ako je prvi znak zarez, mora se ukloniti. Dalje, ako postoji nekoliko zareza u nizu, potrebno ih je zamijeniti jednim. Naposljetku, za ispravnu obradu cijelog teksta, zadnji znak mora biti zarez.

if Text[ 1 ] = "," then Delete (Text,1 ,1 ) ; while Pos ("," ,Tekst) > 0 do Delete (Tekst,Pos ("," ,Tekst) ,1 ) ; if Tekst[ Dužina (Tekst) ]<>"," zatim Tekst:=Tekst+"," ;

Ovdje se zamjena vrši na sljedeći način: organizira se ciklus u kojem se uklanja jedan od zareza, ali to se događa sve dok u tekstu postoje dva uzastopna zareza.

Pa, sada u tekstu nije ostalo ništa suvišno - samo riječi odvojene zarezima. Najprije ćemo osigurati da program izdvoji prvu riječ iz teksta. Da bismo to učinili, pronaći ćemo prvi zarez, kopirati riječ s početka teksta u ovaj zarez, a zatim izbrisati ovu riječ iz teksta zajedno sa zarezom. Brisanje se vrši tako da nakon izvođenja iste operacije možete izrezati sljedeću riječ.

var Riječ: niz; (...) Word:=Copy (Text,1 ,Pos ("," ,Text) -1 ) ; Izbriši (Tekst,1 ,Duljina (Riječ) +1 ) ;

Sada u varijabli Riječ imamo riječ iz teksta, a u varijabli Tekst ostatak teksta. Izrezana riječ je sada dodana ListBox, zovem ListBox.Items.Add(line_to_add).

Sada trebamo organizirati petlju koja bi nam omogućila da iz teksta izrežemo sve riječi, a ne samo prvu. U ovom slučaju bilo bi prikladnije PONOVITI, kako DOK. Uvjet bi trebao biti Dužina (tekst) = 0, tj. završiti petlju kada tekst postane prazan, tj. kad iz njega izrežemo sve riječi.

repeat Word:=Copy (Text,1 ,Pos ("," ,Text) -1 ) ; Izbriši (Tekst,1 ,Duljina (Riječ) +1 ) ; ListBox1.Items.Add(Word); dok Duljina (Tekst) = 0 ;

Tako dalje ovaj trenutak imamo:

procedure TForm1.Button1Click (Pošiljatelj: TObject ) ; const DelSym = ".,!?" ; var Text,Word : string ; i:cijeli broj; begin Text:=Memo1.Lines .Text ; for i:= 1 to Length (Text) do if Pos (Text[ i] ,DelSym) > 0 then Text[ i] :="," ; if Text[ 1 ] = "," then Delete (Text,1 ,1 ) ; while Pos ("," ,Tekst) > 0 do Delete (Tekst,Pos ("," ,Tekst) ,1 ) ; repeat Word :=Copy (Text,1 ,Pos ("," ,Text) -1 ) ; Izbriši (Tekst,1 ,Duljina (Riječ) +1 ) ; ListBox1.Items.Add(Word); dok Duljina (Tekst) = 0 ; kraj ;

Ako sada pokrenete program, vidjet ćete da sve radi kako treba. Osim jedne stvari - pojavili su se neki prazni redovi na kraju ListBoxa... Postavlja se pitanje odakle su došli? O tome ćete naučiti u sljedećem dijelu lekcije, ali za sada implementirajmo ono što je potrebno do kraja.

Vrlo je jednostavno odrediti broj riječi u tekstu - ne morate ništa ponovno pisati. Jer Imamo navedene riječi u ListBoxu, dovoljno je samo saznati koliko redaka ima - ListBox.Items.Count.

Oznaka1.Natpis := "Broj riječi u tekstu: "+IntToStr(ListBox1.Items.Count);

Sada morate pronaći najdužu od svih riječi. Algoritam za pronalaženje maksimalnog broja je sljedeći: uzimamo prvi od brojeva kao maksimum. Zatim provjeravamo sve ostale brojeve na ovaj način: ako je broj veći od onog koji je trenutno zapisan kao maksimum, taj broj činimo maksimalnim. U našem slučaju, moramo tražiti maksimalnu duljinu riječi. Da biste to učinili, možete dodati kod u petlju izrezivanja riječi iz teksta ili izvršiti pretraživanje nakon dodavanja svih riječi u ListBox. Učinimo to na drugi način: organizirajte petlju kroz linije ListBoxa. Treba napomenuti da su linije numerirane od nule, a ne od jedinice! Najdužu riječ pohranit ćemo u posebnu varijablu. Čini se da također trebamo pohraniti maksimalnu duljinu riječi kako bismo imali s čime usporediti... Ali nema potrebe za stvaranjem posebne varijable za to, jer uvijek možemo saznati duljinu riječi pomoću funkcije Length(). Pa recimo da je prva riječ najduža...

var Najduža riječ: niz; (...) LongestWord:=ListBox1.Items [ 0 ] ; for i:= 1 do ListBox1.Items .Count -1 do if Length (ListBox1.Items [ i] ) > "Najduža riječ: "+LongestWord+" (" +IntToStr (Length (LongestWord) ) +" slova)" ;

Zašto ciklus do ListBox.Items.Count-1, ne samo do Računati,shvatite sami :-)

Sada je sve spremno!

procedure TForm1.Button1Click (Pošiljatelj: TObject ) ; const DelSym = ".,!?" ; var Text,Word ,LongestWord: string ; i:cijeli broj; begin Text:=Memo1.Lines .Text ; for i:= 1 to Length (Text) do if Pos (Text[ i] ,DelSym) > 0 then Text[ i] :="," ; if Text[ 1 ] = "," then Delete (Text,1 ,1 ) ; while Pos ("," ,Tekst) > 0 do Delete (Tekst,Pos ("," ,Tekst) ,1 ) ; Tekst:=AnsiReplaceText(Tekst,Chr (13) ,"" ) ; Tekst:=AnsiReplaceText(Tekst,Chr (10 ) ,"" ) ; repeat Word :=Copy (Text,1 ,Pos ("," ,Text) -1 ) ; Izbriši (Tekst,1 ,Duljina (Riječ) +1 ) ; ListBox1.Items.Add(Word); dok Duljina (Tekst) = 0 ; Oznaka1.Natpis := "Broj riječi u tekstu: "+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Items [ 0 ] ; for i:= 1 to ListBox1.Items .Count -1 do if Length (ListBox1.Items [ i] ) > Length (LongestWord) then LongestWord:=ListBox1.Items [ i] ; Oznaka2.Natpis := "Najduža riječ: "+LongestWord+" (" +IntToStr (Length (LongestWord) ) +" slova)" ; kraj ;

Rad sa simbolima

Zapravo, rad sa simbolima svodi se na korištenje dvije glavne funkcije - Red() I Chr(). Već smo se susreli s njima. Funkcija Red() vraća kod navedenog znaka i funkciju Chr()- naprotiv, vraća znak s navedenim kodom.

Zapamtiti" Tablica simbola"? Učinimo to sami!

Zaključak se može izvesti u TStringGrid. Ova komponenta je tablica u kojoj svaka ćelija sadrži tekstualnu vrijednost. Komponenta se nalazi na kartici Dodatni(zadano odmah nakon standardnog). Prije svega, postavimo naš znak. Potrebna su nam samo dva stupca: u jednom ćemo prikazati kod simbola, au drugom - sam simbol. Broj stupaca postavljen je u svojstvu s logičkim nazivom ColCount. Postavite ga na 2. Prema zadanim postavkama, StringGrid navedeni su jedan fiksni stupac i jedan fiksni red (prikazani su sivom bojom). Ne trebamo stupac, ali red je vrlo koristan, pa stavljamo FixedCols= 0, a FixedRows ostaviti = 1.

Punjenje će se izvršiti izravno prilikom pokretanja programa, tj. Nećemo instalirati nikakve gumbe. Dakle, stvorimo rukovatelj događajima OnCreate() oblicima.

Broj znakova u kodnoj tablici je 256, plus zaglavlje - ukupno 257. Postavimo broj redaka programski (iako ga možete postaviti i u Object Inspector-u):

procedure TForm1.FormCreate (Pošiljatelj: TObject ) ; početak StringGrid1.RowCount :=257 ; kraj ;

Zaključak je napravljen vrlo jednostavno - pomoću petlje. Jednostavno prolazimo kroz brojeve od 0 do 255 i prikazujemo odgovarajući simbol. Također prikazujemo natpise u zaglavlju. Pristup ćeliji StringGrid provodi korištenjem imovine Stanice: Ćelije [broj_stupca, broj_retka]. Brojevi stupaca i redaka (počevši od nule) navedeni su u uglatim zagradama. Vrijednosti su tekst.

procedure TForm1.FormCreate (Pošiljatelj: TObject ) ; var i: cijeli broj; početak StringGrid1.RowCount :=257 ; StringGrid1.Cells [ 0 ,0 ] :="Kôd" ; StringGrid1.Cells [ 1 ,0 ] :="Znak" ; za i:= 0 do 255 do begin StringGrid1.Cells [ 0 ,i+1 ] :=IntToStr (i) ; StringGrid1.Cells [ 1 ,i+1 ] :=Chr (i) ; kraj ; kraj ;

Pokrenimo i pogledajmo.

Posebni simboli

Ako pažljivo pogledate našu tablicu, vidjet ćete da se mnogi simboli pojavljuju kao kvadrati. Ne, ovo nisu ikone. Tako se prikazuju znakovi koji nemaju vizualni prikaz. Oni. simbol, na primjer, s kodom 13 postoji, ali je nevidljiv. Ovi se simboli koriste u dodatne svrhe. Na primjer, znak #0 (odnosno znak s kodom 0) često se koristi za označavanje nepostojanja znaka. Postoje i linije tzv nulto prekinut- ovo su linije koje završavaju znakom #0. Takvi nizovi se koriste u jeziku C.
Pritisci tipki mogu se identificirati kodovima. Na primjer, tipka Enter ima kod 13, Escape - 27, Space - 32, Tab - 9, itd.
Dodajmo našem programu mogućnost pronalaženja koda bilo kojeg ključa. Da bismo to učinili, obradit ćemo događaj obrasca OnKeyPress(). Da bi ovaj mehanizam funkcionirao, morate postaviti obrazac KeyPreview = Istina.

procedure TForm1.FormKeyPress (Pošiljatelj: TObject ; var Key: Char ) ; započeti ShowMessage( "Kod pritisnute tipke: "+IntToStr(Ord(Ključ))); kraj ;

Ovdje prikazujemo prozor s tekstom. Događaj ima varijablu Ključ, koji pohranjuje znak koji odgovara pritisnutoj tipki. Korištenje funkcije Red() saznajte kod ovog simbola, a zatim upotrijebite funkciju IntToStr() Pretvorimo ovaj broj u niz.

Primjer "ozbiljniji" - nastavak

Vratimo se našem primjeru. Vrijeme je da shvatite odakle dolaze prazni redovi u ListBoxu. Poanta je da nisu potpuno prazne. Da, vizualno su prazni, ali zapravo svaki od njih ima 2 posebni znakovi. Ovo su znakovi s kodovima 13 i 10 (tj. linija #13#10). U sustavu Windows ovaj niz ova dva nevizualna znaka označava kraj i početak tekućeg retka nova linija. Oni. U svakoj datoteci i općenito bilo gdje, prijelomi retka su dva znaka. I cijeli tekst, sukladno tome, ostaje kontinuirani niz znakova. Ovi se znakovi mogu (pa čak i trebaju) koristiti u slučajevima kada trebate umetnuti prijelom retka. Više o tome možete pročitati u članku. Znanje stečeno u svim prethodnim lekcijama, pa tako i u ovoj, sasvim je dovoljno za razumijevanje ovog članka - prilično je kratak.

Odvedimo naš program za pretraživanje riječi do njegovog logičnog završetka. Dakle, da bismo se riješili praznih redaka, moramo ukloniti znakove #13 i #10 iz teksta. To se može učiniti pomoću petlje, slično kao što smo dva zareza zamijenili jednim:

while Pos (Chr (13 ) ,Text) > 0 do Delete (Text,Pos (Chr (13 ) ,Text) ,1 ) ; while Pos (Chr (10 ) ,Text) > 0 do Delete (Text,Pos (Chr (10 ) ,Text) ,1 ) ;

Pa, sada je program potpuno funkcionalan!

Dodatne funkcije za rad sa stringovima - StrUtils modul

Dodatni modul StrUtils.pas sadrži dodatne funkcije za rad sa žicama. Među tim funkcijama ima mnogo korisnih. Neke od funkcija detaljnije se raspravljaju u članku. I ovdje Kratki opisčesto korištene funkcije:

PosEx(podniz, crta, uvlačenje) - funkcija slična funkciji poz(), ali tražeći od navedenog položaja (tj. uvučeno od početka retka). Na primjer, ako želite pronaći drugi razmak u nizu, a ne prvi, ne možete bez ove funkcije. Da biste ručno tražili drugi razmak, prvo morate izrezati dio izvornog niza.

AnsiReplaceStr, AnsiReplaceText (crta, tekst_1, tekst_2) - funkcije vrše zamjenu u nizu crta linije tekst_1 na tekst_2. Funkcije se razlikuju samo po tome što prva vrši zamjenu uzimajući u obzir slučaj znakova, a druga - bez nje.
U našem programu možemo koristiti ove funkcije za izrezivanje znakova #13 i #10 iz niza navođenjem praznog niza kao zamjenskog teksta. Evo rješenja u jednom retku koda:

Tekst:=AnsiReplaceText(AnsiReplaceText(Tekst,Chr (13 ) ,"" ) ,Chr (10 ) ,"" ) ;

DupeString(crta, broj_ponavljanja) - formira niz koji se sastoji od niza crta ponavljanjem određenog broja puta.

Obrnuti niz(crta) - obrće niz (" 123 " -> "321 ").

Također vrijedi spomenuti funkcije pretvorbe registara.

velika slova(crta) - pretvara niz u velika slova; Mala slova(crta) - pretvara niz u mala slova.

Za pretvaranje pojedinačnih znakova trebali biste koristiti iste funkcije.

Detaljne informacije o svakoj funkciji mogu se dobiti unosom njenog naziva bilo gdje u uređivaču koda, postavljanjem pokazivača na taj naziv (ili označavanjem) i pritiskom na F1.

Snimke zaslona programa opisanih u članku