Archief - C-Taal : Wat is er mis ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

MorGo7h

Legacy Member
Daedie zei:
Tis maar wat ge gewoon zijt, ik zet mijn { ook altijd op een nieuwe regel en ik vind code waarbij { achter de functie staat minder aangenaam lezen.

Mhhhh, ik vind da vrij fuked up te zien waar lussen in een lus zitten enzo.
Als ge iedere keer na een nieuwe lus indenteert lijkt ziede toch veel beter de structuur? Nu bij ons op school zijn ze enorm streng op stijl. Als ge de stijlregels niet volgt, verliest ge punten op examens, projecten, etc. Eerlijk gezegd hebk er niet echt problemen, want na 2 oefeneningen is da al een gewoonte. En als we pair-programming doen en der eeft daar zo'n leeghoofd voor u gezeten en ge kunt niks van die code lezen, verliest ge enorm veel tijd.

Dus dit kunt gij slecht lezen? :p (is java)
Code:
    public String[] berekenTotalen(double[][] tabel) {
        double[] totalen = new double[3];
        String[] totaal = new String[3];

        for (int i = 1; i < tabel.length; i++) {
            for (int j = 1; j < tabel[0].length; j++) {
                totalen[j-1] += tabel[i][j];
                if (Math.round(totalen[j-1]*100) % 10.0 == 0) {
                    totaal[j-1] = "      " + (Double.toString(Math.round(totalen[j-1] * 100) / 100.0)) + "0 ";
                    totaal[j-1] = totaal[j-1].substring(totaal[j-1].length()-11,totaal[j-1].length());
                }
                else {
                    totaal[j-1] = "      " + (Double.toString(Math.round(totalen[j-1] * 100) / 100.0)) + " ";
                    totaal[j-1] = totaal[j-1].substring(totaal[j-1].length()-11,totaal[j-1].length());
                }
            }
        }

        return totaal;
    }

Daedie

Legacy Member
slecht is veel gezegd, tis gewoon net iets minder comfortabel om op te kijken als dat ik gewoon ben zeg maar.

En iemand die gewoon is om zo te schrijven heeft geen problemen met geneste lussen daarin te lezen.

MorGo7h

Legacy Member
Daedie zei:
slecht is veel gezegd, tis gewoon net iets minder comfortabel om op te kijken als dat ik gewoon ben zeg maar.

En iemand die gewoon is om zo te schrijven heeft geen problemen met geneste lussen daarin te lezen.

Verstaanbaar. Maar kmoet eerlijk zeggen dat ik dus totaal niet zie in TS zijn post waar er lussen starten. Door te indenteren krijgt precies toch veel structuur in uw code dan gwn alles onder elkaar smijten.

Daedie

Legacy Member
MorGo7h zei:
Verstaanbaar. Maar kmoet eerlijk zeggen dat ik dus totaal niet zie in TS zijn post waar er lussen starten. Door te indenteren krijgt precies toch veel structuur in uw code dan gwn alles onder elkaar smijten.

Das een feit, drm heb ik eerst zijn code gecopy-paste in mijn IDE (VS) en zelf geïndenteerd voordat ik em bekeken heb :p.

MorGo7h

Legacy Member
Nocturn zei:
Ik vind het onfair dat je totaal verschillende talen met elkaar vergelijkt qua syntax met elkaar.

De reden waarom ik verkies om haakjes op een andere lijn dan de statement te leggen is omdat in c++ velen het begrip scope niet begrijpen.

Code:
for(Node node = first.Node; Node; Node = node.NextNode)
     ;

De haakjes zeggen niets over een loop maar over de scope. (Je kan zelfs geen haakjes gebruiken voor een loop)
Daarom dat ik liever die haakjes op een andere lijn heb. Ik heb totaal geen idee hoe het in java werkt.

? Hier snap ik u niet ze :p Enja, ik weet scope betekent :p

Kemblin

Legacy Member
mja ik denk dat hij wil zeggen dat ge in c ook zoiets kunt hebben

Code:
{
	int i = 1;
}

bij ons opt unief zet iedereen de haakjes ook op dezelfde lijn. Als ik zo eens online naar wat code zoek heb ik toch de indruk dat dit de meest gebruikte conventie is.

Ik denk trouwens dat het vrij essentieel is om als programmeur het begrip scope te begrijpen, anders zijt ge maar crap tbh :P

MorGo7h

Legacy Member
Kemblin zei:
mja ik denk dat hij wil zeggen dat ge in c ook zoiets kunt hebben

Code:
{
	int i = 1;
}

bij ons opt unief zet iedereen de haakjes ook op dezelfde lijn. Als ik zo eens online naar wat code zoek heb ik toch de indruk dat dit de meest gebruikte conventie is.

Ik denk trouwens dat het vrij essentieel is om als programmeur het begrip scope te begrijpen, anders zijt ge maar crap tbh :P

In java kunt ge ook declareren en initialiseren in 1 keer, zoals gij daar demonstreert.

Kemblin

Legacy Member
MorGo7h zei:
In java kunt ge ook declareren en initialiseren in 1 keer, zoals gij daar demonstreert.

lol duh dat weet ik :p . Maar ik snap uw punt niet. Het ging over de duidelijkheid van scopes te openen op dezelfde lijn waarop bvb een functie declaratie staat, of net eronder.

Laat maar zitten, twas gewoon een vage opmerking van Nocturn.

Daedie

Legacy Member
MorGo7h zei:
In java kunt ge ook declareren en initialiseren in 1 keer, zoals gij daar demonstreert.

Hij wilt met die code aantonen dat ge in C een losse scope kunt nesten binnen een andere scope (if that makes any sence :p), niet dat ge kunt initialiseren en declareren in 1 regel.
dus:
Code:
void functie(void)
{
     {
          int x;

          x = 2;
     }

     //x bestaat hier niet meer
}

Kemblin

Legacy Member
Daedie zei:
Hij wilt met die code aantonen dat ge in C een losse scope kunt nesten binnen een andere scope (if that makes any sence :p), niet dat ge kunt initialiseren en declareren in 1 regel.
dus:
Code:
void functie(void)
{
     {
          int x;

          x = 2;
     }

     //x bestaat hier niet meer
}

gij begrijpt mij :p al zie ik hier nu net dat dat in java ook gaat. Wist ik niet :)

MorGo7h

Legacy Member
Daedie zei:
Hij wilt met die code aantonen dat ge in C een losse scope kunt nesten binnen een andere scope (if that makes any sence :p), niet dat ge kunt initialiseren en declareren in 1 regel.
dus:
Code:
void functie(void)
{
     {
          int x;

          x = 2;
     }

     //x bestaat hier niet meer
}

Ja maar TS gebruikt nergens index buiten de scope, dus die extra lijn kan evt. weggelaten worden.

Kemblin

Legacy Member
MorGo7h: ter verduidelijking mij post was een reactie op dit

Nocturn zei:
De reden waarom ik verkies om haakjes op een andere lijn dan de statement te leggen is omdat in c++ velen het begrip scope niet begrijpen.

Code:
for(Node node = first.Node; Node; Node = node.NextNode)
     ;

De haakjes zeggen niets over een loop maar over de scope. (Je kan zelfs geen haakjes gebruiken voor een loop)
Daarom dat ik liever die haakjes op een andere lijn heb. Ik heb totaal geen idee hoe het in java werkt.

uw post slaat voor mij dus weer op niets :p

:confused:

MorGo7h

Legacy Member
Kemblin zei:
MorGo7h: ter verduidelijking mij post was een reactie op dit



uw post slaat voor mij dus weer op niets :p

:confused:

Nvm :p Ik had het gewoon op het feit dat als em index initialiseert en decaleert in de scope, hij een regel code kan besparen, want de index wordt niet gebruikt buiten de lus.

Soulless

Legacy Member
Maar hoe zit het met hun scope? De pointer variabele zelf wordt vernietigd, maar aangezien het naar een geheugenlocatie verwijst is hun scope toch groter dan de functie waarin ze zich bevinden?

stinkpointers :( :p

Tyfius

Legacy Member
Dat kan zijn ja. Uw pointer kan in dat geval naar niets verwijzen (NULL, 0). Daar moet je dus rekening mee houden. Of, in het geval dat uw pointer variabele wordt vernietigd en uw achterliggend gedeelte niet dan zit je met een memory leak.

Gurdt

Legacy Member
Nocturn zei:
Wat je declareert in een scope is een verwijzing naar data. Op het einde wordt die verwijzing gedelete. Aangezien je de verwijzing maar niet de data gedeclareerd hebt, blijft de data op die geheugen locatie staan tot
-ofwel de data zelf out of scope geraakt
-of in geval dat je het gealloceerd hebt met new, dat je delete aanroept.

In dat opzicht volgen pointers precies dezelfde regels als data (een geheugen adres is ook data, alhoewel het maar een weinig bytes zijn)

Ik kan fout zijn ze, maar wanneer gaat data zelf out of scope geraken? Volgens mij gaat geheugen dat ge aanvraagt met "new" of "malloc" blijven bestaan in uw RAM-geheugen totdat ge "delete" of "free" doet. Of uw RAM cleart :) (opnieuw opstarten ofzo).

Ik weet dat als ik een programma maakte waarin een memory leak zit, dat na een aantal runs mijn RAM-geheugen stillaan vol begint te geraken ;)

Jesus

Legacy Member
Daedie zei:
Hij wilt met die code aantonen dat ge in C een losse scope kunt nesten binnen een andere scope (if that makes any senSe :p), niet dat ge kunt initialiseren en declareren in 1 regel.
dus:
Code:
void functie(void)
{
     {
          int x;

          x = 2;
     }

     //x bestaat hier niet meer
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan