La primera es, por que en la parte del código donde se evalúa si la bandera de ejecución de comando esta en uno, es decir:
1. do {
2. if(flagcommand) procesa_comando(); // Si hay comando pendiente de procesar ... lo procesa.
3. printf("..\r"); // printf CR
4. } while (TRUE);
Por que no se hace agregando {} en el if :
1. do {
2. if(flagcommand) {
3. procesa_comando(); // Si hay comando pendiente de procesar ... lo procesa.
4. printf("..\r");} // printf CR
5. } while (TRUE);
Yo lo probé y la diferencia es que no se queda mostrando los dos puntos en un loop, si no que espera a que uno le de enter y aparecen lo dos puntos y se queda esperando algo.
Bueno fijate la diferencia.
En el primer caso, no pusiste corchetes a la condicion IF.
Muchos lenguajes soportan que se ignoren los corchetes en ciertas situaciones.
Si no colocas los corchetes, el programa va a tomar el primer algoritmo de esta manera:
1. do {
2. if(flagcommand){ procesa_comando();} // Si hay comando pendiente de procesar ... lo procesa.
3. printf("..\r"); // printf CR
4. } while (TRUE);
Lo que es muy distinto al segundo algoritmo:
1. do {
2. if(flagcommand) {
3. procesa_comando(); // Si hay comando pendiente de procesar ... lo procesa.
4. printf("..\r");} // printf CR
5. } while (TRUE);
Entonces, miremos logicamente como funciona cada uno:
El primer algoritmo:
REPETIR:
SI flagcommand=Verdadero ENTONCES procesa_comando()
printf ("..\r")
MIENTRAS(VERDADERO)
El segundo algoritmo:
REPETIR:
SI flagcommand=Verdadero ENTONCES procesa_comando() Y printf ("..\r")
MIENTRAS(VERDADERO)
Entonces, el primer algoritmo ejecutara la instruccion printf("..\r"); independientemente de si se cumple o no la condicion del IF.
El segundo algoritmo sólo ejecutara la instruccion printf("..\r"); si la condicion propuesta en el IF se cumple.
La tercera es, ¿que se entiende por argumento? en este caso son los datos como tal o el numero de datos, o ninguna de las anteriores?
Argumento podria explicarse, para lo que creo que estas buscando, como toda expresion que puede ser pasada a una funcion(o devuelta por la mísma) por
valor o por
referencia.
Ejemplo de pasaje por valor:
void mi_funcion(int numero)
{
////Codigo aqui
}
Si llamamos ala funcion de esta manera:
mi_funcion(12);
El valor que adoptara la variable numero es 12.
En cambio si hacemos:
int cantidad=15;
void mi_funcion(int numero)
{
////Codigo aqui
}
Si llamamos ala funcion de esta manera:
mi_funcion(cantidad);
El valor que adoptara la variable numero es 15.
En este caso, el valor fue pasado por referencia, es decir que se paso una variable a la funcion, y la funcion tomo el valor de dicha variable para utilizarlo en la funcion.
Espero haya quedado un poco claro.
Saludos.