Next vs }

Planering och tankar kring eventuella framtida projekt.
bjornj
Inlägg: 163
Blev medlem: 7 november 2018, 11:51:47

Next vs }

Inlägg av bjornj »

Bara en undring från en lätt frustrerad Arduinonybörjare.
Vilket är lättast att hantera:
Wend, next i, End if respektive } } }
Desutom tillkommer ett antal ; på osäkra platser
i fall två.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Next vs }

Inlägg av Klas-Kenny »

:humm:

Detta kan nog vara en utav de mest förvirrande frågeställningar jag sett.

Vad tusan menar du egentligen? :)
pfyra
Inlägg: 345
Blev medlem: 8 mars 2015, 14:14:44
Ort: utanför Karlstad

Re: Next vs }

Inlägg av pfyra »

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.
bjornj
Inlägg: 163
Blev medlem: 7 november 2018, 11:51:47

Re: Next vs }

Inlägg av bjornj »

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.
ie
EF Sponsor
Inlägg: 1271
Blev medlem: 23 oktober 2006, 13:12:57
Ort: Tyresö

Re: Next vs }

Inlägg av ie »

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.

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;
		}
	}
bjornj
Inlägg: 163
Blev medlem: 7 november 2018, 11:51:47

Re: Next vs }

Inlägg av bjornj »

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.
Användarvisningsbild
carpelux
Inlägg: 1865
Blev medlem: 13 oktober 2007, 12:33:33
Ort: Varnhem

Re: Next vs }

Inlägg av carpelux »

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/
Palle500
Inlägg: 4484
Blev medlem: 6 juni 2015, 14:53:06

Re: Next vs }

Inlägg av Palle500 »

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 &&
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Next vs }

Inlägg av JimmyAndersson »

Björnj:
”Släktskapet med det hemska Unix är tydlig.”

Hemska Unix?? Hur vågar du... :shock:
Unix är ju bland det trevligaste som finns. I klass med assembler och pepparkakor! :)
bjornj
Inlägg: 163
Blev medlem: 7 november 2018, 11:51:47

Re: Next vs }

Inlägg av bjornj »

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
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Next vs }

Inlägg av Icecap »

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.
Användarvisningsbild
AndLi
Inlägg: 17045
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Next vs }

Inlägg av AndLi »

Palle500 skrev: 9 december 2020, 16:35:46 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 &&
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..
_R_
Inlägg: 47
Blev medlem: 18 oktober 2020, 11:10:47

Re: Next vs }

Inlägg av _R_ »

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.
Användarvisningsbild
bit96
Inlägg: 2492
Blev medlem: 3 september 2007, 10:04:29
Ort: Säffle

Re: Next vs }

Inlägg av bit96 »

bjornj skrev: 9 december 2020, 14:35:05 Man får intrycket att utvecklarna av C har lagt över mycket på programerarna
för att underlätta sitt eget arbete.
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.
bjornj skrev: 9 december 2020, 17:02:40 Vad sägs om det här

} // End if

} // End While

osv.
Enkelt och obyråkratiskt
Mycket bra.
Själv skriver jag typ
} /* endif koll*/
} /* next xpos */
} /* wend pollareg */
då jag programmerar i C och inte C++ :) och jag lägger gärna till variabeln det handlar om.
Palle500
Inlägg: 4484
Blev medlem: 6 juni 2015, 14:53:06

Next vs }

Inlägg av Palle500 »

AndLi skrev:
Palle500 skrev: 9 december 2020, 16:35:46 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 &&
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..
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å.
Men nu frågade ju TS efter ett sätt att få översiktligare kod inte portabel kod.
Skriv svar