312
Informatika I Tomas Plankis 2012

Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Informatika I

Tomas Plankis

2012

Page 2: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

2 / 278

Page 3: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Susipažinkime

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

3 / 278

dr. Tomas Plankis

Page 4: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

4 / 278

"Paradoksalu, tačiau šiais laikais: musu pastatai didesni, betmažesnes bažnyčios, platesni keliai, tačiau siauresni požiuriai,

išleidžiame daugiau, bet turime mažiau, perkam daugiau, tačiaudžiaugiames mažiau, namai didesni, tačiau mažesnes šeimos, daugiau

patogumu, bet mažiau laiko, moksliniai laipsniai aukštesni, betžodžiuose ir darbuose mažiau prasmes, daugiau žiniu, bet mažiauteisingumo, geresne medicina, tačiau mažiau sveikatos... Išmokomekaip pragyventi, bet ne gyventi, išvalem orą, bet užteršem sielą,

užkariavom kosmosą, bet nebepažistame vidinio pasaulio... Išmokomskubeti, bet nebemokam palaukti..."

Robert Fulghum

Page 5: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas jusu laukia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

5 / 278

Python’as

Page 6: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas jusu laukia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

5 / 278

Python’as(Visus du semestrus!)

Page 7: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra pitonas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

6 / 278

Page 8: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ką veiksime

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

7 / 278

■ Python programavimo kalba ir jos interpretatorius, algoritmosamprata, programos rašymo taisykles, skyrybos reikšme.

■ Kintamieji ir duomenu tipai, slankaus kablelio aritmetika ir josapribojimai, priskirimo sakinys, sąlyginis sakinys, ciklai.

■ Duomenu strukturos: simboliu sekos, sąrašai, aibes, kortežai,žodynai, naudotojo apibrežiamos duomenu strukturos.

■ Funkcijos samprata ir sintakse, standartines bibliotekos, failuskaitymas ir rašymas.

■ Klaidu valdymas, testavimas, duomenu vaizdavimas atmintyje.

Page 9: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivertinimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

8 / 278

G = E + I

Page 10: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivertinimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

9 / 278

G =E + I

2

Page 11: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Egzaminas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

10 / 278

TESTAS

Page 12: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Egzaminas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

10 / 278

TESTAS10 klausimu

Page 13: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Literatura

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

11 / 278

■ Alex Martelli, "Python in a Nutshell 2nd edition"■ Mark Pilgram, "Dive Into Python",

http://www.diveintopython.net■ Swaroop C.H., "A Byte of Python", http://www.swaroopch.com■ http://www.python.org

Page 14: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Algoritmo samprata

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

12 / 278

Page 15: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

13 / 278

"Nesupyk, bet manęs NIEKIENO nuomone nedomina. Niekieno irjokia tema. Todel, kad aš daug, nepadoriai daug žinau. Ir ne todel,

kad esu "ypatingas", o todel, kad tuo metu, kai kiti kaip arkliai dirba,vaikosi paskutinio mados klyksmo, užsiimineja pokalbiais apie nieką,

"kala babkes" ir vartoja, vartoja, vartoja, AŠ UŽSIIMUSAVIŠVIETA."

Nugirstas pokalbio fragmentas.

Page 16: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Algoritmo samprata

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

14 / 278

Kas yra algoritmas?

Page 17: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Algoritmo samprata

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

14 / 278

Kas yra algoritmas?

Tai veiksmu seka, kurią reikia atlikti norint pasiekti tam tikrąrezultatą.

Page 18: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

15 / 278

Norime išsivirti arbatos. Ką daryti?

1. Pripilame vandens i arbatinuką.2. Užkaičiame.3. I puodeli idedame arbatžoliu.4. Kai vanduo užvirs, užplikome arbatžoles.

Page 19: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Klausimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

16 / 278

Ar viskas gerai?

Page 20: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Klausimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

16 / 278

Ar viskas gerai?Ar iš tiesu viskas gerai?

Page 21: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Atsakymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

17 / 278

Taip. Mes atsakeme, ką reikia daryti, norint išsivirti arbatos. Bet

Page 22: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Atsakymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

17 / 278

Taip. Mes atsakeme, ką reikia daryti, norint išsivirti arbatos. Betne kaip tą atlikti !!!

Page 23: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

18 / 278

1. Pripilame vandens i arbatinuką.

(a) Pasirenkame kokiu budu virinsime vandeni: ant ugnies(dujine virykle taip pat tinka), ant elektrines virykles,elektriniame virdulyje

(b) Pagal pasirinktą budą pasirenkame tam skirtą arbatinuką(c) Atidengiame angą skirtą vandens pripylimui (jei yra)(d) Pripildome arbatinuką vandens ne mažiau ir ne daugiau nei

numatyta (veiksmą galima detalizuoti)(e) Uždengiame angą (jei buvo atidaryta)

2. Užkaičiame...3. I puodeli idedame arbatžoliu...4. Kai vanduo užvirs..., užplikome arbatžoles...

Page 24: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išvada

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

19 / 278

Algoritmas – tai tiksliu veiksmu seka, kuri nusako ką ir kaip reikiaatlikti, norint gauti rezultatą.

Page 25: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Privalomos sąlygos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

20 / 278

1. jis turi atlikti darbą2. jis turi buti aiškus ir nedviprasmiškas3. jis turi apibrežti žingsniu seką, reikalingą darbui atlikti, t.y. jis turi

nurodyti žingsniu atlikimo tvarką4. algoritmas turi buti baigtinis:

(a) atliekamu žingsniu skaičius turi buti baigtinis, t.y.algoritmas turi tikrai baigti darbą

(b) kiekvienam žingsniui atlikti turi pakakti baigtinio laiko irbaigtiniu resursu, t.y. kiekvienas žingsnis turi buti toks, kadji butu galima atlikti

Page 26: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Algoritmu tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

21 / 278

■ 1-3 punktus tenkinantys algoritmai vadinami daliniais■ 1-5 punktus tenkinantys algoritmai vadinami pilnais

Page 27: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys III

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

22 / 278

1. Atnešk vandens2. Kartok pirmą žingsni

Page 28: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Uždavinio sprendimo metodika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

23 / 278

Skaldyk ir valdyk.

Page 29: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Namu darbai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

24 / 278

Parašykite algoritmą kokiam nors kasdieniniam darbui atlikti.

Page 30: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Python’o interpretatorius

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

25 / 278

Page 31: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

26 / 278

Gyvenimas tiktai viena garantuoja visiems be išimties ir veltui – mirti,visa kita – priklauso nuo tavo pastangu.

Page 32: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

27 / 278

Python’as - interpretuojama programavimo kalba.

Page 33: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Python’o savybes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

28 / 278

1. Paprastas2. Lengvai išmokstamas3. Nemokamas ir atviro kodo4. Aukšto lygio programavimo kalba5. Daugiaplatformis6. Interpretuojamas7. Objektiškai orientuotas8. Išplečiamas9. Iterpiamas10. Daug biblioteku

Page 34: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Interpretuojamas... Ką tai reiškia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

29 / 278

Kompiliuojama programa, pavyzdžiui, parašyta su C ar C++, yrapakeičiama iš pirminio kodo i kalbą, kurią supranta kompiuteris, t.y. 0ir 1 (dvejetainis arba binarinis kodas). Vykdant programą, ikelykle(loader) nukopijuoja programą i atminti ir ją paleidžia.Python’as nekompiliuoja pirminio kodo, o ji vykdo iš karto. Vidinismechanizmas paverčia pirmini kodą i tarpinę baitinę programą(bytecode), kuri po to yra transliuojama i kompiuterinę kalbą irivykdoma.

Page 35: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas namelyje gyvena?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

30 / 278

$ python −VPython 3 . 2 . 2

Page 36: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pirmoji programa

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

31 / 278

> pythonPython 2 . 6 . 1 ( r261 :67515 , Jun 24 2010 , 2 1 : 4 7 : 4 9 )[GCC 4 . 2 . 1 ( Apple I n c . b u i l d 5646) ] on da rw inType " he l p " , " c o p y r i g h t " , " c r e d i t s " or " l i c e n s e "fo r more i n f o rma t i o n .>>> pr in t ( " Sve i ka s , ␣ P a s a u l i ! " )Sve i ka s , P a s a u l i !>>>

Page 37: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Naudojantis failais I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

32 / 278

Imkime pati paprasčiausią tekstini redaktoriu (pavyzdžiui, Notepad,TextEdit, GEdit ir t.t.). Sukurkime naują failą ir jame irašykime:

#!/ u s r / b i n / python#Fi l ename : mano_pirmoji_programa . py

pr in t ( ’ Sve i ka s , ␣ P a s a u l i ! ’ )

Išsaugokime pavadinimu mano_pirmoji_programa.py.

Page 38: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Naudojantis failais II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

33 / 278

$ python mano_pirmoji_programa . pySve i ka s , P a s a u l i !

Page 39: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ką reikia žinoti

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

34 / 278

Simbolis # nurodo, kad tai yra komentaras ir interpretatoriusnekreipia demesio i tokias eilutes išskyrus vieną atveji, kuometpirmoje eiluteje yra dvieju simboliu derinys – #!, po kurio sekaprogramos vieta. Tai nurodo GNU/Linux’inems arba Unix’inemssistemoms kuri interpretatoriu naudoti vykdant programą. Tačiau betkurioje sistemoje galima paleisti programą naudojantis komandapython failo_pavadinimas.py.

Page 40: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Paleidžiamasis failas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

35 / 278

$ chmod a+x h e l l o w o r l d . py$ . / mano_pirmoji_programa . pySve i ka s , P a s a u l i !

Page 41: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Jei nežinome, kur pasislepe Python’as

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

36 / 278

GNU/Linux’uose ir Unix’uose yra programele env, kuri surasinterpretatoriu ir paleis programą. Tokiu atveju pirmoji eilute turetubuti tokia:

#!/ u s r / b i n / env python

arba tokia

#!/ u s r / b i n / env python3

Page 42: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sintakse, semantika, pragmatika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

37 / 278

Page 43: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

38 / 278

Bet kuri programavimo kalba turi savo taisykles, kaip reikia užrašytiprogramą.

Page 44: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Taisykliu tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

39 / 278

1. Sintakse – tai reikalavimu, kuriuos turi tenkinti bet kuriprogramavimo kalbos programa, visuma.

2. Semantika – tai taisykles, nusakančios kokias operacijas ir kokiaeile turi atlikti mašina, veikdama pagal bet kokią programą, t.y.semantika nusako programavimo kalbos konstrukciju prasmę.

3. Pragmatika – tai programavimo metodologija, t.y. metodu,kuriais iš uždavinio formuluotes sudaroma sprendimo programa,aprašymas.

Page 45: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sintakse

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

40 / 278

"Turetu buti vienas ir, pageidautina, tik vienas akivaizdus budas taipadaryti."

(The Zen of Python)

Page 46: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Raktiniai žodžiai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

41 / 278

and del for lambda raiseas elif from None (3.x) return

assert else global nonlocal (3.x) True (3.x)break except if not tryclass exec (paš. 3.x) import or while

continue False (3.x) in pass withdef finally is print (paš. 3.x) yield

Page 47: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Itrauka (indentation)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

42 / 278

Skirtingai nuo daugumos kitu programavimo kalbu, kurios blokuženklinimui naudoja raktinius žodžius (Paskalyje begin ir end) arbasimbolius (C, Java kalbose { ir }), Python’as naudoja tarpus. Blokopradžioje rašomas dvitaškis ":". Rekomenduojama naudoti 4 tarposimbolius arba juos atitinkanti tabuliatoriu vieno lygio itraukai.Programoje nerekomenduojama naudoti mišru žymejimą, nestabuliatoriaus reikšme skirtingose platformose gali skirtis. Be to,galima gauti klaidą del netinkamo itrauku "ilgio".

Page 48: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

43 / 278

void foo ( i n t x ){

i f ( x == 0) {bar ( ) ;baz ( ) ;

} e l s e {qux ( x ) ;foo ( x − 1 ) ;

}}

def foo ( x ) :i f x == 0 :

bar ( )baz ( )

e l s e :qux ( x )foo ( x − 1)

Page 49: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

44 / 278

"Neteisingas" C kodas:

fo r ( i = 0 ; i < 20 ; ++i )a ( ) ;b ( ) ;

c ( ) ;

Page 50: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys III

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

45 / 278

Neteisingas Python’o kodas:

i f True :pr in t "Answer"pr in t "True"

e l s e :pr in t "Answer"

pr in t " Fa l s e "

Page 51: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Komentarai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

46 / 278

Simbolis # nurodo, kad tai yra komentaras.

Page 52: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Komentarai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

46 / 278

Simbolis # nurodo, kad tai yra komentaras.Komentarą gali sudaryti tik viena eilute!Tiek komentarai, tiek tuščios eilutes interpretatoriaus yraignoruojamos. Išskyrus du atvejus - kai nurodomas kompiliatoriusir/arba nurodomas failo kodavimo tipas. Failo kodavimo tipasnurodomas pirmoje arba antroje programos eiluteje:

# −∗− cod ing : <kodavimo−pavad in imas> −∗−

Page 53: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sakinys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

47 / 278

Sakinys baigiasi nauja eilute. Norint pratęsti eilutę reikia naudotisimboli "\" :

t o t a l = p i rma_da l i s \a n t r a_da l i s

Jei naudojami skliausteliai [], {}, (), tuomet pratęsimo simbolionaudoti nereikia. Sakiniu atskyrimui toje pačioje eiluteje naudojamasir kabliataškis ";":

i f x < y : pr in t ( x ) ; pr in t ( y )

Page 54: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Identifikatoriai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

48 / 278

Identifikatoriu vardai gali buti sudaryti iš raidžiu ir skaitmenu (išskyruspirmą simboli). Taip pat galima naudoti pabraukimą "_". Nuo 3.xversijos galima naudoti ne tik ASCII, bet ir UNICODE simbolius.

Page 55: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Specialus žymejimai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

49 / 278

■ _* – interaktyviame režime identifikatorius "_" naudojamasišsaugoti paskutinio iverčio rezultatui.

■ _*_ – sistemos apibrežti identifikatoriai.■ __* – privatus klases identifikatoriai.

Page 56: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Semantika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

50 / 278

Kad lengviau butu suprasti, kokios klaidos yra daromos, pateiksimepavyzdi.

Page 57: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Semantika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

50 / 278

Kad lengviau butu suprasti, kokios klaidos yra daromos, pateiksimepavyzdi.Dalyba iš nulio.

Page 58: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pragmatika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

51 / 278

Programa turetu atlikti tik tiek žingsniu, kiek yra butina rezultatuipasiekti

Page 59: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pragmatika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

51 / 278

Programa turetu atlikti tik tiek žingsniu, kiek yra butina rezultatuipasiekti arba nenaudoti to, ko tikrai nereikia.

Page 60: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kintamieji ir duomenu tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

52 / 278

Page 61: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Objektai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

53 / 278

Python’as yra stipriai objektiškai orientuota programavimo kalba. Taireiškia, kad apie viską kalbama kaip apie objektą, iskaitant skaičius,simboliu eilutes ir funkcijas.

Page 62: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kintamieji

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

54 / 278

Kintamąji aprašo jo vardas. Yra kelios paprastos taisykles, kuriu reikialaikytis.

■ Vardas turi prasideti raide arba "_".■ Galima naudoti raides, skaičius ir "_".■ Didžiosios ir mažosios raides skiriasi.

Page 63: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dar šis tas...

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

55 / 278

Python’as yra dinamiškai tipizuota programavimo kalba. Tai reiškia,kad kintamieji neturi fiksuoto tipo, bet ji turi kintamajam priskiriamareikšme. Todel yra teisingas toks kodo fragmentas:

x = 5pr in t ( x )x = "Tas␣ p a s l a p t i n g a s ␣ p a s a u l i s "pr in t ( x )

Python’as taip pat yra stipriai tipizuota programavimo kalba. Taireiškia, kad tipai visuomet kontroliuojami ir juos reikia išreikštiniubudu konvertuoti, norit pakeisti tipą.

Page 64: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Duomenu tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

56 / 278

■ Sveikieji skaičiai (integer) – ..., -2, -1, 0, 1, 2, ... 32 bitai■ Realieji skaičiai (float) – 3.14, 10., 1e100, 3.14e-10. 64 bitai■ Dideli sveikieji skaičiai (long integer) – labai dideli skaičiai, ju

pabaigoje rašome "L", 234187626348292917L, 7L■ Aštuntainiai sveikieji skaičiai – pagrindo 8 sveikieji skaičiai,

prasideda 0, pvz., 0177■ Šešioliktainiai sveikieji skaičiai – pagrindo 16 sveikieji skaičiai,

prasideda 0x, pvz., 0x9FC■ Kompleksiniai – sudaryti iš realios ir menamos daliu, 3 + 4j, 1.23

- 0.7j■ Simboliu eilutes (string)■ Sąrašas (list)■ Žodynas (dictionary)■ Kortežas (tuple)■ Aibes (set)■ Failas (file)

Page 65: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilutes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

57 / 278

Simboliu sekos tarp kabučiu, ’seka’, "kita seka" yra vadinamossimboliu eilutemis. Naudodami kairini brukšni "\" eilutes galenurodome, kad sekanti eilute yra dabartines tęsinys. Taip pat galimanaudoti trigubas kabutes.

>>> h e l l o = "Tai ␣ y ra ␣ l a b a i ␣ i l g a ␣ e i l u t e , ␣\n\. . . ␣ s ud a r y t a ␣ i s ␣ k e l i u ␣ t e k s t o ␣ e i l u c i u . \ n\. . . ␣␣␣␣␣Tarpas ␣ s i o s ␣ e i l u t e s ␣ p r a d z i o j e ␣ y ra \. . . ␣ r e i k sm i n g a s . ">>> pr in t ( h e l l o )

Page 66: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilutes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

58 / 278

■ Eilutes yra indeksuojamos.■ Pačios eilutes negali buti keičiamos.■ Eilutes yra iteruojamos eilute[x:y], kur x ir y nurodo atkarpos

pradžią ir pabaigą [x, y). Kiekvienas iš ju nera butinas.■ Standartine funkcija len() grąžina eilutes ilgi.

Indeksavimas gali buti ir neigiamas!P a g a l b a0 1 2 3 4 5 6-7 -6 -5 -4 -3 -2 -1

Page 67: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilutes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

59 / 278

>>> ’ spam␣ eggs ’’ spam␣ eggs ’>>> ’ doesn \ ’ t ’" doesn ’ t ">>> "doesn ’ t "" doesn ’ t ">>> ’ "Yes , " ␣he␣ s a i d . ’’ "Yes , " ␣he␣ s a i d . ’>>> "\"Yes , \" ␣he␣ s a i d . "’ "Yes , " ␣he␣ s a i d . ’>>> ’ " I s n \ ’ t , " ␣ she ␣ s a i d . ’’ " I s n \ ’ t , " ␣ she ␣ s a i d . ’

Page 68: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aibe

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

60 / 278

Aibe yra nerikiuotu elementu rinkinys, kuriame nera pasikartojančiuelementu.

>>> baske t = [ ’ app l e ’ , ’ o range ’ , ’ app l e ’ ,’ pea r ’ , ’ o range ’ , ’ banana ’ ]>>> f r u i t = s e t ( ba ske t )>>> f r u i ts e t ( [ ’ o range ’ , ’ pea r ’ , ’ a pp l e ’ , ’ banana ’ ] )

Dirbame kaip su aibemis – sankirta, sąjunga, skirtumas ir t.t..

Page 69: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sąrašas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

61 / 278

Sąrašą sudaro elementu rinkinys apskliaustas laužtiniais skliaustais. Išesmes tai yra sunumeruota elementu seka (pradedant nuliniuelementu)):

>>> a = [ ’ spam ’ , ’ eggs ’ , 100 , 1234]>>> a[ ’ spam ’ , ’ eggs ’ , 100 , 1234]

Taip pat tinka funkcija len()Kai kuriose programavimo kalbose tai butu masyvo atitikmuo su tamtikrom išimtimis.

Page 70: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Žodynas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

62 / 278

Tai yra nesutvarkytu poru raktas : reikšme aibe, žymima {}.

>>> t e l = { ’ j a c k ’ : 4098 , ’ sape ’ : 4139}>>> t e l [ ’ gu ido ’ ] = 4127>>> t e l{ ’ sape ’ : 4139 , ’ gu ido ’ : 4127 , ’ j a c k ’ : 4098}

Raktu gali buti bet kuris nekintamas tipas.

Page 71: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Žodynas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

63 / 278

■ del() – ištrina žodyno irašą.■ jei irašoma nauja reikšme panaudojant egzistuojanti raktą, sena

reikšme "pamirštama".■ jei bandysite gauti reikšmę naudodamiesi neegzistuojančiu raktu –

gausite klaidą.■ keys() – grąžina naudojamu raktu sąrašą.■ sort() – surikiuoja sąrašą.■ in – tikrina ar yra raktas žodyne.■ dict() – sukonstruoja žodyną iš kortežu sąrašo.

Page 72: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kortežas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

64 / 278

Keliu reikšmiu seka atskirta kableliais. Taip pat numeruojama nuo 0.Kai kuriose programavimo kalbose tai primintu irašo tipą.

>>> t = (12345 , 54321 , ’ l a b a s ! ’ )>>> t [ 0 ]12345>>> t(12345 , 54321 , ’ l a b a s ! ’ )

Kortežai, kaip ir eilutes negali buti keičiami, bet galima sukurtikortežą, kurio nariai yra kintami objektai.Norint sukurti tuščią kortežą pakanka panaudoti skliaustelius "()", onorint sukurti kortežą su vienu elementu – "(5, )"

Page 73: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operacijos ir reiškiniai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

65 / 278

Page 74: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operacijos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

66 / 278

Norint sekmingai programuoti, reikia gerai žinoti kokias operacijasgalima atlikti ir koki rezultatą jos grąžina.

Page 75: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operatoriai I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

67 / 278

Operatorius Reikšme Pavyzdžiai+ Sudeda du objek-

tus3 + 5 = 8; ’a’ + ’b’ = ’ab’.

- Atima vieną skai-čiu iš kito

-5 suprantamas kaip 0 - 5;10 - 5 = 5.

* Sandauga 2 * 3 = 6; ’la’ * 3 = ’lalala’.** Laipsnis 3 ** 4 = 3 * 3 * 3 * 3./ Dalyba 4 / 3 = 1.(3) (3.x).// Sveikoji dalyba 4 // 3 = 1, 7 // -3 = -3

(floor).% Liekana 8 % 3 = 2; -25.2 % 2.25 =

1.5.« Bitinis postumis i

kairę2 « 2 = 8. 810 = 102,pastumus per 2 pozicijasgausime 10002 = 810.

» Bitinis postumis idešinę

11 » 1 = 5.

Page 76: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operatoriai II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

68 / 278

Operatorius Reikšme Pavyzdžiai& Bitinis AND 5 & 3 = 1, nes 0101 & 0011

= 0001.| Bitinis OR 5 | 3 = 7.∧ Bitinis XOR 5 ∧ 3 = 6.∼ Bitinis NOT

-(x+1)5 = -6.

< Mažiau 5 < 3 => False; 3 < 5 =>True.

> Daugiau 5 > 3 => True.<= Mažiau arba lygu 3 <= 6 => True.>= Daugiau arba lygu 6 >= 6 => True.== Lygu 2 == 2 => True; ’str’ ==

’str’ => True’.!= Nelygu 2 != 3 => True.

Page 77: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operatoriai III

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

69 / 278

Operatorius Reikšme Pavyzdžiainot Loginis paneigimas not True => False.and Loginis AND x = False; y = True; x and

y => False. Kadangi x yraFalse, tai y nera ivertinamas.

or Loginis OR y or x => True. x taip patnera ivertinamas.

Page 78: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Santrumpos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

70 / 278

Santrumpa Reikšmea *= b a = a * ba +=b a = a + ba -=b a = a - ba /=b a = a / ba //=b a = a // ba % =b a = a % b

Page 79: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operatoriu hierarchija I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

71 / 278

Sąrašas pateikiamas nuo mažiausio prioriteto iki didžiausio.Operatorius Aprašaslambda Lambda išraiška

or Loginis ORand Loginis ANDnot x Loginis NOT

in, not in Priklausomybes tikrinimasis, is not Identiškumo tikrinimas

<, <=, >, >=, !=, == Palyginimai| Bitinis OR∧ Bitinis XOR& Bitinis AND

«, » Postumiai+, - Suma ir skirtumas

*, /, //, % Sandauga, dalybos operacijos... ...

Page 80: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operatoriu hierarchija II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

72 / 278

... ...+x, -x Teigiamas, neigiamas∼ x Bitinis NOT** Kelimas laipsniu

x.attribute Kreipimasis i atributąx[index] Elementas

x[index1:index2] Poaibisf(arguments ...) Funkcijos kvietimas(expressions, ...) Skliausteliai arba kortežas[expressions, ...] Sąrašas{key:datum, ...} Žodynas

Page 81: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Reiškiniai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

73 / 278

Python’o kalba leidžia naudoti daug ivairiu reiškiniu. Be atominiu(nebedalomu) išraišku galima naudoti ir tokias:

■ x = y = z – suprantama kaip x = (y = z)■ x < y < z – suprantama kaip x < y and y < z

Page 82: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Slankaus kablelio aritmetika

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

74 / 278

Page 83: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dvejetaine išraiška

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

75 / 278

Slankaus kablelio skaičiai kompiuteriuose atvaizduojami dvejetainemistrupmenomis. Pavyzdžiui,0.12510 = 1/10 + 2/100 + 5/1000, arba0.0012 = 0/2 + 0/4 + 1/8.

Page 84: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Problema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

76 / 278

Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,3

Page 85: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Problema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

76 / 278

Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,33

Page 86: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Problema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

76 / 278

Pameginkime nustatyti, kur slypi problema. Aproksimuokime skaičiu1/3. Galime aproksimuoti: 0,333ir t.t. T.y. galime aproksimuoti kaip norime tiksliai, bet niekadanegausime 1/3.

Page 87: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Problema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

77 / 278

Lygiai taip pat neimanoma dešimtainio skaičiaus 0,1 tiksliaiatvaizduoti kaip dvejetaines trupmenos. Dvejetaineje skaičiavimosistemoje, 1/10 yra begaline pasikartojanti trupmena:0.000110011...

Page 88: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aproksimacija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

78 / 278

Paemus fiksuotą kieki bitu, gausime aproksimaciją.Dauguma šiandieniniu mašinu slankaus kablelio skaičius aproksimuojadvejetaine trupmena, kurios skaitiklis naudoja pirmuosius 53 bitus,pradedant pačiu reikšmingiausiu, ir dvejeto laipsnio vardikliu.1

10≃

3602879701896397

255 .

Page 89: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Vaizdavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

79 / 278

Svarbu suprasti, kad tai, kas matoma (spausdinama reikšme), nevisada yra tai, kas saugoma atmintyje ("tikroji" reikšme).0,1 =0,1000000000000000055511151231257827021181583404541015625,bet

Page 90: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Vaizdavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

79 / 278

Svarbu suprasti, kad tai, kas matoma (spausdinama reikšme), nevisada yra tai, kas saugoma atmintyje ("tikroji" reikšme).0,1 =0,1000000000000000055511151231257827021181583404541015625,bet

>>> 1/100.10000000000000001

Page 91: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Nelinksmos išvados

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

80 / 278

Kuo ypatingi skaičiai:

■ 0,1■ 0,10000000000000001■ 0,10000000000000000555-

11151231257827021181583404541015625

Visi jie aproksimuojami ta pačia dvejetaine trupmena.

Page 92: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Klausimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

81 / 278

0,1 + 0,1 + 0,1 = ?

>>> round ( . 1 , 1) + round ( . 1 , 1) + round ( . 1 , 1) == round ( . 3 , 1)F a l s e

Page 93: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kur problema?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

82 / 278

>>> 0.10.10000000000000001>>> 0.30.29999999999999999

Page 94: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas kaltas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

83 / 278

Page 95: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas kaltas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

83 / 278

"Geležis". Problema slypi pačioje dvejetaines aritmetikos prigimtyje,bet

Page 96: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas kaltas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

83 / 278

"Geležis". Problema slypi pačioje dvejetaines aritmetikos prigimtyje,bet dažniausiai gausime norimą rezultatą.

Page 97: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

84 / 278

■ Decimal■ Fractions■ Numerical ir kt. iš SciPy (http://scipy.org)

Page 98: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Baigiant

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

85 / 278

Programuoti reiketu atsižvelgiant i šią problemą ir rašyti kodą taip,kad jos neliktu.

Page 99: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sakiniai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

86 / 278

Page 100: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Srauto valdymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

87 / 278

Programos srauto valdymu yra vadinama programinio kodo vykdymotvarka.

Page 101: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra pasirinkimas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

88 / 278

Page 102: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra pasirinkimas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

89 / 278

Page 103: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra pasirinkimas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

90 / 278

Page 104: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sąlyginis sakinys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

91 / 278

Sąlyginis sakinys leidžia pasirinkti, kuri programinio kodo dalis busivykdyta.

Page 105: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sintakse

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

92 / 278

i f e x p r e s s i o n :s ta t ement ( s )

e l i f e x p r e s s i o n :s ta t ement ( s )

. . .e l s e :

s t a t ement ( s )

Page 106: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

93 / 278

i f x < 5 :pr in t " s k o l a "

e l i f x < 9 :pr in t " g e r a i "

e l s e :pr in t " p u i k i a i "

Page 107: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Svarbu žinoti

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

94 / 278

■ "elif" ir "else" dalys nera privalomos;■ sąlyginis sakinys vykdomas eiles tvarka (iš viršaus žemyn) ir

ieškoma pirmoji sąlyga, kuri grąžina rezultatą "True". Ivykdomitik tai sąlygai priklausantys sakiniai ir sakinys užbaigiamasvykdyti;

■ "else" dali galima apibudinti kaip "visais kitais atvejais" ir, jei jibuvo panaudota, ji bus ivykdyta, jei ankstesnes sąlygosnetenkinamos.

Page 108: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Svarbu žinoti 2

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

95 / 278

Kitose programavimo kalbose buna realizuotas invariantinis sakinys.Deja, bet Python’e jis nera realizuotas ir reikia naudoti sąlyginiussakinius arba, objektinio programavimo atveju, išnaudoti polimorfizmoteikiamas galimybes. Vis delto, egzistuoja galimybe "nulaužti"programavimo kalbą ir tam tikrus atvejus realizuoti žodyno pagalba.Tai aptarsime kitame skyriuje.

Page 109: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra ciklas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

96 / 278

Page 110: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklo apibrežimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

97 / 278

Ciklas yra tam tikros programos dalies kartojimas tol, kol yratenkinama tam tikra sąlyga.

Page 111: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Schematinis vaizdavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

98 / 278

Page 112: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklu tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

99 / 278

■ while – kartojama tol, kol tenkinama sąlyga■ for – kartojama tol, kol išraiška yra iteruojama

Page 113: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklas "while"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

100 / 278

whi le e x p r e s s i o n :s ta t ement ( s )

Page 114: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

101 / 278

x = 10count = 0whi le x > 0 :

x = x / 2count += 1

pr in t "$log_2x$␣ a p y t i k s l i a i ␣ l y g u s " , count

Page 115: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklas "for"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

102 / 278

fo r v a r i a b l e in i t e r a t o r :s t a t ement ( s )

Page 116: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

103 / 278

fo r l e t t e r in " c i a o " :pr in t "duok␣man" , l e t t e r , " . . . "

Page 117: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Iteratoriai 1

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

104 / 278

Iteratoriumi gali buti bet kokia išraiška, tinkanti itaisytąjai (built-in)funkcijai iter, kuri ir grąžina iteratoriu kaip objektą. Pavyzdžiui, betkokia seka yra iteruojama. Apibendrinant, jei išraišką galimasunumeruoti, tuomet ji yra ir iteruojama. Ciklas vykdomas tiek kartu,kiek yra elementu.

Page 118: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Iteratoriai 2

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

105 / 278

Kadangi dažnai reikia sveikuju skaičiu seku, Python’as turi itaisytąsiasfunkcijas range ir xrange, kurios generuoja ir grąžina sveikuju skaičiusekas. range funkcija grąžina sąrašą reikšmiu, tuo tarpu xrangegrąžina specialiai iteratoriui skirtą objektą

Page 119: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Amžinas ciklas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

106 / 278

Dirbant su ciklais reikia nepamiršti, kad blogai parašius kodą gausimeamžiną ciklą. Ciklo "while" atveju turi buti užtikrinta, kad sąlygatikrai bus kada nors nepatenkinama. Ciklo "for" atvejunerekomenduojama modifikuoti iteratoriaus (prideti, iterpti ar ištrintielementu)

Page 120: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklo valdymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

107 / 278

Nors ciklas baigęs darbą sustoja pats, bet buna atveju, kai reikia cikląvaldyti "rankiniu" budu gavus tam tikras reikšmes. Tam yranaudojami sakiniai:

■ break■ continue■ pass

Page 121: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

"break"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

108 / 278

Naudojamas tik ciklo viduje. Nutraukia ciklo vykdymą.

x = 0whi le True :

x += 1i f x==100:

break

Page 122: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

"continue"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

109 / 278

Naudojamas tik ciklo viduje. Praleidžia "ejimą", t.y. pereinama priekito iteratoriaus žingsnio.

fo r x in range (1 , 10)i f x % 2==0:

continuee l s e :

pr in t x , " y ra ␣ n e l y g i n i s "

Page 123: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

"pass"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

110 / 278

Python’o sudetiniu sakiniu struktura yra tokia, kad neleidžia tuščiusakiniu. Veiksmo nebuvimui aprašyti naudojamas sakinys pass:

fo r x in range (1 , 10)i f x % 2==0:

passe l s e :

pr in t x , " y ra ␣ n e l y g i n i s "

Page 124: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Baigiant

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

111 / 278

Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:

■ sakinio

Page 125: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Baigiant

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

111 / 278

Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:

■ sakinio■ sąlygos

Page 126: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Baigiant

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

111 / 278

Programuojant svarbu prisiminti, kad pasaulis laikosi ant trijubanginiu:

■ sakinio■ sąlygos■ ciklo

Page 127: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

112 / 278

Page 128: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Duomenu strukturos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

113 / 278

Page 129: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sekos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

114 / 278

Python’as palaiko daug operaciju, tinkančiu visoms sekoms, kaipsimboliu eilutes, sąrašai ir kortežai. Kai kurios operacijos taikomosvisiems konteineriams, kaip žodynai ir aibes, o dar kitos –iteruojamiems objektams (iterable – iteras).

Page 130: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Bendrai apie sekas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

115 / 278

Sekos yra konteineriai, kuriu elementais galima manipuliuotinaudojantis indeksais arba dalinimu. Pavyzdžiui, itaisytoji funkcija lengrąžina bet kokio konteinerio elementu skaičiu, o itaisytoji funkcijasum – suskaičiuoja skaičiu sumą iteru, kuriu elementai yra skaičiai.

Page 131: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Seku konvertavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

116 / 278

Nera neišreikštinio konvertavimo tarp skirtingu seku tipu išskyrussimboliu eilutes, kurios konvertuojamos i unikodą esant reikalui.Galima iškviesti itaisytąsias funkcijas tuple ir list iterams, norint gautinaujus egzempliorius reikiamo tipo.

Page 132: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sujungimas ir kartojimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

117 / 278

To paties tipo sekas galima sujungti naudojantis operatoriumi "+".Taip pat galima padauginti seką iš sveiko skaičiaus n – S ∗ n = n ∗ S.Jei n 6 0, tuomet grąžinama tuščia seka.

Page 133: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Priklausomybes tikrinimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

118 / 278

Operatorius x in S patikrina ar objektas x priklauso sekai S.Rezultatas yra True jei priklauso ir False priešingu atveju. x not in S= not (x in S). Simboliu eilučiu atveju tikrinama ar egzistuoja tokiaeilutes dalis.

Page 134: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sekos indeksavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

119 / 278

■ n-tasis sekos S elementas apibrežiamas indeksu S[n].■ Indeksavimas pradedamas nuo 0.■ Galima naudoti ir neigiamus skaičius – -n = len(S)-n.■ Išeinant už sekos ribu gaunamas klaidos pranešimas.

Page 135: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

"Pjaustant" sekas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

120 / 278

Sintakse S[i : j] apibrežia poseki, kuri sudaro sekos S elementai nuoi-ojo iki j-ojo, pastarojo neitraukiant. Python’o intervalai visuometitraukia apatini reži ir neitraukia viršutinio. Kurio nors elementonebuvimas ekvivalentus tam, kad posekis prasideda nuo 0 arbabaigiasi paskutiniuoju sekos nariu.

>>> x = [1 , 2 , 3 , 4 ]>>> x [ : ][ 1 , 2 , 3 , 4 ]

Page 136: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išplestine sintakse

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

121 / 278

Galima naudoti išplestinę sintaksę sekoms – S[i : j : k]. Čia k nurodopoaibio žingsni.Ką gausime užrašę taip S[ : : -1] ?

Page 137: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Iteratoriai 1

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

122 / 278

Iteratoriumi gali buti bet kokia išraiška, tinkanti itaisytąjai (built-in)funkcijai iter, kuri ir grąžina iteratoriu kaip objektą. Pavyzdžiui, betkokia seka yra iteruojama. Apibendrinant, jei išraišką galimasunumeruoti, tuomet ji yra ir iteruojama. Ciklas vykdomas tiek kartu,kiek yra elementu.

Page 138: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Iteratoriai 2

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

123 / 278

Kadangi dažnai reikia sveikuju skaičiu seku, Python’as turi itaisytąsiasfunkcijas range ir xrange, kurios generuoja ir grąžina sveikuju skaičiusekas. range funkcija grąžina sąrašą reikšmiu, tuo tarpu xrangegrąžina specialiai iteratoriui skirtą objektą

Page 139: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Bendri metodai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

124 / 278

Metodas del ištrina nurodytą objektą. Pavyzdžiui: del x[i] ištrintusąrašo elementą, o del x – visą sąrašą. Metodas len grąžina objektoelementu skaičiu.

Page 140: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilute

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

125 / 278

Simboliu eilutes, kaip objektai, yra nekintantys, todel, meginantpersieti ar trinti elementus ar posekius, gausime klaidą. Simboliueilutes elementas yra taip pat simboliu eilute, kurios ilgis yra 1.

Page 141: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu metodai I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

126 / 278

s.capitalize(x) Žodis prasides didžiąja raide, visos ki-tos – mažosios

s.center(n, fillchar = ’ ’) Centruoja simboliu eilutę; jei ji ilgesneuž n – užpildo fillchar simboliais

s.count(sub, start = 0,end = sys.maxint)

Suskaičiuoja nepersidengiančiu posekiukieki

s.encode(codec = None,errors = ’strict’)

Pakeičia simboliu eilutes koduotę

s.endswith(suffix, start= 0, end = sys.maxint)

Grąžina true, jei s baigiasi suffix ’u

s.expandtabs(tabsize =8)

Pakeičia tabuliatorius nurodytu kiekiutarpu

s.find(sub, start = 0, end= sys.maxint)

Grąžina mažiausią indeksą, nuo kurioprasideda posekis sub, kuris randasiposekyje s[start:end]

Page 142: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu metodai II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

127 / 278

s.index(sub, start = 0,end = sys.maxint)

Panaši i find, tink grąžina klaidospranešimą neradus posekio

s.isalnum() Grąžina true jei visi simboliai yra raidesarba skaičiai

s.isalpha() Grąžina true jei visi simboliai yra raidess.isdigit() Grąžina true jei visi simboliai yra

skaičiais.islower() Grąžina true jei visi simboliai yra mažo-

sios raidess.isspace() Grąžina true jei visi simboliai yra tarpais.istitle() Grąžina true jei s yra tituline antrašte,

t.y. kiekvienas žodis prasideda didžiąjaraide

s.isupper() Grąžina true, jei visi simboliai yradidžiosios raides

Page 143: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu metodai III

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

128 / 278

s.join(seq) Grąžiną simboliu eilutę sudarytą iš seqelementu tarp ju iterpiant s

s.ljust(n, fillchar=’ ’) Grąžina ilgio n simboliu eilutę; jeireikia, pabaiga užpildoma fillchar

s.lower() Paverčia visas raides mažosiomiss.lstrip(x =string.whitespace)

Pašalina pirmuosius simbolius, kuriesudaro x

s.replace(old, new,maxsplit = sys.maxint)

Pakeičia pirmuosius maxsplit posekiusold i new

s.rfind(sub, start = 0,end = sys.maxint)

Grąžina didžiausią indeksą, nuo kurioprasideda posekis sub, kuris randasiposekyje s

s.rindex() Ekvivalentus rfinds.rjust(n, fillchar = ’ ’) Grąžina ilgio n simboliu eilutę; jei

reikia, pradžia užpildoma fillchar

Page 144: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu metodai IV

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

129 / 278

s.split(sep = None,maxsplit = sys.maxint)

Grąžina sąrašą daugiausiai su maxsplit+ 1 simboliu eilučiu; sep yra skirtukas

s.splitlines(keepends =False)

Ekvivalentus s.split(’\n’);

s.startswith(prefix, start= 0, end = sys.maxint)

Grąžina true, jei s[start:end] prasidedaprefix ’u

s.strip(x =string.whitespace)

Pašalina simbolius iš abieju pusiu kuriesudaro x

s.swapcase() Paverčia didžiąsias raides mažosiomis iratvirkščiai

s.title() Simboliu eilutę paverčia antraštes.translate(table,deletechars = ”)

Išsiaiškinti savarankiškai

s.upper() Paverčia visas raides didžiosiomiss.rstrip(x =string.whitespace)

Pašalina paskutiniuosius simbolius,kurie sudaro x

Page 145: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu formatavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

130 / 278

Tam naudojama tokia išraiška:

’ t e k s t a s ␣\%type ␣ t e k s t a s ’ \% va l u e ( s )

Page 146: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Formatavimo niuansai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

131 / 278

■ Galima naudoti tiek paprastą, tiek unikodini tekstą■ Gali buti nurodoma tiek viena reikšme, tiek kelios (naudojamas

kortežas arba žodynas)■ Tarp % ir tipo galima nurodyti papildomą skaitini modifikatoriu

Page 147: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Formatavimo tipai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

132 / 278

Simbolis Rezultatasd, i Sveikasis dešimtainis skaičius su ženkluu Sveikasis dešimtainis skaičius be ženkloo Aštuntainis skaičius be ženklox Šešioliktainis skaičius be ženklo (mažosios raides)X Šešioliktainis skaičius be ženklo (didžiosios raides)e Realaus skaičiaus eksponentine išraiška (e)E Realaus skaičiaus eksponentine išraiška (E)f, F Realaus skaičiaus dešimtaine išraiškag, G Veikia kaip ’e’, jei exp > 4 ar < precision, arba ’f’c Simbolisr Simboliu eilutes Simboliu eilute% % simbolis

Page 148: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdžiai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

133 / 278

x = 42y = 3.14z = " george "pr in t ’ r e s u l t ␣=␣\%d ’ \% xpr in t ’ answers ␣ a r e : ␣\%d␣\%f ’ \% ( x , y )pr in t ’ h e l l o ␣\%s ’ \% zpr in t ’ \%.2 f ’ \%(1/3.0)

Page 149: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kortežas (angl. tuple)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

134 / 278

Nekintantis, kaip ir simboliu eilute, objektas, bet gali buti sudaryti išskirtingo tipo elementu. Elementai atskiriami ",", todel tuščiaskortežas konstruojamas "()", o vieno elemento – (x, ). Galiojabendrieji metodai.

Page 150: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sąrašas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

135 / 278

Sąrašas yra kableliu atskirtu, bet kokio tipo reikšmiu rinkinyslaužtiniuose skliausteliuose.

Page 151: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

136 / 278

>>> x = [ ’ namas ’ , ’ k e l i a s ’ , 100 , 2 . 3 4 ]>>> x[ ’ namas ’ , ’ k e l i a s ’ , 100 , 2 .3399999999999999]

Page 152: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Svarbu žinoti

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

137 / 278

■ S[i : j] = [] yra ekvivalentu del S[i : j]■ S[i : j] = [’a’, ’b’] pakeičia elementus nuo i -ojo iki j-ojo elementu■ S[ : ] – pakeičia visą sąrašą

Ką gausime užrašę S[i : i] = [’a’, ’b’]?

Page 153: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sąrašu metodai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

138 / 278

S.count(x) Suskaičiuoja sąrašo elementu lygiu xkieki

S.index(x) Pirmojo elemento, lygaus x, indeksasarba klaida, jei tokio elemento nera

S.append(x) Prijungia elementą xS.extend(s) prijungia visus itero s elementusS.insert(i, x) iterpia elementą x prieš i -ąji elementąS.remove(x) pašalina pirmąji elementą lygu x arba

klaidaS.pop([i]) grąžina ir pašalina i -ąji (arba paskutini)

elementą arba klaidaS.reverse() apgręžia sąrašąS.sort([f]) rušiuoja elementus pagal funkciją f

(arba itaisytąją funkciją cmp)S.sort(cmp = cmp, key= None, reverse =False)

apie tai kitoje skaidreje

Page 154: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Rušiuojant sąrašus

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

139 / 278

■ Naudojamas Timo Peterso algoritmas (timsort), kuris yrarušiavimo suliejimu ir iterpimu hibridas

■ Pirmasis parametras turi grąžinti -1, 0 arba 1 tam, kad butugalima palyginti du elementus

■ Jei key yra ne None, tai yra palyginami ne x ir y, o ju "raktai" –cmp(key(x), key(y))

■ reverse nurodo elementu tvarką

Page 155: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aibes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

140 / 278

Aibe yra nesutvarkytas unikaliu duomenu rinkinys.

>>> x=s e t ( [ 1 , 2 , 2 , 3 , ’ s ’ ]>>> xs e t ( [ 1 , 2 , 3 , ’ s ’ ] )

Page 156: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aibiu metodai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

141 / 278

A.copy() Sukuria aibes kopijąA.difference(A1) Aibiu skirtumasA.intersection(A1) Aibiu sankirtaA.issubset(A1) Patikrina ar A yra A1 poaibisA.issuperset(A1) Patikrina ar A1 yra A poaibisA.symmetric_difference(A1) Aibe, sudaryta iš elementu, priklau-

sančiu tik A arba tik A1A.union(A1) Aibiu sąjungaA.add(x) Papildo aibę elementuA.clear() Pašalina visus elementusA.discard(x) Pašalina elementąA.pop() Pašalina ir grąžina atsitiktini ele-

mentąA.remove(x) Pašalina elementą

Page 157: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Žodynai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

142 / 278

Žodynas yra duomenu, turinčiu "raktą", aibe – {raktas1 : reikšme1,raktas2 : reikšme2, ...}

Page 158: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

143 / 278

>>> d = { ’ x ’ : 42 , ’ y ’ : 3 . 1 4 , ’ z ’ : 7 }>>> d [ ’ x ’ ]42>>> d [ ’ z ’ ]7>>> d [ ’ a ’ ]KeyEr ro r e x c e p t i o n>>> d [ ’ a ’ ] = 16

Page 159: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Žodyno metodai I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

144 / 278

Metodas AprašymasZ.copy() Sukuria paviršinę žodyno kopiją (ele-

mentai nera nukopijuojami)Z.has_key(k) Patikrina ar žodyne yra raktas kZ.items() Grąžina sąrašą, sudarytą iš poru (rak-

tas, reikšme)Z.keys() Grąžina sąrašą, sudarytą iš visu raktuZ.values() Grąžina sąrašą, sudarytą iš visu

reikšmiuZ.iteritems() Grąžina iteratoriu visiems elementamsZ.iterkeys() Grąžina iteratoriu visiems raktamsZ.itervalues() Grąžina iteratoriu visoms reikšmemsZ.get(k[, x]) Grąžina reikšmę nurodomą rakto k. Jei

nera – x arba NoneZ.clear() Išvalo žodynąZ.update(Z1) Kiekvienam k iš Z1 : Z[k] = Z1[k]

Page 160: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Žodyno metodai II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

145 / 278

Metodas AprašymasZ.setdefault(k[, x]) Grąžina Z[k], jei k yra raktas, priešingu

atveju grąžina Z[k] = xZ.pop(k[, x]) Pašalina ir grąžina Z[k], arba x, arba

klaidos pranešimąZ.popitem() Pašalina ir grąžina atsitiktini elementą

Page 161: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Naudotojo apibrežiamos duomenu strukturos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

146 / 278

Page 162: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

147 / 278

“Tas, kuris per dieną aktyvus kaip bite, stiprus kaip jautis, dirba kaiparklys ir vakare namo pareina pavargęs kaip šuo, turetu pasitarti suveterinaru – labai didele tikimybe, kad jis yra asilas.”Kinu filosofas Čang Ing Ju

Page 163: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ar tikrai reikia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

148 / 278

Page 164: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ar tikrai reikia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

148 / 278

Prisiminkime kuo ypatingi Python’o kintamieji –>

Page 165: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ar tikrai reikia?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

148 / 278

Prisiminkime kuo ypatingi Python’o kintamieji –>netipizuoti.

Page 166: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Atsakymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

149 / 278

Ne.

Page 167: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Priežastys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

150 / 278

Page 168: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Priežastys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

150 / 278

■ Žodynas

Page 169: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Priežastys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

150 / 278

■ Žodynas■ Sąrašas

Page 170: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Priežastys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

150 / 278

■ Žodynas■ Sąrašas■ Kortežas

Page 171: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

151 / 278

>>> a={1:10 , 2 :20}>>> b={3:30 ,4 :40}>>> sa r =[a , b ]>>> sa r[ { 1 : 10 , 2 : 20} , {3 : 30 , 4 : 40} ]

Page 172: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Invariantinis sakinys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

152 / 278

Nemažai programavimo kalbu turi invariantini sakini – switch (norsgali skirtis sintakse ir galimybes). Python’as šios konstrukcijos neturi,nes galima išsiversti ir su if ... elsif ... else ... arba... panaudojantžodyną:

Page 173: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

153 / 278

f r u i t s = {" red " : lamdba : " app l e " ," b l u e " : lambda : " b l u e b e r r y " ," p ink " : lambda : "watermelon "}name = f r u i t s . ge t ( " red " ) ( )pr in t "Your␣ f r u i t ␣ i s ␣" + name

Page 174: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

154 / 278

r e s u l t = {’ a ’ : lambda x : x ∗ 5 ,’ b ’ : lambda x : x + 7 ,’ c ’ : lambda x : x − 2

} [ v a l u e ] ( x )

Page 175: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ir vis delto...

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

155 / 278

Mes LABAI norime sukurti savo tipą.

Page 176: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ir vis delto...

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

155 / 278

Mes LABAI norime sukurti savo tipą.Tam yra vienas budas - objektai.Bet apie juos mes pakalbesime veliau.

Page 177: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Funkcijos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

156 / 278

Page 178: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra funkcija?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

157 / 278

Python’o funkcija yra objektas,

Page 179: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra funkcija?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

157 / 278

Python’o funkcija yra objektas, kuris visada grąžina rezultatą.Tai reiškia, kad su juo ir elgiamasi kaip su objektu. Pavyzdžiui,funkciją galima perduoti kaip kitos funkcijos parametrą.

Page 180: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

158 / 278

>>> i n v e r s e = { s i n : a s i n , cos : acos , tan : atan , l o g : exp }>>> fo r f in i n v e r s e . key s ( ) :>>> i n v e r s e [ i n v e r s e [ f ] ] = f

Page 181: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kaip kuriama funkcija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

159 / 278

Funkcija apibrežiama raktiniu žodžiu def.

def f u n k c i j o s−va rda s ( pa r ame t r a i ) :s a k i n i a i

Page 182: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

160 / 278

>>> def dv i guba s ( x ) :>>> return x∗2

Page 183: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Parametrai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

161 / 278

■ Parametrai apibrežiami tik identifikatoriais yra privalomi■ Parametrai apibrežiami kaip identifikatorius = išraiška yra

pasirenkamieji ir rašomi po privalomuju parametru■ Parametras apibrežiamas kaip *identifikatorius nurodo bet koki

kieki papildomu poziciniu argumentu ir rašomas po pasirenkamujuparametru

■ Parametras apibrežiamas kaip **identifikatorius nurodo bet kokikieki papildomu vardiniu poziciniu argumentu ir rašomi pabaigoje

Parametru rinkinys apibrežia funkcijos parašą.

Page 184: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys I

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

162 / 278

Numatytosios reikšmes yra ivertinamos funkcijos aprašymo momentu:

>>> i = 5>>> def f ( a rg=i ) :>>> pr in t ( a rg )>>> i = 6>>> f ( )5

Page 185: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys II

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

163 / 278

Numatytosios reikšmes yra ivertinamos tik vieną kartą:

>>> def f ( x , y = [ ] ) :>>> y . append ( x )>>> return y>>> pr in t f (23) # spau sd i n a : [ 2 3 ]>>> p r i n f f (42)# spau sd i n a : [ 23 , 42 ]

Page 186: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys III

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

164 / 278

>>> def sum_args (∗ s k a i c i a i ) :>>> return sum( s k a i c i a i )>>> pr in t sum_args (2 , 4)6

Page 187: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Funcijos objekto atributai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

165 / 278

Komanda def apibrežia keletą standartiniu funkcijos atributu.Pavyzdžiui, funkcijos vardą func_name arba __name__:

>>> def mano ( ) :>>> return ’ S v e i k i ’>>> mano .__name__’mano ’

Page 188: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dokumentacija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

166 / 278

Kitas atributas yra dokumetacine eilute func_doc arba __doc__:

>>> def mano ( ) :>>> ’ S i ␣ f u n k c i j a ␣ n i e ko ␣ nedaro ’>>> return ’ S v e i k i ’>>> mano .__doc__’ S i ␣ f u n k c i j a ␣ n i e ko ␣ nedaro ’

Page 189: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Naudotojo apibrežiami atributai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

167 / 278

Naudotojas gali apsibrežti savo atributus po funkcijos apibrežimo:

>>> def coun te r ( ) :>>> coun te r . count += 1>>> return coun te r . count>>> coun te r . count = 0>>> coun te r ( )1>>> coun te r ( )2

Pastaba. Programuojant geriau naudoti objektiškai orientuotusmechanizmus.

Page 190: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ką reikia žinoti apie return

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

168 / 278

■ naudojamas tik funkcijos viduje■ užbaigia funkcijos vykdymą ir grąžina išraiškos rezultatą■ nors galima išraiškos nenurodyti, rekomenduojama tokiu atveju

naudoti None

Page 191: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Parametru vardu galiojimo sritys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

169 / 278

■ Tradiciškai yra perduodamos visu argumentu reikšmes, todelišoriniai kintamieji nera keičiami

■ Tačiau kintančio objekto atveju kinta pats objektas, nesPython’as perduoda objektą, o ne jo kopiją

■ Funkcijos parametrai ir argumentai yra vadinami lokaliaisparametrais, o ne lokalus – globaliais

■ Jei globalaus ir lokalaus parametru vardai sutampa, tuometfunkcijos viduje naudojamas lokalus parametras

■ Norint paskelbti kintamąji globaliu naudojamas raktažodis global

Page 192: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

170 / 278

>>> def f ( x , y ) :>>> x = 23>>> y . append (42)>>> a = 77>>> b = [ 9 9 ]>>> f ( a , b )>>> pr in t a , b77 [ 99 , 42 ]

Page 193: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Idetines funkcijos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

171 / 278

■ Funkcijos gali buti apibrežiamos kitu funkciju viduje■ Tokios funkcijos gali naudotis išorines funkcijos kintamaisiais■ Idetines funkcijos, naudojančios išorines funkcijos lokalius

parametrus, taip pat žinomos kaip uždariniai

>>> def make_adder ( augend ) :>>> def add ( addend ) :>>> return addend+augend>>> return add

Page 194: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

172 / 278

>>> def p r o c e n t a i 1 ( a , b ) :>>> def pc ( x , t o t a l=a+b ) : return ( x ∗100 .0 ) / t o t>>> pr in t " P ro c en t a i : " , pc ( a ) , pc ( b )

>>> def p r o c e n t a i 2 ( a , b ) :>>> def pc ( x ) : return ( x ∗100 .0 ) / ( a+b )>>> pr in t " P ro c en t a i : " , pc ( a ) , pc ( b )

Page 195: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

lambda išraiškos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

173 / 278

Jei funkciją sudaro tik reiškinio rezultatas return, tuomet ją galimapakeisti lambda išraiška – lambda parameters: expression:

>>> f = lambda x , y : x+y>>> f (1 , 5)6

Pastaba. Nors kartais lambda išraiškos gali buti naudingos, geriaunaudoti standartines funkcijas.

Page 196: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Generatoriai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

174 / 278

■ Jei funkcijoje panaudojamas bent vienas raktažodis yield, tokiafunkcija vadinama generatoriumi

■ Kviečiant generatoriu funkcija nera vykdoma, o grąžinamasiteratorius, apgaubiantis funkciją, lokalius kintamuosius irdabartini vykdymo tašką

■ Metodas next grąžina išraišką po raktažodžio yield■ Metodas next veikia iki raktažodžio yield pasikartojimo■ Pasibaigus funkcijai arba ivykus return sakiniui gaunamas klaidos

StopIteration pranešmas užbaigiantis iteravimą

Pastaba. Del savo veikimo ypatybiu, generatorius nesaugo visugeneruojamu reikšmiu, o grąžina tik einamąją. Tokiu budu yrasutaupoma daug atminties. Pasatba. Galima naudoti paprastesnęsintaksę sum(x*x for x in xrange(10)).

Page 197: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

175 / 278

>>> def updown (N) :>>> fo r x in x range (1 , N) : y i e l d x>>> fo r x in x range (N, 0 , −1): y i e l d x>>> fo r i in updown ( 3 ) : pr in t i12321

Page 198: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Recursija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

176 / 278

■ Python’as palaiko rekursijos galimybę■ Apribotas gylis iki 1000, bet galima pakeisti su funkcija

setrecursionlimit

Page 199: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Bibliotekos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

177 / 278

Page 200: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

178 / 278

Modulis – savarankiška programos dalis, talpinanti savyje programinikodą ir duomenis daugkartiniam panaudojimui

Page 201: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

179 / 278

■ Kiekvienas failas kartu yra ir modulis■ Moduliai tarpusavyje paprastai yra nepriklausomi (daugkartinis

panaudojimas)■ Modulio priklausomybe nuo kito modulio apibrežiama

raktažodžiais import arba from■ Nors pletinys (angl. extension) yra kitos programavimo kalbos

komponente, jis interpretuojamas taip pat kaip ir modulis■ Keliu moduliu grupe vadinama biblioteka arba paketu (angl.

package)

Page 202: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulis kaip objektas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

180 / 278

Modulio ir failo pavadinimas paprastai sutampa, t.y. modulio testaskodas yra talpinamas faile modulis.pyModulis yra objektas ir jam galioja visos objekto savybes.

Page 203: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

import sakinys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

181 / 278

Galima naudotis bet kuriuo failu kaip moduliu ivykdžius sakini import

import modul io_pavad in imas [ as k i n t ama s i s ] [ , . . . ]

Page 204: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdžiai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

182 / 278

import Mano_modulis

import Mano_modulis as Mano

Page 205: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio "vidus"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

183 / 278

Nera jokios specialios sintakses.

Page 206: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio "vidus"

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

183 / 278

Nera jokios specialios sintakses.Modulis ivykdomas pirmą kartą ji importuojant.

Page 207: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio elementai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

184 / 278

Importuojant moduli yra sukuriama visu importuojamo modulioelementu vardu aibe.

import Mano_modulis a = Mano_modulis . f ( )import Mano_modulis as Mano a = Mano . f ( )

Pastaba. Nors galima susieti visus modulio elementus sukintamaisiais, bet geriau to nedaryti.

Page 208: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dokumentacija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

185 / 278

Jei pirmasis sakinys modulyje yra simboliu eilute, tuomet ji laikomadokumetacine eilute.

Page 209: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Privatus kintamieji

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

186 / 278

Jei identifikatorius pradedamas pabraukimo brukšniu "_", tuomettoks identifikatorius laikomas privačiu ir tiesiogiai neprieinamas.

Page 210: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

from sakinys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

187 / 278

Šis sakinys leidžia importuoti konkrečius elementus iš modulio:

from modu l i s import e l emen ta s [ as k i n t ama s i s ] [ , . . . ]from modu l i s import ∗

Page 211: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Svarbu žinoti

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

188 / 278

■ Galima importuoti tiek vieną elementą, tiek kelis. Pastaruojuatveju elementai išvardinami skliausteliuose.

■ "*" nurodo, kad visi modulio elementai butu paskelbti globaliais(rekomenduojama nenaudoti).

■ Išskyrus kelis atvejus, kuomet geriau naudoti from,rekomenduojama naudoti import.

Page 212: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio ikrovimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

189 / 278

■ Remiasi itaisytuoju moduliu sys■ Ikraunant moduli yra patikrinamas žodynas sys.modules■ Nesant modulio žodyne, atliekama paieška

Page 213: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Itaisytieji moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

190 / 278

■ Kortežas sys.builtin_module_names■ Kortežo persiejimas neitakoja modulio ikrovimo■ Priklauso nuo platformos

Page 214: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio paieška failu sistemoje

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

191 / 278

■ Ieškoma failo, naudojantis sys.path sąrašu■ Jei randamas failas su pletiniu .pth PYTHONHOME kataloge, jo

turinys idedamas i sys.path■ Ieškomi failai:

1. .pyd ir .dll arba .so2. .py3. .pyc arba .pyo – baitinis kodas

■ Vykdomas visada baitinis kodas

Page 215: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pagrindine programa

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

192 / 278

■ Taikomoji programa visada prasideda aukščiausio lygioscenarijumi – pagrindine programa

■ Pagrindines programos pavadinimas yra __main__ tiekglobalaus kintamojo __name__, tiek sys.modules atvejais

Page 216: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Funkcija reload

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

193 / 278

■ Python’as ikelia moduli tik vieną kartą – importavimo metu■ Norint perkrauti moduli naudojama funkcija imp.reload(objektas)■ Ką čia veikia objektas?

Page 217: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Funkcija reload

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

193 / 278

■ Python’as ikelia moduli tik vieną kartą – importavimo metu■ Norint perkrauti moduli naudojama funkcija imp.reload(objektas)■ Ką čia veikia objektas?Perkraunamas yra modulio objektas, o ne

pats modulis■ Funkcija nera rekursyvi

Page 218: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklinis ikelimas (circular import)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

194 / 278

Python’as leidžia du modulius ikelti vienas i kitą. Pavyzdžiui, modulisa.py naudoja import b, o b.py naudoja import a.

Page 219: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ciklinis ikelimas (circular import)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

194 / 278

Python’as leidžia du modulius ikelti vienas i kitą. Pavyzdžiui, modulisa.py naudoja import b, o b.py naudoja import a.Bet praktikoje rekomenduojama to vengti.

Page 220: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

sys.modules irašai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

195 / 278

Itaisytoji funkcija __import__ visada susaisto modulio objektą kaipirašą ir grąžina irašo reikšmę nepriklausomai nuo jo tipo.

c l a s s TT( ob j e c t ) :def _ _getattr_ _( s e l f , name ) : return 23

import s y ss y s . modules [_ _name_ _] = TT( )

Ikelus ši kodą kaip moduli, gaunamas modulio objektas, kuris taip patyra klases TT egzempliorius (objektas).

Page 221: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Paketai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

196 / 278

Paketas – modulis, sudarytas iš kitu moduliu, patalpintu kataloge.

Page 222: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Paketo savybes

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

197 / 278

■ Paketas gali buti sudarytas iš moduliu ir/ar kitu vidiniu paketu(gali buti zip failai)

■ Paketo P modulio kodas saugomas faile P/__init__.py, kurisgali buti ir tuščias

■ Paketą P sudarantys .py failai yra paketo moduliai

Page 223: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio ikelimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

198 / 278

■ Jei __init__.py faile apibrežtos klases, funkcijos ir t.t., jostampa pasiekiamos iš karto

■ Vidiniai moduliai nera ikeliami■ Modulis M ikeliamas komanda import P.M arba from P import M

■ Modulis M pakete P gali ikelti bet kuri paketo P moduli Xtiesiogiai

Page 224: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Absoliutus ir santykinis ikelimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

199 / 278

import X reiškia absoliutu kelią, kai ikeliamas modulis.from . import X reiškia santykini kelią, kai ikeliamas modulis(patartina riboti jo naudojimą).

Page 225: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Failai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

200 / 278

Page 226: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra failas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

201 / 278

Failas – baitu srautas, kuri programa gali skaityti ir/ar rašyti.

Page 227: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

tipas file

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

202 / 278

Tipas file yra itaisytasis Python’o tipas ir dažniausiai naudojamasduomenu skaitymui ir rašymui.

Page 228: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Failo sukurimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

203 / 278

Failas sukuriamas su itaisytąja funkcija open

open ( f a i l o_pavad i n ima s , mode=’ r ’ , b u f s i z e=−1)

Page 229: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Failo veiksena (angl. mode)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

204 / 278

■ r – egzistuojantis failas atidaromas tik skaitymui■ w – failas atidaromas tik rašymui ir yra ištrinamas arba

sukuriamas■ a – failas atidaromas rašymui išsaugant turini, o naujas turinys

pridedamas prie pabaigos■ r+ – egzistuojantis failas atidaromas ir skaitymui, ir rašymui■ w+ – failas atidaromas ir skaitymui, ir rašymui, ir yra ištrinamas

arba sukuriamas■ a+ – failas atidaromas ir rašymui, ir skaitymui išsaugant turini, o

naujas turinys pridedamas prie pabaigos.

■ *t – failas skaitomas tekstiniu režimu (pagal nutylejimą, jeinepažymeta)

■ *b – failas skaitomas dvejetainiu režimu (nera skirtumo Unixsistemose)

■ *U – universalus režimas

Page 230: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Apie eilučiu pabaigas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

205 / 278

Kadangi skirtingose OS naudojami skirtingi eilučiu pabaigos simboliai,rekomenduojama naudoti os.linesep arbanUniversalus režimas leidžia atsiriboti nuo OS eilutes pabaigossimbolio.

Page 231: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Buferis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

206 / 278

Jei buffsize mažiau už 0, tuomet naudojamas sistemos numatytasis.Jei 0 – buferis nenaudojamasJei 1 – naudojamas eilutes ilgio buferis (išvalomas kiekvieną kartąrašantnJei daugiau už 1, tuomet naudojamas maždaug nurodyto baitu dydžiobuferis (vyksta suapvalinimas)

Page 232: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Nuoseklioji ir nenuoseklioji prieiga

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

207 / 278

Paprastai failas tiek skaitomas, tiek rašomas nuosekliai.Norint tą atlikti nenuosekliai, naudojamos funkcijos f.tell (nurododabartinę poziciją) ir f.seek (pakeičia i nurodytą poziciją)

Page 233: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Atributai ir metodai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

208 / 278

f.close() Užaro failąf.closed true jei buvo uždarytasf.encoding None, jei naudojama numatytoji koduote,

kitu atveju, koduotes aprašymasf.flush Reikalauja, kad buferis butu perduotas OSf.isatty() true, jei atvertas interaktyvus terminalasf.fileno() Sveikasis skaičius, aprašantis failą OS ly-

gyjef.mode Grąžina veiksenos reikšmęf.name Grąžina failo pavadinimąf.newlines Nurodo tekstiniu failu, atidarytu univer-

saliu režimu, eilučiu pabaigos simboliusf.read(size=-1) Nuskaito iki size baitu iš failo ir grąžina

juos kaip simboliu eilutes

Page 234: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Atributai ir metodai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

209 / 278

f.readline(size=-1) Skaito eilutes, jei nurodytas dydis, tuometapsiribojama nurodytu baitu skaičiumi

f.readlines(size=-1) Nuskaito eilučiu sąrašą ir grąžina maždaugsize baitu dydžio

f.seek(pos, how=0) Nustato failo rodykles dabartinę pozi-ciją. pos nurodo per kiek baitu reikia jąpaslinkti. how urodo nuo kur – 0 - failopradžia, 1 - dabartine pozicija, 2 - failopabaiga

f.softplace Naudojamas print funkcijosf.tell() Grąžina dabartinę failo rodykles poziciją

kaip sveikąji skaičiuf.truncate([size]) Sutrumpina failą iki size baitu dydžio. Ki-

tau atveju naudojamas f.tell()f.write(s) Irašo simboliu eilutę s i failąf.writelines(lst) Irašo visas simboliu eilutes i failą

Page 235: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Iteravimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

210 / 278

Atvertas tekstiniame režime, failo objektas f kartu yra ir iteratorius,kurio elementai yra eilutes:

>>> fo r e i l u t e in f :

Del buferizavimo subtilybiu pertraukti toki ciklą nerekomenduojama,nes failo rodykles pozicija tampa neapibrežta. Vis delto, esant tokiamatvejui, tereikia nustatyti failo rodyklę "rankiniu" budu.

Page 236: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

tempfile modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

211 / 278

Šis modulis leidžia sukurti laikinus failus ir katalogus saugiausiuimanomu budu, priklausančiu nuo OS. Tam naudojami tokie metodai:mkstemp, mkdtemp, TemporaryFile, NamedTemporaryFile.

Page 237: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kiti naudingi moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

212 / 278

■ fileinput – leidžia dirbti su visomis eilutemis failu sąraše■ linecache – suteikia galimybę dirbti su podeliu (angl. cache)■ struct – leidžia supakuoti dvejetainius duomenis i simboliu eilutę

ir atvirkščiai

Page 238: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Archyvai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

213 / 278

Moduliai:

■ gzip – palaiko itin efektyvu gzip formatą. Pletinys .gz■ bz2 – suteikia galimybę suspausti duomenis ir operatyvioje

atmintyje■ tarfile – suteikia galimybę dirbti su .tar archyvais■ zipfile – sueikia galimybę dirbti su .zip archyvaist■ zlib – nemokama biblioteka, kurią naudoja kai kurie kiti moduliai

Page 239: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Operacijos su failu sistema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

214 / 278

Naudojantis os moduliu galima manipuliuoti failu sistema ivairiaisbudais:

■ sukurti■ kopijuoti■ ištrinti■ palyginti■ sužinoti informaciją

Page 240: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Esminiai dalykai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

215 / 278

■ os.path modulis – kelio požymiu rinkinys, ju keitimas■ teises – prieigos prie failo teises (777)■ failu ir katalogu funkcijos■ os.stat modulis – informacija apie failą■ filecmp modulis – palygina failus ir katalogus■ shutil modulis – failu kopijavimas ir perkelimas■ failu aprašu valdymas – darbas su failu identifikatoriais

Page 241: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Teksto ivedimas ir išvedimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

216 / 278

sys modulis suteikia galimybę dirbti su "terminalu":

■ sys.stdout – rezultato išvedimas■ sys.stderr – klaidos išvedimas■ print – sys.stdout.write alternatyva■ sys.stdin – reikšmes ivedimas■ raw_input – eilutes ivedimas■ getpass – slaptos informacijos ivedimas

Page 242: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Naudingi moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

217 / 278

Suteikia lankstesnes ivedimo/išvedimo galimybes:

■ readline – ivedimas■ curses – ivedimas/išvedimas■ cmd – interaktyvios komandos■ msvcrt – specialios Windows galimybes■ WConio – specialios Windows galimybes■ Console – specialios Windows galimybes

Page 243: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Internacionalizavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

218 / 278

Programines irangos pritaikymas ivairioms kalboms ir kulturoms.

■ locale – kulturiniai elementai, pavyzdžiui, data■ gettext – kalbiniai elementai, pavyzdžiui, pasisveikinimas

Page 244: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Internetiniai puslapiai (trumpai)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

219 / 278

Su Python’u galima sekmingai kurti internetines svetaines. Tam reikiažinoti kelis pagrindinius dalykus:

■ Reikalingas webserveris (pavyzdžiui, Apache HTTPd)■ Python’o kodas■ Tiltas tarp webserverio ir kodo (pavyzdžiui, mod_python,

FastCGI, SCGI, mod_wsgi)

Page 245: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

HTML ir XML

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

220 / 278

Nuskaityti tokius failus yra labai paprasta.

>>> import u r l l i b>>> f a i l a s = u r l l i b . u r l o p en ( " h t tp : // python . org /" )>>> html = f a i l a s . r ead ( )>>> f a i l a s . c l o s e ( )>>> pr in t html

Page 246: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

HTML ir XML

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

220 / 278

Nuskaityti tokius failus yra labai paprasta.

>>> import u r l l i b>>> f a i l a s = u r l l i b . u r l o p en ( " h t tp : // python . org /" )>>> html = f a i l a s . r ead ( )>>> f a i l a s . c l o s e ( )>>> pr in t html

O kaip su ju apdorojimu?

Page 247: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

HTML ir XML apdorojimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

221 / 278

Labai nesigilinant i detales – norint apdoroti tokius failus reikalingasanalizatorius (angl. parser).Analizatorius suskaido failą i logines dalis – gaires, gairiu atributus,gairiu turini, kuriomis galima lengvai manipuliuoti, per daugnesigilinant i strukturą dokumento.

■ html.parser – HTML analizatorius■ xml.dom – XML analizatorius■ xml.dom.minidom – paprastesnis XML analizatorius

Page 248: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išimčiu valdymas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

222 / 278

Page 249: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra išimtis?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

223 / 278

Išimtis – tai objektas, rodantis klaidą arba anomalią sąlygą.

Page 250: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Veikimo mechanizmas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

224 / 278

Klaidos aptikimas -> jos iškelimas -> Išimties objekto perdavimas iišimčiu perdavimo mechanizmui.Išimti galima generuoti išreikštiniu budu su raise sakiniu.Išimties apdorojimas (angl. exception handling) reiškia išimtiesobjekto gavimą iš perdavimo mechanizmo ir atliekant atitinkamusveiksmus. Jei veiksmai neatliekami – programa baigia darbą suklaidos pranešimu.

Page 251: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dar šis tas...

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

225 / 278

Python’as taip pat naudoja išimtis specialiems atvejams, kurie neraklaidos ir netgi nera nenormalus. Pavyzdžiui, iteratoriaus metodasnext grąžina išimti StopIteration, kai nebera daugiau elementu.

Page 252: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sakinys try

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

226 / 278

>>> def d i v i d e ( x , y ) :>>> t ry :>>> r e z u l t a t a s = x / y>>> except Ze r oD i v i s i o n E r r o r as zde :>>> pr in t " da l yba ␣ i s ␣ n u l i o ! ">>> except E r r o r as e :>>> pr in t "nezinoma␣ k l a i d a ">>> e l s e :>>> pr in t " r e z u l t a t a s ␣ y ra ␣" , r e z u l t a t a s>>> f i n a l l y :>>> pr in t " paba iga "

Page 253: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sakinys with

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

227 / 278

Sakinys with apgaubia vykdomą bloką ir iš esmes atlieka tą pati, kaipir sakinys try

>>> with i s r a i s k a [ as k in tamojo_vardas ]>>> s a k i n i a i

tai maždaug ekvivalentu

>>> va r = i s r a i s k a>>> va r . __enter__ ()>>> t ry :>>> s a k i n i a i>>> f i n a l l y :>>> va r . __exit__()

Page 254: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Generatoriu išpletimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

228 / 278

■ throw – metodas, kuris veikia taip pat kaip raise■ yield – galima naudoti išimčiu valdyme

Page 255: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išimčiu generavimas sakiniu rise

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

229 / 278

Rašant metodus, galima naudoti jau esamas klaidas arba apsirašytinaujas klaidu klases:

>>> def mano( x ) :>>> i f x < 0 :>>> r a i s e Va l u eE r r o r ( " S k a i c i u s ␣ t u r i ␣ b u t i ␣ t e i g>>> return x

Raktažodis from formuoja klaidu sąsają (grandinę):

>>> . . .>>> except Excep t i on as exc :>>> r a i s e Runt imeEr ro r ( "Something␣bad␣happened " )>>> . . .

Page 256: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išimčiu objektai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

230 / 278

■ Visos išimtys yra klases Exception poklasiai■ Paveldejimo struktura yra svarbi ir nusako kuris išimties atvejis

except apdoros išimti■ Galima sukurti savo išimties klasę, kuri yra poklasis standartinems

išimtims

Page 257: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Išimčiu hierarchija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

231 / 278

■ Exception■ SystemExit■ StandardError■ AssertionError, AttributeError, ImportError, KeyboardInterrupt,

MemoryError, NotImplementedError, SystemError, TypeError,UnicodeError, ValueError NameError

■ UnboundLocalError■ SyntaxError■ IndentationError■ ArithmeticError■ FloatingPointError, OverflowError, ZeroDivisionError■ LookupError■ IndexError, KeyError■ EnvironmentError■ IOError■ OSError■ WindowsError■ StopIteration■ Warning

Page 258: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Klaidu tikrinimo strategijos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

232 / 278

■ EAFP (lengviau gauti atleidimą nei leidimą) prieš LBYL (patikrinkprieš šokant)

■ try/except■ Registruoti žurnale (angl. log), logging paketas■ Sakinys assert – leidžia itraukti klaidos taisymo kodą i programą

◆ assert išraiška[, išraiška]

Page 259: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Testavimas, derinimas, optimizavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

233 / 278

Page 260: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kas yra kas?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

234 / 278

■ Testavimas (angl. testing) – kodas veikia teisingai esantžinomoms sąlygoms (teisingas rezultatas)

■ Derinimas (angl. debugging) – neteisingo veikimo suradimas irtaisymas

■ Optimizavimas (angl. optimizing) – priimtinas veikimo laikas

◆ Našumo testas (angl. benchmarking) – tikrinama ar našumas(angl. performance) yra priimtinas

◆ Apibudinimas (angl. profiling) – nustatomos programossilpnosios vietos (angl. bottleneck)

◆ Tinkamas optimizavimas – pašalinamos silpnosios vietos

Page 261: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Testavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

235 / 278

■ Modulio (ang. unit) – testuojamas modulis, klase ar funkcija■ Sisteminis (angl. system) – visos sistemos testavimas

Page 262: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Modulio testavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

236 / 278

■ baltosios ir juodosios dežes testavimas■ testais gristas programavimas – pirma testas, po to kodas

Page 263: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Sisteminis testavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

237 / 278

■ Daugiapakopiu moduliu testavimas naudojantis pakaitalais (angl.stub)

■ Problemu nustatymas■ Sisteminio testavimo problemos■ Karkasai (angl. framework)

Page 264: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pakaitalas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

238 / 278

■ Kodas naudojamas vietoj kito programinio funkcionalumo■ Gali simuliuoti egzistuojanti kodą (pvz., funkciją ar nuotolinę

procedurą)■ Gali buti laikinas pakaitalas dar tik kuriamo kodo

Page 265: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kaip užrašyti pakaitalus?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

239 / 278

■ Galima naudoti tik deklaracijas:

def f ( x ) :r a i s e Not Imp lementedEr ro r

■ Galima naudoti specialią sintaksę:

x : i n tdef func_1 ( code : s t r ) −> i n t : . . .def func_2 ( a : i n t , b : i n t = . . . ) −> i n t : . . .

Page 266: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

doctest modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

240 / 278

Dokumentacijos eiluteje suranda kodo pavyzdžius ir juos ivykdo

Page 267: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys (1)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

241 / 278

"""Funk c i j a ␣ s u r a s o ␣ t e k s t o ␣ z od z i u s ␣ a t v i r k s c i a i>>>␣ a t v i r k s c i a i ( ’ mes␣ einame␣namo ’ )’ namo␣ einame␣mes ’>>>␣ a t v i r k s c i a i ( ␣ )Traceback␣ (most␣ r e c e n t ␣ c a l l ␣ l a s t ) :␣␣␣ . . .TypeError : ␣ r eve r s eWords ( ␣ ) ␣ t a k e s ␣ e x a c t l y ␣1␣argument ␣"""

Page 268: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys (2)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

242 / 278

def a t v i r k s c i a i ( e i l u t e ) :z o d z i a i = e i l u t e . s p l i t ( )z o d z i a i . r e v e r s e ( )return ’ ␣ ’ . j o i n ( z o d z i a i )

i f __name__==’__main__ ’ :import doc t e s t , s y sd o c t e s t . testmod ( s y s . modules [__name__] )

Page 269: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

243 / 278

■ Pavyzdžiu skaičius■ Testo vykdymas – python3 programa.py■ Vykdymo statistika – python3 programa.py -v

Page 270: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

unittest modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

244 / 278

Skirtas detalesniam kodo patikrinimui

Page 271: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

245 / 278

■ Testas rašomas atskirame faile, pavyzdžiui, test_programa.py■ Testavimo modulis perrašo TestCase klases vieną ar kelis

poklasius■ Kiekvienas poklasis apibudina vieną ar daugiau testavimo atveju

apibreždamas metodus■ Metodai neturi parametru ir prasideda priešdeliu test

Page 272: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys (1)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

246 / 278

"""␣ S i s ␣modu l i s ␣ p a t i k r i n a ␣ f u n k c i j a ␣ a t v i r k s c i a imodu ly j e ␣ programa . py . ␣"""import u n i t t e s t import programa

c l a s s ModTest ( u n i t t e s t . TestCase ) :

def te s tNorma lCase ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (

’mes␣ einame␣namo ’ ) , ’ namo␣ einame␣mes ’ )def t e s tS i ng l eWord ( s e l f ) :

s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (’ v i e n a s_zod i s ’ ) , ’ v i e n a s_zod i s ’ )

def testEmpty ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (

’ ’ ) , ’ ’ )

Page 273: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys (2)

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

247 / 278

def t e s tUn i c od e ( s e l f ) :s e l f . a s s e r t E q u a l ( programa . r eve r s eWords (

u ’ su ␣ un i codu ␣ t a i p ␣ pat ␣ v i s k a s ␣ g e r a i ’ ) ,u ’ g e r a i ␣ v i s k a s ␣ pat ␣ t a i p ␣ un ikodu ␣ su ’ )

def te s tExact l yOneArgument ( s e l f ) :s e l f . a s s e r t R a i s e s ( TypeError ,

programa . r eve r s eWords )s e l f . a s s e r t R a i s e s ( TypeError ,

programa . reve r seWords , ’ one ’ , ’ ano the r ’ )def t e s tMus tBeS t r i n g ( s e l f ) :

s e l f . a s s e r t R a i s e s ( ( A t t r i b u t eE r r o r ,TypeError ) , programa . reve r seWords , 1)

i f _ _name_ _= =’_␣_main_␣_’ :u n i t t e s t . main ( )

Page 274: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Keletas dažniausiai naudojamu metodu

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

248 / 278

■ assert_(condition, msg=None) – klaidos atveju gaunamepranešimą

■ assertAlmostEqual(first, second, places=7, msg=None) –pranešimas, jei first != second iki places pozicijos po kablelio

■ assertEqual(first, second, msg=None) – pranešimas, jei first !=second

■ assertNotAlmostEqual(...), assertNotEqual(...)■ assertRaises(exceptionSpec, callable, *args, **kwargs) –

kviečiamas metodas callable(*args, **kwargs), klaida, jeinegaunamas klaidos pranešimas

■ fail(msg=None) – klaida bet kuriuo atveju■ failIf(condition, msg=None) – jei condition teisinga, gauname

klaidos pranešimą■ setUp() – kviečiamas prieš testavimo metodą, nieko nedaro, kol

neperrašytas■ tearDown() – kviečiamas po testavimo metodo, nieko nedaro, kol

neperrašytas

Page 275: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Derinimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

249 / 278

Atitinkamos informacijos pateikimas atraminiuose taškuose (angl. keypoints).

■ inspect ir traceback moduliai■ logging modulis – derinimo rezultatu išvedimas i tekstinius failus■ pdb modulis – paprasta tekstinio režimo derintuve

Page 276: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

inspect modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

250 / 278

Suteikia galimybę gauti informaciją iš bet kurio tipo objektu

Page 277: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

251 / 278

Tarkime, kad programos kode turime sakini x.f() (čia x turetu butimodulis arba klase) ir gauname klaidą AttributeError (x yra ne tai kotikejomes)

t ry : x . f ( )except A t t r i b u t e E r r o r :

import i n s p e c tfo r n , v in i n s p e c t . getmembers ( x , c a l l a b l e ) :

pr in t ( n , v )r a i s e

Page 278: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

traceback modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

252 / 278

Suteikia galimybę gauti, formatuoti ir pateikti informaciją iš kreipiniudeklo (angl. call stack)

t ry :pr in t (5/0)

except :import t r a c eba ckt r a c eba ck . p r i n t_exc ( )

Page 279: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

pdb modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

253 / 278

■ Paprastas interaktyvus derintojas, orientuotas i komandinę eilutę.Išnaudoja Python’o derinimo ir kreipiniu savybes.

def f ( x ) :x+=1pr in t ( x )

import pdbpdb . run ( ’ f ( 5 ) ’ )> <s t r i n g >(1)<module >()(Pdb ) n6−−Return−−

Page 280: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

warnings modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

254 / 278

Skirtas valdyti pranešimams, kurie nera kritines klaidos,nutraukiančios programos vykdymą:

■ DeprecationWarning – naudojamos uždraustos savybes (angl.features)

■ RuntimeWarning – naudojamos savybes, kuriu semantikojegalimos klaidos

■ SyntaxWarning – naudojamos savybes, kuriu sintakseje galimosklaidos

■ UserWarning – naudotojo apibrežti perspejimai

Page 281: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Optimizavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

255 / 278

"Iš pradžiu priversk veikti. Tuomet padaryk teisingai. Ir pagaliau –greita."

Page 282: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Patarimai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

256 / 278

■ Projektavimas (angl. design)■ Kodo rašymas ir testavimas■ Pletiniu moduliu naudojimas■ Našumo testavimas (angl. benchmarking)

Page 283: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Našumo testavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

257 / 278

■ Ieškokit 20% kodo, kuris užima 80% viso laiko■ Nevarkite del 10% pagerejimo – praktiškai toks pagerejimas

nejuntamas■ Svarbu ištirti, kaip veikia operacijos■ Dažnai pakanka rankinio laikrodžio, bet galima naudoti ir timeit

moduli■ Didele optimizacija (angl. large-scale optimization)

Page 284: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Didele optimizacija

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

258 / 278

Algoritmo sudetingumo samprata.

Page 285: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pavyzdys

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

259 / 278

def s l ow ( i t ) :r e z u l t a t a s = [ ]fo r i tem in i t :

r e z u l t a t a s . i n s e r t (0 , i tem )return r e z u l t a t a s

def f a s t ( i t ) :r e z u l t a t a s = [ ]fo r i tem in i t :

r e z u l t a t a s . append ( i tem )r e z u l t a t a s . r e v e r s e ( )return r e z u l t a t a s

Page 286: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Pastaba

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

260 / 278

Python’o tipai ir funkcijos yra optimizuoti ir naudoja geriausius šiuometu žinomus algoritmus efektyvumui pasiekti

Page 287: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Profiliuotojai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

261 / 278

Patikekite blogo kodo paieškas atitinkamiems moduliams, kurieaprašo programos vykdymo laiką.

■ profile arba cProfile■ pstats■ hotshot

Page 288: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

profile modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

262 / 278

Modulis atsakingas už kodo analizę. Pagrindinis naudojamas metodasyra run(code, filename=None)

import c P r o f i l ec P r o f i l e . run ( ’ f ( 5 ) ’ )

Page 289: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

pstats ir hotshot moduliai

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

263 / 278

Moduliai atsakingi už analizę, apibendrinimą ir ataskaitas

import hotshot , ho t sho t . s t a t s , t e s t . py s tonep r o f = hot sho t . P r o f i l e ( " s t on e s . p r o f " )bencht ime , s t on e s = p r o f . r u n c a l l ( t e s t . py s tone . p y s t onp r o f . c l o s e ( )s t a t s = hot sho t . s t a t s . l o ad ( " s t on e s . p r o f " )s t a t s . s t r i p _ d i r s ( )s t a t s . s o r t_ s t a t s ( ’ t ime ’ , ’ c a l l s ’ )s t a t s . p r i n t_ s t a t s (20)

850004 f u n c t i o n c a l l s in 10.090 CPU seconds

Ordered by : i n t e r n a l t ime , c a l l count

Page 290: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Rezultatas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

264 / 278

ncalls tottime percall cumtime percall filename:lineno(function)1 3.295 3.295 10.090 10.090 pystone.py:79(Proc0)

150000 1.315 0.000 1.315 0.000 pystone.py:203(Proc7)50000 1.313 0.000 1.463 0.000 pystone.py:229(Func2)

Page 291: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Mažos optimizacijos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

265 / 278

Sritis, kur gali pasireikšti programuotojo žinios ir patirtis.

Page 292: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

timeit modulis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

266 / 278

Patogu matuoti kodo efektyvumą: python3 -m timeit -s ’pradiniainustatymai’ ’vykdomas kodas’

$python3 −m t im e i t −s ’ x=0 ’ ’ x=x+1 ’10000000 loops , b e s t o f 3 : 0 .0847 usec pe r l oop$python3 −m t im e i t −s ’ x=0 ’ ’ x+=1 ’10000000 loops , b e s t o f 3 : 0 .0844 usec pe r l oop

Page 293: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu konstravimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

267 / 278

Simboliu eilutes yra nekintančios. Todel deretu vengti tokio kodo –eilute += tekstas

Page 294: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Simboliu eilučiu konstravimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

267 / 278

Simboliu eilutes yra nekintančios. Todel deretu vengti tokio kodo –eilute += tekstaseilute = ”.join(laikinas_sarasas)

Page 295: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Paieška ir rušiavimas

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

268 / 278

Operatorius in yra itin optimizuotas aibems ir žodynamsVisada naudokite sort funkciją

Page 296: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kitos pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

269 / 278

■ Venkite exec ir from ... import *

Page 297: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kitos pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

269 / 278

■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus

Page 298: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kitos pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

269 / 278

■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius

Page 299: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kitos pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

269 / 278

■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius■ Failu skaitymo/rašymo optimizavimas

Page 300: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kitos pastabos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

269 / 278

■ Venkite exec ir from ... import *■ Jei imanoma, optimizuokite ciklus■ Lokalus kintamieji yra "greitesni" už globalius■ Failu skaitymo/rašymo optimizavimas■ Mokykites, mokykites ir dar kartą mokykites :)

Page 301: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Duomenu vaizdavimas atmintyje

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

270 / 278

Page 302: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

271 / 278

"Koks skirtumas tarp megejo ir profesionalaus programuotojo?Megejas mano, kad 1 kilobaitas yra 1000 baitu. Profesionalas – kad 1kilometras yra 1024 metrai".

Page 303: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Kaip matuojami duomenys?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

272 / 278

■ bitas – mažiausias informacijos vienetas (0, 1)■ baitas – pagrindinis matavimo vienetas, 8 bitai■ kilobaitas – 1024 baitai■ megabaitas – 1024 kilobaitai■ ...

Page 304: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dvejetaine pozicine skaičiavimo sistema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

273 / 278

Vienetai, dešimtys, šimtai...?!

Page 305: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Dvejetaine pozicine skaičiavimo sistema

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

273 / 278

Vienetai, dešimtys, šimtai...?!27 + 26 + 25 + 24 + 23 + 22 + 21 + 20

111111112 = 25610

Page 306: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aštuntaine ir šešioliktaine skaičiavimo sistemos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

274 / 278

Ką jos čia veikia?

Page 307: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aštuntaine ir šešioliktaine skaičiavimo sistemos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

274 / 278

Ką jos čia veikia?111 = 8

Page 308: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

Aštuntaine ir šešioliktaine skaičiavimo sistemos

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

274 / 278

Ką jos čia veikia?111 = 81111 = F?!

Page 309: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

O kur neigiami skaičiai?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

275 / 278

Pirmasis skaitmuo nurodo ženklą!

Page 310: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

O kur neigiami skaičiai?

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

275 / 278

Pirmasis skaitmuo nurodo ženklą!

1. Dvejetaine išraiška2. Inversija3. Pridedam 1

Page 311: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

ASCII koduote

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

276 / 278

128 simboliai – tai daug ar mažai?65 = A66 = Bir t.t.

Page 312: Informatika I - Vilniaus universitetastomukas/Knygos/ruduo.pdf · 2019-10-24 · ˛Ivadas I˛vadas Pirmasis skyrius Antrasis skyrius Trečiasis skyrius Ketvirtasis skyrius Penktasis

UNICODE

Ivadas

Pirmasis skyrius

Antrasis skyrius

Trečiasis skyrius

Ketvirtasis skyrius

Penktasis skyrius

Šeštasis skyrius

Septintasis skyrius

Aštuntasis skyrius

Devintasis skyrius

Dešimtasis skyrius

Vienuoliktas skyrius

Dvyliktas skyrius

Tryliktas skyrius

Keturioliktas skyrius

Penkioliktas skyrius

277 / 278

U+0000Naudojami 16-niai skaitmenys.Pirmosios 3 pozicijos nurodo eilutę, paskutinioji – stulpeli.