Lucrul cu obiecte simbolice în Adobe Illustrator. Operații cu șiruri

05.11.2019 Interesant

Simbol

Un simbol este un singur semn. Oricare – literă, număr, semn aritmetic sau spaţiu, semne de punctuație sau subliniere... Și, de asemenea, caractere speciale - linie nouă, Spațiu înapoi, semn dolar sau la sută. Tipul „caracter” în Delphi este notat cu Char:

ShowMessage("Ați introdus " + c);

ShowMessage("Mutați la nou" + c + "linie");

Am spus deja că simbolurile sunt luate din tabelul de simboluri ANSI sau UNICODE. Cele mai multe simboluri sunt folosite, unele simboluri sunt auxiliare. Rețineți că majusculă„A” și „a” mic sunt simboluri diferite! De asemenea, „s” latin și „s” rusesc sunt simboluri diferite, deși sunt la fel de asemănătoare ca două mazăre într-o păstaie.

Caracterul nul nu este folosit, este rezervat ca nul complet. Programatorii au găsit o utilizare demnă pentru acest caracter, folosindu-l în evenimentele de introducere a textului atunci când trebuie să împiedice utilizatorul să introducă caractere. Nu putem vedea caractere de serviciu în text camp. Simbolurile de serviciu sunt , <introduce>, <Tab> si altele. Fiecare caracter este procesat de computer ca un număr de la 0 la 255, astfel cuvânt„HELLO” în memoria aparatului va arăta ca un set de numere: „207 208 200 194 197 210”.

Funcții de simbol

În practică, este adesea necesară procesarea caracterelor individuale. Variabilelor tipului de caracter Char li se pot atribui valori în acest fel:

Deoarece pentru un computer un simbol este un număr, datele simbolice pot fi comparate între ele. În acest caz, cel mai mare simbol va fi cel al cărui număr din tabelul de simboluri este mai mare. De exemplu, „i” va fi mai mare decât „a”:

dacă b > c atunci ShowMessage ("Adevărat!")

else ShowMessage("Fals!");

Când lucrați cu variabile caracter, funcțiile Chr() și Ord() sunt adesea folosite. Funcţie Chr() ia un număr ca parametru și returnează caracterul care se potrivește cu acel număr din tabel ANSI:

funcția Chr (X: Byte): Char;

Funcţie Ord() face exact opusul, ia un caracter ca parametru și returnează numărul sub care acest caracter este stocat în tabel ANSI:

funcția Ord (C: Char): Byte;

Variabilele de caractere pot fi utilizate cu aceste funcții:

În prima linie, în variabila a am scris simbolul „ȘI”, care corespunde numărului 200 din tabelul de simboluri. În a doua, variabilă întreagă, am scris numărul 200, deoarece simbolul cu acest număr a fost scris în variabila a, pe care am trecut-o ca parametru . În cele din urmă, în a treia linie am scris numărul 102 în întreaga variabilă; acest număr corespunde simbolului „f”.


Linia

Un șir este un set de caractere. Un șir poate fi reprezentat ca o matrice statică sau dinamică de date de caractere. Am discutat deja despre tipurile de șiruri în „Control construct if, for loop”: AnsiString – un șir din ANSI– simboluri și WideString– un șir de caractere UNICODE –.

Tipul String nu este un tip separat; este implicit AnsiString. Cu toate acestea, poate fi reconfigurat la WideString, deși acest lucru nu este necesar. Deci, nu ezitați să specificați variabile șir ca șir:

s:= „Acesta este mai multe linii” + #13 + „șir”;

După cum puteți vedea din exemplu, un șir poate fi compus din mai multe subșiruri și chiar și caractere individuale pot fi adăugate la el. În exemplu, am adăugat caracterul numărul 13, acesta este noul caracter de linie. Ca rezultat al executării acestui cod, procedura ShowMessage() va afișa un mesaj împărțit în două linii:

Acesta este multilinie

ShortString– un șir scurt de la ANSI– simboluri. Poate conține de la 0 la 255 de caractere. Folosit rar. De fapt, puteți declara un tip String cu o dimensiune pre-specificată:

După cum puteți vedea, șirul este declarat cu un index numeric, aproape ca matrice. De fapt, șir de caractere si aici este matrice datele de caractere și le puteți gestiona în același mod. Indexarea caracterele dintr-o linie încep cu unul, adică indicele 1 corespunde primului caracter al liniei.

string:= „Bună ziua”;

șir := „a”; //a schimbat al 5-lea caracter al liniei

ShowMessage(stroke); //rezultat: șir „Privat”

Acesta este și un șir și va trebui să ne ocupăm de el în viitor. Acest șir funcționează complet diferit de String. String reprezintă matrice caractere, al căror element zero conține numărul octet, alocate pe această linie. A variabil tip PChar– aceasta nu este linia în sine, dar indicator până la începutul liniei, adică variabil indică primul caracter al unui șir din memoria computerului. Atunci unde PChar depozitează cantitatea octetîn linie?! Și nicăieri! Am vorbit deja despre tabelul de simboluri ANSI, și am aflat că caracterul nul este gol. Iată ultimul personaj PChar tocmai acest simbol este cel care stochează, și calculator, după ce l-a găsit, consideră că linia s-a încheiat.

Cu sfori PChar este foarte incomod să lucrezi, dar va trebui să facem acest lucru atunci când lucrăm direct cu funcțiile WinAPI. Funcțiile WinAPI sunt funcții ale Windows, nu Delphi. Cu toate acestea, Delphi vă permite să le utilizați. Uneori, acest lucru este necesar, de exemplu, atunci când instrumentele Delphi nu sunt suficiente pentru a finaliza sarcina intenționată. Utilizarea unor astfel de funcții nu este întotdeauna convenabilă, dar ele sunt executate de procesor mult mai rapid, deoarece sunt conținute în sistem de operare. Exemplu – funcţie MessageBox().

Sunteți deja obișnuit să afișați mesaje folosind funcția ShowMessage() a lui Delphi? Obișnuiește-te cu noua funcție!

Application.MessageBox("linia 1", "linia 2",[ butoane + tip_fereastră]);

· linia 1 - afișează text în interiorul ferestrei.

· linia 2 – text în titlul ferestrei.

Dacă nu specificați [buttons + window_type], atunci va apărea o fereastră simplă cu un buton OK, ca în funcția ShowMessage().

Notite importante

Imuabilitate

În JavaScript, șirurile sunt imuabile, numite și „imuabile”. Aceasta înseamnă că, indiferent de funcțiile pe care le aplicați, acestea nu efectuează înlocuiri la locul lor (adică nu schimbă șirul în sine). Toate funcțiile șir aplicate șirurilor revin nou linia. Acest lucru este valabil și atunci când accesăm un anumit caracter dintr-un șir.

Const str = „bună ziua”; str.toUpperCase(); // SALUT console.log(str); // salut str.toUpperCase(); // H console.log(str); // salut str = "W"; console.log(str); // Buna ziua

Ordinea lexicografică

Ordinea lexicografică este, cu alte cuvinte, ordinea alfabetică. Această ordine este folosită în dicționare, directoare telefonice, caiete și așa mai departe.

În JavaScript puteți compara șiruri folosind > și< , и сравнение будет происходить именно лексикографически.

Amintiți-vă, „8” nu este un număr, ci un șir.

Interpolare

Cu excepția single-ului „” și ghilimele duble„”, JavaScript modern conține backtick-uri:

``

Cu căpușe inverse puteți folosi interpolare, în loc de concatenare. Aici, uite:

Nume const = "Alex"; const a = 10; const b = 12; console.log(`Numele lui era $(nume) iar vârsta lui era $(a + b)`);

Acest cod va afișa numele lui era Alex și vârsta lui avea 22 de ani. Puteți pune orice expresie în interiorul $().

Interpolarea este de preferat concatenării. Vă sfătuim să nu folosiți deloc concatenarea. Iată câteva dintre motive:

  • Acest cod te face să te gândești mai mult, deoarece sintactic + seamănă mai mult cu adăugarea.
  • Din cauza tastării slabe, puteți obține cu ușurință un rezultat greșit. Concatenarea poate cauza erori.
  • Când utilizați concatenarea, este imposibil să analizați șiruri complexe în cap și să înțelegeți cum sunt structurate.

Rezumatul lecției

  • Un șir este o succesiune de caractere
  • Un șir gol este, de asemenea, un șir (o secvență de zero caractere)
  • Notat prin ghilimele simple sau duble

Crearea unui șir cu o constantă:

Const str1 = „Bună ziua”; const str2 = "Bună ziua";

Este posibil să includeți un citat de un tip în interiorul unui șir, înconjurându-l cu ghilimele de alt tip:

Const str1 = „Îi spun „Harry”, și îi place”; const str2 = „Îi spun „Harry”, și îi place”;

Dacă șirul utilizează ghilimele de același tip, acestea trebuie să fie ecranat folosind backslash \ :

Const str1 = „O numesc „Ann” și îi place”; const str2 = "O numesc \"Ann\", și îi place";

Dacă un șir include o bară oblică inversă (mai exact ca un caracter pe care doriți să-l aveți în șir), acesta trebuie să fie eliminat cu o altă bară oblică inversă:

Const str = "Aceasta este o bară oblică inversă \\ aici" // Aceasta este o bară oblică inversă \ aici

Există, de asemenea caractere de control- combinații speciale care generează detalii invizibile:

Const str = „Există o filă \t și aici \nvine noul linie!" // Aici este o filă și aici // vine noua linie!

\t este o filă, \n este o linie nouă. Mai multe despre ecranare (engleză).

Concatenarea șirurilor

Liniile pot fi lipite împreună. Acest proces se numește concatenareși este specificat de simbolul +:

Nume const = "Alex"; varsta const = 22; console.log("Numele lui este " + nume + " iar vârsta lui este " + vârstă); // Numele lui este Alex și vârsta lui este de 22 de ani

Liniile vor fi concatenate în ordinea în care sunt specificate: „mos” + „vacă” → „moscova” și „vacă” + „mos” → „vacă”

Acces la simboluri individuale

str[i] este al-lea caracter al șirului str începând cu 0. De exemplu, „hexlet” este h și „hexlet” este x.

Iată o funcție care ia un șir și returnează o copie a acelui șir minus fiecare altă literă. De exemplu, „hexlet” devine „hxe”.

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

str.length este lungimea lui str , adică numărul de caractere. Este doar o cantitate, deci noi NuÎncepem să numărăm de la 0. De exemplu, „mâncare”.lungimea este 4.

Transcrierea lecției

Îți amintești primul tău program „bună ziua, lume”?

Console.log ("Bună ziua, lume!");

Până acum știți că aici se face un apel de funcție, iar funcția console.log preia un argument. În acest caz, argumentul nu este un număr, ci un „șir”. Aceasta este ceea ce numim bucăți de text în programare, deoarece sunt ca o secvență de litere pe un șir.

Liniile sunt peste tot. Citesc scenariul acum și fisier text este un șir lung. Site-ul web pe care vizionați aceste videoclipuri conține o mulțime de cuvinte - toate sunt șiruri. Lucru pe Google amintirea șirurilor este esența căutării. Fișierele și folderele de pe computer sunt identificate prin numele lor, care sunt, de asemenea, doar șiruri.

La fel cum am făcut cu numerele, putem crea o constantă dintr-un șir:

Const str = „Bună ziua”;

Puteți folosi ghilimele simple sau duble, nu contează atât de mult, principalul lucru este că sunt aceleași la început și la sfârșitul rândului.

Dacă trebuie să utilizați ghilimele reale într-un șir, atunci utilizați un caracter diferit pentru a-l crea. De exemplu:

Const str = „Îi spun „Harry”, și îi place”; ///Ei îi spun „Harry”, și îi place

Aici ghilimele simple sunt folosite pentru a formula sau delimita un șir și apoi avem opțiunea de a pune ghilimele duble înăuntru. Sau vice versa:

Const str = „Îi spun „Harry”, și îi place”; /// Îi spun „Harry”, și îi place

Dublu exterior - single interior.

Dar dacă acest lucru nu este posibil și trebuie să utilizați același tip de ghilimele atât pentru a formula șirul, cât și în interiorul acestuia. Daca incerci asta

Const str = „Îi spun „Harry”, și îi place”;

atunci vei primi o eroare pentru că șirul tău este rupt. Programul se va întrerupe în acest moment deoarece există un al doilea citat de închidere de același tip și apoi există un cuvânt ciudat care nu înseamnă nimic și apoi o nouă linie. Acesta este JavaScript incorect.

Trebuie să explicăm interpretului JavaScript că ar trebui să interpreteze diferit unele ghilimele. Ele nu ar trebui să însemne „începutul rândului” sau „sfârșitul rândului”, ar trebui să însemne „caracter citat”.

Aceasta se numește „protecție”. Adăugați un caracter de escape, o bară oblică inversă \, înainte de caracter, iar caracterul este „izolat” de rolul său specific și devine un caracter obișnuit în șir.

Const str = "Îi spun \"Harry\", și îi place"; const str2 = "O numesc \"Ann\", și îi place"; // Îi spun „Harry”, și lui îi place // Îi spun „Ann”, și ei îi place

Acest caracter de escape poate fi folosit pentru a introduce alte caractere speciale într-un șir.

Sunt trei puncte aici.

În primul rând: dacă avem nevoie de o bară oblică inversă într-un șir, atunci trebuie să fie eliminată cu o altă bară oblică inversă.

În al doilea rând: backslash-t nu este un „caracter t escape”: nu trebuie să scapi de „t”, „t” nu este un caracter special; întregul design backslash-t este special secvență de control- este o singură filă, în esență un spațiu lung.

În al treilea rând: backslash-n este o altă secvență de evadare care reprezintă linie nouă. Gândiți-vă la dvs. ca apăsând tasta Enter când tastați. Prin urmare, tot ce urmează se va muta la o nouă linie.

Acum să încercăm să scriem o funcție. Va accepta un șir - un nume și va returna un alt șir - un salut. Iată cum ar trebui să funcționeze:

Const result = salut ("Sherlock"); // „Ei bine, salut, Sherlock”

Această funcție trebuie să fie capabilă să ia cumva un șir primit și să îl concateneze cu un alt șir. Acest proces se numește „concatenare” și în JavaScript este implementat cu semnul plus, ca la adăugarea numerelor:

Const salut = (str) => ( return "Ei bine, salut," + str; )

Acum un alt exemplu. Această funcție ia un șir și returnează același șir, dar fără orice altă literă. De exemplu, „California” devine „Clfri”.

Const skip = (str) => ( fie i = 0; fie rezultat = ""; în timp ce (i< str.length) { result = result + str[i]; i = i + 2; } return result; }

Aceste paranteze pătrate ne permit să obținem caractere individuale dintr-un șir. Ca și în cazul multor procese din programare, începeți de la 0, nu de la 1. Deci primul caracter al lui str este str , al doilea este str , și așa mai departe. Acest număr se numește „index”.

Funcția skip preia un argument, creează două variabile - i pentru contor și rezultat pentru șirul total. Numărul este 0 deoarece trebuie să începem de la primul caracter, iar rezultatul este un șir gol - îi vom adăuga caractere unul câte unul.

Aceasta este urmată de o buclă while, cu condiția ca „i să fie mai mică decât lungimea șirului”. Lungimea înseamnă „câte caractere”. Lungimea șirului „pisici” este de 4 - conține 4 caractere, 4 litere.

Atâta timp cât contorul este mai mic decât lungimea, concatenăm sau concatenăm șirul rezultat cu caracterul de la indicele i. Apoi adăugați 2 la contor. Doi, nu unul, pentru că trebuie să sărim peste un personaj.

La un moment dat, contorul va deveni suficient de mare pentru ca condiția buclei să devină falsă, iar funcția va returna rezultatul .

Să încercăm să apelăm funcția cu argumentul „cats”:

Const skipped = skip("pisici");

Lungimea „pisicilor” este 4. Chiar dacă indicii încep de la 0, lungimea este un număr real. „c” nu este 0 litere, este o literă. Prin urmare, lungimea „pisicilor” este 4, dar indexul ultimei litere este 3.

  1. 0 este mai mic de patru, deci introduceți bucla while
  2. concatenează un șir cu un caracter la indexul 0 - acesta este „c”
  3. măriți contorul cu 2
  4. 2 este mai mic decat 4, asa ca repeta
  5. a concatena un șir cu un caracter la indexul 2 este „t”. șirul a devenit acum „ct”
  6. măriți contorul cu 2
  7. 4 nu este mai mic de 4, așa că nu o repeta din nou
  8. returnează rezultatul - „ct”

Vă așteaptă un test și un exercițiu practic.

După ce am trecut prin matrice, acum putem înțelege ce este textul ca structură de date specifică a unui limbaj de programare: textul este un set de caractere sau un tablou ale cărui elemente sunt tipul de date caracter Chr. De exemplu, dacă textul nostru este format din 100 de caractere, atunci l-am putea declara după cum urmează: Type Text=rry of chr; În multe limbaje de programare, ele lucrează cu text ca o matrice de caractere, procesând fiecare caracter separat. Aceste mijloace combină, pe de o parte, conceptul de...


Distribuiți-vă munca pe rețelele sociale

Dacă această lucrare nu vă convine, în partea de jos a paginii există o listă cu lucrări similare. De asemenea, puteți utiliza butonul de căutare


Tip de date șir. Lucrul cu caractere și șiruri.

După ce am trecut peste matrice, acum putem înțelege ce este textul ca structură de date specifică a unui limbaj de programare: textul este un set de caractere, sau un tablou, ale cărui elemente sunt tipul de date caracter Char. De exemplu, dacă textul nostru este format din 100 de caractere, atunci l-am putea declara după cum urmează:

Tip

Text=matrice de caractere;

În multe limbaje de programare, textul este procesat ca o matrice de caractere, procesând fiecare caracter separat. Dar limbajul de programare TurboPascal oferă instrumente mai convenabile pentru lucrul cu textul decât alte limbi, permițând utilizatorului să efectueze operațiuni de bază asupra textului: combinarea de fraze, propoziții sau fragmente de text, ștergerea cuvintelor, calcularea lungimii textului, căutarea și inserarea unui anumit text. fragmentați într-o poziție dată și alte operațiuni direct folosind instrumentele, funcțiile și procedurile furnizate în limbajul însuși. Aceste instrumente combină, pe de o parte, conceptul de text ca o matrice de caractere și, pe de altă parte, vă permit să lucrați cu tot textul specificat utilizând un instrument special declarat.variabilă șir, ca și în cazul unei întregi structuri, a unei întregi părți.

Un tip de date șir este declarat folosind un cuvânt rezervat Snur scurt:

a: șnur scurt;

b: șir scurt;

Variabila a este o variabilă șir care este destinată introducerii și efectuării operațiunilor pe șiruri de caractere cu lungimea de până la 255 de caractere (de la 1 la 255). Octetul zero al unui șir stochează întotdeauna valoarea lungimii sale curente. Dacă un șir conține mai puțin de 255 de caractere, atunci octetul zero va conține codul binar de lungimea curentă și va fi imposibil să accesezi caractere goale cu numere care depășesc lungimea șirului. Lungimea curentă a șirului poate fi întotdeauna găsită folosind o funcție specială Lungime , despre care se va discuta mai târziu, sau accesând direct octetul lui zero.

Lungimea șirului b desemnat imediat în 80 de caractere. Șirul real poate fi mai mic decât această valoare, dar nu poate depăși 80 de caractere. Este logic să limităm un șir dacă știm că variabila noastră șir poate stoca oricare dintre valorile sale, fără a depăși niciodată o anumită dimensiune. De exemplu, dacă stochează un răspuns fără ambiguitate („da”, „nu” sau „nu știu”), atunci în acest caz este indicat, pentru a economisi memoria computerului, să se folosească o variabilă șir formată din caractere (pentru cea mai lungă frază „nu știu”: 6 litere și încă un spațiu).

Odată ce am creat variabile șir, acum li se pot atribui valori șir, indicate prin apostrofe, astfel:

a:=când au intrat elevii în birou;

a:=primavara BAL";

b:=se formeaza echipajul, domnule”;

b:= FOTBAL ;

a:=#4$& *&^;

b:=15478 564 22; jdjjk;

a:=2547;

b:=adevarat;

Trebuie să distingeți șirurile de numere și valori reale. De exemplu, cu linia A nu putem efectua nicio operaţie aritmetică deoarece a (2547) în acest caz doar un set de caractere, nu un număr. De asemenea, sensul b nu este o variabilă logică, ci doar cuvântul „adevărat”.

Când am inițializat variabile la începutul programului, le-am dat o valoare, de obicei 0. Șirurile sunt inițializate cu un operator gol‘’ . Această procedură scrie o valoare a lungimii șirului de 0 în octetul nul. Rețineți că scrierea unui spațiu și a unui șir nul sunt acțiuni diferite. Cu alte cuvinte, după operații a:= "; b:=; linia a va conține un spațiu și linia b va fi gol, fără caractere.

Pentru a introduce un șir de la tastatură, puteți utiliza operatorul obișnuit read() fără a organiza o buclă pe lungimea sa (spre deosebire de introducerea matricelor):

Citeste o);

readln(b);

Ieșirea liniilor de pe ecran este similară:

scrie o);

scrieln(b);

Caracterele unui șir pot fi accesate direct. În acest caz, șirul acționează ca o matrice:

a:=ы;

scrie (b);

În primul caz, al 10-lea caracter al liniei A ia valoarea literei " s ", iar în al doilea caz scoatem al 3-lea caracter al liniei b . Ai grijă doar: dacă liniile nu conțin aceste caractere (lungimea lor actuală va fi mai mică sau linia va fi goală), atunci programul va fi întrerupt din cauza unei erori, așa că oferiți diverse opțiuni și verificați întotdeauna lungimea curentă a liniei software(prin lungime)!

Operația de concatenare este aplicabilă șirurilor, în termeni numiți concatenare . Această operație combină mai multe linii într-una mare. Pentru a adăuga mai multe șiruri, trebuie să folosim operatorul obișnuit de adăugare „+”. Iată cum arată în exemple:

a:=Adăugare + rânduri; //a=Adăugarea de șiruri

a:=Adăugarea +primului +și+al doilea+ rând;

//a=adăugarea primei și a doua rânduri

De asemenea, puteți combina variabilele șir, de exemplu:

a:=a+b;

Pentru a lucra cu variabile șir în limbajul Pascal Sunt prevăzute următoarele proceduri și funcții speciale:

1. Funcția de lungime:

Lungime(e: șir): întreg;

Această funcție returnează lungimea curentă a șirului s într-o variabilă întreagă.

Iată un exemplu de utilizare a acestei funcții:

N: întreg;

A: șnur scurt;

ÎNCEPE

a:=1-a linie ;

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

Sfârşit.

2. Funcția Pos:

Pos(Substring, s:string): octet;

Funcția Pos returnează o valoare întreagă de tip Byte corespunzătoare indexului primului caracter al subșirului care apare în șirul s. Dacă subșirul nu este conținut în șirul s, atunci funcția returnează 0.

Exemplu:

n:=Pos(șir, A); //n=5; (valori luate din primul exemplu)

3. Funcția de copiere:

Copiere(e: șir; Index, Număr: întreg): șir;

Funcția Copiere copiază o parte din șirul s, începând cu caracterul cu număr de index, pentru numărul de caractere Count.

Exemplu:

B: șnur scurt;

ÎNCEPE

a := prima linie;

b:=Copy(a, 3, 5); //b conține pagina a-a

Sfârşit.

4. Funcția Concat:

Concat(s1; s2; …; sn): șir;

Această funcție concatenează mai multe șiruri de caractere prin efectuarea unei operații de concatenare pe argumentele sale. Această operație poate fi efectuată și folosind operatorul de adăugare „+”, așa cum am văzut mai sus.

5. Procedura Val:

Val(s: șir; Var v; Var Cod: întreg;);

șirul de numere, variabilă de tip vîntreg sau real

O procedură, spre deosebire de o funcție, nu returnează nicio valoare, ci pur și simplu își schimbă parametrii. În timp ce unei variabile i se poate atribui o valoare de funcție, o valoare de procedură nu poate fi atribuită.

Funcția Val returnează în variabilă v numărul găsit în șir. În acest caz, întreaga linie trebuie să conțină doar un număr. Altfel, dacă

conversia a eșuat, valoarea codului conține numărul poziției din linia în care a apărut o eroare în timpul conversiei, altfel returnează valoarea 0.

Exemplu:

A: șnur scurt;

V, m: întreg;

ÎNCEPE

a:=2356;

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

Sfârşit.

Procedura 6.Str:

Str(y; s: șir);

Variabila y este un număr aparținând unora dintre tipurile de date numerice.

Procedura Str convertește un număr într-un șir s.

Exemplu:

Str(10254, A); //linia a conține acum 10254

7. Procedura de inserare:

Insert(s1: șir; Var s2: șir; index: întreg);

Procedură Inserare inserează șirul s1 în șirul s2, începând de la poziție index . Dacă șirul rezultat s2 devine mai lung de 255 de caractere, atunci caracterele care nu sunt incluse la sfârșit sunt pur și simplu aruncate.

Exemplu:

S1, s2: șir scurt;

Ind:întreg;

ÎNCEPE

s1:=1- i ;

s2:= șir ;

Inserare (s1, s2, 7); //s2= linia 1

Sfârşit.

8. Procedura de ștergere:

Delete(Var s: șir; Index: întreg; Număr: întreg);

Procedura Ștergeți scoate dintr-un șir s partea sa pornind de la pozitie index si continuand pt numără elemente.

Exemplu:

A: șnur scurt;

P, m: întreg;

ÎNCEPE

a:=șir;

Delete(a, 2, 3); //liniaa a început să conţină ska

Sfârşit.

Exemple de programe pentru utilizarea tipului de date șir.

1) Scrieți un program care găsește numărul de litere „k” găsit în text.

programul Pr_27_28_1;

($APPTYPE CONSOLA)

utilizări

SysUtils;

A, a_salvare: șir;

s:octet;

Const bukva="k";

ÎNCEPE

Writeln("Vvedite text");

Readln(a); // introduceți text

a_salvare:=a; //textul în sine se va schimba, așa că salvăm o copie a acestuia

s:=0; //inițializarea contorului de litere „K” înregistrând inițiala

//valori

În timp ce Pos("k",a)>0 face //atâta timp cât „K” apare în text

ÎNCEPE

Delete(a,Pos("k",a),1); //eliminați litera „K” (pentru a găsi litere noi „K”)

s:=s+1; //și mărește contorul cu 1

Sfârşit;

Writeln("Textul dvs.: ",a_save, " soderjit ",s, " bukv "k""); // ieșire de testare și

Readln; //numărul de litere „K” găsite în el

Sfârşit.

2) Acum să vedem cum puteți evidenția unele cuvinte sau grupuri de cuvinte în text. Dacă putem folosi algoritmul programului pentru a determina unde se află cuvintele textului, vom putea efectua operațiunile necesare asupra acestor cuvinte și a textului în ansamblu (copiere, modificare, ștergere, adăugare de simboluri între cuvinte și multe alte operații). ).

Lungimea textului nostru poate fi determinată folosind funcția Length(s). Astfel, bucla, care va trece prin toate caracterele textului nostru, este scrisă după cum urmează (i variabilă de tip întreg, s textul nostru):

In timp ce eu

ÎNCEPE

Sfârşit;

Fiecare cuvânt din text se termină cu un anumit simbol, de exemplu, un spațiu, un punct, două puncte sau un fel de semn (semn de exclamare, semn de întrebare, ghilimele etc.). Pentru a ne simplifica sarcina, vom presupune că toate cuvintele din text sunt separate prin spații, iar textul în sine se termină cu un punct. După cum s-a spus în lecția despre tipul de date de caractere Char, fiecare caracter are propriul său caracter cod unic. O listă cu toate codurile este conținută în tabelul ASC2, în care codul de spațiu corespunde numărului 32. Pentru a accesa orice caracter, trebuie fie să specificați caracterul în sine în apostrofe, fie să specificați codul acestuia după semnul hash.# . Caracterul spațiu este un caracter care nu poate fi afișat, așa că accesăm acest caracter astfel:#32 .

Pentru a evidenția orice cuvânt din text, trebuie să găsim sfârșitul acestui cuvânt: un spațiu sau un punct (pentru ultimul cuvânt). Bucla care găsește fiecare cuvânt al textului este scrisă după cum urmează:

inach:=i;

în timp ce (S[i]<>#32) și (S[i]<>„.”) face

ÎNCEPE

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

Sfârşit;

Variabila I stochează numărul caracterului text curent, inach stochează numărul primului caracter al unui cuvânt (în raport cu sarcina noastră, un cuvânt poate fi considerat atât un număr, cât și orice set de caractere afișate). Variabil S conţine textul nostru, iar în Sf Cuvântul nostru evidențiat este format literă cu literă.

Dacă dorim să ștergem un cuvânt găsit, de exemplu, dacă acest cuvânt conține mai mult de 8 litere, trebuie să scriem următorul fragment de program:

inach:=i;

în timp ce (S[i]<>#32) și (S[i]<>„.”) face

ÎNCEPE

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

Sfârşit;

Dacă i>8 atunci

Delete(S, inach, i-1);

else inach:=inach+i-1;

Acum să scriem un program care va genera un nou text care să conțină text sursă numai cuvintele care încep și se termină cu aceeași literă:

programText2z;

($APPTYPE CONSOLA)

utilizări

SysUtils;

Var S,St: sfoară;

Z: 0..50;

Inach,i: octet;

B: char;

ÎNCEPE

Writeln("Scrie predlogenie");

Readln(S);

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

In timp ce eu do //buclă generală (până când tot textul este terminat)

ÎNCEPE

b:=S[i]; //selectați primul caracter

în timp ce (S[i]<>#32) și (S[i]<>".") face // bucla selectează un cuvânt

ÎNCEPE

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

Sfârşit;

Dacă b<>S atunci //dacă prima și ultima literă ale cuvântului nu sunt egale, atuncidelete(St,inach,z) //trebuie să ștergeți acest cuvânt din generat

//text

Altfel

începe inach:=inach+z+1; St:=St+#32; Sfârşit; //altfel puteți trece mai departe, //adăugând un spațiu după cuvânt

dacă S[i]<>"." Apoi inc(i); z:=0; //dacă nu a fost atins sfârșitul textului, apoi resetați contorul pentru numărul de caractere din cuvântul (z) și creșteți numărul caracterului curent cu 1

Sfârşit;

Writeln("Predlogenie necesară:");

Writeln(St); //se scoate textul rezultat

Readln;

Sfârşit.

Alte lucrări similare care vă pot interesa.vshm>

2764. Tip șir 22,07 KB
Reprezentarea memoriei Unele limbaje de programare impun restricții asupra lungime maximașiruri de caractere, dar majoritatea limbilor nu au astfel de restricții. Principalele probleme în reprezentarea mașinii a tipului de șir: șirurile pot avea o dimensiune destul de semnificativă, până la câteva zeci de megaocteți; Mărimea se modifică în timp, ceea ce face dificilă adăugarea și eliminarea caracterelor. Reprezentarea matricei de caractere În această abordare, șirurile sunt reprezentate ca o matrice de caractere; dimensiunea matricei este stocată într-un spațiu separat...
7176. ORGANIZAREA BAZEI DE DATE ȘI SISTEME DE MANAGEMENT BAZ DE DATE 116,07 KB
De exemplu ca Sistem informatic Vă puteți uita la orarul trenurilor sau la cartea de comenzi. Un atribut înregistrat pe orice suport de stocare se numește element de date, câmp de date sau pur și simplu câmp. La procesarea datelor, sunt adesea întâlnite obiecte de același tip cu aceleași proprietăți.
8335. Informații analogice și discrete. Medii de stocare a datelor. Operații cu date. Codificarea datelor. Sisteme numerice. Entropia și cantitatea de informații 227,54 KB
Sisteme numerice. Sisteme numerice Codificarea datelor a fost folosită de mult timp: codul Morse alfabetul semnalelor maritime Braille etc. În istoria omenirii, două sisteme numerice sunt cele mai cunoscute pentru codificarea numerelor: non-pozițional și pozițional. Ambele sisteme de numere sunt caracterizate de bază prin numărul de cifre diferite folosite pentru a scrie numere, de exemplu de la 0 la 9 m.
8334. Formule Shannon și Hartley. Calculul cantității de informații. Codificarea caracterelor, a datelor grafice și audio. Datele structurează formula lui Shannon 140,5 KB
Pentru a rezolva probleme inverse, când incertitudinea (H) sau cantitatea de informație obținută ca urmare a înlăturării acesteia (I) este cunoscută și este necesar să se determine câte alternative la fel de probabile corespund apariției acestei incertitudini, se folosește inversul Formula Hartley, care este derivată în conformitate cu definiția logaritmului și arată și mai simplă ...
10584. Lucrul la un dicționar 12,01 KB
Lucrul la vocabular este unul dintre scopurile și obiectivele principale în metodologia predării unei limbi străine și, în același timp, una dintre cele mai dificile probleme din mai multe motive, dintre care unul este natura dinamică a vocabularului. În ceea ce privește compoziția lexicală a modernului Limba germană atunci numărul de unități lexicale folosite de vorbitorii nativi în comunicarea de zi cu zi Stndrtsprche variază de la 300. Este destul de evident că stăpânirea unui astfel de volum este dificilă, dacă nu imposibilă, chiar și pentru un vorbitor nativ, ca să nu mai vorbim...
19204. Lucrul cu presa 31 KB
Furnizarea de materiale pentru presă, pe baza cărora jurnaliştii pregătesc apoi mesaje, reportaje, articole, eseuri; răspunzând la întrebările presei și oferind cuprinzătoare servicii de informare(oportunitati pentru jurnalisti de a colecta si procesa tehnic informatiile sursa), monitorizarea - urmarirea, analiza si evaluarea mesajelor de presa, radio si televiziune. Luarea de măsuri, dacă este necesar, pentru corectarea erorilor din mesaje și emiterea de respingeri.
3933. Lucrul cu matrice în PHP 8,92 KB
Inserarea eliminării și înlocuirii elementelor dintr-o matrice Funcția rry_push adaugă unul sau mai multe elemente la sfârșitul matricei, iar funcția rry_pop elimină ultimul element al matricei. Funcția rry_splice elimină lungimea elementelor de matrice începând cu offset offset și, dacă este specificat al treilea parametru, înlocuiește elementele șterse cu elemente de matrice.replcement, dacă parametrul de lungime nu este specificat, elimină elementele până la sfârșitul matricei. Funcția rry_unique elimină valorile duplicate dintr-o matrice, lăsând doar una dintre ele. Funcția rry_merge fuzionează...
3696. Lucrul cu preparate macroscopice 4,7 KB
Forma organului se păstrează sau nu, dacă nu, care este deformarea. Dimensiunea organului este mărită și redusă de aproximativ de câte ori. Culoarea organului de la suprafață.
3936. Lucrul cu sistemul de fișiere în PHP 9,24 KB
Fiecare fișier, pe lângă nume și conținut, are un set de parametri care îi determină caracteristicile (momentul creării, ID-ul proprietarului, numărul de link-uri către acest fișier V Sistemul de fișiereși așa mai departe.). Funcțiile de mai jos oferă acces la aceste informații
6343. ENERGIE, MUNCA, PUTERE 59,23 KB
Conceptele de energie și muncă sunt utilizate pe scară largă în viața de zi cu zi. Se știe că se lucrează din cauza rezervei de energie și, dimpotrivă, făcând muncă, puteți crește rezerva de energie în orice dispozitiv. De exemplu, lucrând la bobinarea unui ceas, creăm o rezervă de energie în primăvară, datorită căreia ceasul funcționează apoi. Conceptul de energie leagă împreună toate fenomenele naturale.

Continuăm să studiem simbolurile, am învățat elementele de bază, restul va fi rafinat în procesul de utilizare a instrumentelor care manipulează simbolurile și de a crea ilustrații cu acestea.

Dar aspectele psihologice sunt importante și pentru oamenii creativi. Ne bazăm constant pe ei atunci când studiem materiale noi. A sosit timpul pentru Robin Sharma. Indiferent dacă citiți acest autor sau nu, asta nu este important. Este important ca prevederile verificate psihologic merită citite și recitite! Când vei face asta singur? Răspunsul sună adesea în minte: „Niciodată!”

Și împreună ne vom gândi la toate!

Deci, „în om patru principii creative».

„Ce crede el? Robin Sharma, un maestru recunoscut al motivației și autor de bestselleruri internaționale, fiecare persoană are 4 începuturi creative, 4 surse creative, care sunt activate 100% predetermina totul rezultate ale vieții. Și de ei depinde locul pe care îl ocupăm în viață.”

În consecință, rezultatele muncii în orice activitate, inclusiv deșeurile. Să citim prevederile din punctul de vedere al succeselor noastre în apele uzate.

Gânduri

„Fiecare gând la care ne gândim gând determină fiecare individ rezultat, care, la rândul său, este o reflectare a gândurilor noastre. Fiecare obicei a început odată cu un gând.”
Dacă ai stăpânit Chirpici Ilustrator, du-te la canalizare, încearcă gândi numai pozitiv, In ciuda a tot! Lăudați-vă și sprijiniți-vă, succesul va veni, acest lucru a fost testat de mulți.
Și apoi primesc scrisori în care se gândesc că vânzările la site-urile de stoc au scăzut, ceea ce înseamnă că nu merită să mergi acolo! Scris de oameni care tocmai învață programul. Nu te intimida. Poate canalele de scurgere doar te așteaptă! Nimeni nu știe nimic, dar nu te hrănești cu negativitate!

Sentimente

"Al nostru sentimente De asemenea creativ. Dacă ne simțim grozavi, obținem rezultate grozave. Dacă suntem pasionați, pasiunea noastră va fi transmisă și altora. Dacă ne simțim groaznic, rezultatele noastre vor fi mai puțin decât stelare.”
Bucură-te de fiecare desen pe care îl faci, de fiecare slujbă acceptată, de fiecare vânzare, de fiecare cent care îți cade în buzunar! Amintește-ți că odată nu aveai asta, dar acum lucrurile s-au îmbunătățit! Nu îneca bucuria unui copil creativ cu gândurile tale despre bani și vânzări.

Cuvinte

„Uităm asta cuvinte avea imens cu forta. Cuvintele au puterea de a crea. Dacă numiți ceva tragedie, aceasta vă va predetermina reacția și toate atitudinile ulterioare.”
Vorbim sau scriem cuvinte cuiva. Așa că vorbește și scrie despre succesele tale. Privește succesul chiar și în lucrurile mărunte și nu-ți fie teamă să exagerezi. Acest lucru nu este laudă, nu poze, asta atrage succesul real în viața ta.

Acțiuni

„Fiecare dintre noi actiuni defini un specific rezultat. Cu cât acest principiu creativ este mai dezvoltat într-o persoană, cu cât acționăm mai activ și mai intenționat, cu atât obținem rezultate mai remarcabile.”
Am vorbit mult despre acțiuni. Un portofoliu mare nu îți va cădea doar pe cap ca mana din cer. Trebuie să lucrezi la el, să creezi, să inventezi, să cauți ceva nou. Nu este nevoie să-ți dai drumul, dar trebuie să te pregătești pentru o muncă minuțioasă zilnică. Și știi proverbele populare despre muncă încă din copilărie. Ideea lor principală este că munca este întotdeauna răsplătită!
Așa că îi mulțumesc lui Robin Sharma pentru minunata sa însumare a performanței umane. Totul în mâinile noastre!

În această lecție continuăm conversația despre simboluri.

Amintiți-vă că simbolul în Adobe Illustrator este un grafic care poate fi folosit de un număr nelimitat de ori într-un desen. Puteți folosi un simbol de câte ori doriți, dar dacă schimbați simbolul, toate modelele se vor schimba.

Vom lucra la asta astăzi. Dar mai întâi, să ne creăm propriul simbol. În ultimele trei lecții am folosit simboluri din bibliotecă. Și în procesul creativ trebuie să vă creați propriile simboluri. Simbolurile pot fi create din orice obiect, inclusiv trasee, forme pline cu gradient, plase de gradient și grupuri de obiecte.

Așadar, frunzele noastre de toamnă create în ultima lecție sunt bune, dar haideți să le punem deoparte, nu le-am desenat.

pliante

Să lăsăm numele desenului simbol4și curățați ecranul. Să ne uităm Podul Adobe.


Ilustrator desene școlare

Câte desene s-au acumulat deja în școala noastră, de la cele mai primitive până la cele terminate! Să luăm un desen pentru viitorul simbol ribki2 . Iată-le, primele noastre frumuseți!

Peşte

Selectați-l pe cel verde dintre ele și încadrați-l într-un dreptunghi general folosind săgeata neagră Instrument de selecție(V), copie ( Ctrl+C) și inserați ( Ctrl+V) în desen simbol4


Pește alese

Peștele este mare, să-l facem mai mic folosind Schimb pentru modificări uniforme și trageți-l în spațiul gol al panoului Simboluri(simboluri). Dar mai întâi, eliminați simbolurile inutile rămase din lucrul cu desenul anterior.
În caseta de dialog, introduceți numele noului simbol peşte(peşte). Și să ne dăm seama ce este în fereastră.

Fereastra parametrilor simbolului

În caseta de dialog Simbol Opțiuni(parametri simbol) se dă o notă că în program Ilustrator nu există diferențe între tipurile de caractere Film Clamă(video) și Grafic(Arte grafice). Deci, să nu ne facem griji cu privire la valoarea parametrului Export Tip(tip).
Să fim atenți Simbol Tip(tip de caracter). Funcția implicită este Dinamic Simbol(simbol dinamic). Această caracteristică permite personajelor să-și păstreze forma generală, dar aspect alte mostre de simbol se pot schimba dinamic. Când schimbați forma principală, modelele de caractere se schimbă și ele, dar sunt salvate și alte modificări. L-am folosit tot timpul Dinamic Simbol(simbol dinamic). În paletă Simboluri(simboluri) Simbolurile dinamice sunt afișate cu un „+” în colțul din dreapta jos al pictogramei. Și am văzut asta de mai multe ori, acum vom ști! Dar la crearea personaje dinamice Nu trebuie să adăugați text, imagini plasate sau obiecte plasate. Să ne amintim!
Static Simbol(simbol static) vorbește de la sine. El nu se schimba.

Înregistrare– punctul de înregistrare a simbolului denotă originea coordonatelor pentru obiectul de definire a simbolului. Când creăm un simbol, putem alege unul dintre cele 8 puncte de înregistrare pe marginile simbolului sau un punct în centrul casetei de delimitare. Să lăsăm totul așa cum este! Punct în centru.
Permite Ghiduri pentru 9- Felie Scalare– activați ghidurile pentru scalarea în 9 fragmente. Vom ști ce este. Nu este atât de simplu aici, trebuie să înțelegi serios!

Caseta de selectare implicită se află pe o altă intrare.
Alinia la Pixel Grilă- aliniați la grila de pixeli. Vom cunoaște și asta, dar nu acum. Simbolurile aliniate la grila de pixeli rămân aliniate atunci când le mutați în tabloul de desen, atâta timp cât dimensiunea lor actuală nu se modifică. Să lăsăm această casetă bifată, am lucrat cu ea.

Bine. În panou Simboluri(simboluri) peștele nostru a apărut imediat ca simbol.

În mod implicit, graficul selectat devine o instanță a noului simbol. Dacă doriți să evitați această conversie, țineți apăsată tasta atunci când creați un nou simbol. Schimb.
Nu am ținut apăsată cheia Schimbși vreau să văd ce să fac în continuare.


Paleta de simboluri

A mai rămas o probă, este marcată cu un semn plus. Amintiți-vă, în primele lecții despre simboluri, astfel de plusuri au apărut atunci când am redus simbolurile date de program. În mod implicit, obiectul grafic selectat devine o instanță a noului simbol și nu avem nevoie de el.

Paleta de simboluri

Eliminați simbolul creat din panou Simboluri(simboluri). Dar mai întâi va fi un astfel de semn. Să trecem și prin această etapă. Va trebui să vă ștergeți personajele. Să vedem ce ne așteaptă!


Semn de avertizare

Unul sau mai multe simboluri sunt în uz și nu pot fi șterse până când instanțele lor sunt extinse sau șterse. – Unul sau mai multe caractere sunt în uz și nu pot fi șterse până când instanțele lor sunt extinse sau șterse.

La fel, nu veți putea șterge imediat un simbol inutil! Dacă alegem Șterge Instanțe(ștergeți instanțele), totul va dispărea: atât simbolul, cât și peștele. Alege Extinde Instanțe(extinde copii).


Pește evidențiat

Peștele este evidențiat cu roșu, dar simbolul a dispărut din paletă! Ne-am atins scopul! Să aruncăm o privire la paletă Straturi(straturi). Wow!

Paleta de straturi

Am întins paleta și este clar că peștele nostru s-a degrupat! Vom ști!

Să folosim ceva ajutor Ctrl+ G Să combinăm detaliile peștelui. Puteți încerca, dar fără a combina, peștele nu va fi târât în ​​paletă.
Mai trebuie să creăm un nou simbol. Aici apăsăm și ținem apăsată tasta Schimbîn timp ce trageți simbolul în paletă. De asemenea, dacă nu doriți să se deschidă o casetă de dialog atunci când creați un simbol Nou Simbol(simbol nou), apoi în timp ce creați un simbol, țineți butonul apăsat Alt. Ilustrator va da simbolului un nume implicit, de ex. Nou Simbol1 (simbol nou 1).

Practică și nu este atât de simplu!

Paleta de simboluri

Simbolul a apărut, dar peștele copiat poate fi șters! Nu vor fi probleme!

Acum să scoatem peștele din panou Simboluri(simboluri). Să-l pulverizăm și să vedem cum funcționează! De ce să nu trecem peste câteva instrumente familiare?! Aici sunteți deja experți! Incepe! Instrument Simbol Pulverizator Instrument(pulverizator simbol) și tot ce se află în spatele lui au fost stăpânite în lecțiile anterioare!


Pulverizare de caractere

Am târât odată peștele cu mâna și a durat mult, dar acum știm să facem mai repede și fără probleme. Și culoarea și transparența s-au schimbat și ele! Desigur, nu am încercat prea mult, dar peștii sunt diferiți. Stiu ca incerci! Bine făcut!

Utilizarea simbolurilor economisește timp și reduce semnificativ dimensiunea fișierului. Deoarece același simbol poate fi duplicat cu ușurință, nu trebuie să descărcați noi fișiere grele de fiecare dată când utilizați sau lucrați la un desen. Un set de simboluri multiplicate este un singur întreg; nu este nevoie să extindeți simbolurile.

De fapt, orice obiect, grup de obiecte sau imagine întreagă poate fi stocată ca simbol, indiferent dacă include elemente desenate, text, imagini încorporate sau o combinație a acestor elemente. Acest lucru este foarte convenabil, deoarece vă permite să vă extindeți biblioteca. Simboluri acele elemente grafice care sunt folosite în mod repetat într-o anumită operă.

Puteți edita un simbol schimbând obiectul grafic corespunzător. De asemenea, puteți redefini un simbol înlocuindu-l cu un nou grafic. Editarea și redefinirea unui simbol îi schimbă aspectul în paletă Simboluri(simboluri), precum și apariția tuturor mostrelor sale în tabloul de desen.

Trebuie să ne asigurăm de asta, o școală este o școală, ea pune bazele.
Să ne selectăm simbolurile. Faceți dublu clic pe selecție oriunde.


Reproducerea setului de caractere

Se pare că nimic nu s-a schimbat, cu excepția faptului că o dungă albastră a apărut în partea de sus și dreptunghiul general care ne evidenția simbolul înmulțit a dispărut.

Bară albastră în partea de sus

De asta ai nevoie! Să luăm cheia Altși cresc pești.
Făcând clic, dreptunghiul dimensional a apărut din nou, apăsat Altși a tras ușor noul pește deoparte.


Creșterea peștilor

Acum să le eliminăm de pe ecran trăgându-le pe pânză. Nu avem nevoie de toți peștii, vom folosi doar unul!


Pește pe pânză

Mi-a plăcut topul peștelui roșu. Poți alege oricare dintre ale tale. Dar cum să-l obții din setul de caractere? Acum vom afla!
Faceți dublu clic oriunde pe ecran pentru a elimina dunga albastră din partea de sus.


A eliminat dunga albastră

Să alegem un nou set de pești. Mutați paleta mai aproape de peștele selectat Simboluri(simboluri) și să ne uităm la una dintre funcțiile sale. Lucrăm pe pânză.


Ruperea conexiunii dintre simboluri

Pauză Legătură la Simbol– rupe legătura cu simbolul. Hai să facem clic pe el!
Toți peștii au devenit evidențiați. Conexiunea este întreruptă!


Conexiunea este întreruptă

S-au transformat în obiecte separate. Dar peștele era o unitate, nu uitați! Să eliminăm selecția, să degrupăm setul de pești selectați, să selectăm unul care este necesar și să ștergem restul.

Pește alese

Mai avem un singur peste! Să-l extindem și să schimbăm ceva despre el trăgându-l pe ecran din pânză.

Un set de simboluri și un pește separat

Peștii din set nu interferează. Sunt toți împreună! Vom schimba acest pește. Să-i dăm înapoi ochii ei normali. Să folosim din nou un truc nou! Selectați peștele, faceți dublu clic pe ecran, acesta va deveni abia vizibil, acum selectați ochiul și schimbați-i calm culoarea. Convenabil și rapid. Modul de izolare este activat dacă există o bară albastră în partea de sus!


Modul de izolare

Faceți dublu clic pe ecran și peștele va reveni la culoare. Și ochiul a devenit diferit!


Peștele are un ochi nou

O tehnică foarte necesară, o vom folosi din nou astăzi. Ajută nu numai atunci când lucrați cu simboluri, ci și cu alte obiecte.

Am menționat-o pe scurt când am studiat culoarea. Dar numai în treacăt. Este timpul să vorbim despre asta mai detaliat.
Modul de izolare (pe ecran apare o bară albastră) izolează grupurile și straturile subiacente, astfel încât să puteți selecta și edita cu ușurință obiectele și părțile fără a le degrupa. Nu este necesar în acest moment obiectele devin estompate și blocate. Putem schimba liber doar obiectele selectate. Ai făcut asta singur cu ochiul de pește.
Pentru a trece la modul de izolare, trebuie să evidențiați obiectul cu o săgeată neagră Instrument de selecție(V) și apăsați butonul Izola Selectat Obiect(izolați obiectul selectat) în panou Control(Control). Aceasta este o altă modalitate de a intra în modul.


Butonul modului de izolare

Această pictogramă de pe panou Control(control) vorbește despre pornire acest mod. Încă nu am dat clic pe el! Să aruncăm o privire mai atentă!

Butonul modului de izolare

Hai să facem clic pe el și să aruncăm o privire.


Modul de izolare și paleta Straturi

Modul de izolare este activat, în panou Straturi(straturi) o vedem. Peștele este grupat, iar eu i-am ales ușor corpul, cu care vreau să lucrez. Se decolorează un set de pești, se izolează.
Nu trebuie să porniți paleta Straturi(straturi). Program Adobe IllustratorCCîn mai multe locuri ne avertizează ce au făcut. Trebuie doar să știi locurile!


Bara mod de izolare gri

În partea de sus a ferestrei documentului, într-o bară gri, scrie Strat1 (stratul 1) și < grup> (grup). Programul ne arată că am izolat un grup de obiecte situate pe un strat Strat1 (stratul 1). Puteți ieși din modul de izolare făcând dublu clic în afara obiectelor.
Dacă te uiți cu atenție, vei observa că totul este marcat clar pe panoul gri pe care îl izolezi. Dar momentan, peștele meu nu s-a decolorat. Nu-ți face griji, se întâmplă! Vom ști! Ne vom face singuri, totul se va rezolva fără a ne degrupa! Modul funcționează!


Modul de izolare

Vreau să schimb coada peștelui. Încep să mă schimb!


Coada de pește modificată

Creion Instrument creion(N) și netezire Instrument neted Am făcut o coadă nouă pentru pește. Nu m-am străduit foarte mult, te descurci mai bine, dar există o probă! Acum „oasele” nu sunt potrivite, vom încerca să facem ceva cu ele fără a părăsi modul de izolare.

S-au schimbat oasele cozii

Am copiat „oasele”, le-am desfășurat, le-am ajustat la noua coadă și am schimbat culoarea celei de jos. Cred că ai făcut-o și mai bine. Totul este familiar! Nu explic nimic!

Să ne uităm la peștii noștri și să ieșim din modul de izolare. Toți peștii au căpătat imediat culoare!

Fără modul de izolare

Iată un set de simboluri și un pește nou. Puteți crea un simbol nou. Să începem!
Mai întâi, să facem peștele mai mic folosind cheia Schimb, evidențiind-o.


Set de simboluri și pește redus

Iată setul nostru și în colțul din dreapta jos este un pește nou. Selectați-l din nou ținând apăsată tasta Schimb, faceți clic pe pictogramă Nou Simbol(simbol nou), va apărea o casetă de dialog Simbol Opțiuni(parametri simbol), obținem un simbol!


Creați un nou simbol

Nu am numit simbolul, programul și-a dat numele.
Bine.


A apărut un nou simbol

A apărut un nou simbol dinamic! Nu are niciun plus la peste, se poate scoate! Dar haideți să o mutăm pe pânză, în cazul în care ne este la îndemână!


Pulverizarea unui nou simbol

Ne place să ne distrăm! Faceți clic pe noul simbol și luați Simbol Pulverizator Instrument(simbol pulverizator) si sa vedem ce am facut!

Ne-am pierdut inimile! De ce să nu te bucuri de posibilități! Un banc de pești într-o clipă! Copilul creativ este încântat!

Cheie Ștergeștergeți acest set trecând la săgeata neagră Instrument de selecție(V), hai să creăm altul! Să fim liniștiți, că altfel am vrut să umplem toată zona de editare cu pești noi de bucurie! Este ușor și rapid!


Pește simbol nou

Să fie așa ceva! Sunteți liber în plasarea noilor pești, nu uitați de instrumentele de gestionare a simbolurilor pe care le-ați învățat! Nu te poți descurca fără ele! Știi totul, nu o să repet!

Să mutăm noul nostru set pe cel existent. Nu se unesc, asta se vede din paletă


Două seturi de caractere

Avem două seturi de personaje. Nu este atât de ușor să le combinați. Cel mai simplu mod este să rupeți conexiunea în seturi, să le separați într-un grup, să le extindeți după cum este necesar, să le mutați, să le distribuiți frumos și apoi să le combinați și să creați un nou simbol! Sa incercam! Poți sa faci asta!


Crearea celui de-al treilea personaj

Privind paleta Straturi(straturi).


Simbol nouîn paleta Straturi

Există un simbol nou în paletă, cu excepția peștelui singuratic. Acesta nu este un set, acesta este un personaj! Să o mutăm pe pânza unde se află peștele și să ștergem tabla de artă.


Simbol nou și pește pe pânză

Îl putem șterge oricând. Sunt atât de multe lucruri și acestea sunt două obiecte. Simbolul este selectat și peștele nu este selectat.
Tabla de artă este curată! Acum să revenim la Lecția nr. 58, voi cita un fragment din el:

„Există situații în care, după crearea unui set de personaje, trebuie să mai adaugi alte câteva, ar trebui să a evidentia acest grup intensifica instrument Pulverizator simbol(simboluri de pulverizare) și din nou începe să „pulverizezi” simboluri. Toți se vor uni într-unul singur.”

Pe o placă de artă curată, să facem exact asta! Știi totul, acționează singur!


Pulverizare de caractere

Iată noul set de caractere Simbol A stabilit. Poate fi editat, dar acest lucru este la discreția dvs. Noul simbol care este pe pânză este foarte greu, nu îl voi pulveriza. Și tu decizi singur.
Voi trage pur și simplu atât simbolul, cât și peștele pe planșa de grafică de pe pânză. În paletă Straturi(straturi) totul va rămâne la fel, dar pe ecran va fi diferit. Dar ne dăm seama!


Paletele de simboluri și straturi pe tabloul de desen

Am mărit peștele singuratic. Să fie vizibil!

Și acum voi activa un alt mod, l-am folosit și o dată.

Modul contururi

Acesta este modul Contur(contururi). Se deschide în bara de meniu, VedereContur(vedere – contururi). Și ce vedem? E cumva gol!

Pe ecran sunt contururile unui pește singuratic mărit și contururile unui nou simbol. Din setul combinat doar cadrul! Asta sunt simbolurile! Nu supraîncarcă desenul! Merită să le folosiți.
Să ne întoarcem. Vedereprevizualizare(vedere – ilustrare).

Este mai ușor să utilizați tastele rapide: Ctrl+ Y. Incearca-l!


Ecran în modul normal

Nu am ajuns cu o „capodopera” specială, dar să terminăm. Stiu ca a ta e mai frumoasa! Ești mereu grozav! Sunt mândru!
Nu prea obosit! Abilități perfecționate!

Dar destul! Să ne relaxăm! Întoarce-te!
Salvează ceea ce desenezi, consolidează ceea ce înveți!


Această pagină a fost afișată de 1343 ori.

Lucrul cu șiruri și caractere

Procesarea textului este una dintre cele mai comune sarcini de programare. Dacă trebuie să procesați orice date text, atunci pur și simplu nu vă puteți lipsi de cunoașterea materialului care va fi prezentat mai jos. Mai ales dacă datele au fost generate nu de dvs. personal, ci de unii program terță parte sau o altă persoană.

Simboluri

Un caracter este o unitate de text. Aceasta este o literă, un număr, un fel de semn. Tabelul de coduri de caractere este format din 256 de poziții, adică fiecare caracter are propriul cod unic de la 0 la 255. Un caracter cu un anumit cod N se scrie astfel: #N. Exact așa sunt indicate simbolurile în codul programului. Deoarece codul simbolului este un număr nu mai mare de 255, este evident că simbolul ocupă 1 octet în memorie. După cum știți, nu există nicio dimensiune mai mică de un octet. Mai exact, există - este un bit, dar nu putem lucra cu biți într-un program: un octet este unitatea minimă. Puteți vizualiza tabelul cu simboluri și codurile acestora folosind utilitate standard„Tabelul de caractere” inclus în Windows (comanda rapidă se află în meniul Start - Programe - Accesorii - Instrumente de sistem). Dar foarte curând vom scrie noi înșine ceva asemănător.

Siruri de caractere

Un șir, cunoscut și ca text, este un set de caractere, orice succesiune a acestora. În consecință, un caracter este și un șir, de asemenea text. Șir de text are o anumită lungime. Lungimea unui șir este numărul de caractere pe care le conține. Dacă un caracter ocupă 1 octet, atunci un șir de N caractere ocupă N octeți.

Există și alte tabele de coduri în care 1 caracter este reprezentat nu de un octet, ci de doi. Acesta este Unicode. Tabelul Unicode conține caractere din toate limbile lumii. Din păcate, lucrul cu Unicode este destul de dificil, iar suportul său este până acum doar local. Delphi nu oferă capabilități Unicode. Partea software da, dar aici sunt elementele vizuale – forme, butoane etc. nu poate afișa text în format Unicode. Să sperăm că un astfel de sprijin va apărea în viitorul apropiat. 2 octeți se mai numesc și cuvânt. De aici și numele tipului de date numerice corespunzător - Word (un număr care ocupă 2 octeți în memorie, valori de la 0 la 65535). Numărul de „celule” din tabelul Unicode este 65536 și este suficient pentru a stoca toate limbile lumii. Dacă decideți că „1 octet - 256 de valori, apoi 2 octeți - 2 * 256 = 512 de valori”, vă sfătuiesc să vă amintiți sistemul binar și principiul stocării datelor într-un computer.

Tipuri de date

Să trecem direct la programare. Există tipuri de date corespunzătoare pentru lucrul cu caractere și șiruri de caractere:

· Char - un caracter (adică 1 octet);

· String - șir de caractere, text (N octeți).

Oficial, șirurile pot conține doar 255 de caractere, dar în Delphi puteți scrie mult mai mult pe șir. Pentru a stoca texte mari și texte cu caractere speciale, există tipuri speciale de date AnsiString și WideString (cel din urmă, apropo, este de doi octeți, adică pentru Unicode).

Pentru a specifica valorile textului în Pascal, se folosesc ghilimele simple (nu ghilimele duble!). Acestea. Când doriți să atribuiți o valoare unei variabile șir, ar trebui să procedați astfel:

Caracterele sunt specificate în același mod, doar că există un singur caracter în ghilimele.

Dacă doriți să limitați strict lungimea textului stocat într-o variabilă șir, puteți proceda astfel:

Deoarece fiecare linie este o secvență de caractere, fiecare caracter are propriul său număr de serie. În Pascal, numerotarea caracterelor în rânduri începe de la 1. I.e. în șirul „ABC” caracterul „A” este primul, „B” este al doilea etc.

Numărul de serie al unui personaj dintr-o linie nu a fost inventat întâmplător, deoarece prin aceste numere, indici, se realizează acțiunile pe linii. Puteți obține orice caracter dintr-un șir specificând numărul acestuia în paranteza patrata lângă numele variabilei. De exemplu:

var s: șir; c:char; ... s:="Bună ziua!"; c:=s; //c = "e"

Puțin mai târziu, când studiem tablourile, va deveni clar că un șir este o matrice de caractere. Aceasta implică forma de adresare a simbolurilor individuale.

Procesarea șirurilor

Să trecem la funcțiile și procedurile de procesare a șirurilor.

Lungimea unui șir poate fi găsită folosind funcția Length(). Funcția preia un singur parametru - un șir și returnează lungimea acestuia. Exemplu:

var Str: String; L: întreg; ( ... ) Str:="Bună ziua!"; L:=Lungime(Str); //L = 6

Găsirea unui subșir într-un șir

O sarcină inerentă este de a găsi un subșir într-un șir. Acestea. problema se formulează astfel: există un şir S1. Determinați din ce poziție intră șirul S2 în el. Este imposibil să ne imaginăm vreo prelucrare fără a efectua această operație.

Deci, pentru o astfel de constatare există o funcție Pos(). Funcția ia doi parametri: primul este subșirul care trebuie găsit, al doilea este șirul în care se caută. Căutarea se efectuează ținând cont de cazul caracterelor. Dacă funcția găsește o apariție a unui subșir într-un șir, returnează numărul de poziție al primei sale apariții. Dacă nu se găsește nicio intrare, funcția returnează 0. Exemplu:

var Str1, Str2: String; P: întreg;( ... ) Str1:="Bună! Ce faci?"; Str2:="do"; P:=Pos(Str2, Str1); //P = 9

Eliminarea unei părți a unei linii

Puteți șterge o parte dintr-un șir folosind procedura Delete(). Trebuie remarcat faptul că aceasta este o procedură, nu o funcție - efectuează acțiuni direct asupra variabilei care îi este transmisă. Deci, primul parametru este o variabilă de tip șir din care fragmentul este șters (exact o variabilă! O anumită valoare nu este setată, deoarece procedura nu returnează un rezultat), al doilea parametru este numărul caracterului din care fragmentul trebuie șters, al treilea parametru este numărul de caractere pentru eliminare. Exemplu:

var Str1: String; ( ... ) Str1:="Bună ziua, lume!"; Delete(Str1, 6, 7); // Str1 = "Bună ziua!"

Trebuie remarcat faptul că dacă lungimea fragmentului șters se dovedește a fi mai multa cantitate caractere din linie, începând de la poziția specificată (adică „să trecem peste margine”), funcția va funcționa normal. Prin urmare, dacă trebuie să eliminați un fragment dintr-un șir de la un caracter până la sfârșit, nu trebuie să calculați numărul acestor caractere. Cel mai bun mod va stabili lungimea acestui șir în sine.

Iată un exemplu. Să presupunem că doriți să găsiți prima literă „a” dintr-un șir și să ștergeți partea din șir care o urmează. Să o facem în felul următor: găsim poziția literei în linie folosind funcția Pos() și ștergem fragmentul folosind funcția Delete().

var Str: String; ( ... ) Str:="Acesta este un test."; Delete(Str,Pos("a",Str),Length(Str));

Să încercăm să înlocuim valorile și să vedem ce este transmis funcției de ștergere. Prima literă „a” din rând se află la poziția 9. Lungimea întregii linii este de 15 caractere. Deci apelul funcției decurge astfel: Delete(Str,9,15). Se vede că de la litera „a” până la sfârșitul rândului sunt doar 7 caractere... Dar funcția își va face treaba, în ciuda acestei diferențe. Rezultatul, desigur, va fi șirul „Acesta este”. Acest exemplu a arătat simultan o combinație de mai multe funcții.

Copierea (extragerea) unei părți dintr-un șir

O altă sarcină importantă este copierea unei părți a unui șir. De exemplu, extragerea cuvintelor individuale din text. Puteți selecta un fragment de linie prin eliminarea părților inutile, dar această metodă este incomodă. Funcția Copy() vă permite să copiați o parte specificată dintr-un șir. Funcția ia 3 parametri: text (șir) din care să copiați, numărul caracterului din care să copiați și numărul de caractere de copiat. Rezultatul funcției va fi un fragment de șir.

Exemplu: să presupunem că doriți să selectați primul cuvânt dintr-o propoziție (cuvintele sunt separate printr-un spațiu). Pe formular vom plasa Edit1 (TEdit), în care va fi introdusă propoziția. Operația se va efectua prin apăsarea unui buton. Avem:

În acest caz, un fragment de la început până la primul spațiu este copiat din șir. Numărul de caractere este considerat a fi cu unul mai puțin, deoarece în caz contrar se va copia și spațiul.

Inserarea unui subșir într-un șir

Dacă doriți să introduceți un alt șir într-un șir existent, puteți utiliza procedura Insert(). Primul parametru este linia de inserat, al doilea este o variabilă care conține linia în care doriți să o introduceți, al treilea este poziția (numărul caracterului) începând de la care va fi inserată linia. Exemplu:

procedura TForm2.Button1Click(Expeditor: TObject); var S: String; începe S:="1234567890"; Insert("000",S,3); ShowMessage(S) end;

În acest caz, rezultatul va fi șirul „1200034567890”.

Exemplu „mai serios”.

Exemplele de mai sus demonstrează doar principiul lucrului cu șiruri folosind funcțiile Length(), Pos(), Delete() și Copy(). Acum să rezolvăm o problemă mai complicată, care va necesita utilizarea combinată a acestor funcții.

Sarcină: împărțiți textul introdus în câmpul Memo în cuvinte și afișați-le în ListBox, câte unul pe rând. Cuvintele sunt separate unele de altele prin spații, puncte, virgule, semne de exclamare și semne de întrebare. În plus, afișați numărul total de cuvinte din text și cel mai lung dintre aceste cuvinte.

Așa e... Sarcina nu este deloc ușoară. În primul rând, ar trebui să realizați imediat că trebuie să utilizați bucle. Nu există nicio cale fără ele, deoarece nu știm ce text va fi transferat în program pentru procesare. În al doilea rând, cuvintele sunt separate prin simboluri diferite - acest lucru creează dificultăți suplimentare. Ei bine, hai să mergem în ordine.

Interfață: Memo1 (TMemo), Button1 (TButton), ListBox1 (TListBox), Label1, Label2 (TLabel).

Mai întâi, să transferăm textul introdus într-o variabilă. Pentru a prelua tot textul din Memo deodată, să ne întoarcem la proprietatea Lines.Text:

var Text: șir; începe Text:=Memo1.Lines.Text; Sfârşit;

Acum să trecem la procesare. Primul lucru pe care trebuie să-l faceți este să vă ocupați de caracterele delimitare. Cert este că astfel de simboluri pot veni cu ușurință într-un rând, deoarece după virgule, puncte și alte caractere există un spațiu. Puteți ocoli această dificultate astfel într-un mod simplu: înlocuiți toate caracterele de separare cu unul, de exemplu o virgulă. Pentru a face acest lucru, să trecem prin toate personajele și să facem înlocuirile necesare. Pentru a determina dacă un caracter este un delimitator, scriem toți delimitatorii într-o variabilă șir separată (constantă), apoi căutăm fiecare caracter din acest șir folosind funcția Pos(). Toate aceste înlocuiri vor fi făcute într-o variabilă, astfel încât textul original din Memo (adică pe ecran) să nu fie afectat. Cu toate acestea, pentru a verifica rezultatele intermediare ale lucrării, este logic să scoateți textul procesat undeva. De exemplu, către alt câmp Memo. Pentru a parcurge toate simbolurile, folosim bucla FOR, unde variabila va trece prin numerele de serie ale tuturor caracterelor, i.e. de la 1 la lungimea liniei de text:

procedura TForm1.Button1Click(Expeditor: TObject); const DelSym = ".,!?"; var Text: șir; i:întreg; dacă Pos(Text[i],DelSym) > 0 atunci Text[i]:=","; Memo2.Text:=Text; Sfârşit;

Acum trebuie să eliminăm interferența. În primul rând, primul caracter nu ar trebui să fie un delimitator, adică dacă primul caracter este o virgulă, acesta trebuie eliminat. Apoi, dacă există mai multe virgule la rând, acestea trebuie înlocuite cu una. În cele din urmă, pentru a procesa corect tot textul, ultimul caracter trebuie să fie o virgulă.

if Text = "," atunci Delete(Text,1,1); în timp ce Pos(",",Text) > dacă Text<>"," apoi Text:=Text+",";

Aici înlocuirea se face astfel: se organizează un ciclu în care se elimină una dintre virgule, dar asta se întâmplă atâta timp cât în ​​text sunt două virgule consecutive.

Ei bine, acum nu a mai rămas nimic de prisos în text - doar cuvinte separate prin virgulă. În primul rând, ne vom asigura că programul extrage primul cuvânt din text. Pentru a face acest lucru, vom găsi prima virgulă, vom copia cuvântul de la începutul textului în această virgulă și apoi vom șterge acest cuvânt din text împreună cu virgula. Ștergerea se face astfel încât să puteți apoi, după efectuarea aceleiași operații, să decupați următorul cuvânt.

var Cuvânt: șir; (...)

Acum, în variabila Cuvânt avem un cuvânt din text, iar în variabila Text avem restul textului. Cuvântul tăiat este acum adăugat la ListBox apelând ListBox.Items.Add(line_to_add).

Acum trebuie să organizăm o buclă care să ne permită să tăiem toate cuvintele din text, și nu doar primul. În acest caz, REPEAT este mai potrivit decât WHILE. Condiția ar trebui să fie Lungime (Text) = 0, adică terminați bucla când textul devine gol, adică când tăiem toate cuvintele din ea.

repeta Word:=Copy(Text,1,Pos(",",Text)-1); Șterge(Text,1,Lungime(Cuvânt)+1); ListBox1.Items.Add(Word); până la Lungime(Text) = 0;

Deci, momentan avem:

procedura TForm1.Button1Click(Expeditor: TObject); const DelSym = ".,!?"; var Text,Word: șir; i:întreg;începe Text:=Memo1.Lines.Text; pentru i:= 1 la Lungime(Text) do dacă Pos(Text[i],DelSym) > 0 atunci Text[i]:=","; if Text = "," atunci Delete(Text,1,1); în timp ce Pos(",",Text) > 0 face Delete(Text,Pos(",",Text),1); repeta Word:=Copy(Text,1,Pos(",",Text)-1); Șterge(Text,1,Lungime(Cuvânt)+1); ListBox1.Items.Add(Word); până la Lungime(Text) = 0; Sfârşit;

Dacă rulați programul acum, veți vedea că totul funcționează bine. Cu excepția unui singur lucru - au apărut niște linii goale la sfârșitul ListBox-ului... Se pune întrebarea: de unde au venit? Veți afla despre acest lucru în următoarea secțiune a lecției, dar deocamdată să implementăm ceea ce este necesar până la sfârșit.

Este foarte ușor să determinați numărul de cuvinte din text - nu trebuie să scrieți nimic din nou. Deoarece Avem cuvinte listate în ListBox; este suficient să aflați pur și simplu câte linii există - ListBox.Items.Count.

Acum trebuie să găsești cel mai lung dintre toate cuvintele. Algoritmul pentru găsirea numărului maxim este următorul: luăm primul dintre numere drept maxim. Apoi verificăm toate celelalte numere în acest fel: dacă numărul este mai mare decât cel scris în prezent ca maxim, facem acest număr maxim. În cazul nostru, trebuie să căutăm lungimea maximă a cuvântului. Pentru a face acest lucru, puteți adăuga cod într-o buclă de cuvinte tăiate din text sau puteți efectua o căutare după ce adăugați toate cuvintele în ListBox. Să o facem în al doilea mod: organizați o buclă prin liniile ListBox. Trebuie remarcat faptul că liniile sunt numerotate de la zero, nu de la unu! Vom stoca cel mai lung cuvânt într-o variabilă separată. S-ar părea că trebuie să stocăm și lungimea maximă a cuvântului, astfel încât să avem cu ce să comparăm... Dar nu este nevoie să creăm o variabilă separată pentru asta, deoarece putem afla oricând lungimea cuvântului. folosind funcția Length(). Deci, să spunem că primul cuvânt este cel mai lung...

De ce să accesați ListBox.Items.Count-1 și nu doar până la Count, înțelegeți-vă singur :-)

Acum totul este gata!

procedura TForm1.Button1Click(Expeditor: TObject); const DelSym = ".,!?"; var Text,Word,LongestWord: șir; i:întreg;începe Text:=Memo1.Lines.Text; pentru i:= 1 la Lungime(Text) do dacă Pos(Text[i],DelSym) > 0 atunci Text[i]:=","; if Text = "," atunci Delete(Text,1,1); în timp ce Pos(",",Text) > 0 face Delete(Text,Pos(",",Text),1); Text:=AnsiReplaceText(Text,Chr(13),""); Text:=AnsiReplaceText(Text,Chr(10),""); repeta Word:=Copy(Text,1,Pos(",",Text)-1); Șterge(Text,1,Lungime(Cuvânt)+1); ListBox1.Items.Add(Word); până la Lungime(Text) = 0; Label1.Caption:="Numărul de cuvinte din text: "+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Items; pentru i:= 1 la ListBox1.Items.Count-1 do dacă Length(ListBox1.Items[i]) > Length(LongestWord) atunci LongestWord:=ListBox1.Items[i]; Label2.Caption:="Cel mai lung cuvânt: "+LongestWord+" ("+IntToStr(Length(LongestWord))+" litere)"; Sfârşit;

Lucrul cu simboluri

De fapt, lucrul cu simboluri se reduce la utilizarea a două funcții principale - Ord() și Chr(). Ne-am întâlnit deja cu ei. Funcția Ord() returnează codul caracterului specificat, iar funcția Chr(), dimpotrivă, returnează caracterul cu codul specificat.

Vă amintiți „Tabelul simbolurilor”? Să o facem singuri!

Ieșirea va fi efectuată în TStringGrid. Această componentă este un tabel în care fiecare celulă conține o valoare text. Componenta se află în fila Suplimentar (în mod implicit vine imediat după Standard). În primul rând, să ne instalăm semnul. Avem nevoie doar de două coloane: într-una vom afișa codul simbolului, iar în cealaltă - simbolul în sine. Numărul de coloane este setat într-o proprietate cu numele logic ColCount. Setați-l la 2. În mod implicit, StringGrid are o coloană fixă ​​și un rând fix (sunt afișate cu gri). Nu avem nevoie de o coloană, dar un rând este foarte util, așa că setăm FixedCols = 0 și lăsăm FixedRows = 1.

Umplerea va fi efectuată direct la pornirea programului, adică. Nu vom instala niciun buton. Deci, să creăm un handler pentru evenimentul OnCreate() al formularului.

Numărul de caractere din tabelul de coduri este 256, plus antetul - un total de 257. Să setăm numărul de linii în mod programatic (deși îl puteți seta și în Object Inspector):

procedura TForm1.FormCreate(Sender: TObject);începe StringGrid1.RowCount:=257; Sfârşit;

Concluzia se face extrem de simplu - folosind o buclă. Pur și simplu parcurgem numerele de la 0 la 255 și afișăm simbolul corespunzător. Afișăm și inscripțiile din antet. Celulele StringGrid sunt accesate folosind proprietatea Cells: Cells[column_number, row_number]. Numerele coloanelor și rândurilor (începând de la zero) sunt indicate între paranteze drepte. Valorile sunt text.

Hai să lansăm și să aruncăm o privire.

Simboluri speciale

Dacă te uiți cu atenție la tabelul nostru, vei vedea că multe dintre simboluri apar ca pătrate. Nu, acestea nu sunt pictograme. Așa sunt afișate personajele care nu au afișaj vizual. Acestea. un simbol, de exemplu, cu codul 13 există, dar este invizibil. Aceste simboluri sunt folosite în scopuri suplimentare. De exemplu, caracterul #0 (adică caracterul cu codul 0) este adesea folosit pentru a indica absența unui caracter. Există și șiruri numite terminate nul - acestea sunt șiruri care se termină cu caracterul #0. Astfel de șiruri sunt folosite în limbajul C.
Apăsările de taste pot fi identificate prin coduri. De exemplu, tasta Enter are un cod de 13, Escape - 27, Space - 32, Tab - 9 etc.

Să adăugăm programului nostru posibilitatea de a afla codul oricărei chei. Pentru a face acest lucru, vom procesa evenimentul OnKeyPress() al formularului. Pentru ca acest mecanism să funcționeze, trebuie să setați KeyPreview = True pentru formular.

Aici afișăm o fereastră cu text. Evenimentul are o variabilă Key care stochează caracterul corespunzător tastei apăsate. Folosind funcția Ord() aflăm codul acestui caracter, iar apoi cu funcția IntToStr() convertim acest număr într-un șir.

Exemplu „mai serios” – continuare

Să revenim la exemplul nostru. Este timpul să ne dăm seama de unde provin rândurile goale din ListBox. Ideea este că nu sunt complet goale. Da, vizual sunt goale, dar de fapt fiecare dintre ele are câte 2 caractere speciale. Acestea sunt caractere cu codurile 13 și 10 (adică linia #13#10). În Windows, această secvență a acestor două caractere non-vizuale înseamnă sfârșitul liniei curente și începutul linie nouă. Acestea. În orice fișier și oriunde în general, rupturile de linie sunt două caractere. Și întregul text, în consecință, rămâne o secvență continuă de caractere. Aceste caractere pot (și chiar ar trebui) să fie folosite în cazurile în care trebuie să inserați o întrerupere de linie.

Să ducem programul nostru de căutare de cuvinte la concluzia sa logică. Deci, pentru a scăpa de liniile goale, trebuie să eliminăm caracterele #13 și #10 din text. Acest lucru se poate face folosind o buclă, similar cu modul în care am înlocuit două virgule cu una:

în timp ce Pos(Chr(13),Text) > 0 face Delete(Text,Pos(Chr(13),Text),1); în timp ce Pos(Chr(10),Text) > 0 face Delete(Text,Pos(Chr(10),Text),1);

Ei bine, acum programul este complet funcțional!

Funcții suplimentare pentru lucrul cu șiruri - modulul StrUtils

Modulul suplimentar StrUtils.pas conține funcții suplimentare pentru lucrul cu sfori. Printre aceste funcții există multe altele utile. Aici scurta descriere funcții utilizate frecvent:

PosEx(subșir, linie, indentare) - o funcție similară cu funcția Pos(), dar care caută dintr-o poziție specificată (adică indentată de la începutul liniei). De exemplu, dacă doriți să găsiți al doilea spațiu dintr-un șir, și nu primul, nu puteți face fără această funcție. Pentru a căuta manual al doilea spațiu, trebuie mai întâi să tăiați o parte din șirul original.

AnsiReplaceStr, AnsiReplaceText(șir, text_1, text_2) - funcțiile înlocuiesc șirul șir text_1 cu text_2 în șir. Funcțiile diferă doar prin aceea că primul efectuează înlocuirea ținând cont de cazul caracterelor, iar al doilea - fără el.

În programul nostru, putem folosi aceste funcții pentru a tăia caracterele #13 și #10 dintr-un șir, specificând un șir gol ca text de înlocuire. Iată o soluție într-o singură linie de cod:

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

DupeString(șir, număr_de_repetiții) - formează un șir format din șirul șir prin repetarea acestuia de un număr specificat de ori.

ReverseString(șir) - inversează șirul ("123" -> "321").

Merită menționate și funcțiile de conversie a registrului.

Majuscule(șir) - transformă un șir în majuscule; Minuscule(șir) - Convertește un șir în minuscule.

Pentru a converti caractere individuale, ar trebui să utilizați aceleași funcții.

Informații detaliate despre fiecare funcție pot fi obținute introducând numele acesteia oriunde în editorul de coduri, plasând cursorul pe acest nume (sau evidențiind-o) și apăsând F1.

Capturi de ecran ale programelor descrise în articol

Concluzie

A fost o lecție lungă. Așadar, astăzi ne-am familiarizat cu șirurile și personajele și am învățat cum să lucrăm cu ele. Tehnicile învățate sunt folosite aproape peste tot. Nu vă fie teamă să experimentați - îmbunătățiți-vă singur abilitățile de programare!