Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.1 Algoritmo
Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solucin de un problema. En
la vida cotidiana ejecutamos constantamente algoritmos. Por ejemplo, al instalar un equipo de sonido
ejecutamos las instrucciones contenidas en el manual del equipo, este conjunto de instrucciones constituyen un
algoritmo. Otro caso de algoritmo es el algoritmo matemtico de Euclides para la obtencin del mximo
comn divisor de dos nmeros.
Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmo computacional; en
caso contrario, se dice que es un algoritmo no computacional. Segn esto, el algoritmo de Euclides es un
algoritmo computacional; pero el algoritmo para instalar el equipo de sonido es un algoritmo no
computacional. Para que un algoritmo pueda ser ejecutado por una computadora se necesita expresar el
algoritmo en instrucciones comprensibles por la computadora, para esto se requiere de un determinado
lenguaje de programacin. Al algoritmo expresado en un determinado lenguaje de programacin, se denomina
programa. Puesto de otra manera, podemos decir que, un programa es la implementacin o expresin de un
algoritmo en un determinado lenguaje de programacin siguiendo las reglas establecidas por el lenguaje
elegido. En la Figura 2.1 que sigue se muestra la relacin entre problema, algoritmo y programa.
Debe ser preciso, es decir, cada instruccin debe indicar de forma inequvoca que se tiene que hacer.
Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de
entrada.
Entrada de datos.
Proceso.
Salida de resultados.
- Mezclar la carne con el jugo de limn, el ajo, la pimienta, el culantro, el aj amarillo y el apio.
- Dejar reposar 30 minutos.
- Agregar sal al gusto y echar las cebollas cortadas.
- Servir acompaando el cebiche con el camote sancochado y el rocoto en rodajas
Salida :
El ceviche
Evidentemente este es un algoritmo no computacional, no podr ser ejecutado por una computadora, pero s
por una persona. Por si acaso el ceviche es peruano.
Ejemplo 1.2:- Algoritmo para expresar en centmetros y pulgadas una cantidad dada en metros.
Entrada:
La cantidad M de metros
Proceso:
Clculo de centmetros : C = M*100
Clculo de pulgadas : P = C/2.54
Salida :
La cantidad C de centmetros y la cantidad P de pulgadas
Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un programa de
computadora, pero tambin puede ser ejecutado manualmente por una persona.
1.2 El Pseudocdigo
El pseudocdigo es un lenguaje de pseudoprogramacin utilizado para escribir algoritmos computacionales.
Como lenguaje de pseudoprogramacin, el pseudocdigo es una imitacin de uno o ms lenguajes de
programacin. De esta manera podemos encontrar pseudocdigos orientados a lenguajes de programacin
como Pascal, Java, C, C++, etc. En el caso de este curso orientaremos los pseudocdigos a los lenguajes Java,
C y C++. El objetivo del pseudocdigo es permitir que el programador se centre en los aspectos lgicos de la
solucin, evitando las reglas de sintxis de los lenguajes de programacin. No siendo el pseudocdigo un
lenguaje formal, los pseudocdigos varan de un programador a otro, es decir, no hay un pseudocdigo
estndar.
1.3 Variables
Una variable es una localizacin o casillero en la memoria principal que almacena un valor que puede cambiar
en el transcurso de la ejecucin del programa. Cuando un programa necesita almacenar un dato, necesita una
variable. Toda variable tiene un nombre, un tipo de dato y un valor. Antes de poder utilizar una variable es
necesario declararla especificando su nombre y su tipo de dato. Para declarar declarar variables usaremos los
siguientes formatos:
Declaracin de una variable:
tipo nombre
Declaracin de varias variables con el mismo tipo de dato:
tipo nombre1, nombre2, nombre3, ..., nombren
Donde:
Tipo
La siguiente instruccin declara la variable edad de tipo ENTERO y la variable descuento de tipo
REAL..
ENTERO edad
REAL descuento
Esto crea los casilleros de memoria edad y descuento. Luego de la creacin, las variables estn indefinidas
( ? ).
edad
descuento
?
?
La siguiente instruccin declara las variables nota1, nota2 y nota3, todas de tipo ENTERO.
?
?
?
1.4 Literales
Se denominan literales a todos aquellos valores que figuran en el pseudocdigo y pueden ser:
Literales enteros
12, 20300, 15, etc.
Literales reales
3.1416, 2345.456, etc.
Literales de carcter
'a', 'B', ';', '<', '+', etc.
Lieterales de cadena
"Hola", "Algoritmos Computacionales", etc.
Literales lgicos
verdadero, falso
C = M*100
// Calcula la cantidad en pulgadas y lo asigna a la variable P
P = C/2.54
// Muestra los valores de las variables C y P
IMPRIMIR C, P
FIN
1.6 Expresiones Aritmticas
Una expresin aritmtica es una combinacin de variables, literales y operadores aritmticos.
1.6.1 Operadores Aritmticos
En la tabla que sigue se muestran los operadores aritmticos que vamos a utilizar.
Tabla 1.1 Operadores aritmticos
Operador
+
*
/
%
Significado
Suma
Resta
Multiplicacin
Divisin
Residuo
Ejemplo
a+b
a-b
a*b
a/b
a%b
Los operadores aritmticos pueden utilizarse con tipos enteros y reales. Si en una operacin con dos operandos,
ambos operandos son enteros, el resultado es un entero; si alguno de ellos es real, el resultado es real. As, 15/4
es 3 y no 3.75; en cambio, 15.0/4 es 3.75.
1.6.2 Reglas de jerarqua de los operadores aritmticos
Cuando una expresin aritmtica tiene ms de un operador aritmtico, el orden de aplicacin de los operadores
sigue un orden preciso determinado por las reglas de jerarqua de los operadores aritmticos, que se
muestran en la siguiente tabla:
Tabla 1.2 Reglas de jerarqua de los operadores aritmticos
Operador
()
*, /, %
+, -
Orden de evaluacin
Se evalan en primer lugar
Se evalan en segundo lugar
Se evalan en tercer lugar
Si existen parntesis anidados, se evala primero la expresin en el par ms interno. Si varios operadores o
parntesis tienen la misma jerarqua, la evaluacin ser de izquierda a derecha.
Ejemplo 1.4:- Cul es el equivalente en pseudocdigo de la siguiente expresin algebraica?
Solucin
e = a/b/c
Como todos los operadores tienen la misma jerarqua, la evaluacin ser de izquierda a derecha:
Primero, se dividir a entre b.
Segundo, el resultado ya obtenido de a/b se dividir entre c.
Note que el orden de ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna
pareja de parntesis.
Solucin
e = a*b*c/d/e
Como todos los operadores tienen la misma jerarqua, la evaluacin ser de izquierda a derecha:
Primero, se multiplicar a por b.
Segundo, el resultado ya obtenido de a*b se multiplicar por c.
Tercero, el resultado ya obtenido de a*b*c se dividir entre d.
Cuarto, el resultado ya obtenido de a*b*c/d se divivir entre e.
Note que el orden de ejecucin esta de acuerdo con la expresin algebraica, por lo que no se requiere ninguna
pareja de parntesis.
Ejercicio 1.6:- Cul es el equivalente en pseudocdigo de la siguiente expresin algebraica?
Solucin
e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q
Aplicando las reglas de jerarqua de los operadores aritmticos:
Primero, se sumar a ms b.
Segundo, se dividir c entre d.
Tercero, el resultado ya obtenido de a+b se dividir entre el resultado ya obtenido de c/d.
Cuarto, se dividir 4 entre el resultado ya obtenido de ((a+b)/(c/d))
Quinto, se dividir v entre w.
Sexto, se dividir el resultado ya obtenido de v/w entre p.
Sptimo, se multiplicar 5 por m.
Octavo, se multiplicar el resultado ya obtenido de 5*m por n.
Noveno, se multiplicar el resultado ya obtenido de 5*m*n por q.
Dcimo, se sumar el resultado ya obtenido de 4/((a+b)/(c/d)) ms el resultado ya obtenido de v/w/p.
Undcimo, se sumar el resultado ya obtenido de 4/((a+b)/(c/d)) + v/w/p ms el resultado ya obtenido de
5*m*n*q.
Se ha utilizado la mnima cantidad posible de parntesis. Pueden usarse parntesis adicionales, lo que no es un
error. Por ejemplo, otra solucin posible que arroja el mismo resultado final es:
Significado
mayor que
mayor o igual que
menor que
menor o igual que
igual a
diferente de
Ejemplo
a>b
a >= b
a<b
a <= b
a == b
a != b
Significado
no
y
Ejemplo
!a
a && b
a || b
Estructuras de Secuencia
Concepto
Una estructura secuencial es aquella en la que las instrucciones estan una a continuacin de la otra siguiendo
una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una entrada y una salida.
En la Figura 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura secuencial.
Diagrama de Flujo
Pseudocdigo
Inicio
.
.
accin 1
accin 2
accin 3
.
.
Fin
Algoritmo
INICIO
// Declaracin de variables
REAL base, altura, area, perimetro
// Entrada de datos
LEER base, altura
// Proceso de clculo
area = base*altura
perimetro = 2*(base+altura)
// Salida de resultados
IMPRIMIR area, perimetro
FIN
Ejemplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus equivalentes en
centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centmetros, 1 pulgada = 2.54 centimetros,
1 pie = 12 pulgadas, 1 yarda = 3 pies.
Algoritmo
INICIO
// Declaracin de variables
REAL cmetr,ccent, cpies, cpulg, cyard
// Entrada de datos
LEER cmetr
// Proceso de clculo
ccent = cmetr*100
cpulg = ccent/2.54
cpies = cpulg/12
cyard = cpies/3
// Salida de resultados
IMPRIMIR cpulg, cpies, cyard
FIN
Ejercicio 3:- Una institucin benfica europea ha recibido tres donaciones en soles, dolares y marcos. La
donacin ser repartida en tres rubros: 60% para la implementacin de un centro de salud, 40% para un
comedor de nios y el resto para gastos administrativos. Disee un algoritmo que determine el monto en euros
que le corresponde a cada rubro. Considere que: 1 dlar = 3.52 soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07
euros.
Algoritmo
INICIO
// Declaracin de variables
REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
// Entrada de datos
LEER csoles, cdolares, cmarcos
// Proceso de clculo
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
// Salida de resultados
Algoritmo
INICIO
// Declaracin de variables
ENTERO tmin, tseg, tcen
REAL thor, velkmhr, espmt, espkm
// Entrada de datos
LEER tmin, tseg, tcen, espmt
// Clculo del tiempo total empleado en horas
thor = tmin/60 + tseg/3600 + tcen/360000
// Clculo del espacio recorrido en kilmetros
espkm = espmt/1000
// Clculo de la velocidad en km/hr
velkmhr = espkm/thor
// Salida de resultados
IMPRIMIR velkmhr
FIN
Ejercicio 5:- Disee un algoritmo que determine la cifra de las unidades de un nmero natural.
Solucin 1
Anlisis
Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin del nmero entre
10. Observe para ello las siguientes divisiones:
3245
5
10
324
768
8
10
76
9
9
10
0
Siendo % el operador residuo. Este operador permite obtener el residuo de una divisin, as como / permite
obtener el cociente.
Algoritmo
INICIO
// Declaracin de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de clculo
unidades = numero % 10
// Salida de resultados
IMPRIMIR unidades
FIN
Solucin 2
Anlisis
El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador %, de la siguiente forma:
unidades = numero - (numero / 10) * 10
observe para esto que en la divisin (numero/10) los operandos son enteros por lo que el cociente ser un
entero. As por ejemplo, si numero es igual a 3245, la divisin (numero/10) produce 324, aunque
matemticamente sea 324.5; es decir, se descarta la parte decimal.
Algoritmo
INICIO
// Declaracin de variables
ENTERO numero, unidades
// Entrada de datos
LEER numero
// Proceso de clculo
unidades = numero - (numero/10)*10
// Salida de resultados
IMPRIMIR unidades
FIN
Ejercicio 6:- Disee un algoritmo que determine la suma de las cifras de un nmero entero positivo de 4 cifras.
Solucin 1
Anlisis
Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el caso de un
nmero N igual a 3245:
3245
5
10
324
10
unidades = N%10
cociente = N/10
324
4
10
32
decenas = cociente%10
cociente = cociente/10
32
2
10
3
centenas = cociente%10
millares = cociente/10
Algoritmo
INICIO
// Declaracin de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de clculo
unidades = N%10
cociente = N/10
decenas = cociente%10
cociente = cociente/10
centenas = cociente%10
millares = cociente/10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Solucin 2
Anlisis 2
Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante divisiones
sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N igual a 3245:
3245
245
1000
3
millares = N/1000
resto = N%1000
245
45
100
2
centenas = resto/100
resto = resto%100
45
3
10
4
11
decenas = resto/10
unidades = resto%10
Algoritmo
INICIO
// Declaracin de variables
ENTERO N, suma, millares, centenas, decenas, unidades, resto
// Entrada de datos
LEER N
// Proceso de clculo
millares = N/1000
resto = N%1000
centenas = resto/100
resto = resto%100
decenas = resto/10
unidades = resto%10
suma = unidades + decenas + centenas + millares
// Salida de resultados
IMPRIMIR suma
FIN
Ejercicio 7:- Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine cuantas horas,
minutos y segundos restan para culminar el da.
Algoritmo
INICIO
// Declaracin de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, segres, resto
// Entrada de datos
LEER hor1, min1, seg1
// Clculo de la cantidad de segundos que restan para culminar el da
segres = 86400 - (hor1*3600 + min1*60 + seg1)
// Descomposicin de segres en horas, minutos y segundos
hor2 = segres/3600
resto = segres%3600
min2 = resto/60
seg2 = resto%60
// Salida de resultados
IMPRIMIR hor2, min2, seg2
FIN
Ejercicio 8:- Disee un algoritmo para sumar dos tiempos dados en horas, minutos y segundos.
Algoritmo
INICIO
// Declaracin de variables
ENTERO hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto
// Entrada de datos
LEER hor1, min1, seg1, hor2, min2, seg2
// Determina la cantidad total de segundos entre los dos tiempos
12
Algoritmo
INICIO
// Declaracin de variables
REAL venta1, venta2, venta3, ventatot, comision, sueldoneto
// Entrada de datos
LEER venta1, venta2, venta3
// Proceso de clculo
ventatot = venta1 + venta2 + venta3
comision = 0.12*ventatot
sueldoneto = 250 + comision
// Salida de resultados
IMPRIMIR sueldoneto
FIN
Ejercicio 10:- Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln
de clases.
Algoritmo
INICIO
// Declaracin de variables
REAL porcvar, porcmuj
ENTERO varones, mujeres, total
// Entrada de datos
LEER varones, mujeres
// Proceso de clculo
total = varones + mujeres
porcvar = varones*100.0/total
porcmuj = mujeres*100.0/total
// Salida de resultados
IMPRIMIR porcvar, porcmuj
FIN
Ejercicio 11:- En pases de habla inglesa es comn dar la estatura de una persona como la suma de una
cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una persona podra ser 3' 2" ( 3
pies 2 pulgadas ). Disee un algoritmo que determine la estatura de una persona en metros, conociendo su
estatura en el formato ingls. Considere que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm.
13
Algoritmo
INICIO
// Declaracin de variables
REAL estmt
ENTERO cpies, cplgs
// Entrada de datos
LEER cpies, cplgs
// Proceso de clculo
estmt = (cpies*12 + cplgs)*2.54/100
// Salida de resultados
IMPRIMIR estmt
FIN
Ejercicio 12:- Disee un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024 bytes, 1 megabyte = 1024
kilobyte, 1 gigabyte = 1024 megabytes.
Estructuras de Seleccin
Introduccin
Las estructuras de seleccin son estructuras de control utilizadas para la toma decisiones dentro de un
programa. A estas estructuras se conocen tambin como estructuras selectivas o estructuras de decisin y
son las siguientes:
14
Por ejemplo, si se desea cambiar el signo de un nmero nicamente en caso que sea negativo, podemos
escribir:
SI( numero < 0 )
numero = -1 * numero
Si el nmero no es negativo, simplemente esta estructura se pasara por alto y se continuara en la siguiente
instruccin despus del SI.
3.3 Estructura de Seleccin Doble SI - SINO
La estructura de seleccin doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o
falsedad de una condicin. As, en la Figura 3.2, si la condicin es verdadera, se ejecuta la accin A; en caso
contrario, se ejecuta la accin B.
En la Figura 3.2 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble.
Diagrama de Flujo
15
La estructura de seleccin doble en cascada esta formada por varias estructuras de seleccin doble SI-SINO
puestas una a continuacin de otra de forma que a un SI-SINO le sigue otro SI-SINO.
En la estructura de seleccin doble en cascada, las condiciones se evalan en orden descendente, pasando de
una condicin a otra si la condicin anterior resulta falsa. En el momento que se encuentra una condicin
verdadera, se efecta la accin correspondiente a dicha condicin y se corta el resto de la estructura. Si todas
las condiciones resultan falsas, se efecta la accin correspondiente al ltimo SINO, que se considera como la
accin por defecto.
En la Figura 3.3 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin doble en
cascada.
Diagrama de Flujo
Pseudocdigo ( Forma 1 )
SI( condicion1 )
accion1
SINO
SI( condicion2 )
accion2
SINO
SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto
Pseudocdigo ( Forma 2 )
SI( condicion1 )
accion1
SINO SI( condicion2 )
accion2
SINO SI( condicion3 )
accion3
.
.
.
SINO
acciondefecto
16
signo = "Negativo"
SINO
signo = "Cero"
3.5 Estructura de Seleccin Mltiple SEGUN
La estructura de seleccin mltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al
valor de una variable que acta como selector. La estructura compara el valor del selector con las constantes
c1, c2, ..., cn en orden descendente. En el momento en que se encuentre una coincidencia, se ejecuta la accin
correspondiente a dicha constante y se abandona la estructura.
En la Figura 3.4 se muestra el diagrama de flujo y el pseudocdigo de la estructura de seleccin mltiple.
Diagrama de Flujo
Pseudocdigo
SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3
.
.
.
CASO cn : accionn
DEFECTO : acciondefecto
}
17
INICIO
// Declaracin de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fraccin de hora, incrementa las horas a pagar en una unidad
SI( minutos > 0 )
horas = horas + 1
// Determina el importe a pagar
pago = horas * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero de horas a pagar
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
// Determina el importe a pagar
pago = horasPagar * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
Ejercicio 2:- Disee un algoritmo que determine si n nmero es o no es, par positivo.
Algoritmo
INICIO
// Declaracin de variables
REAL numero
CADENA tipoNumero
// Entrada de datos
LEER numero
// Determina si el nmero es o no es, par positivo
SI( (numero%2==0) && (numero>0) )
tipoNumero = "El nmero es par positivo"
SINO
tipoNumero = "El nmero no es par positivo"
// Salida de resultados
IMPRIMIR tipoNumero
FIN
18