InicioCiencia EducacionAprende programar aqui y ahora II

Aprende programar aqui y ahora II

Ciencia Educacion9/25/2011


Lee el post anterior antes de continuar. Este post no va a tener tantas imágenes como el anterior pero en el siguiente van a volver

Bueno amigos de taringa, se suponía que ahora iba a explicar un poco de programación en C y luego C# pero primero me parece conveniente que
vamos acostumbrando nuestro cerebro a la logiga de las computadoras, y para eso vamos a ver algunas funciones de visual basic y posteriormente
veremos sus equivalentes en otros lenguajes.

Vamos a hacer un programa que genere caracteres al azar uno detrás de otro, de tal forma que genere un palabra sin sentido y la podamos usar como

contraseña en nuestro correo y sea anti-hackers, para eso vamos a usar
las sentencias IF...Endif y While....Wend ademas de variables.

Veamos primero que son las variables:

[CopyPaste=ON]Una variable es un símbolo que representa un elemento o cosa no especificada de un conjunto dado.Tambien es un elemento de una
fórmula, proposición o algoritmo que puede adquirir o ser sustituido por un valor cualquiera. En muchos usos, lo contrario de una variable es una
constante. También puede considerarse a las constantes como caso particular de variables, con un universo unitario (con un solo elemento), ya que
sólo pueden tener un valor, y no pueden modificarlo.[CopyPaste=OFF]

WTF ? que es esto dirán ustedes, en términos ateos: una variable es un símbolo, palabra o cosa que representa otro símbolo, palabra o cosa.
Aparte de eso una constante es lo mismo, con diferencia que su valor no varía, es totalmente estático.
Nosotros vamos a utilizar las variables para almacenar números, cadenas de textos, etc. que podamos modificar en un futuro. Y la contantes la vamos
a usar para por ejemplo guardar el valor de PI (3,1416 o no me acuerdo).

Ahora veamos que son las sentencias IF...Endif y While....Wend

If y Endif: se utiliza para comprobar un valor y si el resultado es positivo ejecuta el contenido que se encuentra entre IF y ENDIF.
En términos ateos: Tenemos un pollo rojo y otro pollo verde, también tenemos una escopeta y también un aburrimiento de la put madr, y se nos ocurre


probar puntería con esos pollos, si le disparamos al pollo verde nosotros gritamos "Le dispare al pollo verde" en caso de que le disparemos al pollo
rojo vamos a gritar "Le dispare al pollo rojo" en pseudo código esto seria así:

Crear polloverde
Crear pollorojo
Crear escopeta

Cuando escopeta_dispare
Si polloverde=muerto
Gritar "Le dispare al pollo verde"
Si pollorojo=muerto
Gritar "Le dispare al pollo rojo"
En caso contrario
Gritar "No pego una"
Fin escopeta_dispare

Traduzcamos lo anterior a visual basic (les aviso que esto no va a funcionar como programa, es solo un ejemplo) :

Dim polloverde
Dim pollorojo
Dim escopeta

Private Sub escopeta_dispare()
If polloverde=muerto then
Msgbox("Le dispare al pollo verde"
If pollorojo=muerto then
Msgbox("Le dispare al pollo rojo"
Else
Msgbox("No pego una"
End If
End Sub

Primero veamos que es Dim: es la forma que le decimos al visual basic que almacene una variable, sin embargo esto no sirve para darle un valor a
nuestra variable, para eso tendríamos que haber puesto polloverde=vivo , entonces ahi si se almacenaría nuestra variable, pero como soy vago no lo
puse.

Despues tenemos Private Sub escopeta_dispare() , esto es una acción, en el momento que apreté el gatillo se ejecuto la acción de disparar, y todo el
contenido Private Sub y End Sub es interpretado por nuestro programa.

Veamos If polloverde=muerto then ,If pollorojo=muerto then, son básicamente lo mismo IF significa SI en español (SI yo fuera, SI esto hubiera
estado, no es el si de afirmación), entonces el programa ve lo que hay a continuación de IF pollorojo=muerto y comprueba si es que la variable
pollorojo es igual al valor muerto entonces ejecuta las acciones que se encuentra abajo (solo si los valores son iguales), antes de que haiga un END IF , otro IF o algun ELSE.

Else sirve para que en caso ninguno de los valores arrojados por IF anteriormente sean verdaderos, se ejecute lo que haya a continuacion de ELSE y
antes de END IF, aunque podemos omitir esta sentencia.

Por ultimo End If termina la sentencia IF y no compara mas valores , End Sub cierra la accion de escopeta_dispare.

Ahora veamos las sentencias While...Wend, tomate un descanso si no entendiste lo anterior y siéntete libre de preguntar o bien busca mas info en
google.

While traducido al español seria algo asi como MIENTRAS QUE, entonces continuando con el ejemplo anterior podríamos decirle a nuestro
programa que MIENTRAS QUE el pollo verde siga vivo no mostrar ningún mensaje, veámoslo:

While polloverde=vivo
'esto es un comentario y no tiene ningún valor para el programa, usa la comilla ' para crear tus comentarios
Wend
msgbox("Mataste al pollo verde, asesino"

Lo que le decimos al programa es que: mientras que el pollo verde este vivo (While polloverde=vivo) entre en un bucle y recien salga cuando ese
valor haya cambiado, decimos que salga con la palabra WEND, y al momento de salir del bucle nos muestra un mensaje "Mataste al pollo verde,
asesino".

Veamos otra forma de usar esta sentencia, primero en pseudo codigo:

Escopeta_disparo
MIENTRAS QUE yo no suelte el gatillo
Seguir disparando
CUANDO lo suelte
Solte el gatillo
FIN escopeta_disparo

Ahora traduzcamos esto a visual basic, (ya vamos viendo lo fácil que es pasar de un lenguaje a otro, por eso los programadores se saben tantos
lenguajes de programación, y no porque sean unos Einsteins) :

Private Sub Escopeta_disparo()
While Escopeta.disparo=1
Escopeta_disparo ' Esto ejecuta de vuelta la accion de disparar, recuerden que lo que esta despues de ' es un comentario
Wend
Escopeta.disparo=0 ' esto especifica que solte el gatillo
End sub


El código anterior generaría un error al intentar ejecutarlo, porque el valor de Escopeta.disparo siempre va a ser 1 y se quedaría tildado en un bucle
infinito, veamos otro ejemplo para entenderlo mejor:

Sub Sumar ' Fijensen que o puse Private antes de Sub pero es basicamente lo mismo y no es necesario ahora
Dim Contador as integer ' Le decimos al programa que Contador es una variable del tipo Numero Entero
Dim Resultado ' No especificamos el tipo y nuestro programa lo toma como una variable sin tipo de datos especifico
Contador=0 'asignamos a contador el valor 0
Resultado=10' asignamos a resultado el valor 10
While Contador < 10 ' Mientras que el valor del contador sea menor a 10 se ejecutara lo que esta a continuación:
Resultado=resultado+10 ' Sumamos la variable resultado con 10 y a eso lo guardamos de nuevo dentro de la variable resultado
Contador=contador+1 'Similar al caso anterior, primero contador va a valer 0 y se le va a sumar 1, después va a valer 1 y se le va sumar de nuevo 1,
despues 2....etc. Cuando llegue a 10 se va a salir del bucle
Wend 'Cuando contador deje de ser menor que 10 sale del bucle, y nos va a mostrar el siguiente mensaje
Msgbox (Resultado) ' Esto nos va a mostrar el contenido de la variable resultado, fijensen que no lo puse entre comillas por que se trata de una
variable y no de una palabra o cadena de texto
End Sub ' Terminamos con este dolor de cabeza

Buenos tomamos otro respiro y continuamos haciendo nuestro programa, vamos por pasos al igual que el post anterior:

1-Abrimos el visual basic y creamos nuestro proyecto nuevo "EXE estándar", Archivo>Nuevo Proyecto>exe estándar, ya saben

2-Agregamos 2 TextBox 1 CommandButton 1 CheckBox y 1 Label, nos guiamos por la imagen:

Cambien las propiedades caption del CommandButton , CheckBox y Label y las propiedades Text de los textbox para que queden como la de la
imagen.Tambien podemos cambiar las propiedades Font para cambiar el tamaño de las letras y el tipo también, tienen que presionar en el botón al
lado de la propiedad font con los puntos suspensivos.

3-Hacemos doble click en el único CommandButton que tenemos y veremos el siguiente texto en nuestro código:
Private Sub Command1_Click()

End Sub
Ya saben que esto es la acción de hacer Click en el Command1 , osea en el boton.
Vamos a ver que necesitamos primero: necesitamos una variable para almacenar la palabra final que vamos a mostrar (PALABRA), vamos a
necesitar un contador para que los caracteres lleguen hasta una longitud especifica (CONTADOR) también por si a caso otra variable para
almacenar el numero de caracteres que va a tener nuestra cadena (NUMCaract), entonces tendriamos que poner algo asi:
Dim PALABRA as String 'guardamos la variable PALABRA como de tipo string=cadena de caracteres
Dim CONTADOR, NUMCarct as Integer 'Especificamos dos variables de tipo Numero entero, separadas por comas

4-Ahora nos toca asignarles los valores a las variable anteriores: para PALABRA le vamos a decir que empiece con nada, para eso solo ponemos

doble
comillas sin nada en su interior "", el CONTADOR tiene que empezar en 0 y NUMCaract va a obtener su valor de la propiedad Text del
Text1.Veamos como quedaría:
Palabra=""
Contador=0
NUNCaract=int(text1.text) 'convertimos el valor a un numero entero para evitar errores

5-Pero nos estaría faltando algo, una variable que sea un caracter al azar, para eso vamos a usar dos funciones del visual basic: Rnd() y Chr()
Rnd : esto genera un numero al azar, podemos elegir el valor máximo multiplicándolo por ese numero, por ej: rnd * 100, esto va a generar un numero
al azar menor que 100.
Chr : convierte un numero entero en un caracter utilizando las tablas de caracteres ASCII, busquen en google acerca de los números que representa
cada caracter.
Almacenemos el resultado de la funcion Rnd dentro de una variable que llamaremos Random, a Chr no necesitaremos almacenarla.
Dim Random as integer
Random=rnd*126 ' 126 es el ultimo caracter que no interesa asi que por eso lo multiplicamos por 126

6-Ahora codificamos nuestro primer bucle:

While CONTADOR < NUMCaract 'Mientras que el Contador sea menor a NUMCaract ejecutamos lo siguiente
Random = Rnd * 126
PALABRA = PALABRA & Chr(Random) 'Presten atención que para unir dos caracteres utilizo & en vez de +, Chr(random) es nuestro caracter al
azar
CONTADOR = CONTADOR + 1 'Aumentamos el valor de CONTADOR en 1
Wend

Quedaría algo así:

Private Sub Command1_Click()
Dim PALABRA As String
Dim CONTADOR, NUMCaract, Random As Integer
PALABRA = ""
CONTADOR = 0
NUMCaract = Int(Text1.Text)
While CONTADOR < NUMCaract
Random = Rnd * 126
PALABRA = PALABRA & Chr(Random)
CONTADOR = CONTADOR + 1
Wend
Text2.Text = PALABRA
End Sub


Ahora ejecutamos con F5 y probamos, ya debe andar bien pero sin embargo el checkbox que pusimos no sirve de nada, le tenemos que dar un uso.

7-En el bucle que vamos a agregar otro bucle dentro de ese en caso de que este marcado el casillero del checkbox , para eso vamos a usar la
sentencia IF para comprobar su valor:

If Check1.Value = 1 Then 'Comprobamos que el valor del checkbox sea 1 (1 esta tildado, 0 no esta tildado)
While Random < 48 Or Random > 122 _ 'Dejamos un espacio seguido de _ para continuar con el codigo abajo
Or Random = 58 Or Random = 59 Or Random = 60 Or Random = 61 _ ' OR es para comprobar varios valores tambien podemos usa AND
Or Random = 62 Or Random = 63 Or Random = 64 Or Random = 91 _
Or Random = 92 Or Random = 93 Or Random = 94 Or Random = 95 Or Random = 96 ' Todo eso comprueba que no sea igual a un caracter especial
Random = Rnd * 122
Wend
End If

8-Ahora tenemos nuestro codigo final:

Private Sub Command1_Click()
Dim PALABRA As String
Dim CONTADOR, NUMCaract, Random As Integer
PALABRA = ""
CONTADOR = 0
NUMCaract = Int(Text1.Text)
While CONTADOR < NUMCaract
Random = Rnd * 126
If Check1.Value = 1 Then
While Random < 48 Or Random > 122 _
Or Random = 58 Or Random = 59 Or Random = 60 Or Random = 61 _
Or Random = 62 Or Random = 63 Or Random = 64 Or Random = 91 _
Or Random = 92 Or Random = 93 Or Random = 94 Or Random = 95 Or Random = 96
Random = Rnd * 122
Wend
End If
PALABRA = PALABRA & Chr(Random)
CONTADOR = CONTADOR + 1
Wend
Text2.Text = PALABRA
End Sub


Damos a F5 y probamos…

Podemos ver una supercontraseña pero la mayoria de los sitios no te la acepta

Y por ahora terminamos en el próximo post vemos C en Linux y hacemos un navegador con C#, para mañana seguro esta listo.
Datos archivados del Taringa! original
5puntos
521visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

m
marianolinx🇦🇷
Usuario
Puntos0
Posts45
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.