Programov - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Programov

Description:

Programov n v Pascalu P edn ka 7 RNDr. Hana Havelkov – PowerPoint PPT presentation

Number of Views:93
Avg rating:3.0/5.0
Slides: 19
Provided by: Hank89
Category:
Tags: programov

less

Transcript and Presenter's Notes

Title: Programov


1
Programování v Pascalu Prednáška 7
  • RNDr. Hana Havelková

2
Retezce
  • Deklarace
  • Deklarovaná a skutecná délka retezce
  • Prístup k jednotlivým znakum
  • Porovnávání retezcu
  • Spojování retezcu
  • Typové konstanty
  • Funkce a procedury pro práci s retezci
  • Retezce jako parametry procedur a funkcí

3
Deklarace


string
délka
  • délka 0 -255 znaku
  • Reprezentace promenné typu string
  • jednorozmerné pole znaku indexované od 1 do N
  • aktuální (skutecná) délka uloženého retezce je
    zaznamenána v bytu s indexem 0 (formálne je obsah
    toho bytu typu char)

4
Príklady
  • type
  • TJmeno string 20
  • TNadpis string 60
  • TDen string 2
  • TPredmet string 3
  • var
  • jmeno, prijmeni TJmeno
  • predmet TPredmet
  • veta string
  • zahlavi, zapati TNadpis

5
Prístup k jednotlivým znakum
  • pomocí indexu
  • var
  • S string10
  • priradíme
  • S 'Dobrý den'
  • potom
  • S1 'D' , S2 'o', , S9 'n'
  • skutecná délka S je 9
  • S0 obsahuje znak s kódem 9

6
Náhrada všech y, i podtržítkem
  • uses Crt
  • var
  • veta string
  • i byte
  • begin
  • ClrScr
  • WriteLn ('Zadej vetu ')
  • ReadLn (veta)
  • for i 1 to Length(veta) do if vetai in
    'i','í', 'I','y','ý','Y' then veta i '_'
  • ClrScr
  • WriteLn ('Procvic si psani i y ')
  • WriteLn (veta)
  • ReadLn
  • end.

7
Usporádání retezcu
  • lexikografické dle kódování znaku 4 lt Z lt
    f lt fa lt fb lt g lt c lt á
  • je možné používat relacní operátory , lt, gt, lt,
    gt, ltgt
  • 'Novák' lt 'Novák ' lt 'Nováková'

8
Typové konstanty
  • const
  • NADPIS string 'Programování I'
  • AUTOR string 20 'Jan Soukup'
  • VERZE string 3 '1.0'

9
Kontrola platného identifikátoru
  • const
  • PlatneZnaky set of char '_', 'A'..'Z',
    'a'..'z'
  • Cislice set of char '0'..'9'
  • var
  • id string
  • i, delka byte
  • Chyba boolean
  • begin
  • Chyba false
  • Write('Zadej identifikator ') ReadLn(id)
  • delka Length(id)
  • if (delka 0) or not (id1 in PlatneZnaky)
    then Chyba true else
  • for i 2 to delka do
  • if not ((idi in Cislice) or (idi in
    PlatneZnaky)) then begin
  • Chyba true
  • break
  • end
  • if Chyba then WriteLn('Chyba!') else
    WriteLn('OK')
  • ReadLn

10
Pocet cifer císla zadaného jako retezecs
kontrolou platnosti císla
  • var
  • cislo string
  • n longint
  • kod, cifry integer
  • begin
  • Write('Zadej cislo ') ReadLn(cislo)
  • cifry Length(cislo)
  • if (cislo1'-') or (cislo1'') then
    begin
  • Dec(cifry)
  • cislo Copy (cislo,2,cifry) vypustime
    z retezce znamenko
  • end
  • Val (cislo, n, kod) prevedeni na cislo
  • if kod gt 0 then WriteLn ('Neplatne cislo')
  • else
  • WriteLn('Pocet cifer je ', cifry)
  • ReadLn
  • end.

11
Zjištení pohlaví dle krestního jména
  • const
  • vyjimka1 string 'Rut'
  • vyjimka2 string 'Ester'
  • vyjimka3 string 'Miriam'
  • var
  • jmeno string
  • delka byte
  • vysledek string4
  • posledni_znak char
  • begin
  • Write('Zadej krestni jmeno ')
    ReadLn(jmeno)
  • if (jmeno vyjimka1) or (jmeno vyjimka2) or
    (jmeno vyjimka3) then
  • vysledek 'zena'
  • else begin
  • delka Length(jmeno)
  • posledni_znak jmenodelka
  • if (posledni_znak 'a') or
    (posledni_znak 'e')
  • then vysledek 'zena'
  • else vysledek 'muz'

12
Nactení dlouhého císla
  • type
  • Cislo array 1..100 of byte
  • var
  • C Cislo C1cifra v rádu jednotekPC
    byte pocet ciferS string 100i
    integer
  • beginReadLn(S)PC 0for i Length(S)
    downto 1 do begin inc (PC) CPC
    ord(Si) - ord('0') end.
  • end.

13
Standardní rutiny pro práci s retezci
  • Length(S) aktuální délka retezceConcat(S1, S2,
    , Sn) spojení retezcu za sebe (stejné jako
    pomocí operátoru ) Copy(S, Index,
    Pocet) kopírování cásti retezce S dané
    délky pocínaje od daného indexuDelete(S,
    Index, Pocet) zrušení cásti retezce S dané délky
    pocínaje od daného indexu Insert(Co, Kam,
    Index) do retezce Kam vloží Co na pozici daného
    indexuPos(Co, Kde) pozice prvního výskytu
    podretezce Co v retezci Kde (0 pokud není
    obsažen)

14
Retezec jako parametr procedur a funkcí
  • vstupní parametr (volání hodnotou)
  • je-li formální parametr typu string bez udaného
    poctu znaku, muže být skutecným parametrem string
    bez udaného poctu znaku i stringpocet_znaku
  • je-li formální parametr pojmenovaného typu string
    pocet_znaku, muže být skutecným parametrem
    string bez udaného poctu znaku i
    stringjiny_pocet_znaku
  • výstupní parametr (volání odkazem)
  • používáme pokud
  • chceme nacíst retezce v podprogramu
  • chceme zmenit hodnoty retezce
  • chceme výsledek výpoctu podprogramu uložit do
    retezce
  • u formálního parametru musíme použít var
  • formální a skutecný parametr by mely být shodné
    typy nebo skutecný parametr muže být typ string a
    formální pojmenovaný podtyp typu string

15
Funkce monogram
  • function Monogram (jm string)string
  • var
  • predchozi, aktualni char
  • mono string
  • i byte
  • begin
  • mono '' prázdný retezec
  • predchozi ' ' mezera
  • for i1 to Length(jm) do begin
  • aktualni jmi
  • if (predchozi ' ') and (aktualni ltgt ' ')
    then
  • mono mono UpCase(aktualni)
  • predchozi aktualni
  • end
  • Monogram mono
  • end

16
Funkce Palindrom (1)
  • function Palindrom(text string) boolean
  • var
  • i, delka byte
  • odpoved boolean
  • pomocna vnitrni funkce
  • function SmazMezery (text string) string
  • var
  • vysledek string
  • i byte
  • znak char
  • begin
  • vysledek ''
  • for i 1 to Length(text) do begin
  • znak texti
  • if znak ltgt ' ' then vysledek vysledek
    znak
  • end
  • SmazMezery vysledek
  • end

17
Funkce Palindrom (2)
  • begin
  • odpoved true
  • text SmazMezery(text)
  • delka Length(text)
  • for i1 to delka div 2 do
  • if texti ltgt textdelka-i1 then begin
  • odpoved false
  • break
  • end
  • Palindrom odpoved
  • end

18
Procedura Jmeno
  • upravi jmeno tak, ze první pismeno je velke,
    ostatní mala
  • procedure Jmeno(var jm string)
  • var
  • i byte
  • znak char
  • begin
  • jm1 UpCase(jm1)
  • for i 2 to Length(jm) do begin
  • znak jmi
  • if znak in 'A'..'Z' then
  • jmi chr(ord(znak) ord('a') - ord('A'))
  • end
  • end
Write a Comment
User Comments (0)
About PowerShow.com