Bueno si lo que deseas aprender es a programar, puedes encontrar confuso el como empezar, ya que en programación hay cientos de lenguajes y enfoques, una de las preguntas más comunes es:
¿Con cual lenguaje debo empezar?.
Encontrarás todo tipo de respuestas para esta pregunta, en mi opinión, el lenguaje con el que aprendas es poco importante, así que no deberías preocuparte por eso, yo recomiendo empezar con herramientas que faciliten la comprensión y el desarrollo de la lógica de la programación.
Siguiendo esta línea de pensamiento en español tenemos una herramienta increíblemente potente para aprender, que te permite programar en español y te da acceso a código y diagramas de flujos, con todo tipo de configuraciones para imitar programación de muchos lenguajes, y un transformador de código a los lenguajes más populares. Pseint
Así que esta guía se enfocará en desarrollar tus habilidades lógicas y de pseudocódigo, para que después puedas migrar este conocimiento al lenguaje de tu eleccion sin ningun problema.
Ahora viene otra pregunta, ¿Que vamos a aprender?.
Bueno si bien mencioné que hay cientos de lenguajes y muchos enfoques, lo único que necesitamos es desarrollar la capacidad lógica y de transformar nuestros pensamientos en instrucciones entendibles por la máquina.
Esto es independiente del lenguaje o enfoque, cuando se domine esto, el resto será relativamente sencillo y solo cambiara las palabras con las que escribimos y el cómo ordenamos los algoritmos, pero no el que escribimos, esto seguirá siendo lo mismo y no tomará mucho tiempo, así que es relativamente sencillo.
Dicho esto, para poder transformar nuestras ideas a instrucciones que pueda entender la computadora,
¿Cuántos temas hay que dominar?.
Bueno dejare una lista con los temas que necesitamos aprender, los términos que utilizaré son propios es probable que lo encuentres con otros nombres en otros sitios:
1) Instrucciones secuenciales: básicamente son los algoritmos más sencillos, que es una lista de acciones simple que se ejecuta una tras otra sin variación, aqui lo que hay que aprender es:
- Las variables.
- Las instrucciones Leer y Escribir.
- Operaciones numéricas
Básicamente es como cuando un mago, crea un artefacto que cuando se activa con maná lanza una bola de fuego (o cualquier otro hechizo).
Sin mencionar que podríamos encadenar la cantidad de hechizos que deseemos, cualquier cantidad, el ahorro energético es considerable. 😀
La unica pega, es que no podemos elegir que hechizo se ejecutaría en determinada situación, ni elegir entre muchos objetivos, aparte que los hechizos muy largos aún costarian mucho maná.
2) Las condiciones, esto como casi todo en programación viene de las matemáticas, más concretamente este tema viene de Lógica Matemática.
Si tu tienes la capacidad de resolver acertijos o deducir cosas ya tienes esta habilidad, solo es necesario pulirla y usarla de forma consciente. Si no la tienes no te preocupes, no es tan complicado como parece.
Hay gente que se frustra mucho con este tema, pero creo que es porque se explica mal, este tema es bastante importante, porque será el que nos permita controlar y manipular el flujo de la información.
Los temas que se verán son:
- Tabla de verdad.
- Condiciones simples.
- Condiciones anidadas.
- Concatenación de condiciones.
- El según (Swich o When)
Esto implica que podríamos hacer que el artefacto mágico se activará solo, según lo que deseemos sin necesidad de pasarle maná, y que pueda atacar solo a los que deseemos 😈
También podemos hacer que un mismo artefacto active un sin fin de hechizos segun la situacion de forma automática. 😋, aunque bueno hechizos muy largos tomarían mucho de nuestro maná.
3) Los ciclos: los ciclos nos permiten indicarle a la máquina que repita una acción hasta que deseemos.
Los temas que se ven aquí, son los tipos de estructuras, y dos herramientas que nos permiten interactuar con los ciclos:
- Contador y Acumulador.
- Ciclo para (For)
- Ciclo mientras (while)
- Ciclo repetir (do while)
Aquí un mago ya seria capaz de usar miles de hechizos sin gastar apenas maná, con sus artefactos, e incluso distinguir a quién va cuantas bolas de fuego, esto es over power ningún mago medieval podría hacer esto 😱.
La única limitante es que no podríamos elegir a muchos objetivos al tiempo.
4) Las listas: estas nos permiten interactuar con grandes cantidades de información. Tan simple y poderoso como suena, podemos mover toda la cantidad de datos que queramos. Sin embargo este es el tema más complejo que hay, es más muy pocos programadores logran dominarlo.
Aquí solo veremos un nivel muy básico, que es el nivel bastante simple, pero que vamos los ingenieros de google hacen esto a otro nivel, y hay miles de formas de optimizar las interacciones con las mismas.
No entraré en mucho detalle, ya que en general a no ser que te dediques a optimizar códigos te bastará con el uso que te explicare aquí (en toda mi experiencia profesional no he necesitado ahondar más allá de lo superficial).
Los temas aquí serían:
4.1) Vectores o Listas de una dimensión (Arrays).
-Inicializar la lista
-Agregar elementos a la lista
-Actualizar elementos
-Eliminar elementos
-Invertir lista
-Ordenar listas numéricas.
-Ordenar listas de texto
4.2) Matrices o Listas de dos dimensiones.
-Agregar elementos
-Actualizar elementos
-Eliminar elementos
-Invertir Matrices
-Ordenar Matrices numéricas.
-Ordenar Matrices de texto
Aquí ya podríamos encargarnos de hordas de enemigos, distribuyendo hechizos de forma eficiente entre todos los objetivos, ya esto es un nivel casi de Dios 😇
Esto ya sería todo, como pueden ver en realidad no son tantísimos temas, y la mayoría son bastantes sencillos de entender, digamos que lo complejo empieza en los ciclos, antes de eso es relativamente fácil, pero intentaré que puedas aprender de la forma más fácil y sencilla de comprender, apoyándome en los diagramas de flujo de datos para poder visualizar los conceptos de forma más gráfica.
Bueno cualquier duda o sugerencia no duden en ponerla en los comentarios.
Programando Con Sergio
lunes, 9 de marzo de 2020
lunes, 24 de agosto de 2015
Guia 2 - Estructuras Condicionales
---------------------- Guía No.2 - algoritmos condicionales ----------------------------
Apoyo audio visual:
https://www.youtube.com/watch?v=3o3H5bL88ac
https://www.youtube.com/watch?v=ALcrP0e80Ec
https://www.youtube.com/watch?v=jKmQ8RpioIs
Si tiene problemas con los comandos matemáticos están disponibles en:
ayuda>>PSeudoCodigo>>Expresiones>>Funciones
Dicho esto, vamos con condicionales, como podrá notar, muchas veces uno quiere hacer un
programa que haga una u otra cosa según la información ingresada, para esto, hacemos
comprobaciones o condiciones, veamos un ejemplo sencillo.
Proceso Ej_VA
// Nota: Estas barras sirven para comentar el código.
// todo lo que escriba después de ellas el programa lo ignora
Escribir "Ingrese un numero"
Leer N1
Si N1 < 0
// Si el numero es menor que 0 se multiplica por -1
N1 = -1 * N1
FinSi
Escribir "El valor absoluto del numero es: ", N1
FinProceso
|
Como se puede ver podemos hacer que el programa responda de cualquier forma
a un evento que que ocurra. En el si podemos usar los operadores lógicos
los básicos son =, >, <, >=, <= y <> podemos verlos en
ayuda>>PSeudoCodigo>>Expresiones>>Operadores
Todos ellos comprueban algo y devuelve Verdadero-falso o true-false. si devuelve true
se ejecuta la condición y si devuelve false no se ejecuta o se ejecuta el sino, ejemplo
Proceso Ej_NP
Escribir "Ingrese un numero"
Leer N1
R1 = N1 % 2 // Si el número es par regresa 0 y si no regresa 1
// Nota 1: el % es el mismo mod se puede escribir también como N1 mod 2
// Nota 2: el mod devuelve el residuo de una división por lo que si el mod es 0 la
// división es exacta
Si R1 = 0
Escribir "El numero es par"
Sino // si regresa false ejecuta lo siguiente
Escribir "El numero es impar"
Finsi
FinProceso
|
También podemos meter una condición dentro de otra, a eso se le llama anidar,
más específicamente condiciones anidadas.
Proceso Ej_NC
Escribir "Ingrese un numero"
Leer N1
Si N1 < 0
Escribir "El numero es negativo"
Sino
//Podemos agregar todas las condiciones que queramos dentro de otra
Si N1 = 0
Escribir "El numero es neutro"
Sino
Escribir "El numero es positivo"
FinSi
Finsi
FinProceso
|
Podemos agregar más de una condición con el y/o, esto sigue la respuesta intuitiva
si colocamos "o" cuando una sea true pasara y si colocamos "y" solo en caso de que
ambas sean true pasara, ejemplo
Proceso Ej_C
Escribir "Ingrese un numero"
Leer N1
// Nota: el trunc quita la parte decimal de un número y deja solo la entera
Si N1 <> trunc(N1) y N1 > 0
Escribir "El numero es un decimal positivo"
Sino
Si N1 > 0
Escribir "El numero es positivo"
FinSi
FinSi
Si N1 = trunc(N1) o N1 < 0
Escribir "El numero es entero y/o negativo"
FinSI
FinProceso
|
Bien pongamos algunos ejercicios, para practicar, la idea es que puede hacerlos como
quiera lo importante es que funcionen.
Ejercicios propuestos:
Los ejercicios están ordenados según su dificultad, realice ejercicios hasta que se sienta cómodo codificando, e intente hacer los últimos.
1. Desarrollar un diagrama que permita determinar si un valor cualquiera es positivo o negativo
2. Desarrollar un diagrama que permita determinar sin un valor cualquiera es par o impar
3. Desarrolle un diagrama que permita determinar si un valor N es múltiplo de un Valor Z
4. Desarrollar un diagrama que permita determinar si un valor N (cualquiera), es divisor común de otros dos valores X y Y (que se ingresan por teclado)
5. Diseñar un diagrama que lea un valor N y determine si es múltiplo común de X y Z donde X y Z también se ingresan por teclado
6. Diseñar un diagrama que permita leer dos valores V1 y V2 y determine cuál es el mayor y cuál es el menor o si son iguales
7. Diseñe un diagrama que permita leer dos números N1 y N2 e indicar si uno de los dos divide exactamente al otro.
8. Crear un programa que reciba 2 números, los sume, reste, multiplique o divida (el usuario escoge).
9. Desarrollar un diagrama que permita el ingreso de dos valores X1 y X2 donde indique si el resultado de dividir la suma de los números entre la resta de X1 – X2 es exacta o no.
10. Desarrollar un diagrama que permita el ingreso de 3 números Num1, Num2, Num3 e indicar si la suma de los 3 números es par, impar o neutra.
11. Desarrollar un diagrama que permita leer 3 valores diferentes e indique cual es el mayor de ellos, el menor o si son iguales.
12. Desarrollar un diagrama que permita leer 3 valores X1, X2, X3 e indicar si alguno de ellos divide a los otros dos exactamente.
13. Diseñar un diagrama que permita emitir la factura correspondiente a una compra de un artículo del cual se adquiere una o varias unidades y se conoce su precio antes de IVA (iva igual al 16%), y si el precio bruto (precio de venta más IVA) es mayor de $500.000.oo se debe realizar un descuento del 15%.
14. Desarrolle un diagrama que permita determinar la nota minima que se debe sacar en el examen final del curso de acuerdo a las condiciones 75% (las 3 primeras notas) y 25%(nota 4), esta nota debe estar representada tanto en puntos y en nota.
Recordar que hay 4 notas y una nota final, y se dividen los puntos así:
Nota 1: 25
Nota 2: 100
Nota 3: 125
Nota 4: 125
Examen o Nota final: 125
La nota del examen podrá ser desde 0 puntos a 5 puntos.
Recordar que hay 4 notas y una nota final, y se dividen los puntos así:
Nota 1: 25
Nota 2: 100
Nota 3: 125
Nota 4: 125
Examen o Nota final: 125
La nota del examen podrá ser desde 0 puntos a 5 puntos.
15. Una fábrica de tornillos hace controles de calidad tomando una muestra del 10%
de los tornillos por cada lote de tornillos que sacan, dependiendo de la calidad
de los tornillos se harán descuentos para venderlos, si el porcentaje de tornillos
malos es menor al 5% se venderá al 100% del precio del lote, si el porcentaje esta
entre el 5% y 10% se hará un descuento del 10% al precio del lote, si el porcentaje
de tornillos dañados es del 10 al 15% al descuento original se le restará el
5% + 10000 pesos del precio del lote, si el porcentaje es del 15 al 30%, se hará un
descuento del 20% y se hará un llamado de atención a las personas que hicieron el lote,
si el porcentaje de tornillos dañados esta entre el 30 y 50% se aplicará el descuento
del 10% a 15% + el porcentaje de tornillos dañados dividido en 2, y se diezmara
el grupo que hizo el lote, si el porcentaje supera el 50% el lote no se venderá y
se desintegrará el grupo que realizó el lote, con posible despido del total de sus
integrantes (supongo que es una empresa romana :P).
Realizar un algoritmo que reciba el precio del lote de los tornillos, el numero de
tornillos por lote, y el número de tornillos dañados y muestre el precio del lote
de tornillos.
// XD lo deje bien enredado para ver si pueden jeje.
16. Hacer un algoritmo que lea un año y diga si es bisiesto o no.
Un año es bisiesto si es divisible entre 4, a menos que sea divisible entre 100.
Sin embargo, si un año es divisible entre 100 y además es divisible entre 400,
también resulta bisiesto. Obviamente, esto elimina los años finiseculares
(últimos de cada siglo, que ha de terminar en 00) divisibles sólo entre 4 y
entre 100.
17. Desarrollar un diagrama de flujo que permita determinar el tiempo un segundo después de un tiempo ingresado en horas:minutos:segundos. Ejemplo 4:59:59 // 5:00:00.
18. Desarrollar un diagrama de flujo que permita determinar la fecha un día después a un fecha ingresada (tenga en cuenta meses de 30, 31, 28 días, cambio de año y el año bisiesto, ejemplo 31-12-2004 el día siguiente será 1-1-2005).
jueves, 20 de agosto de 2015
Guia 1 - Estructura Secuencial
---------------------- Guía No.1 - algoritmos secuenciales ----------------------------
Esta guía tiene un apoyo audiovisual revisar:
https://www.youtube.com/watch?v=fCbXCK2rWvE
https://www.youtube.com/watch?v=uDMfcZi5m1A
Empecemos por definir que es un algoritmo "Un algoritmo es una secuencia de pasos lógicos de forma ordenada, que resuelve una situación " recordar esto es muy importante, es el concepto básico que debemos aprender.
Si quieres verlo de forma más didactica recomiendo este video https://www.youtube.com/watch?v=U3CGMyjzlvM
Si quieres verlo de forma más didactica recomiendo este video https://www.youtube.com/watch?v=U3CGMyjzlvM
Si bien en el campo agregan el concepto de pasos finitos, la verdad es que eso lo veo un poco como una limitante, estoy seguro que en unos años los programas de inteligencia artificial, serán pasos lógicos infinitos auto-construibles, y yo lo seguiré considerando algoritmo XD.
Para facilitar el aprendizaje usaremos el programa pseint, lo podemos descargar de la siguiente página
http://pseint.sourceforge.net/ .
También esta Free DFD que lo pueden descargar aquí: http://dfd.softonic.com/ , pero en esta guia nos enfocaremos en pseint, que maneja tanto diagramas de flujo de datos como algoritmos escritos.
Lo instalamos, la instalación es sencilla y no necesita mayor explicación, al terminar la instalación nos preguntara que tipo de perfil usaremos, para estas prácticas usaremos el perfil flexible, si escogió otro, vaya a Configurar>>Opciones de Lenguaje (perfiles)... escogemos flexible
Como podemos observar en el centro hay un control para escribir el código y este contiene lo siguiente
Proceso sin_titulo
FinProceso
|
Cambiemos el sin_titulo y pondremos el nombre que queramos (Sin espacios y que empiece por una letra)
Proceso Ejemplo
FinProceso
|
Recomiendo que guarde todos los ejercicios que haga, sea de los que le pongo o suyos propios para que cuando lo veamos dentro de un año digamos, en nuestros tiempos programábamos con pseint o DFD, así a lo viejito jajajaja :P
Lo primero que veremos es a escribir mensajes en la consola, para esto tipeamos la palabra clave escribir (podemos ver que es el primer control de la derecha) miremos un ejemplo.
Proceso E_MC
Escribir "Hola soy el computador"
Escribir "un interpretador traduce los codigos escritos"
Escribir "en codigo binario y los envia al circuito de la tarjeta Madre"
Escribir "y los resuelvo con el procesador"
Escribir ""
Escribir "Te doy la bienvenida al mundo de la programacion"
FinProceso
|
Nota el Escribir en DFD es así:
No se te olvide poner el texto entre la comillas; “” o ''.
Copia y pega el proceso, en pseint y oprime ejecutar (es un play verde :P), para probar el código, experimenta escribir algunos mensajes y pasamos a lo siguiente.
----------------------------------- variables -------------------------------------------------------------------
Bueno esto es lo primero que veremos, cuando programamos podemos guardar en la memoria temporal, valores numéricos o cadenas de textos, para su posterior uso, haciendo esto podemos obtener, manipular y procesar la información.
Las variables son nuestra herramienta básica con la cual haremos prácticamente todo, las variables empiezan con una letra, no tiene espacios, normalmente se distinguen mayúsculas y minúsculas, y pueden tener números pero no empezar por un número.
Nombre
|
Valido o invalido
|
1numero
|
invalido
|
numero1
|
valido
|
n1
|
valido
|
1n
|
invalido
|
primer_nombre
|
valido
|
primer nombre
|
invalido
|
nuMeRo
|
valido
|
Numero
|
valido
|
Se recomienda siempre usar minúsculas para las variables, para mantener un orden con las funciones (eso lo veremos después en poo, por ahora no se preocupe :P) en las variables podemos guardar cualquier cosa que queramos, guardemos texto en 2 variables y las mostraremos
Proceso E_VdT
nombre = "Sergio " // El espacio al final es para que no quede pegado
apellido = "Castro"
Escribir "Mi primer nombre es : ", nombre
Escribir "etimológicamente significa Guardián"
Escribir "Mi primer nombre con mi apellido seria:"
Escribir nombre, apellido
Escribir "En juegos normalmente uso un juego de palabras y me pongo Casser"
FinProceso
|
En DFD el manejo de variables es con el cuadrado:
Como vemos el texto va dentro de comillas, y las variables no, pero el contenido de estas también esta entre comillas (estas se sacan con shit + 2), para escribir varias cosas ponemos una ‘ , ‘ para separar las cadenas de texto.
Ahora veremos un ejemplo con números
Proceso E_VcN
n1 = 2754
n2 = 4123
r = n1 + n2
Escribir "Me dijeron que sumara y mostrara esto"
Escribir n1, " + ", n2, " = ", r
FinProceso
|
Como vemos cada dato lo metemos en una variable distinta y en la línea: r = n1 + n2 operamos y guardamos el resultado, para mostrarlo basta con ponerlo en el escribir.
Prueba hacer algunos que quieras, podemos restar con el - multiplicar con * y dividir con /
-------------------------------------------leer datos --------------------------------------------------
Para leer algo que escribe el usuario usamos la palabra reservada leer seguida de una variable
ej.
Proceso E_sumar
escribir "Ingrese un numero"
leer n1
escribir "Ingrese otro numero"
leer n2
r = n1 + n2
escribir "la suma de los 2 números es: ", r
FinProceso
|
Cada vez que usamos la palabra leer, almacenamos lo que ingrese el usuario en una variable, así la podemos manipular, con esto aprendimos las 3 partes de un algoritmo.
Entrada de datos
Procesamiento de datos
Salida de datos
Solo existen esas 3 partes en un algoritmo, para facilitar el aprendizaje sólo veremos el Procesamiento de datos; la entrada y la salida las cubrirán el leer y el escribir.
Ahora
ya entendido lo que es la variable, el leer, el escribir y los procesos
básicos, vamos a dejar unos ejercicios y terminamos la primera guía,
intentar guardarlos todos, e inventar unos propios.
Ejercicios propuestos:
Los ejercicios están ordenados según su dificultad, realice ejercicios hasta que se sienta cómodo codificando, e intente hacer los últimos.
1. Leer 2 números y al primero restarle el segundo, después mostrar la resta completa.
2. Crear un algoritmo que lea 2 números, y muestre la suma, la resta, la multiplicación y
la división de los 2 números.
3. Desarrolle un Algoritmo de flujo que permita leer un valor entero, calcular su cuadrado y mostrar su resultado.
4. Desarrollar un Algoritmo que permita ingresar el radio de un círculo para determinar el área del mismo (consultar la fórmula), y mostrar su resultado
5. Desarrollar un Algoritmo que permita determinar la hipotenusa de un triángulo rectángulo conociendo los valores de las longitudes de los catetos.
6. Desarrollar un Algoritmo que leer la temperatura en grados centígrados y muestre su resultado en Fahenheit y kelvin.
7. Desarrollar un Algoritmo que permita ingresar un valor en millas y lo convierta a kilómetros, centímetros y yarda.
8. Desarrollar un Algoritmo que permita convertir un valor en galones a Litros, barriles y litros
9.Desarrollar un Algoritmo que permita convertir ingresar un valor en libras y lo convierta en quintales, miligramo y toneladas.
10. Desarrollar un Algoritmo que convierta un valor dado en metros cuadrados (M2 ), en hectáreas y Centímetros cuadrados
11. Desarrollar que permita convertir un valor dado en Km/h en millas por hora y nudos (náutico)
12. Crear un algoritmo que pida 3 números a, b y c, y resuelva la fórmula general para una ecuación de segundo grado y muestre en pantalla las respuestas x1 y x2.
13. Cree un algoritmo que pida 4 números A,B,C,D
Hacer y mostrar:
E) que sume los A y B
F) que le reste a B, C
G) que multiplique C y D
H) que divida la suma de E, F, G, entre 10
14. Inventarse algún algoritmo mínimo 1 y máximo 10000000000000000000000 ejercicios XD.
Si tiene problemas con los comandos matemáticos están disponibles en:
ayuda>>PSeudoCodigo>>Expresiones>>Funciones
Suscribirse a:
Entradas (Atom)