3 van 6

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 07:13
door qrnlk
Iets subtieler advies:

Short, concise and readable code - invert your logic and stop nesting already! (lees de hele blog, erg goed)

Leer je zelf aan om

Code: Selecteer alles

if (1 == a) ....
te gebruiken. Mocht je ooit per ongeluk een = gebruiken in plaats van een == dan zal de compiler dit direct melden.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 12:18
door jan_alleman
Jullie worden bedankt :D

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 13:10
door jan_alleman
Als ik het volgende wil builden, dan staat er " cannot find variable system ... line 10", ik heb duidelijk alles goed ged.:s

import java.util.*;

public class Wissel {

public static void main (String[] args)

{



int a , b, B, c, d, e, f, g, h ;



Scanner toetsenbord = new Scanner (system.in);



System.out.println ("dag");

System.out.println ("Geef hoeveel je moet betalen (tussen 0 en 100 euro), ik zal dan jouw wisselgeldberekenen( als je met 100 euro betaalt), waarbij je zo weinig mogelijk geldeenheden terugkrijgt");

System.out.println (", ik zal dan jouw wisselgeld berekenen, waarbij je zo weinig mogelijk geldeenheden terugkrijgt");



a = toetsenbord.nextInt();

b = 100 - a ;

b = B ;

c = b / 50 ;

b = b % 50 ;

d = b / 20 ;

b = b % 20 ;

e = b / 10 ;

b = b % 10 ;

f = b / 5 ;

b = b % 5 ;

g = b ;



System.out.println ("Je krijgt het volgende bedrag terug" + B);

System.out.println ("Dus:") ;

System.out.println ( c + "briefje(s) van vijftig");

System.out.println ( d + "briefje(s) van twingitg");

System.out.println ( e + "briefje(s) van tien");

System.out.println ( f + "briefje(s) van vijf");

System.out.println ( g + "stukje(s)") ;





}



}

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:04
door qrnlk
jan_alleman schreef:Als ik het volgende wil builden, dan staat er " cannot find variable system ... line 10", ik heb duidelijk alles goed ged.:s

...
Op regel 10 staat*

Scanner toetsenbord = new Scanner (system.in);

Ik vermoed dat dit System moet zijn?

* de code tag zou eigenlijk regelnummers moeten weergeven
Verborgen inhoud
en kleurtjes wellicht? ... dat kan in javascript tegenwoordig... :D
(Maar dan moet men natuurlijk wel de code tag gebruiken...)

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:08
door jan_alleman
Ik heb het al, nl system moet met hoofdl.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:17
door qrnlk

Code: Selecteer alles

a = toetsenbord.nextInt();

b = 100 - a;

b = B;

c = b / 50;

b = b % 50;

d = b / 20;

b = b % 20;

e = b / 10;

b = b % 10;

f = b / 5;

b = b % 5;

g = b;

System.out.println ("Je krijgt het volgende bedrag terug" + B);
B ??? Er wordt niets toegekend aan B.

ik denk dat je betere namen moet kiezen voor je variabelen... namen die de betekenis van de variabelen duidelijk maakt: prijs, wisselgeld, aantal_tientjes, aantal_twintigjes, etc...

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:28
door qrnlk
Bovendien: Ik zou het printen doen zodra ik het getal had berekend en niet wachten tot het eind, waarbij ik geen 0 van iets zou uitprinten... (tenzij die expliciet geeist werd) maar dan de print zou overslaan.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:30
door jan_alleman
Ja ik moest ook nog iets met die "B" doen, en de naamkeuze kon ook beter 8-) , bedankt.

Je weet er wel wat van moet ik zeggen, doe je informtica ofzo ? :D

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:35
door qrnlk
Je weet er wel wat van moet ik zeggen, doe je informtica ofzo ? :D
Ik ben werkzaam als systeem ontwerper/ontwikkelaar (als ondernemer) en programmeer zelf ook regelmatig (voor werk en hobby).

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:39
door jan_alleman
Nice

Maar een domme vraag misschien, ik had juist schitterende programma's gemaakt, maar ik weet niet waar ik ze vind om te openen ?

nog iets wnr moet ge bij een naam .java bijzetten en wnr niet ?

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:46
door Cycloon
qrnlk schreef:

Code: Selecteer alles

a = toetsenbord.nextInt();

b = 100 - a;

b = B;

c = b / 50;

b = b % 50;

d = b / 20;

b = b % 20;

e = b / 10;

b = b % 10;

f = b / 5;

b = b % 5;

g = b;

System.out.println ("Je krijgt het volgende bedrag terug" + B);
B ??? Er wordt niets toegekend aan B.

ik denk dat je betere namen moet kiezen voor je variabelen... namen die de betekenis van de variabelen duidelijk maakt: prijs, wisselgeld, aantal_tientjes, aantal_twintigjes, etc...

Code: Selecteer alles

b = 100 - a;

b = B;
Volgens mij bedoelt die:

Code: Selecteer alles

b = 100 - a;

B=b;
En dan klopt het eigelijk wel.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 14:56
door qrnlk
Dat had ik ook door, maar het is zo triviaal dat het volgens mij niet genoemd hoefde worden. Als mensen echter daadwerkelijk vast komen te zitten wegens dit soort vergissingen dan komt dat meestal omdat ze (1) hun variabelen namen geven die niets betekenen en (2) te veel variabelen hebben zonder dat dit nodig is. Mijn twee adviezen waren bedoeld om deze achterliggende redenen aan te pakken.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 16:56
door qrnlk
Gebruiken jullie ook een revision control system?

Ik gebruikte tot voor kort Darcs maar op dit moment ben ik overgestapt op Mecurial.

Re: Beginselen van programmeren

Geplaatst: zo 07 okt 2007, 19:28
door Cycloon
Dat had ik ook door, maar het is zo triviaal dat het volgens mij niet genoemd hoefde worden. Als mensen echter daadwerkelijk vast komen te zitten wegens dit soort vergissingen dan komt dat meestal omdat ze (1) hun variabelen namen geven die niets betekenen en (2) te veel variabelen hebben zonder dat dit nodig is. Mijn twee adviezen waren bedoeld om deze achterliggende redenen aan te pakken.
Ik had wel zo'n vermoeden maar ik dacht eerder dat je er had overgelezen omdat er zo immens veel vreemde variabelen gebruikt zijn (zoals je zelf ook al aangaf :D ).

Anyway, volgens mij had de persoon die dit gepost had dit niet door, bij deze dus wel.

Re: Beginselen van programmeren

Geplaatst: zo 28 okt 2007, 23:08
door Schwartz
voor variabelen heb ik een mooi systeem:

qu_programmanaam_routinenaam_item_###

voorbeeld:

qu_ORION_STACK_DEPTH

programma: orion

routine/onderdeel: STACK

item is depth:

Aan de naam zie je waar het over gaat en wat het doet: diepte van de stack bijhouden.

Die qu_ staat ervoor om unieke namen te hebben met 100% zekerheid tegenover duizenden andere namen die we hebben in de software.

voorbeeld:

PROCEDURE QU_ORION_STACK_RESET;

reset van de stack dus.

Voorbeeld:

PROCEDURE qu_SCORPIUS_CHICAGO_KILL_GROUP

programma: scorpius

onderdeel chicago (geheugensysteem voor opslag van data)

(alle geheugens heten naar een stad in amerika)

KILL: verwijderen

GROUP groep gerelateerd

Ook het _ teken is van belang want

quSCORPIUSCHICAGOKILLGROUP is niet direkt begrijpbaar.

Ook gevaarlijk want qu_it_a is dan quita en is ian gelijk aan qu_ita wat iets anders het kunnen zijn.

De compiler geeft geen foutmelding als men quita:=10 doet en quita:=11

Bij qu_it_a:=10 en qu_ita:=11 hebben we wel goede uitvoering.

Het nemen van it en ita is niet zo handig.

Voor lokale variabelen neem ik 1 letter of 2 letter die erna altijd dan met een _ beginnen.

Bij meer dan 2 teken met _ liefst local erbij schrijven.

Dus

X_local_1:=100;

Ook XY_1 kan.

Als men een naam voor een lokale gaat nemen die is als qu_programmanaam_etc dan raakt men in de war als men een niet lokale per ongeluk zal omvormen door toevallig dezelfde naam.

Voor tellers geen I of J gebruiken want a[1] lijkt te veel op a of a[j].

beter is X of Y, die vallen beter op.

a[X]:=1; en a[1]:=1 in dezelfde regel is meteen een AHA en ziet men de 1 staan die fout is.

Voor coordinatie gebruiken we dan X1,y1 en v1,w1.

Soms is het moelijk om een goede naam te vinden voor een routine die doet:

het verwerken van een aanklik op dit scherm waarbij er na een tijd een geluid moet klinken.

Ik ga dan uit van MAKESOUND, SCREEN, CLICK, CONTROL en maak daarvan iets leuks:

Bijvoorbeeld: COSCREMASO als ik de naam niet al te lang wilt hebben.

Voor namen van een groep routinen kan men zaken toepassen als :

plaatsnamen, stripfiguren, rivieren, namen van beesten, automerken, meisjesnamen, jongensnamen, plantennamen etc.

bijvoorbeeld:

qu_SCORPIUS_SUSKE.

================================

Het toepassen van de programmanaam is belangrijk als men gaat kopieren.

Men kan dan zien waarvan men iets heeft gekopieerd en zo bij fouten zien wat de bron was.

Hierin speelt de routinenaam ook een rol.

De bron van de variabele, die in de routine of module wordt aangemaakt is dan direkt te zien.

Ik gebruik voor een compilerprogramma zo'n rond de 242 files en een variabele die scorpius_vifi heet zal ook in vifi aangemaakt worden en niet buiten de deur.

Soms staat er op 1 file 1 variabele gedeclareert. Geen probleem...

Ik heb gelukkig een compilertje voor delphi die alle files in een folder leest zonder deze eerst te defineren.

In mijn compiler heb ik een commando om te controleren of een nieuwe naam uniek is tegenover de andere.

Zo kan ik geen dezelfde naamgeving per ongeluk toepassen.