Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
bizarrerie autour du while
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
suite à une remarque que j'ai emise sur le forum mikroC
et une reponse ne corroborant pas ma remarque..
j'ai fait un test
"Stupeur et tremblement" comme dira N.Nothomb
j'ai faux !
quelqu'un pourrait m'expliquer pourquoi ces 2 versions
GSMcmd1 et GSMcmd2 se comportent d'une façon identique ?
car pour moi, il manque dans la version GSMcmd1 , des parentheses pour encadrer la boucle while!
=> tomberait en marche que pour un string de 1 seul char
mais problemo si plusieurs char dans la chaine
et non ?
programme de test ci joint projet zippé
resultats identiques ?
suite à une remarque que j'ai emise sur le forum mikroC
et une reponse ne corroborant pas ma remarque..
j'ai fait un test
"Stupeur et tremblement" comme dira N.Nothomb
j'ai faux !
quelqu'un pourrait m'expliquer pourquoi ces 2 versions
GSMcmd1 et GSMcmd2 se comportent d'une façon identique ?
car pour moi, il manque dans la version GSMcmd1 , des parentheses pour encadrer la boucle while!
=> tomberait en marche que pour un string de 1 seul char
mais problemo si plusieurs char dans la chaine
et non ?
Code : Tout sélectionner
void GSMcmd1(char *ch)
{
while(*ch)
if (UART1_Tx_Idle() == 1)
UART1_Write(*ch++);
UART1_Write(0x0D); // Send CR - command terminate character
}
void GSMcmd2(char *ch1)
{
while(*ch1)
{
if (UART1_Tx_Idle() == 1)
UART1_Write(*ch1++);
}
UART1_Write(0x0D); // Send CR - command terminate character
}
programme de test ci joint projet zippé
resultats identiques ?
Test #1 GSMcmd1 cde avec 1 seul char
AT+CMGS="+381658025017"<CR>
Test #1 GSMcmd1 cde avec plusieurs char
txt
AT+CMGS="+381632198765"<CR>
GSMcmd1
AT+CMGS="+381632198765"<CR><CR>
Test GSMcmd2
txt
AT+CMGS="+381632198765"<CR>
GSMcmd2
AT+CMGS="+381632198765"<CR><CR>
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
bizarrerie autour du while
Bonsoir à tous
Ce n'est pas bizarre, Paul, les deux codes se comportent de la même manière.
En C derrière if, do, for, while on met soit une instruction, soit un bloc. Une instruction se termine sur un point-virgule, un bloc sur une accolade fermante. Le bloc renferme 0 ou 1 ou plusieurs instructions et peut posséder des variables locales.
Dans le premier cas, le if se termine par un point-virgule, le while par le même point-virgule.
Dans le second cas, le if se termine par un point-virgule, le while par une accolade fermante.
Mais comme l'accolade fermante est juste après le point-virgule, le résultat est le même.
De l'importance de l'indentation pour afficher clairement tout cela.
Même si ce n'est pas recommandé, j'aime bien faire du compact, cela évite l'indentation.
J'aurais écrit ça en moins élégant, mais sans test superflu sur le (*ch)
PS: Aujourd'hui j'ai été preum's à Pedantix, et pas peu fier car il y a du monde, merci google :)
https://cemantix.herokuapp.com/pedantix
Ce n'est pas bizarre, Paul, les deux codes se comportent de la même manière.
En C derrière if, do, for, while on met soit une instruction, soit un bloc. Une instruction se termine sur un point-virgule, un bloc sur une accolade fermante. Le bloc renferme 0 ou 1 ou plusieurs instructions et peut posséder des variables locales.
Dans le premier cas, le if se termine par un point-virgule, le while par le même point-virgule.
Dans le second cas, le if se termine par un point-virgule, le while par une accolade fermante.
Mais comme l'accolade fermante est juste après le point-virgule, le résultat est le même.
De l'importance de l'indentation pour afficher clairement tout cela.
Même si ce n'est pas recommandé, j'aime bien faire du compact, cela évite l'indentation.
Code : Tout sélectionner
void GSMcmd1(char *ch)
{
while (*ch) if (UART1_Tx_Idle()) UART1_Write(*ch++);
UART1_Write(0x0D); // Send CR - command terminate character
}
J'aurais écrit ça en moins élégant, mais sans test superflu sur le (*ch)
Code : Tout sélectionner
void GSMcmd1(char *ch)
{
while (*ch) {
while (!UART1_Tx_Idle()) { }
UART1_Write(*ch++);
}
UART1_Write(0x0D); // Send CR - command terminate character
}
PS: Aujourd'hui j'ai été preum's à Pedantix, et pas peu fier car il y a du monde, merci google :)
https://cemantix.herokuapp.com/pedantix
bizarrerie autour du while
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Satinas,
Merçi pour ta réponse.
En effet, je préfere , et de loin, l'usage d'accolades et l'indentation
qui léve tout doute , en présentant une clarté de lecture..
d'autant que beaucoup d'interface IDE , montrent justement l'alignement de ces identations ou surlignage en couleur des accolades
comme MikroC ou Visual Studio code par exemple.
à quand la programmation style sms !
interessant ce pedantix ... mais pas encore tout compris les regles ..
Merçi pour ta réponse.
En effet, je préfere , et de loin, l'usage d'accolades et l'indentation
qui léve tout doute , en présentant une clarté de lecture..
d'autant que beaucoup d'interface IDE , montrent justement l'alignement de ces identations ou surlignage en couleur des accolades
comme MikroC ou Visual Studio code par exemple.
à quand la programmation style sms !
interessant ce pedantix ... mais pas encore tout compris les regles ..
bizarrerie autour du while
Bonjour
Un cas particuler avec la boucle do while :
int b=1, c=0;
if (b) do c++; while (c<5);
Le if va jusqu'au 2ème point-virgule
Pour Pedantix, tu dois deviner le titre d'une page wikipedia.
Il faut commencer à essayer articles, conjonctions, prépositions, ensuite essayer de trouver le thème.
On peut tricher en recherchant avec google un morceau de phrase déjà trouvé, c'est compréhensible quand on tourne en rond :)
Il y en a qui trouvent en moins d'1 minute, il doit y avoir des moulinettes software qui tournent.
C'est pas hors sujet, car un pic programmé en C fait dring dring à 11h59, heure du début du jeu :)
Un cas particuler avec la boucle do while :
int b=1, c=0;
if (b) do c++; while (c<5);
Le if va jusqu'au 2ème point-virgule
Pour Pedantix, tu dois deviner le titre d'une page wikipedia.
Il faut commencer à essayer articles, conjonctions, prépositions, ensuite essayer de trouver le thème.
On peut tricher en recherchant avec google un morceau de phrase déjà trouvé, c'est compréhensible quand on tourne en rond :)
Il y en a qui trouvent en moins d'1 minute, il doit y avoir des moulinettes software qui tournent.
C'est pas hors sujet, car un pic programmé en C fait dring dring à 11h59, heure du début du jeu :)
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 48 invités