PERL - hra - vas nazor/chyby/pripomienky
Pre pridávanie komentárov sa musíte prihlásiť.
Pre pridávanie komentárov sa musíte prihlásiť.
Vyšlo „paralelné vydanie“ (nie úplná aktualizácia) verzie AV Linux MX Edition.
Zdroj: AV Linux
Priatelia želám Vám do Nového roku 2025 všetko dobré, nech sa Vám vo svete Linuxu darí a z mojej strany ďakujem všetkým, ktorí akýmkoľvek spôsobom prispievajú na tento web. Či sú to už správy o zaujímavých novinkách, komentáre v diskusiách alebo blogy, ktoré niekedy zaberú aj pol dňa klepania na úkor svojho času. O to väčšia vďaka, PF 2025.
3. ročník Bratislava OpenCamp sa uskutoční 5. 4. 2025
Po covidových rokoch a ďalších prekážkach je pred nami tretí ročník, ktorý sa uskutoční v apríli 2025 na FIIT STU v Bratislave. Prvý aj druhý ročník konferencie sa tešil účasti okolo 300 ľudí, veríme že tretí ročník bude ešte lákavejší.
Zdroj: Bratislava OpenCamp
Aj v roku 2025 sa v Bruseli uskutoční podujatie "Free and Open source Software Developers’ European Meeting" (FOSDEM). Viac na jeho stránkach.
Zdroj: https://fosdem.org/2025/
Komerčné riešenie pre virtualizáciu VMware Workstation Pro bolo uvolnené bezodplatne pre osobné použitie približne od mája 2024. Jedná sa o veľmi kvalitný virtualizačný nástroj pre windows aj linux.
Vznikla česká webová stránka venovaná distribúcii EndeavourOS s podporou Arch-Linux.cz. Táto distribúcia je založená na Arch linuxe. Inštalácia je založená na Calamares.
Zdroj: EndeavourOS.cz
V rámci updatov k 1.6.2024 bol vydaný respin MX linuxu pre single board počítač Orange Pi.
Zdroj: Mxlinux org
Vyšla nová verzia rolling-update distribúcie Manjaro, ktorá spája silu Arch Linuxu s jednoduchosťou user-friendly distribúcii. Okrem najnovšieho jadra je k dispozícii pre priaznivcov KDE aj najnovšie rozhranie Plasma 6. Manjaro vychádza vo verziách s KDE, GNOME a XFCE.
Zdroj: Distrowatch
Bola vydaná verzia 0.10 textového editoru neovim. Nová verzia obsahuje množstvo vylepšení LSP protokolu, zvýrazňovania syntaxe pomocou Tree-sitteru a ďalších menších zmien. Kompletný zoznam noviniek je dostupný v oznámení o vydaní.
Zdroj: neovim.io
Retro distribúcia arix prináša prostredie kde 1.1.2 na Debian 13 (trixie).
Zdroj: ariasft.github.io
Ak sa vám táto stránka páči, môžete nás podporiť tak, že si na vaše stránky umiestnite tento banner.
Náš Twitter tag je #LinuxOSsk
tak rezervy tam určítě jsou a všechny odstranit naráz by byl téměř nadliský úkol :)
především dobrý textový editor (popř. IDE)goto
se v takovéto podobě používá jen ve vyjimečných případech, místo toho raději použij smyčku např.while
dále si přidej na druhý řádek
use strict;
a to tě před všechny proměnné donutí přidatmy, our, local, ...
zkus odstranit zatím tohle (kdyby ti to nešlo tak ti pomůžu/eme) a pak bych ti popřípadě poradil další úpravy
ten script funguje a je celkem dobře formátovaný, což je určitě k tvé cti,
tak se nenech odradit a dál zkoušej
PS.jsou věci co ti můžou pomoci v programování
Perl
-u,dále pak např.
perltidy
perlcritic
i když na ten je u tebe možná ještě brzoV prvom rade dakujem za tipy a postrehy.
Zbavil som sa GOTO ale nie cez while - rozmyslal som nad tym ale neslo mi do hlavy ako to spravit, aby vyskocil z Ifu a siel na spravne miesto... Ibaze by som tam narafal niekolko while, v sebe vnorenych ale to mi sprislo ako dost neprehladne a narocne riesenie (najma ak som to mal do kodu dopisat a nie cele napisat nanovo :D )
Tak som z GOTO presiel na last ale to mi robilo problemy, pak na next - to uz slo ale nie vsade, tak som kod rozstrihal na podprogramy a goto, last, next, continue a neviem co vsetko som nasiel nahradil tym, ze po skonceni (prebehnuti) podprogramu som na jeho konci odkazoval na iny podprogram - tak uz bolo len treba ustrazit, aby kazdy jeden koncil odkazovanim na iny (ak sa nejednalo o ukoncenie celeho programu) a zaroven na spravny - nazvem to logicky nadvaznym.
Tiez som to spravil aj preto, ze ked uz som bol vo svungu koli vyhodnoteniu po vyhre/prehre ktore sa mi opakovali 3x uplne rovnako, tak som si povedal, ze by to mohlo byt riesenie namiesto GOTO - ci uz dobre, to posud ty :)
Mam vsak otazky, preco je to GOTO take zle? funguje to, a robi to presne to, co od neho chcem - tu sa stopni a chod tam a tam a pokracuj akoby nic. Je to koli tomu ze ak je program robustny, tak to spomaluje alebo robi chyby ci ako? Ako nie si jediny co mi to hovori / pise ale odpoved ako "nepouzivaj to a bodka mi akosi nestaci, najma ak to vyvojaro perlu vymysleli a stale to v jazyku udrziavaju...
Za dalsie, v miestach kde sa hrac ma rozhodnut co chce pokracovat (1/0) by som chcel dat Y/N alebo A/N tak ako to byva bezne, ale akosi mi to nejde.
Robil som to tak, ze som v Ife priradoval hodnoty nie 1/0 ale pismena, to sa mu vsak nepacilo, tak somm skusil cez pomocne premenne, ktore sa mali vyhodnocovat
stale mi to nebere. Napad? Riesenie?
za dalsie, ked uz mam pouzivat use strict (naco je to dobre, resp lepsie nez rovno pouzivat premenne?), nevedel som ci je lepsie ich deklarovat na zaciatku celeho programu alebo az v podprograme akonahle sa objavia?
Sorry asi ssa pytam az moc ale posledna otazka:
ako udrziavat prehladnost kodu, ked by som sa teraz zozhodol, ze to co mam musi byt v Ife (alebo v niecom inom) ako dat na vsetky riadny tabulator (najlepsie nie manualne), lebo oznacit blok textu a stlacit TAB nie je najstastnejsi napad.
Na toto vsetko sa pytam preto, ze tuto hru som realne s kockami hraval o korunky este na zakladnej so spoluziakmi a viem, ze tam je este kopec pravidiel a pod co som zatial nenapisal (Ale napisem :D)
Teraz to vyzerá o moc lepšie.
Goto je prasárna, skáčeš po kóde ako koza, toto sa ti rýchlo vypomstí keď kód presiahne tvojich pár riadkov, poďalšie to môžeš písať rovno v asemblery, keď nechceš použiť vymoženosti vyšších jazykov.
$ano = "A"; // Toto je reťazec (string)
if ($zmena_vkladu == $ano){ // hehe fail :)
No... za pokus to stálo.
Ale uz to mam, treba citat vsetky riadky ukazkoveho programu :)
goto
značně znepřehledňuje orientaci v kódu, některé starší jazyky nebo nízkoúrovňové jazyky nepodporovali iteraci pomocífor (foreach)
awhile
např. Basic nacmém Commodoru to neuměl nebo třeba PIR (jestli se nepletu).goto
v Perl-u se dá použít i při volání subrutinygoto &fuction
což má své opodstatnění. Dále by se dal možná někde najít (popř.) zkonstruovat skript, kde odstraněnígoto
z kódu by bylo značně složitéPs. budu odpovídat s dovolením postupně :)
na porovnávání řetězců se v Perl-u používají
lt gt le ge eq ne
na rozdíl od číselného< > <= >= == !=
má to své opodstatnění např.
100 < "2aa"
není pravda,100 lt "2aa"
je pravdatedy ve vašem případě
"A"=="N"
je pravda (porovnává se0==0
) :)Trochu se budu opakovat.
Správně odsazovat (popř. ulehčit odsazování) umí každý "dobrý" textový editor.
perltidy
vám automaticky doplní odsazování. Zkuste siperltidy kocky2.pl
a pak si prohlédnout souborkocky2.pl.tdy
.konečně k vašemu kódu: :)
Především pokrok lze jasně vidět. Přístup přes subrutiny a jejich vzájemné volání je trochu neobvyklý, ale zcela korektní.
Nicméně se mi zdá, že v tomto případě je kód až příliš rozdělen na mnoho subrutin (dále sub).
Každá sub by měla dávat smysl sama o sobě. Zpravidla každá sub dostává nějaké "hodnoty" na vstupu a nějakou "hodnotu" dává na výstup a mezi sub se sdílí jen minimum proměnných.
use strict;
zabraňuje jednak chybám v psaní např. nepovolí$zmwna_vkladu
, dále pak "nutí" držet v kódu pořádek (dělit globální a localní proměnné atp.).proměnné se deklarují zpravidla když jsou potřeba většinou s udáním hodnoty.
Např. takhle by mohli vypadat některé úpravy ve vašich sub (při globální proměnné
our $kredit
):zkuste udělat další úpravy a pak by jsme vám poradili dál
PS. zas tak moc mi nevěřte ve vysvětlování jsem zjednodušoval, sem tam něco vynechal a nebo jsem prostě mohl udělat chybu
P.S.: goto no ...