Activitatea 2

Un șir este o secvență de litere. Liniile literale au fost deja folosite de noi ca argumente pentru declarația de scriere atunci când studiem subiectul "Input-output". Acum ne vom cunoaște mai detaliat.







Tipul de date (șir) definește șiruri de caractere cu o lungime maximă de 255 de caractere. O variabilă de acest tip poate lua valori de lungime variabilă.

O variabilă de șir poate avea un atribut de lungime ce specifică lungimea sa maximă.

Lungimea curentă a unei variabile de șir poate fi determinată utilizând funcția Lungime încorporată. pentru o valoare de șir dată, această funcție returnează o valoare întregă indicând numărul de caractere din șir.

Expresiile în care operanzii sunt șiruri sunt numiți expresii de șir.

Două operațiuni sunt definite deasupra liniilor:

1. Operațiunea ambreiajului (+) este utilizată pentru a lega mai multe linii de unul.

2. Operațiile relației (=, <>,> <,>= <=) проводят сравнение двух строк слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строками всегда имеет булевой тип.

De exemplu. expresia "MS-DOS"<'MS-Dos' имеет значение True

Dacă corzile au lungimi diferite, dar caracterele din partea comună sunt aceleași, se consideră că linia mai scurtă este mai mică decât cea mai lungă.

Liniile sunt considerate egale. dacă acestea coincid în lungime și conțin aceleași simboluri în locurile corespunzătoare din linie.

Pentru a atribui o variabilă șir la rezultatul unei expresii de șir, utilizați operatorul de atribuire. Dacă valoarea variabilei după operatorul de atribuire depășește lungimea maximului permis în descrierea valorii, atunci toate simbolurile inutile din dreapta sunt aruncate.

Este permisă amestecarea într-o singură expresie a operanzilor unui șir și a unui tip de caracter.

Pentru caracterele individuale ale șirului, puteți face referire la numărul (indexul) acestui simbol în linie.

De exemplu, pentru a face referire la al treilea caracter al liniei SumStr, SumStr [3] trebuie scris. Intrarea SumStr [0] dă valoarea lungimii șirului curent.

Pentru programarea eficientă a algoritmilor de procesare a cuvintelor, este necesar să se înțeleagă structura internă a reprezentării șirurilor în memorie. Linile sunt implementate destul de simplu. Pentru a stoca variabilele de șir, este alocată memoria, o unitate este mai mare decât lungimea maximă a șirului. Octetul inițial al acestei memorii este rezervat pentru stocarea lungimii curente a șirului, următorii octeți pentru caracterele șirului propriu-zis. Deoarece elementele de șiruri sunt numerotate în mod standard cu întregi, începând cu unul, octetul cu lungimea șirului poate fi considerat elementul lui zero. Această structură de memorie permite accesul direct la elementele sale.

Este important să rețineți că puteți gestiona dinamic lungimea curentă a liniei. Următorul program prezintă schimbarea automată a lungimii unei linii după unele operații cu ea. Rețineți că valoarea comună (determinată de funcția standard SizeOf) dimensiunea memoriei alocate pentru stocarea șirului rămâne neschimbată în orice moment.

Atenție, vă rog. La rezolvarea problemelor cu variabilele de șir, este posibil să întâlniți o eroare subtilă comună, când după alocarea unor elemente dintr-un șir de caractere nu se modifică nici conținutul, nici lungimea șirului. O să ne dăm seama, cu ce este conectat.

Este foarte important să înțelegeți că atunci când accesați un anumit element dintr-un șir, valoarea sa de lungime curentă nu este verificată. Acest lucru este ilustrat de următorul program:

Atribuirea al cincilea rând de elemente de anumită valoare nu se schimba lungimea șirului, care susține afișarea conținutului său și lungimea (desigur, ea însăși misiune a avut loc de fapt, dar valoarea lungimii liniei curente în octetul zero, aceasta nu a avut nici un efect). Lucrul cu elemente de linie fără a ține cont de lungimea curentă și este o eroare de programator. Uitați-vă la următorul program:







pentru i: = 1 la 26 nu

Str [i]: = Chr (Ord ('A') + i-1);

Se presupune că acest program ar trebui să formeze un șir de 26 de caractere, conținutul cărora este secvența literelor mari ale alfabetului latin. Cu toate acestea, apelul la procedura writeln arată că conținutul variabilei Str este un șir de un caracter "A". Natura erorii perfecte este aceea că atribuirea valorilor elementelor unui șir nu este afectată de lungimea curentă care a fost setată la 1 la prima atribuire. Prin urmare, următorul program va fi corect:

pentru i: = 'A' la 'Z'

Operația de concatenare, ca toate operațiile standard care funcționează cu șiruri de caractere, spre deosebire de alocarea element-element, modifică lungimea șirului, ceea ce dă rezultatul corect. În plus, al doilea program funcționează direct cu simbolurile literelor. În cele din urmă, nu uitați să inițializați șirul înainte de al umple (prima instrucțiune a programului). În caz contrar, deoarece lungimea inițială a șirului este nedefinită, puteți obține un rezultat arbitrar; Nu trebuie să vă așteptați ca zero în octetul zero.

Pentru a procesa datele de șir, puteți utiliza procedurile și funcțiile încorporate:

1. Ștergeți (Str, Poz, N) - ștergeți caracterele N ale șirului Str, începând cu poziția Poz.

2. Inserați (What, Where, Poz) - introduceți linia Ce în linia Where, pornind de la Poz.

4. Concat (Str1, Str2, StrN) - efectuează concatenarea șirurilor în ordinea în care sunt indicate în lista parametrilor.

5. Poz (Ce, Unde) - detectează prima apariție a substringului Ce în linia Unde.

6. UpCase (Ch) - convertește litera mică în majusculă.

7. Str (Number, Stroka) - convertește un număr într-un șir.

8. Val (Stroka, Number, Code) - convertește un șir la un număr și transmite codul corect de conversie.

Sarcini pentru soluții independente

1. Cereți utilizatorilor numere, convertiți-le în șiruri, conectați-le în diferite combinații și ieșiți pe ecran. Nu uitați să puneți un spațiu între linii, la capătul punctului și începeți cu o literă mare.

2. Cereți utilizatorului mai multe linii și afișați lungimea acestora, rezultatul concatenării într-o anumită ordine și verificați dacă acestea pot fi convertite în numere.

3. Cereți utilizatorului un șir format din 5 caractere și verificați dacă acesta este un exemplu care adaugă două cifre unice, fiecare dintre ele fiind mai mică de cinci; dacă este, atunci calculați-l.

4. Cereți utilizatorului un șir constând din mai multe cuvinte separate de un spațiu și afișați-l pe ecran, astfel încât fiecare cuvânt să înceapă cu o nouă linie.

5. Cereți utilizatorului două linii și comparați lungimea acestora, primul și ultimul caracter al fiecărei linii și, de asemenea, afișați aceste linii cu o literă mare.

6. Scrieți un algoritm care verifică dacă cuvântul "suc" este o parte a cuvântului. Dacă răspunsul este negativ, adăugați cuvântul "nu" la începutul cuvântului. Dacă răspunsul este "da", verificați dacă este cuvântul "falcon".

7. Cereți utilizatorului o întrebare care necesită un răspuns neechivoc. Verificați corectitudinea acestuia. Dați utilizatorului câteva sugestii și încercări. Dacă a ghicit, cereți-i numele și expuneți o felicitare, care este o concatenare a mai multor rânduri, de două ori cu numele său.

8. Cereți utilizatorului un șir și un simbol și afișați un mesaj dacă există un caracter specificat de utilizator între caracterele șir. Dacă nu este, adăugați acest caracter la linia lui: la începutul sau la sfârșitul liniei.

9. Ghiciți puzzle-ul utilizatorului. Dați-i ocazia să încercați de trei ori să vă ghiciți puzzle-ul. Mențineți funcționarea programului cu utilizatorul. Aplicați concatenarea șirurilor introduse.

10. Faceți calculatorul să ghice la întâmplare litera alfabetei latine (ruse). Cereți utilizatorului să ghicească scrisoarea ascunsă, ajutându-l în felul următor. Dacă în următoarea încercare utilizatorul a introdus o literă mai apropiată de cea concepută decât cea anterioară, atunci afișează mesajul "Hot!". Pentru utilizator, și dacă mai departe - "Cooler!".

11. Faceți calculatorul să ghice la întâmplare litera alfabetei latine (ruse). Cereți utilizatorului să ghicească scrisoarea ascunsă, ajutându-l în felul următor. Dacă utilizatorul a introdus o literă în partea stângă a celui conceput, atunci afișează mesajul "Dreapta!". Pentru utilizator, și în dreapta - "La stânga!".

Sarcini pentru soluții suplimentare (la discreția profesorului)

1. Aflați care dintre literele (prima sau ultima) apare mai des în cuvântul dat.

2. Câte litere "y" într-un cuvânt sunt în locuri chiar?

3. În textul format din litere latine și terminând cu un punct, calculați numărul de vocale.

5. Trageți în a treia literă a cuvântului.

6. Ștergeți din cuvântul X acele litere care apar în cuvântul Z.

7. Scrieți un program care introduce un șir și îl transmite, scurtând de fiecare dată cu 1 caractere până când pe rând este lăsat un caracter.







Articole similare

Trimiteți-le prietenilor: