Vous êtes sur la page 1sur 0

Prctica INTRODUCCIN A LA ALGORITMICA

FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


PRCTICA 1: INTRODUCCIN A LA ALGORTMICA
BOLETIN DE PROBLEMAS RESUELTOS. (Curso 03-04)

EJERCICIOS DE ESTRUCTURAS ALTERNATIVAS:
1.- Haga el algoritmo en pseudo cdigo que, dada una variable cuyo valor es ledo desde teclado, imprima
por pantalla si el nmero es o no mayor que 0.
Algoritmo MayorQue0
Variable
Entero: n
Inicio
Escribe Escribe un numero
Leer n
Si (n > 0) entonces
Escribe El nmero es mayor que 0
Sino
Escribe El nmero no es mayor que 0
FinSi
Fin

2.- Haga el algoritmo en pseudo cdigo que, dada una variable cuyo valor es ledo desde teclado, imprima
por pantalla si el nmero es o no mayor que 0, y si el nmero es par o impar.
Algoritmo MayorQue0Par
Variable
Entero: n
Inicio
Escribe Escribe un nmero
Leer n;
Si (n > 0) entonces
Escribe El nmero es mayor que 0
Sino
Escribe El nmero no es mayor que 0
FinSi
Si (resto de (n/2) = 0) entonces
Escribey es un nmero par.
Sino
Escribe y es un nmero impar.
FinSi
Fin

3.- Haga el algoritmo en pseudo cdigo que, tras leer un carcter desde teclado, imprima por pantalla si la
letra es mayscula o minscula. Ample el algoritmo, indicando si el carcter es un dgito numrico.
(Nota: Dgito numrico (48,57); Mayscula (65, 90); minscula(97, 122))
Algoritmo MayusculaMinuscula
Variable
Entero: Car
Inicio
Escribe Escribe una letra
Leer Car
Si (Car >= 97) o (Car <= 122) entonces
EscribeLa letra es minscula
Sino
Si (Car >= 65) o (Car <= 90) entonces
EscribeLa letra es mayscula
Sino
Si (Car >= 48) o (Car <= 57) entonces
EscribeEs un nmero
FinSi
FinSi
FinSi
Fin
Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


4.- Haga el algoritmo en pseudo cdigo que, dada la calificacin obtenida (en nmero), indique si
corresponde al suspenso, aprobado, notable o sobresaliente.
Algoritmo Nota
Variable
Entero: nota
Inicio
Escribe Escribe la calificacin del alumno
Leer nota
Si (nota >= 9) entonces
EscribeSOBRESALIENTE
Sino
Si (nota >= 7) entonces
EscribeNOTABLE
Sino
Si (nota >= 5) entonces
EscribeAPROBADO
Sino
EscribeSUSPENSO
FinSi
FinSi
FinSi
Fin

5.- Escriba un algoritmo que intercambie el valor de dos variables numricas slo si el valor de la primera es mayor
que el de la segunda.
Algoritmo Intercambio
Variable
Entero: numero1, numero2, auxiliar
Inicio
Escribe Escribe el primer numero
Leer numero1
Escribe Escribe el segundo numero
Leer numero2
Si (numero1 > numero2) entonces
auxiliar = numero1
numero1 = numero2
numero2 = auxiliar
FinSi
Fin

6.- Disee un algoritmo que calcule el valor absoluto de un nmero (tanto positivos como negativos):
Algoritmo ValorAbsoluto
Variable
Entero: numero, valor_absoluto
Inicio
Escribe Escribe un numero
Leer numero
Si (numero < 0) entonces
valor_absoluto = - numero
Sino
valor_absoluto = numero
FinSi
Escribe El valor absoluto es: , valor_absoluto
Fin

Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


7.- Calcular las posibles races para una ecuacin de segundo grado: ax^2+bx+c=0

Algoritmo Races
Variable
Real: a,b,c,x,y
Inicio
Escribe "Introduzca los coeficientes de mayor a menor grado."
Leer a,b,c
Si ( b*b >= 4*a*c ) entonces
x = (-b + raiz( b*b - 4*a*c ) )/2*a
Escribe Las raices reales son +/- :, x
Sino
Escribe "No existen races reales."
FinSi
Fin

8.- Realice un programa que convierta los grados a radianes.
Algoritmo GradosARadianes
Constante
Real: PI = 3,14
Variable
Real: grados, rad
Inicio
Escribe Introduce los grados
Leer grados
Si (grados >= 360) entonces
grados = resto de (grados / 360)
FinSi
rad = (grados * PI) / 180
Escribe rad radianes
Fin
Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


EJERCICIOS DE ESTRUCTURAS ITERATIVAS
1.- Se quiere hallar el producto de varios nmeros positivos introducidos por teclado, de manera que el proceso
termina cuando se introduce un nmero negativo:
Algoritmo Producto
Variable
Entero: numero, producto
Inicio
producto = 0
Escribe Escribe un numero
Leer numero
Mientras (numero >= 0) hacer
producto = producto * numero
Escribe Escribe un numero
Leer numero
FinMientras
Escribe El producto es: , producto
Fin

2.- Escriba un algoritmo que, encuentre el primer divisor entero de un nmero que previamente se ha introducido por
el teclado. Utilice la estructura iterativa MIENTRAS.

Algoritmo PrimerDivisor
Variable
Entero: numero, divisor
Inicio
divisor = 2
Escribe Escribe un numero
Leer numero
Mientras (resto de (numero/divisor) <> 0) hacer
divisor = divisor +1
FinMientras
Escribe El primer divisor es: , divisor
Fin

3.- Escriba un algoritmo que calcule el factorial de un nmero introducido por teclado. Utilice la
estructura PARA.

Algoritmo Factorial
Variable
Entero: numero, exponente, i
Inicio
factorial = 1
Escribe Escribe un numero
Leer numero
Para i <- 2 hasta numero
Si ( i = 2 ) o (resto de (i/2) <> 0 ) entonces
Si (resto de (numero/i) = 0 ) entonces
Escribe i
numero = numero / i
exponente = 1
Mientras (resto de (numero/i) = 0 ) hacer
exponente = exponente + 1;
numero = numero / i
FinMientras
Escribe * exponente
FinSi
FinSi
FinPara
Fin

Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


4.- Escriba un algoritmo que imprima cules y cuntos son los nmeros primos comprendidos entre 1 y 1000.
Algoritmo NumerosPrimos
Constante
Primero=1
Limite=1000
Variable
Entero: cont, i, j
Booleano: primo
Inicio
cont = 0
Para i <- primero hasta limite hacer
primo = verdadero
j = 2
Mientras ( i>j ) y (primo = verdadero) hacer
Si (resto de (i/j) = 0) entonces
primo = falso
Sino
j = j + 1
FinSi
FinMientras
Si ( primo = verdadero ) entonces
Escribe i
cont = cont + 1
FinSi
FinPara
Escribe Entre primero y limite hay cont n primos
Fin

5.- Escriba un algoritmo que calcule el mximo de nmeros positivos introducidos por teclado, sabiendo que se
introducen nmeros desde teclado hasta teclear uno negativo. El negativo no cuenta.
Algoritmo Maximo
Variable
Entero: num, max
Inicio
max = 0
Escribe Introduzca n positivos y para acabar introduzca uno
negativo
Leer num
Mientras ( num >= 0 ) hacer
Si ( num >max ) entonces
max = num
FinSi
Leer num
FinMientras
Escribe El mayor nmero es max
Fin

6.- Escriba un algoritmo que determine cuales son los mltiplos de 5 comprendidos entre 1 y N.
Algoritmo Multiplos
Variable
Entero: i
Inicio
Para i<-1 hasta N hacer
Si (resto de (i/5) = 0) entonces
Escribe i
FinSi
FinPara
Fin

Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


7.- Escriba un algoritmo que encuentre el alumno de primero con mejor nota media. Se sabe que este ao entraron
150 alumnos y que en primero todos tienen 5 asignaturas. Dar el nombre y la nota media.
Algoritmo NotaMedia
Constante
Alumnos=150
Asignaturas=5
Variable
Cadena: nombre, mejor_alum
Real: nota, suma, media, acum
Entero: i, j
Inicio
acum = 0
Para i<-1 hasta alumnos hacer
suma = 0
Escribe Introduzca el nombre del alumno
Leer nombre
Para j<-1 hasta asignaturas hacer
Escribe Introduzca la nota de la asignatura
Leer nota
suma = suma + nota
FinPara
Media = suma / asignaturas
Si (media > acum) entonces
acum = media
mejor_alum = nombre
FinSi
FinPara
Escribe El mejor alumno es mejor_alum
Escribe Su nota media es acum
Fin

8.- Escriba un algoritmo que calcule la suma de los divisores de cada nmero introducido por teclado. Se
termina cuando el nmero es negativo o 0.
Algoritmo SumaDivisores
Variable
Entero: numero, i, suma
Inicio
Escribe Introduce un nmero, y para acabar uno negativo
Leer numero
Mientras (numero > 0) hacer
suma = 0
Para i<-1 hasta numero /2 hacer
Si (resto de (numero/i) = 0) entonces
suma = suma + i
FinSi
FinPara
Suma = suma + numero
Escribe La suma de los divisores del nmero es suma
Leer numero
FinMientras
Fin





Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


9.- Dado un cpital c, a un interes i, durante m aos, escriba un algoritmo que calcule en cuanto se habr convertido
ese capital en m aos, sabiendo que es acumulativo.
Algoritmo Interes
Variable
Entero: i, j, m
Real: c, temporal
Inicio
Repetir
Escribe Introduce el capital, el interes y el tiempo
Leer c, i, m
Hasta (c>0) y ((i>=0)y(i<=100)) y (m >=0)
Para j<-1 hasta m hacer
c = c * (1+i/100)
FinPara
Escribe Tienes c de capital
Fin

10.- Dada la siguiente frmula:

Realice un algoritmo que calcule el valor de x pidiendo al usuario los valores de n, a, b.
Algoritmo Ecuacion
Variable
Entero: n, a, b, primer, segn, i, j
Real: x
Inicio
primer = 0
segun = 1
Repetir
Escribe Introduce el valor de n, a, b
Leer n, a, b
Hasta (n>=0)
Para i<-1 hasta n hacer
primer = (((a-b)^i 3)+n)+primer
FinPara
Para j<-2 hasta n-1 hacer
segun = ((2+a*(i-1))*segun)
FinPara
x = primer / segun
Escribe x
Fin

=
=
+
+
=
1
2
1
)) 1 ( * 2 (
) 3 ) ((
n
i
n
i
i
i a
n b a
X
Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


EJERCICIOS DE VECTORES:
1.- Escriba un algoritmo que devuelva el valor de la componente mxima de un vector.
Algoritmo MaximaComponenteVector
Variable
Entero: cont, temporal
Vector Entero: a
Inicio
cont = 0
temporal = a[cont] inicializo al primer elemento del vector
Mientras (cont < numero de componentes del vector a) hacer
Si (a[cont]>temporal) entonces
temporal = a[cont]
FinSi
cont = cont +1
FinMientras
Escribe el valor de la maxima componente es temporal
Fin

2. Escriba un algoritmo que muestre por pantalla el contenido de un vector. Los valores de las componentes del
vector se introducen por teclado (hasta que introduzca el numero 0).
Algoritmo MostrarContenidoVector
Variable
Entero: i, num
Vector Entero: a
Inicio
i = 0
Escribe Introduzca un valor de una componente del vector o 0
para finalizar
Leer num
Mientras (num <> 0) hacer Relleno el vector con los valores
ledos desde teclado
a[i] = num
i = i+1
FinMientras
i = i - 1
Mientras (i >= 0) hacer
Escribe a[i]
i = i-1
FinMientras
Fin

3. Realice un algoritmo que calcule el producto escalar de dos vectores de N componentes (N es una constante). El
algoritmo es sencillamente el siguiente:
Algoritmo ProductoEscalar
Constante
Entero: N
Variable
Entero: i, producto
Vector Entero: a, b
Inicio
producto = 0
Para i<-0 hasta N-1 hacer
producto = producto + a[i]*b[i]
FinPara
Escribir El producto escalar es producto
Fin

Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


4. Considere una encriptacin de mensajes muy antigua inventada por Julio Cesar, la cual se basa en que
a cada letra de un mensaje se le asocia un nmero (el orden en el abecedario), luego se suma al nmero de
cada letra otro nmero (la clave) y el resultado es una nueva letra, mira en el abecedario. Por ejemplo, el
mensaje cruzad el rubicon, se transformara en dsvabeUfmUsvcjdpo si le sumo el nmero clave 1 a
cada letra (ya que la primera letra del mensaje cifrado, la d, es la que va tras la c, etc.). Note que la ch,
ll, no existen, y que despus de la z va la a. Adems los espacios en blanco se convierten en letras U
si la clave es 1, en V si es 2, etc.
Para ello, elabore en pseudo cdigo un algoritmo que a partir de un texto (cadena de caracteres leda por
teclado) imprima texto cifrado con la clave entera, tambin leda desde teclado.
Pista: Dentro del bucle que debe recorrer todas las letras del texto, use la siguiente frmula para encriptar:
Texto_encriptado[i] =(texto_original[i]-'a'+clave)%26+'a';
/*26 es el nmero de letras del alfabeto ASCII*/

Algoritmo Encriptacin
Constante
Entero: LetrasASCII, N N es la longitud del texto
Variable
Entero: i, clave
Vector Caracter: texto_encriptado, texto_original
Inicio
LetrasASCII = 26
Escribir Leer el texto a encriptar:
Para i<-0 hasta N-1 hacer
Lee texto_original[i]
FinPara
Para i<-0 hasta N-1 hacer
texto_encriptado[i] =(texto_original[i]-'a'+clave)%26+'a')
FinPara
Escribir El texto encriptado es:
Para i<-0 hasta N-1 hacer
Escribir texto_encriptado[i]
FinPara
Fin













Prctica INTRODUCCIN A LA ALGORITMICA
FUNDAMENTOS DE INFORMTICA
E.U.P. Universidad de Sevilla


5.- Dada una matriz a de M*N elementos, actualice la matriz de manera que la matriz resultante tenga divididos a los
elementos de la diagonal principal por la suma de los elementos que no forman parte de ella.
Algoritmo div_matriz
Constante
Entero: M, N, i,j
Variable
Vector Real: a
Real: suma
Inicio
leer elementos del array
Para i<-0 hasta M-1 hacer
Para j<-0 hasta N-1 hacer
Escribe Introduce el elementoi,j
Leer a[i,j]
FinPara
FinPara
Calcula la suma de los elementos del array que no
pertenecen a la diagonal principal
suma = 0
Para i<-0 hasta M-1 hacer
Para j<-0 hasta N-1 hacer
Si (i<>j) entonces
s = s + matriz [i,j]
FinSi
FinPara
FinPara
Escribe los elementos del array Para ello, los elementos que
pertenecen a la diagonal principal, los divide por la suma
Para i<-0 hasta M-1 hacer
Para j<-0 hasta N-1 hacer
Si i=j entonces
Escribe a[i,j]/s
Sino Escribe a[i,j]
FinSi
FinPara
FinPara
Fin