domingo, 1 de marzo de 2009

unos algoritmillos para clase

En un curso de los que llego a impartir, plantee a los asistentes la resolución de la conversión de un número en base 10 (decimal) a uno en base 2 (binario) donde ellos me entregaron una versión iterativa de la conversión.

Aquí pongo un algoritmo recursivo de la misma conversión.

conversion_binaria_R(número tipo entero) regresa texto
0. inicia
1. define una variable auxiliar tipo texto 's' inicializada con texto vacío.
2. si el número es mayor que cero
2.1. guarda en 's' el resultado de llamar a conversión(división entera de número entre 2)
3. devuelve 's' + ((residuo de dividir entero número entre 2) convertido a texto)
4. termina

-------------------------------------------
El siguiente algoritmo es simple y calcula las dos soluciones de una ecuación cuadrátca de forma ax^2 + bx + c = 0

inicia
leer a, b, c
si a es distinto de cero...
discriminante = sqr(b) - (4*a*c)
si discriminante es >= cero...
x1 = (-1 * b) + sqrt(discriminante) / (2 * a)
x2 = (-1 * b) - sqrt(discriminante) / (2 * a)
regresa (x1, x2)
sino...
avisa que no se puede calcular y regresa (0, 0)
sino...
avisa que no se puede dividir por cero y regresa (máx. valor del tipo flotante, máx. valor del tipo flotante)
termina

-------------------------------------------
Para la suma de mA*B, siendo 'm' un número real, asumiendo ambas matrices iguales en dimensiones...

inicia
leer m
para i = 0 hasta n hacer...
para j = 0 hasta n hacer...
leer A[i,j] y B[i,j]

para i = 0 hasta n hacer...
para j = 0 hasta n hacer...
C[i,j] = ( m * A[i,j] ) + B[i,j]
termina

-------------------------------------------
para la trasposición de una matríz NxN

inicia
para i = 0 hasta n hacer...
para j = 0 hasta n hacer...
leer A[i,j]
para i = 0 hasta n hacer...
para j = 0 hasta n hacer...
si (i es distinto de j)...
tmp = A[i,j]
A[i,j] = A[j,i]
A[j,i] = tmp
termina

-------------------------------------------- Leer más...