Veronika Dropčová
veronika.dropcova(at)gmail.com

   nika.blog.matfyz.sk

07 – string 1

Na minulej hodine sme sa venovali typu CHAR – do premennej tohto typu môžeme uložiť jeden znak, ktorý v pamäti počítača zaberie 8 bitov (čiže 1 byte).

 

Dnes sa budeme venovať typu STRING, čiže reťazcový typ. Jeho veľkosť nie je dopredu určená, v pamäti zaberie toľko miesta, akú hodnotu bude mať. Do premennej typu string môžeme ukladať jedno slovo, celé vety alebo môžeme do tejto premennej posielať hodnoty zo vstupného riadku (edit-u) napr.:

 

var slovo, veta, vstup: string;

begin

slovo:=’hura‘;

veta:=’hura, konečne je tu informatika!‘;

vstup:=edit1.text;

end;

 

Okrem toho vieme do stringovej premennej vložiť spojené hodnoty iných stringových premenných, a to pomocou tzv. zreťazenia (zapisuje sa to pomocou znaku „+“):

 

var zretazenie:string;

begin

zretazenie:=slovo + veta; //vysledkom tohto bude „hurahura, konečne je tu informatika!“

zretazenie:=slovo +‘ ‘+ veta; //vysledkom tohto bude „hura hura, konečne je tu informatika!“

end;

 

Okrem toho zavádzame novú funkciu, ktorú budeme občas pri stringoch používať, a to length(s), ktorá vypočíta dĺžku (počet znakov) stringovej premennej s. Používa sa napr. takto:

 

var dlzka:integer;

begin

dlzka:=length(slovo); //v premennej dlzka bude uložené číslo 4

end;

 

Podobne, ako premenné typu char, aj premenné typu string môžeme porovnávať. Hovoríme, že jeden reťazec je lexikograficky väčší ako ten druhý, ak je v abecednom usporiadaní neskôr. Pozor ale – ‘abeceda’ a ‘Beda’ sú správne lexikograficky usporiadané takto: Beda, abeceda. Prečo? Veľké „B“ je v „pascalovskej abecede“, teda v ASCII tabuľke, skôr ako malé „a“.

 

K jednotlivým znakom v znakovom reťazci sa vieme dostať i tak, že do hranatých zátvoriek zadáme index, t. j. poradové číslo znaku, ku ktorému sa chceme dostať. Napr.:

 

var r:string;

a:char;

begin

r:=’informatika’; //tento reťazec má dĺžku 11, preto indexy môžu byť čísla od 1 po 11

a:=r[3]; //v premennej a bude znak f

a:=r[length(r)]; //v premennej a bude znak a

a:=r[i]; //v premennej a bude i-tý znak, premenná i ale musí byť z rozsahu <1;11>

end;

 

Keďže budeme pracovať s reťazcami, zjednodušíme si aj spôsob výpisu – naučíme sa používať nový komponent memo. Nájdete ho na záložke standard. Do mema sa vypisuje jednoducho:

 

memo1.lines.add(‘hura, hura’); //netreba zadávať žiadne súradnice

Úlohy

1. Naprogramujte program, ktorý vykreslí takéto trojuholníky:

21

 

2. Napíšte program, ktorý bude mať dva vstupné riadky (edit-y). Po kliknutí na tlačidlo vypíše do image-u, ktorý zo zadaných reťazcov (do vstupných riadkov) je menší, resp. väčší, teda vypíše napr.:

slovo < žaba

slovo = slovo

 

 

3. Napíšte program, ktorý prečíta reťazec zadaný vo vstupnom riadku a vypíše ho odzadu.

 

4. Napíšte program, ktorý vypočíta počet písmen, číslic a medzier v nejakom texte.

 

5. Napíšte program, ktorý predpokladá, že sme zadali text s dvoma slovami, ktoré sú oddelené jednou medzerou. Nájde v textu túto medzeru a rozdelí ho na dva reťazce: prvé a druhé slovo.

 

6. Napíšte program, ktorý načíta vetu (s hocijakým počtom slov) a každé z týchto slov vypíše do samostatného riadka. Ošetrite aj prípad, že sa v texte nachádza viac medzier za sebou – vtedy nechceme mať vo výpise prázdne riadky.

 

7. Napíšte program, ktorý bude šifrovať zadaný text cézarovou šifrou, teda posunie každé písmeno o jeden znak v abecede doprava. Napr. slovo hura bude zasifrovanie ako gvsb.

 

8. Program zo vstupného riadka prečíta tri slová oddelené medzerou a vypíše všetky permutácie týchto troch slov.

 

9. Program číta zo vstupného riadka dvojice čísel oddelené medzerou. Tieto čísla reprezentujú súradnice bodov v grafickej ploche. Program takto definované body spája úsečkami.

 

10. Program v zadanej vete všetky samohlásky nahradí nejakou konkrétnou samohláskou. Napr. pre samohlásku ‘i’ by z vety ‘Sedi mucha na stene’ spravil ‘Sidi michi ni stini’.

 

11. Napíšte program, ktorý spočíta počet samohlások vo vete.

 

Domáce úlohy, každá za 3 body, deadline 9.4.2017 o 23:59

Úlohy č. 10 a č. 11.

 

BONUS za 3 body, deadline 9.4.2017 o 23:59

Úloha č. 6.

 

 

 

 

 

 

 

 

 

One Response so far.

  1. Igor Belai píše:

    Toto mi pride moc lahke… nechce niekto maturovat za mna?

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *