Una explicacion es que sirven para generacion automatica de codigo, programas que te generan codigo c y te lo llenan de Gotos. Pero la idea es que sea flexible el lenguaje, lo que haga el tipo que sea problema de el.Ahi algo que me parece que no se puede negar, si las funciones siguen estando implementadas en los compiladores que cumplen ciertas normas ANSI a esta altura del partido, por algo debe ser. Si generaran codigo erroneo seguramente hubieran pasado a estar 'deprecated' (no se como traducir eso) hace rato.
Pero es una complicacion que a mi me suena innecesaria. Compara:
Marcos: Podes evitar el break ese con una variable sin modificar la estructura del programaint tmp;
tmp = 0;
while (tmp == 0){
....
funcion (param)
if condicion
codigo A...
return A
else
codigo B....
return B
endif
Me cuesta mucho entender como es mejor la segunde version, con una variable de mas, es mas rebuscada, no mas simple, y ni me parece mas entendible. Sera cuestion de gustos nomas. Lo entiendo para funciones muy largas, que uno no puede abarcar con la mirada asi nomas, pero no hay que escribir funciones muy largas y variadas, se divide en funciones mas chicas antes que nada, eso si me parece importante.
funcion (param)
var rta
if condicion
codigo A...
rta = A
else
codigo B....
rta = B
endif
return rta
Me cuesta mucho entender como es mejor la segunde version, con una variable de mas, es mas rebuscada, no mas simple, y ni me parece mas entendible. Sera cuestion de gustos nomas. Lo entiendo para funciones muy largas, que uno no puede abarcar con la mirada asi nomas, pero no hay que escribir funciones muy largas y variadas, se divide en funciones mas chicas antes que nada, eso si me parece importante.
Saludos
MARCOS
Ponele "Code", la que tiene el numeral arriba.Me gustaría hacer esa ventanita para poner el código adentro, pero todavía no manejo bien la paleta de herramientas del foro.
Pascal / delphi solo lo use enla facultad. Para hacer un trabajo en un lenguaje de alto nivel (que todabia estoy manteniendo), tenia que elegir el lenguaje, y fui directo al Delphi porque no queria saber nada con Visual Basic, pero las pruebas que hice me decepciono tanto, no que se quise hacer, la cosa es que termine usando Visual Basic 6, que lo detesto!!! >:(
no estoy muy al día con el lenguaje que usaste Marcos, así que hice mi versión en Delphi, como programaste en Pascal no vas a tener problemas).
= Valor then Result := I //Si es igual asigna el valor de devoluciónSi entra en ese IF, el resto de la funcion no importa. Cuanto mas claro seria el codigo si abandonaras ahi mismo la ejecucion, en vez de tener un else que te tira la mayor parte del programa unas columnas a la derecha? Ademas tenes un end abajo de todo que viene de arriba, muy descolgado.
else begin
Es que para poner la condicion dentro del while, en casos que la condicion son varias lineas de codigo, tendrias que crear una funcion, y crear una funcion solo para cumplir esa regla.... prefiero seguir siendo un hereje
Primer crítica que haría a lo que mandaste es el ciclo infinito, los puristas (o sea rompebolas como yo) lo consideramos malo porque cuando ves un ciclo deberías saber cuando termina por su condición.
Es que no tenes que tener funciones con cientos de lineas!!!!! Solamente en casos en que sea codigo repetitivo, pero nunca con mucha logica adentro, o en casos de seleccion en que tenes 50 opciones y dentro de cada una codigo para esa opcion, pero solo para esa opcion que no afecte al resto de la funcion. Ahi si que no dudo y te lo divido en todas las funciones que sean necesarias. Pero crear una variable rta por no querer usar dos returns, ahi no entro!!.
De no ser así, y el ciclo contener un par de cientos de lineas en su interior con un par de decenas de breaks y otros tantos returns, se va a complicar al momento de querer modificar algo.
Las variables locales les pongo nombres asinomas, de una letra, o poco mas, con las que soy muy estricto es con las publicas. Ademas fijate que i, i2, etc tienen un tipo definido por el programa (tDbLinkIdx) que si conoces la estructura del programa te dice mucho (tipo de indice de registro Link del modulo DB), asi que el resto no es muy necesario.
El nombre de las variables i,i1,i2 sería interesante que representaran lo que significan (el uso de contadores I,J,K es normal pero el resto...)
Y finalmente, es más facil programar cuando lo hacés bien de entrada, eso de después correr todo para poner un else no es lo que quise decir.
Es que no tenes que tener funciones con cientos de lineas!!!!! Solamente en casos en que sea codigo repetitivo, pero nunca con mucha logica adentro, o en casos de seleccion en que tenes 50 opciones y dentro de cada una codigo para esa opcion, pero solo para esa opcion que no afecte al resto de la funcion. Ahi si que no dudo y te lo divido en todas las funciones que sean necesarias. Pero crear una variable rta por no querer usar dos returns, ahi no entro!!.
De no ser así, y el ciclo contener un par de cientos de lineas en su interior con un par de decenas de breaks y otros tantos returns, se va a complicar al momento de querer modificar algo.