III222A Tecnologías de la Información II Segundo Semestre, 2014

Apunte No. 1: Entrada y Salida de Datos
Profesor: Milton A. Ramírez Klapp Universidad Del Desarrollo
Índice General
1 Presentación de la Unidad 1
1.1 Algoritmos y Resolución de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Introducción a Pseint 4
2.1 Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Variables 5
3.1 Declaración de variables en Pseint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Asignación de valores a una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Entrada de datos 7
5 Salida de datos 8
6 Ejercicios 10
1. Presentación de la Unidad
1.1 Algoritmos y Resolución de Problemas
Un problema se puede definir como cualquier asunto o cuestión que requiera de algún tipo de solución.
Este apunte se va a centrar en torno a aquellos problemas que se puedan resolver con la ayuda del
computador, específicamente mediante aplicaciones que podamos codificar a través de Pseint y de C++.
Como la idea es entregar una solución de calidad, es necesario establecer una metodología de trabajo,
cuyas etapas vamos a desarrollar en orden estrictamente secuencial, y que se detallan a continuación:
1.1 Algoritmos y Resolución de Problemas
1 Análisis y Diseño
Se relaciona con la pregunta: ¿Qué es lo que se tiene que resolver?
Para eso, es necesario identificar las tres partes que componen la respuesta:
(a) Identificar cuáles son los datos de entrada, que corresponden a aquello que es necesario
para que la solución que vayamos a construir, funcione. En este punto, debemos identificar
tanto el nombre como el tipo al cual pertenezca cada uno de los datos que hayamos
identificado. Entenderemos que el tipo se refiere a la naturaleza del dato, como por
ejemplo: si es numérico, fecha, un texto, algo que se evalúe como una expresión lógica,
etc. Y junto con eso, identificar las restricciones que cada uno de los datos de entrada
deba tener (estar entre 1 y 10, contener al menos 6 letras, etc). Cabe destacar que estos
datos corresponden a aquello que el programa le va a solicitar al usuario.
(b) Determinar cuál es el proceso a seguir. En este punto, debemos registrar cuáles son los
pasos que vamos a seguir a nivel general para poder construir las salidas deseadas, junto
con los resultados teóricos que nos ayuden para tales efectos.
(c) Indicar cuáles son las salidas o respuestas que deba producir nuestra solución. Al igual
que en las entradas, es necesario dar a conocer los nombres de las variables de salida,
junto con el tipo al cual pertenezcan.
2 Implementación
En esta etapa es cuando le indicamos al computador cómo vamos a llegar a la solución
del problema, mediante la codificación de un algoritmo que se va a tener que hacer en
algún lenguaje de programación determinado. En este sentido, diremos que un algoritmo
corresponde a un procedimiento finito, que se pueda seguir de manera secuencial, y que no
presente ambigüedades al momento de ser enunciado. De manera espontánea emergen dos
conceptos que son fundamentales para este ámbito de estudio:





1 Algoritmo
2 Lenguaje de Programación





Con respecto a los algoritmos, pasaremos a revisar su composición interna:
(a) Variables. En el contexto de la programación computacional, una variable corresponde a
un elemento que se almacena en la memoria principal de la máquina, y que puede guardar
un valor asociado con un tipo de dato determinado, que pueden ser:
numérico, como el caso de la edad, el promedio de notas a lo largo de un curso, año
de nacimiento, y un largo etcétera. En computación uno siempre tiene que hacer el
esfuerzo de ser lo más eficiente posible con respecto a la utilización de la memoria
RAM, ya que ahí es donde queda reservado el espacio donde se van a almacenar los
valores que pueda adoptar alguna variable en particular. Siempre se sigue esta regla:
cada variable se almacena en una posición distinta de memoria, y el tipo al
cual pertenezca, determina la cantidad de espacio que haya que reservar.
de texto, como el nombre, apellido, RUT (con el dígito verificador y el guión
incluido), comentarios, etc.
lógicos, que son aquellos que pueden devolver dos tipos de valores: verdadero
(True) o falso (False).
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 2
1.1 Algoritmos y Resolución de Problemas
(b) Operadores. Corresponden a funciones que generan algún tipo de resultado de interés
para nosotros. La taxonomía es la siguiente:
i. Aritméticos, donde encontramos la suma, resta, multiplicación, división, y módulo.
Esta última quizás es la menos conocida de todas, y corresponde al resto de la
división entera entre dos números, con la que profundizaremos más adelante.
ii. Lógicos, como el caso la conjunción (Y), disyunción (O) y la negación (No).
Cualquier otro conectivo lógico se puede deducir a partir de estos tres, en base a
reglas de equivalencias lógicas.
iii. De asignación, que permiten otorgarle un valor particular a alguna variable, en



función de si misma, o
en función de otras variables, o
cualquiera de las dos anteriores, combinada con constantes.



que se deben interpretar como el reemplazo o actualización de una variable.
iv. Relacionales, como el caso de <, >, =, =, ≤, ≥. En Pseint, el símbolo de distinto
se hace como <>, y los de desigualdad irrestricta como <= y >=. Todos los
operadores relacionales tienen en común el hecho que el resultado que arrojen va a
corresponder a un valor lógico. Por ejemplo:







3 = 7 es falso
5 <= 19 es verdadero
−1 <> 0 es falso
(5 < 6) And (10 −1 = 8) es falso







v. Alfanuméricos, que corresponden a aquellos que permiten manipular cadenas de
texto, como en el caso de las funciones concatenar, nompropio, minusc, mayusc
definidas en Excel.
(c) Estructuras de Control. Antes de ver en qué consisten, es necesario decir que en general
las órdenes que aparecen indicadas en un algoritmo se deben realizar de arriba
hacia abajo. Las estructuras de control permiten manipular esta observación, y hacer
que el flujo de ejecución se pueda modificar, dependiendo de las exigencias del problema
que tengamos que abordar. En este sentido, vamos a trabajar con dos tipos:





1 Condicionales.
2 Repetitivas.





(d) Llamadas a otros algoritmos. En muchas oportunidades es necesario «pedirle» a un
algoritmo distinto al que estamos construyendo que haga alguna operación para nuestros
propósitos. La idea de esto se vincula con el hecho de que un algoritmo puede estar
formado por otros algoritmos.
(e) Al inicio de la implementación, es necesario incluir el análisis del problema, a través del
uso de líneas de comentarios, como veremos en la próxima sección.
En relación a un lenguaje de programación, podemos decir lo siguiente:
Todos los computadores tienen asociado una especie de «lengua materna» que se llama
lenguaje binario, que está conformado por «textos» que sólo contienen ceros y unos,
y que representan órdenes o instrucciones que la máquina va a tener que ejecutar al pie
de la letra. Por supuesto, que nadie en su sano juicio va a construir un archivo de texto
del estilo 00000101010100 00010100101010 00001111 111010101 010001 11111
· · · 111010111 01010101010 1110101. En cambio, lo que hacen los programadores
para hacer aplicaciones de computador, es recurrir a un lenguaje de programación, que
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 3
2. Introducción a Pseint
es un software dotado de comandos escritos generalmente en inglés, y que contiene un
traductor que permite traspasar las instrucciones escritas en una lengua humana a algo
que entienda la máquina.
Existe una infinidad de lenguajes de programación disponibles para trabajar, siendo C++
el que vamos a emplear en la segunda parte del curso.
El nivel de dificultad de la etapa de diseño de algoritmos radica en cómo el estudiante vaya a combinar
de manera apropiada los elementos señalados en los puntos anteriores, para poder llegar a la solución
correcta del problema que quiera abordar. El diseño y la implementación de algoritmos es un proceso que
recurre mucho a la creatividad, por lo que un problema particular puede dar lugar a distintas soluciones
que produzcan los mismos resultados.
2. Introducción a Pseint
Una de las etapas que contempla el proceso de resolución de un problema mediante un computador era
la del diseño, en la cual especificábamos cuál iba a ser el algoritmo que en definitiva permita llegar a la
respuesta esperada, dentro de lo posible. La herramienta que vamos a emplear para la confección del
pseudolenguaje y del diagrama de flujo de datos asociado se llama Pseint. Para otorgar un mayor grado
de dinamismo a las clases, lo que haremos será emplear esta herramienta tanto para la etapa de análisis
como de diseño, de la manera en cómo se irá mostrando a lo largo de este apunte.
2.1 Análisis
Como se comentó en clases, esta parte consta de tres ítems: datos de entrada, proceso y salidas. La
forma en cómo lo abordaremos en Pseint sera a través de líneas de comentarios, que se escriben como
//. Por ejemplo, lo que se muestra en la imagen adjunta:
Importante
Todo lo que se escriba como comentario no va a ser tomado en cuenta por Pseint al momento de
ejecutar el programa que estemos escribiendo.
La estructura que tendrá el análisis será la siguiente:
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 4
3. Variables
Ejemplo 2.1 En este ejemplo vamos a indicar un análisis sugerido para el problema de hallar el área
de una circunferencia, donde el radio será el dato de entrada. Para esto, diremos que la entrada será
el radio, que llamaremos r . Sabemos que r tiene que ser mayor que cero, pero por el momento no
nos vamos a ocupar de esos asuntos, ya que esto lo veremos con más detalle cuando revisemos las
estructuras de repetición. Por otra parte, el proceso se va a apoyar en la fórmula πr
2
. Es importante
recordar que un computador es una máquina de naturaleza finita que no puede representar números
con infinitos decimales como π. Para llegar a un resultado, lo que haremos será una aproximación
del mismo como π ≈ 3.1415. De esta manera, el área estará dada por la expresión 3.1415r
2
. Y
finalmente, la salida será la superficie, que denotaremos por A:
3. Variables
En el contexto de la programación computacional, una variable corresponde a un elemento que se
almacena en la memoria principal de la máquina, y que puede guardar un valor asociado con un tipo de
dato determinado, que puede ser



















1 Numérico



Entero (sin decimales)
Real (con decimales)



2 Caracter (palabras, oraciones)
3 Lógico (verdadero o falso)



















Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 5
3.1 Declaración de variables en Pseint
Es importante decir que todas las variables que se vayan a emplear en un programa, se deben
declarar, lo que significa asignarles un nombre y el tipo al cual pertenecen.
3.1 Declaración de variables en Pseint
Para que Pseint «sepa» cuál es el tipo de variable que se vaya a indicar, hay que emplear el comando
Definir, seguido del nombre de la variable, de su tipo y de un punto y coma al final. Antes de pasar
a ver un ejemplo, es preciso señalar que por el momento todo lo que trabajemos se hará entre las
sentencias Proceso y FinProceso:
Ejemplo 3.1 Si en un programa tuviéramos por ejemplo cinco variables de tipo entero, llamadas
a, b, c, d y e, podemos escribir Definir a,b,c,d,e Como Entero; en lugar de
3.2 Asignación de valores a una variable
Para que una variable tome un valor determinado, podemos usar el operador <- que provee Pseint. Por
ejemplo: si z es una variable de tipo entero, y escribimos z ←4, significa que z tiene al momento de la
definición el valor 4. Si frase es de tipo caracter, entonces la asignación se hace usando comillas dobles
", con el objetivo de diferenciar a una variable numérica de otra de tipo caracter:
También es posible ampliar el significado del operador ←para referirnos a una actualización del valor que
pudiera tener una variable en términos de alguna expresión aritmética, lógica, o de texto. La sentencia
x ←y
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 6
4. Entrada de datos
se debe interpretar como que el nuevo valor de la variable x va a ser igual a y.
Ejemplo 3.2 Acá veremos cómo incrementar en uno el valor de una variable de tipo entera:
Ejemplo 3.3 También es posible hacer modificaciones de una variable en función de otra:
4. Entrada de datos
Los datos de entrada corresponden a aquellos trozos de información que el programa necesita para
funcionar. En otras palabras: todo lo que se haya definido como entrada en el análisis, debe tener un
paralelo en Pseint. El comando que se usa, se llama Leer:
Como regla: primero se declaran las variables, y luego se introduce el comando Leer. Dicho de
otra forma: no se puede leer algo que no haya sido declarado con anterioridad. No hacerlo significa
incurrir un error. Al igual que con la entrada de datos, en una misma línea podemos leer varias variables
que sean del mismo tipo, como por ejemplo:
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 7
5. Salida de datos
5. Salida de datos
Esto se encuentra directamente relacionado con las salidas que se especifican en la etapa de análisis
del problema. En Pseint esto se emplea para mostrar el resultado de alguna operación en la pantalla
del computador, y para lograrlo se emplea el comando Escribir. Veamos algunos ejemplos para que se
comprenda mejor cómo funciona:
Ejemplo 5.1 En este caso, vamos a escribir un mensaje simple:
Ejemplo 5.2 Ahora vamos a escribir de manera explícita el valor de una variable:
Ejemplo 5.3 Sin embargo, también sería interesante poder escribir algún mensaje alusivo al valor
de una variable. Si el usuario ingresa su nombre y la edad, el programa podría decir algo como
«Bienvenido xx, tienes una edad igual a yy», donde xx represente el valor del nombre, e yy fuera la
edad. Para esto, es importante considerar lo siguiente dentro del comando Escribir:
Aquello que va entre comillas corresponde a un texto fijo.
Lo que no va entre comillas es el valor de una variable que se va a desplegar.
El símbolo de coma permite alternar entre algo fijo y algo variable.
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 8
5. Salida de datos
Ejemplo 5.4 Desarrollemos el problema de hallar el área de una circunferencia, a partir del radio, y
aproximando el número π a 3.1415. En primer lugar, vamos a replicar el análisis en el encabezado
del archivo escrito en Pseint:
A continuación, le damos un nombre al proceso, y definimos las variables que vamos a emplear
durante la codificación de nuestro programa:
Escribimos el algoritmo para ingresar un dato desde el teclado, que se compone de un mensaje para
el usuario, y el uso del comando Leer. En este punto, se reitera que debe haber una consistencia
entre los nombres de las variables dadas en el análisis y la manera en cómo las llamamos en
Pseint:
Una vez que ya conocemos el valor del radio, procedemos a hacer el cálculo del área:
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 9
6. Ejercicios
Y finalmente, mostramos cuánto vale la superficie. Es importante remarcar que no siempre los tildes
o las ñ se decodifican de manera correcta, y por lo mismo no se escribieron:
De esta manera, el programa completo es el siguiente:
6. Ejercicios
Para cada uno de los problemas que se enuncian a continuación, se pide que usted construya el diagrama
de flujo y el algoritmo que lo resuelve expresado en pseudolenguaje.
1. Encontrar el sucesor de un número.
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 10
6. Ejercicios
2. Construya un algoritmo que lea tres números, y que genere:
i. La suma de ellos.
ii. El producto entre ellos.
iii. El promedio aritmético.
3. Si a y b son las medidas de los catetos de un triángulo rectángulo, encuentre el valor de la
hipotenusa.
4. Conversor de temperaturas:
(a) De grados Fahrenheit (F) a grados Celsius (C), sabiendo que la ecuación de conversión es
C =
5
9
(F −32).
(b) De grados Celsius a grados Fahrenheit.
(c) De grados Kelvin (K) a grados Celsius (C), sabiendo que la equivalencia se expresa mediante
la expresión C = K −273.
(d) De grados Celsius a Kelvin.
(e) De grados Kelvin a grados Fahrenheit, y viceversa.
5. Construya un algoritmo que permita expresar un número medido en años, a su equivalente en horas,
minutos, y segundos.
Profesor: Milton A. Ramírez Klapp - miramire@gmail.com 11