Munka szimbolikus objektumokkal az Adobe Illustratorban. String műveletek

05.11.2019 Érdekes

Szimbólum

A szimbólum egy jel. Bármelyik – betű, szám, számtani jel vagy hely, írásjelek vagy aláhúzás... És speciális karakterek is - új sor, BackSpace, dollárjel vagy százalék. A Delphi "karakter" típusát Char jelöli:

ShowMessage("Beírtad" + c);

ShowMessage("Áthelyezés újba" + c + "sor");

Már említettük, hogy a szimbólumok a szimbólumtáblázatból származnak ANSI vagy UNICODE. A legtöbb szimbólumot használják, néhány szimbólum segédszimbólum. vegye figyelembe, hogy nagybetű Az "A" és a kis "a" különböző szimbólumok! Ezenkívül a latin „s” és az orosz „s” különböző szimbólumok, bár olyan hasonlóak, mint két borsó egy hüvelyben.

A null karakter nem használatos, teljes nullaként van fenntartva. A programozók megtalálták ennek a karakternek méltó felhasználását, amikor szövegbeviteli eseményekben használják, amikor meg kell akadályozniuk, hogy a felhasználó bármilyen karaktert beírjon. Nem látjuk a szolgáltatás karaktereit a szövegben terület. A szolgáltatás szimbólumok , <Belép>, <Tab> és mások. A számítógép minden karaktert 0 és 255 közötti számként dolgoz fel szó A „HELLO” a gép memóriájában úgy fog kinézni, mint egy számkészlet: „207 208 200 194 197 210”.

Szimbólum funkciók

A gyakorlatban gyakran szükséges az egyes karakterek feldolgozása. A Char karaktertípusú változókhoz a következő módon lehet értékeket rendelni:

Mivel a számítógép számára a szimbólum egy szám, a szimbolikus adatok összehasonlíthatók egymással. Ebben az esetben az lesz a legnagyobb szimbólum, amelynek a szimbólumtáblázatban szereplő száma nagyobb. Például az "i" nagyobb lesz, mint az "a":

ha b > c then ShowMessage ("Igaz!")

else ShowMessage("Hamis!");

Amikor karakteres változókkal dolgozik, gyakran használják a Chr() és Ord() függvényeket. Funkció A Chr() egy számot vesz paraméterként, és a táblázatban szereplő számnak megfelelő karaktert adja vissza ANSI:

függvény Chr (X: Byte): Char;

Funkció Az Ord() pont az ellenkezőjét teszi, egy karaktert vesz paraméterként, és visszaadja azt a számot, amely alatt ez a karakter a táblázatban található ANSI:

függvény Sorrend (C: Char): Byte;

A karakterváltozók a következő függvényekkel használhatók:

Az első sorba az a változóba az „ÉS” szimbólumot írtuk, amely a szimbólumtáblázatban szereplő 200-as számnak felel meg. A második, egész számú változóba a 200-as számot írtuk, mivel az ezzel a számmal rendelkező szimbólum az a változó, amelyet paraméterként adtunk át. Végül a harmadik sorban a 102-es számot írtuk a teljes változóba, ez a szám az „f” szimbólumnak felel meg.


Vonal

A karakterlánc karakterek halmaza. Egy karakterlánc ábrázolható karakteradatok statikus vagy dinamikus tömbjeként. A karakterláncok típusait már tárgyaltuk a „Control construct if, for loop” részben: AnsiString – egy karakterlánc ANSI– szimbólumok, és WideString– UNICODE – karaktersorozat.

A String típus nem különálló típus, alapértelmezés szerint az AnsiString. Azonban újra beállítható WideString, bár ez nem szükséges. Tehát nyugodtan adjon meg karakterlánc-változókat Stringként:

s:= "Ez többsoros" + #13 + "karakterlánc";

Ahogy a példából is látszik, egy karakterlánc több részkarakterláncból is összeállítható, és akár egyedi karakterek is hozzáadhatók hozzá. A példában a 13-as karaktert adtuk hozzá, ez az új sorkarakter. A kód végrehajtásának eredményeként a ShowMessage() eljárás két sorra bontott üzenetet jelenít meg:

Ez többsoros

ShortString– egy rövid karakterlánc a ANSI– szimbólumok. 0 és 255 karakter között lehet. Ritkán használt. Valójában egy karakterlánc típust deklarálhat előre megadott mérettel:

Amint látja, a karakterláncot numerikus indexszel deklarálják, majdnem úgy sor. Tulajdonképpen, karakterláncés van sor karakteradatokat, és ugyanúgy kezelheti. Indexelés a sorban lévő karakterek eggyel kezdődnek, vagyis az 1. index a sor 1. karakterének felel meg.

string:= "Szia";

string := "a"; //megváltoztatta a sor 5. karakterét

ShowMessage(stroke); //eredmény: string "Privát"

Ez is egy húr, és a jövőben is foglalkoznunk kell vele. Ez a karakterlánc teljesen másképp működik, mint a String. A karakterlánc képviseli sor karakterek, amelyek nulla eleme tartalmazza a számot byte, e sor alatt allokálva. A változó típus PChar– ez nem maga a vonal, hanem mutató a sor elejére, vagyis változó egy karakterlánc első karakterére mutat a számítógép memóriájában. Ahol aztán PChar mennyiséget tárol byte Sorban?! És sehol! A szimbólumtáblázatról már beszéltünk ANSI, és megállapította, hogy a null karakter üres. Itt az utolsó karakter PChar pontosan ez a szimbólum tárolja, és számítógép, miután megtalálta, úgy ítéli meg, hogy a sornak vége.

Húrokkal PChar nagyon kényelmetlen vele dolgozni, de ezt meg kell tennünk, ha közvetlenül WinAPI függvényekkel dolgozunk. A WinAPI függvények a ablakok, nem Delphi. A Delphi azonban lehetővé teszi ezek használatát. Néha erre van szükség, például amikor a Delphi eszközök nem elegendőek a tervezett feladat elvégzéséhez. Az ilyen funkciók használata nem mindig kényelmes, de a processzor sokkal gyorsabban hajtja végre őket, mivel a operációs rendszer. Példa - funkció MessageBox().

Megszokta már az üzenetek megjelenítését a Delphi ShowMessage() funkciójával? Szokjon hozzá az új funkcióhoz!

Application.MessageBox("1. sor", "2. sor",[ gombok + ablak_típusa]);

· 1. sor – szöveget jelenít meg az ablakon belül.

· 2. sor – szöveg az ablak címében.

Ha nem adjuk meg a [buttons + window_type] értéket, akkor egy egyszerű ablak jelenik meg egy OK gombbal, mint a ShowMessage() függvényben.

Fontos jegyzetek

Állandóság

A JavaScriptben a karakterláncok megváltoztathatatlanok, más néven "változhatatlan". Ez azt jelenti, hogy bármilyen függvényt alkalmaz is rájuk, nem hajtanak végre helyben cserét (vagyis magát a karakterláncot nem változtatják meg). A karakterláncokra alkalmazott karakterlánc-függvények visszatérnek új vonal. Ez akkor is igaz, ha egy karakterlánc egy adott karakteréhez férünk hozzá.

Const str = "helló"; str.toUpperCase(); // HELLO console.log(str); // hello str.toUpperCase(); // H console.log(str); // hello str = "W"; console.log(str); // Helló

Lexikográfiai sorrend

A lexikográfiai sorrend más szóval ábécé sorrend. Ezt a sorrendet használják szótárak, telefonkönyvek, jegyzetfüzetek stb.

A JavaScript-ben a > és a karakterláncok összehasonlítása lehetséges< , и сравнение будет происходить именно лексикографически.

Ne feledje, a "8" nem szám, hanem karakterlánc.

Interpoláció

Kivéve egyetlen "" és dupla idézőjelek"", a modern JavaScript backticket tartalmaz:

``

Fordított kullancsokkal használhatja interpoláció, összefűzés helyett. Tessék, nézd:

Const név = "Alex"; const a = 10; const b = 12; console.log(`A neve $(név) volt és $(a + b) volt a kora`);

Ebben a kódban Alex volt a neve, és 22 éves volt. Bármely kifejezést elhelyezhet a $() belsejében.

Az interpoláció előnyösebb, mint az összefűzés. Egyáltalán nem tanácsoljuk az összefűzést. Íme néhány ok:

  • Ez a kód jobban elgondolkodtat, mert szintaktikailag a + inkább összeadás.
  • A gyenge gépelés miatt könnyen rossz eredményt kaphat. Az összefűzés hibákat okozhat.
  • Összefűzés használatakor lehetetlen bonyolult karakterláncokat fejben elemezni, és megérteni, hogyan épülnek fel.

Óra összefoglalója

  • A karakterlánc karaktersorozat
  • Az üres karakterlánc egyben karakterlánc is (nulla karakterből álló sorozat)
  • Egyszeres vagy dupla idézőjelek jelölik

Karakterlánc létrehozása konstanssal:

Const str1 = "Helló"; const str2 = "Helló";

Lehetőség van egy karakterláncon belül egyfajta idézőjel beillesztésére, és egy másik típusú idézőjelekkel körülvéve:

Const str1 = "Harrynak hívják, és ez tetszik neki"; const str2 = "Harrynak hívják, és ez tetszik neki";

Ha a karakterlánc azonos típusú idézőjeleket használ, akkor annak ilyennek kell lennie árnyékolt fordított perjel használatával \ :

Const str1 = "Annnak hívják, és ez tetszik neki"; const str2 = ""Ann"-nak hívják, és ez tetszik neki";

Ha egy karakterlánc fordított perjelet tartalmaz (pontosan olyan karakterként, amelyet a karakterláncban szeretne szerepeltetni), akkor azt egy másik fordított perjellel kell megszakítani:

Const str = "Ez egy fordított perjel \\ itt" // Ez egy fordított perjel \ itt

Vannak még vezérlő karakterek- különleges kombinációk, amelyek láthatatlan részleteket generálnak:

Const str = "Van egy lap \t, és itt \njön az új sor!" // Itt egy tabulátor és itt // jön az új sor!

\t egy tabulátor, \n egy újsor. További információ az árnyékolásról (angol).

Karakterlánc összefűzése

A vonalak összeragaszthatók. Ezt a folyamatot ún összefűzésés a + szimbólum határozza meg:

Const név = "Alex"; const életkor = 22; console.log("A neve " + név + " és a kora " + életkor); // Alexnek hívják és 22 éves

A sorok a megadott sorrendben lesznek összefűzve: "mos" + "tehén" → "moszkva" és "tehén" + "mos" → "cowmos"

Hozzáférés az egyes szimbólumokhoz

str[i] az str string i-edik karaktere, amely 0-val kezdődik. Például a "hexlet" a h, a "hexlet" pedig az x.

Itt van egy függvény, amely egy karakterláncot vesz fel, és ennek a karakterláncnak a másolatát adja vissza minden más betű levonása után. Például a „hexlet” „hxe” lesz.

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

str.length az str hossza, azaz a karakterek száma. Ez csak mennyiség, tehát mi Nem A számolást 0-tól kezdjük. Például „étel”.hossza 4.

Óra átirata

Emlékszel az első "hello, world" programodra?

Console.log("Hello, World!");

Mostanra már tudja, hogy itt egy függvényhívás történik, és a console.log függvény argumentumot vesz fel. Ebben az esetben az argumentum nem egy szám, hanem egy "karakterlánc". Ezt nevezzük szövegrészeknek a programozásban, mert olyanok, mint egy karakterláncon lévő betűsorozat.

A vonalak mindenhol ott vannak. Most olvasom a forgatókönyvet és szöveges fájl egy hosszú húr. Azon a webhelyen, ahol ezeket a videókat nézi, rengeteg szó található – mindegyik karakterlánc. Google munka a húrokra való emlékezés a keresés lényege. A számítógépen lévő fájlok és mappák nevük alapján azonosíthatók, amelyek szintén csak karakterláncok.

Csakúgy, mint a számokkal, létrehozhatunk egy állandót egy karakterláncból:

Const str = "Helló";

Használhatsz szimpla vagy dupla idézőjeleket, ez annyira nem számít, a lényeg, hogy a sor elején és végén ugyanazok legyenek.

Ha valódi idézőjeleket kell használnia egy karakterláncon belül, akkor használjon másik karaktert a létrehozásához. Például:

Const str = "Harrynak hívják, és ez tetszik neki"; ///Harrynak hívják, és ez tetszik neki

Itt szimpla idézőjeleket használunk egy karakterlánc megfogalmazására vagy elválasztására, majd lehetőségünk van dupla idézőjeleket tenni. Vagy fordítva:

Const str = "Harrynak hívják, és ez tetszik neki"; /// Harrynek hívják, és ez tetszik neki

Kívül kettős – belül egyszemélyes.

De mi van akkor, ha ez nem lehetséges, és ugyanolyan típusú idézőjeleket kell használnia mind a karakterlánc megfogalmazásához, mind a karakterláncon belül. Ha ezt kipróbálod

Const str = "Harrynak hívják, és ez tetszik neki";

akkor hibaüzenetet fog kapni, mert megszakadt a karakterlánca. A program ezen a ponton megszakad, mert van egy második, azonos típusú záró idézet, majd jön egy furcsa szó, ami semmit sem jelent, majd egy új sor. Ez helytelen JavaScript.

El kell magyaráznunk a JavaScript értelmezőnek, hogy néhány idézetet másképp kell értelmeznie. Ne jelentsen „sor eleje” vagy „sor vége”, hanem „idézőjelet”.

Ezt "árnyékolásnak" hívják. Adjon hozzá egy escape karaktert, egy fordított perjelet \ a karakter elé, és a karakter „elszigetelődik” a sajátos szerepétől, és szabályos karakterré válik a karakterláncban.

Const str = "Harrynak hívják, és ez tetszik neki"; const str2 = ""Ann"-nak hívják, és ez tetszik neki"; // Harrynek hívják, és tetszik neki // Annának hívják, és tetszik neki

Ez az escape karakter használható más speciális karakterek beszúrására egy karakterláncba.

Itt három pont van.

Először is: ha egy karakterláncban fordított perjelre van szükségünk, akkor azt egy másik fordított perjellel kell megszökni.

Másodszor: a fordított perjel-t nem egy „kiszabadult t-karakter”: nem kell kihagyni a „t”-t, a „t” nem speciális karakter; az egész backslash-t kialakítás különleges vezérlési sorrend- ez egyetlen lap, lényegében egy hosszú szóköz.

Harmadszor: a backslash-n egy másik escape szekvencia, amely reprezentálja új sor. Képzelje el magát úgy, mintha gépelés közben nyomja meg az Enter billentyűt. Ezért minden, ami ezután következik, új sorba kerül.

Most próbáljunk meg egy függvényt írni. Elfogad egy karakterláncot - egy nevet, és egy másik karakterláncot ad vissza - egy üdvözlést. Így kell működnie:

Const eredmény = greet("Sherlock"); // "Hát helló, Sherlock"

Ennek a függvénynek képesnek kell lennie arra, hogy valamilyen módon átvegye egy bejövő karakterláncot, és összefűzze egy másik karakterlánccal. Ezt a folyamatot "összefűzésnek" nevezik, és a JavaScriptben pluszjellel valósítják meg, mint a számok hozzáadásakor:

Const greet = (str) => ( return "Nos hello, " + str; )

Most egy másik példa. Ez a függvény egy karakterláncot vesz fel, és ugyanazt a karakterláncot adja vissza, de minden más betű nélkül. Például a „Kalifornia” „Clfri” lesz.

Const skip = (str) => ( legyen i = 0; eredmény = ""; while (i< str.length) { result = result + str[i]; i = i + 2; } return result; }

Ezek a szögletes zárójelek lehetővé teszik, hogy egyedi karaktereket kapjunk egy karakterláncból. Mint sok programozási folyamatnál, itt is 0-val kezdődik, nem 1-gyel. Tehát az str első karaktere str , a második az str és így tovább. Ezt a számot "indexnek" nevezik.

A skip függvény egy argumentumot vesz fel, két változót hoz létre - i-t a számlálóhoz és eredményt a teljes karakterlánchoz. A szám 0, mert az első karaktertől kell kezdenünk, és az eredmény egy üres karakterlánc - egyenként adjuk hozzá a karaktereket.

Ezt egy while ciklus követi, azzal a feltétellel, hogy "i kisebb, mint a karakterlánc hossza." A hossz azt jelenti, hogy "hány karakter". A "cats" karakterlánc hossza 4 - 4 karaktert, 4 betűt tartalmaz.

Amíg a számláló kisebb, mint a hossza, a kapott karakterláncot összefűzzük vagy összefűzzük az i indexű karakterrel. Ezután adjon hozzá 2-t a számlálóhoz. Kettőt, nem egyet, mert egy karaktert ki kell hagynunk.

Egy ponton a számláló elég nagy lesz ahhoz, hogy a hurokfeltétel hamissá váljon, és a függvény eredményt ad vissza.

Próbáljuk meg meghívni a függvényt a "cats" argumentummal:

Const kihagyva = skip("macskák");

A "macskák" hossza 4. Bár az indexek 0-tól kezdődnek, a hossza valós szám. A "c" nem 0 betű, hanem egy betű. Ezért a "macskák" hossza 4, de utolsó betűjének indexe 3.

  1. A 0 kisebb, mint négy, ezért írja be a while ciklust
  2. egy karakterlánc összefűzése 0 indexű karakterrel - ez "c"
  3. növelje a számlálót 2-vel
  4. A 2 kisebb, mint 4, ezért ismételje meg
  5. egy karakterlánc 2-es indexű karakterrel való összefűzése "t". a karakterlánc most "ct" lett
  6. növelje a számlálót 2-vel
  7. A 4 nem kevesebb, mint 4, ezért ne ismételje meg
  8. eredmény visszaadása - "ct"

Teszt és gyakorlati gyakorlat vár rád.

Miután végigmentünk a tömbökön, megérthetjük, hogy mi a szöveg, mint egy programozási nyelv sajátos adatszerkezete: a szöveg karakterek halmaza vagy tömb, amelynek elemei a Chr karakteres adattípus. Például, ha a szövegünk 100 karakterből áll, akkor a következőképpen deklarálhatjuk: Type Text=rry of chr; Sok programozási nyelvben a szöveggel karaktertömbként dolgoznak, és minden karaktert külön dolgoznak fel. Ezek az eszközök egyrészt egyesítik a...


Ossza meg munkáját a közösségi hálózatokon

Ha ez a munka nem felel meg Önnek, az oldal alján található a hasonló művek listája. Használhatja a kereső gombot is


Karakterlánc adattípus. Karakterekkel és karakterláncokkal való munka.

A tömbök áttekintése után most már megérthetjük, hogy mi a szöveg, mint egy programozási nyelv sajátos adatszerkezete: a szöveg karakterek halmaza, vagy egy tömb, amelynek elemei a Char karakteres adattípus. Például, ha a szövegünk 100 karakterből áll, akkor a következőképpen deklarálhatjuk:

típus

Szöveg=karakter tömb;

Számos programozási nyelvben a szöveget karaktertömbként dolgozzák fel, minden karaktert külön-külön dolgozva fel. A TurboPascal programozási nyelv azonban kényelmesebb eszközöket biztosít a szöveggel való munkavégzéshez, mint néhány más nyelv, lehetővé téve a felhasználó számára, hogy alapvető műveleteket hajtson végre a szövegen: kifejezések, mondatok vagy szövegrészletek kombinálása, szavak törlése, szöveg hosszának kiszámítása, keresés és egy bizonyos szöveg beszúrása. töredék egy adott pozícióba, és más műveletek közvetlenül a nyelvben biztosított eszközök, funkciók és eljárások segítségével. Ezek az eszközök egyrészt egyesítik a szöveg fogalmát, mint karakterek tömbjét, másrészt lehetővé teszik, hogy a speciálisan deklarált szövegekkel dolgozzon.karakterlánc változó, mint egy egész szerkezetnél, egy egész résznél.

Egy karakterlánc adattípust egy fenntartott szó használatával deklarálunk Rövid húr:

a: rövidzsinór;

b: rövid húr;

Változó a egy karakterlánc-változó, amely legfeljebb 255 karakter hosszúságú karakterláncok bevitelére és műveletek végrehajtására szolgál (az 1-től a 255-ig). A karakterlánc nulla bájtja mindig az aktuális hosszának értékét tárolja. Ha a karakterlánc 255 karakternél kevesebbet tartalmaz, akkor a nulla bájt az aktuális hosszúságú bináris kódot tartalmazza, és a karakterlánc hosszát meghaladó számokkal nem lehet üres karaktereket elérni. Az aktuális karakterlánchossz mindig megtalálható egy speciális függvény segítségével Hossz , amelyről később lesz szó, vagy közvetlenül elérve a nulla bájtját.

Húr hossza b azonnal kijelölve 80 karakterrel. A valódi karakterlánc lehet kisebb ennél az értéknél, de nem haladhatja meg a 80 karaktert. Akkor van értelme korlátozni egy karakterláncot, ha tudjuk, hogy a karakterlánc-változónk bármelyik értékét tárolhatja, de soha nem lép túl egy bizonyos méretet. Például, ha egy egyértelmű választ tárol ("igen", "nem" vagy "nem tudom"), akkor ebben az esetben a számítógép memóriájának megtakarítása érdekében célszerű egy karakterekből álló karakterlánc-változót használni. (a leghosszabb „nem tudom” kifejezésre: 6 betű és még egy szóköz).

Miután létrehoztuk a karakterlánc-változókat, most hozzárendelhetők karakterlánc-értékek, amelyeket aposztrófok jeleznek, például:

a:=amikor a diákok beléptek az irodába;

a:=rugó BAL";

b:=a legénység összeállt, uram";

b:= LABDARÚGÁS ;

a:=#4$& *&^;

b:=15478 564 22; jdjjk;

a:=2547;

b:=igaz;

Meg kell különböztetnie a karakterláncokat a valós számoktól és értékektől. Például a vonallal a nem végezhetünk számtani műveleteket, mert a (2547) ebben az esetben csak egy karakterkészlet, nem egy szám. A jelentését is b nem logikai változó, hanem csak az „igaz” szó.

Amikor a program elején inicializáltuk a változókat, adtunk nekik valamilyen értéket, általában 0-t. A karakterláncok inicializálása üres operátorral történik‘’ . Ez az eljárás 0 karakterlánchosszúságú értéket ír a nullbájtba. Vegye figyelembe, hogy a szóköz és a null karakterlánc írása különböző műveletek. Vagyis a műtétek után a:= "; b:=; a. sor tartalmaz egy szóközt és egy sort b üres lesz, nem tartalmaz karaktereket.

Ha a billentyűzetről szeretne beírni egy karakterláncot, használhatja a szokásos read() operátort anélkül, hogy a hossza mentén hurkot rendezne (ellentétben a tömbök bevitelével):

olvasni egy);

readln(b);

A képernyőn megjelenő sorok kimenete hasonló:

írj egy);

writeln(b);

Egy karakterlánc karakterei közvetlenül elérhetők. Ebben az esetben a karakterlánc tömbként működik:

a:=ы;

ír(b);

Az első esetben a sor 10. karaktere a felveszi a "betű értékét" s ", a második esetben pedig a sor 3. karakterét adjuk ki b . Csak óvatosan: ha a sorok nem tartalmazzák ezeket a karaktereket (az aktuális hosszuk kisebb lesz, vagy üres lesz a sor), akkor a program hiba miatt megszakad, ezért adjon meg különféle lehetőségeket és mindig ellenőrizze az aktuális sorhosszt szoftver(a hosszan keresztül)!

Az összefűzés művelete karakterláncokra alkalmazható, az únösszefűzés . Ez a művelet több sort egyesít egyetlen nagy sorba. Több karakterlánc hozzáadásához a szokásos "+" hozzáadási operátort kell használnunk. Így néz ki a példákban:

a:=Hozzáadás + sorok; //a=Stringek hozzáadása

a:=+első +és+második+ sor hozzáadása;

//a=az első és a második sor összeadása

Magukat a karakterlánc-változókat is kombinálhatja, például:

a:=a+b;

String változókkal való munkavégzés Pascal nyelv A következő speciális eljárások és funkciók állnak rendelkezésre:

1. Hosszúság függvény:

Hossz(ok: karakterlánc): egész szám;

Ez a függvény az s karakterlánc aktuális hosszát adja vissza egy egész változóba.

Íme egy példa a függvény használatára:

N: egész szám;

A: rövid húr;

Kezdődik

a:=1. sor ;

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

Vége.

2. Pos függvény:

Pos(Substring, s:string): bájt;

A Pos függvény egy Byte típusú egész számot ad vissza, amely megfelel az s karakterláncban megjelenő részstring első karakterének indexének. Ha az alkarakterláncot nem tartalmazza az s karakterlánc, akkor a függvény 0-t ad vissza.

Példa:

n:=Pos(karakterlánc, a) //n=5; (az értékek az első példából származnak)

3. Másolás funkció:

Copy(s: string; Index, Count: integer): string;

A Másolás funkció az s karakterlánc egy részét, az indexszámú karakterrel kezdve, a Count karakterek számához másolja.

Példa:

B: rövid húr;

Kezdődik

a := 1. sor;

b:=Másolás(a, 3, 5); //b a th oldalt tartalmazza

Vége.

4. Concat függvény:

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

Ez a függvény több karakterláncot fűz össze úgy, hogy az argumentumain összefűzési műveletet hajt végre. Ezt a műveletet a „+” addíciós operátor használatával is végrehajthatjuk, amint azt fent láttuk.

5. Val eljárás:

Val(s: string; Var v; Var Code: integer;);

s számsor, v típusú változó egész vagy valós

Az eljárás a függvényekkel ellentétben nem ad vissza semmilyen értéket, hanem egyszerűen megváltoztatja a paramétereit. Míg egy változóhoz funkcióértéket lehet rendelni, eljárásértéket nem.

Funkció Val változóban tér vissza v a karakterláncban található szám. Ebben az esetben a teljes sornak csak egy számot kell tartalmaznia. Ellenkező esetben, ha

a konverzió nem sikerült, a kódérték a sor azon pozíciójának számát tartalmazza, ahol az átalakítás során hiba történt, ellenkező esetben 0 értéket ad vissza.

Példa:

A: rövid húr;

V, m: egész szám;

Kezdődik

a:=2356;

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

Vége.

6.Str eljárás:

Str(y; s: string);

Az y változó néhány numerikus adattípushoz tartozó szám.

Eljárás Str számot stringgé alakít s.

Példa:

Str(10254, a) //az a sor most 10254-et tartalmaz

7. Beszúrási eljárás:

Insert(s1: string; Var s2: string; index: integer);

Eljárás Beszúrás beszúrja az s1 karakterláncot az s2 karakterláncba, a pozíciótól kezdve index . Ha az eredményül kapott s2 karakterlánc 255 karakternél hosszabb lesz, akkor a végén nem szereplő karaktereket a rendszer egyszerűen eldobja.

Példa:

S1, s2: rövid húr;

Ind:integer;

Kezdődik

s1:=1-i;

s2:= string ;

Insert(s1, s2, 7); //s2= 1. sor

Vége.

8. Eljárás törlése:

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

Eljárás Törlés eltávolítja egy karakterláncból s pozícióból kiinduló része index és folytatva a számára számoljon elemeket.

Példa:

A: rövid húr;

P, m: egész szám;

Kezdődik

a:=karakterlánc;

Törlés(a, 2, 3); //vonala kezdett tartalmazni ska

Vége.

Példák a string adattípus használatára szolgáló programokra.

1) Írjon programot, amely megkeresi a szövegben található „k” betűk számát!

program Pr_27_28_1;

($APPTYPE KONZOL)

használ

SysUtils;

A, a_save: string;

s:byte;

Const bukva="k";

Kezdődik

Writeln("Vedite szöveg");

Readln(a); // szöveg beírása

a_save:=a; //maga a szöveg megváltozik, ezért mentünk róla egy másolatot

s:=0; //a kezdőbetűt rögzítő "K" betűszámláló inicializálása

//értékek

Míg Pos("k",a)>0 mindaddig //add meg, amíg a "K" szerepel a szövegben

kezdődik

Törlés(a,Pos("k",a),1); //eltávolítja a "K" betűt (az új "K" betűk kereséséhez)

s:=s+1; //és növelje a számlálót 1-gyel

vége;

Writeln("Az Ön szövege: ",a_save, " soderjit ",s, " bukv "k""); // teszt kimenet és

Readln; //a benne található "K" betűk száma

Vége.

2) Most nézzük meg, hogyan emelhet ki néhány szót vagy szócsoportot a szövegben. Ha a programalgoritmus segítségével meg tudjuk határozni, hol vannak a szöveg szavai, akkor ezekkel a szavakkal és a szöveg egészével is végre tudjuk hajtani a szükséges műveleteket (másolás, módosítás, törlés, szimbólumok szavak közé adása és sok más művelet ).

Szövegünk hosszát a Length(s) függvény segítségével határozhatjuk meg. Így a ciklus, amely végigmegy a szövegünk összes karakterén, a következőképpen van írva (i integer típusú változó, s a mi szövegünk):

Miközben én

kezdődik

vége;

A szövegben minden szó egy bizonyos szimbólummal végződik, például szóközzel, ponttal, kettősponttal vagy valamilyen jellel (felkiáltójel, kérdőjel, idézőjel stb.). Feladatunk egyszerűsítése érdekében feltételezzük, hogy a szövegben minden szó szóközzel van elválasztva, és maga a szöveg ponttal végződik. Ahogy a Char karakter adattípusáról szóló leckében elhangzott, minden karakternek megvan a sajátja egyedi kód. Az összes kód listája az ASC2 táblázatban található, amelyben a szóköz a 32-es számnak felel meg. Bármely karakter eléréséhez meg kell adni magát a karaktert aposztrófokkal, vagy meg kell adni a kódját a hash jel után.# . A szóköz karakter egy nem megjeleníthető karakter, ezért ezt a karaktert így érjük el:#32 .

A szöveg bármely szavának kiemeléséhez meg kell találnunk ennek a szónak a végét: szóközt vagy pontot (az utolsó szóhoz). A szöveg minden szavát megtaláló ciklus a következőképpen íródik:

inach:=i;

míg (S[i]<>#32) és (S[i]<>".") tegye

kezdődik

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

vége;

I. változó tárolja az aktuális szövegkarakter számát, inach egy szó első karakterének számát tárolja (feladatunkhoz képest egy szót számnak és bármilyen megjelenített karakterkészletnek is tekinthetünk). Változó S tartalmazza a szövegünket, és in utca A kiemelt szavunk betűről betűre formálódik.

Ha törölni akarunk egy talált szót, például ha ez a szó több mint 8 betűt tartalmaz, akkor a következő programrészletet kell írnunk:

inach:=i;

míg (S[i]<>#32) és (S[i]<>".") tegye

kezdődik

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

Vége;

Ha i>8 akkor

Törlés(S, inach, i-1);

else inach:=inach+i-1;

Most írjunk egy programot, amely létrehoz egy új szöveget, amely tartalmazza forrásszöveg csak ugyanazzal a betűvel kezdődő és végződő szavak:

programText2z;

($APPTYPE KONZOL)

használ

SysUtils;

Var S,St: string;

Z: 0,50;

Inach,i: bájt;

B: char;

Kezdődik

Writeln("Predlogenie írása");

Readln(S);

i:=1; z:=0; St:=""; inach:=1; // inicializálás

Miközben én csinál //általános ciklust (amíg az összes szöveg be nem fejeződik)

kezdődik

b:=S[i]; //válaszd ki az első karaktert

míg (S[i]<>#32) és (S[i]<>".") do // ciklus kiválaszt egy szót

Kezdődik

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

vége;

Ha b<>S akkor //ha a szó első és utolsó betűje nem egyenlő, akkordelete(St,inach,z) //törölni kell ezt a szót a generáltból

//szöveg

Más

kezdődik inach:=inach+z+1; St:=St+#32; vége; //egyébként tovább lehet lépni, //szóközzel a szó után

ha S[i]<>"." Ezután inc(i); z:=0; //ha nem érte el a szöveg végét, akkor állítsa vissza a számlálót a szó karaktereinek számára (z) és növelje az aktuális karakter számát 1-gyel

vége;

Writeln("Szükséges előírás:");

Writeln(St); //kiírja a kapott szöveget

Readln;

Vége.

Egyéb hasonló művek, amelyek érdekelhetik.vshm>

2764. String típus 22,07 KB
Memóriaábrázolás Egyes programozási nyelvek korlátozásokat írnak elő maximális hossza karakterláncok, de a legtöbb nyelven nincsenek ilyen korlátozások. A karakterlánc típusú gépi ábrázolás fő problémái: a karakterláncok mérete meglehetősen jelentős, akár több tíz megabájt is lehet; A méret idővel változik, ami megnehezíti a karakterek hozzáadását és eltávolítását. Karaktertömb ábrázolása Ebben a megközelítésben a karakterláncok karaktertömbként vannak ábrázolva; a tömb mérete egy külön...
7176. ADATBÁZISSZERVEZÉS ÉS ADATBÁZISKEZELŐ RENDSZEREK 116,07 KB
Például mint tájékoztatási rendszer Megnézheti a vonat menetrendjét vagy a rendelési könyvet. Bármely adathordozón rögzített attribútumot adatelemnek, adatmezőnek vagy egyszerűen mezőnek nevezzük. Az adatok feldolgozása során gyakran találkozunk azonos típusú, azonos tulajdonságokkal rendelkező objektumokkal.
8335. Analóg és diszkrét információk. Adattároló adathordozók. Műveletek adatokkal. Adatkódolás. Számrendszerek. Entrópia és információmennyiség 227,54 KB
Számrendszerek. Számrendszerek Az adatkódolást régóta használják: Morse-kód Braille tengeri jelábécé, stb. Az emberiség történetében két számrendszer ismert leginkább a számok kódolására: a nem-pozíciós és a pozíciós. Mindkét számrendszert a bázis jellemzi a számok írásához használt különböző számjegyek számával, például 0-tól 9 m-ig.
8334. Shannon és Hartley képletek. Az információ mennyiségének kiszámítása. Karakterek, grafikai és audio adatok kódolása. Az adatok strukturálják Shannon képletét 140,5 KB
Az inverz problémák megoldásához, ha a bizonytalanság (H) vagy az eltávolítása eredményeként kapott információ mennyisége (I) ismert, és meg kell határozni, hogy hány egyformán valószínű alternatíva felel meg ennek a bizonytalanságnak az előfordulásának, használja az inverzt. Hartley-képlet, amely a logaritmus definíciójának megfelelően származik, és még egyszerűbbnek tűnik ...
10584. Szótáron dolgozik 12,01 KB
A szókinccsel való munka az egyik fő cél és célkitűzés az idegen nyelvoktatás módszertanában, és egyben az egyik legnehezebb probléma több okból is, amelyek közül az egyik a szókincs dinamikus jellege. A modern lexikális összetételét illetően német nyelv akkor az anyanyelvi beszélők által a mindennapi kommunikáció során használt lexikai egységek száma Stndrtsprche 300-ig terjed. Nyilvánvaló, hogy egy ilyen kötet elsajátítása még egy anyanyelvi beszélő számára is nehéz, ha nem lehetetlen, nem beszélve...
19204. Munka a sajtóval 31 KB
Anyagok biztosítása a sajtó számára, amelyek alapján az újságírók üzeneteket, riportokat, cikkeket, esszéket készítenek; válaszol a sajtó megkereséseire, és átfogó információs szolgáltatások(újságírói lehetőségek forrásinformációk gyűjtésére és technikai feldolgozására), monitorozás - sajtó-, rádió- és televízióüzenetek nyomon követése, elemzése, értékelése. Intézkedések megtétele, ha szükséges, az üzenetek hibáinak kijavítására és a cáfolat kiadására.
3933. Tömbök használata PHP-ben 8,92 KB
Eltávolító és csere elemek beszúrása egy tömbbe Az rry_push függvény egy vagy több elemet ad a tömb végéhez, az rry_pop függvény pedig eltávolítja a tömb utolsó elemét. Az rry_splice függvény eltávolítja a tömbelemek hosszát az eltolástól kezdődően, és a harmadik paraméter megadása esetén a törölt elemeket tömbelemekkel helyettesíti, a replcement, ha a hossz paraméter nincs megadva, a tömb végéig eltávolítja az elemeket. Az rry_unique függvény eltávolítja az ismétlődő értékeket egy tömbből, és csak az egyiket hagyja meg. Az rry_merge függvény egyesül...
3696. Makroszkópos készítményekkel végzett munka 4,7 KB
Az orgona alakja megmarad vagy nem, ha nem, akkor mi a deformáció. A szerv mérete körülbelül hányszorosára nő és csökken. Orgona színe a felszínről.
3936. Munka a fájlrendszerrel PHP-ben 9,24 KB
Minden fájl a néven és a tartalomon kívül paraméterekkel rendelkezik, amelyek meghatározzák a jellemzőit (létrehozás ideje, tulajdonos azonosítója, hivatkozások száma ez a fájl V fájlrendszer stb.). Az alábbi funkciók hozzáférést biztosítanak ehhez az információhoz
6343. ENERGIA, MUNKA, ERŐ 59,23 KB
Az energia és a munka fogalmát széles körben használják a mindennapi életben. Ismeretes, hogy a munka az energiatartalék miatt történik, és éppen ellenkezőleg, a munka elvégzésével bármely eszközben növelheti az energiatartalékot. Például az óra tekercselésekor végzett munka során tavasszal energiatartalékot hozunk létre, aminek köszönhetően az óra jár. Az energia fogalma minden természeti jelenséget összekapcsol.

Folytatjuk a szimbólumok tanulmányozását, megtanultuk az alapokat, a többi a szimbólumokat manipuláló eszközök használata és az azokkal való illusztrációk készítése során finomodik.

De a pszichológiai szempontok is fontosak a kreatív emberek számára. Az új anyagok tanulmányozása során folyamatosan támaszkodunk rájuk. Eljött az ideje Robin Sharma. Akár olvassa ezt a szerzőt, akár nem, ez nem fontos. Fontos, hogy a pszichológiailag ellenőrzött rendelkezéseket érdemes elolvasni és újraolvasni! Mikor csinálod ezt magad? A válasz gyakran felhangzik a fejekben: "Soha!"

És együtt mindent átgondolunk!

Tehát "az emberben négy alkotóelv».

„Mit gondol? Robin Sharma, a motiváció elismert mestere és nemzetközi bestseller-író, mindenki rendelkezik 4 kreatív kezdet, 4 kreatív forrás, amelyek be vannak kapcsolva 100% mindent előre meghatározni életeredmények. És rajtuk múlik az életben elfoglalt helyünk.”

Következésképpen a munka eredménye bármilyen tevékenységben, beleértve a hulladékot is. Olvassuk a rendelkezéseket szennyvízben elért sikereink szempontjából.

gondolatok

„Minden gondolat, amire gondolunk gondolat minden egyes embert meghatároz eredmény, ami viszont gondolataink tükre. Minden szokás egy gondolattal kezdődött.”
Ha elsajátította Vályogtégla Illusztrátor, menj a csatornába, próbáld ki gondol csak pozitív, Mindennek ellenére! Dicsérjétek meg és támogassátok magatokat, jön a siker, ezt már sokan próbára tették.
És akkor kapok olyan leveleket, amelyek szerint a tőzsdéken visszaestek az eladások, ami azt jelenti, hogy nem érdemes odamenni! Olyan emberek írták, akik csak most tanulják a programot. Ne ijedjen meg. Lehet, hogy a lefolyók csak rád várnak! Senki nem tud semmit, de ne táplálkozz a negativitással!

Érzések

"A miénk érzéseket Is kreatív. Ha jól érezzük magunkat, nagyszerű eredményeket érünk el. Ha szenvedélyesek vagyunk, szenvedélyünket átadják másoknak. Ha rettenetesen érezzük magunkat, az eredményeink kevésbé lesznek elképesztőek.”
Örülj minden rajznak, minden elfogadott munkának, minden eladásnak, minden centnek, ami a zsebedbe esik! Ne feledje, hogy korábban nem volt ilyen, de most javult a helyzet! Ne fojtsd el a kreatív gyerekek örömét a pénzről és az eladásokról szóló gondolataiddal.

Szavak

"Ezt elfelejtjük szavak van hatalmas erővel. A szavaknak teremtő erejük van. Ha tragédiának nevezünk valamit, az előre meghatározza a reakcióját és minden későbbi hozzáállását.”
Beszélünk vagy írunk szavakat valakinek. Szóval beszélj és írj a sikereidről. Nézze meg a sikert még apró dolgokban is, és ne féljen túlzásba vinni. Ez nem kérkedés, nem pózol, hanem igazi sikert vonz az életedbe.

Műveletek

„Mindegyikünk akciókat meghatározni egy konkrét eredmény. Minél fejlettebb ez az alkotóelv az emberben, minél aktívabban és céltudatosabban cselekszünk, annál kiemelkedőbb eredményeket érünk el.”
Sokat beszélgettünk akciókról. Egy nagy portfólió nem fog csak úgy a fejedre esni, mint a mennyei manna. Dolgozni kell rajta, alkotni, kitalálni, valami újat keresni. Nem kell kitérni az útjából, de fel kell készülnie a napi fáradságos munkára. És gyerekkorod óta ismered a munkáról szóló népi közmondásokat. Fő gondolatuk, hogy a munkát mindig megjutalmazzák!
Köszönet tehát Robin Sharmának az emberi teljesítmény csodálatos összefoglalásáért. Minden a mi kezünkben!

Ebben a leckében a szimbólumokról folytatjuk a beszélgetést.

Emlékezzünk vissza, hogy a szimbólum be Adobe Illustrator egy grafika, amely korlátlan számú alkalommal használható egy rajzban. Egy szimbólumot akárhányszor használhatsz, de ha megváltoztatod a szimbólumot, minden minta megváltozik.

Ma ezen fogunk dolgozni. De először hozzuk létre saját szimbólumunkat. Az elmúlt három leckében a könyvtárból származó szimbólumokat használtuk. A kreatív folyamatban pedig saját szimbólumokat kell létrehoznia. Szimbólumok bármilyen objektumból létrehozhatók, beleértve az útvonalakat, a színátmenettel kitöltött alakzatokat, a színátmenetes hálókat és az objektumcsoportokat.

Szóval jók az utolsó órán készített őszi leveleink, de tegyük félre, nem mi rajzoltuk.

Szórólapok

Hagyjuk a rajz nevét szimbólum4, és tisztítsa meg a képernyőt. Nézzünk bele Adobe Bridge.


Illusztrátor iskolai rajzok

Hány rajz halmozódott fel már iskolánkban, a legprimitívebbektől a készekig! Vegyünk egy rajzot a jövő szimbólumához ribki2 . Itt vannak, első szépségeink!

Hal

Válassza ki közülük a zöldet, és zárja be egy átfogó téglalapba a fekete nyíl segítségével Kiválasztó eszköz(V), másolat ( Ctrl+C) és helyezze be ( Ctrl+V) a rajzba szimbólum4


Válogatott halak

A hal nagy, kisebbre tesszük Váltás az egységes változtatásokhoz, és húzza a panel üres helyére Szimbólumok(szimbólumok). Először azonban távolítsa el a felesleges szimbólumokat, amelyek az előző rajzzal való munka során megmaradtak.
A párbeszédpanelbe írja be az új szimbólum nevét hal(hal). És találjuk ki, mi van az ablakban.

Szimbólum paraméterek ablaka

A párbeszédpanelen Szimbólum Lehetőségek(szimbólum paraméterek) egy megjegyzést kap, hogy a programban Illusztrátor nincs különbség a karaktertípusok között Film Csipesz(videó) és Grafikus(grafika). Tehát ne törődjünk a paraméter értékével Export típus(típus).
Figyeljünk oda Szimbólum típus(karaktertípus). Az alapértelmezett funkció a Dinamikus Szimbólum(dinamikus szimbólum). Ez a funkció lehetővé teszi a karakterek számára, hogy megtartsák általános alakjukat, de kinézet más szimbólumminták dinamikusan változhatnak. Amikor módosítja a fő űrlapot, a karakterminták is megváltoznak, de a többi változtatás is mentésre kerül. Mindig azt használtuk Dinamikus Szimbólum(dinamikus szimbólum). A palettán Szimbólumok(szimbólumok) A dinamikus szimbólumok „+” jellel jelennek meg az ikon jobb alsó sarkában. És ezt nem egyszer láttuk, most megtudjuk! De az alkotás során dinamikus karakterek Ne adjon hozzá szöveget, elhelyezett képeket vagy hálóobjektumokat. Emlékezzünk!
Statikus Szimbólum(statikus szimbólum) önmagáért beszél. Nem változik.

Bejegyzés– a szimbólumregisztrációs pont a szimbólumdefiníciós objektum koordinátáinak origóját jelöli. Szimbólum létrehozásakor 8 regisztrációs pont közül választhatunk egyet a szimbólum határán, vagy egy pontot a határolókeret közepén. Hagyjunk mindent úgy, ahogy van! Pont a közepén.
Engedélyezze Útmutatók számára 9- Szelet Méretezés– segédvonalak engedélyezése a 9 töredékes méretezéshez. Tudni fogjuk, mi az. Ez itt nem ilyen egyszerű, ezt komolyan kell érteni!

Az alapértelmezett jelölőnégyzet egy másik bejegyzésnél van.
Igazítsa nak nek Pixel Rács– igazítás a pixelrácshoz. Ezt is meg fogjuk ismerni, de nem most. A pixelrácshoz igazított szimbólumok igazítva maradnak, amikor mozgatja őket a rajztáblán, mindaddig, amíg jelenlegi méretük nem változik. Ezt a négyzetet hagyjuk bejelölve, dolgoztunk vele.

rendben. A panelben Szimbólumok(szimbólumok) halaink azonnal szimbólumként jelentek meg.

Alapértelmezés szerint a kiválasztott grafika az új szimbólum példányává válik. Ha el szeretné kerülni ezt az átalakítást, tartsa lenyomva a gombot új szimbólum létrehozásakor. Váltás.
Nem tartottam lenyomva a kulcsot Váltásés látni akarom, mit tegyek ezután.


Szimbólumok paletta

Maradt egy minta, azt pluszjellel jelöljük. Ne feledjük, a szimbólumokról szóló első leckéken ilyen pluszok jelentek meg, amikor csökkentettük a program által adott szimbólumokat. Alapértelmezés szerint a kiválasztott grafikus objektum az új szimbólum példányává válik, és nincs rá szükségünk.

Szimbólumok paletta

Távolítsa el a létrehozott szimbólumot a panelről Szimbólumok(szimbólumok). De előbb lesz egy ilyen jel. Menjünk át ezen a szakaszon is. Törölnie kell a karaktereit. Lássuk, mi vár ránk!


Figyelmeztető jel

Egy vagy több szimbólum használatban van, és nem törölhető mindaddig, amíg példányaikat ki nem bővítik vagy törlik. – Egy vagy több karakter használatban van, és nem törölhető mindaddig, amíg példányaikat ki nem bővíti vagy törli.

Így nem fogsz tudni azonnal törölni egy felesleges szimbólumot! Ha úgy döntünk Töröl Példányok(példányok törlése), minden eltűnik: a szimbólum és a hal is. Választ Kiterjed Példányok(példányok kibontása).


Kiemelt hal

A hal pirossal van kiemelve, de a szimbólum eltűnt a palettáról! Célunkat elértük! Vessünk egy pillantást a palettára Rétegek(rétegek). Azta!

Réteg paletta

Kiterítem a palettát, és egyértelmű, hogy a halaink csoportosultak! Tudni fogjuk!

Használjunk egy kis segítséget Ctrl+ G Kombináljuk a halak részleteit. Meg lehet próbálni, de kombinálás nélkül a hal nem húzódik be a palettára.
Még mindig létre kell hoznunk egy új szimbólumot. Itt nyomjuk meg és tartsuk lenyomva a gombot Váltás miközben húzza a szimbólumot a palettára. Akkor is, ha nem szeretné, hogy párbeszédpanel nyíljon meg szimbólum létrehozásakor Új Szimbólum(új szimbólum), majd a szimbólum létrehozása közben tartsa lenyomva a gombot Alt. Illusztrátor alapértelmezett nevet ad a szimbólumnak, pl. Új Szimbólum1 (új szimbólum1).

Gyakorolj, és ez nem olyan egyszerű!

Szimbólumok paletta

A szimbólum megjelent, de a másolt hal törölhető! Nem lesz gond!

Most vegyük ki a halat a panelből Szimbólumok(szimbólumok). Permetezzük be, és nézzük meg, hogyan működik! Miért ne nézhetnénk át néhány ismerős eszközt?! Itt már szakértők vagytok! Fogj neki! Eszköz Szimbólum Permetező Eszköz(szimbólumszóró) és mindent ami mögötte van, az előző leckéken elsajátították!


Karakter permetezés

Valamikor kézzel vonszoltuk a halat, és sokáig tartott, de most már tudjuk, hogyan lehet gyorsabban és problémamentesen csinálni. És a szín és az átlátszóság is megváltozott! Persze nem próbálkoztam túlságosan, de a halak másmilyenek. Tudom, hogy próbálkozol! Szép munka!

A szimbólumok használata időt takarít meg, és jelentősen csökkenti a fájlméretet. Mivel ugyanaz a szimbólum könnyen lemásolható, nem kell minden alkalommal új nehéz fájlokat letöltenie, amikor egy rajzot használ vagy azon dolgozik. A sokszorosított szimbólumok halmaza egyetlen egész, nincs szükség a szimbólumok bővítésére.

Valójában bármilyen objektum, objektumcsoport vagy teljes kép tárolható szimbólumként, függetlenül attól, hogy tartalmaz-e rajzolt elemeket, szöveget, beágyazott képeket vagy ezen elemek kombinációját. Ez nagyon kényelmes, mivel lehetővé teszi a könyvtár bővítését. Szimbólumok azokat a grafikai elemeket, amelyeket ismételten használnak egy adott alkotásban.

Egy szimbólumot a megfelelő grafikus objektum megváltoztatásával szerkeszthet. Egy szimbólumot úgy is definiálhat, hogy új grafikával helyettesíti. Egy szimbólum szerkesztése és újradefiniálása megváltoztatja annak megjelenését a palettán Szimbólumok(szimbólumok), valamint minden mintájának megjelenése a rajztáblán.

Erről meg kell győződnünk, az iskola az iskola, ez rakja le az alapokat.
Válasszuk ki a szimbólumainkat. Kattintson duplán a kijelölésre bárhol.


A karakterkészlet reprodukálása

Úgy tűnik, semmi sem változott, kivéve, hogy felül egy kék csík jelent meg, és eltűnt a megsokszorozott szimbólumunkat kiemelő téglalap.

Kék sáv a tetején

Ez az, amire szüksége van! Vegyük a kulcsot Altés halat tenyészteni.
Kattintva ismét megjelent a dimenziós téglalap, lenyomva Altés kissé félrehúzta az új halat.


Halak tenyésztése

Most távolítsuk el őket a képernyőről úgy, hogy ráhúzzuk őket a vászonra. Nem kell minden hal, csak egyet használunk!


Hal a vásznon

A felső vörös hal tetszett. Bármelyikét kiválaszthatja. De hogyan lehet megszerezni a karakterkészletből? Most megtudjuk!
Kattintson duplán a képernyő tetszőleges pontjára a felső kék csík eltávolításához.


Eltávolította a kék csíkot

Válasszunk ki egy új halkészletet. Vigye közelebb a palettát a kiválasztott halhoz Szimbólumok(szimbólumok), és nézzük meg az egyik funkcióját. Vászonra dolgozunk.


A szimbólumok közötti kapcsolat megszakítása

Szünet Link nak nek Szimbólum– szakítsa meg a kapcsolatot a szimbólummal. Kattintsunk rá!
Az összes hal kiemelt lett. A kapcsolat megszakadt!


A kapcsolat megszakadt

Külön tárgyakká változtak. De a halak egy egység voltak, ne feledd! Távolítsuk el a kijelölést, bontsuk ki a kiválasztott halkészletet, válasszuk ki a szükségeset, és töröljük a többit.

Válogatott halak

Már csak egy halunk maradt! Bővítsük ki, és változtassunk rajta valamit úgy, hogy a vászonról a képernyőre húzzuk.

Egy szimbólumkészlet és egy külön hal

A készletben lévő halak nem zavarják. Mind együtt vannak! Meg fogjuk változtatni ezt a halat. Adjuk vissza neki a normális szemét. Használjunk ismét egy új trükköt! Válassza ki a halat, kattintson duplán a képernyőn, alig látható, most válassza ki a szemet, és nyugodtan változtassa meg a színét. Kényelmes és gyors. Az elkülönítési mód akkor aktiválódik, ha a tetején kék sáv van!


Izolációs mód

Kattintson duplán a képernyőre, és a hal színe visszatér. És a szem más lett!


A halnak új szeme van

Nagyon szükséges technika, ma újra használjuk. Nemcsak szimbólumokkal, hanem más tárgyakkal is segít.

A színek tanulmányozása során röviden megemlítettük. De csak futólag. Itt az ideje, hogy részletesebben beszéljünk róla.
Az elkülönítési mód (kék sáv jelenik meg a képernyőn) elkülöníti a csoportokat és az alatta lévő rétegeket, így könnyedén kijelölheti és szerkesztheti az objektumokat és részeket anélkül, hogy felbontaná őket. Nem szükséges be Ebben a pillanatban az objektumok elhomályosulnak és blokkolódnak. Csak a kiválasztott objektumokat tudjuk szabadon módosítani. Ezt te magad csináltad halszemmel.
Az elkülönítési módra váltáshoz ki kell jelölnie az objektumot egy fekete nyíllal Kiválasztó eszköz(V) és nyomja meg a gombot Elszigetelni Kiválasztott Tárgy(kiválasztott objektum elkülönítése) a panelen Ellenőrzés(ellenőrzés). Ez egy másik módja annak, hogy belépjen az üzemmódba.


Elszigetelő mód gomb

Ez az ikon a panelen Ellenőrzés(kontroll) a bekapcsolásról beszél ezt a módot. Még nem kattintottam rá! Nézzük meg közelebbről!

Elszigetelő mód gomb

Kattintsunk rá és nézzük meg.


Izolációs mód és a Rétegek paletta

Az elkülönítési mód engedélyezve van a panelen Rétegek(rétegek) látjuk. A hal csoportosítva van, könnyen kiválasztottam a testét, amivel dolgozni akarok. Egy halkészlet elszíntelenedik, elkülönítik őket.
Nem kell bekapcsolni a palettát Rétegek(rétegek). Program Adobe IllustratorCC több helyen figyelmeztet minket, hogy mit tettek. Csak ismerni kell a helyeket!


Szürke elkülönítési mód sáv

A dokumentumablak tetején egy szürke sávban ez áll Réteg1 (réteg1) és < Csoport> (csoport). A program megmutatja, hogy egy rétegen elhelyezkedő objektumok csoportját izoláltuk Réteg1 (1. réteg). Az izolációs módból az objektumokon kívüli dupla kattintással léphet ki.
Ha figyelmesen megnézi, észre fogja venni, hogy minden egyértelműen fel van tüntetve a szürke panelen, amit szigetel. De pillanatnyilag a halam nem színeződött el. Ne aggódj, előfordul! Tudni fogjuk! Csináljuk a magunk dolgát, csoportbontás nélkül minden sikerülni fog! A mód működik!


Izolációs mód

Meg akarom cserélni a hal farkát. Kezdek megváltozni!


Módosított halfarok

Ceruza Ceruza eszköz(N) és simítás Sima eszköz Csináltam egy új farkot a halnak. Nem nagyon próbálkoztam, neked jobban megy, de van minta! Most a „csontok” nem megfelelőek, megpróbálunk valamit csinálni velük anélkül, hogy elhagynánk az izolációs módot.

Változott farokcsontok

A „csontokat” lemásoltam, kibontottam, az új farokhoz igazítottam és az alsó színét megváltoztattam. Szerintem még jobban csináltad. Minden ismerős! Nem magyarázok semmit!

Nézzük meg halainkat, és lépjünk ki az izolációs módból. Minden hal azonnal színt kapott!

Izolációs mód nélkül

Itt van egy szimbólumkészlet és egy új hal. Létrehozhat egy új szimbólumot. Kezdjük el!
Először is tegyük kisebbre a halat a gomb segítségével Váltás, kiemelve azt.


Szimbólumok és csökkentett halak halmaza

Íme a készletünk és a jobb alsó sarokban egy új hal. Válassza ki újra a gombot lenyomva tartva Váltás, kattintson az ikonra Új Szimbólum(új szimbólum), megjelenik egy párbeszédpanel Szimbólum Lehetőségek(szimbólum paraméterek), szimbólumot kapunk!


Hozzon létre egy új szimbólumot

A szimbólumot nem én neveztem el, a program adta a nevét.
rendben.


Új szimbólum jelent meg

Új dinamikus szimbólum jelent meg! A halon nincs plusz, kivehető! De tegyük át a vászonra, hátha jól jön!


Új szimbólum permetezése

Szeretünk szórakozni! Kattintson az új szimbólumra, és vegye át Szimbólum Permetező Eszköz(szimbólum permetező) és lássuk mit csináltunk!

Elvesztettük a szívünket! Miért ne élvezné a lehetőségeket! Egy halraj egy pillanat alatt! A kreatív gyermek örül!

Kulcs Töröl törölje ezt a készletet a fekete nyílra váltással Kiválasztó eszköz(V), hozzunk létre egy másikat! Legyünk nyugodtak, különben az egész szerkesztési területet új halakkal szerettük volna megtölteni örömből! Egyszerű és gyors!


Új hal szimbólum

Legyen ez valami ilyesmi! Szabad az új halak elhelyezése, ne feledkezzen meg a megtanult szimbólumkezelő eszközökről! Nem lehet nélkülük! Te mindent tudsz, nem ismétlem meg!

Helyezzük át az új készletünket a meglévőre. Nem egyesülnek, ez látszik a palettáról


Két karakterkészlet

Két karakterkészletünk van. Nem olyan egyszerű ezeket kombinálni. A halmazokon belüli kapcsolatot a legegyszerűbb megszakítani, csoportosan szétválasztani, szükség szerint bővíteni, áthelyezni, szépen elosztani, majd összevonni és új szimbólumot alkotni! Próbáljuk meg! Meg tudod csinálni!


A harmadik karakter létrehozása

A palettára nézve Rétegek(rétegek).


Új szimbólum a Rétegek palettán

Egy új szimbólum van a palettán, kivéve a magányos halat. Ez nem egy készlet, ez egy karakter! Vigyük át a vászonra, ahol a hal található, és töröljük ki a rajztáblát.


Új szimbólum és hal a vásznon

Mindig törölhetjük. Nagyon sok dolog van, és ez két tárgy. A szimbólum ki van választva, a hal nincs kiválasztva.
A rajztábla tiszta! Most pedig térjünk vissza 58. lecke, idézek belőle egy részletet:

„Vannak helyzetek, amikor egy karakterkészlet létrehozása után hozzá kell adni még néhány másikat Kiemel ez a csoport fokozza eszköz Szimbólum permetező(permetezési szimbólumok) és újra elkezd "permetezni" szimbólumok. Mindannyian eggyé fognak egyesülni.”

Egy tiszta rajztáblán tegyük ezt! Te mindent tudsz, cselekedj egyedül!


Karakter permetezés

Íme az új karakterkészlet Szimbólum Készlet. Szerkeszthető, de ez a te belátásod. Nagyon nehéz az új szimbólum, ami a vásznon van, nem fogom lefújni. És te döntöd el magad.
Csak ráhúzom a szimbólumot és a halat is a rajztáblára a vászonról. A palettán Rétegek(rétegek) minden marad a régiben, de a képernyőn más lesz. De kitaláljuk!


Szimbólumok és rétegek paletták a rajztáblán

Kinagyítottam a magányos halat. Legyen látható!

És most bekapcsolok egy másik módot, mi is használtuk egyszer.

Körvonalak mód

Ez a mód Vázlat(kontúrok). Megnyílik a menüsorban, KilátásVázlat(nézet – körvonalak). És mit látunk? Valahogy üres!

A képernyőn egy kinagyított magányos hal körvonalai és egy új szimbólum körvonalai láthatók. A kombinált készletből csak a keret! Ilyenek a szimbólumok! Nem terhelik túl a rajzot! Érdemes őket használni.
Menjünk vissza. KilátásElőnézet(nézet – illusztráció).

A gyorsbillentyűk használata egyszerűbb: Ctrl+ Y. Próbáld ki!


Képernyő normál módban

Különös „remekművel” nem zártam, de fejezzük be. Tudom, hogy a tied szebb! Mindig nagyszerű vagy! Büszke vagyok rá!
Nem túl fáradt! A készségek tökéletesítve!

De elég! Lazítsunk! Fordulat!
Mentsd el, amit lerajzolsz, konszolidáld a tanultakat!


Ezt az oldalt 1343 alkalommal tekintették meg.

Stringekkel és karakterekkel való munka

A szövegfeldolgozás az egyik leggyakoribb programozási feladat. Ha bármilyen szöveges adatot kell feldolgoznia, egyszerűen nem teheti meg az alábbiakban bemutatott anyag ismerete nélkül. Főleg, ha az adatokat nem személyesen, hanem valakik generálták harmadik féltől származó program vagy egy másik személy.

Szimbólumok

A karakter a szöveg egy egysége. Ez egy betű, egy szám, valamiféle jel. A karakterkód táblázat 256 pozícióból áll, i.e. minden karakternek megvan a saját egyedi kódja 0 és 255 között. Egy bizonyos N kódú karaktert így írunk: #N. A programkódban pontosan így jelennek meg a szimbólumok. Mivel a szimbólumkód egy 255-nél nem nagyobb szám, nyilvánvaló, hogy a szimbólum 1 bájtot foglal el a memóriában. Mint tudod, nincs egy bájtnál kisebb dimenzió. Pontosabban létezik - ez egy bit, de nem tudunk bitekkel dolgozni egy programban: a bájt a minimális egység. A szimbólumok és kódjaik táblázatát a segítségével tekintheti meg szabványos segédprogram A "karaktertábla" a Windowsban található (a parancsikon a Start menü - Programok - Kellékek - Rendszereszközök alatt található). De hamarosan mi magunk is írunk valami hasonlót.

Húrok

A karakterlánc, más néven szöveg, karakterek halmaza, ezek tetszőleges sorrendje. Ennek megfelelően egy karakter karakterlánc is egyben, szöveg is. Szövegkarakterlánc meghatározott hosszúságú. A karakterlánc hossza a benne lévő karakterek száma. Ha egy karakter 1 bájtot foglal el, akkor egy N karakterből álló sorozat N bájtot foglal el.

Vannak más kódtáblázatok is, amelyekben 1 karaktert nem egy bájt, hanem kettő jelképez. Ez az Unicode. A Unicode táblázat a világ összes nyelvéről tartalmaz karaktereket. Sajnos a Unicode-dal dolgozni meglehetősen nehéz, és a támogatása egyelőre csak helyi. A Delphi nem biztosít Unicode-képességeket. Szoftver rész igen, de itt vannak a látványelemek - formák, gombok stb. nem jeleníthet meg szöveget Unicode formátumban. Reméljük, hogy a közeljövőben megjelenik egy ilyen támogatás. A 2 bájtot szónak is nevezik. Innen származik a megfelelő numerikus adattípus neve - Word (egy szám, amely 2 bájtot foglal el a memóriában, értékek 0 és 65535 között). A Unicode táblázatban a „cellák” száma 65536, és ez elég a világ összes nyelvének tárolására. Ha úgy dönt, hogy „1 bájt - 256 érték, majd 2 bájt - 2 * 256 = 512 érték”, azt tanácsolom, hogy emlékezzen a bináris rendszerre és a számítógépben való adattárolás elvére.

Adattípusok

Térjünk át közvetlenül a programozásra. Léteznek megfelelő adattípusok a karakterekkel és karakterláncokkal való munkához:

· Char - egy karakter (azaz 1 bájt);

· String - karakterlánc, szöveg (N bájt).

Hivatalosan a karakterláncok csak 255 karaktert tartalmazhatnak, de a Delphiben sokkal többet írhatsz karakterlánconként. Nagy szövegek és speciális karaktereket tartalmazó szövegek tárolására speciális adattípusok léteznek, az AnsiString és a WideString (utóbbi egyébként kétbájtos, azaz Unicode-hoz).

Szöveges értékek Pascalban történő megadásához egyszeres idézőjeleket használnak (nem dupla idézőjeleket!). Azok. Ha értéket szeretne hozzárendelni egy karakterlánc-változóhoz, ezt a következőképpen kell megtennie:

A karakterek ugyanúgy vannak megadva, csak egyetlen karakter van az idézőjelben.

Ha szigorúan korlátozni szeretné egy karakterlánc-változóban tárolt szöveg hosszát, ezt a következőképpen teheti meg:

Mivel minden sor karaktersorozat, minden karakternek saját sorszáma van. Pascalban a karakterek számozása a sorokban 1-től kezdődik. Azaz. az "ABC" karakterláncban az "A" karakter az első, a "B" a második stb.

Egy karakter sorszámát egy sorban nem véletlenül találták ki, mert ezek a számok, indexek alapján hajtanak végre műveleteket a vonalakon. Egy karakterláncból tetszőleges karaktert kaphat, ha megadja annak számát szögletes zárójelek a változó neve mellett. Például:

var s: string; c:char; ... s:="Szia!"; c:=s; //c = "e"

Kicsit később, amikor a tömböket tanulmányozzuk, világossá válik, hogy a karakterlánc karakterek tömbje. Ez magában foglalja az egyes szimbólumok megszólításának formáját.

String feldolgozás

Térjünk át a karakterláncok feldolgozásának függvényeire és eljárásaira.

Egy karakterlánc hosszát a Length() függvénnyel találhatjuk meg. A függvény egyetlen paramétert vesz fel - egy karakterláncot, és visszaadja a hosszát. Példa:

var Str: String; L: egész szám; ( ... ) Str:="Szia!"; L:=Hossz(Str); //L = 6

Alkarakterlánc keresése egy karakterláncban

Egy eredendő feladat egy részkarakterlánc megtalálása a karakterláncban. Azok. a probléma a következőképpen fogalmazódik meg: van egy S1 karakterlánc. Határozza meg, hogy az S2 karakterlánc milyen pozícióból lép be. Lehetetlen elképzelni semmilyen feldolgozást e művelet végrehajtása nélkül.

Tehát egy ilyen megállapításhoz van egy Pos() függvény. A függvénynek két paramétere van: az első a keresendő részkarakterlánc, a második a karakterlánc, amelyben keresni kell. A keresés a karakterek esetének figyelembevételével történik. Ha a függvény egy részkarakterlánc előfordulását találja egy karakterláncban, akkor az első előfordulásának pozíciószámát adja vissza. Ha nem található bejegyzés, a függvény 0-t ad vissza. Példa:

var Str1, Str2: Karakterlánc; P: egész szám;( ... ) Str1:="Szia! Hogy vagy?"; Str2:="do"; P:=Pos(Str2, Str1); //P = 9

Egy vonal egy részének eltávolítása

A karakterlánc egy részét a Delete() eljárással törölheti. Meg kell jegyezni, hogy ez egy eljárás, nem pedig egy függvény – közvetlenül a neki átadott változón hajt végre műveleteket. Tehát az első paraméter egy string típusú változó, amelyből a töredék törlődik (pontosan változó! Konkrét érték nincs beállítva, mivel az eljárás nem ad vissza eredményt), a második paraméter annak a karakternek a száma, amelyből a töredéket kell törölni, a harmadik paraméter az eltávolítandó karakterek száma. Példa:

var Str1: String; ( ... ) Str1:="Szia, világ!"; Törlés(Str1, 6, 7); // Str1 = "Helló!"

Meg kell jegyezni, hogy ha a törölt töredék hossza kiderül több mennyiséget karaktereket a sorban, a megadott pozíciótól kezdve (azaz „megyünk át a szélen”), a funkció normálisan fog működni. Ezért, ha el kell távolítania egy töredéket egy karakterláncból egy karaktertől a végéig, akkor nem kell kiszámítania ezeknek a karaktereknek a számát. A legjobb mód magának a karakterláncnak a hosszát állítja be.

Íme egy példa. Tegyük fel, hogy meg szeretné keresni egy karakterlánc első "a" betűjét, és törölni szeretné a karakterlánc utána következő részét. Tegyük ezt a következőképpen: a Pos() függvénnyel megkeressük a betű pozícióját a sorban, a töredéket pedig a Delete() függvénnyel töröljük.

var Str: String; ( ... ) Str:="Ez egy teszt."; Törlés(Str,Pos("a",Str),Length(Str));

Próbáljuk meg helyettesíteni az értékeket, és nézzük meg, mi kerül át a Delete funkcióba. Az első "a" betű a sorban a 9. helyen található. A teljes sor hossza 15 karakter. Tehát a függvényhívás így megy: Delete(Str,9,15). Látható, hogy az „a” betűtől a sor végéig csak 7 karakter van... De a függvény ennek ellenére elvégzi a dolgát. Az eredmény természetesen az „Ez van” karakterlánc lesz. Ez a példa egyszerre több funkció kombinációját mutatta.

Egy karakterlánc egy részének másolása (kibontása).

Egy másik fontos feladat egy karakterlánc egy részének másolása. Például egyes szavak kinyerése a szövegből. Kijelölheti a vonal töredékét a felesleges részek eltávolításával, de ez a módszer kényelmetlen. A Copy() függvény lehetővé teszi, hogy egy karakterláncból egy adott részt másoljon. A függvény 3 paramétert vesz fel: szöveget (karakterláncot), amelyből másolni kell, a karakter számát, amelyről másolni kíván, és a másolandó karakterek számát. A függvény eredménye egy karakterlánc töredék lesz.

Példa: tegyük fel, hogy ki akarja választani egy mondat első szóját (a szavak szóközzel vannak elválasztva). Az űrlapon az Edit1-et (TEdit) helyezzük el, amelybe a mondat kerül beírásra. A művelet egy gomb megnyomásával történik. Nekünk van:

Ebben az esetben az elejétől az első szóközig terjedő töredéket másol a karakterláncból. A karakterek számát eggyel kevesebbnek vesszük, mert ellenkező esetben a hely is másolásra kerül.

Alkarakterlánc beszúrása egy karakterláncba

Ha egy másik karakterláncot szeretne beszúrni egy meglévő karakterláncba, használhatja az Insert() eljárást. Az első paraméter a beszúrandó sor, a második a beszúrni kívánt sort tartalmazó változó, a harmadik pedig az a pozíció (karakterszám), ahonnan a sor beszúrásra kerül. Példa:

eljárás TForm2.Button1Click(Sender: TObject); var S: String; begin S:="1234567890"; Insert("000",S,3); ShowMessage(S) end;

Ebben az esetben az eredmény a „1200034567890” karakterlánc lesz.

"Komolyabb" példa

A fenti példák csak a Length(), Pos(), Delete() és Copy() függvények használatával való karakterláncokkal való munka elvét mutatják be. Most oldjunk meg egy bonyolultabb problémát, amelyhez ezeknek a függvényeknek a kombinált használata szükséges.

Feladat: a Jegyzet mezőbe beírt szöveget bontsa szavakra és jelenítse meg a ListBoxban, soronként egyet. A szavakat szóközök, pontok, vesszők, felkiáltójelek és kérdőjelek választják el egymástól. Ezenkívül jelenítse meg a szövegben lévő szavak teljes számát és a szavak közül a leghosszabbat.

Így van... A feladat egyáltalán nem könnyű. Először is azonnal rá kell jönnie, hogy hurkokat kell használnia. Ezek nélkül nem megy, mert nem tudjuk, hogy milyen szöveg kerül át a programba feldolgozásra. Másodszor, a szavakat különböző szimbólumok választják el egymástól - ez további nehézségeket okoz. Nos, menjünk sorban.

Interfész: Memo1 (TMemo), Button1 (TButton), ListBox1 (TListBox), Label1, Label2 (TLabel).

Először vigyük át a beírt szöveget egy változóba. Ahhoz, hogy az összes szöveget egyszerre vegyük át a Memo-ból, térjünk át a Lines.Text tulajdonságra:

var Szöveg: string; begin Szöveg:=Memo1.Lines.Text; vége;

Most térjünk át a feldolgozásra. Az első dolog, amit meg kell tennie, hogy foglalkozzon a határoló karakterekkel. Az a helyzet, hogy az ilyen szimbólumok könnyen sorba jöhetnek, mert a vesszők, pontok és egyéb karakterek után szóköz van. Ezt a nehézséget így lehet megkerülni egyszerű módon: az összes elválasztó karaktert eggyel helyettesíti, például vesszőt. Ehhez menjünk végig az összes karakteren, és végezzük el a szükséges cseréket. Annak meghatározásához, hogy egy karakter határoló-e, az összes határolót külön karakterlánc-változóba írjuk (konstans), majd a Pos() függvénnyel megkeressük a karakterlánc minden egyes karakterét. Mindezek a cserék egy változóban kerülnek végrehajtásra, így a feljegyzés eredeti szövegét (azaz a képernyőn) nem érinti. A munka közbenső eredményeinek ellenőrzéséhez azonban célszerű valahova kiadni a feldolgozott szöveget. Például egy másik Memo mezőbe. Az összes szimbólum áthaladásához használjuk FOR hurok, ahol a változó végigmegy az összes karakter sorszámán, azaz. 1-től a szövegsor hosszáig:

eljárás TForm1.Button1Click(Sender: TObject); const DelSym = ".,!?"; var Szöveg: string; i:integer; ha Pos(Text[i],DelSym) > 0, akkor Szöveg[i]:=","; Memo2.Text:=Szöveg; vége;

Most meg kell szüntetni az interferenciát. Először is, az első karakter nem lehet határoló, pl. ha az első karakter vessző, akkor azt el kell távolítani. Következő, ha több vessző van egymás után, azokat le kell cserélni egyre. Végül az összes szöveg helyes feldolgozásához az utolsó karakternek vesszőnek kell lennie.

ha Szöveg = "," akkor Törlés(Szöveg,1,1); míg Pos(",",Szöveg) > ha Szöveg<>"," akkor Text:=Szöveg+",";

Itt a csere a következőképpen történik: egy ciklus szerveződik, amelyben az egyik vesszőt eltávolítják, de ez addig történik, amíg két egymást követő vessző van a szövegben.

Nos, most már nem maradt semmi felesleges a szövegben - csak a vesszővel elválasztott szavak. Először is biztosítjuk, hogy a program kivonja az első szót a szövegből. Ehhez megkeressük az első vesszőt, a szöveg elejéről ebbe a vesszőbe másoljuk a szót, majd a vesszővel együtt töröljük ezt a szót a szövegből. A törlés azért történik, hogy ugyanazon művelet végrehajtása után kivághassa a következő szót.

var Szó: string; (...)

Most a Word változóban van egy szó a szövegből, a Szöveg változóban pedig a szöveg többi része. A kivágott szót a ListBox.Items.Add(sor_hozzáadás) meghívásával hozzáadjuk a ListBox-hoz.

Most meg kell szerveznünk egy hurkot, amely lehetővé teszi, hogy minden szót kivágjunk a szövegből, és ne csak az elsőt. Ebben az esetben a REPEAT alkalmasabb, mint a WHILE. A feltétel legyen Length(Text) = 0, azaz. akkor fejezze be a ciklust, amikor a szöveg kiürül, pl. amikor minden szót kivágunk belőle.

ismétlés Word:=Másolás(Szöveg,1,Pos(",",Szöveg)-1); Törlés(szöveg,1,hosszúság(szó)+1); ListBox1.Items.Add(Word); amíg Hossz(Szöveg) = 0;

Jelenleg tehát a következőkkel rendelkezünk:

eljárás TForm1.Button1Click(Sender: TObject); const DelSym = ".,!?"; var Szöveg,Szó: string; i:integer; begin Szöveg:=Memo1.Lines.Text; i:= 1-től Length(Text)-ig csináld ha Pos(Text[i],DelSym) > 0, akkor Szöveg[i]:=","; ha Szöveg = "," akkor Törlés(Szöveg,1,1); míg Pos(",",Szöveg) > 0 Delete(Szöveg,Pos(",",Szöveg),1); ismétlés Word:=Másolás(Szöveg,1,Pos(",",Szöveg)-1); Törlés(szöveg,1,hosszúság(szó)+1); ListBox1.Items.Add(Word); amíg Hossz(Szöveg) = 0; vége;

Ha most futtatja a programot, látni fogja, hogy minden jól működik. Egy dolgot kivéve - néhány üres sor jelent meg a ListBox végén... Felmerül a kérdés: honnan jöttek? Erről a lecke következő részében fogsz tudni, de most végre hajtsuk végre a szükséges dolgokat.

Nagyon könnyű meghatározni a szavak számát a szövegben - nem kell újra írnia semmit. Mert A ListBox-ban vannak felsorolva szavaink; elég csak megtudni, hány sor van - ListBox.Items.Count.

Most meg kell találnia a leghosszabb szót. A maximális szám megtalálásának algoritmusa a következő: a számok közül az elsőt vesszük maximálisnak. Ezután az összes többi számot így ellenőrizzük: ha a szám nagyobb, mint a jelenleg maximumnak írt szám, akkor ezt a számot maximumra tesszük. Esetünkben a maximális szóhosszt kell keresnünk. Ehhez hozzáadhat kódot a szövegből kivágott szavak ciklusához, vagy keresést végezhet, miután az összes szót hozzáadta a ListBoxhoz. Tegyük meg a második módon: szervezzünk hurkot a ListBox sorain keresztül. Figyelembe kell venni, hogy a sorok számozása nullától kezdődik, nem egytől! A leghosszabb szót külön változóban tároljuk. Úgy tűnik, a szó maximális hosszát is el kell tárolnunk, hogy legyen mivel összehasonlítani... De ehhez nem kell külön változót létrehozni, mert mindig megtudhatjuk a szó hosszát a Length() függvény segítségével. Tehát mondjuk az első szó a leghosszabb...

Miért lépj fel a ListBox.Items.Count-1-re, és ne csak a Count-ra, találd ki magad :-)

Most minden készen áll!

eljárás TForm1.Button1Click(Sender: TObject); const DelSym = ".,!?"; var Szöveg,Szó,LongestWord: string; i:integer; begin Szöveg:=Memo1.Lines.Text; i:= 1-től Length(Text)-ig csináld ha Pos(Text[i],DelSym) > 0, akkor Szöveg[i]:=","; ha Szöveg = "," akkor Törlés(Szöveg,1,1); míg Pos(",",Szöveg) > 0 Delete(Szöveg,Pos(",",Szöveg),1); Szöveg:=AnsiReplaceText(Szöveg,Chr(13),""); Szöveg:=AnsiReplaceText(Szöveg,Chr(10),""); ismétlés Word:=Másolás(Szöveg,1,Pos(",",Szöveg)-1); Törlés(szöveg,1,hosszúság(szó)+1); ListBox1.Items.Add(Word); amíg Hossz(Szöveg) = 0; Label1.Caption:="A szavak száma a szövegben: "+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Elemek; i:= 1 esetén ListBox1.Items.Count-1 do if Length(ListBox1.Items[i]) > Length(LongestWord) then LongestWord:=ListaBox1.Elemek[i]; Label2.Caption:="Leghosszabb szó: "+LongestWord+" ("+IntToStr(Length(LongestWord))+" betűk)"; vége;

Munka szimbólumokkal

Valójában a szimbólumokkal való munka két fő függvény használatából ered: Ord() és Chr(). Velük már találkoztunk. Az Ord() függvény a megadott karakter kódját adja vissza, a Chr() függvény pedig éppen ellenkezőleg, a megadott kóddal.

Emlékszel a "Szimbólumtáblázatra"? Csináljuk mi magunk!

A kimenet a TStringGridben lesz végrehajtva. Ez az összetevő egy táblázat, amelyben minden cella szöveges értéket tartalmaz. Az összetevő a Kiegészítő lapon található (alapértelmezés szerint közvetlenül a Standard után jelenik meg). Először is állítsuk fel a táblánkat. Csak két oszlopra van szükségünk: az egyikben a szimbólumkódot jelenítjük meg, a másikban pedig magát a szimbólumot. Az oszlopok száma a ColCount logikai nevű tulajdonságban van beállítva. Állítsa 2-re. Alapértelmezés szerint a StringGridnek egy fix oszlopa és egy rögzített sora van (ezek szürkén jelennek meg). Nincs szükségünk oszlopra, de egy sor nagyon hasznos, ezért FixedCols = 0-t állítunk be, és FixedRows = 1-et hagyunk.

A kitöltés közvetlenül a program indításakor történik, pl. Nem telepítünk semmilyen gombot. Tehát hozzunk létre egy kezelőt az űrlap OnCreate() eseményéhez.

A kódtábla karaktereinek száma 256, plusz a fejléc - összesen 257. Állítsuk be programozottan a sorok számát (bár az Object Inspectorban is beállíthatjuk):

eljárás TForm1.FormCreate(Sender: TObject); begin StringGrid1.RowCount:=257; vége;

A következtetés rendkívül egyszerű - hurok segítségével. Egyszerűen végigmegyünk a számokon 0-tól 255-ig, és megjelenítjük a megfelelő szimbólumot. A fejlécben is megjelenítjük a feliratokat. A StringGrid cellák a Cells tulajdonság segítségével érhetők el: Cells[oszlopszám, sorszám]. Az oszlop- és sorszámok (nullától kezdve) szögletes zárójelben vannak feltüntetve. Az értékek szövegesek.

Indítsuk el és nézzük meg.

Különleges szimbólumok

Ha alaposan megnézi a táblázatunkat, látni fogja, hogy sok szimbólum négyzetként jelenik meg. Nem, ezek nem ikonok. Így jelennek meg azok a karakterek, amelyek nem rendelkeznek vizuális megjelenítéssel. Azok. létezik például egy 13-as kódú szimbólum, de az láthatatlan. Ezeket a szimbólumokat további célokra használjuk. Például a #0 karaktert (vagyis a 0 kódú karaktert) gyakran használják a karakter hiányának jelzésére. Vannak null-végződésű karakterláncok is – ezek a #0 karakterrel végződő karakterláncok. Az ilyen karakterláncokat a C nyelv használja.
A billentyűleütések kódok alapján azonosíthatók. Például az Enter billentyű kódja 13, Escape - 27, szóköz - 32, Tab - 9 stb.

Adjuk hozzá programunkhoz azt a lehetőséget, hogy bármelyik kulcs kódját megtudjuk. Ehhez az űrlap OnKeyPress() eseményét dolgozzuk fel. Ahhoz, hogy ez a mechanizmus működjön, be kell állítania az űrlap KeyPreview = True értékét.

Itt egy ablakot jelenítünk meg szöveggel. Az eseménynek van egy Key változója, amely a lenyomott billentyűnek megfelelő karaktert tárolja. Az Ord() függvénnyel megtudjuk ennek a karakternek a kódját, majd az IntToStr() függvénnyel ezt a számot stringgé alakítjuk.

Példa "komolyabb" - folytatta

Térjünk vissza példánkhoz. Ideje kitalálni, honnan származnak a ListBox üres sorai. A lényeg az, hogy nem teljesen üresek. Igen, vizuálisan üresek, de valójában mindegyikben van 2 speciális karakterek. Ezek 13-as és 10-es kódú karakterek (azaz #13#10. sor). A Windows rendszerben e két nem vizuális karakter sorozata az aktuális sor végét és elejét jelenti új sor. Azok. Minden fájlban és általában bárhol a sortörés két karakterből áll. És ennek megfelelően az egész szöveg folyamatos karaktersorozat marad. Ezeket a karaktereket lehet (sőt kell is) használni olyan esetekben, amikor sortörést kell beszúrni.

Vigyük a szókereső programunkat a logikus végkifejletig. Tehát, hogy megszabaduljunk az üres soroktól, el kell távolítanunk a #13 és #10 karaktereket a szövegből. Ez megtehető egy hurok használatával, hasonlóan ahhoz, ahogy két vesszőt cseréltünk eggyel:

míg Pos(Chr(13),Szöveg) > 0 nem Törlés(Szöveg,Pos(Chr(13),Szöveg),1); míg Pos(Chr(10),Szöveg) > 0 nem Törlés(Szöveg,Pos(Chr(10),Szöveg),1);

Nos, a program teljesen működőképes!

További funkciók a karakterláncokkal való munkához - StrUtils modul

A StrUtils.pas kiegészítő modult tartalmazza további funkciókat húrokkal való munkához. Ezen funkciók között számos hasznos funkció található. Itt Rövid leírás gyakran használt funkciók:

PosEx(részkarakterlánc, sor, behúzás) - a Pos() függvényhez hasonló függvény, de meghatározott pozícióból keres (azaz a sor elejétől behúzva). Például, ha a második szóközt szeretné megtalálni egy karakterláncban, és nem az elsőt, akkor nem nélkülözheti ezt a függvényt. A második szóköz kézi kereséséhez először ki kell vágnia az eredeti karakterlánc egy részét.

AnsiReplaceStr, AnsiReplaceText(karakterlánc, szöveg_1, szöveg_2) - a függvények a szöveg_1 karakterláncot a szöveg_2-re cserélik a karakterláncban. A funkciók csak abban különböznek, hogy az első a karakterek esetét figyelembe véve cserét hajt végre, a második pedig anélkül.

Programunkban ezekkel a függvényekkel kivághatjuk a #13-as és #10-es karaktereket egy karakterláncból úgy, hogy egy üres karakterláncot adunk meg helyettesítő szövegként. Íme a megoldás egy kódsorban:

Szöveg:=AnsiReplaceText(AnsiReplaceText(Szöveg,Chr(13),""),Chr(10),"");

DupeString(karakterlánc, ismétlődések_száma) - egy karakterláncot képez, amely a karakterláncból áll, meghatározott számú ismétléssel.

ReverseString(karakterlánc) - megfordítja a karakterláncot ("123" -> "321").

Érdemes megemlíteni a regiszterkonverziós funkciókat is.

Nagybetűs(karakterlánc) - karakterláncot alakít át nagybetűs; Kisbetűs(karakterlánc) - A karakterláncot kisbetűvé alakítja.

Az egyes karakterek konvertálásához ugyanazokat a függvényeket kell használnia.

Az egyes funkciókról részletes információkat kaphat, ha a kódszerkesztőben bárhová beírja a nevét, ráhelyezi a kurzort erre a névre (vagy kiemeli), és megnyomja az F1 billentyűt.

Képernyőképek a cikkben leírt programokról

Következtetés

Hosszú lecke volt. Tehát ma megismerkedtünk a húrokkal és karakterekkel, és megtanultuk, hogyan kell velük dolgozni. A tanult technikákat szinte mindenhol alkalmazzák. Ne féljen kísérletezni – fejlessze programozási készségeit egyedül!