Aktív témák

  • Tele von Zsinór

    őstag

    Hello,

    valószínűleg kezdőnek tűnik a kérdés (mivel az is), de linux alatt egy parancsfileban hogy lehet cimkéket definiálni ill. odaugrani? Egy olyan progit kell írnom, ami kiszámolja az x-edig elemét a Fibonacci--sorozatnak, ezt én rekurzívan képzeltem el, ahhoz meg cimkék kellenének.

    Zsinor

  • Flashy

    veterán

    bizonyos shellekben van goto parancs, másokban nincs. a goto-t amúgyis mindenhol üldözik. használj függvényeket, vagy while ciklust. a goto ciklusból úgyis valami feltétel hatására lépnél ki.

  • Miracle

    senior tag

    válasz Tele von Zsinór #1 üzenetére

    nem vágod te a shell scriptek lényegét... milyen függvény? hívja meg magát! maga a script a függvény. indítsa el magát úgy, hogy a paramétert csökkenti. ezzel viszont vigyázni kell, a shell nem a memória és processzordő-takarékosságáról híres, ha nincs a linuxod belőve pöpecül(ahogy az enyém sincs) be tudod egy évgtelen rekurzióval rohasztani annyira, hogy egyszerűbb legyen újraindítani.
    és ha leírod azt, hogy goto, és nem VCL konzol előtt csücsülst, akkor üss a saját kezedre, de olyat, hogy fájjon.

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Tele von Zsinór

    őstag

    Nem vágom, kezdő vagyok linuxban, azaz elte progmaton gólya. Azonban mostanra a kérdés tárgytalan, sikerült megoldanom több egymásba rakott case-el, és remekül működik. Nagy számoknál lassú, de itt most nem a gyorsaság a cél. Ha érdekel valakit forráskód, belinkelhetem.

  • Miracle

    senior tag

    válasz Tele von Zsinór #5 üzenetére

    ''Ha érdekel valakit forráskód, belinkelhetem.''

    dobjad!

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • eddie303

    őstag

    Még egy bíztató szó: Dobjad, érdekelne engem is, bár Linux nálunk csak 2. félévtõl lesz :)

    Linux.... The choice of a GNU generation.

  • Tele von Zsinór

    őstag

    Na, itt a link, várom a véleményeket:
    [L]http://www.extra.hu/fasigabi/fibo.sh[/L]

    Az extra kicsit állat,de le lehet az tölteni.

    [Szerkesztve]

  • Miracle

    senior tag

    válasz Tele von Zsinór #8 üzenetére

    és van annak valami oka, hogy nem a kitűnő Pandorára teszed fel egy cp paranccsal?
    szerk: nomeg nekem nem jön be így sem... stop suxx, használd az egyetemi szervereket, azér vannak.

    [Szerkesztve]

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • escie

    őstag

    huhú, nálunk karó jár címkéért, meg goto-ért!! :D

    I'm back, baby!

  • Miracle

    senior tag

    válasz escie #10 üzenetére

    akkor nálatok(...hol is?) nagyon jók a tanárok.

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Husky

    aktív tag

    Magyarázza mán nekem el egyszer valaki racionális érvek segítségével, miért nem jó a goto.
    Jó, egyszer egy pofa kitalálta, hogy az nem jó. De miért száműzzem én a goto-t csak azért mert
    ''magasszinten'' programozok, mikor legvégül úgyis csak JMP, JE, JNE, JC, JNC utasítások
    halmaza lesz az egész kóceráj?

    Rendszergazda vagyok. Ha röhögni lát, mentsen!

  • Miracle

    senior tag

    válasz Husky #12 üzenetére

    Nézd: Racionális érveket nem tudok mondani(nincs matematikailag levezetve, mert a hiba nem a GOTOval van, hanem a mi agyunkkal), csak a következőt:
    1968ig a progrramozásban megjent __MINDEN__ olyan technika, technológia, amit ma is használunk, leszámítva talán a generatív programozást. de generikus már volt. egyszerűen minden. Mi volt azóta a fejlsődés? 2 iránya volt:
    1: hatákonyság
    2: Megnehezíteni, hogy a programozó hibázzon
    és az utóbbi 20 évben az utóbbi messze hangsúlyosabbá vált, mint az előbbi.
    A tapasztalat azt mutatta, hogy ahogy a szoftverek nőnek(míly meglepő) a az adott hibák, amelyek akár tetszik akár nem, ugyan olyan arányban fordultak elő kisebb, és nagyobb szofverekben, azaz nagyobb szoftverekben többször, mint a kisebbekben, egyre nehezebben javíthatók, mert egyre több idő kell a hiba megkereséshez, és még több a jvításához. És a programozás úttörői igen hamar levágták, hogy a GOTO messze a legynagyobb hibaforrás. A programozó örült, hogy megtakarított 200 ASM műveletet egy GOTOval, és hazudik az a programozó, aki nem szeret hatékony algoritmust írni, még a JAVA programozók is odafigyelnek erre, pedig ott általában tényleg keveset számít, és egy rosszúl elhelyezett GOTO, vagy russzul kitalált, vagy nem emgfelflően implementált invariáns hasravágta az egész szoftot, és hihetetlenül sok idő telt bele, mire megtalálták, hogy mi nem jó, mert az algoritmusok hatékonyak voltak, de nem voltak megfelflően absztraktak, azaz a programozó nem tudta elsőre átlátni, hogy mit akart az a hülye munkatársa csinálni azzal az össze-vissza lépkedő 8 GOTOval, hacsak nem írt mellé egy 8 oldalas commentet, amivel már könnyen meg lehetett érteni, a kommentek írása még a mainál is silányabban ment, pedig most sem olyan jó a kommentelési morál, élő példa vagyok én, ha csak egy kis esély is van rá, hogy egy adott kódot nem kell bemutatnom, vagy nem tartozik szorosan a kiírrt feladathoz nem kommentelem be, mert megy vele az időm, de ha nem csinálom meg is meg tudom magyarázni. tehát lehet, hogy egy 8 oldalas kommenttel már egyből lejönne a másik programozónak is, hogy mit akart az előző azzal a 8 gotoval, és hogy milyen über-király-táps-hatékony algoritmust is alkotott, de ha van benne egy icipici hiba, akkor azt javítani szenvedés, és a továbbfejlesztés megintcsak komoly nehézségekbe ütközik. a programozás-technológia az elmúlt 30 évben az egyre magasabb absztrakció felé lépett el(nem számolva a power-appokat fejlesztők elhanyagolható hányadával, akik C-ben, különböző ASM nyelveken, illetve hasonlókon programoznak) . a GOTO meg az absztrakció ellentéte, a legjobb az lenne, ha eredendően ki lehetne irtani az előbb említett csoport agyán kívül mindenkijéből, mert amikor 10en dolgoztok egy projekten, akkor elöhetnek a deviáns gondolatok a fejedben, amikor 8 órája az egyik társad kódját böngészed, aki(már nem dolgozik ott/beteg/szarik a fejedre) hogy miért nem működik a programja, és a GOTO-k miatt nincs szép tiszta algoritmusa, amit fel tudsz fogni első ránézésre, hanem végig kell bogyrásznod. a GOTOt felejtsd el. és arra ne építs, hogy az utóbbi csoporba fogsz tartozni, neked akkor kell a GOTO, mert
    1: annak a valószínűsége kicsi
    2: rászokni nem kerül sokba, leszokni róla viszont igen kemény.

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Husky

    aktív tag

    válasz Miracle #13 üzenetére

    Hajjaj, ezek szerint pl. 10 év sima assembly és 5 év mikrovezérlő programozgatás után az ember
    inkább már ne menjen programozónak, mert ha a JMP C-beli megfelelőjét meri használni, akkor jól
    meghúzzák, mert absztrakció rulez... :(

    Oké, végülis van valami ebben a kód-áttekinthetetlenségben, de sajna ezt mindig azok hirdetik
    melldöngetve, akik még nem láttak pl. mikrovezérlőben FFT-t (na jó, egy F-et lehagyhatunk :D )...
    aztán az utókorban csak az marad meg, hogy a GOTO rossz, nem pedig az hogy csak egy adott
    rutinszint felett célszerű használni... ha ehhez még hozzáveszem hogy anno a 10: 20: 30: 40:
    korszakban tényleg könnyű volt szénné goto-zni a kódot, és a goto-k csökkentését célzó hadjárat
    végül megsemmisítési hadjárattá vált, akkor kicsit kezd olyan feelingem lenni, hogy a nyolcvanas
    évek végén hátra kellett volna dőlni, hogy most már nyugi van, és hagyni, hogy a programozó
    hatékonyan végezze munkáját. Szabadon. Mivel a forráskódok 98%-át nem azért írják, hogy azt
    később valaki megtanulja mint a verset, az áttekinthetőség imho feláldozható lenne a hatékonyság
    oltárán.... nnomindegy, ez amúgy is flame-téma, és amúgy is a gyakorlati és elméleti programozók
    közti bulinak számít... én meg egyik csoportba sem tartozom. :DDD

    Rendszergazda vagyok. Ha röhögni lát, mentsen!

  • Miracle

    senior tag

    válasz Husky #14 üzenetére

    ''Hajjaj, ezek szerint pl. 10 év sima assembly és 5 év mikrovezérlő programozgatás után az ember ''
    akkor te abba a minimális százalékba tartozol, akinek a GOTO tényleg fontos, de azt be kell látnod, hogy a programozók nagyrésze valamilyen magasszintű nyelven, nem-hatékony szoftvereket fog írni, ott meg sokkal jobb a GOTOk nélkül.

    ''melldöngetve, akik még nem láttak pl. mikrovezérlőben FFT-t (na jó, egy F-et lehagyhatun''
    szerintem lehet, hogy láttak, de észreverrék azt is, hogy a programozóknak nagyságrendileg kisebb hányada foglalkozik ilyenekkel, mint magyasabb szintű nyelveken való absztrakt programozással, így mondjuk egy teljesen alapsz szintű, bemelegító tárgyban, mint amilyen a ''programozási környezet'' állnéven emlegetett BASH(+DCL) scripting tárgy inkább a mainstream-felé kellene húzni, aki meg nem akar ide tartozni, az majd akkor döntse el, amikor már látja, hogy mizújs a nagyvilágban, és tudja, hogy ő meghal ha nem ultra-hatékony C programokat ír majd. a többség nem ilyen.

    ''Mivel a forráskódok 98%-át nem azért írják, hogy azt
    később valaki megtanulja mint a verset, az áttekinthetőség imho feláldozható lenne a hatékonyság ''
    gondolod, hogy a szoftverek 98%át sosem fejlesztik tovább? szerintem inkább fordítva...

    ''nnomindegy, ez amúgy is flame-téma, és amúgy is a gyakorlati és elméleti programozók közti bulinak számít... én meg egyik csoportba sem tartozom.''
    még én sem, de hajlok az absztraktabb programozást támogatni. amúgy télleg flame, meg off, sorry akir zavar.
    szerk : esetleg megérne egy témát a got vs no-goto?

    [Szerkesztve]

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Tele von Zsinór

    őstag

    Igazatok van, ha ott a pandora, akkor mit keres az extrán?
    [L]http://people.inf.elte.hu/maerlyn/fibo.sh[/L]
    És látom, azért komoly viták merültek fel a cimkékkel kapcsolatban. Először azért gondoltam a cimkékre, mert még nem mélyültük el a linuxban annyira, hogy a bonyolultabb szerkezetekkel tisztában legyek. De előreolvastam egy kicsit, és ott találtam a case pontos szerkezetét, és végül az lett a megoldás.

  • Miracle

    senior tag

    válasz Tele von Zsinór #16 üzenetére

    Csa úgyis leszedte volna az agyadat. meg a gyakvezek is.

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Husky

    aktív tag

    válasz Miracle #15 üzenetére

    Termeszetesen elismerem, hogy magasszinten priman lehet goto nelkul programot irni (~60
    meganyi 'magasszintu' forraskodomban osszesen kettot talaltam), de akkor sem ertem, miert kell a
    hasznalatat egyessel buntetni... :) .... Egyszeruen vannak esetek amikor a goto frappansabb mint
    valami a=1; while(a) { .....a=0.....} megoldas... :)

    A fenti 2 goto-s atlagomat rontva: viszont rengetegszer szoktam egy fuggvenybol tobb ponton is
    kilepni, a sok return meg gyakorlatilag egyenerteku a goto end; end: return; szentsegtoressel. :D

    > gondolod, hogy a szoftverek 98%át sosem fejlesztik tovább? szerintem inkább fordítva...

    Arra celoztam, hogy a szoftverprojektek nagy resze modulokban irodik meg, egy programozo megir
    egy modult, ojjektumot, akarmit, abba mas nem nez bele. (Jo, auditalt forraskodnal van szenvedo
    alany is.) ... es mivel a programozok nagy resze goto nelkul is nehezen olvashato kodot gyart,
    eleg surun egyszerubb ujrairni mint idegenkent megerteni, debuggolni, fejleszteni... Legalabbis en
    utalok mas fejevel gondolkodni, par honap szunet utan a sajat kodomat is nehezen latom mar at. :D

    > esetleg megérne egy témát a got vs no-goto?

    Nah, flame monnyon le. En is csak azon akadtam ki, hogy a helyes programozas modszertana
    helyett boszorkanyuldozest tanitanak az elsoeveseknek... :)

    Rendszergazda vagyok. Ha röhögni lát, mentsen!

  • Tele von Zsinór

    őstag

    Na igen, ez sem hülyeség. A gyakvez jó fej, előző órán sok kérdésére tudtam a választ, aztán a végén sikerült olyat kérdezni, amin sokat gondolkodott, és a végére sem volt biztos megoldás :).

  • escie

    őstag

    válasz Miracle #11 üzenetére

    az NYF-en...
    amúgy tök komoly...
    a tanár elmagyarázta, hogy ilyen is van. aztán kijelentette, hogy nála, ez meg is ér egy pecát, ha zh-n alkalmazzuk... :D


    nem csak ezért nem szeretem használni(bár nem vagyok egy nagytudású programozó, inkább csak hobbi), hanem mert egyszerűen nem elegáns(szvsz.).
    persze, ha pénzt kéne keresni programozással, nem hiszem, hogy az eleganciával törődnék, mindemellet kerülném, ahol lehet.

    I'm back, baby!

  • dabadab

    titán

    válasz Husky #14 üzenetére

    ''Mivel a forráskódok 98%-át nem azért írják, hogy azt később valaki megtanulja mint a verset, az áttekinthetőség imho feláldozható lenne a hatékonyság oltárán....''

    Nekem az a dolgom, hogy par tiz megas forrasokban turkaljak (mokas dolog a '80-as evekben irt szubrutinokkal osszefutni :) ). Ha vki ezzel a felvetessel jonne, hogy az attekinthetoseg nem fontos, akkor... akkor nem ertenek vele teljesen egyet :)

    A mikrokontrollerek nemileg elutnek a ''mainstream'' programozastol a HW korlatok miatt (es ezek a korlatok azert jotekony hatassal vannak a bonyolultsagra is), de egy ''igazi'' szamitogepen futo programnal maskepp neznek ki a dolgok.

    ''a nyolcvanas évek végén hátra kellett volna dőlni, hogy most már nyugi van, és hagyni, hogy a programozó hatékonyan végezze munkáját. Szabadon.''

    Sut rolad a mikrokontrolleres hatter :) Egyebkent meg Dijkstra a ''Go To Statement Considered Harmful'' c. szosszenetet '68-ban tette kozze ([L]http://www.acm.org/classics/oct95/[/L]), szoval egyaltalan nem uj talalmany a dolog, es en a magam reszerol lelkesen tamogatom azon elkepzeleset, hogy Assemblynel magasabb szintu nyelveken az ember ne hasznaljon gotot.

    DRM is theft

  • dabadab

    titán

    válasz Tele von Zsinór #16 üzenetére

    Nem rossz, de ezen meg lehetne csiszolni.
    Konkretan:

    1. ha egy scriptben meg akarod hivni sajat magat, akkor a fixen (foleg eleresi utvonallal egyutt) bedrotozott nev helyett hasznald a $0 parametert (az az a nev, amivel meghivtak a scriptet)

    2. de inkabb ne is hivja meg magat a script, mert az plusz egy bash betolteset is jelenti, vagyis nem tul hatekony, hasznalj inkabb fuggvenyeket, pl:

    function qwe(){
    echo $1
    qwe ''${1}x''
    }

    3. az algoritmus se tul hatekony, jobban mukodne, ha ket elemet adnal at + egy szamlalot, hogy meg hany elemet kell kiszamolni. Ha pl a hatodik elemre vagy kivancsi, akkor igy neznek ki a fuggvenyhivas parameterei:

    1 1 4
    1 2 3
    2 3 2
    3 5 1

    Es itt mar nem kellene tovabb hivni, mert a 3+5-bol kiszamolhato a hatodik elem.

    (Persze a Fibonacci-sorozat szamolasa a tokeletes peldaja a ''rekurzivan is meg lehet csinalni, csak ugy bonyolultabb es kevesbe hatekony'' algoritmusoknak)


    [Szerkesztve]

    DRM is theft

  • dabadab

    titán

    válasz Miracle #11 üzenetére

    ''akkor nálatok(...hol is?) nagyon jók a tanárok.''

    Ugy latom, ezt komolyan (nem pedig gunykent) irtad - am ez sajnos nincs igy a gyakorlatban.
    Kedvenc torteneteim (Kando):

    1. Eloadason megtudjuk, hogy a goto gonosz, semmikeppen nem szabad hasznalni. Aztan az eloado felir egy algoritmust, aminek kb a fele GOTO utasitasokbol all - ''khmm, ez igy volt egyszerubb'' :)

    2. Gyakrolaton kis papir, hogy milyen legyen a program (ne legye benne goto, legyen szigoruan tipusos, stb). Diak: ''Mi az a szigoruan tipusos?'' Gyakvezer: ''Ohm, khm, hat azt igy pontosan igazan nem is tudom''


    Szoval a goto tiltasatol meg senki nem lesz jo tanar.

    DRM is theft

  • dabadab

    titán

    válasz Husky #18 üzenetére

    ''Arra celoztam, hogy a szoftverprojektek nagy resze modulokban irodik meg, egy programozo megir egy modult, ojjektumot, akarmit, abba mas nem nez bele.''

    Ez azert nem nagyon mukodik evtizedekig futo projekteknel, de mar egy ev alatt is eleg jelentos szemelyi valtozasok lehetnek.

    ''es mivel a programozok nagy resze goto nelkul is nehezen olvashato kodot gyart, eleg surun egyszerubb ujrairni mint idegenkent megerteni, debuggolni, fejleszteni''

    Szerintem azert a legtobb programozo inkabb nem irna ujra par ezer sor mukodo programot, csak azert, hogy kijavitson egy bugot (es persze a fonokei is ennek megfeleloen osztjak a budzset).

    ''Legalabbis en utalok mas fejevel gondolkodni, par honap szunet utan a sajat kodomat is nehezen latom mar at.''

    Ugye, ugye, a GOTO-k ;]

    DRM is theft

  • Miracle

    senior tag

    válasz dabadab #23 üzenetére

    ''Ugy latom, ezt komolyan (nem pedig gunykent) irtad - am ez sajnos nincs igy a gyakorlatban.''
    Az a tanár, akiről szó van, amikor én jártam, megemlítette, hogy GOTO van, de nem mondja el, nem kell. Ezek szerint szerencse.

    ''1. Eloadason megtudjuk, hogy a goto gonosz, semmikeppen nem szabad hasznalni. Aztan az eloado felir egy algoritmust, aminek kb a fele GOTO utasitasokbol all - ''khmm, ez igy volt egyszerubb'' ''
    Itthon vagyunk. ilyen embereknek kell tanítani. ez a király. Most nem akartalak megsérteni, én is találkozok olyan kotatókkal, akik talán jobb lenne, ha nem oktatással keresnének pénzt(mármint a diákoknak) de valamiért az egyetem vezetőit kevéés érdekli, hogy valaki alkalmas-e a tanításra, az, hogy havonta publikál egy cikket fontosabb.

    ''2. Gyakrolaton kis papir, hogy milyen legyen a program (ne legye benne goto, legyen szigoruan tipusos, stb). Diak: ''Mi az a szigoruan tipusos?'' Gyakvezer: ''Ohm, khm, hat azt igy pontosan igazan nem is tudom'' ''
    Az is szép, amikor nem felkészült gyakvezek tartanak gyakot. volt egyhez szerencsém, túléltem, azóta rendesen utánakérdezek a gyakveznek. a Miénk(bevezetés a programozáshoz tárgy) pl. olyan volt, hogy az otthon elkészített struktogrammot rendszeresen elcseszte, és amikor mi(a diákok) kijavítottuk, akkor általában nem fogta fel, hogy mivan, és vagy aztmondta, hogy mindegy(és táblát töröl), vagy majd holnapra megnézi. Egyszer a táblánál oldottam meg egy feladatot, és elmagyaráztam, hogy mit csinál, és ő volt az utsó a teremben, aki nem fogta fel, már azok is értették, akiknek később nem lett gyakjegyük.szar, hogy ilyenek tanítanak.

    értelmező késziszótár :: rekurzió --> lásd : rekurzió

  • Tele von Zsinór

    őstag

    válasz dabadab #22 üzenetére

    1, Igen, ez tény, de most mondjuk nem ez volt a cél, tökéletes volt a fix útvonal.

    2, Ma tanultuk a függvényeket :)

    3, Viszont azt még nem tudom, hogy függvénynek pontosan hogy is lehet paramétert átadni. Én arra gondoltam, hogy úgyis látja az összes változót, amit a program használ.

    Köszi az épületes hozzászólást!

Aktív témák