Next vs }
- Klas-Kenny
- Inlägg: 11751
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Next vs }

Detta kan nog vara en utav de mest förvirrande frågeställningar jag sett.
Vad tusan menar du egentligen?

Re: Next vs }
Olika språk har olika tokens för scope. Många har { } medans visual basic (om jag minns rätt) har Wend, next <variabel>, End if osv för att markera slutet på loopar och if-bodyn.
Semikolon på osäkra platser förstår jag inte riktigt däremot..
Smidigheten med { } överväger lätt nackdelen med att man inte vet exakt vad det är som avslutas när det blir några stycken i rad. Editorn brukar kunna hjälpa till att peka ut vilka parenteser som hänger ihop.
Semikolon på osäkra platser förstår jag inte riktigt däremot..
Smidigheten med { } överväger lätt nackdelen med att man inte vet exakt vad det är som avslutas när det blir några stycken i rad. Editorn brukar kunna hjälpa till att peka ut vilka parenteser som hänger ihop.
Re: Next vs }
Det var väl egentligen ingen fråga utan snarare ett sätt att avreagera sig på ett lite skämsamt sätt men
dock med ett stänk av allvar.
Medan tex basic har olika avslutningar på sina satser som end if, next eller wend (end while)
så kör C genomgående med } vilket gör koden både svårläst och svårskriven.
Svårt att se vilken { som hör till vilken }. Man får sitta och räkna dem.
Vad beträffar semikolon så är ju koden nerlusad med dem. Men
inte alltid. Svårt för nybörjaren att se konsekvensen.
Void har jag inte nämnt tidigare men det är ju ytterliggare en egendomlighet
som man undrar vad den skall vara bra för.
Basic tex klarar sig utmärkt utan vare sig void eller semikolon.
Man får intrycket att utvecklarna av C har lagt över mycket på programerarna
för att underlätta sitt eget arbete.
Släktskapet med det hemska Unix är tydlig.
dock med ett stänk av allvar.
Medan tex basic har olika avslutningar på sina satser som end if, next eller wend (end while)
så kör C genomgående med } vilket gör koden både svårläst och svårskriven.
Svårt att se vilken { som hör till vilken }. Man får sitta och räkna dem.
Vad beträffar semikolon så är ju koden nerlusad med dem. Men
inte alltid. Svårt för nybörjaren att se konsekvensen.
Void har jag inte nämnt tidigare men det är ju ytterliggare en egendomlighet
som man undrar vad den skall vara bra för.
Basic tex klarar sig utmärkt utan vare sig void eller semikolon.
Man får intrycket att utvecklarna av C har lagt över mycket på programerarna
för att underlätta sitt eget arbete.
Släktskapet med det hemska Unix är tydlig.
Re: Next vs }
Indenterar man koden på lämpligt sätt så behöver man inte räkna hakar. De som står på samma nivå hör ihop.
Semikolonen indikerar satsslut, så det är ju ganska uppenbart var de ska finnas.
Semikolonen indikerar satsslut, så det är ju ganska uppenbart var de ska finnas.
Kod: Markera allt
if (p->data[1]) // Display coordinates given?
{
uint8_t r = 0x80;
switch (p->data[1])
{
case 2:
r += 0x40;
break;
case 3:
r += 0x14;
break;
case 4:
r += 0x54;
break;
}
r += (p->data[2]) - 1;
hd44780_outbyte(r,0);
}
else
{
switch (p->data[2]) // Command?
{
case 1: // Clear
hd44780_outbyte(0x01,0);
break;
}
}
Re: Next vs }
Ok, jag skall försöka genomföra indenteringen på ett mera konsekvent sätt
så kanske de klarnar.
Hittade just nu förresten ett semikolon efter en IF sats som har
stoppat mig ett bra tag.
så kanske de klarnar.
Hittade just nu förresten ett semikolon efter en IF sats som har
stoppat mig ett bra tag.
Re: Next vs }
Om du skaffar en vettig editor så får du hjälp med paranteser och indenteringar samt en hel del annat.
Jag rekommenderar Visual Studio Code, gratis och finns för allatre stora plattformarna.
https://code.visualstudio.com/
Jag rekommenderar Visual Studio Code, gratis och finns för allatre stora plattformarna.
https://code.visualstudio.com/
Re: Next vs }
Du kan ju predefinera i en H fil så får du en bättre överblick
#define IIF {
#define ENDIF }
#define CASE {
#define ENDCASE }
#define WHILE {
#define ENDWHILE }
#define FOR {
#define ENDFOR }
#define EQ ==
#define OR ||
#define NOT !
#define AND &&
#define IIF {
#define ENDIF }
#define CASE {
#define ENDCASE }
#define WHILE {
#define ENDWHILE }
#define FOR {
#define ENDFOR }
#define EQ ==
#define OR ||
#define NOT !
#define AND &&
- JimmyAndersson
- Inlägg: 26403
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Re: Next vs }
Björnj:
”Släktskapet med det hemska Unix är tydlig.”
Hemska Unix?? Hur vågar du...
Unix är ju bland det trevligaste som finns. I klass med assembler och pepparkakor!
”Släktskapet med det hemska Unix är tydlig.”
Hemska Unix?? Hur vågar du...

Unix är ju bland det trevligaste som finns. I klass med assembler och pepparkakor!

Re: Next vs }
Pepparkakor är ju gott. Speciellt så här års.
Vad sägs om det här
} // End if
} // End While
osv.
Enkelt och obyråkratiskt
Vad sägs om det här
} // End if
} // End While
osv.
Enkelt och obyråkratiskt
Re: Next vs }
Om man ska göra program som har någon komplexitet alls är BASIC nog det siste språk att ta till.
Indenteringen av { och } är A&O i C(++).
Det finns olika sätt att hålla formateringen på, jag användar Whitesmith vilket är relativt ovanligt. För mig gör det dock överblicket bättre.
Indenteringen av { och } är A&O i C(++).
Det finns olika sätt att hålla formateringen på, jag användar Whitesmith vilket är relativt ovanligt. För mig gör det dock överblicket bättre.
Re: Next vs }
Det där är ju ett extremt effektivt sätt att förvirra vilken rutinerad programmerare som helst när de ska försöka hjälpa en nybörjare....
Och sannolikt även förvirra de flesta editorer också som försöker hjälpa en..
Re: Next vs }
Om du kör Arduino IDE så trycker du bara ctrl-T så fixar den indenteringen i hela programmet (förutsatt att inga syntaxfel finns).
Jag är också färsk på Arduino, så jag förstår vad du menar med VOID. Men fick nyligen en aha-upplevelse när jag insåg att en funktion inte bara är en "subrutin", de kan anta värden (tex bool, int etc) och värdet passas då tillbaka med "return". Mycket användbart.
Jag är också färsk på Arduino, så jag förstår vad du menar med VOID. Men fick nyligen en aha-upplevelse när jag insåg att en funktion inte bara är en "subrutin", de kan anta värden (tex bool, int etc) och värdet passas då tillbaka med "return". Mycket användbart.
Re: Next vs }
Ja? Allt arbete ligger på programmerarna. Det är de som skall lösa uppgiften med hjälp av programmering, inte tillverkaren av programmeringsspråket.

C ligger väldigt nära assembler. Om man har programmerat i något assemblerspråk tidigare så förstår man direkt hur hur C fungerar.
Loopar, villkor, shift/rull, pekare med basregister, bitmaskning m.m., allt har sina exakta motsvarigheter i assembler.
Vilket gör C så kraftfullt, men samtidigt är risken att "göra fel" större då du måste veta vad du gör, kompilatorn/språket erbjuder få hängslen/livrem/begränsningar.
Mycket bra.
Själv skriver jag typ
} /* endif koll*/
} /* next xpos */
} /* wend pollareg */
då jag programmerar i C och inte C++

Next vs }
Den lösningen är från 1990 när jag gick från Pascal till C och då var det utmärkt för mig. Och då körde jag med en texteditor som inte stödde olika programspråk. Sen vet jag inte om man måste skriva kod som kan läsas av vemsom? Det är ju inte det som är problemet idag utan idag handlar det mest om att få till de olika miljöerna och syntaxfiler som skapar projekten. Detta är klart svårare för en nybörjare att förstå.AndLi skrev:Det där är ju ett extremt effektivt sätt att förvirra vilken rutinerad programmerare som helst när de ska försöka hjälpa en nybörjare....
Och sannolikt även förvirra de flesta editorer också som försöker hjälpa en..
Men nu frågade ju TS efter ett sätt att få översiktligare kod inte portabel kod.