• Sábado 4 de Mayo de 2024, 17:11

Autor Tema:  Ayuda Urgente  (Leído 2719 veces)

powers

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Ayuda Urgente
« en: Viernes 19 de Marzo de 2004, 02:13 »
0
Hola
el siguiente programa es para asignar una de cinco PCs a un usuario q ingresa su matricula (EJ.:  20920)

he tratado de corregir un error q creo q esta el parte de LOGIN
si alguien puede ayudarme corrigiendo el error si es posible q me lo haga saber . se lo agradeceria bastante

#include<stdio.h>
#include<conio.h>
void main (void)
{
int mat,p[4],cont;
char q;

ini:
printf("\n\nQué desea hacer? log(i)n, log(o)ff, (e)stado: ");
scanf("%s",&q);
if(q=='i')goto login;
if(q=='o')goto logoff;
if(q=='e')goto estado;

login:                      //esta parte asigna una pc a la matricula
printf("Matricula: ");
scanf("%d",&mat);
for(cont=0;cont<=5;cont++)
if(p[0]==0)p[cont]=mat;
goto ini;

                             //esta parte saca una matricula del sistema
logoff:
printf("Matricula: ");
scanf("%d",&mat);
for(cont=0;cont<=5;cont++)
{
if(mat==p[cont])p[cont]=0;
}
goto ini;

                              //esta parte muestra las PCs vacias y las ocupadas
estado:
for(cont=0;cont<=5;cont++)
{if(p[cont]==0)printf("\nPc %d desocupada",cont);else printf("\nPc %d ocupada por %d",cont,p[cont]);}
goto ini;


}

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Ayuda Urgente
« Respuesta #1 en: Viernes 19 de Marzo de 2004, 20:24 »
0
PERO ES QUE ACASO ESTAS USANDO GOTO EN C? QUE TE PENSAS QUE ES VB????....
De raiz te diria que reewscribas el codigo y saques esos HORRIBLES goto y todo va a ser mas facil de resolver.

Goto malo! :(

slds.
QliX=D! - From the top of Tsunami

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda Urgente
« Respuesta #2 en: Sábado 20 de Marzo de 2004, 06:01 »
0
me uno.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Ayuda Urgente
« Respuesta #3 en: Sábado 20 de Marzo de 2004, 13:35 »
0
goto malo según para qué.

Desde luego en este caso su uso no está justificado.

Un saludo...
desorden

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda Urgente
« Respuesta #4 en: Sábado 20 de Marzo de 2004, 15:37 »
0
el goto es una instruccion muy utilizada en los tiempos de la programacion no estructurada ('spagetti'), esta instruccion se caracteriza por producir un codigo desordenado y dificil de entender, su existencia actualmente es mas por compatibilkidad con las viejas aplicaciones , ya que su uso hoy en dia esta abolido.
todo lo que se puede hacer con un goto se puede hacer con un while o con un for.

revisa este link de una discucion en el foro el año pasado.
sobre goto y una ayudita
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Ayuda Urgente
« Respuesta #5 en: Sábado 20 de Marzo de 2004, 19:21 »
0
Una cosa es la teoría y otra muy distinta es la práctica en el mundo real.

La sentencia goto se usa y mucho. Podéis mirar cualquier código fuente de aplicaciones reales.

En Java, que es un lenguaje moderno, se pueden etiquetar los bucles para poder usar la instrucción break etiqueta para saltar entre ellos.

Un saludo...
desorden

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda Urgente
« Respuesta #6 en: Sábado 20 de Marzo de 2004, 21:57 »
0
:blink: no es una buena practica,
un desarrollador serio no la usa, no la uso ni la he usado y la verdad lo hago porque es el conocimiento que me han impartido durante toda mi carrera en la universidad.
cite el mensaje de gmantil porque él es un profesor de mi universidad, expretoen sistemas operativos y programacion.

En todo caso cada cual es libre de usar lo que necesita, pero el goto es una instruccion que degrada la calidad del codigo, no hay nada que se haga con un goto que no se pueda hacer de una manera mas clara con un while o un for los cuales conservan las practicas de codigo estructurado.


 :smartass: El solo hecho de utilizar la instruccion dificulta el seguimiento, la depuracion y el mantenimiento del codigo fuente. :kicking:


Pero si les funciona y creen que les sirve usenlo.  :devil:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Ayuda Urgente
« Respuesta #7 en: Domingo 21 de Marzo de 2004, 14:15 »
0
Si a los desarrolladores del kernel de linux no se les puede considerar serios...

grep -R  goto /usr/src/linux/

Más de 19000 goto -kernel 2.4.25-

Aunque te tengo que dar la razón en que el seguimiento del código en este caso es todo un reto ;)

Un saludo...

Pregunta: ¿Cómo se puede salir de dos o más bucles a la vez?
desorden

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Ayuda Urgente
« Respuesta #8 en: Domingo 21 de Marzo de 2004, 16:38 »
0
Cita de: "desorden"
Si a los desarrolladores del kernel de linux no se les puede considerar serios...

grep -R  goto /usr/src/linux/

Más de 19000 goto -kernel 2.4.25-

Aunque te tengo que dar la razón en que el seguimiento del código en este caso es todo un reto ;)


En ese caso tenes razon, pero tambien deberias tener en cuenta que es el kernel. Y generalmente se mezcla C y ASM o se usa mucho codigo que trabaja a muy bajo nivel.

Segun mucho programadores goto solo se debe usar en casos donde no tenes otra opcion sino se debe omitir.

Un Saludo

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda Urgente
« Respuesta #9 en: Domingo 21 de Marzo de 2004, 16:58 »
0
En efecto las sentencias como goto y el uso de banderas es caracteristico de los lenguajes de primera y segunda generacion, como en el caso de assembler y cobol que no hay otra manera de hacer un ciclo sino a travez de este metodo.

Por otro lado pues nunca he sido amigo de linux (aunque tenga que usarlo) porque a mi modo de verlo esta muy desordenado, aunque tambien creo que esto se optimizara en un futuro...  :whistling: eso espero. :hola:
Linux no me ha gustado mucho, en comparacion muchas versiones de UNIX en este aspecto son excelentes.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

shephiroth

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Re: Ayuda Urgente
« Respuesta #10 en: Domingo 21 de Marzo de 2004, 23:14 »
0
Buenas. Apoyo el no uso del GOTO, la verdad que los tiempos de usar esta sentencia han desaparecido. Ya han dado multitud de razones, asi que lo dejo como esta  :P

Respecto a como salir de dos o mas bucles a la vez.....en mi opinion si esto sucede es una mala planificación de los mismos, y hay que revisar el código, pero me ha ocurrido mas de una vez y para poder continuar y más tarde revisarlo utilizo esta forma:

bool pasalir=true;
for(x=0;x<10 && pasalir;x++)
{
for(y=0;y<10 && pasalir;y++)
{
...
if ("quieressalir") pasalir=false
}
}

pero ya te digo, son métodos que uso hasta q tengo tiempo de depurar el código

The Black Boy

  • Miembro de PLATA
  • *****
  • Mensajes: 1043
  • Nacionalidad: co
    • Ver Perfil
    • http://www.mslatam.com/latam/technet/mva2/Microsite.aspx?alias=JairoDiaz
Re: Ayuda Urgente
« Respuesta #11 en: Miércoles 24 de Marzo de 2004, 19:55 »
0
todo lo que han dicho sobre el goto tiene sus pro's pero mas contras  de hecho es horrible utilizarlo y mas aun  incompresible.. pero sobre todo no se debe usar (bajo mi criterio) es por una simple y sencilla razon las funciones que se crearon despues del goto son mas optimas y eficientes para programar

pero como dice juank si lo quieren usar usenlo..

y tu powers  si lo deseas seguir haciendo con goto pues ni idea de como ayudarte

___Saludos___ :hola:
El inteligente no es aquel que lo sabe todo
sino aquel que   sabe utilizar lo poco que sabe.


Espacio Personal

si necesitas algo de programacion click aqui, si no esta aqui no existe

Programacion]

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Ayuda Urgente
« Respuesta #12 en: Jueves 25 de Marzo de 2004, 03:21 »
0
Deberías eliminar esos goto's como todos dicen y mejor utilizar funciones que te devuelvan un valor boolean, así puedes saber si el código se ejecutó bien o no.....

 :devil: