Új hozzászólás Aktív témák
-
pmonitor
aktív tag
int main()
{
const char name[20];
const char restrictions[7] = "a\0b\0c\0";
printf("Enter name: ");
scanf("%s", name);
int i, ok = 1;
for (i = 0; restrictions[i] && ok; i += 2)
{
if (strstr(name, &restrictions[i]) != NULL)
{
ok = !ok;
break;
}
}
if (ok) printf("Name: %s\n", name);
else printf("Not a valid name!\n");
return 0;
}[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
Én csak tanulmányozásra írtam a kódot, hogy az strstr() miért is nem működik karakterekre. Mert a karakter nem kezelhető strstr()-el. Viszont a ciklust nem tudod elkerülni, akár az ststr()-t, akár az strchr()-t használod. Egyébként én is elkövettem 1 hibát. A break-re nincs szükség, mert az elején a feltételben vizsgálom.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz gregory91 #6150 üzenetére
Kicsit másképp
int main()
{
char name[20];
char chars[5] = { 'a','b','c','d','e' };
int yes = 0;
printf("Enter name: ");
scanf("%s", name);
int max[2] = { (int)(sizeof(name) / sizeof(char) - 1), (int)(sizeof(chars) / sizeof(char) - 1) };
int index[2];
int n = 1, act = -1;
int ok = 1;
do
{
while (act < n)
{
++act;
index[act] = 0;
}
if (name[index[0]] == chars[index[1]])
{
ok = !ok;
break;
}
while (act > -1)
{
if (index[act] < max[act])
{
++index[act];
break;
}
else --act;
}
} while (act > -1);
if (ok) printf("Name: %s\n", name);
else printf("Not a valid name!\n");
return 0;
}http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
-
pmonitor
aktív tag
válasz sztanozs #6160 üzenetére
Nem pejoratív értelemben gondoltam, amit írtam. Csupán azt jelenti, hogy aki ezt írja magáról: "Elkezdtem csak úgy érdeklődés szinten c-t tanulni mert érdekel. Az elején vagyok nagyon"
Ha ő megérti, akkor nagyon tehetséges. Ezt értettem a "viheti valamire" alatt. Egyébként az sem baj, ha most nem érti meg, és később visszanéz(és akkor gondolkodik el rajt). Viszont az olvasók között is lehet olyan, aki már eljutott odáig, hogy magától nem jutna eszébe, de ha így látja, akkor egyrészt megérti a működését, másrészt hogy mely esetekben célszerű ezt a formát használni. Sztem. az olvasókat kevesen emlegetik(talán senki), pedig többen vannak, mint akik ide írnak. Pl. itt is szóba került, hogy a kérdező kezdő, azért nem kellene kész megoldást adni. Az ilyenre írom, hogy azért olvasók is vannak, akik már megértik a másfajta megoldást is. Nem biztos, hogy mindig csak a kérdezőt kellene nézni. De a kódot "konyhanyelven" pszeudo kóddal is le lehet írni, ha valaki nem akar teljesen kész kódot adni.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6165 üzenetére
> vagy minden helyre külön odakopipészteled a felszabadítást, vagy mindenhonnan a végére gotozol.
Mindenképpen mindenhová kell kopipésztelned vagy a gotot, vagy a felszabadítást. De sztem. ha ilyenre sor kerül a gyakorlatban, ott nem jól tervezték meg a logikai hálózatot. Biztos vagyok benne, hogy a megfelelő if-ek megválasztásával ha nem is teljesen, de nagyon nagy mértékben megszüntethető a sok helyről történő kilépés a függvényből. Max. 2 helyre nyugodtan lehet kopizni a felszabadítást is. De az is lehet, hogy megfelelő szervezéssel még a 2 helyet is le lehet redukálni egyre(de erre a fejemet nem teszem).
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6169 üzenetére
Ha minden igaz így hirtelen:
static int kvm_vcpu_check_block(struct kvm_vcpu *vcpu)
{
int ret = -EINTR;
int idx = srcu_read_lock(&vcpu->kvm->srcu);
if (kvm_arch_vcpu_runnable(vcpu)) {
kvm_make_request(KVM_REQ_UNHALT, vcpu);
srcu_read_unlock(&vcpu->kvm->srcu, idx);
return ret;
}
if (kvm_cpu_has_pending_timer(vcpu) || signal_pending(current)) {
srcu_read_unlock(&vcpu->kvm->srcu, idx);
return ret;
}
ret = 0;
srcu_read_unlock(&vcpu->kvm->srcu, idx);
return ret;
}[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6171 üzenetére
De sztem ki lehet az ilyeneket szervezni az ilyent külön függvénybe, és akkor tovább egyszerűsíthető. Azért a gyakorlatban ilyen nem nagyon fordul elő. A papír(vagy a monitor ) mindent elbír.
Szerk.: ja látom Livius gyorsabb volt. Mondtam, hogy csak szervezés kérdése. Csak nem én szerveztem jól.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6175 üzenetére
Így?
static int kvm_vcpu_check_block(struct kvm_vcpu* vcpu)
{
int ret = 0;
int idx = srcu_read_lock(&vcpu->kvm->srcu);
int ex = 0;
if (kvm_arch_vcpu_runnable(vcpu)) {
kvm_make_request(KVM_REQ_UNHALT, vcpu);
ret = -EINTR;
ex = 1;
}
if (!ex && kvm_cpu_has_pending_timer(vcpu))
{
ret = -EINTR;
ex = 1;
}
if (!ex && signal_pending(current))
{
ret = -EINTR;
}
srcu_read_unlock(&vcpu->kvm->srcu, idx);
return ret;
}http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz nevemfel #6179 üzenetére
Én is gondoltam erre. Csak az a baj vele sztem. hogy feltételezi, hogy ha az előző feltételbe belemegy, akkor annak mindenképpen kilépés lesz a vége. Bár a konkrét példában ez a helyzet. De még azon belül is lehetnek if-ek.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6182 üzenetére
Ilyen alapon az én első kódomon is világosan látszik, hogy sorban megy végig a lépéseken és ha bármelyik nem sikerül, akkor game over., hogy téged idézzelek. Olvashatóságra az sem rossz. De nevemfel-é mégis jobb. De az sem sokkal rosszabbul olvasható.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6165 üzenetére
Stroustrup írta:
>A "soha ne tegyük ezt" alakú szabályokat haszontalannak tekintem.Ez általában igaz, viszont teljesen nem értek vele egyet. Hozzátenném, hogy azért nem ilyen sok van. 2 fő ökölszabály viszont biztos létezik a programozásban:
1.: SOHA ne használjunk gotot. A Szekvencia - Szelekció - Iterácó hármassal mindent meg lehet oldani. Nincs szükség goto-ra.
2.: Ha van egy típus, és létezik hozzá olyan függvény/metódus, hogy a konvertál(string s) az adott típusra alakítja a stringet, akkor ezt a konvertál() függvényt/metódust MINDIG használni kell, mielőtt műveletet végzünk vele.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz gregory91 #6185 üzenetére
A continue tiltásán 1 kicsit én is csodálkozom. Ami okot adhat erre, az talán az, hogy a ciklusnak alapvetően 2 lényeges pontja van: az eleje és a vége. A continue ezt rúgja fel. Gyakorlatilag így több (kis)ciklus lesz a (nagy)ciklusban, ami egyébként elkerülhető. Sztem ez lehet valamiféle ok a tiltására. De mondjuk ezt én nem venném fel a "soha" kezdetű listámra.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6188 üzenetére
A break nem goto. Nem lehet vele visszafelé ugrani, meg if-es szerkezetekből sem tudsz kilépni vele.
Ebben a könyvben László József a következőket írja(többek között):
>A Pascal programokban betartunk még néhány hasznosnak vélt egyéb konvenciót is:
1: Angol elnevezést adunk az eljárásoknak, függvényeknek, típusoknak, változóknak, stb.,
.
3: A megjegyzéseket magyarul írjuk, lehetőleg minél tömörebben,
.
5: A goto utasítást a Pascal-ban nem használjuk, mert ugye programozók vagyunk.Na, most virtuálisan jól összeugrasztottam Stroustrup-ot és László Józsefet.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6193 üzenetére
Az első mondatom meg szerintem nem értetted meg. Azt a goto-ra írtam.
Csak azért leírtam, hogy komoly könyv írója is tiltja a goto-t nem véletlenül.
Meg leírtam, hogy ezzel virtuálisan jól összeugrasztottam Stroustrup-ot és László Józsefet.Még a szakik sem értenek mondjuk egyet. De László József nem egy könyvet írt meg goto nélkül. Ez azért valamit csak jelent, nem?
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6195 üzenetére
Bármennyire is adott azonban a lehetőség a Goto használatára, ne használjuk. Nincs olyan probléma, amely ne lenne megoldható nélküle is, használatával azonban áttekinthetetlenné válik a programunk, és ezzel a hibalehetőségek száma növekszik.
Továbbá:
A Goto parancs sok nyelvben létezik, használatát azonban el kell kerülni. Léteztek olyan ősnyelvek, amelyekben nélkülözhetetlen volt, a mai magasszintű nyelvekbe azonban többnyire hagyománytiszteletből került be, nincs rá szükség. Léteznek olyan nyelvek is, amelyekből hiányzik ez a parancs.
Ezért hasonlítom össze a C-t meg a Pascalt(meg minden olyan nyelvet, amiben létezik). Mindenesetre a fenti idézetek sem Stroustrup nézőpontját hangoztatják, hanem László Józsefét. Sőt, a második idézet egyértelműen kimondja, hogy léteznek olyan nyelvek is amelyekből hiányzik. Ezek szerint azokban a nyelvekben nem is lehet programozni, igaz?
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6202 üzenetére
Nem az implementációról beszéltem. Nem tudsz olyan kódot írni, hogy az implementációban break(vagy continue) legyen. Ott valóban minden goto(és ha tovább megyünk a kész kódra, akkor jmp) lesz. Arról a forráskódról beszéltem, amit a user ír. A példádban erről:
for (int i=k; i>l; i+=m)
Itt a continue visszafelé lép a törzsből az "i+=m"-re. Míg a break csak előre lép, a törzs utáni helyre. break-el nem tudsz visszafelé lépni. A goto-val meg össze-vissza tudsz lépkedni(akár hátrafelé is ki tudsz lépni a ciklusból(aztán vagy újra belelépsz, vagy akkor már kihagyhatod a ciklust is). Pl.:
cimke_1:
//utasítások
for (int i=k; i>l; i+=m) {
//utsítások
goto cimke_1;
}Ilyent a break-el nem tudsz csinálni. Az, hogy az implementációban mi van, az más kérdés.
Szerk:
A break esetén megvalósul a szekvencia - iteráció elv. Szekvenciálisan mennek az utasítások, amíg egy ciklushoz nem érsz. A ciklus más dimenzió, mint a szekvencia. Viszont a break tartja a szekvenciát(hiszen előre ugrik. Tehát az iteráció előtt és mögött is megmarad a szekvencia. Persze közben lehet szelekció bárhol, de a példámat nem akartam annyira bonyolítani.[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6205 üzenetére
Technikailag nem ugyanazt csinálja, mert az
// utasítások
-ban lehet olyan is, ami átugorja a for és a while ciklust is egyben, vagy még hátrébb is mehet. Ezért értek egyet azzal az állásponttal, hogy goto-t soha, még ha durvább megfogalmazás is.Nézd meg légyszíves ezen oldal végén a "goto eredménye részt". Na ezért mondom, hogy gotot soha...
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6208 üzenetére
A megerőszakolt while ciklus sztem. egyértelműbb(ha ennél a példánál maradunk), mint a goto. Mert a while ciklus esetén kapásból látod, hogy itt f értékétől függő ciklusról van szó. Ráadásul ugye ott még a code syntax(behúzás) is segít a megértésben. Ha egy cimkét látsz, akkor azt nem tudhatod, hogy fentebbről jövő if, vagy else, vagy alulról jövő ciklustól téved-e oda a vezérlés. Ráadásul a cimkéknél nem nagyon van syntax(behúzás), illetve ha van, az meg még rosszabbul olvasható. Ugyanakkor a for-ban lévő goto esetén sem tudod egyből megmondani, hogy az előre, vagy hátra ugrik-e. Szóval a megerőszakolt while esetén egyből látszik a szerkezet, míg goto esetén nem.
Azért a vb6/vba/vbs esetén amit linkeltél, az nem ugyanaz, mint a Try/Catch/Finally. Ezt is figyelembe kell venni. Egyébként ezek közül én csak az On Error Resume Next-et szoktam használni. De amit linkeltem, az a pascal program végén látható "A goto eredménye" című kép, az sztem abszolút nem nyelvfüggő. Másrészt meg én úgy tudom, hogy a C-t is a magas szintű nyelvek közé sorolják.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
-
pmonitor
aktív tag
válasz jattila48 #6211 üzenetére
Látom, hogy hozzászólásonként válaszolsz. #6181-ben leírtam, hogy nevemfel #6179-ben lévő megoldása a legjobb arra a feladatra(nem az enyém).
#6184-ben Stroustrup-ot idéztem, aki azt írta, hogy:
>A "soha ne tegyük ezt" alakú szabályokat haszontalannak tekintem.
A #6190-ben idéztem László Józsefet:
>A goto utasítást a Pascal-ban nem használjuk, mert ugye programozók vagyunk.
Majd a #6197-ben innen is idéztem 2 programnyelvtől független idézetet.A véleményem a #6209-ben foglaltam össze. A goto-cimke párossal összevissza lehet ugrálni, áttekinthetetlen lesz a kód tőle. Ha cimkét látsz, akkor egyrészt nem tudod, hogy fentről, vagy lentről tévedt oda a vezérlés. De azt sem tudod ránézésre, hogy amik utána vannak utasítások, azok micsodák(pl. a cimke 1 ciklus kezdetét jelzi-e, vagy egy - vagy több - if ágból ugrottak-e oda). Ugyanakkor, ha goto-t látsz, akkor sem tudod, hogy az a cimke felfelé, vagy lefelé ugrik-e. Az összevissza ugrálás lehetősége miatt mondom én azt, hogy a goto - cimke párost soha! Míg ha azt látod, hogy
while(f)
, akkor totózás nélkül, kapásból tudod, hogy mi következik(1 cimkével ellentétben).Én ugyan nem vagyok programozó, de remélem, hogy az ELTE-n(is) vaskalaposan ragaszkodnak a struktúrált programíráshoz, és tiltják a goto-t azokban a nyelvekben is, amelyekben még létezik. Mert ahogy a fenti linkemen is írják:
>a mai magasszintű nyelvekbe azonban többnyire hagyománytiszteletből került be, nincs rá szükség. (mármint a goto-ra).[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz #90088192 #6214 üzenetére
Hogy miért találták ki? Hát pl. azért, mert a BASIC-ben pl. lehetetlen volt a programozás nélküle(ott még a sorok számozva voltak. De itt is írják:
> Léteztek olyan ősnyelvek, amelyekben nélkülözhetetlen voltHát többek között ezért. Na meg azért, mert akkor még nem bizonyították be, hogy GOTO nélkül mindent meg lehet oldani, nincs szükség rá.
Egyébként itt osztályozzák a programnyelveket, ahol látszik, hogy a C/C++ is magas szintű nyelv.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz jattila48 #6216 üzenetére
>A hozzászólásaidból az jön le, hogy kezdő vagy a programozásban (ez persze egyáltalán nem baj), és nem írtál még igazán nagyobb programot.
Nem kezdő vagyok, hanem egyszerűen nem vagyok programozó, ez miatt kezdő sem.
Az előéletem megnézheted itt, ahol azért 1-2 kérdésre válaszoltam.De ha a referenciáim érdekelnek, akkor többek között ezek, valamint ezek, továbbá ezek a publikus kódjaim, amelyek között van nagyobb is(persze relatív, hogy mi az az igazán nagyobb program?).
Neked mik a referenciáid/publikus kódjaid?
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz jattila48 #6218 üzenetére
Nem sértődtem meg. Nézzünk 1 nagyobb projektet. Ezt remélem elfogadod 1 nagyobb projektnek. Itt a 300. sortól ez van(csak a szerkezetet mutatom):
if (raw)
goto out;
switch (token->type)
{
.
.
}
out:
timevar_pop (TV_LEX);Ezt miért nem lehet így:
if (!raw)
{
switch (token->type)
{
.
.
}
}
timevar_pop (TV_LEX);??
A nagy projekt is lépésekből épül fel.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz #90088192 #6224 üzenetére
BASIC != Visual Basic. A BASIC nem magas szintű nyelv(legalábbis ez alapján). Amit írsz, hogy pont azért olyan amilyen, hogy Egyszerű legyen használni, ez a Visual Basic-re igaz. A BASIC-et nem volt 1szerű használni. Ha azt látod, hogy
GOTO 100
, akkor honnan tudod, hogy mi van a 100-as sorban? De szükség volt a GOTO-ra a sorok számozása miatt. A Visual Basic-et valóban 1szerű használni, de ott meg szükségtelen a GOTO használata. Tényleg csak hagyománytiszteletből maradt benne.Azért a marcsának és a csajnak nem ugyanaz az eredménye. Marcsánál nincs, ami olajozza/ápolja a matériát!
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz #90088192 #6226 üzenetére
Idézet innen: > Ezekben a különböző számítógépeken futó BASIC programok szinte mindig inkompatibilisek voltak egymással: az egyik géptípusra írt programot más számítógéptípusokon nem lehetett futtatni.
Ez azért nem a magas szintű nyelvekre jellemző tulajdonság. Továbbá: > Az 1990-es évek elejére sokan leírták a Basicet, mivel a Basic alapú mikroszámítógépek kora lejárt, PC-n a C/C++ és a Pascal nyelvek vívtak ki vezető szerepet.
Igazából nem csak sokan leírták a BASIC-et, hanem a valóságban meg is szűnt. A Visual Basic már nem BASIC, csak BASIC-alapján készült. De már a Visual Basic is inkább csak a VBA-ban létezik. A Vb.Net meg egészen más dimenzió.
sztanozs elítélt, mert pascal témakörben készült irományokból idéztem. De ezek az idézetek nem csak a Pascal-ra vonatkoznak, hanem általánosan is igazak. Mint ahogyan írták, Pascalban nincs is return. Ettől függetlenül lehet a függvény törzsében is értéket adni a függvénynek a
függvénynév:=valami
formátumban(ej, de régen Pascaloztam). De látható, hogy a C-hez viszonyítva ennyivel szigorúbb nyelvben is tiltják a Goto-t(alapból nem is lehet használni benne, csak direktívával lehet bekapcsolni).De ha mindenképpen ragaszkodunk ahhoz, hogy csak szigorúan C nyelvre létrehozott irományokat fogad el valaki, akkor az olyannak meg itt van ez. Itt ezt írja:
> A strukturált programozást a goto utasítás elkerülésére, a program olvashatóbbá tételére találták ki, ezért a goto használata egyáltalán nem javasolt.Ezt direkt a C nyelvre írták(nem Pascal-ra).
A "ma" használt nyelvek között már a BASIC nem található meg. Sőt, az ismertebb nyelvek közül pl. a Java-ban nem is létezik a goto. Ebben a nyelvben pl. a #6219-es hsz-emben írt kódot nem is lehetne megírni. Java-ban a break-nek van 1 olyan "kibővített" funkciója, hogy egymásba ágyazott ciklusok esetén label használatával meg lehet adni, hogy a break melyik ciklusra vonatkozik. De ez nem egyenlő a goto-val(amivel össze-vissza LEHET ugrálni).
Szóval akárhol nézegetek utána, mindenhol a legfinomabb megfogalmazás is az, hogy nem ajánlják a használatát.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz #90088192 #6228 üzenetére
Ebben a témakörben én egyértelműen az ELTE-vel értek egyet(pedig az egyetemekről sem jó a véleményem ÁLTALÁNOSSÁGBAN). Egyébként meg minden esetben el lehet kerülni a használatát. Ez alól nincs kivétel. Az viszont igaz, hogy néha plusz változó(kat) kell bevezetni, de még így is áttekinthetőbb, mint a goto.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz buherton #6230 üzenetére
Nem. De az más, mintha az ember maga írta volna. Bár ott is célszerű lenne betartani ezt a tiltást. Pl. a gcc esetében(lásd. #6219-es hsz-em). Nem szívesen dolgoznék rajta.
Hála isten én válogathatok, mert nem vagyok programozó...
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz kovisoft #6232 üzenetére
Ki mit szokott meg. Nekem pl. teljesen idegen ez a behúzás:
if (!raw)
{
utasítás1;
}Tehát hogy a blokk elejét-végét jelző kapcsos zárójelet is behúzzák.
Én inkább így szoktam:if (!raw)
{
utasítás1;
}Vagy pl. Javascriptben:
if (!raw) {
utasítás1;
}Így sokkal több behúzást könnyebb megérteni számomra.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6236 üzenetére
A fenti példád nem mutatta meg. Csak sajnos nem én mutattam rá(elkapkodtam a dolgot), hanem a munka oroszlánrészét #6172-ben Livius végezte el(ő használta legjobban a szürkeállományát). És #6179-ben nevemfel tette fel az i-re a pontot. Azt, hogy hogy kell az ilyent megcsinálni. A kódod azt mutatta meg, hogy hogyan ne.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6238 üzenetére
A 14 soros kódodban 3 goto van egy struktúrált programozási nyelvben. Ha ezt szóvá teszem, elkezded, hogy nem tudok programozni... Na mind1. De legalább itt kódok voltak. Mert sajnos már annak is örülni kell, ha egy programozási fórumban kódot lát az ember.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6240 üzenetére
Az, hogy mennyire olvasható, az nagyon szubjektív dolog. A következő példát mondom rá:
#6216 hsz-ében jattila48 is elismerte, hogy a szóban forgó kód jobb, mint a tiéd. Pedig a te oldaladon állt, mert azt írta, hogy:
>A #6179 példa valóban jó, de dabadab kritikájában is van azért igazságEz egyértelműen tükrözi, amit az előbb írtam. Na ennyire szubjektív, hogy 1 kód mennyire "jó"(a te szavad járása szerint). Aki melletted van, még ő is azt mondta, hogy a szóbaforgó kód jó.
Zárójelben jegyzem meg, hogy szerintem ha csak az olvashatóságot nézzük, akkor az én 2 return-os kódom a legolvashatóbb. Mert a return egyértelműen jelzi, hogy itt nincs mese, kilépés van a függvényből.
De mint mondtam, ez nagyon szubjektív dolog.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6245 üzenetére
Egy példát tudnál mutatni? Mert amit én a #6219-ben írtam példát, ott egyetlenegy szinttel mélyült csak, nem többel. De ha a #6233-ban lévő behúzást használnánk, sztem alig lehetne ezt is észrevenni.
Meg a tapasztalatom szerint inkább ilyen szerkezetek lesznek:
if(feltétel1 || feltétel2 || feltétel3)
{
}Tehát inkább csak az if-ben növekszik a feltételek száma, nem a feltétel mélysége. Általában VAGY, de ritkán előfordul ÉS kapcsolat is.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz kovisoft #6247 üzenetére
Egy olyan kódot, mint ami itt a 272-473 sorok között van(vagy ennél hosszabb függvény) kódot így sem, úgy sem lát át utólag senki, akármennyire az olvashatóság jegyében íródott, nem az akadémiai szempontok szerint. Tehát így is úgy is, megizzad vele, aki ezt utólag át akarja látni. Még ha az nézi, aki csinálta, ő is beleizzad.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz dabadab #6249 üzenetére
Ha a 300-301. sorban látod, hogy goto out; , akkor honnan tudod, hogy az hova ugrik? "Csak" 170 sort kell lejjeb "tekerned", hogy megtudd, hogy az out mit csinál. Addig csak sejtheted(a neve alapján).
@jattila48:
Nem csúsztattam. Az egyértelműen látszott, hogy dabadab mellett vagy. De az is igaz, hogy a #6216-ban ezt írtad:
A #6179 példa valóban jó, de dabadab kritikájában is van azért igazság, annál is inkább, hogy ennél az egyszerű szerkezetű példánál sokszor bonyolultabb a vezérlésszerkezet, amit nem lehet ilyen szépen struktúrálttá alakítani.Ezért nem csúsztatás, amit írtam. Ez nem az az eset, hogy túl finoman fogalmaztál, hanem egyértelműen elismerted, hogy ez egy szép, struktúrálttá alakított kód. Csak most változtattad meg a véleményed.
Egyébként nem csak téged nézett le, hanem a felsorolásból kihagytam Livius-t és nevemfel-t. Legalábbis itt a topic-on belül. Nézd meg légyszíves nevemfel #6199-es hsz-ét.
És ki tudja, hogy hány embert nézett le az olvasók között.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz buherton #6253 üzenetére
Ezt kalkuláltam ki:
int __init my_init_function(void) {
int err = register_this(ptr1, "skull");
if (!err)
{
err = register_that(ptr2, "skull");
if(!err)
{
err = register_those(ptr3, "skull");
if (err)
{
unregister_that(ptr2, "skull");
unregister_this(ptr1, "skull");
}
} else {
unregister_this(ptr1, "skull");
}
}
return err;
}Lehet, hogy még nem teljesen ekvivalens, de a logika látszik benne.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
-
pmonitor
aktív tag
válasz buherton #6263 üzenetére
Mondjuk sztem. ez az if mélység még nem veszélyes(értelmezés szempontjából).
De itt is működik új változó bevezetésével az, hogy ha még tovább kellene mélyíteni, akkor a változó(mint kapcsoló) "beállításával" lehet követő if-ben rendezni a további feltételeket.
Nekem is azért nagyon oda kellett figyelnem, hogy ezt a goto-val tele kódot megértsem egyáltalán, hogy mi miért is van. És még így sem biztos, hogy sikerült. Ezért írtam, hogy nem biztos, hogy ekvivalens. Úgyhogy nekem meg a goto-kkal teletűzdelt kód antipattern.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6270 üzenetére
Kijelentettem. Nem vitatkozok. Főleg nem győzködök. Mint láthatod, megírtam a kódot. Nekem hasznos időtöltés volt, mert megpróbáltam megérteni az olyanokat, akik annyira oda vannak a goto-ért. Nem árt, ha az ember tanul más szemléletmódot is, még akkor is, ha nem szimpi. Már nem tudom ki írta, meg betű szerint nem is tudom idézni, de megpróbálom: "Programozni annyi, mint megérteni valamit". Teljesen igaza van.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz sztanozs #6274 üzenetére
Lehet, hogy nevemfel csinálta jól. A #6199-#6200-as hsz-ében leírta a véleményét, aztán befejezte. De ha én is ezt csináltam volna, akkor meg nem jutottunk volna el az előző kódokhoz.
Na mind1. Az biztos, hogy én a goto ellenesek táborába tartozom. És ha valaki nem ír olyant, amivel válaszkényszert generál részemre, akkor én is megpróbálom nevemfel viselkedését követni.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
pmonitor
aktív tag
válasz buherton #6279 üzenetére
Ha már ilyen provokáló választ írtál, akkor reagálok. Kérdésre kérdéssel válaszolok:
Szted. a Java megalkotói nem tudnak programozni? Mert a nyelvben nem létezik a goto utasítás. Ciklusokra van egy kibővített tulajdonsággal rendelkező break, viszont if-es feltételes szerkezetre NINCS. És mégis meg tudnak Javaban is oldani mindent.Sztem. azért ha olyan nyelv is életben tud maradni, amiben nincs goto, akkor érdemes elgondolkodni rajt, hogy tényleg szükség van-e goto-ra.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Építő/felújító topik
- Büszke apukák és anyukák topikja
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Autós kamerák
- Kerékpárosok, bringások ide!
- Íme az Assassin's Creed Shadows első előzetese
- Gitáros topic
- Honor Magic V2 - origami
- Ukrajnai háború
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- Bomba ár! Asus VivoBook X412F - i5-8GEN I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W11 I Garancia!
- Bomba ár! HP ProBook 650 G5 - i7-8GEN I 8GB I 256GB SSD I 15,6" FHD I Cam I W11 I Garancia!
- Bomba ár! Lenovo ThinkPad L380 - i5-8GEN I 8GB I 256SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- Bomba ár! Asus VivoBook S410U - i5-8GEN I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W11 I Garancia!
- Bomba ár! HP ProBook 450 G3 - i7-6G I 8GB I 256GB SSD I HDMI I 15,6" FHD I Cam I W10 I Gar!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs