Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
jan_alleman
Artikelen: 0
Berichten: 394
Lid geworden op: wo 03 okt 2007, 01:06

Re: Beginselen van programmeren

Jullie worden bedankt :D
jan_alleman
Artikelen: 0
Berichten: 394
Lid geworden op: wo 03 okt 2007, 01:06

Re: Beginselen van programmeren

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)") ;





}



}
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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...)
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
jan_alleman
Artikelen: 0
Berichten: 394
Lid geworden op: wo 03 okt 2007, 01:06

Re: Beginselen van programmeren

Ik heb het al, nl system moet met hoofdl.
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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...
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
jan_alleman
Artikelen: 0
Berichten: 394
Lid geworden op: wo 03 okt 2007, 01:06

Re: Beginselen van programmeren

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
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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).
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
jan_alleman
Artikelen: 0
Berichten: 394
Lid geworden op: wo 03 okt 2007, 01:06

Re: Beginselen van programmeren

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 ?
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Beginselen van programmeren

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.
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

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.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
Gebruikersavatar
qrnlk
Lorentziaan
Artikelen: 0
Berichten: 5.079
Lid geworden op: vr 14 jul 2006, 14:35

Re: Beginselen van programmeren

Gebruiken jullie ook een revision control system?

Ik gebruikte tot voor kort Darcs maar op dit moment ben ik overgestapt op Mecurial.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Beginselen van programmeren

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.
Gebruikersavatar
Schwartz
Artikelen: 0
Berichten: 691
Lid geworden op: di 14 mar 2006, 18:14

Re: Beginselen van programmeren

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.
Een computertaal is voor mensen, niet voor de computer.

Terug naar “Informatica en programmeren”