Está en la página 1de 20

FUNDACIÓN UNIVERSITARIA EMPRESARIAL DE LA CÁMARA DE

COMERCIO DE BOGOTÁ UNIEMPRESARIAL


INGENIERÍA DE SOFTWARE
PROGRAMACIÓN ESTRUCTURADA

TALLER 1

TIPOS DE DATOS
Las computadoras son fundamentalmente máquinas para almacenar y procesar
datos usando órdenes o comandos. Los lenguajes de programación los organizan
en tipos diferentes según sus características, las características del lenguaje, la
arquitectura del computador, los diferentes elementos o valores que pueden tener
y las operaciones que se pueden realizar sobre ellos

Los diferentes tipos de datos disponibles para un programador dependen de las


características de la computadora para la que esté programando así como de las
características del lenguaje. Sin embargo, la mayoría de los tipos disponibles se
pueden clasificar en primitivos, estructurados, y definidos por el programador. Los
tipos de datos primitivos son valores simples, manipulados con operaciones
proporcionadas directamente por el lenguaje de programación y que normalmente
se pueden representar y manipular con las herramientas disponibles en el lenguaje
máquina del computador.

Enteros

Los tipos de datos de números enteros son unos de los más comunes en los
lenguajes de programación y corresponden a un conjunto finito de los números
enteros, incluyendo los números positivos, los negativos y el cero. En el código
fuente de los programas se representan directamente con los dígitos del 0 al 9,
precedidos de un guion para representar a los números negativos. Algunos
ejemplos de valores válidos de este tipo de datos son:
123; -123; 0; 500; 045; -045

A diferencia de los números enteros usados en las matemáticas, los números


enteros de los lenguajes de programación tienen valores máximos y mínimos. Estos
valores están determinados normalmente por las características de las máquinas
en las que se ejecutan los programas o por el lenguaje de programación. Estos
valores se pueden verificar mediante operaciones o valores especiales
proporcionados por el entorno de programación y es importante tenerlos en
cuenta ya que los programas pueden producir errores inesperados cuando se
realizan operaciones cuyos resultados exceden la capacidad del tipo de datos. Por
ejemplo, sumar o multiplicar dos números muy grandes resultará en un número
negativo.

A continuación un ejemplo en cada uno de los lenguajes implementados, se solicita


un número y este se suma a 3 y se imprime el resultado.

a) C++
b) Python

Reales

El tipo de datos de los números reales se usa para representar números con partes
decimales o números muy grandes o muy pequeños. A diferencia de los números
reales en matemáticas, en los ordenadores los números reales están muy
restringidos por las capacidades de las máquinas. Actualmente la técnica más
extendida para representarlos utiliza el estándar IEEE 754 para aritmética en punto
flotante. Esta norma establece los mecanismos para representar los números
reales, comúnmente llamados números de punto flotante, y para realizar
operaciones aritméticas sobre ellos.

El el código fuente de los programas estos números se pueden representar como


números decimales o como números en notación de punto flotante. Los números
decimales tienen una parte entera, una parte decimal, un punto como separador
decimal entre ambas partes y un guion al inicio para indicar si se trata de un número
negativo. La notación de punto flotante es una generalización de la notación
científica y representa los números con un guion opcional para indicar si son
positivos o negativos, una parte decimal o mantisa que consiste en un número
compuesto de una parte entera y una decimal como los indicados anteriormente,
un número entero, que puede ser positivo o negativo, para representar el
exponente y la letra E para separar la mantisa del exponente.
a) C++

b) Python

c) Matlab

Caracteres

Las computadoras trabajan con números y para procesar texto es necesario que
representen de alguna manera los diferentes caracteres que componen un texto.
El tipo de datos de carácter le permite a los programadores procesar letras,
números, símbolos e ideogramas (como los usados en el chino, japonés y coreano)
al asociar un código numérico a cada carácter que se desea representar. Existen
muchas asignaciones de códigos para representar caracteres, pero los más
comunes son el código ASCII, frecuentemente soportado de forma directa por los
circuitos físicos de la máquina, y el código Unicode, diseñado específicamente para
soportar los caracteres usados en una gran variedad de idiomas, no solamente los
de la lengua inglesa.

En el pseudocódigo usado en este proyecto de aprendizaje representaremos los


datos de tipo carácter rodeados de apóstrofos para diferenciarlos del texto
circundante y de otros tipos de datos. Por ejemplo el carácter z se representará
como 'z' y el carácter 6 se representará como '6', lo que ayudará a diferenciarlo del
número entero correspondiente: 6. Esta es una convención comúnmente usada en
lenguajes de programación como C y Pascal.

a) C++

b) Python
Lógicos

El tipo de datos lógico, también llamado booleano es un tipo que solo tiene dos
valores posibles: verdadero y falso. Este tipo de dato se usa para realizar
operaciones lógicas sobre los datos, tomar decisiones y controlar la ejecución de
los programas. Su funcionamiento es equivalente a los valores verdadero y falso de
la lógica proposicional. Los lenguajes de programación representan los valores de
este tipo de datos de diferentes maneras (true y false, #t y #f, 1 y 0, etc.) y algunos
carecen de él completamente y usan valores numéricos en su lugar. Por ejemplo,
tratan al número 0 como si fuera el valor falso y a cualquier otro número entero
como si fuera verdadero.

Estructuras de control: condicionales y bucles


Son parte fundamental de cualquier lenguaje. Sin ellas, las instrucciones de un
programa solo podrían ejecutarse en el orden en que están escritas (orden
secuencial). Las estructuras de control permiten modificar este orden. Hay dos
categorías de estructuras de control:

Condicionales o bifurcaciones:
permiten que se ejecuten conjuntos distintos de instrucciones, en
función de que se verifique o no determinada condición.

Bucles o repeticiones:
permiten que se ejecute repetidamente un conjunto de instrucciones, bien
un número pre-determinado de veces, o bien hasta que se verifique una
determinada condición.
En términos de un lenguaje de programación, que se verifique o no una condición
se traduce en que una (adecuada) expresión lógica tome el valor
VERDADERO(TRUE) o tome el valor FALSO(FALSE).
En los casos más sencillos y habituales la condición suele ser una comparación
entre dos datos, como por ejemplo:

si
a<b
hacer una cosa
y en caso contrario hacer otra distinta

Estructura condicional simple: IF

Este es el tipo más sencillo de estructura condicional. Sirve para implementar


acciones condicionales
del tipo siguiente:

• Si se verifica una determinada condición, ejecutar una serie de


instrucciones y luego seguir adelante.
• Si la condición NO se cumple, NO se ejecutan dichas instrucciones y se sigue
adelante.

Obsérvese que, en ambos casos (que se verifique o no la condición), los


“caminos” bifurcados se unen posteriormente en un punto, es decir, el flujo del
programa recupera su carácter secuencial, y se continúa ejecutando por la
instrucción siguiente a la estructura IF.
Como ejemplo de utilización de este tipo de condicional, se considera el cálculo
del valor en un punto x de una función definida por partes, como por ejemplo:

El siguiente Algoritmo muestra el pseudocódigo correspondiente.

Cálculo del valor fe la Función f(x)= 0 si x <= 0, f(x)= x2 si x>0.

Inicio

LEER x
HACER f=0
Si x>0
Hacer f = x2
Fin si
IMPRIMIR ‘El Valor de la función es: ‘, f
Fin

a) C++

b) Python
Estructura condicional doble: IF - ELSE
Este tipo de estructura permite implementar condicionales en los que hay dos
acciones alternativas:

• Si se verifica una determinada condición, ejecutar un serie de instrucciones


(bloque 1).
• Si no, esto es, si la condición NO se verifica, ejecutar otra serie de
instrucciones (bloque 2).

En otras palabras, en este tipo de estructuras hay una alternativa: se hace una
cosa o se hace la otra. En ambos casos, se sigue por la instrucción siguiente a la
estructura IF - ELSE.

EJEMPLO

Como ejemplo de utilización de este tipo de estructuras se plantea el problema de


calcular las raíces de una ecuación de segundo grado
distinguiendo dos casos: que las raíces sean reales o que sean complejas (no se
contempla, de momento, distinguir entre una o dos raíces reales). Ver a
continuación el diagrama de flujo y el pseudocódigo correspondiente.

Cálculo de las raíces de la ecuación de segundo grado Ax 2+Bx+C= 0, distinguiendo


los casos de raíces reales y complejas.

Inicio
LEER A,B y C
CALCULAR D=B-4*A*C
CALCULAR AA=2*A
Si D≥0
CALCULAR DD=√D
x1=(-B+DD)/AA
x2=(-B-DD)/AA
IMPRIMIR ’La ecuación tiene raíces reales:’,x1, x2
Si no
CALCULAR DD=√-D
Re=-B/AA
Im=DD/A2
IMPRIMIR ’La ecuación tiene raíces complejas conjugadas:’
IMPRIMIR ’Parte real:’, Re
IMPRIMIR ’Parte imaginaria:’, Im
Fin Si
Fin

a) C++
b) Python

Estructura condicional múltiple: IF - ELSEIF – ELSE

En su forma más general, la estructura IF - ELSEIF – ELSE permite implementar


condicionales más complicados, en los que se “encadenan” condiciones en la forma
siguiente:

• Si se verifica la condición 1, ejecutar las instrucciones del bloque 1.


• Si no se verifica la condición 1, pero SÍ se verifica la condición 2, ejecutar las
instrucciones del bloque 2.
• Si no, esto es, si no se ha verificado ninguna de las condiciones anteriores,
ejecutar las instrucciones del bloque 3.

En cualquiera de los casos, el flujo del programa continúa por la instrucción


siguiente a la estructura IF - ELSEIF - ELSE.

Determinación del signo de un número: positivo, negativo o nulo.

Inicio
LEER X
Si X > 0
IMPRIMIR ’El número tiene signo positivo’
Si no, si X < 0
IMPRIMIR ’El número tiene signo negativo’
Si no
IMPRIMIR ’El número es nulo’
Fin

a) C++
b) Python
Estructura de repetición indexada: FOR

Este tipo de estructura permite implementar la repetición de un cierto conjunto


de instrucciones un número pre-determinado de veces.

Para ello se utiliza una variable de control del bucle, llamada también índice, que
va recorriendo un conjunto pre-fijado de valores en un orden determinado. Para
cada valor del índice en dicho conjunto, se ejecuta una vez el mismo conjunto de
instrucciones.

a) El valor de la variable de control indice puede ser utilizado o no dentro del


conjunto de instrucciones que forman parte del cuerpo del FOR, pero no debe ser
modificado.
b) El conjunto de valores que debe recorrer el indice puede ser vacÍo(N=0). En ese
caso, el bloque de instrucciones no se ejecuta ninguna vez.
c) Las estructuras FOR e IF pueden “anidarse”, es decir, incluir una dentro de la
otra, con la restricción(de sentido común) de que la interior tiene que estar
completamente contenida en uno de los bloques de instrucciones de la otra.

Ejemplo:
Dado un entero n, calcular la suma de los n primeros números impares.

Inicio
LEER n
HACER suma=0
Para i= 1, 3, 5, ..., 2*n-1
HACER suma=suma+i
Fin Para
IMPRIMIR ’La suma vale : ’, suma
Fin

1. C++
2. Python

EJERCICIOS

Realizar los siguientes ejercicios, presentando sus respectivos códigos en C++, y


Python.

1. Elaborar un algoritmo que permita ingresar el número de partidos ganados,


perdidos y empatados, por algún equipo en el torneo apertura, se debe de
mostrar su puntaje total, teniendo en cuenta que por cada partido ganado
obtendrá 3 puntos, empatado 1 y perdido 0 puntos.
2. Se requiere el algoritmo para elaborar la planilla de un empleado que trabaja
por horas. Para ello se dispone de sus horas laboradas al mes, así como de la
tarifa por hora.
3. Elabore un algoritmo que lea los 3 lados de un triángulo cualquiera y calcule
su área, considerar. Si A, B y C son los lados, y S el semiperímetro.
Área = √𝑆 ∗ (𝑆 − 𝐴) ∗ (𝑆 − 𝐵) ∗ (𝑆 − 𝐶)

4. Elaborar un algoritmo que permita calcular el número de CD´s necesarios


para hacer una copia de seguridad, de la información almacenada en un
disco cuya capacidad se conoce. Considerar que el disco duro está lleno de
información, además expresado en gigabyte. Un CD virgen tiene 700
Megabytes de capacidad y un Gigabyte es igual a 1024 megabyte.
5. Elaborar un algoritmo que solicite la edad de 2 hermanos y muestre un
mensaje indicando la edad del mayor y cuantos años de diferencia tiene con
el menor.
6. Elaborar un algoritmo que sirva para identificar el tipo de trianfulo
conociendo sus tres lados.
7. Elabore un algoritmo que permita ingresar un número entero (1 a 50), y
muestre su equivalente en romano.
8. Elabore un algoritmo que permita ingresar el monto de venta alcanzado por
un vendedor durante un mes, luego de calcular la bonificación que le
corresponde sabiendo:

9. Se desea leer un número entero de 2 cifras y que se muestre el número de


unidades, decenas que lo componen.
10. Elaborar un algoritmo que solicite la edad de 100 personas, y que muestre
cuantos son mayores y menores de edad.
11. Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las
variables A, B y C respectivamente. El algoritmo debe imprimir cual es el
mayor y cual es el menor. Recuerde constatar que los tres valores
introducidos por el teclado sean valores distintos. Presente un mensaje de
alerta en caso de que se detecte la introducción de valores iguales.
12. Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes
de sus dos catetos. Desarrollo el algoritmo correspondiente.
13. Realice un algoritmo que calcule el monto a pagar por el servicio de
estacionamiento, teniendo en cuenta que por la primera hora de estadía se
tiene una tarifa de 5000 pesos y las restantes tienen un costo de 3000 pesos.
Se tiene como datos: hora de entrada, hora de salida (formato militar),
iniciada una hora se contabiliza como hora total.
14. Realice un algoritmo que a partir de proporcionarle la velocidad de un
automóvil, expresada en kilómetros por hora, proporcione la velocidad en
metros por segundo.
15. Escribir un programa que seleccione la operación aritmética a ejecutar entre
dos números dependiendo del valor de una variable denominada
seleccionOp. 


16. Escribir un algoritmo que visualice el siguiente doble mensaje: 


• Introduzca un mes (1 para Enero, 2 para Febrero,...)


• Introduzca un día del mes

El algoritmo acepta y almacena un número en la variable mes en respuesta a la


primera pregunta y acepta y almacena un número en la variable dia en respuesta
a la segunda pregunta. Si el mes introducido no está entre 1 y 12 inclusive, se
debe visualizar un mensaje de información al usuario advirtiéndole de que el
número introducido no es válido como mes; de igual forma se procede con el
número que representa día del mes sino está en el rango entre 1 y 31.

Nota: como los años bisiestos, febrero tiene 29 días, modifique el programa de
modo que advierta al usuario si introduce un día de mes que no existe (por
ejemplo, 30 o 31). Considere también el hecho de que hay meses de 30 días y
otros meses de 31 días, de modo que nunca se produzca error de introducción de
datos o que en su defecto se visualice un mensaje al usuario advirtiéndole del
error cometido.

17. Realizar un programa que calculi el factorial de n números leídos del


terminal.

18. Realizar un programa que Imprima todos los número primos entre 2 y 100
inclusive.
19. Diseñar el algoritmo para imprimir la suma de los números impares menores
o iguales que n.
20. Calcular el enésimo término de la serie de Fibonacci definida por:
A1 =1, A2 =2, A3 =1+2=A1 +A2 , An =An–1 +An–2 (n>=3)
21. Calcular:


a) Para N que es un entero leído por teclado. 


b) Hasta que N sea tal que xn/n < E (por ejemplo, 
E = 10–4). 


22. Desarrolle un programa que sea capaz de sumar sólo los números pares que
se encuentran entre 1 y 50.
23. Desarrolle un programa que sea capaz de sumar sólo los números impares
que se encuentran entre 1 y 80.
24. Desarrolle un programa que sea capaz de leer N números e indique cuál de
ellos es mayor.
25. Desarrolle un programa que sea capaz de calcular y mostrar la cantidad de
múltiplos de un valor M para una cantidad N de números entre 1 y N. Pruebe
por ejemplo M=5 y N = 1000.
26. Desarrolle un programa que lea de teclado dos números enteros y los
almacene en dos variables de tipo int. Posteriormente deberá intercambiar
los valores almacenados en dichas variables, y finalmente deberá escribir el
valor almacenado en cada una de ellas.
27. Desarrolle un programa que lea del teclado una cierta cantidad de segundos
y retorne su equivalente en semanas, días, horas, minutos y segundos.
28. Diseñe un programa que lea un número entero de teclado y escribe un
triángulo rectángulo(relleno) con tantos asteriscos (*) de base y altura como
indique el número leído.
29. Diseñe un programa que lea un número entero de teclado y escribe un
triángulo rectángulo(hueco) con tantos asteriscos (*) de base y altura como
indique el número leído.

También podría gustarte