Está en la página 1de 43

Universidad de Pamplona 1

Guía del Estudiante


Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Programación Estructurada

Objetivo del Curso:

Utilizar el concepto de función como principal herramienta para la abstracción y


descomposición en un problema complejo y como fundamento de la programación
estructurada

Adquirir habilidad en la solución de problemas por medio del diseño estructurado de código,
mediante el desarrollo del pensamiento algorítmico y de la aplicación de pruebas.

Desarrollar habilidades en el uso de por lo menos dos lenguajes y herramientas de programación


estructurada.

Contenidos del curso


1. Introducción
1.1 Componentes funcionales del computador
1.1.1 Software
1.1.2 Hardware
1.2. La función como elemento fundamental del procesamiento de datos
1.3. El dato y su procesamiento Tipos de datos (conjuntos), datos (elementos)
1.4. Asignación y expresiones numéricas
1.5. Lenguajes de programación openbasic y pseint
1.6. Herramienta de programación Calc, y pseint

2. Estructuras de Control
2.1 De selección
2.2 De repetición Mientras que
2.3 Diseño Estructurado, mediante la cooperación de funciones en la solución de un problema.
2.3 Otro lenguaje de programación Python o C

3. Estructuras de datos
3.1 Arreglos
3.1.1 Unidimensionales o Vectores
3.1.2 Bidimensionales o Matrices
3.2 Registros
Universidad de Pamplona 2
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Contenidos de la Guía

1 INTRODUCCIÓN A LA PROGRAMACIÓN ...................................................................................... 3

2 FUNCIÓN .................................................................................................................................... 5
2.1 EL DATO Y SU PROCESAMIENTO ....................................................................................................... 7
2.2 LA ASIGNACIÓN ............................................................................................................................ 7
3 ESTRUCTURAS DE CONTROL ................................................................................................... 10
3.1 ESTRUCTURAS DE CONTROL DE SELECCIÓN O CONDICIONALES............................................................ 10
3.2 ESTRUCTURAS DE CONTROL REPETITIVAS ........................................................................................ 14
4 DISEÑO ESTRUCTURADO MEDIANTE LA DESCOMPOSICIÓN EN FUNCIONES ........................... 17

5 RECURSIVIDAD ........................................................................................................................ 25

6 ESTRUCTURAS DE DATOS ........................................................................................................ 27


6.1 ARREGLOS ................................................................................................................................ 27
6.1.1 Arreglos unidimensionales (vectores) ............................................................................................ 27
6.1.2 Vectores paralelos ......................................................................................................................... 31
6.1.3 Arreglos Bidimensionales o Matrices ............................................................................................ 32
6.2 REGISTROS ............................................................................................................................... 38
Universidad de Pamplona 3
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

1 Introducción a la programación
Programar un computador es escribir instrucciones que le permitan al computador procesar
datos, aprovechando la velocidad y capacidad de la máquina.

Actualmente existen muchos paradigmas para programar el computador, como el estructurado,


orientado a objetos, orientado a aspectos, funcional, lógico, concurrente, entre muchos otros. Sin
embargo el paradigma Estructurado ha sido básico en la enseñanza de la programación, pese a
que en el desarrollo profesional de software predomina el orientado a objetos.

Programar estructuradamente implica por lo tanto que el código este organizado (estructurado)
en pequeños programas denominados funciones, que dentro de las funciones se realicen el
procesamiento de datos mediante Asignaciones, estructuras que controlen dichas asignaciones y
estructuras de datos que permiten el almacenamiento en memoria de valores en su mayoría
parte numéricos.

Por lo tanto la programación estructurada se puede resumir en los siguientes conceptos que
justifican su nombre “programación estructurada”.

Componentes funcionales del computador

Para poder programar el computador es necesario comprender su funcionamiento de manera


general y como ésta relacionado el hardware con el Software, y para diferenciar los paradigmas de
programación estructurado y orientado a objetos se hace indispensable comprender como se
organiza la memoria de instrucciones y la memoria de datos.
Universidad de Pamplona 4
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Usuario

Software
Sistemas de Aplicativo Lenguajes de
Información Programación

Sistemas Operativos

Hardware
Universidad de Pamplona 5
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

2 Función
Una función se debe comprender como el mecanismo de procesamiento de datos de entrada que
produce un único dato de salida.

Así pues, la función se puede interpretar como una máquina que recibe objetos (pertenecientes a
un determinado conjunto) los procesa de alguna forma y devuelve (retorna) un único dato u
objeto.
El concepto de función concuerda con las definiciones de función en términos matemáticos, pues
todos los posibles objetos que puede procesar una función conforman el dominio de la función y
todos los posibles objetos producto del procesamiento y retornados por una función, conformar el
rango de la función. De esta manera se puede notar la función así:

f :: Dominio  Rango
objetos a procesar  objeto retornado (calculado mediante proceso)

Dentro de una función se procesan los datos mediante un conjunto de instrucciones


(asignaciones y estructuras de control) que realizan una tarea específica y permiten obtener un
único valor o dato que será retornado a donde se halla realizado el uso de la función.
Las funciones al ser invocadas reservan un espacio en la memoria de datos exclusiva para su
ejecución, utilizando los datos recibidos llamados parámetros que permiten el intercambio de
datos entre funciones cuando desde una se llama a otra.
En la mayoría de ejercicios de esta guía, las funciones son utilizadas para descomponer grandes
problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas
durante un programa y de esta manera reducir la complejidad del código.
Universidad de Pamplona 6
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Cuando una función es invocada (llamada su ejecución) se le pasa el control a dicha función, una
vez que esta finalizó con su tarea retornando un único valor, el control es devuelto al punto desde
el cual la función fue llamada, liberando el espacio de memoria que uso para su ejecución.

Una vez realizado el código de una función se debe probar, haciendo uso de casos de prueba que
garanticen la dicha función está haciendo un adecuado procesamiento de los datos y por lo tanto
hay que realizar varios llamados, usos o invocaciones de función con datos planificados

Una vez probada una función se hace necesario documentarla adecuadamente para que quien
desee hacer uso de dicho código, este seguro de cómo usarla, sin importar el cómo fue escrito
dicho código. La documentación es una descripción textual no ejecutable por el computador, para
especificar como trabaja la función, ejemplos de uso de la función, advertir de condiciones
necesarias para su adecuado uso, y en algunos casos advertir en que situaciones genera errores.

En este curso cada función desarrollada se debe documentar de la siguiente manera:


Universidad de Pamplona 7
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

2.1 El dato y su procesamiento

Algoritmo: Conjunto de pasos lógicos, secuenciales y finitos para procesar datos dentro de una
función.

Dato: Es una característica de un objeto o entidad, que adquiere un valor. Por ejemplo, si se
piensa en los datos asociados a un estudiante (la entidad es el estudiante), se puede identificar
datos como su nombre, edad, sexo, estado civil, fecha de nacimiento, y muchos otros más datos,
que pueden relacionarse con el estudiante.

Constante: Un datos se dice que es constante si su valor está determinado dentro del código de
una función.

Variable: Una variable es un dato almacenado en la memoria de datos y cuyo valor puede ser
cambiado mediante una asignación. Toda variable debe ser identificada mediante un nombre
único dentro de una función. Los nombres de las variables o identificadores son palabras
descriptivas del dato que contienen, sin espacios ni signos de puntuación, usando solo letras del
alfabeto inglés y números, comenzado siempre en letra. El identificador del dato es el único
mecanismo para acceder a su valor y solo existe momentáneamente mientras se ejecuta una
invocación a la función que define el dato.

Tipos de datos: Los datos se clasifican según el tipo de valor que contenga así: Numéricos (si su
contenido es un número) Alfanuméricos (si su contenido es un carácter o una cadena de
caracteres) y Booleanos (si su contenido es un valor de verdad, es decir un verdadero o un Falso).
En esta guía la gran mayoría de datos utilizados son datos numéricos.

Enteros
Numéricos
Reales

Tipos de datos Caracteres


Alfanuméricos
Cadenas de Caracteres (String)

Booleanos

2.2 La Asignación

Asignación: Es un proceso mediante el cual se cambia el valor de una variable por el resultado
de calcular una expresión.

En una asignación hay que tener en cuenta:


Universidad de Pamplona 8
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Variable cuyo valor


Símbolo de asignación
va a cambiar

En una asignación, el
a = b+c tipo de dato de la
En una asignación, variable de la izquierda
primero se calcula el debe ser igual al tipo de
valor de la expresión y expresión de la derecha
luego el resultado es
almacenado en la
variable de la izquierda Expresión que va a
ser calculada, y cuyo resultado
será almacenado en
la variable de la izquierda

Ejemplo de Asignación

Expresiones Numéricas
Una expresión numérica es una adecuada combinación de operandos, operadores y signos de
agrupación que al ser calculada da como resultado un número.
Universidad de Pamplona 9
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

En este curso solo se harán uso de los siguientes operadores aritméticos que están disponibles
en cualquier lenguaje de programación estructurada como openbasic, pseint, c, pascal, python,
entre otros.

Para cada uno de los siguientes ejercicios realizar, documentar y probar la función
requerida:

1- Calcular la imagen de un número real x mediante la función f ( x)  3x 2  2 x  1


2- Calcular el área de un círculo sabiendo que A   .r 2
3- Calcular el perímetro de un círculo P  2. .r
1
4- Calcular la altura de un cono conociendo el volumen y el radio de su base. V  . .r 2 .a
3
5- Hacer una función que dado un número de 3 cifras retorne el número invertido.
Ejemplos: al llamado invertir(791) retornará 197
al llamado invertir(248) retornará 842

6-Calcular el área de un triángulo en función de las longitudes de sus lados


Area  p( p  a)( p  b)( p  c)
donde p es el semiperímetro p  (a  b  c) / 2 . Averigüe la función
que dispone el lenguaje para calcular una raíz cuadrada. Nota: No toda combinación de valores
de a,b y c forman un triángulo, para probar es necesario garantizar que cada lado sea menor que
la suma de los otros dos por ejemplo 3, 4 y 5

7-Determinar el valor de una llamada telefónica, si por los primeros 3 minutos se cobran 300
minutos c/u y 150 por cada minuto adicional. Suponer que las llamadas siempre duran 3 o más
de 3 minutos. Ejemplo: al llamar la función con argumento 6, retornará 1350

8- Hacer las funciones necesaria para la conversión de temperaturas mediante las siguientes
formulas:
Centígrados (C) a Fahrenheit (F) F= C x (9 / 5) + 32
Fahrenheit (F) a Centígrados (C) C= (F-32) x (5 / 9 )
Centígrados a Kelvin(K) K = C + 273.15
Kelvin(F) a Centígrados(C) C = K - 273.15

9-Hacer dos funciones para calcular cada una de las raíces de una ecuación cuadrática
 b  b 2  4.a.c
ax 2  bx  c  0 , sabiendo que X 
2.a
Ejemplo: para la ecuación x  5x  24  0
2
en donde a=1, b=5 y c=-24,
al llamado primeraRaiz( 1, 5, -24) retornará -8 y al llamado segundaRaiz( 1, 5, -24) retornará 3.
Universidad de Pamplona 10
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

10- La nota final de un estudiante de Programación, se compone de los siguientes porcentajes:


60% Examen, 25% Quices y 15% Trabajos. Las calificaciones corresponden a números decimales
entre 0 y 5.
Hacer una función que conociendo las tres calificaciones retorne la definitiva
Hacer otra función que conociendo las notas de Quices y trabajos retorne la nota que debe sacar
en el examen para aprobar la materia con la nota mínima de 3.0.

11-Un vendedor recibe un sueldo base mensual, más un 10% de las ventas realizadas (comisión),
hacer una función que dado el salario base y el total de ventas realizadas retorne el salario que le
corresponde en el mes.

12-Escriba una función llamada magnitud que tenga cuatro parámetros de entrada llamados x1,
y1, x2, y2 y que retorne como resultado la distancia entre dos puntos cuyas coordenadas son (x1,
y1) y (x2, y2) según la siguiente fórmula:
dist  ( y 2  y1 ) 2  ( x2  x1 ) 2

3 Estructuras de control

De selección o condicionales

Mientras que
Estructuras de Repetitivas Para
control Hacer mientras

3.1 Estructuras de control de selección o Condicionales

Las estructuras de Control de selección son mecanismo que permiten controlar la ejecución de
asignaciones dependiendo de una condición

Si condición entonces
no si ....Instrucciones para
Condición ....cuando la condición
....sea verdadera
Sino
....Instrucciones para
....cuando la condición
....sea falsa
Fin si

En una estructura de selección hay que tener en cuenta:


Universidad de Pamplona 11
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Llegada a la
Expresión booleana estructura
Conjunto de instrucciones
que se evaluará para decidir que se ejecutarán, cuando
que conjunto de instrucciones la condición sea verdadera
se ejecutará

no si
Condición

Conjunto de instrucciones Terminación de la estructura


que se ejecutarán, cuando Aquí se deben encontrar los caminos
la condición sea Falsa del si y del no para continuar el algoritmo

Cuando se requiere de este tipo de estructuras de Control?


Cuando en un llamado a una función se requiere escoger (seleccionar) la ejecución de las
asignaciones, y por lo tanto el control de las asignaciones se determina por el cumplimiento o no
de una condición.

Las condiciones que determinan la ejecución de un conjunto de asignaciones o el otro, es una


expresión boolena, es decir que al evaluar la expresión se obtiene como resultado un valor de
verdad (verdarero o falso) (True o False).
Las expresiones booleanas también son una adecuada combinación de operandos, operadores y
signos de agrupación, solo que en esta oportunidad se pueden usar además de los operadores
aritméticos, operadores lógicos y operadores relaciones.
Universidad de Pamplona 12
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Los operadores relacionales permiten comparar cantidades


Los operadores lógicos, combinan expresiones boolenas para obtener condiciones más
complejas, como que se requiera el cumplimiento de dos condiciones o una para ejecutar un
conjunto de asignaciones.

En este curso solo se podrán usar los siguientes operadores relacionales y operadores lógicos:

Para cada uno de los siguientes ejercicios realizar, documentar y probar la función
requerida:

13- Calcular el valor absoluto de un número real, sin usar funciones predefinidas del lenguaje.
Ejemplo: Al llamado valorabsoluto(10) retornará 10
valorabsoluto(-5) retornará 5

14-Hacer una función que dados 3 números halle el mayor de los tres (en otra función hallar el
menor).

15- Calcular f (x) donde f es una función de los reales en los reales, definida por
x si x  5

f ( x)   x  3 si  5  x  5
 x 2  2 si x  5

16-Un empleado trabajar 40 horas semanales en una empresa y recibe un salario de 260.000
pesos semanales. Si excede de las 40 horas la empresa debe pagar un recargo del 30% por hora
extra trabajada. Hacer una función que dadas las horas semanales trabajadas de un empleado,
retorne el salario a pagar según estas condiciones.
Universidad de Pamplona 13
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

17-Escribe una función con dos parámetros de tal forma que determine si sus dos parámetros
son múltiplo el uno del otro (no importa cuál de cuál).

18-Suponga que las tarifas de una compañía de gas se basan en el consumo de acuerdo con la
siguiente información: los primeros 70 metros cúbicos de gas usado tiene un costo de 500 pesos
y esto se constituye en tarifa básica (si consume menos de 70m igual se cobrará los 500 pesos),
los siguientes 100 metros cúbicos de gas consumidos se cobran a 50 pesos el metro cúbico, los
siguientes 150 metros cúbicos de gas consumido se cobran a 25 pesos por metro cúbico, por
encima de 320 metros cúbicos de gas consumidos se cobrará a 15 pesos por metro cúbico. Dada
la lectura del contador al inicio de mes y al final del mes (dos números enteros el primero menor
que el segundo), en metros cúbicos, calcule el valor de la factura.

19-Escribe una función que tome 3 parámetros: dos de tipo real y uno de tipo carácter. La
función deberá sumar, restar, multiplicar o dividir los valores de los dos primeros parámetros
dependiendo del símbolo indicado en el tercer parámetro, y devolver el resultado (el carácter será
„+‟, „-„, „ * ‟, y „/ ‟).

20-Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de
ejercicio aeróbico; la fórmula que se aplica cuando el sexo es femenino es:
num. pulsaciones = (220 - edad)/10
y si el sexo es masculino:
num. pulsaciones = (210 - edad)/10

21-Un café Internet cobra a sus usuarios de la siguiente forma.


Tiempo de navegación Valor a pagar
De 1 a 15 minutos 500
De 16 a 30 minutos 1000
De 31 a 60 minutos 1400
Superior a 60 minutos, 20 pesos el minuto adicional.
Hacer una función que dado el tiempo navegado por una persona (en minutos) determinar y
retorne el valor a pagar.

22-Calcular mediante una función el valor de la cuota mensual y mediante otra el número de
cuotas a pagar, por la realización de un préstamo en un banco con las siguientes condiciones: Si
el préstamo es menor de $500000 se paga un interés de 10% sobre el total del préstamo y las
cuotas mensuales quedan de un 3% del monto total. Si el préstamo está entre $500000 y
$1000000 (inclusive) se paga un interés del 7% y las cuotas quedan de un 5% del monto total. Y
si el préstamo es superior a $1000000 se paga un interés del 4% y las cuotas quedan de un 7%
del monto total.

23-Una empresa de servicios públicos desea liquidar el total de la factura teniendo en cuenta:
Estrato Nivel de Consumo Tarifa Básica
1 <=10 $5000
2 <=25 $10000
3 <=35 $15000
4 <=40 $20000
Si el nivel de consumo se excede, debe pagar por cada punto adicional en el nivel de consumo
$800, en cualquiera de los 4 estratos.
Ejemplo: Si el estrato es 3 y el nivel de consumo 45 entonces el valor de la factura es de
15000+(10*800)=23000 pesos
Universidad de Pamplona 14
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

24- Dado un número X de 3 cifras determine la suma de las cifras pares


Ejemplo: Si el número de tres cifras es 364, de los tres dígitos, los pares son 6 y 4 por lo tanto la
Suma de sus dígitos pares es 10

25- Dada las longitudes de los lados de un triángulo, hacer una función que determine el tipo de
triangulo, teniendo en cuenta la siguiente clasificación:
Si los tres lados son iguales es equilátero
Si solo dos lados son iguales isósceles
Si todos son diferentes escalenos

26-El profesor de programación, acordó con sus estudiantes las siguientes reglas para la
calificación final de la materia:
La calificación final se obtiene de 3 notas parciales, que tienen igual peso
Si la nota es mayor de 3.5 se le suman 0.4. Es decir si la nota obtenida es de 3.7 el profesor
suma 0.4, luego su nota final será de 4.1 (si la nota calculada da más de 5 la definitiva se deja en
5).
Si la nota es menor de 2.5 se le resta 0.3. Es decir que si la nota obtenida es de 2.2 el profesor
resta 0.3, luego su nota final será de 1.9. Si la nota resultante fuese menor que 0 (cero) la
definitiva se deja en 0 (cero).
Haga una función que dadas las 3 notas para cada un estudiante calcule la nota final.

27-Una lavandería ofrece sus servicios a la ciudad de Pamplona de acuerdo a la siguiente tabla.
Peso de Ropa → 0 Kg a 2,0 Kg 2,1 Kg a 4,0 Kg
Tipo Cliente↓
1. Normal $200 $500
2. Especial $150 $450
Hacer una función para determinar cuánto debe pagar un cliente por un servicio

28-En un parqueadero de la ciudad de Pamplona se cobra por minutos (a 15 pesos el minuto) y


los administradores del parqueadero decidieron ofrecer la siguiente promoción:
Los autos cuyo número de placa termina en número par tiene un descuento de 10% si se registra
la entrada entre las 9:00 am y las 12 del mediodía y los números de placa que terminan en
número impar tienen un descuento del 15 % si se registran a la entrada entre las 14:00 y 15:00
horas.
Hacer una función que determine el valor a pagar por parqueadero de un cliente.

3.2 Estructuras de control repetitivas


Las estructuras de control repetitivas son el mecanismo para escribir una sola vez un conjunto
de asignaciones y por medio de estas pedirle al computador que las ejecute muchas veces. (puede
ser dos o más veces, hasta millones de veces)
Mientras
que MQ condición haga
no ..... Instrucciones a
Condición
…… repetir
si
fin MQ
Universidad de Pamplona 15
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

En una estructura de control repetitiva “Mientras que” hay que tener en cuenta:

Expresión booleana Llegada por primera vez


que se evaluará y determina al ciclo repetitivo
si se sigue o no repitiendo
las instrucciones

no
Condición
si
Regreso para evaluar
la expresión booleana
que permite decidir si se
continua o no la repetición del
conjunto de instrucciones

Terminación del proceso


de repetición del conjunto de
Conjunto de instrucciones que instrucciones
se repetirán

 0 si n  0
29- Hacer la función Factorial. n! 
1x 2 x3x 4....n si n  0

 0 si x  0 y y0
 1 si x  0 y y0

y 1
30- Cree la función Potencia x   x( x )
y
si y0
 1 y si y0
 x
no definido si x  0 y y0
31- Dados dos (2) números ·”x” y “z”donde “x” es menor que “z” haga una función para calcular la
suma de los números comprendidos entre ”x” y “z”.

32- Hacer dos funciones una para hallar el cociente y otra para hallar el residuo de una división
entera mediante restas sucesivas (sin usar el operadores “div” ni “mod” que disponen la mayoría
de lenguajes de programación)..
Para el cálculo del cociente y del residuo de una división entera, usando restas sucesivas tenga
en cuenta los siguientes ejemplos:
División entera entre 10 y 4 División entera entre 19 y 5 División entera entra 31 y 7
10 – 4 = 6 19 - 5 = 14 31 - 7 = 24
6–4 =2 14 - 5 = 9 24 - 7 = 17
9 - 5= 4 17 - 7 = 10
10 - 7 = 3
Cociente 2 pues se hicieron El cociente es 3 pues se Cociente es 4
dos restas hicieron tres restas Residuo es 3
El residuo es 2 puesto que es El residuo es 4 puesto que es
el último resultado de la el último resultado de la resta
resta

33- Hallar la cantidad de dígitos que tiene un número entero


Universidad de Pamplona 16
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

34- Calcular el n-esimo término de la serie de Fibonacci.


Para n = 7
La serie de Fibonacci es: 1, 1, 2, 3, 5, 8,13
Por lo tanto el séptimo término es 13

35- Juan Pablo Montoya, entrena todos los días, recorriendo cierta cantidad de kilómetros, de tal
forma que todos los días recorre el doble de lo que recorrió el día anterior más 10 km. Pero cada
3 días recorre solo la mitad de lo que recorrió el día anterior. Realice una función que dado el
número de kilómetros recorridos el primer día del entrenamiento y un número n de días y halle
el total de kilómetros acumulados hasta ese día (el n-ésimo día).
Por ejemplo, si el primer día recorrió 5 Km....
Día Kms Recorridos Acumulado
1 5 5
2 (5*2)+10 = 20 25
3 20/2 = 10 35
4 (10*2)+10 = 30 65
5 (30*2)+10 = 70 135
6 70/2 = 35 170
7 (35*2) +10 = 80 250

36- Dado un número determinar si es primo. Sabiendo que un número es primo si tiene hasta
dos divisores (1 y él mismo)

37- Manolito tiene una cuenta de ahorros en la corporación SINFONDOS. Esta corporación
otorga a sus ahorradores un interés mensual y un interés anual sobre el saldo del momento.
Determinar a partir del saldo de la cuenta, del interés mensual y del interés anual, los ahorros
que tendrá Manolito después de un número determinado de meses, si él no retira ni deposita
dinero en ese tiempo.

38- El banco Santander tiene una modalidad de ahorro llamada “todo día”, consistente en que
todos los días liquida los intereses de acuerdo al saldo de ese día. Hacer una función que dado
capital inicial, calcule cuantos días se requieren para que el saldo de la cuenta supere un
determinado monto. Las condiciones para la liquidación de los intereses son las siguientes: si el
saldo actual es menor o igual a $500000 pesos se sumará un interés del 0.2% del saldo actual, si
el saldo actual está entre $500000 pesos y un millón se liquidará un interés del 0.25% y si es
superior a un millón, se liquidará 0.3%.

39-Escriba una función llamada diginicial que tenga un parámetro de entrada llamado num y
que retorne como resultado el dígito más significativo es decir el primer digito de izquierda a
derecha . Por ejemplo, diginicial(234) retornará 2 y diginicial(456372) retornará 4.

40- (*) El método de Newton-Raphson para calcular una raíz cuadrada de un número X, parte de
un número inicial r a partir del cual se van calculando aproximaciones cada vez más exactas a
la solución. Para calcular la aproximación (i+1)-esima se usa la anterior (la i-esima) y se aplica la
fórmula:
x
ri 
ri
ri 1 
2
Universidad de Pamplona 17
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

41-Hallar la cantidad de rebotes después de la cual un balón alcanza una altura máxima menor
a la décima parte de la altura desde la cual fue soltado en caída libre. Por propiedades del balón,
este luego de ser soltado desde una altura H alcanza en cada rebote el 10% menos de la altura
que en el rebote anterior.

42-Hallar el año en el que la población de la ciudad de Pamplona iguale o supere a la población


de la ciudad de Bogotá. Para ello se sabe que la rata de crecimiento de la población de Pamplona
es del 2,35% anual y la de la población de Bogotá es del 0,06% anual, además se supone que
dicha rata de crecimiento permanecerá constante. Hace una función que dada, las poblaciones
actuales tanto de Pamplona como de Bogotá, calcule el número de años que se necesitan para
que la población de pamplona supere la de bogotá.

b
i3
43-Hacer una función que calcule la siguiente sumatoria s 
i a i4
i  4

Por ejemplo: Para a=3 y b=5 se tiene que:


33 43 53 27 64 125
S=      = 25.7460
3 4 4 4 5 4 7 8 9

44-Se dice que un número es CUBO INTERESANTE si puede ser representado como la suma de
los cubos de sus dígitos. Haga una función que determine si un número es un cubo interesante.
Por ejemplo 153 es cubo interesante pues:
153= 13 +53+33 = 1+125+27=153

4 Diseño estructurado mediante la descomposición en funciones


Cada función se puede considerar como un programa totalmente independiente, es decir que se
ejecuta en su propio espacio de memoria, por lo tanto cada función una vez llamada su ejecución
(invocada) recibe cada uno de los argumentos, en los parámetros como variables de su propio
contexto, y procesa sus propios datos almacenados en su memoria de datos.

Los parámetros son los datos a procesar (datos de entrada para la función) y por lo tanto se
necesitan para que la función ejecute la tarea para la cual fue diseñada. Una vez terminadas las
instrucciones que componen la función se retorna un único valor al lugar donde se hizo el
llamado (invocación) de la función.

Una vez la función termina su proceso y retorna un valor (a donde fue invocada) el espacio de
memoria donde se ejecutó la función, es liberado (deja de existir), por lo tanto las variables
locales dejan de existir y es por ese motivo que los valores de la variables locales se pierden y no
es posible recordarlas entre dos llamados de la misma función.

Dado que una función maneja su propio espacio de memoria, los nombres de las variables de la
función pueden tener el mismo nombre de las variables de otras funciones, sin embargo es
necesario recordar que sin importar si tienen el mismo nombre, son dos espacios de memoria
diferentes y cada una tendrá su propio valor, la única diferencia es que la función solo puede
acceder (usar) su propias variables y no tiene acceso a otros espacios de memoria de otras
funciones o del programa principal.
Universidad de Pamplona 18
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Existen dos tipos de parámetros en una función: los parámetros por valor y los parámetros por
referencia. En la primera parte de este curso solo se utilizan los parámetros por valor (los
parámetros por referencia se introducen cuando se utilizan los arreglos).

Cuando una función es invocada su ejecución, se le entrega un conjunto de datos dentro de


paréntesis a los cuales llamaremos Argumentos, la función se empieza a ejecutar creando su
propio espacio de memoria y saca una copia de los valores de los argumentos en los
respectivos parámetros (por eso se llaman parámetros por valor.. pues los parámetros extraen
los valores de los argumentos sacando una copia). La función puede definir todas las variables
locales que necesite para realizar su proceso, con los parámetros que contienen una copia de los
valores de los argumentos, realiza el proceso requerido y retorna el valor correspondiente. Dentro
de la función se pueden modificar las variables que actúan como parámetros sin que los
argumentos sufran dichos cambios.

En la programación estructurada el código de un programa, está organizado en varias funciones


que cooperan unas con otras para solucionar el problema, de tal manera que se reduce la
complejidad del código mediante la estrategia divide y vencerás.

Para cada uno de los siguientes ejercicios identifique, desarrolle, documente, y pruebe dos
o más funciones que considere necesarias para solucionar el enunciado.

45-Calcular el valor total a pagar por concepto matricula de un estudiante.


Para realizar esto, se debe hacer a partir del código de estudiante, que permite definir los
parámetros de liquidación e información adicional (El código está compuesto por 5 dígitos)
El primer dígito permite identificar el tipo de carrera que cursa el estudiante y valor base de
matrícula.
El segundo dígito representa la jornada y permite obtener recargo sobre la matricula.
Los siguientes dígitos (3) el consecutivo de la carrera.
Si el alumno tiene un consecutivo par tiene un descuento 20%.
Universidad de Pamplona 19
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Si el alumno tiene un consecutivo impar tiene un descuento 10%.


Las carreras están definidas así:
Código Tipo Valor base Matricula
1 Profesional $300.000
2 Tecnología $150.000
3 Técnico $100.000
Profesional
La jornada permite definir un recargo así:
Código Tipo Porc. Recargo
1 Diurna 5%
2 Nocturna 10%
El valor total de matrícula (VTM) se calcula así:
V. T. M. = valor base de matrícula + (valor base de matrícula * Porc. recargo)
- (valor base de matrícula * Porc. Desc)
Ejemplo: El alumno tiene el código 12345. La liquidación seria:
Valor base de Mat. 300.000 (tipo de carrera es “1” Profesional)
Recargo 30.000 (la jornada “2” es nocturna con recargo del 10%)
Descuento 30.000 (el consecutivo es impar “345” y tiene un Desc 10%)
V.T.M = 300.000

46- La empresa “minutos” ofrece la venta de minutos de celular de acuerdo a las siguientes
condiciones:
La tarifa se cobra por minutos y segundos aproximados de la siguiente forma: Si el número de
segundos es mayor de 30 se cobra un minuto completo, pero si es menor o igual a 30 no se
cobran los segundos excedidos.
La tarifa por minuto está dada por la siguiente tabla
Tiempo de conversación Valor a pagar
De 1 a 5 minutos 300 pesos por minuto
De 5 a 10 minutos 200 pesos por minuto
Más de 10 minutos 1500 pesos por los 10 primeros minutos más 100
pesos por minuto que se exceda de los 10 minutos
La empresa ofrece el 10% de descuento sobre el total a pagar, para las llamadas que cuesten más
de 1600 pesos. Dado el tiempo de conversación de una persona en minutos y segundos (dos
datos separados) determinar el valor a pagar.

47- Calcular el valor a pagar de la factura del celular conociendo el tipo de plan, la cantidad de
minutos y de mensajes de texto consumidos en el mes, según la siguiente tabla:
Tipo de plan Minutos Básicos Mensajes Texto Básicos Cargo Básico
1. Ideal 100 10 80.000
2. Extensión 135 20 120.000
3. Familiar 425 30 180.000
Cada minuto extra tiene un costo de 855 pesos y los mensajes de texto un costo de 370 pesos
(Para cualquier plan).

48- En central de abastos de Pamplona (bodegas donde se almacena al por mayor) se ha


establecido un mecanismo para el ingreso de vehículos que permite el cobro de parqueadero
según las siguientes condiciones: Al centro de abastos entran vehículos con dos propósitos,
algunos entran a descargar productos y otros entran a cargar (estos son los dos tipos de servicio
que presta el centro de abastos 1. Cargue y 2.descargue).
A los vehículos que entran a descargar se les cobra de acuerdo a la siguiente tabla
Universidad de Pamplona 20
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Peso transportado Menos de 10 toneladas 10 o más toneladas


Tipo de producto
1. Perecedero 10000 pesos por tonelada 7000 pesos por tonelada
2. No perecedero 50000 pesos por todo el 50000 por las primeras 10 toneladas y a
producto transportado 5000 pesos cada tonelada que exceda de
10
A los vehículos que entran al centro de abastos a cargar se les cobra por el tiempo que
permanecen dentro así: Las primeras dos horas son gratis, pero las horas extras que permanecen
dentro del parqueadero se cobran a 2000 pesos la hora.
Hacer una función que permita calcular el total a pagar por el servicio de parqueadero de un
vehículo.

49-Suponiendo que la universidad de Pamplona ha decidido cambiar la tabla de costos de


matrícula para sus estudiantes y desea que se realice un programa de computación que facilite el
cálculo del costo de la matrícula para un estudiante. Las nuevas reglas para la liquidación de la
matriculas son:
El valor base de la matricula depende del total de créditos matriculados por un estudiante, un
crédito cuesta el 10% de un salario mínimo legal vigente.
Los programas académicos están clasificados en tres grupos así: 1. de ingenierías, 2. de salud, 3.
Otros.
Dependiendo de esta clasificación y del sexo del estudiante la matricula tiene un incremento de
acuerdo a la siguiente tabla:
Sexo→ Mujeres Hombres
Tipo de programa ↓
1. Ingenierías 10% 15%
2. Salud 20.7% 32.5%
3. Otros 3.2% 4.5%
Para las mujeres hay un descuento especial, dependiendo del número de hijos que tenga de
acuerdo a la siguiente tabla:
Número de hijos ↓ Descuento
Menos de 3 hijos 30.000 pesos por cada hijo
Entre 3 y 5 hijos 50% de descuento sobre el costo base de matricula
Más de 5 hijos 80% de descuento sobre el costo base de la matricula

50-La secretaria de transito requiere un programa para generar de forma automática la


liquidación del impuesto de vehículos para el presente año.
Para generar el precio a pagar por concepto de impuesto, se requiere el valor comercial del
automóvil, el número de placa (número de tres dígitos) y el mes (número de 1 a 12) en el cual se
va a realizar el pago.
Con el dígito central de la placa se determina el tipo de automóvil, lo cual genera el precio básico
del impuesto como se muestra en la siguiente tabla
Dígito central de la placa Tipo de Vehículo Impuesto básico
0 a5 Particular 15 % del valor comercial
6y7 Servicio Publico 18% del Valor comercial
8y9 Camioneta 20% del Valor comercial
Sobre el impuesto básico además se genera un descuento o recargo inicial, dependiendo del mes
en que se paga, como se ilustra en el siguiente cuadro.
Número del mes de Pago Descuento o recargo inicial
1-4 Descuento del 15%
5 Se paga el impuesto básico
Universidad de Pamplona 21
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

6 -7 Recargo del 20%


8 en adelante Recargo del 40%
Adicional al descuento básico, se ha sorteado un descuento de 2% adicional sobre el valor
comercial, para los vehículos cuya suma del primer y último digito de la placa sea par, y de 3%
para los que dicha suma sea impar.

Realizar las funciones necesarias para calcular el precio a pagar por concepto de impuesto de un
vehículo dado.

51-Calcular el costo total de los pasajes aéreos para un viajero en la aerolínea VIENTOS AIR,
para ello el viajero debe suministrar los siguientes datos para registrar su reserva:
Clase en la que desea viajar.
Destino.
Tipo de viaje.
Número de pasajes a adquirir.
Los costos de un (1) pasaje (en pesos) de acuerdo a la clase en que se viaja y a su destino son:
Miami Madrid
Destinos
Clases
Primera 1300000 2700000
Segunda 1120000 2500000
Tercera 1100000 2320000
Se debe tener en cuenta que el tipo de viaje corresponde a la siguiente tabla:
1 De negocios
2 Familiar
3 Turístico individual
Cuando el viaje sea de negocios no se realizará descuento al pasaje, cuando sea familiar el
descuento será del 7% para cada pasaje individual, cuando sea turístico individual el descuento
será del 4,75%. Además, dependiendo del número de pasajes a adquirir se realizará un descuento
adicional de acuerdo a la siguiente tabla:
Rango Descuento
3–5 2,6%
6 – 10 5,38%
11 y más 7,24%

52- Las series de Taylor se definen por medio de sumatorias.


Para el cálculo del seno de x (x dado en radianes) (realmente las sumatorias son hasta infinito,
pero para efectos de programación se han acotado lo suficiente para que se puedan realizar los
cálculos y que el resultado sea aproximado al verdadero valor)...
x3 x5 x7 x 2 k 1
Seno( X )  x    ...( 1) k ..... utilizando notación de sumatoria sería:
3! 5! 7! (2 k  1)!
15
x 2 k 1
Seno ( x)   (1)
k 0
k

( 2k  1)!
Universidad de Pamplona 22
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Diseño estructurado para la función Seno

Realizar el análisis respectivo para cada una de las siguientes series y desarrollar, probar y
documentar las funciones que se consideren necesarias.
x2 x4 x6 k x
2k
Para el coseno Cos ( x)  1     ...  (1)  ..... Utilizando notación de sumatoria
2! 4! 6! 2k!
15
x 2k
sería: Cos( x )   ( 1)
k

k 0 ( 2 k )!
Universidad de Pamplona 23
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------


x2 x3 x4 xi
Para el exponencial e x  1  x    .... Utilizando notación de sumatoria e x  1  
2! 3! 4! i 1 i!
2 k 1
1  x 1 

Para el logaritmo natural ln( x)  2  
k 0 2k  1 x  1 

 1k 1
Para calcular el valor de pi   4 
k 1 ( 2k  1)
Hacer las funciones necesarias para que dado un valor real de X se calcule Seno(x), Cos(x) y ex,
utilizando las series de Taylor descritas anteriormente.

53- Hacer una función que dado un X y un N calcule la siguiente sumatoria


N
( x  1) 2k

 ( 1)
k 1
k

( k  1)!

54- Se dice que un número N es número perfecto si la suma de sus divisores propios es igual a él
mismo.
El conjunto de divisores propios de un número N, está formado por todos sus divisores, excepto
él mismo. Ejs, los divisores propios de 9 son 1 y 3. Los divisores propios de 6 son 1,2 y 3.
Por lo tanto 6 es un número perfecto porque la suma de sus divisores propios 1 + 2 +3 es igual a
él mismo (a 6). Hacer una función que determine si un número es perfecto o no.

55- Hacer un programa que calcule los N-esimo término de la sucesión: 1, 4, 2, 8, 4, 16, 8,
...... Determinada por:
a1=1
a2= 22 / a1 = 4
a3= 23 / a2 = 2
a4 = 24 / a3 = 8
.....
ak= 2k / ak-1

56- El número de combinaciones de m elementos tomados de n en n está determinado por


 m m!
   Haga una función factorial y una función combinarlo con dos parámetros n y
 n  n !( m  n) !
m. Recordar que n y m son positivos y que si n es mayor que m la combinatoria es cero.

57- Se dice que dos números a y b son “amigos” si cada uno de ellos es la suma de los divisores
del otro. Por ejemplo, los más pequeños son 220 y 284; comprobémoslo:
DivisoresDe(220) = (1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110)
SumaDivDe(220) = 284
DivisoresDe(284) = (1, 2, 4, 71, 142)
SumaDivDe(284) = 220
Hacer una función que recibiendo dos números devuelva si son amigos o no

58-Hacer una función que determine si un número es narcisista o no. Un número narcisista es
un Número de n dígitos que resulta ser igual a la suma de las potencias de orden n de sus
dígitos.
Ejemplo: 7 = 71
Universidad de Pamplona 24
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

153 = 1³ + 5³ + 3³.
9474 = 94 + 44 + 74 + 44
El programa deberá contener las siguientes funciones:
 Una función que cuente el número de dígitos de un número entero
 Una función potencia para calcular el resultado del dígito elevado a dicha potencia.
 Una función donde se desglosará el número en cifras, calcule la suma de potencias y diga
si el número es o no narcisista.

59-Hacer una función que dado un número entero n, determine si n es un número factorial (es
decir si existe un k tal que n=k!)

60-Dado un número natural n encuentre su raíz digital.


Raíz digital de un natural: se calcula el natural m sumando los dígitos que componen a n. El
proceso se repite sobre el nuevo número hasta que el resultado sea de un dígito.
Ejemplo: 347  3 + 4 + 7 = 14  1 + 4 = 5  RD(347) = 5

61-Dado un número natural n (de cualquier cantidad de dígitos) hacer una función que
encuentre otro entero m que sea n al revés, invirtiendo el orden de los dígitos y otra función que
permita saber si n es un palíndromo. Si n es un palíndromo, entonces se lee igual de izquierda a
derecha que de derecha a izquierda. Ejemplos: para n=345 el n al revés es 543 y no es
palíndromo. Para n=75357 el n al revés es 75357 y por lo tanto si es palíndromo.
b
k3  kk
62-Calcular la siguiente sumatoria

k a k 5 , para los valores de a y b dados (validando
k 0,k 5
que “a” sea mayor que “b”), y teniendo en cuenta que k no puede ser 5 pues generaría una
división por cero, ni k puede valer 0 pues cero a la cero es indefinido. También tenga en cuenta
que la función potencia debe permitir cálculos de potencias con exponentes negativos dado que k
puede tener valores negativos
8
k 3  k k 43  44 63  66 73  77 83  88
Ejemplo si a= 4 y b=8 entonces k 4 k 5

45

65

75

85
k  0 , k 5
63-Haga una función que determine si un número “n” es deficiente, perfecto o abundante.
Un entero positivo se dice que es un perfecto si la suma de sus divisores propios es igual que
el número Por ejemplo, 6 es perfecto porque 1+2+3=6;
Un entero positivo se dice que es un deficiente, si la suma de sus divisores propios es menor
que el número Por ejemplo, 8 es deficiente porque sus divisores propios son 1, 2 y 4, y 1+2+4 <8;
Un entero positivo se dice que es un abundante si la suma de sus divisores propios es mayor
que el número. Por ejemplo, 12 es abundante, porque 1+2+3+4+6>12.
Los divisores propios de un entero n son los divisores positivos menores que n.

64-Calcular el valor total de matrícula de un estudiante, la cual se realiza con base a la cantidad
de créditos matriculados en el semestre así:
Los primeros 10 créditos cada uno tiene un costo $15.000
Los siguientes 6 créditos cada uno tienen un costo $25.000
El restante de créditos matriculados, cada uno tiene un costo $35.000
Dependiendo de la edad del estudiante se puede obtener un descuento así:
Universidad de Pamplona 25
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Edad Descuento
<20 10% de los costos por créditos matriculados
>40 5% de los costos por créditos matriculados
>20 y <40 20% de los costos por créditos matriculados

65-Escriba una función que dado un número N determine si es un Número Feliz:


Número feliz: todo número natural de dos o más dígitos que cumple la condición de que si se
suma los cuadrados de sus dígitos y se sigue el mismo proceso con los resultados parciales hasta
obtener un solo dígito... el resultado es 1. Por ejemplo, el número 203 es un número feliz ya que
2 2  0 2  32  13 el mismo proceso para el 13 es 12  32  10 , el mismo proceso para el 10
es, 1  0  1 ...... como el resultado es de un solo dígito ( en caso contrario seguir el proceso),
2 2

se detiene el proceso para este ejemplo (porque el resultado es de un solo dígito)

19 es feliz porque 12 + 92 = 82 el mismo proceso para 82 .... 82 + 22 =68 el mismo proceso para 68
62+82 = 100 el mismo proceso para 100 12 + 02 + 02 = 1

5 Recursividad

66- Haga una función recursiva de tal manera que calcule el factorial de un número entero dado,
 1 si n0
de acuerdo a las siguientes reglas: n!  
n( n  1)! si n0

67- Hacer una función que dado un número natural n encuentre su raíz digital.
La raíz digital de un natural n se obtiene calculando el natural m sumando los dígitos que
componen al número n. El proceso se repite sobre el nuevo número hasta que el resultado sea de
un dígito.
Ejemplo: 347  3 + 4 + 7 = 14  1 + 4 = 5  RD(347) = 5
Nota: utilice las funciones “div” y “mod” que sirven para calcular la división entera y el residuo
de la división entera.

68-Hacer un programa que calcule un combinatorio según la siguiente definición recursiva:


n n
      1
0 n
 n   n  1  n  1
       
 k   k   k  1

69-Dadas las siguientes afirmaciones sobre el máximo común divisor mcd de dos números x, y:
El mcd de un número y él mismo, es el mismo número
El mcd entre uno (1) y cualquier otro número es uno (1)
El mcd entre dos números es igual al mcd entre el menor de los dos y la diferencia (el mayor
menos el menor)
Por ejemplo el mcd entre 5 y 15 es igual al mcd entre 5 (el menor) y la diferencia que es 10 (15-5).
El mcd entre 10 y 5 es igual al mcd entre 5 y la diferencia 5 (10-5). El mcd entre 5 y 5 es 5.
Universidad de Pamplona 26
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Por lo tanto el mcd entre 5 y 15 es 5.


Hacer una función que calcule el máximo común divisor entre dos enteros positivos.

70- Calcular una potencia aplicando las siguientes reglas: Cero a cualquier número diferente de
cero da cero. Cualquier entero diferente de cero elevado a la 0 da como resultado 1. Un número
X elevado a la Y es igual a X multiplicado por la potencia de X a la Y-1. Un número X diferente de
cero elevado a un número negativo Y es igual a 1 sobre la potencia de X elevado a la –Y

71- Hacer una función que cuente el número de dígitos de un número entero dado.

72- Hacer una función que reciba un entero n y devuelva un valor de verdad que indique si el
número n es o no narcisista.
Un número narcisista es un Número de n dígitos que resulta ser igual a la suma de las potencias
de orden n de sus dígitos.
Ejemplo: 1 = 11
153 = 1³ + 5³ + 3³.
9474 = 94 + 44 + 74 + 44

73- La primitiva población de OSCANDIA se rige por un modelo macroeconómico particular de


oferta y Demanda para su producto básico: el OSCAO. En este modelo el precio del producto, su
oferta y su demanda en un periodo i-esimo, están dados en función de los datos de ese periodo y
del periodo anterior por las siguientes fórmulas:
sea:
Pi = Precio en el periodo i-esimo
Oi = Oferta en el periodo i-esimo
di = Demanda en el periodo i-esimo
d i 1
Pi  Pi 1 *
Oi 1
Pi 1
Oi  * (0.9 * Oi 1  01
. * d i 1 )
Pi
Pi 1
d i  d i 1 *  Ratacrec
Pi
Donde Ratacrec es un valor constante igual a 100.
Haga una función que reciba el precio, la oferta y la demanda del OSCAO en un periodo inicial
(i=0), calcule el precio en un determinado periodo n.
Universidad de Pamplona 27
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

6 Estructuras de datos

Unidimensionales o vectores
Arreglos Bidimensionales o matrices
Multidimensionales
Registros
Estáticas Registros con campos que
Combinaciones son arreglos
Estructuras de Arreglos de registros
Datos

Dinámicas Listas encadenadas


Árboles
Grafos en general

Se denominan estructuras estáticas aquellas colecciones de datos cuyo número de datos se


define en tiempo de diseño, es decir cuando se está escribiendo el código del programa y por eso
durante la ejecución del programa la colección de datos no podrá crecer en capacidad, es decir
que si una estructura está diseñada para almacenar 50 datos, en tiempo de ejecución no podrá
incrementarse este tamaño, por lo tanto solo podrá almacenar esos 50 datos.
Mientras que las estructuras dinámicas son colecciones de datos que en tiempo de ejecución
pueden incrementar el número de miembros (datos) que pertenecen a la estructura. Este es el
caso de las listas encadenadas para lo cual se requiere conceptos (que no son del alcance de esta
materia) como la asignación dinámica de memoria.
En algunos lenguajes se permite que en tiempo de ejecución se cambie el tamaño de algunas
estructuras estáticas como los vectores…pero para evitar ambigüedad de conceptos, esto no se
tendrá en cuenta. En este curso las estructuras estáticas no cambian de tamaño en tiempo de
ejecución.

6.1 Arreglos
Dentro de las estructuras de datos estáticas están los arreglos que son colecciones de datos del
mismo tipo, referenciadas con un solo nombre, y que para acceder a cada uno de los datos de la
colección se hace uso de subíndices.
Cuando solo se necesita un subíndice para acceder a los datos de la colección, a estas
estructuras se les llama arreglos unidimensionales o vectores. Si se necesitan dos subíndices se
les llama arreglos bidimensionales o matrices y si es necesario tres o más subíndices se les
conoce como arreglos multidimensionales.

6.1.1 Arreglos unidimensionales (vectores)


Un vector o arreglo unidimensional es una colección de datos del mismo tipo, referenciada con
un solo nombre y que para acceder a cada uno de sus datos, se necesita un subíndice que en
este caso indica la posición (de orden) donde se encuentra almacenado un dato, dentro de la
colección.
Universidad de Pamplona 28
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Dato que está almacenado en la


cuarta posición de la colección (vector)
Nombre de la colección de datos
Nombre del Vector
A[1]
A[n-1]

A[3]

A
234 45 22 65 21 45 127
0 1 2 3 4 ..... n-1

Subíndice que indica la posición 234, 45,22,65, etc son datos del mismo tipo
donde se encuentra almacenado (en este caso todos son enteros), que están almacenados
un dato dentro de la colección(vector) en esta colección (vector o arreglo unidimensional),
llamada A y que tiene capacidad para almacenar n datos

74- Hacer una función que dado un vector de números enteros determine cuantos números son
positivos

75- Hacer una función que determine cuál es el menor de los datos de un vector.

76- Hacer una función que dados dos vectores del mismo tamaño retorne un vector con la suma
de los dos vectores recibidos como parámetros.

77- Hacer una función que invierta el orden de los elementos de un vector.

78- Contar cuantas veces esta un elemento en un vector.

79- Remplazar un dato por otro dentro de un vector.

80- Hacer función que dado un vector retorne un vector espejo, es decir invertir cada uno de los
números del vector de entrada en el vector de salida.
A B (espejo)
0 12345 54321
1 589 985
2 4245 5424
…. …..
n-1
81- Hacer las funciones necesarias para realizar operaciones entre conjuntos, recibiendo dos
vectores y retornando un vector con el resultado de la operación
 A intersectado con B Valores del primero que están en el segundo.
 A unido con B Valores del primero y del segundo en un solo vector (sin repetir datos).
 A – B los valores que están en A y que no están en B
 A diferencia simétrica con B, son los que están en A que no están en B y los que están en
B que no están en A
Universidad de Pamplona 29
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

82- Hacer una función que dado un vector de enteros retorne un nuevo vector los números
primos y otro función que retorne solo los números perfectos.
Un número es primo si solo tiene dos divisores, 1 y él mismo, ejemplos 1,2,3,5,7,11 etc.
Un número es perfecto si la suma de sus divisores propios es igual a él mismo. Ejemplo el 6,28,
etc. Los divisores propios son todos los divisores excepto el mimos numero.
Por ejemplo para un vector dado como el siguiente
2 40 25 7 40 28 17 45 6 0 4 5
Los datos clasificados en el vector de primos es:
2 7 17 5
Y el vector de perfectos es
28 6

83-En la piscina de la universidad se va a realizar un campeonato. Los deportistas serán


calificados por un jurado de 10 personas. Para calcular su puntuación se determina el promedio
de los puntajes dados por el jurado calificador pero con la única salvedad que la peor y la mejor
nota no se tienen en cuenta.
Ejemplo:
4.9 7.6 5.5 3.1 7.9 4.6 9.0 8.4 5,4 6,2
0 1 2 3 4 5 6 7 8 9
Calificación final = (4.9+7,6+5,5+7,9+4,6+8,4+5,4+6,2)/8
Las calificaciones 3,1 y 9,0 no son tenidas en cuenta por ser la más alta y la más baja

84- Hacer una función que intercale los elementos de dos vectores de igual tamaño. Por ejemplo
si los dos vectores son:
2 40 25 7 40 28 17

3 45 23 2 25 45 72
El vector resultante es:
2 3 40 45 25 23 7 2 40 25 28 45 17 72

85-Se tiene el arreglo que almacena el valor de las ventas realizadas en una empresa así:
ventas
0 1 2 10 11
vene vfeb vmar . . vnov vdic
Donde se almacenan las ventas mensuales de una empresa.
Elabore las funciones necesarias para que se respondan las siguientes preguntas:
¿En qué mes se dieron las ventas máximas de la empresa?
¿A cuánto ascendieron las ventas máximas?
¿Cuál fue el total de las ventas?
¿Cuál fue el promedio de las ventas?

86-Dado un vector V1 de tipo entero de tamaño n, hacer las funciones necesarias para:
Invierta el vector V1
Genere un vector V2 que será el contenido de las posiciones impares de V1 ya invertido a través
de una función.
Ejemplo:
V1
5 7 1 3 60 30
Universidad de Pamplona 30
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

0 1 2 3 4 5
V1 invertido
30 60 3 1 7 5
0 1 2 3 4 5
V2
60 1 5
0 1 2

87-Dados 2 vectores V1 y V2 de tipo entero de tamaño n y m, hacer las funciones necesarias


para que:
Genere un vector V3 que es el resultado de concatenar (Unir) V1 y V2
Genere un vector V4 a partir de V3, donde V4 contiene aquellos números perfectos que existen
en V3.
Nota: Un número perfecto es aquel número tal que la suma de sus divisores propios es igual al
mismo número. Y los divisores propios de un número son todos sus divisores excepto el mismo
número. Ejemplo.
V1
4 6 12 28 60 5
0 1 2 3 4 5
V2
2 45 496
0 1 2
V3
4 6 12 28 60 5 2 45 496
0 1 2 3 4 5 6 7 8
V4
6 28 496
0 1 2
88-Realice una función que construya un vector S a partir de los datos del vector T así:
S(0)=T(0)
S(1)=T(0) -T(1)
S(2)=T(0)+T(1)+T(2)
S(3)=T(0) - T(1) +T(2) -T(3)
S(4)=T(0) + T(1) +T(2) + T(3) + T(4)
S(5)=T(0) - T(1) + T(2) - T(3) + T(4) - T(5)
S(k)= ……..
Nótese que para las posiciones pares de S se realizan solo suma de elementos de T, pero para las
posiciones impares de S se realizan sumas y restas intercaladas de elementos de T.

89- Hacer las funciones que considere necesarias para contar cuantos elementos de un vector de
números están por encima del promedio

90- Hacer una función que retorne un vector con las posiciones donde se encuentra un elemento
dado.
Por ejemplo: si el vector es x = [7, 9, 4, 7, 2, 7, 15] buscar (7, x) retornará el vector [0, 3, 5] que
corresponden a las posiciones donde se encuentra el dato 7

91- Hacer una función que retorne verdadero en caso de que un vector este ordenado
ascendentemente, de lo contrario retornará falso
Ejemplos: si el vector x=[1,3,4,6,8,9,11] el llamado estaordenado(x) retornará verdadero (True)
Universidad de Pamplona 31
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Si el vector y=[1,3,4,2,8,9,11] el llamado estaordenado(y) retornará falso (False)

92- Hacer una función que dados dos arreglos unidimensionales de números enteros
ORDENADOS, ascendentemente, retorne la lista ordenada de la mezcla de los dos. Por ejemplo,
si los dos arreglos son x=[1, 3, 6, 9, 17, 45, 60] y=[2, 4, 10, 17,19] el llamado a la función
mezclar (x , y) retornará el vector [ 1, 2, 3, 4, 6, 9, 10, 17, 17, 19, 45, 60]

6.1.2 Vectores paralelos

93-Una compañía ha clasificado a sus n (1  n  50) empleados dentro de los grupos 1 y 2. Cada
empleado del grupo 1 recibirá, a partir de ahora, un aumento de $250.00 a la semana sobre su
sueldo actual, mientras que a cada uno de los del grupo 2 sólo se le dará $150.00 adicional por
semana. La información que se proporciona de cada empleado es: clave del empleado
(comprendida entre 100 y 2500, inclusive), grupo al que pertenece (1 o 2) y sueldo semanal
actual (entre $300.00 y $6000.00). Si un empleado del grupo 1 con el nuevo sueldo gana
semanalmente más que el sueldo promedio del grupo, entonces debe cambiar al grupo 2.
Realizar las funciones necesarias para calcular el sueldo promedio de los empleados por grupo y
calcular el promedio general de todos, sin considerar el grupo. Y calcular cuántos empleados
cambiaron del grupo 1 al 2.

Nombre del vector de enteros Nombre del vector de enteros


que almacena las claves (códigos) que almacena el grupo
de los empleados al cual pertenece cada empleado

Nombre del vector de números


reales que almacena el sueldo actual
clave grupo sueldo de cada uno de los empleados
0 0 0

1 1 1 sueldo[0] es el sueldo actual


Subíndice del primer empleado
de cada uno 2 2 2
de los vectores
3 3 3 sueldo[2] es el sueldo actual
del tercer empleado
.. .. ..
clave[2]
código del n-1 n-1 n-1 sueldo[n-1] es el sueldo actual
tercer del último empleado
empleado
grupo[2]
grupo al que grupo[n-1]
pertenece el grupo al que
tercer pertenece el
empleado último
empleado

94- Dados dos vectores V1 y V2 de N elementos cada uno, ordenarlo de mayor a menor de forma
paralela usando a V1 como vector base
Universidad de Pamplona 32
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

95-De los 100 alumnos de programación I, se desea almacenar la siguiente información, para
cada uno de ellos, en tres vectores que corresponden a la siguiente información: Código, Edad,
Zona (Los datos serán [1. Urbano 2. Rural])
La zona permite definir el valor de matrícula así:
Zona Valor
2 500.000.oo
1 1.000.000.oo
El valor de matrícula tendrá un descuento, del 30% solo para los estudiantes menores de edad.
(un menor de edad es el estudiante que tiene menos de 18 años)
Realizar las funciones necesarias que permita
Calcular el valor de la matrícula de cada estudiante
Contar los estudiantes menores de edad, que residen en la zona Urbana y Rural

96-El instituto de bienestar familiar necesita manejar la información de adultos mayores


beneficiados en uno de sus programas sociales. Para ello requiere manejar la siguiente
información: documento de identidad, edad, estatura (en metros), peso (kilogramos). Se debe
calcular el índice de masa corporal para cada individuo mediante la fórmula IMC = masa(kg) /
estatura2(metros). Si el índice de masa está por debajo de 21, se dice que hay desnutrición, si
está entre 21 y 25, está en su peso normal y por encima de 25 hay sobrepeso. Realizar las
funciones necesarias para que permitan:
 Determinar el índice de masa corporal para cada individuo
 Determinar la cantidad de individuos con sobrepeso, con peso normal y con desnutrición.
 Determinar el promedio de edades de los individuos, así como el mayor de todos y el más
joven de todos.

6.1.3 Arreglos Bidimensionales o Matrices

Una Matriz o arreglo bidimensional es una colección de datos del mismo tipo, referenciada con
un solo nombre y que para acceder a cada uno de sus datos se necesita dos subíndices que
indican la posición (la fila y la columna) donde se encuentra almacenado un dato, dentro de la
colección.
En este caso los datos están organizados en dos dimensiones (Filas y columnas) y por esta razón
se requiere de dos subíndices para ubicar un dato en particular. Uno de los subíndices indicará
la fila donde se encuentra el dato y el otro subíndice la columna.
Universidad de Pamplona 33
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Subíndice que enumera las columnas de


Nombre de la colección de datos la colección de datos (matriz)
Nombre de la Matriz
Columna 2
M 0 1 2 c-1 M[0][c-1]
.....
0 3.5 2.7 22.0 41.3
1 5.4 10.2 0.5 4.3
Fila 1
2 14.3 9.9 2.2 7.0 M[1][2]

...
f-1 4.3 2.9 0.0 3.2 M[f-1][c-1]

3.5, 2.7, 5.4, 10.2, etc son datos del mismo tipo
Subíndice que enumera las filas de (en este caso todos son números reales),
la colección de datos (matriz) que están almacenados en esta colección
(matriz o arreglo bidimensional),
llamada M y que tiene capacidad para almacenar f x c datos
Es decir que la matriz tiene f filas y c columnas

97-Dada una matriz de 5x5 hacer las funciones necesarias para, hallar la traza (la suma de la
diagonal principal), hallar la suma de la diagonal secundaria, determinar si es un cuadrado
mágico. Para ser un cuadrado mágico debe cumplir las siguientes reglas: la suma de la diagonal
principal, segundaria, de cada una de las filas, y de cada una de las columnas deben dar en
todas lo mismo.
98-Dadas dos matrices de NxM hacer una función que construir una tercera matriz con la suma
de las dos anteriores.

99- Hacer una función para determinar si es una matriz es identidad. Para ser matriz identidad
debe cumplir con las siguientes reglas: Todos los elementos de la diagonal principal son 1 y los
demás deben ser 0.

100-Dadas dos matrices una de 5x3 y otra de 3x2 hacer una función para crear una tercera
matriz con la multiplicación de ambas.

101-Dada una matriz cuadrada de nxn hacer una función que intercambie los contenidos de dos
filas dados como parámetros.

102- Hacer una función que halle la transpuesta de una matriz, convirtiendo las filas en
columnas y las columnas en filas
Por ejemplo, si la matriz es:
4 7 1 3 5
2 0 6 9 7
3 1 2 6 4
Entonces la matriz transpuesta es:
4 2 3
7 0 1
1 6 2
3 9 6
5 7 4
Universidad de Pamplona 34
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

103- Considere la siguiente definición: “una matriz es rala si para cada fila y para cada columna
todos sus elementos son 0( cero) excepto uno elemento que es un 1 (uno). Haga una función que
determine si una matriz es o no rala.

104-(*) Elabore un programa que dada una matriz de nxN calcule la inversa usando el método de
Gauss-Jordan.

105- (*) Resuelva el siguiente sistema de ecuaciones lineales utilizando matrices para su
representación y solución.
2 x – 2y + z = 1
-x + y + z = 0
-x +3y + 5z = 0

106-Una matriz cuadrada A se dice que es simétrica si A(i, j) = A(j, i) para todo i, j dentro de los
límites de la matriz. Elabore un función que determine si una matriz es simétrica o no

107- Generar la siguiente matriz de orden NxN (N mayor que 3). El ejemplo es para matrices 5x5

108- Generar la siguiente matriz de orden NxN (N mayor que 3). El ejemplo es para matrices 5x5

109-Una empresa tiene n empleados que trabajan en tres departamentos distintos (1001,
1002,1003) se ha elaborado un registro de cada uno de ellos: cedula, edad, sexo, salario,
departamento y años de antigüedad. Realice las funciones necesarias que permita determinar:
 Número de empleados hombres y mujeres.
 Cedula de la persona con el salario más bajo.
 Número de personas por departamento
 Cedula de la persona más antigua de la empresa.
 Cedula de la persona más joven de la empresa.
Universidad de Pamplona 35
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Cédulas de los Columna 2: Sexo Columna 4


empleados 1=Hombre Departamento
columna 0 2=Mujer
Nombre de la Matriz Columna 3 Columna 5
Edades
Salarios Años de antigüedad
columna 1
0 1 2 3 4 5 Salario del primer
datos empleado datos[0][3]
0
1 Departamento al que
2 pertenece el segundo
3 empleado: datos[1][4]
...
n
Años de antigüedad
del ultimo empleado
Cada fila contiene los Cédula del primer Sexo del segundo datos[n][5]
datos de un empleado empleado empleado
datos[0][0] datos[1][2]
Cédula del cuarto
empleado
datos[3][0] Para poder usar una matriz en este caso
todos los datos (cédula, edad, sexo, salario,
departamento, y años de antigüedad,
tiene que ser del mismo tipo (en este caso enteros)

110-Un observatorio astronómico requiere de un programa que analice una fotografía del cielo
tomada por la noche. La información de la fotografía está almacenada en forma de tabla, donde
cada elemento representa la cantidad de luz que se registró para cada punto. Los valores
registrados van del 0 al 20, por ejemplo:
0 3 4 0 0 0 6 8
5 13 6 0 0 0 2 3
2 6 2 7 3 0 10 0
0 0 4 15 4 1 8 0
0 0 7 12 6 9 10 4
5 0 6 10 6 4 8 0
La persona encargada de analizar la información supone que hay una estrella en (i, j) si: el punto
no se encuentra en las orillas de la fotografía (primera o última fila o columna), y (a[i, j] + a[i - 1,
j] + a[i + 1, j] + a[i, j - 1] + a[i, j + 1]) > 30
Se espera como resultado del análisis, una tabla b con un “*” en las parejas (i, j) en las que se
supone que hay una estrella. El resto de la tabla debe quedar lleno de espacios. La tabla b que
resulta del ejemplo anterior es:
1 2 3 4 5 6 7 8
1
2 *
3
4 *
5 * * *
6
Universidad de Pamplona 36
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Elabore las funciones necesarias para que a partir de una matriz dada se obtenga la matriz que
representa las posibles estrellas

111- (**) Una compañía de transportes que tiene sucursales en 20 ciudades del país, quiere
saber la distancia que recorre un conductor al ir de una ciudad a otra. Los datos referentes a las
distancias están indicados como se muestra a continuación:
0 dist0,1 dist0,2 ... dist0,19
Dist1,0 0 dist1,2 ... dist1,19
Dist2,0 dist2,1 0 ... dist2,19
… … … ... …
Dist19,0 dist19,1 dist19,2 ... 0
Dónde:
Dist (i, j) > 0 representa que hay carretera de la ciudad i a la ciudad j y la distancia existente
entre ambas ciudades.
Dist (i, j) = 0 si i diferente a j, representa que no hay carretera entre la ciudad i y la ciudad j.
Elabore las funciones necesarias que permitan dada una matriz como la descrita, calcular la
distancia que debe recorrer un conductor ir de la ciudad “a” a la ciudad “b”. Si no existe
carretera directa, entonces deberá encontrar una ciudad intermedia “c”, para hacer el recorrido
de la ciudad “a” a la ciudad “c“ y de la ciudad “c” a la cuidad “b”.

112-Una fábrica de bombas hidráulicas tiene una matriz con los insumos necesarios para la
producción de un conjunto de motores. Por ejemplo, suponiendo que la planta produce 7
motores y se utilizan 8 insumos en diferentes cantidades para su producción, la matriz sería:

Insumos

1 2 3 4 5 6 7 8
M 1 10 20 30 40 0 60 10 80
O 2 0 70 0 50 40 30 0 10
T 3 5 10 15 0 10 15 5 0
O 4 10 20 10 20 10 0 10 20
R 5 4 0 8 0 6 8 4 0
E 6 0 6 9 12 15 0 1 24
S 7 20 18 0 14 0 10 8 6
Analizando la matriz anterior, podríamos ver que para producir un motor del tipo 3 es necesario
utilizar 5 unidades del insumo 1…. 10 unidades del insumo 2….. 15 unidades del insumo 3…..
10 unidades del insumo 5….. 15 unidades del insumo 6 y 5 unidades del insumo 7. Por otro lado
se tiene un arreglo con los costos unitarios en pesos de cada insumo:
Costo de Insumos
1 2 3 4 5 6 7 8
3.5 0.1 2.0 1.5 6.0 4.2 2.5 1.3
Se tiene otro arreglo con los pedidos a surtir en el presente mes:
Pedidos del mes de cada motor
1 2 3 4 5 6 7
100 25 75 150 80 90 10
También se tiene un último arreglo con la existencia actual de cada uno de los insumos:
Existencia de Insumos
1 2 3 4 5 6 7 8
120 0 20 60 40 90 10 0
Elabore las funciones necesarias para:
Universidad de Pamplona 37
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

 Obtener un arreglo de m elementos, con el costo de producción de cada motor. Suponga


que el costo de producción de un motor consiste en sumar el producto de insumos
necesarios por el costo unitario de cada insumo.
 Obtener un arreglo de n elementos, con la cantidad de unidades de cada insumo,
necesaria para cumplir con los pedidos del mes.
 Obtener un arreglo de n elementos, cuyos datos indiquen cuál es el costo total por
concepto de cada insumo para cumplir con los pedidos del mes.
 Obtener el costo total (tomando en cuenta todos los insumos) para cumplir con la
producción del mes.
 Obtener un arreglo de n elementos, con la diferencia de los insumos necesarios para la
producción mensual menos los insumos existentes en la planta, con el fin de poder surtir
dichos insumos a tiempo.

113- Dada una matriz de 3x4, las filas representan los productos 0,1,2 y las columnas
representan las sucursales 0,1,2,3...de una empresa, en cada celda de la matriz se registra la
cantidad mensual vendida de productos de la empresa. Se tiene además un vector de 3
posiciones con el costo de venta de cada producto.
Realizar las funciones necesarias para
Calcular un vector de 4 posiciones con el valor total vendido por sucursal
Calcular la sucursal que más dinero recaudo.
0 1 2 3 4 Vector costo de productos
0 1 2 3 5 1 10000
1 2 1 2 2 2 15000
2 3 5 5 3 4 5000

Total 55000 65000 85000 95000 60000


Vendido

114-En una empresa de construcción se lleva el registro de las horas trabajadas por los obreros
en cada uno de los proyectos. La información de las horas trabajadas se almacena en una matriz
de m x n (m hace referencia al número de obreros, n hace referencia al número de proyectos.). La
empresa cuenta con aproximadamente 1000 obreros y tiene como máximo 10 proyectos en
ejecución.
También se tiene la información del valor de la hora por cada proyecto. Ejemplo:
Proyecto 0 Proyecto 1 Proyecto 2 … Proyecto n-1
Obrero 0 25 80 0 10
Obrero 1 40 120 10 0
Obrero 2 50 125 1100 0
… .. …
Obrero m-1 40 56 40 60

Valor de la $10.000 $15.000 $9.000 … $25.000


hora por
proyecto
Definir las funciones necesarias para:
 Determinar en un vector la Cantidad total de horas trabajadas por cada uno de los
obreros.
 Determinar en un vector el valor total pagado por mano de obra de cada proyecto.
 Determinar el proyecto más costoso de la empresa.
 Indicar la cantidad promedio de horas trabajadas por todos los obreros.
Universidad de Pamplona 38
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

6.2 Registros
Los registros a diferencia de los arreglos son colecciones de datos que pueden albergar datos de
diferentes tipos. A los datos que pertenecen a dicha colección se les denominan campos y se
referencia con un nombre diferente para cada uno de los campos. Para tener acceso a cada uno
de los datos de la colección (registro) se hace uso de la notación de punto así:
nombreregistro.nombrecampo.

Nombre de la colección de
Campo código (número entero)
datos que pueden ser de diferente tipo
Nombre del registro E.codigo

E
codigo 45678 E.nombre

Campo nombre nombre Campo sexo


(cadena de caracteres) Pepito perez (caracter)

Campo edad edad 19 sexo M E.sexo


(número entero)

E.edad
estatura 1,80

Campo estatura 45678,”Pepito Perez”,19,”M”, 1,80


E.estatura
(número real) son los datos que hacen parte
de esta colección (registro) y que
frecuentemente son de diferente tipo

Otro ejemplo de registros


A es el nombre B es el nombre
del registro A.codigo del registro B.codigo
entero
entero

A B
codigo 45678 codigo 4523
A.nombre
cadena de nombre Pepito perez nombre Juanita Jaimes
caracteres

edad 19 sexo M edad 17 sexo F


A.edad
entero
nota 4.5 nota 3.7

A.nota
número real A.sexo B.nota
caracter Número real
Universidad de Pamplona 39
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Registros Anidados
Registros en los cuales uno de sus campos también es registro
A es el nombre
del registro A.codigo // En lenguaje c
entero #include<stdio.h>
struct tfecha{
int dia,mes,anio;
A };
codigo struct testudiante{
45678 int codigo;
A.nombre A.sexo char nombre[40];
cadena de nombre Pepito perez caracter int edad;
caracteres char sexo;
float nota;
edad 35 sexo M tfecha fechan;
A.edad
};
entero
int main{
nota 4.5 A.fechan.día testudiante A,B;
entero
}
A.nota
número real fechan dia 1
mes 6 A.fechan.mes
A.fechan entero
que también anio 1970
es un registro A.fechan.anio
entero

Registros con vectores


Ejemplo de registros en los cuales uno de sus campos es un vector
A es el nombre
del registro A.codigo // En lenguaje c
entero #include<stdio.h>
struct tfecha{
A int dia,mes,anio;
codigo 45678
A.nombre };
A.sexo struct testudiante{
cadena de caracteres nombre caracter
Pepito perez int codigo;
A.edad char nombre[40];
entero int edad;
edad 35 sexo M A.notas[2] char sexo;
A.nnota real int nnotas;
entero que indica nnotas 3 float notas[10];
el número de notas A.definitiva float definitiva;
que tiene el estudiante notas real tfecha fechan;
3.5 1.5 4.0 .... };
0 1 2 10
int main{
definitiva 3.0 A.fechan.día testudiante A,B;
A.notas[0] entero
real }
fechan dia 1
mes 6 A.fechan.mes
A.fechan entero
que también anio 1970
es un registro A.fechan.anio
entero

Vectores de registros
Universidad de Pamplona 40
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Un vector para el cual cada una de sus casillas almacena un registro


curso es el nombre
del vector con capacidad curso [0].codigo
para almacenar información curso [n-1].sexo
de n estudiantes curso [n-1].notas[1]
curso [1].nombre
curso
codigo 45678 codigo 345 codigo codigo
nombre Pepito Perez nombre Juanita Jaimes nombre nombre
sexo M sexo F sexo sexo
nnotas 3 nnotas 2 nnotas nnotas
notas notas notas notas
3.5 1.5 4.0 .... 3.5 4.5 .... .... ....
0 1 2 10 0 1 2 10 0 1 2 10 0 1 2 10
definitiva 3.0 definitiva 4.0 definitiva definitiva

fechan fechan fechan fechan


dia 1 dia 29 dia dia
mes 6 mes 2 mes mes
anio 1970 anio 1980 anio anio

i
0 curso[1].fechan.mes 1 ........... n-1
Subíndices del vector curso[1].definitiva curso[i].notas[2]
curso curso[1].fechan.anio

115-Se tiene un conjunto de n parejas de datos Xi, Yi donde cada pareja representa las
coordenadas del punto i de un polígono irregular de n lados. Suponga que las coordenadas se
proporcionarán en orden adyacente. Elabore una función que dado un vector de coordenadas de
un polígono permita obtener el área del polígono irregular utilizando la siguiente fórmula:
Área = [(X0+X1)*(Y0-Y1 ) + (X1+X2)*(Y1-Y2)+. . .+ (Xn-1+X0)*(Yn-1-Y0)/2
Suponga que los Xi ,Yi son reales y n el número de lados del polígono.

116-La información de todos los empleados de una cierta compañía está almacenada en una
variable llamada “empresa” definida como un arreglo de registros. La información con que se
cuenta de cada empleado es: nombre, sexo y sueldo. Escriba la declaración para el registro y el
arreglo “empresa”.
Considerando las declaraciones que hizo, realice las funciones necesarias para:
 Contar cuanto hombre y cuantas mujeres hay.
 Contar los empleados que ganan más de $2,500.00
 Incrementar el sueldo a todos los empleados en un 30%

117-Realice las funciones necesarias que permitan almacenar la siguiente información para un
censo poblacional en un municipio:
Nombre de la persona (Cadena de caracteres)
Número de documento de identidad (Entero largo)
Tipo de documento („C‟ = Cédula, „T‟ = Tarjeta de Identidad)
Fecha de nacimiento (Compuesto por tres enteros uno para el día, otro para el mes y otro para el
año)
Edad (Entero que debe guardar los AÑOS cumplidos de la persona)
Universidad de Pamplona 41
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Defina una estructura (registro) para almacenar la información de cada persona censada, para
esto se utilizará un arreglo de registros del tipo definido anteriormente: Se sabe que el municipio
tiene máximo 1000 habitantes.
Realizar las funciones necesarias para.
 Calcular la edad de las personas censadas, conociendo la fecha actual
 Calcular el promedio de edad de todos los censados.
 Ordenar la información de las personas ascendentemente de acuerdo a la edad

118-En una ciudad existe una empresa administradora de Restaurantes. Para llevar un mayor
control de la información de sus ventas se desea un programa que haga uso de vectores de
registros para procesar la información de las ventas que realiza cada uno de los restaurantes.
Esta información estará almacenada en un vector como el que muestra la figura
NitRestaurante NitRestaurante
NombreAdministrador NombreAdministrador
NumMesas NumMesas
Ventassemanales: Ventassemanales:
Fechadeventa Fechadeventa Fechadeventa Fechadeventa
dia dia dia dia
mes mes mes mes
anio anio anio anio
ValorVenta ValorVenta ValorVenta ValorVenta

NumPlatosvendi NumPlatosvendi NumPlatosvendi NumPlatosvendi

0 1 ….. 6 0 1 ….. 6
TotalVentasdelaSemana TotalVentasdelaSemana

0 1 … N-1
Hacer las funciones necesarias que permitan almacenar la información de los n Restaurantes que
administra la empresa y las ventas que realizan en una semana cada uno de ellos. Realice las
siguientes funciones:
 Una función que dado un número de Nit retorne la totalidad de platos vendidos en la
semana por dicho restaurante.
 Una función que calcule el valor total de las ventas de la semana de cada restaurante y
almacene este valor en el campo TotalVentasdelaSemana dentro de cada registro del vector
de registros.
 Una función que retornar el promedio total de ventas de todos los restaurantes que
administra la empresa.
 Una función que retorne la posición (en el vector de registros) del restaurante que menos
dinero recolectó por ventas durante la semana.

119-Dada la información de N estudiantes:


Código del estudiante
Nombre del estudiante
Sexo del alumno (1 = Masculino, 2 = Femenino)
Código de la carrera a la cual pertenece
Donde la carrera se da en la siguiente tabla:
1 Ingeniería Sistema
2 Ingeniería Mecánica
3 Ingeniería Electrónica
Cada estudiante cursa 5 materias, por cada materia se da la siguiente información:
Universidad de Pamplona 42
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Código de la materia
Nombre de la materia
Código del profesor de la materia
Definitiva de la materia
Realice las funciones necesarias que permitan lo siguiente:
 Una función que calcule y retorne el código de la carrera que tiene más cantidad de
hombres
 Una función que calcule y retorne cual es el estudiante con mejor promedio
 Una función que calcule y retorne código de la carrera con mejor promedio

Estudiante

Código del Nombre del Sexo Código de la Materias[5]


estudiante estudiante carrera

Código de la Nombre de la Código del Definitiva de


materia materia profesor la materia

120- En un parqueadero de la ciudad de Pamplona que atiende solo en horario diurno (en las
noches el parqueadero queda desocupado), se cobra la tarifa por minutos de la siguiente manera,
si el auto permanece cierto número de horas más 10 minutos no se le cobra los minutos
excedidos de las horas enteras. Si la placa (número de tres dígitos) del auto termina en número
par, tiene un descuento de 20% sobre el total de valor. Todo auto paga un incremento del 16% de
IVA sobre el valor a pagar. Si los dos últimos dígitos de la placa del vehículo coinciden con los dos
últimos dígitos de la cedula del conductor, se realiza un descuento adicional del 25%.
La información sobre los conductores y los vehículos se debe almacenar en un vector de registros
de la siguiente forma
Clientes
Cedula Cedula Cedula
Nombre Nombre Nombre
Placa Placa Placa
Entrada Entrada Entrada
Hora Hora Hora
Minuto Minuto Minuto
Salida Salida Salida
Hora Hora Hora
Minuto Minuto Minuto

Valor Valor Valor

0 1 2 ….. 499
Universidad de Pamplona 43
Guía del Estudiante
Programación Estructurada
-----------------------------------------------------------------------------------------------------------------2020 - 2------

Defina las estructuras de datos necesarias para representar la información como se describe en
el gráfico.
Realizar las siguientes funciones:
 Una función que dado un número de placa, retorne la posición dentro del vector donde se
encuentra registrado dicho vehículo.
 Una función que registre la salida de un auto. Registre la hora y minutos de salida,
Calcule el total a pagar (incluyendo descuentos e iva) por parte de un cliente dando dentro
de los parámetros la posición donde se encuentra ubicado el registro respectivo, y el valor
del minuto. Dentro de esta misma función se debe registrar este valor en el respectivo
campo.
 Una función que calcule y retorne el total recaudado por el parqueadero en un día.

También podría gustarte