¡Aprende PSEINT Así de FACIL! 🤯 | Curso de Pseudocodigo con PseInt 2025
Introducción al curso de Pseudocódigo
¿Qué es el pseudocódigo?
- El pseudocódigo es un lenguaje de notación para algoritmos que permite expresar pasos para resolver problemas de manera más cercana al lenguaje humano.
- Un ejemplo simple incluye pedir valores de variables, realizar una suma y mostrar el resultado, representando así un problema en pasos claros.
Estructuras y funciones
- Se mencionan elementos como estructuras condicionales, estructuras repetitivas y funciones que se utilizarán en el curso.
- El objetivo del pseudocódigo es facilitar la exportación a lenguajes reales como Java o Python.
Instalación y configuración de PSI
Proceso de instalación
- Se guiará sobre cómo instalar PSI desde su página oficial, con opciones para diferentes plataformas.
- Se recomienda elegir un instalador adecuado; en este caso, se opta por uno de 64 bits.
Primeros pasos en la aplicación
- Una vez instalado, se realiza un tour por la aplicación mostrando las opciones disponibles como crear archivos nuevos o abrir existentes.
- La aplicación permite editar diagramas de flujo y exportar a otros lenguajes como Java o JavaScript.
Configuraciones iniciales y ejemplos
Configuración del lenguaje
- Es importante configurar las reglas del lenguaje antes de escribir código; se recomienda usar el perfil estricto para habituarse a futuros lenguajes.
- Al personalizar las reglas, se establece que todas las variables deben tener tipos definidos y controlar el uso del punto y coma.
Ejemplos disponibles
- La sección de ayuda ofrece varios ejemplos útiles para entender cómo funciona PSI, incluyendo promedios, bucles y menús.
¿Cómo ejecutar y depurar código en programación?
Ejecución de Código
- Para ejecutar un código, se puede utilizar el icono de "Play" o la opción "Ejecutar". Se presenta un ejemplo con números para calcular el promedio, donde 15 se divide entre 5, resultando en 3.
- También es posible ejecutar el código paso a paso. Esto permite observar cada etapa del proceso a una velocidad ajustable, facilitando la comprensión del flujo del programa.
Depuración y Evaluación
- La función de evaluación no está funcionando correctamente en esta versión, pero debería permitir escribir valores para verificar variables. Se espera que esto sea corregido en futuras actualizaciones.
- La opción de "ejecución explicada" detalla cada paso del proceso. Aunque puede ser excesiva en información, es útil para entender cómo funciona el código.
Comprensión de Variables
- Las variables son fundamentales para almacenar datos que pueden ser utilizados posteriormente. Se explica cómo crear una variable definiendo su nombre y tipo (carácter, entero, lógico o real).
- Los tipos principales incluyen:
- Carácter: Almacena cadenas de texto.
- Entero: Almacena números sin decimales.
- Lógico: Solo puede ser verdadero o falso.
- Real: Similar al entero pero incluye decimales.
Asignación y Nombres de Variables
- Es importante asignar nombres adecuados a las variables para facilitar su identificación. Por ejemplo, si una variable almacena un número relacionado con una suma, debe llamarse "suma".
- El comando "leer" permite asignar valores ingresados por el usuario a las variables definidas previamente. Esto es esencial para interactuar con los datos proporcionados por los usuarios.
Buenas Prácticas en Programación
Introducción a la Programación y Variables
Uso de Comandos para Mostrar Valores
- Se menciona el uso del comando
escribirpara mostrar el valor de una variable, como por ejemplo, si se define una variable con el valor 5, al ejecutarlo mostrará "5".
- También se puede incluir texto adicional en la salida utilizando comas, lo que permite personalizar los mensajes mostrados.
- Al usar
sin saltar, se evita un salto de línea en la salida. Esto es útil cuando se desea imprimir múltiples valores en la misma línea.
- La opción de no hacer saltos de línea puede ser beneficiosa al crear bucles donde se requiere imprimir varias veces sin cambiar de línea.
Comentarios en el Código
- Los comentarios son esenciales para proporcionar información adicional sobre el código. Se utilizan barras dobles (
//) para iniciar un comentario.
- Existe una función para comentar o desconectar líneas enteras, lo cual es útil durante pruebas sin necesidad de borrar código.
- Es preferible comentar partes del código que borrarlas completamente, ya que esto permite mantener un registro de las pruebas realizadas.
Operadores en Programación
Tipos de Operadores
- Se introducen tres tipos principales de operadores: algebraicos, lógicos y relacionales. Cada uno tiene su función específica dentro del código.
Operadores Algebraicos
- Los operadores algebraicos incluyen suma, resta, multiplicación, división, potencia y módulo. Estos operan principalmente con valores numéricos.
Operadores Lógicos
- Los operadores lógicos (conjunción, disyunción y negación) permiten combinar operaciones relacionales.
Operadores Relacionales
- Los operadores relacionales son fundamentales para estructuras condicionales y repetitivas; incluyen igual (
==), distinto (!=), menor que (<), mayor que (>), entre otros.
Asignación de Valores
- La asignación también es considerada un operador; por ejemplo, definir una variable como entero relaciona esa variable con un valor específico (ejemplo:
definir a como entero = 5).
Ejemplos Prácticos con Variables
Definición y Uso de Variables
- Se definen variables numéricas (como
ayb) y se les asignan valores iniciales (por ejemplo: 5 y 10).
Realización de Operaciones
- A partir de estas variables definidas, se pueden realizar operaciones matemáticas básicas como suma (
a + b), resta (a - b), multiplicación (a * b) y más.
Ejemplo Detallado
- Al realizar operaciones como
a + b, es importante almacenar el resultado en otra variable (por ejemplo:sumar = a + b) para poder utilizarlo posteriormente.
Consideraciones sobre Espacios en Código
Operaciones Aritméticas y Relacionales en Programación
Introducción a las Operaciones Aritméticas
- Se discute cómo realizar operaciones aritméticas básicas como suma, resta, multiplicación, división y potencia. Se menciona que el "resto" se refiere al resultado de una operación de módulo.
- Ejemplo práctico: la suma es 15, la resta es -5, la multiplicación es 50, la división resulta en 0.5 y el resto de dividir 5 entre 10 es 5.
- Al dividir 10 entre 5 se obtiene un cociente de 2 y un resto de 0; si se divide 11 entre 5, el resto sería 1.
Importancia del Control en División
- Se enfatiza que no se puede dividir entre cero ya que esto genera un error (infinito). Es crucial controlar esta situación en programación.
- La necesidad de estructuras condicionales para manejar divisiones donde el divisor podría ser cero.
Operadores Relacionales
- Los operadores relacionales permiten comparar dos valores y devuelven un valor lógico (verdadero o falso).
- Ejemplos incluyen menor que (<), mayor que (>), igual a (=), distinto (!=), menor o igual (<=), mayor o igual (>=).
Evaluación de Resultados Lógicos
- Se evalúan diferentes condiciones lógicas utilizando variables. Por ejemplo, si 'a' no es igual a 'b', se determina si 'a' es menor o mayor que 'b'.
- Los operadores relacionales son fundamentales para estructuras condicionales y repetitivas.
Uso de Cadenas con Operadores Relacionales
- Aunque los operadores relacionales son más comunes con números enteros, también pueden aplicarse a cadenas para verificar igualdad o diferencia.
Operadores Lógicos
- Los operadores lógicos combinan múltiples condiciones: conjunción (AND), disyunción (OR), negación (NOT).
- Para que una conjunción sea verdadera, todas las condiciones deben ser verdaderas; mientras que en disyunción basta con una condición verdadera.
Ejemplos Prácticos con Variables
- Se definen variables para almacenar resultados lógicos basados en comparaciones. Por ejemplo, comprobar si 'a' está dentro de un rango específico usando paréntesis para claridad.
Estructuras Condicionales en Programación
Introducción a las Condiciones
- Se discute la condición de que "a" sea mayor que 5 y menor que 10. Se establece un ejemplo donde "a" puede ser igual a 5 o 6, mostrando cómo se evalúan estas condiciones.
Evaluación de Condiciones
- Se analiza el resultado de la evaluación: "a" no es mayor que 5 (falso), pero sí es menor que 10 (verdadero). La combinación de ambas condiciones resulta en falso, ya que todas deben ser verdaderas para cumplir la condición.
Combinación de Condiciones
- Si "a" es igual a 5 o 6, se considera verdadero. Sin embargo, si "a" fuera un número como 77, ambas condiciones serían falsas. Esto ilustra cómo las condiciones pueden interactuar entre sí.
Uso en Estructuras Repetitivas
- Las estructuras condicionales son útiles para expandir la complejidad más allá de condiciones simples. Se pueden combinar múltiples condiciones para crear lógica más compleja.
Importancia del Control de Flujo
- Es crucial entender cómo combinar diferentes condiciones sin conflictos. El uso adecuado del operador lógico "no" también se menciona como esencial en programación.
Ejemplos Prácticos de Estructuras Condicionales
Definición y Función
- La estructura condicional permite ejecutar acciones basadas en si una expresión es verdadera o falsa. También se puede usar con un bloque opcional 'else' para manejar casos alternativos.
Ejemplo Básico
- Un ejemplo práctico muestra cómo definir una variable entera y evaluar si está dentro de un rango específico (entre 5 y 10). Si no cumple esta condición, no se ejecutan acciones específicas.
Anidamiento de Estructuras
- Las estructuras condicionales pueden anidarse para manejar múltiples escenarios. Por ejemplo, si un número no está entre dos valores, se puede verificar si es menor o mayor que esos límites.
Depuración y Comprensión
Estrategias de Depuración
- La depuración es fundamental para entender el flujo del programa. Se sugiere utilizar herramientas adecuadas para evaluar qué sucede durante la ejecución del código.
Comparación con Otros Lenguajes
- Aunque los términos pueden variar entre lenguajes (por ejemplo, 'if' en lugar de 'si'), la estructura básica y mecánica detrás de las condicionales permanece constante a través de diferentes plataformas.
Estructura Según: Alternativa a If
Concepto General
Estructuras de Control en Programación
Introducción a las Estructuras Condicionales
- Se presenta una estructura condicional que evalúa un valor numérico y ejecuta acciones basadas en su comparación con valores específicos (1, 2, 3).
- La variable numérica se define como el contenido que se evaluará para decidir qué acciones ejecutar, permitiendo múltiples opciones y secuencias de acciones.
- Es posible reemplazar "opción n" por valores posibles para la variable, lo que permite ejecutar acciones específicas cuando la variable coincide con esos valores.
Ejemplo Práctico de Estructura Condicional
- Se puede asociar más de una opción a un mismo grupo de acciones utilizando listas separadas por comas.
- Si el valor no coincide con ninguna opción definida, se pueden incluir acciones alternativas o eliminar líneas innecesarias si no son requeridas.
Implementación de Días de la Semana
- Se propone un ejemplo práctico donde se asignan días de la semana a números del 1 al 7, facilitando la comprensión del uso de variables numéricas.
- Al definir los días como opciones (lunes a domingo), se establece cómo manejar casos donde el número no corresponde a un día válido.
Comparaciones y Agrupaciones
- Se discute cómo agrupar opciones para simplificar condiciones; por ejemplo, considerar tanto el 6 como el 7 como "fin de semana".
- La estructura condicional es más conveniente que anidar múltiples "si entonces", especialmente en situaciones con rangos constantes.
Estructuras Repetitivas
- Las estructuras repetitivas permiten ejecutar una secuencia de acciones varias veces; esto es útil para mostrar números en rangos amplios sin tedio.
- Se introduce el concepto del bucle "mientras", que ejecuta iteraciones mientras una condición lógica sea verdadera.
Ejemplo del Bucle Mientras
- Un ejemplo muestra cómo definir un índice e imprimir números del 1 al 10 usando un bucle "mientras".
¿Cómo utilizar estructuras repetitivas en programación?
Ejemplo de bucles y su funcionamiento
- Se presenta un ejemplo donde se ejecuta un bucle que cuenta del 1 al 10, mostrando cómo se puede modificar el rango para contar hasta cualquier número deseado.
- Se introduce la idea de invertir el conteo, comenzando desde 10 y decreciendo hasta 1. Se menciona la necesidad de ajustar el índice inicial a 10 para evitar errores.
- El uso del bucle "mientras" se explica como útil cuando no hay un rango definido, como en situaciones donde se solicita entrada del usuario hasta que ingrese un valor específico (por ejemplo, -1).
Comparación entre "mientras" y "para"
- La estructura "para" es más adecuada cuando existe un rango definido. Se discute cómo ambas estructuras pueden ser utilizadas dependiendo de la situación específica.
- Se describe la estructura "para", que incluye inicialización, condición final y paso. Esto simplifica el código al manejar automáticamente el incremento o decremento del índice.
Ejemplos prácticos con bucles
- Al definir una variable numérica con valor inicial y final en la estructura "para", se puede especificar cómo incrementar (por ejemplo, de uno en uno o de dos en dos).
- Si se establece un paso diferente (como 2), el bucle generará una secuencia alternada (ej., 1, 3, 5). También se menciona cómo invertir este proceso es posible ajustando los parámetros adecuadamente.
Uso del bucle "repetir"
- El bucle "repetir" garantiza que su contenido se ejecute al menos una vez antes de verificar la condición para continuar. Esto lo hace ideal para validaciones donde siempre debe haber una ejecución inicial.
- A diferencia del bucle "mientras", que puede no ejecutarse si la condición no se cumple desde el inicio, el "repetir" asegura al menos una iteración.
Validaciones con entradas del usuario
- Un ejemplo práctico muestra cómo solicitar al usuario ingresar valores dentro de un rango específico (entre 1 y 10), utilizando condiciones lógicas para validar las entradas.
- Si el usuario ingresa valores fuera del rango permitido (como 20), el programa sigue pidiendo entradas hasta recibir un valor válido. Esto resalta la importancia de las validaciones en programación.
¿Cómo manejar el retorno de valores en subprocesos?
Concepto de retorno de valores
- Se discute la importancia de devolver o no un valor en los subprocesos, especialmente cuando se repite código para calcular si un número es primo.
- En lugar de repetir el mismo código, se sugiere extraerlo a un subproceso que reciba argumentos y devuelva un resultado (verdadero o falso).
Estructura de los subprocesos
- Los subprocesos pueden tener una variable de retorno que puede ser necesaria o no. Si no se necesita, se puede omitir la flecha que indica el retorno.
- A diferencia de otros lenguajes convencionales que utilizan palabras reservadas como "return", aquí se define una variable dentro del subproceso que contendrá el valor a devolver.
Ejemplo práctico: Duplicar un número
- Se presenta un ejemplo donde se crea un subproceso llamado "doble" que toma un número y devuelve su doble.
- La función devuelve un valor, lo cual es crucial para poder utilizarlo posteriormente en el proceso principal.
Subprocesos sin retorno
- También se menciona la creación de subprocesos que no devuelven nada, como uno llamado "saludar", donde simplemente muestra un mensaje personalizado.
- Es común crear funciones que solo realizan acciones sin necesidad de retornar valores; esto simplifica ciertos procesos.
Importancia del uso eficiente de los subprocesos
- Es fundamental identificar cuándo es necesario devolver algo y qué argumentos son requeridos. Esto ayuda a evitar redundancias en el código.
- Se hace referencia a los procesos predefinidos disponibles en la plataforma utilizada, destacando su utilidad para operaciones matemáticas y manipulación de cadenas.
Funciones matemáticas predefinidas
Funciones básicas
- Se introduce la función "absoluto", que convierte cualquier número negativo en positivo. Por ejemplo, -5 se transforma en 5.
Truncamiento y redondeo
- La función "truncar" elimina la parte decimal sin redondear. Por ejemplo, truncar 598 resultaría en 598.
- La función "redondear" ajusta números decimales hacia arriba o hacia abajo según corresponda; por ejemplo, 5.6 se convierte en 6.
Otras funciones matemáticas
- Se mencionan funciones trigonométricas como seno, coseno y tangente. Estas son útiles para cálculos más complejos.
Logaritmos y exponenciales
Funciones y Subprocesos en Programación
Funciones Matemáticas y de Cadenas
- Se mencionan funciones matemáticas como truncar, redondear, raíz, seno, coseno y tangente. Por ejemplo, al ingresar 5.5 se espera un resultado de 6.
- La función
longituddevuelve el número de caracteres en una cadena; por ejemplo, para "Hola" devuelve 4. También se puede partir una cadena usando índices.
- La función
concatenarune dos cadenas. Además, hay funciones para convertir cadenas a números y viceversa.
- Las funciones
mayúsculasyminúsculastransforman el texto a su respectivo formato. Estas son útiles para manipular cadenas de texto.
- La función más utilizada es la de longitud para recorrer cadenas; también se destaca la utilidad del subproceso
su cadena.
Subprocesos Predefinidos
- Existen otros subprocesos predefinidos que no están categorizados pero son útiles, como la función
azar, que genera un número aleatorio entre 0 y n-1.
- Al usar la función
azar, si se pasa 10 como argumento, el resultado será un número entre 0 y 9. Para incluir el 10, se debe pasar 11.
- La función
hora actualmuestra la hora en formato no muy legible (horas:minutos:segundos). Se puede extraer información específica como año o mes utilizando otras funciones.
Paso de Argumentos en Subprocesos
- Los argumentos pueden pasarse por referencia o por valor. Pasar por valor crea una copia del dato original; pasar por referencia afecta directamente al dato original.
- Un ejemplo práctico ilustra cómo los cambios realizados dentro de un subproceso afectan o no a las variables originales dependiendo del método utilizado (por referencia o por valor).
Ejemplo Práctico con Arreglos
- Los arreglos permiten almacenar múltiples datos bajo una sola variable. Por ejemplo, guardar las notas de 30 alumnos sería complicado sin arreglos ya que requeriría crear múltiples variables individuales.
Estructura y Uso de Arreglos en Programación
Introducción a los Arreglos
- Se presenta la idea de tener una estructura que contenga posiciones para almacenar valores, donde las posiciones van desde 0 hasta la longitud del arreglo.
- Se compara el índice de un arreglo con un portero que selecciona un piso específico en un edificio, facilitando la comprensión del concepto de acceso a elementos.
Definición y Creación de Arreglos
- Para definir un arreglo, se debe especificar su tipo (números enteros o cadenas) y su dimensión, indicando cuántos elementos puede contener.
- Un ejemplo simple muestra cómo crear un arreglo con cinco posiciones (0 a 4), enfatizando que intentar acceder a una posición fuera de rango generará errores.
Acceso y Modificación de Valores
- Se explica cómo asignar valores a posiciones específicas dentro del arreglo y cómo mostrar estos valores utilizando índices.
- Al ejecutar el código para acceder a los valores, se demuestra que es posible iterar sobre el arreglo usando bucles para mostrar todos los elementos almacenados.
Actualización de Valores en Arreglos
- Se introduce la posibilidad de actualizar los valores existentes en el arreglo mediante entradas del usuario, destacando la flexibilidad que ofrecen los arreglos al manejar múltiples variables relacionadas.
- La importancia de pensar en arreglos cuando se tienen muchas variables relacionadas se subraya como una buena práctica en programación.
Arreglos Multidimensionales
- Se define qué son los arreglos multidimensionales y su utilidad para almacenar datos organizados en filas y columnas, contrastándolos con arreglos unidimensionales.
- Para crear un arreglo multidimensional, se deben especificar múltiples dimensiones separadas por comas; por ejemplo, tres filas y tres columnas.
Recorrido y Visualización de Arreglos Multidimensionales
- El proceso para recorrer arreglos multidimensionales implica usar bucles anidados; esto permite asignar valores a cada celda del arreglo.
- Se muestra cómo presentar los datos almacenados en forma tabular, mejorando la legibilidad al utilizar saltos de línea adecuados entre las filas.
¿Cómo trabajar con arreglos en programación?
Introducción a los Arreglos
- Se puede mostrar datos en filas o columnas utilizando arreglos. Los arreglos son útiles en procesos de programación.
Ejemplo de Arreglo Unidimensional
- Se presenta un ejemplo sencillo con un arreglo unidimensional de 5 elementos, aunque también se pueden usar arreglos multidimensionales.
Rellenar un Arreglo
- Se debe crear una función que rellene el arreglo. Es importante recordar que al pasar el arreglo como argumento, se hace por referencia y no por valor, lo cual es crucial para evitar errores.
Longitud del Arreglo
- En este contexto, la longitud del arreglo debe ser pasada manualmente ya que el lenguaje utilizado no proporciona esta información automáticamente como otros lenguajes (ej. Python).
Definición de Índice y Subprocesos
- Se define un índice como entero para recorrer el arreglo desde 0 hasta longitud - 1. También se menciona otro subproceso llamado "Mostrar arreglo" que tiene funciones similares.
Ejemplos Adicionales y Funciones Retornadas
- Aunque los ejemplos presentados no devuelven variables, se sugiere que podrían implementarse funciones que devuelvan la suma de todos los valores del arreglo.
Consideraciones Finales sobre Arreglos
- Al pasar valores al subproceso, estos son actualizados fuera del mismo debido a la referencia. Esto permite realizar diversas operaciones como calcular sumas o promedios.
Recursos Adicionales