Documente Academic
Documente Profesional
Documente Cultură
Algoritmos
Managua, Nicaragua
Mayo 2019
INTRODUCCION A PROGRAMACION
CLASES PRÁCTICAS
1.2. (D.M. Etter) Decir si los siguientes pares de literales reales representan el mismo
número. Si no, explicar por qué
2300.0;2.3e+04 0.000007;0.7e+04
1.0;1.00 110.0;11.01e+01
abs
a -b +c a * b mod c
a * b div c a + b mod c
(45 <= 7) OR (NOT (5 >= 7)) ((2*7) > 5) OR (NOT ((7 DIV 2) = 3) AND
(7 > 25)) AND TRUE
1.6. Determinar si las siguientes expresiones lógicas son ciertas o falsas, suponiendo que
las variables que contienen almacenan los siguientes valores:
a = 5.5 b = 1.5 i = -3 hecho = false
y2-y1
pendiente =
x2-x1
b c
factor = 1+ +
v v2
l v2
perdida = f p
d 2
req = 1 1 1 1
+ + +
x1 x2 x3 x4
1.8.6. pi:=3.141593
volumen := 2.0*pi*x*x*((1.0 - pi/4.0)*y - (0.8333 -pi/4.0)*x)
1.8.7.
1.9. ¿Qué valor almacenan las variables a y b después de la ejecución de las siguientes
sentencias?
a := 5;
b := a + 6;
a := a + 1;
b := a -5;
1.10. ¿Qué valor almacenan las variables a, b y c después de la ejecución de las
siguientes sentencias?
a := 3;
b := 20;
c := a + b;
b := a + b;
a := b;
b := 5;
a := b;
b := a;
c toma el valor de b
a toma el valor de c
1.13. Deducir los valores finales de las variables en el siguiente programa, tras su
ejecución
Program ejercicio_2_11;
var
x,y,z:integer;
begin
x := 15;
y := 30;
z := y -x
end.
VALOR := x * y - y;
1.14.3. VALOR:= 5;
x := 3;
VALOR := VALOR * x;
var
a,b,c,d: integer;
begin
a := 1; b:=4;
c := a + b;
d := a - b;
a := c + 2 * b;
b := c + b;
c := a * b;
d := b + d;
a := d + c;
end.
1.18. Escribir un algoritmo que lea un valor entero, lo doble, se multiplique por 25 y
visualice el resultado
1.19. Diseñar un algoritmo que lea cuatro variables y calcule y visualice su producto,
su suma y su media aritmética.
1.20. Diseñar un programa que lea el peso de una persona en libras y devuelva el peso
en kilogramos y gramos (una libra = 0.453592 kilogramos).
PRACTICA NO 3: Esturas Condicionales – 1) Si…entonces 2) Si… entonces… sino…
(22/05/2019)
1.39. Realizar un programa que calcule la suma de los enteros entre 1 y 10, es decir 1
+ 2 + ... + 10.
1.40. Construir un programa que calcule independientemente la suma de los números
pares e impares comprendidos entre 1 y 200.
1.41. Se desea leer desde teclado una serie de números hasta que
aparezca alguno menor que 1000.
aparezca alguno en el intervalo [100, 1000]
aparezca alguno en el intervalo [100, 1000], o que sea negativo
Construir un programa para cada uno de estos casos.
1.42. Construir un programa que permita leer una serie de números enteros positivos
distintos de 0 (el último número de la serie debe ser el -99) y obtener el máximo.
1.43. Calcular y visualizar la suma y el producto de los números pares comprendidos
entre 20 y 40, ambos inclusive.
1.44. Realizar un programa que calcule y visualice las potencias de 2 entre 0 y 10.
1.45. Leer 500 números enteros y obtener cuántos son positivos.
1.46. Calcular la suma de los cuadrados de los 100 primeros números naturales.
1.47. Sumar los números pares del 2 al 100 e imprimir su valor.
1.48. Sumar 10 números introducidos por teclado
1.49. Calcular la media de 50 números introducidos por teclado y visualizar el
resultado
1.50. Visualizar los múltiplos de 4 comprendidos entre 4 y N, donde N es un número
introducido por teclado.
1.51. Dados 10 números enteros introducidos por teclado, visualizar la suma de los
números pares, calcular cuántos números pares existen y calcular su media
aritmética.
1.52. Se desea realizar una estadística de los pesos de los alumnos de un colegio de
acuerdo a la siguiente tabla:
Alumnos de menos de 40 kg.
Alumnos entre 40 y 50 kg.
Alumnos de más de 50 y menos de 60 kg.
Alumnos con un peso igual o mayor de 60 kg.
Escribir un programa que lea el peso de un conjunto de alumnos y visualice esta
estadística.
1.53. Escribir tres programas (usando los bucles for, while y repeat) que permitan
realizar la suma de T números introducidos por teclado.
1.54. Calcular la nota media por alumno de una clase de N alumnos. Cada alumno
podrá tener un número M de notas.
1.55. Escribir un algoritmo en pseudocodigopara leer una lista de 10 valores enteros y
cuya salida sea la siguiente:
La suma de los valores positivos.
El producto de los valores negativos (Ignorar los valores nulos).
1.56. Escribir un algoritmo en pseudocodigoque lea 5 grupos de cuatro valores cada
uno y que, para cada grupo, calcule la media y la escriba en pantalla.
1.57. Escribir un algoritmo en pseudocodigoque lea N grupos de cuatro valores cada
uno y que, para cada grupo, calcule la media y la escriba en pantalla. El proceso
finaliza al encontrarse un grupo cuyo primer valor es 0.
1.58. Escribir un algoritmo en pseudocodigoque lea dos números enteros positivos y
calcular el producto de los mismos por sumas sucesivas.
1.59. Escribir un algoritmo en pseudocodigocuya entrada sea una lista de números
positivos que finaliza en 0 y la salida consista en imprimir el valor mínimo de la
lista.
1.60. Escribir un algoritmo en pseudocodigocuya entrada sea una lista de números
positivos que finaliza en 0 y la salida consista en imprimir el valor máximo de
la lista.
1.61. Escribir un algoritmo en pseudocodigoque proceda a la vez como los del
ejercicio 5) y 6) y que imprima, además, la ubicación del máximo dentro de la
lista. (Suponer un único máximo).
1.62. Escribir un algoritmo en pseudocodigocuya entrada sean 4 grupos de N valores
enteros cada uno, donde N se determine al comienzo de cada grupo, y cuya
salida consista en imprimir el valor máximo de cada grupo. (Suponer un único
máximo ).
1.63. Dada una lista de valores numéricos positivos, finalizada en 0, realizar un
algoritmo en pseudocodigopara indicar si está ordenada en forma ascendente.
1.64. Se considera la serie definida por: a1 = 0, a2 = 1, an = 3 * an-1+2 * an-2 (para n>=3).
Se desea obtener el valor y el rango del primer término que sea mayor o igual
que 1000.
1.65. Escribir un programa que permita calcular xn, donde:
x puede ser cualquier real distinto de 0
n puede ser cualquier entero (positivo, negatio o nulo).
1.66. Escribir un programa que determine si un número leído por teclado es primo.
1.67. Escribir un programa que encuentre los n primeros números primos.
1.68. Esribir un programa que muestre en pantalla la representación en sistema
binario de un número entero decimal
código de vendedor: 3 dígitos
importe de ventas del mes: real
Escribir un algoritmo en pseudocodigoque calcule el importe máximo de ventas del mes
y cuántos vendedores alcanzaron dicho importe.
1.69. Una empresa contiene la siguiente información de un mes de ventas, para cada
uno de sus 20 vendedores:
código de vendedor: 3 dígitos
importe de ventas del mes: real
Escribir un algoritmo en pseudocodigoque calcule el importe máximo de ventas del mes
y cuántos vendedores alcanzaron dicho importe.
Días hábiles 10 2
Días festivos 15 3
1. M[1] := 1;
2. M[2] := 2;
3. M[3] := 3;
4. N[1] := M[1] + M[2];
5. N[2] := M[1] - M[3];
6. N[3] := M[2] + M[3];
7. M[2] := 2*N[1] - N[2];
8. M[1] := M[2] - M[1];
1.84. Escribir un programa para introducir una serie de números desde el teclado.
Utilizar un valor centinela (-1E5) para terminar la serie. El programa deberá
almacenar en un array los valores introducidos y, en otro array, la desviación de
la media de cada uno de los valores introducidos. Deberá de visualizar también
la suma, la media de los valores y todos los valores junto con su desviación.
1.85. Dado un vector de 15 valores, hacer un programa que pueda obtener, y sacar por
pantalla
el mayor de los valores
el menor de los valores
el más próximo a la media
Suponiendo que los valores del problema anterior fueran mediciones, modificarlo de
forma tal que sin uso de vectores auxiliares, se pueda calcular la desviación media y la
desviación estándar
n n
Xj X (X X )
j 1
j
2
j 1
MD S
N N
Donde Xj, es cada uno de los valores X es la media de los valores, y N la cantidad
de valores.
1.86. Escribir un algoritmo en pseudocodigoque lea una palabra carácter a carácter. El
último carácter que se introduce es la barra de dividir (‘/’), que indica que la
palabra ha finalizado. Escribir un programa que imprima la palabra en el orden
en que se introdujo y en sentido inverso (por ejemplo: ‘pera’ ‘arep’). La
palabra podrá tener hasta 20 caracteres.
1.87. Escribir un algoritmo en pseudocodigoque visualice los elementos de un vector
en el orden inverso en que fueron introducidos.
1.88. Escribir un algoritmo en pseudocodigoque permita obtener un vector V2 como
el resultado de invertir el orden de los elementos de otro vector V1.
1.89. Escribir un algoritmo en pseudocodigoque permita invertir el contenido de un
vector, sin necesidad de usar un vector auxiliar. Por ejemplo:
Vector original: 28 35 12 43 56 77
Vector invertido: 77 56 43 12 35 28
1.90. Escribir un algoritmo en pseudocodigoque permita realizar la suma y el
producto de dos vectores.
El usuario puede elegir el tamaño del vector (entre 2 y 10 valores)
El usuario elige la operación a realizar.
1.91. Disponemos de un array unidimensional de MaxLista elementos de tipo entero.
Se desea diseñar un programa que lea los elementos del array y los inserte de forma
que todos los elementos del array permanezcan ordenados.
1.92. Disponemos de un array unidimensional de MaxLista elementos de tipo entero.
Se desea diseñar un programa que elimine un elemento del array situado en una
posición determinada, conservando el array en el mismo orden.
1.93. Dado un vector de 20 posiciones (números enteros), escribir un algoritmo en
pseudocodigoque muestre 3 opciones al usuario:
Si el usuario introduce el carácter ‘1’, se deberá Introducir un elemento en el
final de la cola (primera posición libre del vector), comprobando antes que
existe una posición libre, sino mostrar un mensaje de aviso.
Si el usuario introduce el carácter ‘2’, se deberá Sacar el elemento que se
encuentra en la primera posición (si hay, sino mostrar un mensaje de aviso),
desplazando luego los demás en la cola una posición hacia la izquierda.
Si el usuario introduce el carácter ‘3’, se deberá Listar el contenido de la cola
del primero al último.
1.109. Una empresa de venta de productos por correo desea realizar una estadística de
las ventas realizadas de cada uno de los productos a lo largo del año. Distribuye un
total de 100 productos. Se desea conocer:
El total de ventas de cada uno de los productos
El total de ventas de cada mes
El producto más vendido en cada mes
El nombre, el mes y la cantidad del producto más vendido.
Como resultado final, se desea realizar un listado con el siguiente formato:
Producto1
Producto2
Producto100
Total Mes
Producto
más vendido
1.110. Una fábrica de muebles tiene 16 representantes que viajan por todo el estado
ofreciendo sus productos. Para teras administrativas el estado está dividido en cinco
zonas: Norte, Sur, Este, Oeste y Centro. Mensualmente almacena sus datos y obtiene
distintas estadísticas sobre el comportamiento de sus representantes en cada zona. Se
desea hacer un programa que lea los datos de todos los representantes con sus ventas
en cada zona y calcule el total de ventas de una zona introducida por teclado, el total de
ventas de un vendedor introducido por teclado en cada una de las zonas y el total de
ventas de un día y para cada uno de los vendedores.
1.111. Diseñar un programa para triangular una matriz cuadrada y calcular su
deteminante. En las matrices cuadradas el valor del determinante coincide con el
producto de los elementos de la diagonal de la matriz cuadrada, multiplicando por -1
tantas veces como hayamos intercambiado filas al triangular la matriz.
Practica No 8.- Funciones – 5/06/2019
1. Realizar una función que permita obtener el término n-ésimo de la serie de Fibonacci.
Cada término de la serie de Fibonacci se define como la suma de los dos anteriores
términos, para n> 1 y 1 para n = 1.
2. Implementar una función que permita devolver un valor entero, leído desde teclado,
comprendido entre dos límites que introduciremos como parámetro.
4. Diseñar una función que permita obtener el factorial de un número entero positivo.
5. Diseñar una función que permita obtener el máximo común divisor de dos números
mediante el algoritmo de Euclides.
10. Diseñar una función que informe si una cadena es un palíndromo, es decir, si se lee
igual de izquierda a derecha que de derecha a izquierda
11. Implementar una función que convierta una cadena en mayúsculas y otra que convierta
una cadena en minúsculas.
12. Escribir una función para realizar una captura perfecta de un valor numérico entero por
teclado. Por captura perfecta se entiende que la función no debe permitir que el usuario
introduzca ningún otro carácter distinto de 0..9 (con la excepción del signo negativo ‘-’,
como primer carácter). (Usar las funciones, ya definidas en PSeInt, readkey y
val(cadena,numero,error).)
13. Suponga que en PSeInt sólo están implementadas las funciones de cadena copy, pos y
length; diseñar funciones que permitan:
a. Extraer los n primeros caracteres de una cadena
b. Extraer los n úlitmos caracteres de una cadena
c. Eliminar los espacios en blanco que haya al final de la cadena
d. Eliminar los espacios en blanco que haya al comienzo de la cadena
e. Eliminar de una cadena los n caracteres que aparecen a partir de la posición p
f. Eliminar la primera aparición de una cadena dentro de otra
g. Insertar una cadena dentro de otra a partir de la posición p
h. Sustituir una cadena por otra
i. Contar el número de veces que aparece una cadena dentro de otra
j. Borrar todas las apariciones de una cadena dentro de otra
k. Sustituir todas las apariciones de una cadena dentro de otra, por una tercera.
14. Diseñar un programa que mediante una función permita cambiar un número n en base
10 a la base b, siendo b un número entre 2 y 20.
Practica No 9.- Funciones y Procedimientos – 05/06/2019
16. Diseñar un procedimiento que permita convertir coordenadas polares (radio, ángulo) en
cartesianas (x, y). (x = radio*cos(ángulo), y = radio*sen(ángulo)).
18. Dos números son amigos si cada uno de ellos es igual a la suma de los divisores del
otro. Por ejemplo, 220 y 284 son amigos, pues
Suma divisores de 284 : 1+2+4+71+142 = 220
Diseñar un procedimiento que muestre todas las parejas de números amigos menores o
iguales que un m dado.