{"id":1707,"date":"2016-09-10T17:36:13","date_gmt":"2016-09-10T15:36:13","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=1707"},"modified":"2018-02-09T17:07:20","modified_gmt":"2018-02-09T16:07:20","slug":"c-programozas-2-alapok","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=1707","title":{"rendered":"C++ programoz\u00e1s 2. &#8211; Alapok"},"content":{"rendered":"<h1>Els\u0151 programunk, avagy minden kezdet neh\u00e9z?<\/h1>\n<p>Ahhoz, hogy az els\u0151 C++\u00a0programunkat meg\u00edrhassuk, egy IDE, vagyis Integrated Development Environment (Integr\u00e1lt Fejleszt\u0151i K\u00f6rnyezet) megl\u00e9te sz\u00fcks\u00e9ges, lehet\u0151leg olyan, amelyet az emelt \u00e9retts\u00e9gin v\u00e1lasztani lehet. Itt a Code::Block IDE az enged\u00e9lyezett.\u00a0Mivel egy egyszer\u0171 sz\u00f6vegszerkeszt\u0151vel is lehet programokat \u00edrni, ak\u00e1r \u00fagy is nekikezdhetn\u00e9nk a munk\u00e1nak, de \u00e9n javasoln\u00e1m, hogy valamilyen fejlettebb sz\u00f6vegszerkeszt\u0151t haszn\u00e1ljunk, ami k\u00f3dsz\u00ednez\u00e9ssel \u00e9s egy\u00e9b szolg\u00e1ltat\u00e1sokkal\u00a0seg\u00edti munk\u00e1nkat.<\/p>\n<p>Els\u0151 C++\u00a0programunk legyen mondjuk ez:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n\r\nusing namespace std;\r\n\r\nint main()\r\n{\r\n    cout &lt;&lt; &quot;Hello vilag!&quot; &lt;&lt; endl;\r\n    return 0;\r\n}\r\n<\/pre>\n<p>Az els\u0151 \u00e9s nagyon fontos dolog, hogy a c++\u00a0programoz\u00e1si nyelv k\u00fcl\u00f6nbs\u00e9get tesz kis- \u00e9s nagybet\u0171k k\u00f6z\u00f6tt. A \u201cvalami\u201d \u00e9s \u201cValami\u201d szavak k\u00fcl\u00f6nb\u00f6z\u0151nek sz\u00e1m\u00edtanak! Ez a k\u00e9s\u0151bbiekben sz\u00e1mos hiba forr\u00e1sa lehet \u00e9s lesz is! N\u00e9zz\u00fck meg, milyen r\u00e9szekb\u0151l \u00e1ll ez a program, amit egyfajta alapnak is tekinthet\u00fcnk!<\/p>\n<p>R\u00f6gt\u00f6n az els\u0151 sor magyar\u00e1zatra szorul:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n<\/pre>\n<p>A c++ a be \u00e9s kimeneteket alap\u00e9rtelmezetten adatfolyamokkal val\u00f3s\u00edtja meg. Ennek az okait \u00e9s m\u00e9lys\u00e9geit nem kell most meg\u00e9rteni, egyel\u0151re fogadjuk el, mint t\u00e9nyt. Ahhoz, hogy az alap\u00e9rtelmezett ki \u00e9s bemeneti csatorn\u00e1kat haszn\u00e1lhassuk, k\u00e9t dolgot kell majd haszn\u00e1lnunk:<\/p>\n<ul>\n<li>cout &#8211; Alap\u00e9rtelmezett kimeneti csatorna.<\/li>\n<li>cin &#8211; Alap\u00e9rtelmezett bemeneti csatorna.<\/li>\n<\/ul>\n<p>Ezek a ki \u00e9s bemeneteket kezel\u0151 utas\u00edt\u00e1sok egy iostream nev\u0171 el\u0151re meg\u00edrt f\u00fcggv\u00e9nyk\u00f6nyvt\u00e1rban tal\u00e1lhat\u00f3k. Ezeket a programjaink nem ismerik alap\u00e9rtelmezetten. Ahhoz, hogy ezeket haszn\u00e1lhassuk, be kell illeszteni valahogy a programunkba. Term\u00e9szetesen nem arr\u00f3l van sz\u00f3, hogy megkeress\u00fck a telep\u00edtett keretrendszerrel egy\u00fctt telep\u00edtett c++ k\u00f3dok k\u00f6z\u00f6tt, hanem megmondjuk a forr\u00e1sk\u00f3dunknak, hogy ezeket a f\u00fcggv\u00e9nyk\u00f6nyvt\u00e1rakat tartalmaznia kell, mert haszn\u00e1lni szeretn\u00e9nk. Ezt nevezz\u00fck include-nak. Ezzel ezek az el\u0151re meg\u00edrt k\u00f3dr\u00e9szek a programunk r\u00e9sz\u00e9v\u00e9 v\u00e1lnak, ez\u00e1ltal szabadon haszn\u00e1lhatjuk \u0151ket.<\/p>\n<p>N\u00e9zz\u00fck a k\u00f6vetkez\u0151 r\u00e9szt:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nusing namespace std;\r\n<\/pre>\n<p>A c++ nyelvben rengeteg el\u0151re meg\u00edrt funkci\u00f3 l\u00e9tezik. Ezeknek egyedi nevekkel kell rendelkeznie. Ahhoz, hogy ez a sok n\u00e9v kezelhet\u0151 legyen, egym\u00e1st\u00f3l logikailag elv\u00e1laszthat\u00f3 legyen, \u00fagynevezett n\u00e9vterekbe rendezt\u00e9k \u0151ket. Nek\u00fcnk p\u00e9ld\u00e1ul az adatok ki\u00edr\u00e1s\u00e1hoz, beolvas\u00e1s\u00e1hoz sz\u00fcks\u00e9g van a cout \u00e9s cin utas\u00edt\u00e1sokra, melyek az std (standard) n\u00e9vt\u00e9rben tal\u00e1lhat\u00f3ak. Ahhoz, hogy az utas\u00edt\u00e1sokn\u00e1l ne kelljen minden esetben megadni, hogy pontosan hol tal\u00e1lhat\u00f3ak, glob\u00e1lisan, az eg\u00e9sz programunkra n\u00e9zve megadhatjuk az std n\u00e9vt\u00e9r haszn\u00e1lat\u00e1t a using kulcssz\u00f3val.<\/p>\n<p>A using-ot az\u00e9rt \u00f3vatosan kell haszn\u00e1lni, f\u0151leg k\u00fcl\u00f6nb\u00f6z\u0151 n\u00e9vterek haszn\u00e1lata eset\u00e9n, mert ha t\u00f6bb n\u00e9vt\u00e9r ugyanolyan nev\u0171 dolgokat tartalmaz, akkor \u00fctk\u00f6z\u00e9s l\u00e9p fel. Ez elker\u00fclhet\u0151 azzal, hogy a using haszn\u00e1lata helyett k\u00f6zvetlen\u00fcl megadjuk a haszn\u00e1lni k\u00edv\u00e1nt dolog n\u00e9vter\u00e9nek nev\u00e9t:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n\r\nint main()\r\n{\r\n    std::cout &lt;&lt; &quot;Hello vilag!&quot; &lt;&lt; std::endl;\r\n    return 0;\r\n}\r\n<\/pre>\n<p>Ez viszont, ha sokszor haszn\u00e1ljuk, \u00e9s m\u00e1s n\u00e9vt\u00e9rre nincs sz\u00fcks\u00e9g\u00fcnk, ami \u00fctk\u00f6z\u00e9st okozna, sok felesleges g\u00e9pel\u00e9st rak a nyakunkba, ez\u00e9rt k\u00e9nyelmi okokb\u00f3l maradhatunk a glob\u00e1lis std haszn\u00e1lat\u00e1n\u00e1l.<\/p>\n<p>L\u00e1ssuk akkor a k\u00f6vetkez\u0151 r\u00e9szt:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nint main()\r\n{\r\n    cout &lt;&lt; &quot;Hello vilag!&quot; &lt;&lt; endl; \r\n    return 0;\r\n}\r\n<\/pre>\n<p>Ez egy met\u00f3dus. A main met\u00f3dus a program \u00fagynevezett bel\u00e9p\u00e9si pontja. Ez azt jelenti, hogy amikor a programunkat elind\u00edtjuk &#8211; amely program ak\u00e1r t\u00f6bb, k\u00fcl\u00f6n\u00e1ll\u00f3 f\u00e1jlb\u00f3l is \u00e1llhat &#8211; enn\u00e9l a pontn\u00e1l kezdi meg a m\u0171k\u00f6d\u00e9s\u00e9t, \u00e9s halad sorban az utas\u00edt\u00e1sok k\u00f6z\u00f6tt. A met\u00f3dus el\u0151tt a met\u00f3dus visszat\u00e9r\u00e9si \u00e9rt\u00e9k\u00e9nek t\u00edpusa szerepel. Egyel\u0151re jegyezz\u00fcnk meg annyit, hogy a main met\u00f3dus egy eg\u00e9sz sz\u00e1mot (int) v\u00e1r eredm\u00e9nyk\u00e9nt, melyet a met\u00f3dus v\u00e9g\u00e9n meg is kap:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n    return 0;\r\n<\/pre>\n<p>Z\u00e1r\u00f3jelben jegyzem meg, hogy m\u00edg a met\u00f3dusok eset\u00e9n k\u00f6telez\u0151 a megadott met\u00f3dus t\u00edpus\u00e1nak megfelel\u0151 visszat\u00e9r\u00e9si \u00e9rt\u00e9ket visszaadni, ez a main met\u00f3dus eset\u00e9n elhagyhat\u00f3. Mivel azonban egy \u00faj project l\u00e9trehoz\u00e1sakor a fejleszt\u0151i k\u00f6rnyezet automatikusan beilleszti a main v\u00e9g\u00e9re, semmi gond nincs bel\u0151le, ha ottmarad.<\/p>\n<p>N\u00e9zz\u00fck a k\u00f6vetkez\u0151 sort, ami jelen esetben csak egy { jel. Ez egy blokk nyit\u00e1s\u00e1t jelenti, egyfajta z\u00e1r\u00f3jelez\u00e9s. A c++ nyelvben a blokkokat (utas\u00edt\u00e1sok sorozat\u00e1t) { } jelek k\u00f6z\u00e9 tessz\u00fck. Mint a matematik\u00e1ban, \u00fagy a programoz\u00e1sban is nagyon fontos, hogy a jelekhez, legyen az { [ vagy ( jel, mindig tartozzon nyit\u00f3 \u00e9s z\u00e1r\u00f3 p\u00e1r is. Ha ezek k\u00f6z\u00fcl ak\u00e1r csak egy is hi\u00e1nyzik, akkor a programunk nem ford\u00edthat\u00f3 le, ford\u00edt\u00e1si hib\u00e1t eredm\u00e9nyez.<\/p>\n<p>A ford\u00edt\u00e1si hiba egy programk\u00f3d eset\u00e9n azt jelenti, hogy nem felel meg az adott programnyelv \u201cnyelvtani\u201d szab\u00e1lyainak. Ezek jellemz\u0151en z\u00e1r\u00f3jel hib\u00e1kat, pontosvessz\u0151 hib\u00e1kat jelentenek, melyeknek mindnek a hely\u00e9n kell lennie, hogy nyelvtani szempontb\u00f3l hib\u00e1tlan k\u00f3dot kapjunk. Ez persze nem azt jelenti, hogy a programunk t\u00f6k\u00e9letes, csak a ford\u00edt\u00f3 fogadja el. Az m\u00e1r csak megszok\u00e1s k\u00e9rd\u00e9se, hogy ezeket a blokk jeleket ki hogyan haszn\u00e1lja. Majd erre n\u00e9z\u00fcnk k\u00e9s\u0151bb p\u00e1r p\u00e9ld\u00e1t.<\/p>\n<p>Nem szabad viszont elsiklani egy nagyon fontos dolog felett ebben a sorban, amit nagyon komolyan kell vennie annak, aki programozni akar. Ezzel a fontos dologgal kezd\u0151dik az eg\u00e9sz sor. A beh\u00faz\u00e1sr\u00f3l van sz\u00f3. A blokkjelek k\u00f6z\u00f6tti\u00a0sor beljebb kezd\u0151dik, mint az el\u0151z\u0151. Mi\u00e9rt? Mert ez a sor egy blokkon bel\u00fcl tal\u00e1lhat\u00f3. Az el\u0151z\u0151 sorban ugye nyitottunk egy blokkot, mert az oszt\u00e1ly eset\u00e9n k\u00f6telez\u0151 blokkot haszn\u00e1lni. Az oszt\u00e1lyban v\u00e1ltoz\u00f3kat \u00e9s met\u00f3dusokat (ami utas\u00edt\u00e1sok sorozata) fogunk haszn\u00e1lni. Egy blokkon a sorokat aj\u00e1nlott beljebb kezdeni, hogy l\u00e1ssuk, ezek a sorok az adott blokkhoz tartoznak. Ennek nagyon fontos szerepe lesz a k\u00f3d olvashat\u00f3s\u00e1g\u00e1nak szempontj\u00e1b\u00f3l.<\/p>\n<p>Nagyon fontos ezt m\u00e1r az elej\u00e9n megszokni, ha blokkot nyitunk, akkor a blokk sorait beljebb kell kezdeni. A blokk beh\u00faz\u00e1s\u00e1t t\u00f6bbf\u00e9le m\u00f3dszerrel oldj\u00e1k meg. Van aki tabul\u00e1torral, van aki sz\u00f3k\u00f6z\u00f6kkel, van aki 2 sz\u00f3k\u00f6zzel, van aki 4-gyel, 8-cal, stb. A l\u00e9nyeg a k\u00f6vetkezetess\u00e9g. Az els\u0151 blokk egy szinttel kezd\u0151dj\u00f6n beljebb, a k\u00f6vetkez\u0151, ami ezen a blokkon bel\u00fcl van egy \u00fajabb szinttel, stb. Erre a p\u00e9ldak\u00f3dban is l\u00e1tunk egy mint\u00e1t, a ki\u00edrat\u00e1st v\u00e9gz\u0151 sor m\u00e1r a main() met\u00f3dus blokkj\u00e1ban van, ez\u00e9rt az 4 sz\u00f3k\u00f6zzel kezd\u0151dik beljebb.<\/p>\n<p>A k\u00f6vetkez\u0151 sor m\u00e1r egy t\u00e9nyleges program utas\u00edt\u00e1s.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n    cout &lt;&lt; &quot;Hello vilag!&quot; &lt;&lt; endl; \r\n<\/pre>\n<p>A cout egy alap kimenetet kezel\u0151 utas\u00edt\u00e1s, mely sz\u00f6veges kimenet eset\u00e9n az \u00fagynevezett konzolba (parancssori ablak) \u00edrja ki a kimenetet. Eml\u00e9kszel, ez\u00e9rt volt sz\u00fcks\u00e9g az iostream include-ol\u00e1s\u00e1ra. A ki\u00edrat\u00e1s sor\u00e1n megadjuk el\u0151sz\u00f6r, hogy kimeneti vagy bemeneti adatfolyamot szeretn\u00e9nk haszn\u00e1lni, jelen esetben kimenetit. Ut\u00e1na \u00e1tir\u00e1ny\u00edtjuk azokat a dolgokat, melyeket a kimenetben szeretn\u00e9nk megjelen\u00edteni. Az \u00e1tir\u00e1ny\u00edt\u00e1s jele a &lt;&lt; vagy &gt;&gt; mellyel az ir\u00e1ny\u00e1t is megadjuk. Kimenet eset\u00e9n a kimenet (konzol) ir\u00e1ny\u00e1ba &lt;&lt; mutat a jel. Ezzel a jellel gyakorlatilag \u00f6ssze is lehet f\u0171zni a k\u00fcl\u00f6nf\u00e9le t\u00edpus\u00fa ki\u00edratni k\u00edv\u00e1nt dolgokat, legyen az sz\u00f6veg, sz\u00e1m, v\u00e1ltoz\u00f3 tartalma, f\u00fcggv\u00e9ny eredm\u00e9nye. Ezeket term\u00e9szetesen olyan sorrendben kell a kimenet ir\u00e1ny\u00e1ba terelni, amilyen sorrendben \u00f6ssze szeretn\u00e9nk f\u0171zni \u0151ket.<\/p>\n<p>A Hello vilag! r\u00e9sz term\u00e9szetesen egy sz\u00f6veg. A sz\u00f6veges adatokat minden esetben idez\u0151jelek &#8220;&#8221; k\u00f6z\u00e9 tessz\u00fck. Ezeknek a z\u00e1r\u00f3jelekhez hasonl\u00f3an term\u00e9szetesen p\u00e1rban kell \u00e1llniuk. Ehhez hozz\u00e1f\u0171z\u00fcnk egy endl jelent, ami egy \u00fagynevezett \u00faj sor karakter. Enn\u00e9l a pontn\u00e1l a kimeneten \u00faj sor kezd\u0151dik, vagyis az esetleges tov\u00e1bbi ki\u00edrat\u00e1sok nem folynak \u00f6ssze az el\u0151z\u0151vel.<\/p>\n<p>Nagyon fontos dolog, a ki\u00edrat\u00e1st v\u00e9gz\u0151 utas\u00edt\u00e1s v\u00e9g\u00e9n l\u00e9v\u0151 pontosvessz\u0151! A c++ nyelvben minden egyes utas\u00edt\u00e1st pontosvessz\u0151vel z\u00e1runk le. Egy utas\u00edt\u00e1s, egy pontosvessz\u0151. Ha egym\u00e1s ut\u00e1n utas\u00edt\u00e1sok sorozat\u00e1t \u00edrjuk (p\u00e9ld\u00e1ul egy blokkban), akkor az egyes utas\u00edt\u00e1sokat pontosvessz\u0151kkel v\u00e1lasztjuk el egym\u00e1st\u00f3l. Ezeket az elv\u00e1lasztott utas\u00edt\u00e1sokat \u00edrhatn\u00e1nk ak\u00e1r egy sorba is, de az olvashat\u00f3s\u00e1g azt k\u00edv\u00e1nja, hogy egy utas\u00edt\u00e1s egy sor. \u00cdgy olvashat\u00f3bb \u00e9s tagoltabb a k\u00f3d. Nem a ford\u00edt\u00f3nak sz\u00fcks\u00e9ges ez, hanem az embernek, aki a k\u00f3dot n\u00e9zi. A pontosvessz\u0151 viszont igencsak megkeser\u00edtheti az \u00e9let\u00fcnket, ha nem j\u00f3 helyen haszn\u00e1ljuk. Ha olyan helyre rakjuk, ahol semmi keresnival\u00f3ja, akkor a ford\u00edt\u00f3 jelezni fogja, hogy gond van. Persze akkor sem azt mondja, hogy rossz helyen van a pontosvessz\u0151, hanem maga a rossz helyen l\u00e9v\u0151 pontosvessz\u0151 okoz m\u00e1shol gondot, de ha p\u00e1rszor belefutunk ebbe a hib\u00e1ba, ut\u00e1na rendszerint m\u00e1r hamar megtal\u00e1ljuk. A gond az, hogy olyan helyre is tehetj\u00fck, ami\u00e9rt m\u00e9g a ford\u00edt\u00f3 se sz\u00f3l, hogy a k\u00f3dunk nyelvtanilag helytelen, viszont a program nem eg\u00e9szen azt csin\u00e1lja, amit meg elv\u00e1rn\u00e1nk t\u0151le. Ez egy \u00fajfajta probl\u00e9ma. A m\u00e1r emlegetett nyelvtani hib\u00e1t szintaktikai hib\u00e1nak h\u00edvjuk, ez az ut\u00f3bb eml\u00edtett, amikor a programunk lefordul, de nem az elv\u00e1r\u00e1snak megfelel\u0151en m\u0171k\u00f6dik, szemantikai hib\u00e1r\u00f3l besz\u00e9l\u00fcnk. Annyit jegyezz\u00fcnk meg most, hogy a pontosvessz\u0151re nagyon \u00fcgyelj\u00fcnk \u00e9s csak utas\u00edt\u00e1sok v\u00e9g\u00e9re tegy\u00fck ki, mert ott a hely\u00fck.<\/p>\n<p>A return 0; sorr\u00f3l feljebb m\u00e1r ejtettem sz\u00f3t, ez a main met\u00f3dusunk eredm\u00e9nye. Ezzel majdnem v\u00e9ge is van a programunknak. Illetve m\u00e9gsem. Mi maradt ki? A blokkot lez\u00e1r\u00f3 } jel. Ha megn\u00e9zz\u00fck a blokkokat nyit\u00f3 \u00e9s z\u00e1r\u00f3 jelek f\u00fcgg\u0151legesen egy oszlopban vannak, \u00edgy k\u00f6nnyebb a p\u00e1rjukat megtal\u00e1lni, az azon bel\u00fcl l\u00e9v\u0151 r\u00e9szek pedig minden \u00faj megnyitott blokkban p\u00e9ld\u00e1ul 4 sz\u00f3k\u00f6zzel beljebb ker\u00fcltek. Err\u0151l k\u00e9s\u0151bb majd m\u00e9g biztosan lesz sz\u00f3.<\/p>\n<h4>K\u00f6vetkez\u0151 lecke: <a href=\"http:\/\/www.webotlet.hu\/?p=1726\">V\u00e1ltoz\u00f3k<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>Els\u0151 programunk, avagy minden kezdet neh\u00e9z? Ahhoz, hogy az els\u0151 C++\u00a0programunkat meg\u00edrhassuk, egy IDE, vagyis Integrated Development Environment (Integr\u00e1lt Fejleszt\u0151i K\u00f6rnyezet) megl\u00e9te sz\u00fcks\u00e9ges, lehet\u0151leg olyan, amelyet az emelt \u00e9retts\u00e9gin v\u00e1lasztani lehet. Itt a Code::Block IDE az enged\u00e9lyezett.\u00a0Mivel egy egyszer\u0171 sz\u00f6vegszerkeszt\u0151vel <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=1707\">Tov\u00e1bb <span class=\"screen-reader-text\">  C++ programoz\u00e1s 2. &#8211; Alapok<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[151],"tags":[158,159,143],"class_list":["post-1707","post","type-post","status-publish","format-standard","hentry","category-cplusplus-alap-leckek","tag-c","tag-c-programozas","tag-programozas"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1707"}],"version-history":[{"count":17,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1707\/revisions"}],"predecessor-version":[{"id":2279,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1707\/revisions\/2279"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}