elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cómo convertir un string en una lista de strings
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo convertir un string en una lista de strings  (Leído 6,150 veces)
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Cómo convertir un string en una lista de strings
« Respuesta #10 en: 18 Octubre 2015, 18:10 pm »

La utilización de GOTO está considerada una mala práctica de programación, la cual lleva a un código "espagueti".

Deberías leerte este articulo escrito por Edjer Dijkstra para una publicación de la ACM en 1968

Siempre los anti-goto citan directamente el articulo de Edsger Dijkstra's para justificar su posición de rechazo hacia goto. Lastima que el articulo de Dijkstra's prácticamente no tiene nada que ver con la forma de que goto es utilizado estos días, por lo tanto lo que dice el articulo tiene poca o ninguna aplicabilidad en la escena de programación moderna.

Uno puede llegar a escribir código difícil de leer sin usar goto, por lo tanto no es la
característica del lenguaje la que conduce a un código ilegible e imposible de mantener ni tampoco la sintaxis mas bien son los malos programadores los que causan esto.

Evitar usar goto porque quiere evitar producir código ilegible no tiene sentido si su código goto es legible, entonces no hay nada malo en ello, el problema viene cuando se abusa de ellos. Por lo que todo esto me lleva a la conclusión de que todo este rechazo hacia goto es solo un modismo establecido no porque algunos programadores lo usen de manera ineficiente yo debería evitar usarlo.

Saludos!


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Cómo convertir un string en una lista de strings
« Respuesta #11 en: 18 Octubre 2015, 18:33 pm »

Lo que haces con GOTO, lo puedes hacer con bucles y condiciones.
La finalidad de cada bucle y condición es más evidente a la vista que un GOTO (por no decir, que las etiquetas hay que buscarlas, cosas que con bucles y condiciones no pasa).
Además, en POO, el uso de GOTO es aun más terrible.

GOTO está muy bien en BATCH, y es necesario en ASM (JMP), pero en C++ no hay justificación lógica para utilizarlo.

Como dato, no leí el artículo de Dijkstra xD


« Última modificación: 18 Octubre 2015, 18:37 pm por ivancea96 » En línea

Gunhack

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Cómo convertir un string en una lista de strings
« Respuesta #12 en: 25 Octubre 2015, 21:43 pm »

En c
Código
  1.  
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <ctype.h>
  5.  
  6. using namespace std;
  7.  
  8. int nPal(char *cadena); //Funcion que regresa el numero de palabras.
  9.  
  10. int main() {
  11.  
  12.  char cadena[] = {"Pablito clavo un clavito en la calva de un calvito"};
  13.  
  14.  int nPalabras = nPal(cadena); // Variable que almacena el numero total de palabras en la cadena.
  15.  char tokens[nPalabras][30]; //Variable que almacena cada palabra en un espacio del arreglo.
  16.  char *token = strtok(cadena, " ,.!?"); //Función que convierte una cadena a tokens.
  17.  
  18.  nPalabras = 0;
  19.  while(token != NULL) {
  20.  
  21.    strcpy(tokens[nPalabras++], token); //Se almacena cada token (palabra) en un espacio del arreglo.
  22.    token = strtok(NULL, " ,.-!?");
  23.  }
  24.  
  25.  for(int i = 0; i < nPalabras; i++){
  26.    printf("%s\n", tokens[i]);
  27.  }
  28. }
  29.  
  30. int nPal(char *cadena) {
  31.  
  32.  int n = 0;
  33.  
  34.  for(int i = 0; i < strlen(cadena); i++) {
  35.  
  36.    if(cadena[i] == ' ') {
  37.      n++;
  38.    }
  39.  }
  40.  
  41.  return n+1;
  42. }
  43.  
  44.  

En c++
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. int nPal(string cadena) {
  7.  
  8.  int n = 0;
  9.  
  10.  for(int i = 0; i < cadena.length(); i++) {
  11.  
  12.    if(cadena[i] == ' ' || cadena[i] == '/' || cadena[i] == '.' || cadena[i] == ',') {
  13.      n++;
  14.    }
  15.  }
  16.  
  17.  return n+1;
  18. }
  19.  
  20. int main ()
  21. {
  22.  string descomponer ("Pablito clavo un clavito en la calva de un calvito");
  23.  string token[nPal(descomponer)];
  24.  int ends=0;
  25.  int inicio=0;
  26.  int i=0;
  27.  
  28.  do{
  29.  inicio=descomponer.find_first_not_of(".,/ ",ends);
  30.  ends=descomponer.find_first_of(".,/ ",inicio);
  31.  token[i]=descomponer.substr(inicio,ends-inicio);
  32.  
  33.  cout << token[i]<<endl;
  34.  i++;
  35.  }while (ends!=-1);
  36. }
  37.  
En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Cómo convertir un string en una lista de strings
« Respuesta #13 en: 26 Octubre 2015, 09:56 am »

El "Goto" debería de estar prohibido, así de claro.

Yo recuerdo hace años, muchos años. Cuando los PC´s de escritorio eran algo que no se conocía e IBM no había sacado su XT (si, soy viejo ¿pasa algo?)

Los primeros ordenadores domésticos usaban BASIC (en su mayoría). Un lenguaje interpretado y que en ese momento hacía un uso abundante del Goto, e igualmente del GoSub.

Puede pensarse que un Gosub en realidad es una llamada a función, y que Goto no es tan malo. El problema no es la existencia de las herramientas, el problema es el uso que se termina dando a las mismas.

El que quiera asustarse, comentarle que algunas versiones del BASIC permitían incluso un "Goto variable". Donde la variable indica el número de línea al que debía de saltar la ejecución.

Imaginar algo como eso. ¿A que parece inofensivo?

Invito al que crea eso, a intentar depurar un programa de un par de miles de líneas que haga uso y abuso de esos goto, y veréis que gracioso es.

El cabo de una hora, no tenemos ni puñetera idea de por donde anda el flujo del programa.

Claro, es posible hacer una programación clara, documentada, estructurada, etc... incluso con la existencia de estas atrocidades. El problema es que siempre, siempre encontraremos a mas de un mendrugo que no lo hará, y si os toca intentar depurar o actualizar algo así, os cagaréis en todo lo santo y en la familia del que ha hecho esa gracia.
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Cómo convertir un string en una lista de strings
« Respuesta #14 en: 26 Octubre 2015, 17:33 pm »

El "Goto" debería de estar prohibido, así de claro.

Yo recuerdo hace años, muchos años. Cuando los PC´s de escritorio eran algo que no se conocía e IBM no había sacado su XT (si, soy viejo ¿pasa algo?)

Los primeros ordenadores domésticos usaban BASIC (en su mayoría). Un lenguaje interpretado y que en ese momento hacía un uso abundante del Goto, e igualmente del GoSub.

Puede pensarse que un Gosub en realidad es una llamada a función, y que Goto no es tan malo. El problema no es la existencia de las herramientas, el problema es el uso que se termina dando a las mismas.

El que quiera asustarse, comentarle que algunas versiones del BASIC permitían incluso un "Goto variable". Donde la variable indica el número de línea al que debía de saltar la ejecución.

Imaginar algo como eso. ¿A que parece inofensivo?

Invito al que crea eso, a intentar depurar un programa de un par de miles de líneas que haga uso y abuso de esos goto, y veréis que gracioso es.

El cabo de una hora, no tenemos ni puñetera idea de por donde anda el flujo del programa.

Claro, es posible hacer una programación clara, documentada, estructurada, etc... incluso con la existencia de estas atrocidades. El problema es que siempre, siempre encontraremos a mas de un mendrugo que no lo hará, y si os toca intentar depurar o actualizar algo así, os cagaréis en todo lo santo y en la familia del que ha hecho esa gracia.


+1

Salu2s

PD: Cada cual es libre de hacer lo que quiera, solo cite el artículo porque creo necesario su lectura para entender porque no se DEBE usar.
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como convertir un string a datetime en C#
.NET (C#, VB.NET, ASP)
olve 3 22,490 Último mensaje 17 Diciembre 2009, 01:18 am
por Meta
como convertir string de un archivo a dobles
Programación C/C++
bash 0 2,193 Último mensaje 28 Febrero 2011, 06:44 am
por bash
Cómo puedo convertir un String a Int en PHP
PHP
blaknez root 2 2,626 Último mensaje 27 Julio 2014, 19:26 pm
por MinusFour
Como convertir int a string y viceversa?
Programación C/C++
j0lama 4 3,373 Último mensaje 29 Noviembre 2014, 20:15 pm
por Orubatosu
¿Como puedo convertir una lista de 350 mil palabras del ingles a mp3?
Foro Libre
bacanzito 2 2,211 Último mensaje 29 Julio 2016, 07:43 am
por bacanzito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines