Riqueza de comunidad si señor .
no tengo idea de otros lenguajes, y esto me sirve para aprender algunos conceptos de algunos. pero realmente se necesitan tantas lineas de codigo esque me cuesta mas comprenderlos xD
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Strings.Unbounded.Text_IO; use Ada.Strings.Unbounded.Text_IO;
procedure Texto is
Cadena : Unbounded_String;
Caracter : Character;
Palabra : Unbounded_String := To_Unbounded_String("");
begin
Cadena := Get_Line;
while (Length(Cadena) > 0) loop
Caracter := Element(Cadena,Length(Cadena));
Cadena := To_Unbounded_String(Slice(Cadena,1,Length(Cadena)-1));
if Length(Cadena) = 0 then Put(Caracter & Palabra); New_Line;
elsif Caracter /= ' ' then Palabra := Caracter & Palabra;
else Put(Palabra & " "); Palabra := To_Unbounded_String("");
end if;
end loop;
end Texto;
Esto ya lo he hecho mirando por Internet, ya que yo me limito a un lenguaje, pero ya que estamos quizas a alguien le resulte interesante:
Acabo de hacerlo mas o menos en papel y no sirve, invierte caracter a caracter, voy a investigar xD Si alguien maneja este lenguaje puede hechar una mano
CLEAR
ACCEPT "Teclee una <B>cadena</B> para invertirla: " TO cTexto
? cTexto
? "invertido es: "
? invStr( cTexto )
//
FUNCTION invStr( __cTexto )
LOCAL aText1, cNew, n, cTemp, g, x
aText1 = ARRAY (LEN ( __cTexto ) )
cNew = ""
FOR n = 1 TO LEN( __cTexto )
cTemp = LEFT( __cTexto, n )
aText1[ n ] = RIGHT( cTemp, 1 )
NEXT n
x = 1
FOR g = LEN( __cTexto ) TO 1 STEP -1
cNew = aText1[ x ] + cNew
x = x + 1
NEXT g
RETURN cNew
PD: Con las gramaticas libres de contexto seguro que se puede hacer algo, aunque no cuelen como animal acuatico ( XD ).
Perdonar por el Catalan pero es que lo tenia ya creado y me da muchoooooooooooooo palo ahora pasarlo son solo los comentarios y las pocas variables , despues de los examenes ya lo pasare si quereis.
#36 El pseudocódigo está fuertemente ligado al lenguaje. Por ejemplo, Haskell es funcional puro: (casi) no existen variables y no hay bucles. ¿Cómo pseudocodificas el orden superior? Para eso usa directamente el lenguaje.
El P.C. está bien para describir soluciones en programas imperativos, pero nada más.
#36 pero para eso tenemos que saber de que funciones disponemos, xq dime tu en pseudocodigo como le dices q te sale la 2 letra de una cadena de texto.
VBScript/ASP:
<script language="vbscript">
Dim word()
cadena=inputbox("Cadena")
total=len(cadena)
wb=1
Redim preserve word(wb)
bucle=0
Do while bucle<total
bucle=bucle+1
letra=mid(cadena,bucle,1)
if letra=" " then
wb=wb+1
Redim preserve word(wb)
end if
word(wb)=word(wb)&letra
loop
orden=ubound(word)
Do while 0<orden
document.write word(orden)&" " 'NOTA: Si se usa para asp seria response.write
orden=orden-1
loop
</script>
Quiero decir, pseudocodificar algo tan abstracto como el orden superior (funciones que reciben otras funciones (que a su vez pueden recibir otras) como parámetro, o que el resultado de una función sea otra función) es absurdo. Si eso lo combinas con la inexistencia de variables y bucles, el pseudocódigo del programa en Haskell sería algo así:
Imprimir la concatenación con espacios de la inversión de las palabras de lo que introduzca el usuario.
Palabras es la lista de subcadenas entre dos espacios de lo que llega.
Pues para eso se codifica y punto.
Creo un vector STL de string y una variable que sea la que va leyendo las palabras. Mientras no sea fin de entrada o salto de linea ( ya que el cin obvia los espacios ) voy introduciendo en el vector dichas palabras. Cuando encuentro un salto de linea o el fin de entrada recorro el vector en orden inverso mostrando en pantalla los resultados.
A ver quién es el bonito que lo escribe en Ook!.
http://www.dangermouse.net/esoteric/ook.html
http://en.wikipedia.org/wiki/Ook
SALU2
PD: De programación sé una mierda, pero de frikismo voy verdaderamente sobrao