Está en la página 1de 75

Programación desde cero (Programación ATS).

Introducción Al Curso.
Breve introducción al temario del curso para personas que no saben nada sobre
programación.

Algoritmos y P. | Información y Procesamiento De La Información.


Antes de comenzar, veamos los siguientes conceptos sencillos parte por parte:
 Una computadora es un procesador de datos y sistemas de procesamiento de
información.
 Un sistema es un conjunto de componentes conectados interactivos, que tienen un
propósito y una unidad total (como el conjunto de órganos que nos ayudan a
comer).
¿Qué es un sistema de procesamiento de la información?
 Es un sistema que transforma los datos brutos (desordenados, botados) en
información organizada, significativa y útil.

Para procesar esta información necesitamos contar tomar en cuenta los siguientes
conceptos:
“La parte física/tangible, lo que se puede tocar y desarmar”
Es el conjunto de componentes físicos de una computadora, el
Hardware cual se compone de:
 Unidad Central de Procesos (CPU), conjunto de circuitos
electrónicos capaces de ejecutar cálculos como operaciones lógicas y matemáticas.
 Memoria Central, la información procesada por CPU se almacena normalmente
en la memoria central hasta que se terminan los cálculos.
 Dispositivos de almacenamiento secundario (Memoria auxiliar, USB)
 Periféricos o Dispositivos de Entrada/Salida (E/S, mouse, keyboard)

“La parte lógica/intangible, lo que no se puede tocar”

Es el conjunto de programas que van a controlar al hardware.


Software “Para procesar la información siempre usaremos ambos
componentes”
Es necesario conocer el significado de “información” y sus “componentes” para
comprender de lo que estamos hablando.
A grandes rasgos, el DATO es una representación simbólica (numérica, alfabética,
algorítmica, etc.) un atributo o característica (alto, viejo, etc.) de una entidad.
Los datos describen hechos empíricos, sucesos y entidades reales.
“Un dato puede ser un simple carácter, tal como ‘a’, un número, un dibujo, etc”
Enfocado en la programación, un dato es la expresión general que describe los objetos
con los cuales opera una computadora.
Existen dos tipos de datos:
“Tenemos los numéricos (enteros, reales), lógicos (boolean, true/false), carácter (char,
string, una letra o palabras)”

“Tenemos los registros, arreglos (vectores o matrices), archivos”

Simples (sin estructura) ¿Qué es la información?


La información es un conjunto de datos
acerca de algún suceso, hecho, fenómeno o
situación, que organizados en un
Compuestos (estructurados) contexto determinado tienen su
significado, cuyo propósito puede ser
el de reducir la incertidumbre o
incrementar el conocimiento acerca de algo.
¿Qué es procesamiento de la información?
La información se puede introducir a la computadora como una entrada (input) y a
continuación se procesa para producir una salida (output)

“Se divide en tres pasos”

Entrada Salida
Proceso
(Datos) (Resultado)
Cuando empecemos a hacer programas, en casi todos los programas, tenemos que hacer
una entrada de información (para ingresar todos los datos que tenemos)

Algoritmos y Programación | Algoritmo y Programa.


¿Qué es un algoritmo?
Es un método para resolver un problema, es una secuencia ordenada de instrucciones
que siempre se ejecutan en un tiempo finito, que describen el proceso que debes seguir
para darle solución a un problema específico.
En un algoritmo siempre debe de haber un punto de inicio y un punto de terminación,
estos deben ser únicos y deben ser fácilmente identificables.
Dando el concepto de un algoritmo, continuemos con sus características:
 Tiene que ser preciso (debe estar correctamente enumerado con pasos claros,
evitando incoherencias y desorden)
 Tiene que estar bien definido (sin importar cuantas veces se ejecute tal algoritmo,
siempre va a dar una solución correcta)
 Tiene que ser finito (el problema debe solucionarse al terminar)
Aparte de esto, un algoritmo debe describir lo siguiente:
 Entrada, Proceso y Salida de datos.
Nos pide datos, la información necesaria para poder procesarla y entregarnos un
resultado.
Por ejemplo: El algoritmo para llamar a un contacto personal, por mi celular.
 Entrada, marcar el número celular de este contacto.
 Proceso, enlace intercelular.
 Salida, contacto establecido → llamada aceptada o rechazada.
A través de distintos ejemplos podemos observar el uso y forma de algoritmos.
¿Cuáles son los tipos de algoritmos que existen?
“Son aquellos donde se describen los pasos solamente usando
Cualitativos palabras”
“En ningún momento vamos a encontrar operaciones
matemáticas.”
Por ejemplo: ¿Cuál es el algoritmo para buscar información en Google?
1. Inicio.
2. Entrar en la página web de Google.
3. En el cuadro de entrada de datos, colocar el nombre del tema.
4. Hacer un clic en “Buscar” o presionar “<Enter>”
5. Se obtiene como resultado enlaces del tema buscado.
6. Seleccionar el enlace convenible.
7. Fin.
Sabemos que el algoritmo es cualitativo porque no tiene ningún tipo de operación
matemática, solamente tiene palabras.
“Son aquellos donde se utilizan cálculos numéricos para
Cuantitativos definir los pasos del proceso”
Por ejemplo: Realizar un algoritmo que calcule la altura de
un edificio.
“Debemos saber cuántos pisos tiene el edificio junto con la altura de cada uno de los
pisos”
1. Inicio.
2. Leer la cantidad de pisos “n”
3. Leer la altura de cada piso “h”
4. Multiplicar la cantidad de pisos por la altura de cada piso. “H” = n*h.
5. Imprimir H.
Los lenguajes algorítmicos (esto no que ver aun con la programación) son una serie de
símbolos y reglas que se utilizan para describir de manera explícita un algoritmo.
En este caso tenemos dos tipos de lenguajes algorítmicos:
“La representación gráfica de las operaciones que realiza un algoritmo (diagrama de
flujo, diagramas N-S)”
Gráficos
“Representa en forma descriptiva las operaciones que realiza un
algoritmo (pseudocódigo)”
No Gráficos
Por ejemplo: Realizar un algoritmo para determinar si un
número es positivo o negativo.
Gráfico.

No Gráfico.

Para terminar este capitulo tenemos que conocer el


concepto de archivo, el cual es el siguiente:
Un programa es el conjunto de instrucciones escritas en algún lenguaje de
programación y que ejecutadas secuencialmente resuelven un problema específico.
Algoritmos y Programación | Lenguaje de Programación.
¿Qué es un lenguaje de programación?
Es un conjunto de símbolos y reglas sintácticas (escritura fiel al lenguaje) y semánticas
(orden y significado fiel al lenguaje) que definen su estructura y el significado de sus
elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico
de una máquina.
“Cada una de estas varían en función al lenguaje de programación”
Gracias a los lenguajes de programación podemos crear programas para controlar el
comportamiento lógico y físico de una máquina (codificando sus símbolos y semánticas
respectivas al programa).
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten
realizar operaciones de entrada/salida, cálculos, manipulación de textos,
lógica/comparación (condicionales) y almacenamiento/recuperación.
¿Cuáles son los tipos de lenguajes de programación?
Se pueden clasificar atendiendo a varios criterios, los principales son:
a) Según el nivel de abstracción.
b) Según la forma de ejecución.
c) Según el paradigma de programación.
En el primer caso, nivel de abstracción, se refiere a clasificar/separar según las
características de cada lenguaje.
Así encontramos los siguientes lenguajes:
 Lenguajes de máquina.
Las instrucciones en el lenguaje de maquina solamente se expresan en términos de la
unidad de memoria más pequeña, el bit (digito binario puede ser 0 o 1)
La ventaja de este lenguaje es que no necesita ser “traducido”, tiene una mayor
adaptación al equipo.
El inconveniente es la dificultad y lentitud en la codificación “una codificación muy
complicada”
 Lenguaje de bajo nivel.
También conocido como ensamblador, son aquellos donde se utilizan palabras
mnemotécnicas (abreviaturas).
Algunos mnemotécnicos típicos de operaciones aritméticas son:
ADD (comando sumar), SUB (comando restar), DIV (comando dividir), etc.
Por ejemplo, ADD A, B C (sumar el número guardado en la posición A a la posición B
y el resultado se almacena en la posición C)
La ventaja es que no es tan difícil como el lenguaje máquina.
El inconveniente es que cada máquina tiene su propio lenguaje, necesitamos un
proceso de traducción.
 Lenguaje de alto nivel.
Siendo los más utilizados, son aquellos en los que las instrucciones o sentencias son
escritas con palabras similares a los lenguajes humanos (dependiendo del idioma
del lenguaje, casi siempre es ingles), lo que facilita la escritura y comprensión del
programa.
La ventaja es que son independientes de cada máquina, lo que los hace portables.
El inconveniente es que el proceso de traducción es muy largo y ocupa más recursos
Para que sea ejecutado un programa, debe de estar en lenguaje máquina, por lo que tener
el lenguaje de alto nivel involucra un proceso de traducción y conversión.
En el segundo caso, forma de ejecución, cuando tenemos escrito nuestro programa en
lenguaje de alto nivel, primero necesitamos traducirlo a lenguaje máquina, para esto
necesitamos un traductor, es ahí donde nos topamos con los lenguajes.
“Para hacer el proceso de programa fuente a código máquina, necesitamos traductores”
Estos lenguajes no son más que la traducción que hacen estos mismos desde un
programa fuente hacia el código máquina (cada uno lo hace de forma distinta).
 Lenguajes Compilados.
1. Se compilan una sola vez y se utilizan (ejecutan) cuantas veces se desee sin
necesidad de volver a utilizar el compilador.
2. Los compiladores analizan todo el programa y no generan resultados si no es
correcto el código (un error sintáctico o semántico en el código, no se generará ni
un resultado)
 Lenguajes Interpretados.
1. Son interpretados cada vez que se ejecutan y necesitan siempre del interprete.
2. Los intérpretes analizan las instrucciones según las necesitan y pueden iniciar la
ejecución del programa aun con errores (solamente si el programa no hace uso
de alguna línea con errores).
Ambos están dentro de los lenguajes de programación para traducir el programa fuente
de un lenguaje de alto nivel a código maquina y poder ejecutar nuestro programa.
En el tercer caso, paradigma de programación, se representa un enfoque particular o
filosofía para la construcción de un software.
Para darnos una idea, es una forma de pensar que tienen los lenguajes para programar en
ellos (forma diferente/distinta de programar que depende de cada lenguaje)
Según el paradigma de programación, tenemos los siguientes tipos de lenguajes;
 Algorítmico, imperativo o por procedimientos.
Es el más común y está representado, por ejemplo, por lenguajes de programación
como C o BASIC.
Este describe la programación en términos del estado del programa y sentencias que
cambian dicho estado. Los programas imperativos son un conjunto de instrucciones
que le indican al computador como realizar tal tarea (tenemos que decirle paso por
paso todo lo que tiene que hacer a nuestro programa)
 Declarativo o predicativo.
Está basado en la utilización de predicados lógicos o funciones matemáticas, su
objetivo es conseguir lenguajes expresivos en los que no sea necesario especificar
como resolver el problema (como, por ejemplo, programación convencional
imperativa)
 Lógico.
Un ejemplo es PROLOG. El mecanismo de inferencia genérico se basa en los
procedimientos de deducción de fórmulas validas en un sistema axiomático (más que
todo, nosotros tenemos que poner las reglas a cumplir y cuando podamos hacerle
preguntas al programa final, este paradigma se encargará de deducir si la respuesta es
real o falsa para entregarnos un resultado)
 Funcional.
Está representado por la familia de lenguajes LISP. El mecanismo de inferencia
genérico se basa en la reproducción de una expresión funcional a otra equivalente
simplificada.
 Orientado a objetos.
Cada vez más utilizado, sobre todo en combinación con el imperativo, de hecho, los
lenguajes orientados a objetos permiten la programación imperativa. Algunos
ejemplos de lenguajes orientados a objetos son C++, Delphi, Java, Python, etc.
Usa objetos y sus interacciones para diseñar aplicaciones y programas de
computadora. Está basado en varias técnicas, incluyendo herencia, modularidad,
polimorfismo y encapsulamiento.
Hay algunos lenguajes con los que se puede mezclar junto con el paradigma imperativo,
en este tipo, se orienta hacia los objetos (reales o no reales) y se basa principalmente
para determinar los objetos que deben contar con dos cosas, atributos y métodos
(características y acciones) para a través de ellas poder hacer diferentes programas
basándonos en experiencias de la vida real.
“Un mecanismo de inferencia genérico se refiere a un proceso o sistema que utiliza la
información disponible a la mano para llegar a conclusiones o deducciones”
“Es como cuando una persona utiliza su conocimiento y experiencia para hacer
suposiciones o sacar conclusiones basadas en la información que tiene”
Algoritmos y Programación | Metodologías para la solución de
problemas.
Desde el punto de vista educativo, la solución de problemas mediante la programación
posibilita la activación de una amplia variedad de estilos de aprendizaje. Pueden
encontrar diversas formas de abordar problemas y plantear soluciones.
“Vamos a ver todo el proceso a seguir desde que tenemos el problema, hasta tener el
programa que va a solucionar el problema”
Es por ello que debemos de considerar cuatro fases, en esencia, para resolver problemas
específicos mediante la programación de computadores.
1. Analizar el problema.
2. Diseña un algoritmo.
3. Traducir el algoritmo a un lenguaje de programación.
4. Depurar el programa (corregir posibles errores en nuestro programa)
“Estas cuatro fases no son las únicas que existen, ahora vamos a ver qué hacer para
pasar de un problema bruto, a un programa completo”
La metodología va a comenzar con:
 Definición del problema.
Esta fase está dada por el enunciado del problema, el cual requiere una definición
clara y precisa, es importante que se conozca lo que se desea que realice la
computadora; mientras esto no se conozca del todo, no tiene mucho caso continuar
con la siguiente etapa.
 Análisis del problema.
Una vez que se ha comprendido lo que se desea de la computadora, es necesario
definir lo siguiente:
1. Los datos de entrada (que datos necesitamos del usuario)
2. Cuál es la información que el programa desea producir (salida)
3. Los métodos y las fórmulas que se necesitan para procesar los datos (que
acciones tiene que realizar la computadora a través del programa)
 Diseño del algoritmo.
Las características de un buen algoritmo son:
1. Debe tener un punto particular de inicio.
2. Debe ser preciso e indicar el orden de realización de cada paso.
3. Debe ser definido, no debe permitir dobles interpretaciones.
4. Debe ser general.
5. Debe ser finito en tamaño y tiempo de ejecución.
 Codificación.
La codificación es la operación de escribir la solución del programa (de acuerdo
con la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones
detalladas (código fuente), en un código reconocible por la computadora
“Una vez tengamos el algoritmo listo, tenemos que pasarlo al lenguaje de
programación necesario (traductor)”
“La serie de instrucciones detalladas se le conoce como código fuente, el cual se
escribe en un lenguaje de programación”
 Prueba y depuración.
Los errores humanos dentro de la programación de computadoras son muchos y
aumentan considerablemente con la complejidad del problema. El proceso de
identificar y eliminar errores, para dar paso a una solución sin errores se le llama
depuración.
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de
la solución, por ello se debe considerar con el mismo interés y entusiasmo.
 Documentación.
Es la guia o comunicación escrita en sus variadas formas, ya sea en enunciados,
procedimientos, dibujos o diagramas.
A menudo un programa escrito por una persona es usado por otra.
Por ello la documentación sirve para ayudar a comprender o usar un programa o
para facilitar futuras modificaciones (mantenimiento).
“En casos donde no solamente tu seas el manipulador del programa”
La documentación se divide en tres partes:
1. Documentación interna, son los comentarios dentro del código fuente
como una guia para entender que está sucediendo.
“A veces al abrir un código hecho hace tiempo, resultamos con un
montón de preguntas sobre el funcionamiento de este programa”
2. Documentación externa, es un documento aparte donde se pone la
descripción del problema, el nombre del autor del programa, el
algoritmo, el código fuente, etc.
3. Manual de usuario, la forma para explicarle al usuario cómo funciona
el programa.

 Mantenimiento.
Se lleva a cabo después de terminado el programa, cuando se detecta que es
necesario hacer un cambio, ajuste o complementación al programa para que siga
trabajando de manera correcta. Para poder realizar este trabajo se requiere que el
programa este correctamente documentado.
Entidades Primitivas | Descargar e instalar PSeInt.
¿Qué es PSeInt?
PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en
programación. Mediante un simple e intuitivo pseudolenguaje en español
(complementado con un editor de diagramas de flujo), le permite centrar su atención en los
conceptos fundamentales de la algoritmia computacional, minimizando las dificultades
propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y
recursos didácticos.
“Podemos adquirir la base de los conceptos necesarios sobre algoritmos para poder
conseguir experiencia en pseudocódigos”
Abriendo el programa podemos observar su entorno con el que vamos a familiarizarnos en
este capítulo.
“Configuraremos las opciones del
lenguaje (a estricto)”

Entidades Primitivas | Identificadores (constantes y variables)


Por identificador, se refiere a que puede ser una constante o una variable.
Definamos un identificador:
Los identificadores representan los datos de un programa (constantes o variables). Un
identificador es una secuencia/cadena de caracteres que sirve para identificar una
posición en la memoria de la computadora, que nos permite acceder a su contenido.
Por ejemplo:
Supongamos que tenemos una posición de memoria “0x332fw2”, si nosotros creamos un
identificador de tipo entero para almacenar valores enteros y le ponemos un nombre
“numero”; este “numero” es un identificador.
“Cuando creamos un identificador, este va a asignarse automáticamente a una posición
de memoria”
Si en algún momento le asignamos a este identificador un valor, ese valor se asignará en
la posición de memoria que señala dicho identificador.
Entonces, un identificador (datos del programa) es una palabra con la cual nosotros
podemos almacenar información en las posiciones de memoria en nuestra computadora,
gracias a estos podemos llamar a todo el contenido guardado en una posición de memoria.
Para determinar qué tipo de palabra puede ser un identificador, hay que seguir algunas
reglas:
 Debe comenzar con una letra (A – Z, mayúsculas o minúsculas) y no deben
contener espacios en blanco.
 Letras, dígitos y caracteres, pueden estar unidos solamente por un carácter
subrayado como “_”
 El primer carácter no puede ser un número.
Por ejemplo, “letra”, “n_kilos”, “Resultado1”, “n_personas2”
Errores, “lado 1”, “cuadro-1”, “2do_grado”
Un identificador puede ser de dos tipos.
 Constante.
Una constante es un dato numérico o alfanumérico que no cambia durante la
ejecución del programa.
Por ejemplo, “PI = 3.1416”
 Variable.
Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede
cambiar durante la ejecución del programa.
Por ejemplo, “área = (base * altura) /2 → área de un triángulo”, varían los datos de
los diferentes tipos de triángulos.
La clasificación de las variables puede separarse por los siguientes parámetros:
 Por su contenido.
1. Numéricas (enteros, reales)
2. Lógicas (verdadero o falso)
3. Alfanuméricas (caracteres o cadenas, string)
 Por su uso.
1. De trabajo (puede almacenar en ellas resultados de diferentes ecuaciones
hechas (como el área del triángulo))
2. Contadores (variables enteras utilizadas en bucles donde se añaden o quitan
contadores)
3. Acumuladores (la cantidad quitada o aumentada no es constante, pueden
hacer sumas o multiplicaciones iterativas (repetidas))

Entidades Primitivas | Tipos de Datos.


¿Qué son los tipos de datos?
Estos hacen referencia al tipo de información que se trabaja, todos los datos tienen un tipo
asociado con ellos. El tipo de dato determina la naturaleza del conjunto de valores que
puede tomar una variable.
“Es aquello que hace referencia a la información que puede almacenar una variable”
Por ejemplo,
Entero numero1 = 10;
En este caso solamente podemos almacenar números enteros en este identificador.
Otros ejemplos,
Real numero2 = 5.13;
Carácter letra = ‘a’;
Lógico misterio = verdadero;
El tipo de dato es el resaltado, un indicador que hace referencia al identificador sobre la
información que va a almacenar.
La clasificación de los tipos de datos es la siguiente:
Simples (sin estructura).
 Numéricos.
Podemos almacenar números enteros o reales.
 Lógicos.
Podemos almacenar verdadero o falso.
 Caracteres (char).
Podemos almacenar un solo carácter.
Compuestos (estructurados, definidos por el usuario)
 Simples o estáticos.
1. Arreglos (Vectores, matrices)
Es una colección de datos del mismo tipo.
2. Registros.
Es una colección de datos de diferente tipo.
3. Archivos.
4. Conjuntos.
5. Cadenas de caracteres (string)
 Compuestos o dinámicos.
1. Punteros.
2. Listas (pilas o colas)
3. Listas enlazadas.
4. Arboles.
5. Grafos.
Hasta aquí podemos hablar sobre los tipos de datos, siendo un curso de algoritmo veremos
los tipos de datos generales simples (trabajados en PSeInt)
Realizaremos una práctica en PSeInt sobre entidades primitivas.
Nuestra tarea va a ser definir algunas variables con algunos tipos de datos.
Primero vamos a cambiar el nombre del proceso a “Principal”.
Es importante saber que cada una de las expresiones que vamos a utilizar en PSeInt
debe terminar en punto y coma “;”
Con la palabra “Definir” en la siguiente línea del pseudocódigo vamos a poder declarar
variables (identificador que puede cambiar a lo largo del programa).
Esta variable debe tener un nombre antes que nada y luego el tipo de dato con el que se
va a asociar “como entero”
Hacemos el mismo procedimiento con otra variable, pero el tipo de dato ahora va a ser un
valor real (vamos a indicar que se almacenará un valor real a la variable).
Hacemos lo mismo para una
variable lógica, carácter y cadena.

“Un tipo de dato no es más que una


referencia que le estamos haciendo
a las variables indicándole que
información vamos a almacenar dentro de ellas”
Entidades Primitivas | Operación de Asignación.
¿Qué es la operación de asignación?
Consiste en atribuir un valor a una variable como se muestra:
Nombre de la variable ← expresión (el valor que vamos a asignar a la variable)
En algunos lenguajes de programación, el símbolo puede variar a:
“=”, “:=”
Para entender como funciona esto se tiene el siguiente ejemplo:
Variable a la que se le asigna el valor ← El valor que vamos a asignar
num ← 5

El proceso de asignación se realiza en 2 fases:


“num = 10;”
 Se evalúa la expresión de la parte derecha de la asignación obteniéndose un único
valor.
 Se asigna ese valor a la variable de la parte izquierda, sustituyéndose el valor que
tenía anteriormente.
Como estamos hablando sobre variables (que cambian), cuando nosotros utilizamos el
proceso de asignación, no importa que información tenga esa variable, una vez
reemplazado el valor se toma este valor nuevo.
¿Qué es lo que hay que tener en cuenta?
 En la parte izquierda solo puede haber una variable.
 La variable a la que se le asigna el valor pierde su valor anterior.
 El tipo de dato del valor que se obtiene al evaluar a la parte derecha tiene que ser el
mismo que el tipo de dato que el de la variable de la parte izquierda, es decir, a una
variable solo se le pueden dar valores de su mismo tipo de dato.
“la variable “num” tiene que ser una variable numérica, pues estamos asignándole
un valor numérico”
El tipo de dato es simplemente una referencia para saber la información que podemos
guardar dentro de la variable.
A continuación, iremos a PSeInt para continuar con este tema…
Para acostumbrarnos a hacer comentarios (fracciones de texto que el programa no va a
tener en cuenta, es más una forma de guia del autor) hay que saber cómo colocarlos.
Para esto solamente tenemos que poner dos líneas paralelas “//” (shift + 7) en cualquier
línea del código.
En la anterior practica vimos la forma de declarar el tipo de dato a diferentes variables,
ahora le asignaremos valores a estas variables.
Comenzando con la primera variable “numero1”, que es una variable entera, podemos
agregarle a esta un valor entero; Como estamos en pseudolenguaje tenemos que seguir
las reglas de este, por lo tanto, para realizar la asignación usamos una flecha formada por
dos signos diferentes (<-).
Esto es la operación de asignación,
asignando un valor entero “10” a
una variable entera “numero1”
(en la parte derecha va la variable
y a la izquierda va el valor
asignado)

Para la siguiente variable “numero2” una variable real, vamos a diferenciarla de una entera
por el uso del punto decimal, sabiendo esto le asignamos un valor de acuerdo con su tipo
de dato escogido como en el ejemplo anterior. “2.1”
A la variable de tipo lógica “misterio” solo podemos asignarle dos valores, verdadero o
falso. “falso”
A la variable de tipo carácter “letra” podemos asignarle valores caracteres colocándola
entre comillas dobles o simples ‘a’; “a”. “a”
A la variable de tipo cadena “palabra” la definimos con comillas (se recomienda usar
comillas dobles) y como una palabra, podemos ponerla tan extendida como lo requiramos.
Recuerda que a una cadena le podemos indicar la dimensión exacta [espacios] que va a
tener, como “Dimensión palabra[20];” “Hola”

Entidades Primitivas | Entrada Y Salida De Información.


¿Qué es entrada de información?
Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas
variables. La entrada se conoce como “Leer”.
“A lo largo de todo el curso, en la mayoría de los programas vamos a tener que pedirle
algunos datos al usuario (entrada), datos necesarios para procesarse y entregar un
resultado como salida”
¿Qué es la salida de información?
Son los diferentes mensajes que se le envían al usuario, ya sea para pedir un valor o
también para mostrar un resultado. La salida se conoce como “Escribir”.
“Podemos mostrarle al usuario un mensaje pidiéndole introducir un valor numérico y al
momento de ingresar su dato nosotros lo vamos a leer, también sirve para registrar los
resultados de un programa”
Ahora vamos a practicar esto en PSeInt.
Abrimos un nuevo proceso en el programa y le ponemos de nombre (opcional)
“Principal”, se le coloca este número porque en todos los lenguajes de programación hay
una función o método llamado main o principal, desde ahí inicia todo el recorrido
principal.
Antes de comenzar con la entrada y salida de datos, lo primero que necesitamos hacer es
definir diferentes variables con sus respectivos tipos de datos asociados.
Para introducir la salida de información hay un comando utilizado en este programa
llamado “Escribir”, luego de introducir este comando, van a ir dentro de comillas
(dobles), todo lo que queramos que se muestre en un mensaje dentro de la consola.
Hasta el momento no hemos guardado ningún valor, para poder guardar un valor,
necesitamos crear la entrada de información; hay un comando utilizado en el programa
llamado “Leer”, seguido de la indicación sobre la variable que queremos que use para
guardar la información digitada por el usuario.
“Una vez que el usuario llegue a esta parte, no avanzará hasta que el valor pedido sea
introducido”
Continuando con el programa, tenemos que escribir un mensaje nuevo que muestre el valor
introducido por el usuario como una manera de resultado.
Colocamos el comando de salida de información que indique el mensaje de resultado
mostrando el valor introducido.
El mensaje mostrará el valor introducido, la variable que ha tomado el valor digitado y para
esto hacemos un “Escribir” seguido de un mensaje de resultado escrito entre comillas, una
vez terminado el mensaje, por fuera y seguido por una coma, colocamos la variable.
Entidades Primitivas | Operadores Aritméticos.
¿Qué son los operadores?
Son elementos que relacionan de forma diferente, los valores de una o más variables y
constantes. Es decir, los operadores nos permiten manipular valores.
Vamos a hablar sobre cada uno de los diferentes tipos de operadores:
 Aritméticos.
 Relacionales.
 Lógicos.
Los operadores aritméticos, permiten la realización de operaciones matemáticas con los
valores (variables y constantes)
Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Algunos de los operadores aritméticos son los siguientes:

“Un número elevado a la potencia usando su símbolo, igual que


^ Exponenciación en cada caso de la tabla con cada símbolo”
+ Suma
- Resta “Para sacar el residuo o el resto de una determinada división,
* Multiplicación se utiliza la palabra mod (conocida como modulo)”
/ División Por ejemplo:
mod Residuo o resto
Vamos a ver diferentes expresiones, como se representan en
PSeInt (valor entero o real) y el valor de la expresión.
Expresión Se representa Resultado
3x7 3*7 Entero
“En el lenguaje de programación, la multiplicación se expresa con el asterisco”
Expresión Se representa Resultado
29/7 29/7 Real
“En el lenguaje de programación, la división se expresa con el diagonal”
Expresión Se representa Resultado
7 2
7^2 Entero
“En el lenguaje de programación, el exponencial se expresa con el símbolo de
exponenciación”
Por lo visto, usar los operadores aritméticos solo necesitan de tomar el operador que
necesitamos y lo ponemos en la secuencia correcta.
Para hallar el resultado de estos operadores dentro de una ecuación larga/extensa, entramos
de lleno a la prioridad de los operadores aritméticos:
- Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados (uno dentro de otro) se evalúan de dentro hacia fuera, el
paréntesis más interno se evalúa primero.
- Dentro de una misma expresión, los operadores se evalúan en el siguiente orden:
o Exponenciación (^)
o Multiplicaciones y divisiones (*, /)
o Sumas y restas (+, -)
Esto va después de los paréntesis; de derecha a izquierda.
Por ejemplo:
Tenemos la siguiente expresión en cualquier lenguaje de programación.

3^3*(10-(2*4))
¿Cómo es que esto se evalúa?

Primero, hay que ver los paréntesis más internos que tenemos (2*4)
3^3*(10-(8))
Nos quedamos con el paréntesis (10-(8))
3^3*(2)
Según la prioridad aritmética, primero hacemos el exponencial 3^3
27*2 = 54
Ahora vamos a practicar lo visto en PSeInt.
Vamos a definir algunos operadores aritméticos, pero primero, vamos a definir una variable
entera.
Luego copiamos la expresión del ejemplo anterior como el valor que va a almacenar la
variable entera.
Lo que hará la maquina será evaluar la ecuación basado en los parámetros anteriores para
dar un resultado, dicho resultado (un solo valor) se va a almacenar en la variable entera que
definimos.
Al ejecutar el código la maquina va a resolver lo más rápido posible la ecuación.
“No solamente existen estas operaciones (resta, suma, potenciación, división,
multiplicación, paréntesis)”
Si nos vamos al sector izquierdo de la interfaz de PSeInt nos aparecerá una pestaña con
todos los operadores y funciones con los que cuenta el programa.

En este caso nosotros introducimos cada uno de los valores a calcular en la ecuación,
cuando lo normal es pedirle al usuario del programa introducir los valores a calcular.
En el mismo programa vamos a añadir otras dos variables de tipo entero, estas variables
van a tomar el valor que le vamos a pedir digitar al usuario.
Para esto, cada una de las variables va a tener que leerse (usando el comando de lectura),
después de un mensaje que le pida al usuario introducir sus valores.
La variable del resultado también va a ser modificada para que haga una suma de los
valores que se introdujeron.

Al ejecutarlo aparece el mensaje al usuario donde el proceso no va a avanzar hasta que el


usuario introduzca un valor numérico.
Más adelante, al terminar de introducir el valor del segundo número, la maquina
automáticamente sumara los datos numéricos y el resultado lo va a almacenar en la
variable resultado mostrará el mensaje final con el resultado de la suma escrita para estos
dos números.
Entidades primitivas | Operadores relacionales.
Para comenzar, vamos a ver conceptos puntuales sobre los operadores relacionales:
- Se utilizan para establecer una relación entre dos valores.
- Compara estos valores entre sí, y esta comparación produce un resultado de
certeza o falsedad (verdadero o falso)
“Como resultado de la comparación, nos va a dar un valor lógico”
- Tienen el mismo nivel de prioridad en su evaluación.
- Tienen menor prioridad que los aritméticos.
Los operadores relacionales (valores lógicos) son los siguientes:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<>, !
Diferente
=
=, == Igual
Lo que vamos a hacer es mezclar dos valores usando cualquiera de estos operadores
(tendremos un resultado lógico)
Para eso nos vamos a PSeInt…
Vamos a definir una variable de tipo lógico en donde se va a almacenar el resultado lógico
de comparar nuestros valores.
“Estos operadores relacionales, cuando se ejecuten, van a dar un resultado de cierto o
falso”
Definimos la variable de tipo lógico llamada resultado como una desigualdad “menor
que” entre dos números (10 < 20) para después dar un mensaje al usuario donde diga que
el resultado es verdadero (en este ejemplo) o falso.

Ahora vamos a colocar un “igual que” entre los mismos valores (10 = 20).
Ahora vamos a colocar un “diferente de” entre los mismos valores (10 <> 20)
Otro operador relacional es el “menor igual a” entre los mismos valores
(10 <= 20)

Por lo visto, nosotros podemos hacer nuestras operaciones utilizando valores del mismo
tipo (como enteros en este ejemplo)
Ahora vamos a definir algunas variables más, de tipo entero.
Tomamos tres variables de tipo entero para compararlas usando los operadores relacionales.
A cada variable definida le vamos a otorgar diferentes valores numéricos; Esto con el fin de
usar estos valores creados para compararlo en una relación lógica.
En este ejemplo se suman los valores (10 + 20 = 30) y obtenemos un resultado verdadero,

y así con muchos otras demostraciones usando estos operadores de diferentes formas.
“Si quieres recordarlos PSeInt puede ayudar mostrando una lista completa de
operadores relacionales”
Estos operadores relacionales se utilizan de forma general al usar condicionales (estos
necesitan de un valor resultante logico, verdadero o falso), pero hasta llegar a ese tema se
abordaran en mayor medida.
Entidades Primitivas | Operadores Lógicos.
¿Qué son los operadores lógicos?
Estos valores se utilizan para establecer relaciones entre valores lógicos (valores tanto
verdaderos como falsos).
Estos valores pueden ser resultado de una expresión relacional.
Veamos algunos tipos de operadores lógicos.
And (conjunción) Y Multiplicación lógica.
Or (disyunción) O Suma lógica.
Negación NO

Operador AND (Y).


Operando1 Operador Operando2 Resultado
Verdadero Y Verdadero Verdadero
Verdadero Y Falso Falso
Falso Y Verdadero Falso
Falso Y Falso Falso
Acá en la tabla de símbolos el operador AND se representa con la letra “Y”.
Para que este operador lógico funcione debe de estar en medio de dos valores lógicos
(verdadero o falso)
El orden es “operando1” + operador “y” + “operando2” = un resultado lógico.
¿Cómo es que funciona este operador AND?
La única forma posible para que el operador AND dé verdadero es que tanto “operador1”
como “operador2” sean verdadero, todos los demás casos son falso.
“Supongamos que el valor verdadero es igual a uno (1), y el falso vale cero (0), el AND es
una multiplicación”
Basados en este ejemplo, la única multiplicación de valor verdadero es aquella donde
ambos valores son del mismo término, cualquier otro caso es falso. “Ambos verdadero
son igual a verdadero”
Operador OR:
Operando1 Operador Operando2 Resultado
Verdadero O Verdadero Verdadero
Verdadero O Falso Verdadero
Falso O Verdadero Verdadero
Falso O Falso Falso
Al contrario de el operador AND, la única manera de obtener un falso con el operador “O”
es obtener ambos valores de los operandos como falso.
Operador Negación:
Operando Resultado
Verdadero Falso
Falso Verdadero
En el operador de negación, si al verdadero lo niegas, obtienes falso; si al falso lo niegas,
obtienes verdadero.

¿Cuál es la prioridad de los operadores lógicos?


Primero se evalúa el NOT.
Después sigue el AND.
Por último sigue el OR.
Por ejemplo:
Para entender el uso correcto de estos operadores vamos a ver lo siguiente:
Tenemos las siguientes variables con sus respectivos valores
a = 10, b = 12, c = 13, d = 10;
También tenemos la siguiente expresión:
((a > b) O (a < c)) Y ((a = c) O (a >= b))
La manera correcta de resolver esta expresión de operadores relacionales y lógicos es
la siguiente:
- Ponernos en los paréntesis más internos (de mayor prioridad)
o En el ejemplo vemos la comparación “a > b”, al leer esto vemos que
tenemos un valor FALSO.
o Vemos “a < c” un valor VERDADERO.
o Vemos “a = c” un valor FALSO.
o Vemos “a >= b” un valor FALSO.
((F) O (V)) Y ((F) O (F))
- Con los valores lógicos que encontramos en cada uno de los paréntesis de tipo
relacional procedemos a leerlos con sus respectivos operadores lógicos.
o Siguiendo el orden de prioridad de los operadores lógicos (en este caso el
primero fue OR) es como seguimos con la expresión, por eso el primer valor
encontrado es entre los valores es VERDADERO.
o El segundo valor resulta ser FALSO.
(V) Y (F)
- Quedando solo dos valores a evaluar con el operador AND, obtenemos el
resultado de la expresión.
o Al evaluar con multiplicación lógica a los valores restantes, nos quedamos
con un valor FALSO.
(F)
“Si nosotros metiéramos la expresión original en código, la maquina nos arrojaría un
valor FALSO.”
Dentro del contexto de los operadores vistos (aritméticos, relacionales y lógicos) en general
a lo largo de los capítulos, se mostrará el nivel de prioridad de cada uno de estos, cual es el
más importante de todos.
Prioridad de los Operadores en General.
1. ().
2. ^
3. *, /, mod, NOT.
4. +, -, AND.
5. >, <, =, >=, <=, <>, OR.
Vamos hacia PSeInt para ver el funcionamiento de estos operadores en
práctica.
Antes de ir de lleno con los operadores vamos a declarar un par de variables de tipo entero.
Y es importante mencionar que, en caso de declarar varias variables de un mismo tipo,
podemos escribirlas todas dentro de la misma línea de código, sin tener que repetir la
línea las mismas veces que se declare.
Esto se hace escribiendo la variable seguida de una coma que va a indicar la añadidura de
una variable del mismo tipo; el tipo de variable se escribe en plural.
También vamos a declarar una variable de resultado, de tipo lógico.
Le añadimos su respectivo valor numérico a las variables enteras y a la variable de
resultado le vamos a hacer una expresión de operadores relacionales y lógicos:
((a < b) Y (b < c)) (operador AND)
Al hacer la resolución por nuestra cuenta obtenemos que el valor final del resultado lógico
es VERDADERO.

Vamos a usar ahora al operador lógico OR con otra expresión lógica.


((a > b) O (b < c)).

Al resolver esta expresión obtenemos un resultado VERDADERO.


Ahora, sí le ponemos un NO (ósea un operador lógico de NEGACIÓN) a la línea de código
de resultado, antes de escribir la expresión que nos da el resultado VERDADERO,
obtendremos un resultado FALSO.

Estos operadores lógicos podemos encontrarlos en la misma sección de los operadores

aritméticos, lógicos y relacionales en PSeInt.

Entidades Primitivas | Funciones Internas.


¿Qué son las funciones internas?
Son funciones matemáticas (también trigonométricas) diferentes de las operaciones
básicas, pero que se incorporan al lenguaje y que se consideran estándar (son parte del
lenguaje). Dependen del lenguaje. Normalmente se encuentran en la librería de
matemáticas del lenguaje de programación.
Estas funciones nos ayudan a determinar valores como la raíz cuadrada, el logaritmo
neperiano, el seno o coseno de un determinado valor.
Vamos a practicar a PSeInt con estas funciones.
Definamos dos variables de tipo real (números negativos, con decimales).
Con un mensaje le vamos a indicar al usuario que digite un número “num” para
posteriormente leer su valor almacenado en una variable.
A la variable del resultado le introduciremos una ecuación donde vamos a usar una función
interna.
“Podemos acceder rápidamente a estas funciones en la misma pestaña donde aparecen los
operadores”

Veamos el uso de cada una de las funciones:


- Abs, calcula el valor absoluto de x.
Lo que hace es hallar el valor absoluto de nuestra variable (el valor absoluto es la
parte positiva de un número)
“Solamente lo copiamos y dentro del paréntesis, va el valor de x, ahí ponemos la
variable “num””
Cuando lo ejecutamos, nos pide un número que luego mostrará con su valor absoluto.
- Trunc, devuelve la parte entera de x.
Si ponemos tal función, con la variable como x, al momento de digitar nuestro número
decimal la maquina nos arrojará solamente la parte entera del valor original.
- Redon, redondea x al entero más cercano.
Si ponemos tal función y la ejecutamos, al introducir un valor decimal, la maquina va a
guardar el valor del número, pero solamente el entero más cercano.
Más adelante sigue una función muy importante en este curso, que es la raíz cuadrada.
- Raíz, calcula la raíz cuadrada de x.
Al colocar esta función, va a almacenar dentro de la variable que tome el lugar de x
el valor de su raíz cuadrada.

- Sen, calcula el seno del ángulo x (el ángulo debe estar escrito en radianes)
- Cos, calcula el coseno del ángulo x (en radianes)
- Tan, calcula la tangente del ángulo x (en radianes)
- Asen, calcula el arco seno del ángulo x (en radianes)
- Acos, calcula el arco coseno del ángulo x (en radianes)
- Atan, calcula el arco tangente del ángulo x (en radianes)

- Ln, calcula el logaritmo natural (base e) de x.


Aquí tenemos lo que es el logaritmo neperiano o natural.
Lo que hace es calcular el valor (siempre en base e) de un valor x.
- Exp, calcula la función exponencial e^X.
Al momento de ejecutarlo, el valor que introduzcamos va a elevar al exponencial.
“No confundir esta función con la operación de elevación a n número, para eso se
escribe la variable donde se almacenará el valor elevado con el signo ^”
- Azar, retorna un número aleatorio entre 0 y N-1.
Lo que hace esta función es arrojar un valor aleatorio entre cero y el número que
escogimos menos uno
Al momento de ejecutar esta función nos dará un valor aleatorio dentro de sus
parámetros respecto al valor proporcionado por el usuario.

Y hasta aquí llegamos con las funciones internas.


Entidades Primitivas | Ejercicios.
Vamos a ver tres ejercicios en PSeInt que van a servir como práctica.
Primer ejercicio:
Escribir la siguiente expresión en forma de expresión algorítmica.

Necesitamos crear un programa que pueda resolver este tipo de


operaciones…
- Para esto necesitamos analizar la operación que tenemos que realizar.
- Dentro de la ecuación hay algunos valores que no funcionan como datos constantes
(a, b, c son variables)
- Para obtener el valor dentro de las constantes, tenemos que pedirle al usuario que
ingrese estos valores por medio de un mensaje de entrada y salida de datos.
- Con los valores de las constantes listos, ya podemos efectuar la ecuación del
ejercicio.
- Necesitamos asignarle la operación de la ecuación a la variable de resultado.
Para esto vamos a escribir linealmente la ecuación usando las funciones aritméticas.
- Con la ecuación lista, ahora mostramos un mensaje final al usuario con el resultado
de la ecuación.
Segundo ejercicio:
Determinar la solución lógica de la siguiente operación:

((3 + 5 * 8) < 3 y ((-6 / 3) * 4) + 2 < 2)) o (a > b)

Acá en el ejercicio están los tres tipos de operadores que hemos visto (aritméticos,
relacionales y los lógicos):
- Vamos a tener que copiar toda esta expresión en forma algorítmica, además, el
usuario tiene que introducir dos datos (a, b son variables)
- Empezamos definiendo las variables del usuario como reales y la variable del
resultado como lógico.
- Escribimos los mensajes que el programa tendrá que pedir para que el usuario
introduzca sus valores.
- Ahora vamos a asignarle a la variable de resultado la ecuación (escrita de forma
lineal) del problema usando los operadores que piden.
- Escribimos el último mensaje para que el programa le muestre al usuario el
resultado final de la ecuación como una respuesta lógica (verdadera o falsa).

Vamos a analizar sí realmente la


maquina escribió un resultado correcto.
- Las primeras operaciones por realizar son las que están en paréntesis, haciendo esto
podemos obtener los siguientes resultados.
((43) < 3 y ((-8) + 2 < 2) o (a > b) → (F) y (V) o (a > b)
- Como sabemos que el operador lógico AND es una multiplicación nos quedamos
así:
(F) o (a > b)
- El operador OR es una suma (la única forma de obtener un resultado FALSO aquí
es obteniendo un valor también FALSO de las variables) por lo que el resultado
final depende de los valores del usuario.
Tercer ejercicio:
Hacer un programa para intercambiar el valor de 2 variables.
Por ejemplo:
A=10 → a=5
b=5 → b=10
- Lo primero que tenemos que hacer es definir las variables (como queramos)
- En mensaje le pedimos al usuario que introduzca los respectivos valores a
intercambiar.
Analicemos el problema gráficamente para entender la forma de funcionar del
programa al momento de intercambiar sus variables.
Por ejemplo.
El usuario digita como valor de la variable a un cinco.
Y para la variable b un diez.
Al final, el resultado del programa debe de cambiar el valor de esas variables.
No podemos intercambiar estos valores directamente porque finalmente se perderían estos
valores.
Por esto crearemos una tercera variable (c), lo que hará esta variable será guardar el valor
de la primera variable a.
“c = a”
Ahora con la variable de a con un valor guardado, el valor de b va a pasar a ser el valor de
a
“a = b”
Ya tenemos el valor de la variable a con el valor de b, entonces el único valor que falta es el
valor que tiene la variable c para la variable b.
“b = c”
“Este mismo algoritmo puede servir para
cualquier tipo de dato”
Representación de Algoritmos | Diagrama de Flujo.
Este capítulo trata sobre la representación de algoritmos, en qué manera podemos
representar los algoritmos que ya tenemos, para la solución de un problema.
Comenzando por el diagrama de flujo.
¿Qué es un diagrama de flujo?
Un diagrama de flujo es la representación gráfica de un algoritmo.
También se puede decir que es la representación detallada en forma grafica de como deben
realizarse los pasos en la computadora para producir resultados.
“Solamente vamos a utilizar una serie de símbolos que indiquen acción por acción la
manera de llegar a una solución”
Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos
en la computadora), se relacionan entre si mediante líneas que indican el orden en que se
deben ejecutar los procesos.
“Hay un símbolo para la entrada, salida, asignación de variables, para cada acción que
necesitemos”
Veamos como hacer diagramas de flujo utilizando PSeInt.
Hasta este punto hemos visto solamente como es que podemos hacer pseudocódigo usando
este programa, pero ¿Cómo es que podemos hacer un diagrama de flujo?
- Si nos vamos a la esquina del programa en la pestaña “Archivo” nos aparece la
opción “Editar diagrama de flujo”, ahí es donde nos aparecerá un diagrama de flujo
en su forma más simple.

- Pongámosle nombre al proceso seleccionando la entrada.


- Ahora dentro de esta ventana del lado derecho están las opciones y comandos para
el diagrama de flujo.
“Vamos a ver los símbolos con los que podemos indicar las acciones hasta donde hemos
visto”
La primera opción que dice “bla, bla…” sirve para poder representar los comentarios
dentro de la interfaz de diagrama de flujo; solamente lo arrastramos al diagrama y
escribimos. Hemos visto que podemos escribir comentarios dentro del programa,
comentarios que no afectan a la realización del programa a la hora de ejecutarlo.
La segunda opción, es un rectángulo que nos sirve para bastantes cosas:
- Podemos definir con él las variables que queramos.
- Podemos inicializar o asignar un valor a las variables (usando las flechas).
La tercera opción (salida) que dice “Hola” junto con la cuarta (entrada) que dice
“Dato1”, ambos paralelogramos, nos sirven para poder mostrar mensajes en el programa
(la salida de datos) y para leer los datos.
- Con la salida de datos tenemos la flecha hacia fuera, podemos escribir el mensaje
dentro de comillas.
- Con la entrada de datos tenemos la flecha hacia dentro, podemos leer el valor que
ingreso el usuario guardado en la variable respectiva.

“Este es el diagrama de flujo usando los símbolos


que hemos visto hasta ahora”
Representación de Algoritmos | Diagrama Estructurado N-S.
¿Qué es el diagrama estructurado N-S?
El diagrama estructurado N-S también conocido como diagrama de chapín es como un
diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Un
algoritmo se representa en la siguiente forma:

Iremos a PSeInt para hacer uno de estos diagramas.


Abriendo el programa, nos vamos a la opción “configurar” seleccionando la
opción “Utilizar diagramas Nassi-Shneiderman” para proceder a realizar el
diagrama de flujo como en el anterior ejemplo.
Al igual que en el diagrama de flujo, en el borde derecho de la ventana nos
salen otros símbolos.
La primera opción que dice “//bla…” sirve para mostrar un mensaje al
usuario dentro del programa y dentro del mismo diagrama N-S.
La segunda opción sirve para definir y asignarle valores a las variables.
“Para poder ver el texto completo dentro de cada recuadro del diagrama de
flujo podemos seleccionar la opción en la parte superior “tx…” para que
muestre todo el texto, en lugar de recortarlo”
La tercera opción que dice “Escribir” sirve para la salida de información (mostrar un
mensaje al usuario)
La cuarta opción que dice “Leer” sirve para la lectura de los datos que le pedimos al
usuario por medio del mensaje de salida.

“Dentro de las opciones dentro del


programa podemos convertir el tipo
de diagrama según sea conveniente”

Representación de Algoritmos |
Pseudocódigos.
¿Qué es un pseudocódigo?
Mezcla de lenguaje de programación y español que se emplea dentro de la programación
estructurada para realizar el diseño de un programa.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar
solución a un problema determinado. El pseudocódigo utiliza palabras que indican el
proceso a realizar.
Vamos a PSeInt para continuar con el tema.
Vamos a hacer un programa sencillo como los anteriores programas.
Lo que podemos notar mientras hacemos este programa es que la manera de escribirse es
muy clara, por lo que, al momento de querer pasar este pseudocódigo a un lenguaje de
programación real, podemos hacerlo sin problemas por la forma de entender el primer
código.
Para poder cambiar este pseudocódigo a un diagrama de flujo nos vamos a las opciones de
PSeInt para escoger las tres formas de representación (pseudocódigo, diagrama n-s,
diagrama de flujo)
Pero también podemos exportar nuestro programa de PSeInt a lenguajes de programación
más avanzados, convirtiéndolos.
Secuenciales | Concepto de Estructuras Secuenciales y Ejemplo 1
Para comenzar con este nuevo tema, vamos a hablar del concepto de estructuras
secuenciales.
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las
tareas suceden de tal modo que la salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la
siguiente forma:

“El inicio, seguido de la acción 1, seguido de la acción 2, seguido de la


acción 3, en cadena hasta llegar a la salida”
Vamos a poner el primer ejercicio en PSeInt.
Ejercicio 1 (pseudocódigo):
Calcular la cantidad de segundos que están incluidos en el número de horas, minutos y
segundos ingresados por el usuario.
Al leer el problema podemos ver que los datos que nos piden del usuario son tres (horas,
minutos, segundos) y el resultado solo va a ser uno (en forma de segundos)
Con esto en mente, vamos a comenzar a escribir el pseudocódigo.
- Para poder tener el resultado con el número de segundos, vamos a tener que definir
los datos que le vamos a pedir al usuario (horas, minutos y segundos).
- Vamos a pedirle al usuario que introduzca tales valores por medio de mensajes de
salida.
- Debemos hacer un cambio de cada tipo dato introducido a segundos.
Para esto creamos dos variables independientes de las anteriores para que sirvan como
respaldo de los datos a cambiar.
- Vamos a hacer las respectivas conversiones de horas y minutos a segundos a través
de asignaciones a las variables nuevas.
- El resultado va a ser igual a la suma de las conversiones junto con los segundos
totales introducidos por el usuario.
Ejercicio 2 (diagrama de flujo):
Hacer un programa para ingresar el radio de un círculo y se reporte su área y la longitud de
la circunferencia.

“Para este ejercicio vamos a usar el diagrama de flujo dentro del programa”
- Primero vamos a definir las variables de los datos que queremos obtener (radio,
circunferencia y área)
- Mandamos al usuario el mensaje de salida para que introduzca su respectivo valor
del radio (este valor va a ser constante durante todas las operaciones)
- Vamos a asignarle tanto a la variable del área como la circunferencia su respectiva
ecuación aritmética para resolver el problema que se le pide.
- Por último, mostramos un mensaje para el usuario donde se muestre el resultado
(podemos realizar la operación por separado del programa para corroborar
cualquier error en la salida)
Cuando cerramos el editor de diagramas de flujo dentro de la aplicación de PSeInt las
líneas de código, ya creadas, se van a mostrar en forma del pseudocódigo.
Ejercicio 3 (diagrama n-s):
Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un
grupo de estudiantes.
- Definimos las variables de los datos que vamos a necesitar con datos de tipo reales,
puesto que a veces nos van a salir datos decimales.
- Debemos pedirle al usuario el total de hombres y el total de mujeres.
- Con estos datos que nos dará el usuario vamos a realizar la ecuación para calcular el
promedio de cada hombre y mujer.
Dentro de la ecuación del promedio necesitaremos los datos de la suma de ambos
valores.
“El porcentaje de hombres va a ser igual al total de hombres entre el total de
alumnos por cien”
Podemos seguir escribiendo salida de texto dentro de una misma línea de
pseudocódigo usando una coma para delimitar cualquier dato que no sea para salida
de mensajes.
Ejercicio 4 (pseudocódigo):
Un profesor prepara tres cuestionarios para una evaluación final: A, B y C. Se sabe que se
tarda 5 minutos en revisar el cuestionario A, 8 en revisar el cuestionario B y 6 en el C. La
cantidad de exámenes de cada tipo se entran por teclado. ¿Cuántas horas y cuantos minutos
se tardará en revisar todas las evaluaciones?
- Definimos las variables que indiquen la cantidad de cuestionarios respectivos.
- Le pedimos al usuario que mande sus datos con un mensaje de salida.
- Vamos a usar la misma cantidad de variables nuevas para hacer las operaciones que
toman cada uno de los tipos de cuestionarios.
Necesitamos saber la cantidad de tiempo (dividida entre horas y minutos) del total de
cuestionarios introducidos por el usuario.
- Para obtener una ecuación donde su resultado sea igual al de los minutos y horas
de manera automática, vamos a tener que dividir el número total de tiempo que
toma calificar las pruebas entre 60 (minutos en una hora), de esta manera
separamos las horas.
Al momento de ejecutar el programa, nos va a aventar un error de tipo de variables (la
división da un resultado real cuando tenemos un tipo entero).
Para eliminar este problema vamos a usar la función matemática trunc (para obtener
solo el valor entero de cualquier ecuación)
- Para obtener el valor de los minutos vamos a usar el
operador matemático MOD (da como resultado de
estar entre dos valores, el valor del residuo) entre el
total y 60, esto nos va a dar el residuo de todo
aquello que no sea una hora, ósea los minutos.
- Por último, colocamos un mensaje que le muestre al usuario el total de horas y
minutos en evaluar las pruebas.
Ejercicio 5 (diagrama n-s):
Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea sabe
cuánto deberá pagar finalmente por su compra.
- Primero definimos las variables, que en este caso son:
o El precio del producto sin el descuento
o El descuento en solitario
o El precio final del producto con el descuento.
- Le mandamos un mensaje de salida al usuario pidiéndole ingresar el precio del
producto.
- Vamos a introducir una ecuación que aplique el descuento del 15%, para esto
ponemos una variable que almacene el precio del descuento por separado
(multiplicando el valor del precio por .15%)
- En otra variable vamos a guardar el resultado de sumarle este descuento al producto
original.
- Finalmente colocamos un mensaje que le muestre al usuario el valor del producto
que introdujo con el descuento aplicado.
Ejercicio 6 (diagrama n-s):
Un alumno desea saber cuál será su calificación final en la materia de algoritmos. Dicha
calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
- Vamos a comenzar definiendo las variables que necesitará el programa para realizar
las tareas que se pidan.
Las variables van a ser las tres calificaciones parciales, la calificación del examen final, la
calificación del trabajo final y la calificación total final; Como son valores de calificación,
las definimos como valores reales.
- Con mensajes de salida le pedimos al usuario ingresar cada una de las calificaciones
que obtuvo.
“Podemos ingresar más de una variable al cuadro de lectura para que el usuario pueda
introducir más de una variable por mensaje”
- Para calcular la calificación de los parciales vamos a tener que sacar un promedio de
los tres valores y a ese promedio lo vamos a multiplicar por el porcentaje de
valor total que nos dieron.
En este caso, el valor máximo total que puede sacar un estudiante es 10, basados en este
valor observamos que la forma de demostrar que cualquier valor dentro de este rango va a
dar un total máximo de 55% que en escala del 0 al 10 es 5.5, se multiplicará por la 55 parte
de un 100% ósea 0.55.
- El valor del examen final se obtiene de multiplicar la calificación obtenida dentro
del rango de calificaciones por el porcentaje que vale dentro de la evaluación total,
ósea 30/100 o 0.30.
- Hacemos lo mismo con el valor del trabajo final, ósea 15/100 o 0.15.
“Cada una de las operaciones se van a realizar dentro de una variable diferente”
- Por último, dentro de una ecuación,
vamos a sumar el total de valores
almacenados en las respectivas
variables de estas
calificaciones para dar
una calificación final.
Condicionales | Concepto de Condicionales.
Para empezar, vamos a definir el concepto de Estructuras Condicionales:
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en
base a esta comparación se siga un curso de acción dentro del programa.
Será una comparación por realizar en el programa, donde se va a comparar una variable
con uno o más valores, esta comparación nos va a arrojar un valor cierto (ejecución A) o
falso (ejecución B).
Existen 3 tipos: Simples, dobles y múltiples.
Con los condicionales simples se va a evaluar una condición, si esta condición resulta
falsa, el programa no ejecutará tal acción; si la condición es cierta, el programa va a
poder ejecutar la acción.
Su sintaxis (en pseudocódigo, diagrama de flujo y n-s) es la siguiente:

“Si la condición (valor lógico) es cierta, se ejecutarán ciertas acciones; si es falsa, no se


ejecutará nada”
Si <condición> entonces Con los condicionales dobles también se va a evaluar
Acción (es) una condición; si una condición es falsa se va a
FinSi ejecutar una acción y si la condición es verdadera,

también se va a ejecutar una acción diferente.


Su sintaxis es la siguiente:

Si <condición> entonces
Acción (es) 1
SiNo
Acción (es) 2
FinSi
Con los condicionales múltiples vamos a evaluar una condición, y esa condición puede
tener diferentes valores con los cuales podríamos compararla.
Su sintaxis es la siguiente:
“Ahora usamos la palabra según y según sea la
Según <condición> Hacer condición, hacemos que se cumpla la respectiva acción
Opción 1: designada”
Acción (es) 1
Opción 2:
Acción (es) 2
Opción N:
Acción (es) N
De otro modo:
Acciones
FinSegún
Por ejemplo:
Tenemos una condición de números, cada número indica el número de acción que se va a
realizar.
“Si coloco un uno, se realizará la acción 1; si coloco un dos, se realizará la acción 2, etc.”
En la sintaxis le ponemos la condición, esta condición va a tener muchas opciones en las
cuales se van a comparar las condiciones en orden de cumplir con la opción
correspondiente para realizar sus acciones.
Es importante mencionar que a diferencia de los anteriores ejemplos de pseudocódigo
(secuenciales) donde el código entero se ejecutaba de inicio a fin; ahora con estos

condicionales el código es capaz de saltarse líneas de código y ejecutar solo algunas de


estas dependiendo de las opciones que usemos.
Ejercicio 1 (pseudocódigo):
Ingrese un número entero y reportar si es par o impar.
- Definimos las variables que vamos a utilizar para que el usuario se entere si su
número es par o impar.
- Este es un caso de condicional, por lo que, basado en los tipos de condicionales que
vimos, vamos a elegir el adecuado para el ejemplo.
El condicional doble es el que necesitamos, puesto que tenemos que obtener dos
salidas en función del valor que se introduzca.
- La condición que tiene que cumplirse es la que divida en dos grupos a los valores
que entren.
Todo número que sea dividido entre dos y su residuo (MOD) sea igual a 0, es un
número par. De esta manera le indicamos al programa que todo valor que no cumpla
con esa condición (residuo mayor a cero) va a ser un número impar.
- Hacemos la ecuación que realizará el ejercicio indicando cómo funcionará la
condición.
Al ser una condición doble vamos a tener que marcar Si y SiNo.
- En cada condición cumplida mostramos un mensaje que le muestre al usuario su
resultado.
Ejercicio 2 (diagrama de flujo):
Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobará si su
promedio de tres calificaciones es mayor o igual a 70; reprueba caso contrario.
- Leyendo el problema observamos que lo que pide son tres calificaciones, por lo
tanto, definimos tres variables donde se va a guardar el valor de cada calificación.
- Haremos una cuarta variable donde se almacene la ecuación para calcular el
promedio de las calificaciones y obtener un solo valor de ahí.
- En este caso necesitamos un condicional doble que nos permita dividir en dos
grupos el resultado de reprobado o aprobado.
La condición por cumplir es llegar al valor mínimo de 70 o más arriba, por lo tanto, con
un operador relacional ≥. Este operador debe estar indicado de manera que cualquier
valor introducido debe ser mayor o igual a 70 para ser aprobado; o caso contrario,
(valor menor a 70) terminar siendo reprobado.
- En cada caso hay que mostrar un mensaje que diga si el usuario fue aprobado o
reprobado en función del promedio de sus calificaciones.
Ejercicio 3:
En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $100
¿Cuál será la cantidad que pagará una persona por su compra?
- Seleccionamos el editor de diagramas n-s para con el ejercicio.
- Definimos las variables que necesitamos para hacer el descuento, todas van a ser de
tipo reales.
- Mandamos el mensaje para que el usuario digite el valor de su compra total.
- Con el valor de la compra vamos a hacer la condición para continuar con el
descuento y finalizar la compra.
El valor final de la compra, introducido por el usuario, tiene que cumplir con la
condición de ser mayor a 100 para cumplir con el descuento anunciado.
- En caso de que la condición se cumpla, vamos a realizar la ecuación con un par de
variables más (una para guardar el valor del descuento y otra para la cantidad
final de la compra descontada)
- Después de la ecuación vamos a mostrar un mensaje que le diga al usuario el valor
final de su compra con el descuento.
- En caso de que la condición no se cumpla, vamos a cambiar a la ecuación para que
el valor del descuento no exista (igual a 0)
- Al terminar el condicional, le va a seguir un mensaje al usuario que indique el valor
final de su compra.
Ejercicio 4 (pseudocódigo):
Leer 2 números. Si son iguales, que los multiplique; si el primero es mayor, que los reste, y
si no, que los sume.
“En este programa vamos a hacer uso de los condicionales anidados (no son más que un
condicional dentro de otro)”
- Primero vamos a definir las variables para los valores que va a introducir el usuario
(para cubrir más números usamos el tipo real)
- Le pedimos al usuario introducir los valores por medio de un mensaje de salida.
- Abrimos los condicionales necesarios para llevar a cabo cualquier acción que pueda
ocurrir en el problema planteado.
Aquí es donde viene de por medio el uso de los condicionales anidados.
“Si uno se cumple, se termina. Si no se cumple, se sigue a la siguiente condición, hasta
acabar con las condiciones; o hasta cumplir la condición”
- Por medio de una tercera variable vamos a guardar el resultado de cada caso
diferente donde los respectivos condicionales se cumplan.
- Hacemos cada ecuación basados en el resultado que obtengamos de los valores
introducidos por el usuario.
Algo que me pasó con el programa fue que cada uno de los posibles resultados los guarde
con una diferente variable (una para la suma, otra para la resta y otra para la
multiplicación). Esto funciona en programas secuenciales, aquí, con los programas
condicionales tenemos diferentes casos con variables que pueden guardar valores en la
misma variable. La variable usada puede servir para obtener un único resultado basado en
diferentes casos, de los cuales, solo uno va a ser verdadero.
Ejercicio 5 (diagrama de flujo):
Leer tres números diferentes e imprimir el número mayor de los tres.
- Primero definimos las variables enteras que vamos a necesitar del usuario.
- Con un mensaje de salida y lectura obtenemos los datos que va a introducir el
usuario.
- Vamos a abrir el condicional y vamos a usar los operadores relacionales y lógicos
para comparar los valores en cualquier orden que se presenten.
En este paso vamos a definir el condicional para ser verdadero en el momento cuando el
primer número es el mayor.
(el uso de los operadores relacionales es para indicar que el primer número es mayor a

a>b Y a>c
los otros dos números, el operador lógico es para poder relacionar ambos de estos casos.
Y sabemos que es el uso de este operador multiplicativo da como resultado verdadero
cuando ambos casos son ciertos)
- Caso contrario (falso), vamos a marcar un segundo condicional para indicar que el
segundo número digitado es el mayor con una comparación igual a la anterior, con
el segundo número como mayor.
- Del lado contrario (falso) a esta condición, vamos a indicar como default el último
caso, donde el ultimo valor introducido es el mayor
- Al momento de obtener el valor real de la expresión que obtenemos, colocamos un
mensaje con el mayor número introducido en cualquier orden por el usuario.
En este ejercicio se usaron los operadores lógicos, por lo que, si uno no tiene una
familiarización con estos operadores, es muy probable que se confunda con la forma de
llegar al resultado.
Ejercicio 6 (diagrama n-s):
Una frutería ofrece las manzanas con descuento según la siguiente tabla:
Número de kilos comprados % Descuento
0–2 0%
2.01 – 5 10%
5.01 – 10 15%
10.01 en adelante 20%
Determinar cuánto pagará una persona que compre manzanas en esa frutería.
Voy a escribir las dos formas que encontré para resolver este problema.
CASO I:
- Empezamos con la definición de las variables que necesitamos del usuario (la
cantidad de kilos comprados y el precio por kilo)
- Definimos las variables que necesitamos para las ecuaciones respectivas (el
descuento, el total de dinero a pagar y el precio final descontado)
- Le pedimos los datos al usuario (datos de entrada y salida)
- Abrimos un condicional doble que inicie con el máximo valor indicado de kilos
en adelante (>10)
En cada caso cumplido de condicional, vamos a fijar la ecuación con el respectivo
descuento
- Vamos bajando de cantidad requerida de kilos hasta llegar a la mínima de más de
dos kilos mínimos (>2)
- Al terminar el ultimo condicional vamos a poner la ecuación del descuento aplicado
al precio del cliente.
- Finalmente colocamos un mensaje al usuario donde se muestre el total de su compra
(con o sin descuento)
CASO II:
- En este caso lo único que cambia es el condicional (esta más parametrizado en
función de la aplicación de los descuentos)
La parametrización que usamos se basa en el uso del operador lógico AND que ayuda a
marcar más de una condición a cumplir dentro de un mismo condicional y varios
operadores relacionales para delimitar los valores dentro de sus bordes.
- Fuera de todo lo demás visto en el caso i, la única diferencia es la forma de
delimitar cada uno de los descuentos.
Este caso me parece mejor que el anterior, pues la delimitación facilita más la forma de
representar las condiciones especificas sin importar el orden de los condicionales.
Ejercicio 7 (pseudocódigo):
Elaborar un programa que me muestre los días de las semanas cuando ingrese los siete
primeros números.
Lunes 1
Martes 2
Miércoles 3
Jueves 4
Viernes 5
Sábado 6
Domingo 7
“En este ejercicio vamos a ver condicionales múltiples”
Otra indicación importante es tener que mostrar un mensaje al usuario cuando digite un
valor fuera de los definidos en el ejercicio que diga algo como “ese día no existe”
Podemos usar condicionales simples o dobles en el ejercicio, pero vamos a usar los otros
como introducción a los condicionales múltiples.
- Comenzamos definiendo la variable de tipo entero para los días de la semana.
- Con un mensaje le pedimos al usuario que ingrese los datos que necesitamos y los
guardamos en la variable.
- Abrimos un condicional múltiple con la variable del usuario va a ser la base de las
acciones a realizar.
La parte importante del ejercicio es esta donde usamos el condicional múltiple iniciando
con la palabra “Según (la variable, la acción) Hacer”
El número de opciones posibles para nuestro programa, de manera general, es hasta donde
lo necesitemos. En este caso vamos a indicar los siete días de la semana.
La manera correcta para indicar cada una de las acciones es introduciendo los valores
directos como una acción a tomar.
“1: *Hacer algo*”
Después de indicar cada una de las acciones especificas que se pueden tomar para
diferentes resultados, ponemos la opción de salida del condicional múltiple, “De Otro
Modo:” y colocamos la acción que se aplique de forma genérica con cualquier otro posible
resultado, en este ejemplo puse un mensaje de salida que le indica al usuario que su dato
ingresado sale de los parámetros.
Ejercicio 8 (diagrama de flujo):
Elaborar un programa que me muestre el significado de aniversario de cada década hasta
los 60.
Bodas de Hojalata 10 años
Bodas de Porcelana 20 años
Bodas de Perlas 30 años
Bodas de Rubí 40 años
Bodas de Oro 50 años
Bodas de Diamante 60 años

- Definimos la variable principal del programa con la que vamos a manipular el


condicional múltiple.
- Le pedimos al usuario mediante mensajes de salida/entrada que nos entregue un
valor numérico válido para leerlo y usarlo.
- Abrimos el condicional múltiple y ponemos la variable del usuario para después
introducir cada acción a realizar basados en el respectivo valor de las décadas.
- Solamente un mensaje de salida con el significado de la década.
- En “De Otro Modo:” colocamos un mensaje con un mensaje genérico para indicar
que se introdujo un valor invalido.
Ejercicio 9 (diagrama n-s):
Hacer un programa que tenga un menú con las siguientes opciones:
Opción 1: Elevar un número a una potencia x.
Opción 2: Sacar la raíz cuadrada de un número.
Opción 3: Salir.
“Es la primera vez que vamos a hacer un menú de opciones”
- Abrimos el editor de diagramas n-s y comenzamos definiendo la variable que va a
manipular al condicional múltiple.
- Con mensajes de salida vamos a mostrarle al usuario el menú de opciones con cada
una de las acciones que se van a realizar.
- Le pedimos al usuario que introduzca la opción que desee y leemos la variable con
el valor del usuario.
Con esta variable vamos a manipular al condicional múltiple que abriremos.
- Colocamos el condicional y cada una de las opciones basadas en el valor que eligió
el usuario (son tres casos que vamos a abrir)
En el primer caso vamos a elevar algún número a una potencia x. Para esto vamos a
hacer todo el proceso de esta acción en caso de que el usuario elija la opción 1.
- Para el primer caso vamos a definir las variables para leer los valores del usuario y
otras variables para las ecuaciones que se van a realizar.
(la ecuación tiene como valores el número y la potencia que el usuario escogió)
- Después de guardar el valor de la ecuación en una variable para el resultado, vamos
a escribir un mensaje de salida con el resultado del usuario.
En el segundo caso vamos a calcular la raíz cuadrada de x número. Para esto vamos a
hacer otro proceso en la zona de la opción 2.
- Le pedimos al usuario que ingrese el número que quiera para calcular su raíz
cuadrada.
- Con la función matemática raíz vamos a hacer la ecuación para obtener un
resultado y guardarlo en la variable del total.
En el tercer caso vamos a salir del programa. Para esto vamos al proceso de la zona de
la opción 3.
- Podemos no hacer nada o mandamos un mensaje de despedida al usuario
(opcional).
- Por último, vamos a mandar un mensaje de salida en la zona de “De Otro Modo”
para indicarle al usuario que escoja un valor válido para menú de opciones.
Ciclos | Ciclos con un número determinado de interacciones.
Comenzamos con el concepto de estructuras repetitivas.
Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario
utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de
veces. Esta cantidad puede ser fija (previamente determinada por el programador).
Por ejemplo:
Tenemos que escribir 100 veces un determinado mensaje.
Hasta el momento, la manera de hacer esto es escribiendo individualmente el mismo
mensaje una y otra vez hasta llegar al valor que pedimos. Algo que es muy lento.
Es aquí donde venimos a usar las estructuras repetitivas, con ellas, ese mensaje lo
meteríamos dentro de un ciclo y bastaría con que le pidamos al ciclo ejecutar 100 veces
este mensaje para que el programa pueda hacer esto.
Los ciclos se clasifican en:
- Ciclos con un número determinado de iteraciones.
- Ciclos con un número indeterminado de iteraciones.
“No son más que un bloque de código que se va a tener que repetir cumpliendo ciertas
condiciones”
Como dijimos anteriormente, existen estos dos tipos de estructuras repetitivas, veamos
cada caso:
Los ciclos con un número determinado de interacciones son aquellos en que el número de
iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura (su sintaxis)
es la siguiente:
“Sabemos por adelantado que este tipo de estructura repetitiva tiene un número
determinado de ciclos”
- Comenzamos con el ciclo “Para”, seguido de una variable numérica y a esta le

Para variable_numerica ← valor_inicial Hasta valor_final


ConPaso paso Hacer secuencia_de_acciones
FinPara

vamos a asignar un valor inicial (con este valor comenzaremos el ciclo)


- Al terminar de indicar el valor inicial adjunto a la variable numérica, vamos a
colocar un “Hasta”, seguido de un valor numérico, este se va a encargar de indicar
el valor limite de veces que se va a repetir nuestro ciclo.
- Seguimos con un “Con Paso”, para indicar el patron (con un valor numérico) de
saltos que se van a realizar entre los parámetros anteriormente introducidos.
- Después de indicar los saltos entre nuestro parámetro indicado, vamos a colocar la
parte principal de toda esta configuración. Con un “Hacer” seguido de la secuencia
de acciones a realizar el número n de veces que indicamos en los anteriores
operadores.
Vamos a realizar un ejemplo en PSeInt.
En un programa vamos a escribir los números del 1 al 10.
- Definimos una variable, esta variable va a ser un iterador, el valor de este varia
dependiendo del ciclo que necesitemos y sus características.
- Ahora abrimos nuestra estructura repetitiva determinada, comenzando como se
indicó en la definición anterior. Lo colocamos de la siguiente forma:
Para i ← 1 Hasta 10 Con Paso 1 Hacer
FinPara
- La acción por realizar en este ciclo va a ser escribir la variable i hasta terminar con
el valor que indicamos.
Escribir i;
Lo que hará el programa será repetir la acción indicada todas las veces necesarias hasta
llegar al determinado limite que le indicamos (en este caso, se hará desde el 1 hasta el 10,
de uno en uno)
“Un iterador tiene operaciones principales: referenciar un elemento particular en una
colección (elemento de acceso), y modificarse a si mismo para que apunte al siguiente
elemento”
Las otras formas de representación de estos ciclos pueden verse al momento de editar un

diagrama de flujo o diagrama n-s.


El orden de representación en el circulo del diagrama de flujo es:
- Arriba va la variable que funciona como iterador (es una variable numérica)
- El primer lado a la izquierda es el número con el que empieza el ciclo determinado.
- El segundo lado a la izquierda es el número de saltos que tendrá que dar en el
programa a lo largo de su parámetro.
- El tercer lado a la izquierda es el número final de veces que se realizará la acción en
el ciclo (el valor se cuenta dentro de su conjunto)
- Al lado del círculo irá la determinada acción que hará la variable iterador.
La representación del diagrama n-s es la siguiente.
- La manera de escribirlo es parecida a la sintaxis del pseudocódigo, la única
diferencia está en la indicación de la variable, para esta necesitamos aclarar que

Para la variable que escogimos le corresponde toda la siguiente parametrización.


Ciclos con un número indeterminado de iteraciones:
“Desconocemos cuantas veces se va a repetir el iterador”
Son aquellos en que el número de iteraciones no se conoce con exactitud, ya que está dado
en función de un dato dentro del programa.
No sabemos cuántas veces se va a repetir nuestra acción, eso lo va a saber la variable
dentro del ciclo.
Para esto existen dos tipos de ciclos indeterminados:
- Mientras – Hacer.
Esta es una estructura que repetirá un proceso durante “N” veces, donde “N” puede ser
fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe
cumplirse para que se siga ejecutando. Cuando la condición no se cumpla, entonces ya no
se ejecuta el proceso. La forma de esta estructura es la siguiente:
Veamos un ejemplo en PSeInt.
Imprimir en pantalla los números del 1 al 10.
- Para empezar, definimos la variable del iterador como un tipo entero.

Mientras expresion_logica Hacer


secuencia_de_acciones
FinMientras

- Vamos a asignarle un valor a la variable del iterador antes de introducirla al ciclo


indeterminado Mientras – Hacer.
- Abrir el ciclo con un Mientras seguido de la condición lógica (que nos dará un
resultado verdadero o falso) que pondrá el parámetro que tiene que cumplirse para
terminar el proceso.
- Le daremos una acción a realizar con el indicador Hacer que se encargará de
escribir un mensaje de salida con el número del iterador.
- Dentro del mismo ciclo, vamos a sumar el número (esto lo hacemos en orden de
obtener un paso para cada número).
Esta acción también va a repetirse dentro del ciclo, sumando uno a cada versión del iterador
hasta llegar al valor que indicamos con la relación lógica.
- Repetir – Hasta Que.
Esta es una estructura similar en algunas características, a la anterior. Repite un proceso una
cantidad de veces, pero a diferencia del Hacer – Mientras, el Repetir – Hasta Que lo hace
hasta que la condición se cumpla y mientras. Por otra parte, esta estructura permite
realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del
proceso, mientras que en el Hacer – Mientras puede ser que nunca llegue a entrar si la
condición no se cumple desde un principio.
“El ciclo se va a ejecutar hasta que la condición lógica sea verdadera”
La forma de esta estructura es la siguiente:
Veamos un ejemplo en PSeInt.
Imprimir en pantalla los números del 1 al 10.
- Definimos la variable de tipo entero que va a ser el iterador.
- Inicializamos la variable con un valor que va a funcionar como inicio de nuestros

Repetir
secuencia_de_acciones
Hasta que expresion_logica

números.
- Escribimos dentro del ciclo Repetir las acciones que van a tener que realizarse en
un bucle hasta alcanzar el valor que queremos.
- Las acciones van a ser escribir el número para después sumarle uno al valor que va
cobrando el iterador, así hasta alcanzar la condición para salir de este ciclo (esta
condición es una expresión lógica)
Ejercicio 1 (pseudocódigo):
Calcular la suma de los “N” primeros números.
S=1+2+3+…+N
En este problema, el usuario va a indicar de cuantos números va a hacerse una suma,
empezando desde el uno hasta n.
- Definimos la variable del iterador de tipo entero y la variable que va a guardar el
valor del usuario, así como la operación que va a encargarse de sumar cada uno de
los valores que tome el iterador.
- Escribimos un mensaje de salida al usuario donde le pidamos introducir el número
total de sumas que quiere hacer.
- Inicializamos a la variable responsable de la suma iterada como 0.
- Abrimos el ciclo determinado para hacer el proceso de suma iterada.
“Este es el paso que más me confundió y que me costó entenderlo”
Para comenzar a escribir el ciclo, vamos a definir los parámetros.
Primero colocamos como inicio a la variable del iterador y le asignamos como valor 1 (el
primer número a sumar va a ser del 1 en adelante)
Segundo, ponemos como límite del ciclo a la variable del usuario (el valor que introduzca
el usuario será nuestro valor límite de sumas)
Tercero, ponemos los saltos que dará este ciclo de principio a fin (como es una suma
ordenada de números será de uno en uno)
Una vez terminados los parámetros la acción que se realizará dentro del ciclo va a ser una
ecuación definida de la siguiente manera:
Colocamos una variable que va a ir guardando (y acumulando) la suma de los números que
definió el usuario.
La suma iterada va a definirse como la misma variable de la suma donde se guarda la
suma, más el valor del iterador (que se va modificando continuamente) hasta llegar al
último valor definido. Cerrando el ciclo.
Esto funciona porque la variable de la suma (con valor inicializado en 0) va a comenzar a
sumar el primer valor del iterador (que definimos como 1) con el mismo valor de la suma
(empieza en 0 y a medida que va aumentando el valor del iterador, va aumentando el
valor guardado en la variable)
- Al terminar el ciclo, vamos a colocar un mensaje de salida que le muestre al usuario
el total de su suma.

A medida que hacemos el programa (y vemos cómo funciona cada línea paso a paso)
podemos entender de mejor manera el funcionamiento de estos operadores.
Ejercicio 2 (diagrama de flujo):
Se desea calcular independientemente la suma de los números pares e impares
comprendidos entre 1 y 50.
suma_pares = 2 + 4 + 6 + … + 48
suma_impares = 3 + 5 + 7 + … + 49
- Definimos las variables que van a guardar el valor iterado de la suma (tanto par
como impar) y la variable del iterador que es la que hace funcionar este programa.
- Vamos a asignarle a las variables de las sumas un 0 para no afectar sus valores
posteriores.
- Abrimos el ciclo con la variable del iterador comenzando desde 2 y terminando en
49 con paso de uno en uno (el 2 corresponde a los números pares y el 49 a los
impares)
- La acción que va a hacer el ciclo consiste en un condicional doble que se encargará
de “filtrar” los valores pares e impares en sus respectivas sumas.
El condicional debe tener al valor del iterador dividido entre dos por la función matemática
mod (encargada de obtener el valor del residuo de la división), en caso de obtener un valor
igual a 0, el condicional será cierto y guardará los valores dentro de la suma iterada de
pares. De otro modo, el valor es falso y el valor del iterador en ese caso se guarda en la
suma iterada de impares.
Las variables de la suma se usan dos veces en la misma ecuación.
La variable de la suma va a guardar el valor que va acumulando la misma variable más el
valor del iterador que va creciendo.
- Fuera de este condicional y de este ciclo, vamos a escribir los resultados finales de
las sumas en dos mensajes separados de salida.
Ejercicio 3 (diagrama n-s):
Leer 10 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.
- Definimos la variable que va a leer los números del usuario, pero también definimos
las variables que van a almacenar los valores cuantitativos de los números que se
acumulan en negativos, positivos y neutros. También definimos la variable del
iterador.
- Le pedimos por medio de un mensaje de salida al usuario que digite los 10 números
que le pedimos.
- Antes de abrir el ciclo donde se van a realizar las tareas, vamos a asignarle un valor
0 a las variables que acumularán los datos.
- Abrimos un ciclo “Para” que va a usar al iterador para repetirse de uno en uno
desde el 1 al 10.
- La repetición va a leer 10 veces el número que introduzca el usuario y después de
leerlo, va a compararlo con 2 condicionales dobles que van a filtrar los números
basándose en si son mayores a 1 o menores a -1 o iguales a 0.
- Con cada condicional cumplido vamos a realizar una suma continua que guarde el
valor de cada número en función de su estado.
- Al terminar el ciclo, con un mensaje de salida le vamos a indicar al usuario cuantos
números números positivos, negativos y neutros se contaron.
Ejercicio 4 (pseudocódigo):
Suponga que se tiene un conjunto de calificaciones de un grupo de 10 alumnos. Realizar un
algoritmo para calcular la calificación promedio y la calificación más baja de todo el grupo.
- Definimos las variables que vamos a ocupar (promedio, calificación más baja,
iterador, calificaciones, total)
- Mandamos un mensaje de salida que le muestre al usuario las indicaciones.
- Inicializamos la variable del total en 0 y la variable de la calificación más baja como
11.
Dentro del contexto del problema, una calificación de 11 no existe, por lo que podemos
tomar un valor mayor al delimitado por los rasgos de calificación para guardar desde la
primera calificación tal valor a nuestra variable.
- Abrimos un ciclo Para- Hasta que, iniciando al iterador en 1 hasta 10 con paso en 1.
- Dentro del ciclo, haremos la lectura de las calificaciones que van a ir seguidas de
una suma iterada que funciona como el total que va más adelante va a ser dividido
por el número de calificaciones.
- Para registrar la calificación más baja vamos a usar una variable inicializada en un
valor mayor a la calificación máxima.
Al usar una variable con un valor mayor vamos a poder comenzar a registrar los valores
comenzando desde el más alto al más bajo.
- Con un condicional simple vamos a colocar la variable de la calificación menor que
la variable de mayor valor.
Dentro del condicional se va a hacer una sustitución de un valor por otro, hasta acabar con
toda la lectura de los datos.
- Fuera de este ciclo con
condicional vamos a
colocar la ecuación del
promedio final.
- Para terminar, ponemos
dos mensajes separados
que muestren el promedio
de la clase y la calificación
más baja registrada.
Ejercicio 5 (diagrama de flujo):
Calcular el factorial de un número mayor o igual a 0.
¿Qué es un factorial?
No es más que una multiplicación iterativa que comienza desde 1 y termina hasta donde se
le indique.
“El factorial de 4 es 24 (1 *2 *3 *4)”
-

También podría gustarte