Rad sa simboličkim objektima u Adobe Illustratoru. Operacije nizova

05.11.2019 Zanimljiv

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().

Važne bilješke

Nepromjenljivost

U JavaScriptu, nizovi su nepromjenjivi, nazivaju se i "nepromjenjivi". To znači da bez obzira na to koje funkcije primijenite na njih, oni ne izvode zamjenu na mjestu (to jest, ne mijenjaju sam niz). Sve funkcije niza primijenjene na nizove vraćaju se novi crta. Ovo također vrijedi kada pristupamo određenom znaku u nizu.

Const str = "zdravo"; str.toUpperCase(); // ZDRAVO console.log(str); // pozdrav str.toUpperCase(); // H konzola.log(str); // pozdrav str = "W"; konzola.log(str); // zdravo

Leksikografski poredak

Leksikografski poredak je, drugim riječima, abecedni red. Ovaj se redoslijed koristi u rječnicima, telefonskim imenicima, bilježnicama i tako dalje.

U JavaScriptu možete usporediti nizove pomoću > i< , и сравнение будет происходить именно лексикографически.

Zapamtite, "8" nije broj, već niz.

Interpolacija

Osim jednog "" i dvostruki navodnici"", moderni JavaScript sadrži povratne kvačice:

``

S obrnutim kvačicama možete koristiti interpolacija, umjesto ulančavanja. Evo, pogledajte:

Const name = "Alex"; const a = 10; const b = 12; console.log(`Njegovo ime je bilo $(name) i njegova dob je bila $(a + b)`);

Ovaj kod će prikazati Njegovo ime je Alex i ima 22 godine. Možete staviti bilo koji izraz unutar $().

Interpolacija je poželjnija od ulančavanja. Savjetujemo da uopće ne koristite ulančavanje. Evo nekih od razloga:

  • Ovaj kod vas tjera na više razmišljanja jer je sintaktički + više poput zbrajanja.
  • Zbog slabog tipkanja lako možete dobiti pogrešan rezultat. Ulančavanje može uzrokovati pogreške.
  • Kada koristite ulančavanje, nemoguće je raščlaniti složene nizove u glavi i razumjeti kako su strukturirani.

Sažetak lekcije

  • String je niz znakova
  • Prazan niz je također niz (niz od nula znakova)
  • Označava se jednostrukim ili dvostrukim navodnicima

Stvaranje niza s konstantom:

Const str1 = "Zdravo"; const str2 = "Zdravo";

Moguće je uključiti navodnik jedne vrste unutar niza, okružujući ga navodnicima druge vrste:

Const str1 = "Zovu ga "Harry", i njemu se to sviđa"; const str2 = "Zovu ga "Harry", i njemu se to sviđa";

Ako niz koristi navodnike iste vrste, moraju biti oklopljena koristeći obrnutu kosu crtu \ :

Const str1 = "Zovu je \"Ann\", i njoj se to sviđa"; const str2 = "Zovu je \"Ann\", i njoj se to sviđa";

Ako niz sadrži obrnutu kosu crtu (točno kao znak koji želite imati u nizu), mora se izbjeći drugom obrnutom kosom crtom:

Const str = "Ovo je obrnuta kosa crta \\ ovdje" // Ovo je obrnuta kosa crta \ ovdje

Postoje također kontrolni znakovi- posebne kombinacije koje generiraju nevidljive detalje:

Const str = "Postoji kartica \t i ovdje \ndolazi Novi linija!" // Ovdje je kartica i ovdje // dolazi nova linija!

\t je kartica, \n je novi red. Više o zaštiti (engleski).

Ulančavanje nizova

Linije se mogu zalijepiti. Ovaj proces se zove ulančavanje i naveden je simbolom +:

Const name = "Alex"; konst dob ​​= 22; console.log("Njegovo ime je " + name + ", a njegova dob je " + dob); // Njegovo ime je Alex i ima 22 godine

Redovi će biti spojeni redom kojim su navedeni: "mos" + "cow" → "moscow" i "cow" + "mos" → "cowmos"

Pristup pojedinačnim simbolima

str[i] je i-ti znak niza str koji počinje s 0. Na primjer, "hexlet" je h, a "hexlet" je x.

Evo funkcije koja uzima niz i vraća kopiju tog niza minus svako drugo slovo. Na primjer, "hexlet" postaje "hxe".

Konst preskoči = (str) =>< str.length) { result = result + str[i]; i = i + 2; } return result; }

str.length je duljina str, odnosno broj znakova. To je samo količina, pa mi Ne Počinjemo brojati od 0. Na primjer, "hrana". duljina je 4.

Transkript lekcije

Sjećate li se svog prvog programa "Hello, world"?

Console.log("Zdravo, svijete!");

Do sada znate da se ovdje vrši poziv funkcije, a funkcija console.log uzima argument. U ovom slučaju argument nije broj, već "string". To je ono što nazivamo dijelovima teksta u programiranju jer su poput niza slova na nizu.

Linije su posvuda. Sada čitam scenarij i tekstualna datoteka je dugačak niz. Web stranica na kojoj gledate te videozapise sadrži puno riječi - sve su to nizovi. Google rad pamćenje nizova bit je pretraživanja. Datoteke i mape na vašem računalu identificiraju se svojim nazivima, koji su također samo nizovi.

Baš kao što smo učinili s brojevima, možemo stvoriti konstantu iz niza:

Const str = "Zdravo";

Možete koristiti jednostruke navodnike ili dvostruke navodnike, nije toliko važno, glavno je da su isti na početku i na kraju retka.

Ako trebate koristiti prave navodnike unutar niza, upotrijebite drugi znak da biste ga stvorili. Na primjer:

Const str = "Zovu ga "Harry", i njemu se to sviđa"; ///Zovu ga "Harry", i njemu se to sviđa

Ovdje se jednostruki navodnici koriste za formuliranje ili razgraničenje niza, a zatim imamo mogućnost stavljanja dvostrukih navodnika unutra. Ili obrnuto:

Const str = "Zovu ga "Harry", i njemu se to sviđa"; /// Zovu ga "Harry", i njemu se to sviđa

Dupli izvana - jednostruki unutra.

Ali što ako to nije moguće i trebate koristiti istu vrstu navodnika kako za formuliranje niza tako i unutar njega. Ako ovo probate

Const str = "Zovu ga "Harry", i njemu se to sviđa";

tada ćete dobiti grešku jer je vaš niz prekinut. Program će se prekinuti u ovom trenutku jer postoji drugi završni citat iste vrste, a zatim postoji čudna riječ koja ne znači ništa, a zatim novi redak. Ovo je neispravan JavaScript.

Moramo objasniti JavaScript tumaču da bi neke citate trebao tumačiti drugačije. Ne bi trebali značiti "početak retka" ili "kraj retka", trebali bi značiti "znak navodnika".

To se zove "zaštita". Dodajte izlazni znak, obrnutu kosu crtu \, prije znaka i znak će biti "izoliran" od svoje specifične uloge i postati uobičajeni znak u nizu.

Const str = "Zovu ga \"Harry\", i njemu se to sviđa"; const str2 = "Zovu je \"Ann\", i njoj se to sviđa"; // Zovu ga "Harry", i njemu se to sviđa // Zovu je "Ann", i njoj se to sviđa

Ovaj izlazni znak može se koristiti za umetanje drugih posebnih znakova u niz.

Ovdje postoje tri točke.

Prvo: ako trebamo obrnutu kosu crtu u nizu, tada se mora izbjeći drugom obrnutom kosom crtom.

Drugo: obrnuta kosa crta-t nije "izbjegnuti t-znak": ne morate izbjeći "t", "t" nije poseban znak; cijeli dizajn obrnute kose crte je poseban kontrolni niz- to je jedna kartica, u biti dug prostor.

Treće: obrnuta kosa crta-n još je jedan izlazni niz koji predstavlja nova linija. Zamislite sebe kao da pritišćete tipku Enter dok tipkate. Stoga će sve što slijedi preći u novi red.

Pokušajmo sada napisati funkciju. Prihvatit će niz - ime i vratiti drugi niz - pozdrav. Evo kako bi to trebalo funkcionirati:

Const result = greet("Sherlock"); // "Pa zdravo, Sherlock"

Ova funkcija mora biti u stanju nekako uzeti dolazni niz i spojiti ga s drugim nizom. Taj se proces naziva "ulančavanje" i u JavaScriptu se implementira sa znakom plus, kao kod zbrajanja brojeva:

Const greet = (str) => ( return "Pa zdravo, " + str; )

Sada još jedan primjer. Ova funkcija uzima niz i vraća isti niz, ali bez svakog drugog slova. Na primjer, "California" postaje "Clfri".

Const skip = (str) => ( neka i = 0; neka rezultat = ""; dok (i< str.length) { result = result + str[i]; i = i + 2; } return result; }

Ove uglate zagrade omogućuju nam dobivanje pojedinačnih znakova iz niza. Kao i kod mnogih procesa u programiranju, počinjete od 0, a ne od 1. Dakle, prvi znak str je str, drugi je str, i tako dalje. Taj se broj naziva "indeks".

Funkcija preskakanja uzima argument, stvara dvije varijable - i za brojač i rezultat za ukupni niz. Broj je 0 jer trebamo krenuti od prvog znaka, a rezultat je prazan niz - dodavat ćemo mu znakove jedan po jedan.

Nakon toga slijedi while petlja, uz uvjet da je "i manje od duljine niza." Dužina znači "koliko znakova". Duljina niza "cats" je 4 - sadrži 4 znaka, 4 slova.

Sve dok je brojač manji od duljine, ulančavamo ili spajamo rezultirajući niz sa znakom na indeksu i. Zatim dodajte 2 brojaču. Dva, ne jedan, jer moramo preskočiti jedan znak.

U nekom trenutku, brojač će postati dovoljno velik da uvjet petlje postane lažan, a funkcija će vratiti rezultat.

Pokušajmo pozvati funkciju s argumentom "mačke":

Const skipped = skip("mačke");

Duljina "mačaka" je 4. Iako indeksi počinju od 0, duljina je realan broj. "c" nije 0 slova, to je jedno slovo. Dakle, duljina "mačke" je 4, ali je indeks posljednjeg slova 3.

  1. 0 je manje od četiri, pa unesite while petlju
  2. spajanje niza sa znakom na indeksu 0 - to je "c"
  3. povećaj brojač za 2
  4. 2 je manje od 4, pa ponovite
  5. za ulančavanje niza sa znakom na indeksu 2 je "t". niz je sada postao "ct"
  6. povećaj brojač za 2
  7. 4 nije manje od 4, pa nemojte više ponavljati
  8. vrati rezultat - "ct"

Očekuju vas test i praktična vježba.

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 informacijske usluge(mogućnosti novinara da prikupljaju i tehnički obrađuju izvorne informacije), monitoring - praćenje, analiza i ocjena tiskanih, 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.

Nastavljamo proučavati simbole, naučili smo osnove, ostalo ćemo doraditi u procesu korištenja alata koji manipuliraju simbolima i kreiranja ilustracija s njima.

Ali psihološki aspekti također su važni za kreativne ljude. Stalno se oslanjamo na njih kada učimo novo gradivo. Došlo je vrijeme za Robin Sharma. Čitate li ovog autora ili ne, to nije važno. Važno je da su psihološki provjerene odredbe vrijedne čitanja i ponovnog čitanja! Kada ćete to učiniti sami? Odgovor često zvuči u umu: "Nikad!"

I zajedno ćemo razmisliti o svemu!

Dakle, "u čovjeku četiri stvaralačka načela».

“Što on misli? Robin Sharma, priznatog majstora motivacije i autora međunarodnih bestselera, ima svaka osoba 4 kreativna početka, 4 kreativna izvora, koji su na 100% unaprijed odrediti sve životni rezultati. A o njima ovisi mjesto koje ćemo zauzeti u životu.”

Posljedično, rezultati rada u bilo kojoj djelatnosti, pa tako i otpadu. Pročitajmo odredbe s gledišta naših uspjeha u otpadnim vodama.

Misli

„Svaka misao o kojoj razmišljamo misao određuje svakog pojedinca proizlaziti, koji je pak odraz naših misli. Svaka navika jednom je započela mišlju.”
Ako ste svladali Adobe Ilustrator, idi do odvoda, probaj razmišljati samo pozitivno, Unatoč svemu! Hvalite se i podržavajte, uspjeh će doći, to su mnogi isprobali.
I onda dobijem pisma da je prodaja na burzama pala, što znači da se tamo ne isplati ići! Napisali ljudi koji tek uče program. Nemojte se zastrašivati. Možda odvodi čekaju samo vas! Nitko ništa ne zna, ali nemoj se hraniti negativnošću!

Osjećaji

"Naše osjećaji Također kreativan. Ako se osjećamo izvrsno, postižemo izvrsne rezultate. Ako smo strastveni, naša strast će se prenijeti na druge. Ako se osjećamo loše, naši rezultati neće biti sjajni.”
Radujte se svakom crtežu koji napravite, svakom prihvaćenom poslu, svakoj prodaji, svakom centu koji padne u vaš džep! Zapamtite da nekada ovo niste imali, ali sada su se stvari popravile! Ne zaglušujte radost kreativnog djeteta svojim mislima o novcu i prodaji.

riječi

“Mi to zaboravljamo riječi imati ogroman na silu. Riječi imaju moć stvaranja. Ako nešto nazovete tragedijom, to će unaprijed odrediti vašu reakciju i sve kasnije stavove.”
Govorimo ili pišemo riječi nekome. Zato pričajte i pišite o svojim uspjesima. Gledajte uspjeh čak i u malim stvarima i ne bojte se pretjerivati. Ovo nije hvalisanje, nije poziranje, ovo je privlačenje pravog uspjeha u vaš život.

Radnje

„Svaki naš akcije definirati specifičan proizlaziti. Što je to kreativno načelo razvijenije u čovjeku, što aktivnije i svrhovitije djelujemo, postižemo izvanrednije rezultate.”
Puno smo razgovarali o akcijama. Veliki portfelj neće vam tek tako pasti na glavu kao mana s neba. Treba raditi na tome, stvarati, izmišljati, tražiti nešto novo. Nema potrebe da se trudite, ali se morate pripremiti za svakodnevni mukotrpan rad. A narodne poslovice o radu znate od djetinjstva. Njihova glavna ideja je da se rad uvijek nagrađuje!
Stoga hvala Robinu Sharmi na njegovom prekrasnom sažetku ljudske izvedbe. Sve u našim rukama!

U ovoj lekciji nastavljamo razgovor o simbolima.

Podsjetimo da je simbol in Adobe Illustrator je grafika koja se može koristiti neograničen broj puta u crtežu. Simbol možete koristiti koliko god puta želite, ali ako promijenite simbol, promijenit će se svi uzorci.

Radit ćemo na ovome danas. Ali prvo, stvorimo vlastiti simbol. Tijekom zadnje tri lekcije koristili smo simbole iz knjižnice. A u kreativnom procesu morate stvoriti vlastite simbole. Simboli se mogu stvoriti iz bilo kojeg objekta, uključujući staze, oblike ispunjene gradijentima, gradijentne mreže i grupe objekata.

Dakle, naše jesenje lišće stvoreno u prošloj lekciji je dobro, ali odložimo ga, nismo ga nacrtali.

Letci

Ostavimo naziv crteža simbol4, i očistite ekran. Pogledajmo Adobe Bridge.


Školski crteži ilustratora

Koliko se crteža već nakupilo u našoj školi, od najprimitivnijih do gotovih! Uzmimo crtež za budući simbol ribki2 . Evo ih, naše prve ljepotice!

Riba

Od njih odaberite onaj zeleni i pomoću crne strelice ga zatvorite u opći pravokutnik Alat za odabir(V), kopija ( Ctrl+C) i umetnite ( Ctrl+V) u crtež simbol4


Odabrana riba

Riba je velika, hajde da je smanjimo Shift za ujednačene promjene i povucite ga u prazan prostor ploče Simboli(simboli). Ali prvo uklonite nepotrebne simbole koji su ostali nakon rada s prethodnim crtežom.
U dijaloški okvir unesite naziv novog simbola riba(riba). I shvatimo što je u izlogu.

Prozor s parametrima simbola

U dijaloškom okviru Simbol Mogućnosti(parametri simbola) daje se napomena da u programu Ilustrator nema razlike između tipova znakova Film Isječak(video) i Grafički(grafička umjetnost). Dakle, nemojmo brinuti o vrijednosti parametra Izvoz Tip(tip).
Obratimo pozornost na Simbol Tip(vrsta znaka). Zadana funkcija je Dinamičan Simbol(dinamički simbol). Ova značajka omogućuje likovima da zadrže svoj ukupni oblik, ali izgled drugi uzorci simbola mogu se dinamički mijenjati. Kada promijenite glavnu formu, mijenjaju se i obrasci znakova, ali se druge promjene također spremaju. Koristili smo ga cijelo vrijeme Dinamičan Simbol(dinamički simbol). U paleti Simboli(simboli) Dinamički simboli prikazani su sa "+" u donjem desnom kutu ikone. I to smo vidjeli više puta, sada ćemo znati! Ali pri stvaranju dinamični likovi Ne biste trebali dodavati tekst, postavljene slike ili mrežne objekte. Prisjetimo se!
Statički Simbol(statički simbol) govori sam za sebe. On se ne mijenja.

Registracija– točka registracije simbola označava ishodište koordinata za objekt definicije simbola. Prilikom izrade simbola možemo odabrati jednu od 8 registracijskih točaka na rubovima simbola ili točku u središtu graničnog okvira. Ostavimo sve kako jest! Točka u sredini.
Omogućiti Vodiči za 9- Kriška Skaliranje– omogućite vodiče za skaliranje od 9 fragmenata. Mi ćemo znati što je to. Ovdje nije tako jednostavno, morate ozbiljno shvatiti!

Naš zadani potvrdni okvir nalazi se na drugom unosu.
Uskladiti do Pixel Mreža– poravnajte s mrežom piksela. I to ćemo upoznati, ali ne sada. Simboli poravnati s mrežom piksela ostaju poravnati kada ih premjestite unutar radne ploče, sve dok se njihova trenutna veličina ne promijeni. Ostavimo ovo polje označeno, radili smo s njim.

u redu. U ploči Simboli(simboli) naša riba se odmah pojavila kao simbol.

Prema zadanim postavkama odabrana grafika postaje instanca novog simbola. Ako želite izbjeći ovu konverziju, držite pritisnutu tipku kada kreirate novi simbol. Shift.
Nisam držao tipku Shift i želim vidjeti što dalje.


Paleta simbola

Ostao je uzorak, označen je znakom plus. Zapamtite, u prvim lekcijama o simbolima, takvi plusevi su se pojavili kada smo smanjili simbole koje je program dao. Prema zadanim postavkama odabrani grafički objekt postaje instanca novog simbola i ne treba nam.

Paleta simbola

Uklonite stvoreni simbol s ploče Simboli(simboli). Ali prvo će biti takav znak. Prođimo i ovu fazu. Morat ćete izbrisati svoje likove. Da vidimo što nas čeka!


Znak upozorenja

Jedan ili više simbola su u upotrebi i ne mogu se izbrisati dok se njihove instance ne prošire ili izbrišu. – Jedan ili više znakova su u upotrebi i ne mogu se izbrisati dok se njihove instance ne prošire ili izbrišu.

Samo tako, nećete moći odmah izbrisati nepotreban simbol! Ako izaberemo Izbrisati Instance(brisanje instanci), sve će nestati: i simbol i riba. Odaberite Proširiti Instance(proširi kopije).


Istaknuta riba

Riba je označena crvenom bojom, ali simbol je nestao s palete! Ostvarili smo cilj! Pogledajmo paletu Slojevi(slojevi). Wow!

Paleta slojeva

Raširio sam paletu i jasno je da se naša riba razgrupirala! znat ćemo!

Iskoristimo pomoć Ctrl+ G Kombinirajmo detalje ribe. Možete pokušati, ali bez kombiniranja, riba se neće uvući u paletu.
Još uvijek moramo stvoriti novi simbol. Ovdje pritisnemo i držimo tipku Shift dok povlačite simbol u paletu. Također, ako ne želite da se dijaloški okvir otvori kada stvorite simbol Novi Simbol(novi simbol), zatim dok stvarate simbol, držite gumb pritisnut Alt. Ilustrator dat će simbolu zadani naziv, npr. Novi Simbol1 (novi simbol1).

Vježbajte, a to nije tako jednostavno!

Paleta simbola

Simbol se pojavio, ali se kopirana riba može izbrisati! Neće biti problema!

Sada izvadimo ribu iz ploče Simboli(simboli). Poprskajmo ga i vidimo kako djeluje! Zašto ne biste pogledali neke poznate alate?! Ovdje ste već stručnjaci! Započnite! Alat Simbol Prskalica Alat(simbol raspršivač) i sve što stoji iza toga svladano je u prethodnim lekcijama!


Raspršivanje likova

Nekada smo ribu vukli rukom i to je dugo trajalo, ali sada znamo kako to raditi brže i bez problema. A promijenile su se i boja i prozirnost! Naravno, nisam se previše trudio, ali ribe su drugačije. Znam da se trudiš! Dobro napravljeno!

Korištenje simbola štedi vrijeme i značajno smanjuje veličinu datoteke. Budući da se isti simbol može lako duplicirati, ne morate preuzimati nove teške datoteke svaki put kada koristite ili radite na crtežu. Skup umnoženih simbola je jedinstvena cjelina, nema potrebe za proširivanjem simbola.

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 više puta koriste u određenom djelu.

Simbol možete urediti promjenom odgovarajućeg grafičkog objekta. Također možete redefinirati simbol tako da ga zamijenite novom grafikom. Uređivanjem i redefiniranjem simbola mijenja se njegov izgled u paleti Simboli(simboli), kao i izgled svih njegovih uzoraka na ploči.

U to se moramo uvjeriti, škola je škola, ona postavlja temelje.
Izaberimo svoje simbole. Dvaput kliknite na odabir bilo gdje.


Reprodukcija skupa znakova

Čini se da se ništa nije promijenilo, osim što se na vrhu pojavila plava traka i nestao je cijeli pravokutnik koji je istaknuo naš umnoženi simbol.

Plava traka na vrhu

Ovo je ono što vam treba! Uzmimo ključ Alt i uzgajati ribe.
Kliknuo, dimenzionalni pravokutnik se ponovno pojavio, pritisnut Alt i lagano povukao novu ribu u stranu.


Uzgoj riba

Sada ih uklonimo sa zaslona povlačenjem na platno. Ne treba nam sva riba, upotrijebit ćemo samo jednu!


Ribe na platnu

Svidjela mi se gornja crvena riba. Možete odabrati bilo koji od svojih. Ali kako ga dobiti iz skupa znakova? Sada ćemo saznati!
Dvaput kliknite bilo gdje na zaslonu kako biste uklonili plavu traku na vrhu.


Uklonjena plava traka

Odaberimo novi set riba. Približite paletu odabranoj ribi Simboli(simboli), i pogledajmo jednu od njegovih funkcija. Radimo na platnu.


Prekidanje veze između simbola

Pauza Veza do Simbol– prekinuti vezu sa simbolom. Kliknimo na to!
Sve su ribe bile istaknute. Veza je prekinuta!


Veza je prekinuta

Pretvorili su se u zasebne objekte. Ali ribe su bile jedinica, ne zaboravite! Uklonimo odabir, razgrupiramo skup odabranih riba, odaberemo onu koja je potrebna i izbrišemo ostale.

Odabrana riba

Ostala nam je samo jedna riba! Proširimo ga i promijenimo nešto na njemu povlačenjem na zaslon s platna.

Skup simbola i zasebna riba

Ribe u setu ne smetaju. Svi su zajedno! Promijenit ćemo ovu ribu. Vratimo joj normalne oči. Upotrijebimo opet novi trik! Odaberite ribu, dvaput kliknite na ekran, postat će jedva vidljiva, sada odaberite oko i mirno mu promijenite boju. Povoljno i brzo. Način izolacije je aktiviran ako postoji plava traka na vrhu!


Način izolacije

Dvaput kliknite na ekran i riba će se vratiti u boju. I oko je postalo drugačije!


Riba ima novo oko

Vrlo potrebna tehnika, danas ćemo je ponovno koristiti. Pomaže ne samo pri radu sa simbolima, već i drugim objektima.

Ukratko smo ga spomenuli kada smo proučavali boju. Ali samo u prolazu. Vrijeme je da o tome detaljnije razgovaramo.
Način izolacije (na ekranu se pojavljuje plava traka) izolira grupe i temeljne slojeve tako da možete jednostavno odabrati i urediti objekte i dijelove bez njihovog razgrupiranje. Nije potrebno u ovaj trenutak objekti postaju mutni i blokirani. Možemo slobodno mijenjati samo odabrane objekte. Sam si ovo napravio s ribljim okom.
Za prebacivanje u način izolacije potrebno je istaknuti objekt crnom strelicom Alat za odabir(V) i pritisnite tipku Izolirati Odabran Objekt(izolirati odabrani objekt) na ploči Kontrolirati(kontrolirati). Ovo je još jedan način da uđete u način rada.


Tipka za način izolacije

Ova ikona na ploči Kontrolirati(kontrola) govori o uključivanju ovaj način rada. Još ga nisam kliknuo! Pogledajmo pobliže!

Tipka za način izolacije

Kliknimo na njega i pogledajmo.


Način izolacije i paleta slojeva

Način izolacije je omogućen, na ploči Slojevi(slojevi) vidimo ga. Riba je grupirana, a lako sam odabrao njeno tijelo s kojim želim raditi. Skup riba je obezbojen, izolirani su.
Ne morate uključiti paletu Slojevi(slojevi). Program Adobe IllustratorCC na više mjesta nas upozorava što su učinili. Samo trebate znati mjesta!


Siva traka izolacije

Na vrhu prozora dokumenta, u sivoj traci, piše Sloj1 (sloj 1) i < Skupina> (skupina). Program nam pokazuje da smo izolirali grupu objekata koji se nalaze na sloju Sloj1 (sloj 1). Možete izaći iz načina izolacije dvostrukim klikom izvan objekata.
Ako pažljivo pogledate, primijetit ćete da je na sivoj ploči koju izolirate sve jasno označeno. Ali trenutno moja riba nije promijenila boju. Ne brinite, događa se! znat ćemo! Radit ćemo svoje, sve će uspjeti bez razgrupiranja! Način rada!


Način izolacije

Želim promijeniti ribi rep. Počinjem se mijenjati!


Modificirani riblji rep

Olovka Alat za olovke(N) i zaglađivanje Alat za glatke Napravio sam novi rep za ribu. Nisam se jako trudio, vama ide bolje, ali postoji uzorak! Sada "kosti" nisu prikladne, pokušat ćemo učiniti nešto s njima bez napuštanja načina izolacije.

Promijenjene repne kosti

Kopirao sam “kosti”, razvio ih, namjestio na novi rep i promijenio boju donjeg. Mislim da si to napravio još bolje. Sve je poznato! Ništa ne objašnjavam!

Pogledajmo naše ribe i izađimo iz izolacije. Sve su ribe odmah dobile boju!

Bez načina izolacije

Ovdje je skup simbola i nova riba. Možete stvoriti novi simbol. Započnimo!
Prvo smanjimo ribu pomoću ključa Shift, ističući ga.


Skup simbola i smanjene ribe

Ovdje je naš set, au donjem desnom kutu je nova riba. Odaberite ga ponovno držeći pritisnutu tipku Shift, kliknite na ikonu Novi Simbol(novi simbol), pojavit će se dijaloški okvir Simbol Mogućnosti(parametri simbola), dobivamo simbol!


Napravite novi simbol

Nisam ja dao ime simbolu, program je dao njegovo ime.
u redu.


Pojavio se novi simbol

Pojavio se novi dinamički simbol! Na ribi nema plusa, može se skinuti! Ali premjestimo ga na platno, u slučaju da nam bude pri ruci!


Prskanje novog simbola

Volimo se zabavljati! Kliknite na novi simbol i uzmite Simbol Prskalica Alat(simbol raspršivač) i da vidimo što smo napravili!

Izgubili smo srca! Zašto ne uživati ​​u mogućnostima! Jato riba u trenu! Kreativno dijete je oduševljeno!

Ključ Izbrisati izbrišite ovaj skup prebacivanjem na crnu strelicu Alat za odabir(V), stvorimo još jedan! Budimo mirni, inače smo od veselja htjeli popuniti cijeli prostor za uređivanje novim ribama! Lako je i brzo!


Novi simbol riba

Neka bude ovako nešto! Slobodni ste u postavljanju novih riba, ne zaboravite na alate za upravljanje simbolima koje ste naučili! Bez njih se ne može! Ti sve znaš, neću ponavljati!

Premjestimo naš novi set na postojeći. Ne spajaju se, to se vidi iz palete


Dva skupa znakova

Imamo dva skupa likova. Nije ih tako lako kombinirati. Najlakše je prekinuti vezu unutar skupova, odvojiti ih u grupu, po potrebi ih proširiti, premjestiti, lijepo rasporediti, a zatim iskombinirati i stvoriti novi simbol! Pokušajmo! Možeš ti to!


Stvaranje trećeg lika

Gledajući paletu Slojevi(slojevi).


Novi simbol u paleti slojeva

Postoji jedan novi simbol u paleti, osim usamljene ribe. Ovo nije skup, ovo je jedan lik! Premjestimo ga na platno gdje se nalazi riba i očistimo radnu ploču.


Novi simbol i riba na platnu

Uvijek ga možemo izbrisati. Toliko je stvari, a ovo su dva objekta. Simbol je odabran, a riba nije odabrana.
Artboard je čist! Sada se vratimo na Lekcija br. 58, citirat ću fragment iz njega:

“Postoje situacije kada nakon stvaranja skupa znakova trebate dodati još nekoliko drugih, trebali biste istaknuti ovu grupu intenzivirati se alat Simbol raspršivač(simboli prskanja) i ponovno početi "prskati" simboli. Svi će se ujediniti u jedno.”

Na čistoj ploči, učinimo upravo to! Sve znaš, djeluj sam!


Raspršivanje likova

Evo novog skupa znakova Simbol set. Može se uređivati, ali to je po vašem nahođenju. Novi simbol koji je na platnu je jako težak, neću ga prskati. A vi odlučite sami.
Samo ću odvući i simbol i ribu na radnu ploču s platna. U paleti Slojevi(slojevi) sve će ostati isto, ali će na ekranu biti drugačije. Ali mi to shvaćamo!


Palete simbola i slojeva na radnoj ploči

Povećao sam usamljenu ribu. Neka se vidi!

A sada ću uključiti drugi način rada, također smo ga jednom koristili.

Način obrisa

Ovo je modus Obris(konture). Otvara se u traci izbornika, PogledObris(pogled – obrisi). I što vidimo? Nekako je pusto!

Na ekranu su obrisi povećane usamljene ribe i obrisi novog simbola. Od kombiniranog seta samo okvir! Eto što su simboli! Ne opterećuju crtež! Vrijedi ih koristiti.
Vratimo se. PogledPregled(prikaz – ilustracija).

Lakše je koristiti prečace: Ctrl+ Y. Probaj!


Zaslon u normalnom načinu rada

Nisam završio s posebnim "remek-djelom", ali da završimo. Znam da je tvoja ljepša! Uvijek si super! Ja sam ponosan!
Ne previše umoran! Vještine usavršene!

Ali dosta! Opustimo se! Skretanje!
Spremite ono što ste nacrtali, učvrstite ono što ste naučili!


Ova stranica je prikazana 1343 puta.

Rad s nizovima i znakovima

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 pozicija, tj. svaki znak ima svoj jedinstveni kod od 0 do 255. Znak s određenim kodom N piše se ovako: #N. To je upravo način na koji su simboli naznačeni u programskom kodu. Budući da je kod simbola broj ne veći od 255, očito je da simbol zauzima 1 bajt u memoriji. 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 znakova" uključena u sustav Windows (prečac se nalazi u izborniku Start - Programi - Pribor - Alati sustava). Ali vrlo brzo ćemo i sami napisati nešto slično.

Žice

Niz, poznat i kao 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. Ovo je 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. 2 bajta se također nazivaju riječju. Otuda i naziv pripadajućeg numeričkog tipa podataka - Word (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. Za pohranjivanje velikih tekstova i tekstova s ​​posebnim znakovima postoje posebni tipovi podataka AnsiString i WideString (potonji je, usput, dvobajtni, tj. za Unicode).

Za određivanje tekstualnih vrijednosti u Pascalu koriste se jednostruki navodnici (ne dvostruki navodnici!). Oni. Kada želite dodijeliti vrijednost string varijabli, trebali biste to učiniti ovako:

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:

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 nizu "ABC" znak "A" je prvi, "B" je drugi 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 uglate zagrade pored naziva varijable. Na primjer:

var s: niz; c:char; ... s:="Zdravo!"; c:=s; //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 može se pronaći pomoću funkcije Length(). Funkcija uzima jedan parametar - niz i vraća njegovu duljinu. Primjer:

var Str: niz; 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. Odredi s koje pozicije u njega ulazi struna S2. Nemoguće je zamisliti bilo kakvu obradu bez izvođenja ove operacije.

Dakle, za takav nalaz postoji funkcija Pos(). Funkcija uzima dva parametra: prvi je podniz koji treba pronaći, drugi je niz u kojem se traži. 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:=Pos(Str2, Str1); //P = 9

Uklanjanje dijela linije

Možete izbrisati dio niza pomoću procedure Delete(). 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: String; ( ... ) Str1:="Zdravo, svijete!"; Izbriši(Str1, 6, 7); // Str1 = "Zdravo!"

Treba napomenuti da ako se pokaže da je duljina izbrisanog fragmenta više količine znakova u retku, počevši od navedene pozicije (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 "a" u nizu i izbrisati dio niza koji ga slijedi. Učinimo to na sljedeći način: pomoću funkcije Pos() pronađemo položaj slova u retku, a pomoću funkcije Delete() izbrišemo fragment.

var Str: niz; ( ... ) Str:="Ovo je test."; Izbriši(Str,Pos("a",Str),Dužina(Str));

Pokušajmo zamijeniti vrijednosti i vidjeti što se prosljeđuje funkciji Delete. Prvo slovo "a" u retku je na poziciji 9. Duljina cijelog retka je 15 znakova. Dakle, poziv funkcije ide ovako: Delete(Str,9,15). Vidi se da od slova "a" do kraja retka ima samo 7 znakova... Ali funkcija će odraditi svoj posao, unatoč ovoj razlici. Rezultat će, naravno, biti niz "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 Copy() omogućuje kopiranje navedenog 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: pretpostavimo da želite odabrati prvu riječ iz rečenice (riječi su odvojene razmakom). Na formu ćemo postaviti Edit1 (TEdit) u koju ćemo unijeti rečenicu. Operacija će se izvršiti pritiskom na tipku. Imamo:

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 niz u postojeći niz, možete koristiti proceduru Insert(). 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

Gornji primjeri samo demonstriraju princip rada sa nizovima pomoću funkcija Length(), Pos(), Delete() i Copy(). Sada riješimo složeniji problem koji će zahtijevati kombiniranu upotrebu ovih funkcija.

Zadatak: tekst upisan u polje Memo rastaviti na riječi i prikazati 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: Memo1 (TMemo), Button1 (TButton), ListBox1 (TListBox), Label1, Label2 (TLabel).

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

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 ovako na 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 (konstanta), a zatim tražimo svaki znak u tom nizu pomoću funkcije Pos(). 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. Da bismo prošli kroz sve simbole, koristimo se FOR petlja, 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; ako je Pos(Tekst[i],DelSym) > 0 tada Tekst[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 = "," then Delete(Text,1,1); dok Pos(",",Tekst) > ako 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; (...)

Sada u varijabli Word imamo riječ iz teksta, au varijabli Text imamo ostatak teksta. Izrezana riječ sada se dodaje u ListBox pozivanjem 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, REPEAT je prikladniji od WHILE. Uvjet bi trebao biti Length(Text) = 0, tj. završiti petlju kada tekst postane prazan, tj. kad iz njega izrežemo sve riječi.

ponoviti Riječ:=Kopiraj(Tekst,1,Poz(",",Tekst)-1); Izbriši(tekst,1,duljina(riječ)+1); ListBox1.Items.Add(Word); dok duljina(tekst) = 0;

Dakle, trenutno imamo:

procedure TForm1.Button1Click(Pošiljatelj: TObject); const DelSym = ".,!?"; var Tekst, Riječ: niz; i:cijeli broj; begin Text:=Memo1.Lines.Text; for i:= 1 do Length(Text) do ako je Pos(Tekst[i],DelSym) > 0 tada Tekst[i]:=","; if Text = "," then Delete(Text,1,1); while Pos(",",Tekst) > 0 do Delete(Tekst,Pos(",",Tekst),1); ponoviti Riječ:=Kopiraj(Tekst,1,Poz(",",Tekst)-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.

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

Zašto petlje do ListBox.Items.Count-1, a ne samo do Count, shvatite sami :-)

Sada je sve spremno!

procedure TForm1.Button1Click(Pošiljatelj: TObject); const DelSym = ".,!?"; var Text,Word,LongestWord: niz; i:cijeli broj; begin Text:=Memo1.Lines.Text; for i:= 1 do Length(Text) do ako je Pos(Tekst[i],DelSym) > 0 tada Tekst[i]:=","; if Text = "," 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),""); ponoviti Riječ:=Kopiraj(Tekst,1,Poz(",",Tekst)-1); Izbriši(tekst,1,duljina(riječ)+1); ListBox1.Items.Add(Word); dok duljina(tekst) = 0; Label1.Caption:="Broj riječi u tekstu: "+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Items; for i:= 1 to ListBox1.Items.Count-1 do if Length(ListBox1.Items[i]) > Length(LongestWord) then LongestWord:=ListBox1.Items[i]; Label2.Caption:="Najduža riječ: "+LongestWord+" ("+IntToStr(Length(LongestWord))+" slova)"; kraj;

Rad sa simbolima

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

Sjećate se "Tablice simbola"? Učinimo to sami!

Izlaz će se izvesti u TStringGrid. Ova komponenta je tablica u kojoj svaka ćelija sadrži tekstualnu vrijednost. Komponenta se nalazi na kartici Dodatno (prema zadanim postavkama dolazi odmah nakon Standardno). 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 ima jedan fiksni stupac i jedan fiksni red (prikazani su sivom bojom). Ne treba nam stupac, ali red je vrlo koristan, stoga postavljamo FixedCols = 0 i ostavljamo FixedRows = 1.

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

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. StringGrid ćelijama se pristupa pomoću svojstva Cells: Cells[column_number, row_number]. Brojevi stupaca i redaka (počevši od nule) navedeni su u uglatim zagradama. Vrijednosti su tekst.

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 nizovi koji se nazivaju null-terminated - to su nizovi koji 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 radio, morate postaviti KeyPreview obrasca = True.

Ovdje prikazujemo prozor s tekstom. Događaj ima varijablu Key koja pohranjuje znak koji odgovara pritisnutoj tipki. Pomoću funkcije Ord() saznajemo kod ovog znaka, a zatim pomoću funkcije IntToStr() taj broj pretvaramo u string.

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.

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:

dok je Pos(Chr(13),Text) > 0 do Izbriši(Tekst,Poz(Chr(13),Tekst),1); dok je Pos(Chr(10),Text) > 0 do Izbriši(Tekst,Poz(Chr(10),Tekst),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. Ovdje Kratki opisčesto korištene funkcije:

PosEx(podniz, redak, uvlaka) - funkcija slična funkciji Pos(), ali pretražuje s određene pozicije (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(niz, tekst_1, tekst_2) - funkcije zamjenjuju niz niz tekst_1 s tekstom_2 u nizu. 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(niz, broj_ponavljanja) - formira niz koji se sastoji od niza nizova ponavljajući ga određeni broj puta.

Obrnuti niz(string) - invertira niz ("123" -> "321").

Također vrijedi spomenuti funkcije pretvorbe registara.

velika slova(niz) - pretvara niz u velika slova; Mala slova(string) - 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

Zaključak

Bila je to duga lekcija. Dakle, danas smo se upoznali sa nizovima i znakovima i naučili kako raditi s njima. Naučene tehnike koriste se gotovo posvuda. Ne bojte se eksperimentirati - unaprijedite svoje vještine programiranja sami!