Transcript for:
Változók és típusok a programozásban

sziasztok ebben a részben a változókról lesz szó és ez a kezdő lépéseknek talán az egyik legfontosabbika mik is azok a változók a program futása során szükségünk lesz kis dobozokra amelyekben különböző értékeket fogunk tárolni és gyakorlatilag ezek a változók nézzük is hogy mire gondolok azt mondom hogy van mondjuk egy hosszú szövegünk amit ki szeretnénk iratni print mondjuk azt hogy ez egy hosszú szöveg és akkor a végét természetesen bezárjuk ha futtatom tudjuk már az eredményt mi lesz el kell menteni természetesen először és most akkor mentsük a helyére tehát létrehoztam egy olyan mappát a suliipá mappán belül hogy 3.2 változók hiszen itt é itt tartunk legyen ez a neve hogy [Zene] változók jó lefuttatja ez egy hosszú szöveg na most mi van akkor hogyha ezt a szöveget többször is majd elő szeretném hívni a program futása során akkor sokkal egyszerűbb hogyha ezt nem újra meg újra begépelem hanem ezt a szöveget elmentem egy változóba tehát kijelölöm mondjuk ezt a részt ctrl c-vel pontosabban ctrl x-zel kivágom és azzal ez együtt a vágólapra is helyeztem és azt mondom hogy legyen egy olyan változunk hogy szöveg egyenő most bemásolom a vágólapról ctrl v-vel ez egy hosszú szöveg és itt a print esetében azt mondom hogy a szöveget írd majd ki töröljük először a shellt futtassuk a scriptünket és itt van ez egy hosszú szöveg ha most abba gondolunk bele hogy ezt tényleg többször kell kiíratnunk a program futása során akkor nyilván ez sokkal kényelmesebb sokkal praktikusabb megoldás mit is tettünk itt az elején tehát létrehoztunk egy változót egy dobozt aminek adtunk egy feliratot a szövegfelirat így fogunk erre hivatkozni ez gyakorlatilag egy tároló és ebbe beleraktuk ezt az értéket ezt a karaktersorozatot ez egy hosszú szöveg megtehetjük azt is hogy számokat pakolunk ezekbe a dobozokba azt mondom hogy szám és legyen mondjuk a 17 és ugyanígy bánhatok velük tehát hogyha ki akarjuk iratni a változónak az értékét akkor most azt mondom hogy számel törlése futtatom és kiírja mind a kettő változónak az értékét tehát hogyha megnézzük akkor ez is egy változó szövegné néven ez is egy változó számnéven és ilyes faajta változókat fogunk elhelyezni adattárolás szempontjából a programunkba ezek a változók gyakorlatilag addig élnek amíg a programjaink futnak hogyha kikapcsoljuk a a programot vagy lejár a futásuk akkor ezek már elérhetetlenek persze hogyha újra betöltjük a programot újra futtatjuk őket akkor ezek feltöltődnek ugye ezeknek a soroknak a hatására na most ezeket majd a későbbiekben lehet manipulálni is de mindenesetre azt látjuk hogy hogyan működnek következő kérdés hogyan nevezzük el ezeket a változókatá a legfontosabb szabály természetesen az hogy beszédesek legyenek ezek a változók hogyha most a szöveg helyett azt mondanom hogy x a számhelyett meg y a későbbiekben lehet hogy 10 20 100 sorral lejjebb már fogalmam sincs hogy mit tárol az x és mit akar az y név vagy az ilyen nevű dobozunk tárolunk változunk tehát fontos az hogy utaljon valamiféleképpen a tartalmára és ez akkor is fontos hogyha akár hosszabba a változónak az elnevezése majd látjuk hogy ez azért nem egy nagy tragédia és ezeknek a kezelésére megvannak a praktikák amire ügyelnünk kell még a változó elnevezésénél hogy fontos hogy milyen karaktereket tartalmazhat hát tartalmazhat betűket tartalmazhat aláhúzás karaktert és tartalmazhat számot is ami viszont kitétel hogy a kezdő tehát az első karakter az csak betű lehet illetve aláhúzás magyarul szám az elején nem fordulhat elő tehát ha azt mondom hogy ez egy ez egy hosszabb szöveg ez is egy érvényes változóelnevezést ha én most ezt kimásolom ctrl c-vel és ennek helyére beillesztem akkor ez is jól fog működni így van természetesen ilyen hosszú szöveget azért nem szoktunk használni de ugye említettem hogy az eleje az lehet alsó aláhúzás is és ennek is működnie kell így van tartalmazhat számot is mondjuk legyen ilen még mindig jól működik azt viszont említettem hogy az elején nem lehet szám a változó esetében változón név esetében ugye futtatja és ki is írja hogy itt most megint valamiféle probléma van még hozzá ugye az első sorban már jelzi ezt a hibát megint szintaktikai errorra hivatkozik és hát itt fölajánlja azért hogy a ezen el kéne gondolkozni mert a python nem tudja olvasni a programunkat tehát ezt szüntessük is meg ezt el is tüntetem ilyet ne is lássunk a következő amit még szeretnék mondani a változók elnevezése kapcsán hogy vannak úgynevezett lalt szavak tehát például azt nem tudom adni változón névnek hogy print hiszen a print az egy olyasfajta függvény amelyik a kiíratásról a képernyőre való kiírásról gondoskodik és hogyha ezt szeretném itt használni akkor látszik is hogy ez egy meglehetősen keszekusza állapotot fog teremteni futtatom hát és megint csak újabb hibába fogok ütközni tehát magyarul vannak úgynevezett foglalt fent tartott elnevezések szavak ezeket sem használhatom változón névnél egyébként teljesen szabad a pálya minden programozási nyelvre jellemző egyfajta változón név használati konvenció megegyezés hogy hogy szoktuk ezt tenni használhatnánk én most kitörlöm mondjuk ezt és kitörlöm ezt is ezt pedig át szeretném nevezni mert tudjuk hogy ez nem jó na most megtehetném hogy ezt is átnevezem ezt is átnevezem ha több helyen szerepel akkor több helyen is átnevezem de megtehetem azt is hogy kijelölöm rákattintok és kell egy olyat keresnem hogy find and replace és azt mondom hogy mi az amit keressen ugye a printet nevezze át hát most probléma lesz a számra azt mondom hogy find ott nem szeretném átnevezni tehát tovább ugrom keresd a következőt ott át szeretném nevezni így van és ilyen egyszerűen akkor meg tudom tenni a kódnak a refaktorálását ezt úgy szokták nevezni tehát mondjuk bizonyos részeknek az elnevezését az elején ugye nem tettem meg pedig itt is meg kellett volna az első helyen már a replay tennem na tehát átneveztük a változónkat szám szám ugye azt is mondtam hogy lehetnek nagy betűk is a változó névben azonban ezt a pythonban általában kerülni szoktuk míg más programozási nyelvekben ezt gyakran használjuk tehát általában kisbetűs elnevezéseket használunk ékezetet bár lehetne használni és nem jelez hibát de ezt mégis csak kerüljük hiszen a legtöbbször azért most ctrol z-vel fogom vissz vonni a legtöbbz azonban ugye többekkel dolgozunk együtt és ez egy bevett konvenció szokásjog hogy ékezet nélküli szavakat használunk magyar nyelvű programok magyar nyelvű programozók esetében is amit még szeretnék mondani hogyha egy változó elnevezését úgy választottuk meg hogy az több szóból áll akkor a szó határokon ugye alsó aláhúzást alkalmazunk és mondjuk azt mondom hogy első első vagy talán ez értelmesebb lenne hogyha előreírnám hogy első és első szám jó tehát ez a tipikus pythonos írásmód a szavak határán egy alsó aláhúzással kötjük össze ezeket a a tagokat egy utolsó dolog a változók elnevezésével kapcsolatban ugye említettem itt a nagy betetű kérdését a nagy betűket fenntartjuk az úgynevezett konstansok számára ezek olyan hát változók amelyeknek az értéke nem változik meg a program futása során tehát például hogyha akarom használni a pi értékét azt mondom hogy ez 3,14 na ez nagyon nem sikerült tehát 3,14 akkor mivel ez egy olyan érték ami nem változik természetes módon hiszen p-ről van szó ezt jelölöm is a program futása során és úgy hogy nagy betűkkel írom a változó elnevezést és mindenki számára világos itt egy konstansról van szó az előbb el is bénáztam egy picit ugye nem pontot tettem hanem tizedes vesszőt ahogy a magyar írásban megszokott számítástechnikában informatikában itt a programozásban az angol szász megközelítést al alazzuk tehát a tizedes vessző helyett tizedes pontot használunk ez amit a gép tud értelmezni azért itt még egy dolgot megjegyeznék a tizedes vessző és tizedes pont kapcsán hogyha valaki ide ténylegesen vesszőt üt akkor ebben az esetben most nem fog hibát tapasztalni nézzük meg hogy ugye van egy konstansunk annak adtam egy három vessző 14 értéket és ezt megpróbáljuk kiiratni most törlöm a shellt először is és futtatom na hát nem tapasztalunk hibát és érdekes módon ugye ezt a két értéket külön kezeli most a python erről a későbbiekben még lesz szó hogy ez mit is takar mindenesetre ugye azt látjuk hogy ez nem az a 3,14-es érték amivel mi szeretnénk számolni úgyhogy még egyszer tizedes vessző helyett természetesen mindig tizedes pontot fogunk használni jó hát akkor erről egyelőre ennyit és akkor kicsit összegezzük hogy mi az amit tanultunk mi az amit néztünk tehát akkor volt olyan változónk amiben ugye karaktersorozatot egyébként ezt úgy nevezik hogy stringet tároltunk és ugye említettem most már többször is hogy aposztrofok vagy idézőjelek közé kell tennünk az értéket volt olyan eset is hogy számot tároltunk és volt arra is példa hogy tizedes számot tizedes törtet mondjuk legyen ez megint a 3,14 ugye ez így érdekes és azt is látjuk hogy mindegyiket el tudja tárolni a programunk hiszen ha bármelyiket hogyha kiíratjuk akkor ez nem ütközik problémába na itt is például most kizeretném próbálni a kódkiegészítést hiszen a tizedes tört az egy meglehetősen hosszú elnevezés control space nyomok és látszik hogy sikerül tehát ezért sem lesz probléma hogyha ha hosszabb nevezést választok inkább legyen beszédes mintogy rövid é semmit mondó na tehát hogyha futtatjuk a programunkat akkor tizedes tört megjelenik tehát ezzel nincs is gondunk most az a kérdés hogy ezeket egyformán tárolja a gép vagy vagy van ezek között valami különbség van egy olyan függvény a pythonban egy beépített függvény ami megmutatja ezeknek a változóknak a típusát hiszen gondoljunk egy raktárra nyilván egy folyad ot másféle tárolóba fogunk elraktározni mint mondjuk egy egy szilárd vagy porszerű dolgot hiszen az egyikre mondjuk jó egy papírdoboz a másikra mondjuk egy folyadékra nem biztos hogy ez a legalkalmasabb mód és az informatikában is ez így van tehát amiről beszéltem ez a type hogyha megadom a változónak a nevét és így futtatom a programot akkor ugye nem történik semmi sem látszólag az ötös sorban de itt megállapításra kerül a szöveg nevű változónak a típusa és amit én szeretnék az az lesz hogy ezt ki is írassam tehát hogyha azt mondom hogy print nézzük meg egy pillanatra ezt a az ötös sort azt mondom hogy írjon ki valamit mit írjon ki hát a szöveg nevű változónak a típusát akkor ha futtatjuk mit kapunk azt látjuk hogy ez egyfajta típus méghozzá az str ez a stringre fog utalni tehát a python interpreter az értelmező ezt a karakter sorozatot szövegként stringként tárolja nézzük meg hogy mit tapasztalunk a többi esetbentrol v és ctrl v és akkor gyorsan itt átírom ez legyen szám ez pedig legyen a tizedes tört egy kicsit türelmetlen voltams kiegészítette már közbe csak én tovább gépeltem nézzük meg megint törlöm a [Zene] konzolt futtatom a szöveg esetében azt írja hogy string a második esetben a szám esetében azt írja hogy int ugye ez az integer ez az egész számra utal és a float az pedig a lebegőpontos elnevezésnek az angol megfelelője a lebegőpontos számok azok gyakorlatilag a tizedes tört számok tehát látjuk hogy ezek különböző típusú változóban kerültek eltárolásra ezek ilyen alapvető típusok egyszerű típusok a python nyelvben és ha már itt tartunk hogy legyen teljes a lista szeretnék még egy típust mutatni mondjuk legyen az a változónak a neve hogy osztható-e és ide egy olyan értéket fogok elrakni ami true ugye az az igazat jelenti az ellentéte a false az a hamis na most hogyha ennek a értékét szeretném pontosabban bocsánat a típusát szeretném kiíratni akkor nézzük meg hogy erre milyen eredményt kapok ez pedig az úgynevezett bull vagy bullen nevű változó ez egy logikai érték nagyon fontos hogy ebben az esetben csak kétféle értéket vehet ez fel vagy true vagy a másik false és ugye szeretném felhívni a figyelmet mindenkinek hogy nagy kezdőbetűvel kell írni másképp is jelöli ugye a singeket zölddel jelöli az int és flow típusokat ugye itt ezzel a rózsaszínessel most ez a beállítás és ugye a logikai értékeket a truet v meg a false-ot pedig ilyen halvány kékkel és ez a negyedik ilyen típus ezekről jó ha tudunk é és hogyha elbizonytaladunk a kód írása során hogy most éppen milyen típust is használ az adott változó akkor így ki tudjuk iratni akár tesztjelleggel na most zárásképpen még egy dolgot szeretnék megmutatni ez is fontos és a python nyelvnek az egyik jellemzője ugye itt van a szövegváltozónk abba beleraktam azt hogy alma ezt meg is hagyom a többit törlöm most mert erre nem lesz szükségem jó és akkor kiirratom a típusát mondjuk így és utána pedig ebben a változóban egy új értéket teszek hiszen változókról van szó az a normális az az alapeset hogy a program futása során a dobozban a változóban tárolt érték megváltozik felülírjuk hiszen ennek lesz logikája alapja a program futása során tehát most fölülírom és azt mondom hogy egy számot fogok belerakni és újra kiíratom a típusát nézzük meg hogy ez milyen eredménnyel jár ugye először string a változónak a típusa utána pedig már egész szám int típusú lesz na most ez az ami viszonylag kevés programozási nyelvben engedett meg ez az úgynevezett dinamikus adattípusnak a lehetősége ez azt jelenti hogy hogy változhat a a változónak az adattípusa tárolhatunk benne stringet majd egy későbbiekben szöveget bocsánat későbbiekben mondjuk egész számot aztán tizedes törtet vagy akár más változót ugye igaz hamis értékeket is és ez nem okoz gondot hogyha következetessek vagyunk na most ez a fajta dinamikus típusosság a pythonnak a sajátja nagyon sok más programozási nyelv ezt nem engedi meg azokban az esetekben ott előre deklarálnunk kell meg kell mondanunk hogy az adott változó az milyen típusú és utána csak olyan típusú értékeket enged tárolni benn a program itt a pythonban ez gyakorlatilag csak futásidőben lesz kiértékelve és így aztán nekünk magunknak programozóknak szoftver fejlesztőknek különösen ügyelni kell arra hogy tudjuk hogy mi az aktuális típusa a változónknak ezért aztán főleg az elején azt ajánlanám hogy amennyiben lehet kerüljük el ezt a fajta mixelést hogy egyszer szöveget másszor mondjuk int vagy float típusú értéket tárolunk benne ragaszkodjunk ahhoz hogy egyfajta típust tárolunk benne ha lehetséges és nyilván úgy válasszuk meg ennek megfelelően a változónak az elnevezését hiszen maga az elnevezés is utalni fog valamennyire a típusra hiszen ha azt mondjuk hogy szöveg akkor mindenki gondolhatja hogy ez egy string lesz amennyiben szám hát már ugye értegesebb a a kérdés mert az lehet int is vagy flo típusú is de mindenesetre tartsuk szem előtt hogy egy-egy változónak a a típusát azt ha lehet akkor ne változtassuk meg még akkor is hogyha erre egyébként lehetőségünk lenne a pythonban na még egy rövid kis ismeret a végére arra is lehetőségünk van bizonyos megkötések é ezt szeretném hangsúlyozni hy bizonyos esetekben csak hogy a típusokat egymásba átalakítsuk ez az úgynevezett típus átalakítás vagy típus konverzió mondjuk szöveget át tudunk alakítani bizonyos esetekben számmá van mondjuk egy stringünk és most ebben a stringben az szerepel hogy 17 ezt át tudjuk alakítani számmá méghozzá van az int függvény ami a stringből gyakorlatilag számot készít hogyha ezt eltároljuk egy változóban és utána pedig kiíatjuk a változónak az értékét ugye a számváltozóról van szó akkor ezt nyomni is tudjuk követni törlöm a sht futtatom és látjuk hogy ténylegesen int ult ez a string természetesen így ebben a formában ennek volt értelme de hogyha mondjuk karaktersorozatok vannak akkor már ez erősen kérdéses átalakítom és ugye egyből miről van szó hogy egy value errort fogok kapni tehát magyarul ezt a karaktersorozatot egész számokká értelmetlen lenne átalakítani nem is lehetséges pontosabban és erre utal a a hibaüzenet is de akkor maradjon a jó példa tehát mondjuk egy ilyes fajta számot nyilván át tudok alakítani azt sejthetjük hogy ennek mentén lehetséges mondjuk szövegből tizedes törtnek a létrehozása tizedes hát most így írtam 17 8 és most ilyenkor nem az intet kell használ em aot hiszen azt seretnk hogyha a tiedes értékből ami most stringként van először megadva egy valódi tizedes érték egy fl típus keletkezne ezt akkor átírom mondjuk arra hogy tizedes tört egyszerűbb ha kimásolom és így módosítom futtassuk hát összetörlöm a sht futtassuk és látjuk hogy valóban egy float típust kapunk még egy dolgot szeretnék megmutatni ebben az esetben pedig számot alakítunk mondjuk szöveggé mert erre is lehetőség van így azt mondom hogy van egy számunk mondjuk vegyük megint a 17-et ezt szeretném stringgé alakítani ugye akkor sejthetjük hogy ez lesz a függvényünk amit használunk tehát str zárójel és beírjuk az értéket és akkor reményeink szerint ebből egy string típusú változó kerekedik nézzük meg hogy ez így van-e print type és azt mondjuk hogy szöveg futtassuk a programunkat így van és látjuk azt hogy most egy számból tényleg szöveget kaptunk és természetesen működne ez egy tizedes törttel is egy flo típussal is hát ennyit erről most nagyon sok mindent tanultunk ez jó hosszú videó volt de a videó leírásába készítek egy kis tartalomjegyzéket és akkor az egyes részeket is külön-külön vissza lehet nézni én mindenkinek köszönöm a a kitartását ez tényleg egy nagyon fontos rész erre alapozunk hogyha úgy érzitek hogy túl hosszú volt túl sok információ volt bent egyszerre akkor nézzétek meg a videót többször is vagy akár részenként és akkor legközelebb ide térünk vissza és innen folytatjuk