Documente Academic
Documente Profesional
Documente Cultură
UNIDAD 1:
1.1. INTRODUCCIN.
Los matemticos hindes, rabes y europeos fueron los
primeros que desarrollaron tcnicas de clculo escrito.
El matemtico rabe Al'Khwarizmi , alrededor del ao
830 DC, escribe un libro de Aritmtica, traducido al latn
como Algoritmi de numero Indorum, donde introduce el
sistema numrico indio (slo conocido por los rabes
unos 50 aos antes) y los mtodos para calcular con l.
De esta versin latina proviene la palabra Algoritmo.
Por algoritmo se entiende "una lista de instrucciones
donde se especifica una sucesin de operaciones
necesarias para resolver cualquier problema de un tipo
dado". Los algoritmos son modos de resolucin de
problemas, cabe aclarar que no slo son aplicables a la
actividad intelectual, sino tambin a todo tipo de
problemas relacionados con actividades cotidianas. El
algoritmo es de carcter general y puede aplicarse a
cualquier operacin matemtica o a cualquier problema.
La formulacin de algoritmos fue uno de los ms
grandes adelantos dentro de la ciencia matemtica ya
que a partir de ello se pudieron resolver infinidad de
problemas.
Landa, matemtico ruso, quien ha investigado mucho al
respecto nos dice que "la ciencia matemtica, en el
proceso de su desarrollo, ha tratado de encontrar los
algoritmos ptimos ms generales para resolver los
problemas que permitan la solucin uniforme de clases
ms amplias de problemas de una manera, es decir,
empleando siempre el mismo sistema de operacin. Los
algoritmos, para llegar a ser tales deben reunir ciertas
caractersticas. Una de ellas es que los pasos que deben
seguirse deben estar estrictamente descritos, cada accin
debe ser precisa, y debe ser general, es decir, que pueda
ser aplicable a todos los elementos de una misma clase.
Por ejemplo en el caso del algoritmo de una
multiplicacin, no slo se realizar el procedimiento de
resolucin parte para la multiplicacin de 4 x 4, sino que
el mismo algoritmo podr aplicarse a cualquier
multiplicacin. La ltima de estas caractersticas ser la
resolucin, en otras palabras, esto quiere decir que el
algoritmo deber llegar a un resultado especfico.
Es de gran importancia aclarar que los algoritmos en si
mismos no resuelven problemas, se resuelven gracias al
producto de ejercer las operaciones dictadas por el
algoritmo, se puede decir que es por el planteamiento
mismo. La realizacin de algoritmos es natural e innata
Ejemplo 1.1
En un juego, el ganador obtiene una ficha roja; el
segundo, una ficha azul; y el tercero, una amarilla. Al
final de varias rondas, el puntaje se calcula de la
siguiente manera: Al triple de la cantidad de fichas rojas
se adicionan las fichas azules y se descuenta el doble de
las fichas amarillas. Si Andrs lleg 3 veces en primer
lugar, 4 veces de ltimo y 6 veces de intermedio, Qu
puntaje obtuvo?
Solucin:
COMPRENDE
Leer detenidamente el problema.
Cuntos colores de fichas se reparten?
Cuntas fichas rojas, azules y amarillas obtuvo
Andrs?
Qu pregunta el problema?
PLANEA
Para hallar el puntaje que obtiene Andrs por sus
llegadas de primero, calcular el triple de la
cantidad de fichas rojas.
Para hallar el puntaje por sus llegadas en segundo
lugar, contar la cantidad de fichas azules.
Para hallar el puntaje que pierde por sus llegadas
en ltimo lugar, calcular el doble de la cantidad de
fichas amarillas.
Para hallar el puntaje total, calcular la suma de los
puntajes por las fichas rojas y azules, restarle los
puntos de las fichas amarillas.
RESUELVE
Por tres fichas rojas: 3 x 3 = 9 puntos.
Por seis fichas azules: 6 = 6 puntos.
Por cuatro fichas amarillas: 4 x 2 = 8 puntos.
Para obtener el puntaje final de Andrs, sumar los
puntos obtenidos con las fichas rojas y azules (9 +
6 = 15 puntos) y de este resultado restar los puntos
representados por las fichas amarillas (15 8 = 7
puntos).
REVISA
El puntaje que obtuvo Andrs es 7 puntos.
Verificar las operaciones y comparar los clculos
con la solucin estimada.
Ejercicios
Debes tener en cuenta (y anotar) las actividades que
realizas para resolver estos problemas y clasificarlas en
cada una de las cuatro etapas vistas: comprender,
planear, resolver y revisar.
1.5. ALGORITMOS
En la naturaleza hay muchos procesos que puedes
considerar como Algoritmos ya que tienen
procedimientos y reglas. Incluso, muchas veces no
somos conscientes de ellos.
Por ejemplo, el proceso digestivo es un concepto de
algoritmo con el que convivimos a diario sin que haga
falta una definicin precisa de este proceso. El hecho de
que conozcas cmo funciona el sistema digestivo, no
implica que los alimentos que consumas te alimenten
ms o menos.
La familiaridad de lo que sucede da a da nos impide
ver muchos algoritmos que pasan a nuestro alrededor.
Procesos, rutinas o biorritmos naturales como la
gestacin, las estaciones, la circulacin sangunea, los
ciclos csmicos, etc., son algoritmos naturales que
generalmente pasan desapercibidos.
Ejemplo 1.2
Un procedimiento que realizamos varias veces al da
consiste en lavarnos los dientes. Veamos la forma de
expresar este procedimiento como un Algoritmo:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Ejemplo 1.3
Ejemplo 1.4
Consideremos algo ms complejo como el algoritmo de
Euclides para hallar el Mximo Comn Divisor (MCD)
de dos nmeros enteros positivos dados. Obsrvese que
no se especifica cules son los dos nmeros, pero si se
establece claramente una restriccin: deben ser enteros y
positivos.
ALGORITMO
1. Paso 1: Inicio.
2. Paso 2: Leer los dos nmeros (a y b). Avanzar
al paso 3.
3. Paso 3: Comparar a y b para determinar cul es
mayor. Avanzar al paso 4.
4. Paso 4: Si a y b son iguales, entonces ambos son
el resultado esperado y termina el algoritmo. En
caso contrario, avanzar al paso 5.
5. Paso 5: Si a es menor que b, se deben
intercambiar sus valores. Avanzar al paso 6; si a
no es menor que b, avanzar al paso 6.
6. Paso 6: realizar la operacin a menos b, asignar
el valor de b a a y asignar el valor de la resta a
b. Ir al paso 3.
Ejercicio
A diferencia de los seres humanos que realizan
actividades sin detenerse a pensar en los pasos que
deben seguir, los computadores son muy ordenados y
necesitan que quien los programa les especifique cada
uno de los pasos que debe realizar y el orden lgico de
ejecucin.
Numerar en orden lgico los pasos siguientes (para
pescar):
___ El pez se traga el anzuelo.
___ Enrollar el sedal.
___ Tirar el sedal al agua.
___ Llevar el pescado a casa.
___ Quitar el Anzuelo de la boca del pescado.
___ Poner carnada al anzuelo.
___ Sacar el pescado del agua.
UNIDAD 2:
IDENTIFICADORES.
En programacin, las Variables son espacios de trabajo
reservados para guardar datos (valores). El valor de una
Variable puede cambiar en algn paso del Algoritmo o
permanecer invariable; por lo tanto, el valor que
contiene una variable es el del ltimo dato asignado a
esta.
Ejemplo 2.1
En el siguiente diagrama de flujo, "AREA" es un
ejemplo de Variable; en el paso 5 se guard en ella el
resultado de multiplicar "BASE" por "ALTURA" y en el
paso 6 se utiliz nuevamente para guardar el valor de
dividir su propio contenido ("AREA") entre la Constante
"DIV".
2.3. VARIABLES
Cuando
representamos
datos,
numricos
alfanumricos, debemos darles un nombre.
Esto no
fechaNueva.
c1.
totalPersonas.
contador_Maletas.
cantidad_de_Alumnos.
pedido_Almacen.
2.4. OPERACIONES
Relacionales.
Aritmticos.
Alfanumricos.
Lgicos.
>=
<>
Verdadero
Falso
Operador
Mayor que
Menor que
Igual a
Menor o igual
que
Mayor o igual
que
Distinto
Signo
+
*
/
^
MOD
Significado
Suma
Resta
Multiplicacin
Divisin
Potenciacin
Resto de la divisin entera
Ejemplos:
Ejemplo
Resultado
25 <= 25
Verdadero
25 <> 25
Falso
25 <> 4
Verdadero
50 <= 100
Verdadero
500 >= 1
Verdadero
1=6
Falso
Cuando se comparan caracteres alfanumricos se hace
uno a uno, comenzando por la izquierda hacia la
derecha.
Ejemplos:
Expresin
"Pseudo" + "cdigo"
"3" + "4567"
"Hola " + "que tal ?"
Resultado
"Pseudocdigo"
"34567"
"Hola que tal ?"
Signo
OR
AND
NOT
Significado
Suma lgica (O)
Producto lgico (Y)
Negacin (NO)
Ejemplos:
Las letras minsculas son mayores que las maysculas y
cualquier carcter numrico es menor que cualquier letra
mayscula o minscula; As:
carcter numrico < maysculas < minsculas.
Ejemplos:
Comparacin
"A" < "B"
"AAAA"
>
"AAA"
"B" > "AAAA"
Resultado
Verdadero
Verdadero
Expresin
Verdad AND Falso
NOT Falso
Verdad OR Falso
Resultado
Falso
Verdad
Verdad
Verdadero
Parntesis
Potencias
Productos y Divisiones
Sumas y restas
Concatenacin
Relacionales
Lgicos
gol_local gol_local + 1.
vueltas vueltas + 1.
faltan faltan 1.
de_cinco de_cinco + 5.
c c + 1.
x x 3.
Contador
La sintaxis es:
edad 25.
edad 100.
edad 77.
a) nmeros.
b) Numero X.
c) 7
d) A(45+
e) VII
f) 7mesas.
g) sieteMesas
2.2. Halle el valor de A:
A A o (3+5*8) < 3 y ((-6/3 div 4)*2 < 2)
Ejemplos:
Halle el valor de A:
A (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1)
A (3*32 mod 1 + (-16)) < 10
A -16 < 10
A Verdadero
Ejemplo
Escribir un algoritmo que intercambie el valor de dos
variables.
Si se tienen, por ejemplo a = 5 y b = 10, se quiere
intercambiar el valor de las variables, as:
a = 10; b = 5.
No podemos asignar directamente el valor de una a la
otra porque uno de los valores se destruira; de modo
que esto no se puede hacer:
a b (el valor de a se pierde y quedara a = 10 ; b =
10) .
La solucin consiste en asignar el valor de una de las
variables a otra variable auxiliar.
inicio
leer A,B
Auxiliar A
A B
B Auxiliar
imprimir A,B
fin
Ejercicios
-3
10
e) (I < 4) o (J > 5)
f) no (I > 6)
UNIDAD 3:
3.1. DIAGRAMAS DE FLUJO PARA
REPRESENTAR ALGORITMOS
Diagrama de Flujo
11
Actividad 1.6
Hallar el permetro de un cuadrado cuyo lado mide 5
cm.
2. Hallar el permetro de un crculo cuyo radio mide 2
cm.
3. Hallar el rea de un cuadrado cuyo lado mide 5 cm.
4. Hallar uno de los lados de un rectngulo cuya rea
es de 15 cm2 y uno de sus lados mide 3 cm.
5. Hallar el rea y el permetro de un crculo cuyo radio
mide 2 cm.
6. Hallar el rea de un pentgono regular de 6 cm de
lado y con 4 cm de apotema.
1.
12
UNIDAD 4:
4.1. PROCESOS
Se llama procesos a todas las instrucciones contenidas
en un algoritmo para:
4.2.ESTRUCTURA SECUENCIAL
Un Algoritmo est compuesto por instrucciones de
diferentes tipos, organizadas secuencialmente, en forma
de estructuras de control. De estas estructuras de control,
las ms comunes son las siguientes:
Secuencial.
Iterativa (repeticin).
Condicional (decisin, seleccin).
Declaracin variables
Asignacin de valores
Entrada de datos
Procesamiento de datos (operaciones)
Reporte de resultados
Ejercicios
4.1. Disear un algoritmo que lea la cantidad de lluvia en
pulgadas e imprima su equivalente en milmetros
sabiendo que 25.5 mm = 1 pulgada.
4.2. Disear un algoritmo que lea el nombre y el apellido
de una persona en ese orden e imprima el apellido
seguido del nombre.
4.3. El costo de un automvil para el comprador es la
suma total del costo del vehculo, del porcentaje de
ganancia del vendedor (12%) y de los impuestos
estatales y locales aplicables (6%). Disear un
algoritmo que lea el costo del automvil e imprima
el costo para el comprador.
4.4. La calificacin final de un estudiante viene dada por
tres aspectos del trabajo anual: nota de laboratorio
que cuenta un 30% del total, nota de examen parcial
que cuenta un 20% del total y nota de examen final
que cuenta el 50% restante. Disear un algoritmo
13
4.3.ESTRUCTURA CONDICIONAL
La estructura condicional se utiliza para indicarle al
computador que debe evaluar una condicin y, a partir
del resultado, ejecutar el bloque de instrucciones
correspondiente. La forma ms comn est compuesta
por una proposicin que se evala y dos bloques de
instrucciones que se ejecutan, uno cuando la condicin
es verdadera (seleccin simple y doble) y otro cuando
sta es falsa (nicamente en la seleccin doble).
Por su parte, un bloque de instrucciones puede contener
una o varias instrucciones que se ejecutan una detrs de
otra. La estructura condicional tiene dos variantes:
Seleccin Mltiple.
Seleccin simple.
14
Ejemplo:
Si a = 5 entonces
imprimir"A es 5"
si - no
imprimir "A no es igual a 5"
fin
-
si
15
si-no
Si numero=2 entonces
imprimir="Lunes"
si-no
Si numero=3
imprimir "Martes"
si-no
Si numero=4 entonces
imprimir "Miercoles"
si-no
Si Numero=5 entonces
imprimir "Jueves"
si-no
Si numero=6 entonces
imprimir "Viernes"
si-no
Si numero=7 entonces
imprimir "Sbado"
si-no
imprimir "El nmero
debe estar entre 1 y 7"
fin-si
fin-si
fin-si
fin-si
fin-si
fin-si
fin-si
fin
Notars que tenemos varios Si...entonces anidados, ya
que si el nmero ingreso no es 1, tenemos que preguntar
si es 2 3 4...etc. El ltimo Si...entonces es para
verificar que el nmero ingresado no es 1, 2, 3, 4, 5, 6
7; sino cualquier otro que no nos interesa.
Repasa los algoritmos anteriores.
Resulta bastante tedioso anidar un montn de Si ...
entonces, como en el ejemplo del da de la semana.
Cuando queramos o necesitemos hacer numerosas
comparaciones podemos usar otra estructura de
seleccin llamada Segn Sea. El formato de estructura
de seleccin Segn sea es:
Segn sea <variable>
Caso = <condicin>
Caso = <condicin>
instruccin o instrucciones
Otro caso
instruccin o instrucciones
fin-segn
As, utilizando esta estructura, el problema del da de la
semana ser as:
inicio
Leer numero
Segn sea numero
Caso = 1
imprimir "Domingo"
Caso = 2
imprimir="Lunes"
Caso = 3
imprimir="Martes"
Caso = 4
imprimir "Miercoles"
Caso = 5
imprimir "Jueves"
Caso = 6
imprimir "Viernes"
Caso = 7
imprimir "Sbado"
Otro Caso
imprimir "El nmero debe estar entre 1 y 7"
fin-segn
fin
Lo cual resulta menos engorroso que varios Si...
entonces anidados. Es posible anidar Si... entonces
dentro de estructuras Segn sea y viceversa.
Observa que la instruccin Otro Caso ejecuta una o
varias instrucciones cuando no se cumple ningn caso de
los contemplados ms arriba. Otro Caso debe estar
siempre al final (cuando sea necesario, si no o es se
puede omitir Otro Caso)
El uso de una u otra estructura depende de cada persona,
pero en general cuando las condiciones a evaluar son
muchas, se utiliza Segn Sea.
La estructura segn sea admite varias condiciones por
ejemplo:
Segn sea MES
caso= 1,3,5,7,8,10,12
TDias = 31
caso = 2,4,6,11
TDias =30
caso = 2
TDias=28
fin-segn
Este pequeo ejemplo establece el nmero de das de un
mes determinado almacenado en la variable MES (para
aos no bisiestos). En lugar de escribir varios Caso= 1,
Caso =2, etc, se puede especificar accin o acciones (en
este caso la asignacin de das a TDias) cuando la
variable tome uno de los valores separados por comas.
16
4.15.
4.4.ESTRUCTURA ITERATIVA
(REPETICIN)
La estructura iterativa o de repeticin permite ejecutar
una o varias instrucciones, un nmero determinado de
veces o, indefinidamente, mientras se cumpla una
condicin. Esta estructura ayuda a simplificar los
algoritmos, ahorrando tiempo valioso a quien resuelve
problemas con ayuda del computador.
17
18
Inicio
desde i = 1 hasta 100
imprimir i
fin-desde
fin
I es la variable ndice con un valor inicial de 1, se
incrementa uno en cada paso hasta 100.
Podemos notar que la estructura desde comienza con un
valor inicial de la variable ndice y las acciones se
ejecutan hasta que el valor inicial sea MAYOR que el
que el Valor final.
La variable ndice se incremente en uno (en el ejemplo)
y si este nuevo valor del ndice no es mayor que el valor
final, se ejecuta de nuevo la accin imprimir.
En este caso se visualizar los nmeros 1, 2, 3, 4, 5, 6, 7,
8, 9, 10 ....97, 98, 99, 100.
Otro Ejemplo:
Imprimir todos los nmeros pares desde 2 hasta el 300
19
Donde:
La variable ndice comienza en 2, se imprime 2 y en el
siguiente paso se incrementa (suma) 2 a la variable
ndice que pasa a valer 4; se imprime el 4 y como 4 es
menor que 300 (valor final) , se pasa a una nueva
iteracin incrementando nuevamente en 2 el ndice, que
ahora vale 6; y as sucesivamente...
Aqu se visualizan: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296,
298, 300
Si deseamos mostrar los impares el algoritmo es el
siguiente:
desde i= 1 hasta 300 incremento 2
imprimir i
fin-desde
El ciclo termina mostrando 299 puesto que en el
siguiente paso, La variable i valdra 301 y es mayor al
lmite establecido de 300. i pasa a valer realmente 301
en el ltimo paso, solo que la instruccin de imprimir no
se ejecuta porque el lmite de 300 se supera.
Si diramos la instruccin de imprimir el valor de i,
inmediatamente despus del fin-desde, veamos 301.
Ejemplo 3: Imprimir los valores comprendidos entre el
460 y 500 en orden inverso.
Debemos mostrar: 500, 499, 498, 497,..... 462, 461, 460.
En este caso haremos un decremento a la variable ndice
(no un incremento como en los ejemplos anteriores).
Tenemos que comenzar nuestra variable ndice en 500 y
decrementar una unidad hasta alcanzar el 460, as:
Estructura Mientras
desde i= 500 hasta 460 incremento -1
imprimir i
fin-desde
mientras {condicin}
accin 1
accin 2
accin 3
.....
accin n
fin mientras
instruccin X
20
repetir
Estructura Repetir
La estructura repetir cumple la misma funcin que la
estructura mientras. La diferencia est en que la
estructura mientras comprueba la condicin al inicio y
repetir lo hace al final; por eso la estructura repetir se
ejecuta por lo menos una vez.
La sintaxis es:
repetir
intruccin 1
instruccin 2
instruccin 3
......
hasta {condicin}
instrucin X
Repetir es opuesta a la estructura mientras. Repetir se
ejecuta hasta que se cumpla una condicin que se
comprueba al final del bucle. Esto implica que las
instrucciones que forman el cuerpo del bucle se ejecutan
21
UNIDAD 5:
5.1. ARREGLOS.
A(3) =
A(10) =
A(1) =
-5
99
12
22
inicio
Leer n
dimensionar v(n)
desde i = 1 hasta n
Leer v(i)
fin desde
fin
As vamos a cargar un arreglo SIEMPRE
23
desde
impimir ""La suma de los elementos del vector es:",
suma
imprimir "El promedio es:", promedio
fin
dimensionar M(5,6)
24
inicio
leer cantfila, cantcolumna
dimensionar M (cantfila, cantcolumna)
desde I = 1 hasta cantfila
desde J=1 hasta cantcolumna
leer M(I, J)
fin-desde
fin-desde
desde I=1 hasta cantfila
desde J=1 hasta cantcolumna
suma suma + M(I, J)
fin-desde
fin-desde
promedio f suma / (cantfila * cantcolumna)
desde I = 1 hasta cantfila
desde J=1 hasta cantcolumna
imprimir M(I, J)
fin-desde
fin-desde
fin
Una matriz que tiene la misma cantidad de filas y de
columnas
se
llama
matriz
cuadrada.
1 2 3 4 5
inicio
leer cantfila, cantcolumna
dimesionar MAT(cantfila, cantcolumna)
----- se dimensiona
desde fila=1 hasta cantfila
desde columna=1 hasta cantcolumna
leer MAT(fila,columna)
------- lectura
fin-desde
fin-desde
desde fila=1 hasta cantfila
desde columna=1 hasta cantcolumna
imprimir MAT(fila,columna)
----- impresin
fin-desde
fin-desde
fin
2
4
5
Esta es una matriz cuadrada de orden 5.
Las matrices cuadradas tienen ciertas caractersticas; por
ejemplo, los elementos en donde el nmero de filas es
igual al nmero de columnas se llama diagonal principal
(sealados en amarillo): Los elementos de la diagonal
principal tienen, entonces, la propiedad de que fila =
columna
---
25
7 8 9 10 11 12
0
- -3 21 22
1 2
33 3 0 5 12 4
Escalar: 5
Resultado de multiplicar la matriz A por el escalar
(numero) 5
Matriz D
5
10 15 20 15 30
35 40 45 50 55 60
0
Elementos de la Matriz Elementos de la Matriz
triangular superior
triangular inferior
Operaciones con Matrices
1- Suma de matrices: Si A y B son dos matrices de igual
dimensin (MxN), entonces la suma de Ay B existe y es
igual a una matriz C tambin de dimensin MxN en
donde cada C (i, j) = A (i, j) + B (i, j):
Matriz A
10 8 3 0
-5
- 105 110
10 15
165 15 0 25 60 20
3- Traspuesta de una matriz: Si A es una matriz de orden
MxN, la traspuesta de A, denotada como A, es otra
matriz de orden NxM donde cada B (i, j) = A (j,i). Una
matriz es simtrica si A = A:
Matriz A:
0
7 -3 33 45
9 10
11
Traspuesta de A, A:
9 15 71 29
Matriz B
10
11
1 6 9 69
14 22 56 7
3 5 80 1
A y B son de igual dimensin, por lo tanto existe una
matriz C que es la suma de A y B
11 14 13 69
21 19 89 52
12 20 151 30
2- Producto Escalar por una matriz: Si A es una matriz
de orden (dimensin) MxN y K es un escalar, el
producto de K*A es igual a otra matriz D tambin de
orden MxN en donde casa D (i, j) = K * A (i ,j):
Matriz A:
Ejercicios
5.1. Se tiene una tabla con los datos de matricula, peso,
estatura y sexo de los alumnos de una Universidad.
Construya un algoritmo que reciba los datos de la tabla
antes mencionada, calcule y genere como salida el
promedio de los pesos y de las estaturas. Su algoritmo
debe entregar estos valores considerando todos los
individuos y tambin diferenciando por sexo. Considere
fin de datos la matrcula en cero (0).
5.2. Se dispone de una tabla con las temperaturas
registradas a medio da durante el ao 2007. Se
desea determinar cul fue la mxima, cual fue la
mnima y cuantas veces se repiti cada una de estas
durante el ao 2007. Adems se desea saber el
promedio de dichas temperaturas.
5.3. Cargar un vector de n componentes
1 2 3 4 5 6
26
UNIDAD 6:
FUNCIONES Y PROCEDIMIENTOS.
En general un problema complejo puede ser resuelto de
manera ms fcil y eficiente si se divide en problemas
ms pequeos y concentrndonos en cada etapa en la
solucin de ese "subproblema". Esto implica que el gran
problema original ser resuelto por medio de varios
mdulos, cada uno de los cuales se encarga de resolver
un subproblema determinado. Esos mdulos, se conocen
con el nombre de subalgoritmos. Un subalgoritmo no es
ms que un algoritmo que tiene la funcin de resolver un
subproblema.
Los subalgoritmos se escriben slo una vez, luego es
posible hacer referencia a ellos ("llamarlos") desde
diferentes puntos del algoritmo. La ventaja obvia es que
nos permite reutilizacin y evita la duplicacin de
cdigos.
FUNCIONES
Desde el punto de vista matemtico, una funcin es una
expresin que toma uno o ms valores llamados
argumentos y produce un valor que se llama resultado.
Este resultado es adems, nico. Ejemplos de funciones
matemticas
son
los
logaritmos,
funciones
trigonomtricas (seno, coseno, etc).
El en ambiente de programacin y diseo de algoritmos,
las funciones tienen exactamente el mismo significado.
Es decir, se realizan ciertos clculos con una o ms
variables de entrada y se produce un nico resultado. En
programacin y diseo de algoritmos, este resultado
podr ser un valor numrico, alfanumrico o lgico. Es
decir, una funcin puede devolver un resultado que
puede ser una cadena, un nmero o un valor de tipo
lgico (verdadero o falso). Esto hace que en los
lenguajes de programacin, debamos especificar de qu
tipo es una funcin. Una funcin ser de tipo numrica
cuando devuelva un nmero y ser de tipo alfanumrica
o string cuando devuelva una cadena. En el caso de las
funciones de tipo numrico se tienen subdivisiones que
estn dadas por los tipos de datos soportados por el
lenguaje (integer o entero, simple o single, doble
precisin o double, real, etc). O sea que cuando una
funcin numrica devuelva un valor numrico entero
27
MES(2)
(esto
28
nombre="Setiembre"
caso= 10
nombre = "Octubre"
caso=11
nombre= "Noviembre"
caso= "12"
nombre="Diciembre"
fin caso
MES nombre > Le decimos a la funcin que
devuelva el resultado al algoritmo principal
Fin funcin
Debes notar como pasan los valores desde el algoritmo
principal a la funcin. En este caso, cuando se llama a la
funcin:
nombre_mes MES (numero_mes)
El valor que se pasa a la misma est en la variable
numero_mes que toma un valor comprendido entre 1 y
12.
Cuando se llama a la funcin, este valor debe ser
recibido por la misma, en este caso en el cuerpo de la
funcin se coloca entre parntesis el nombre de la
variable que recibir el valor:
Funcin MES (valor)
Si se pasan varios valores, todos deben ser recibidos en
sus correspondientes variables.
La funcin toma el valor pasado desde el algoritmo y lo
guarda en la variable valor para procesarlo. Luego de
que obtiene un resultado, en este caso el valor de
nombre_mes, se le ordena a la funcin que devuelva ese
valor al algoritmo principal:
MES nombre
Esto es siempre as: nombre_funcion resultado
Es en este punto donde se retorna a la lnea siguiente a la
que llam a la funcin en el algoritmo principal:
imprimir "El mes correspondiente es: ",
nombre_mes
Resumiendo. Una funcin devuelve un slo valor, para
que funcione la funcin debe recibir uno o varios valores
desde el algoritmo principal, realizar el proceso y
devolver el resultado. La funcin se escribe de igual
forma que cualquier algoritmo, la diferencia consiste en
que en lugar de inicio y fin, ponemos:
Funcin <nombre_funcin>
fin_funcin
La llamada a la funcin se hace con su nombre y el o los
valores que le pasamos.
Cuando necesitemos procesar uno o varios valores y
ofrecer UN resultado, utilizaremos funciones.
Ejemplos de Funciones
A continuacin, estudiaremos ejemplos de funciones. De
esta forma comprenderemos mejor el su funcionamiento.
Ejemplo1: Escribir una funcin que devuelva la raz
cuadrada de un nmero ingresado por teclado.
Aunque todos los lenguajes de programacin tiene
instrucciones para calcular una raz cuadrada, como aqu
no estamos escribiendo cdigo, encontraremos la raz
cuadrada de un nmero elevando a la potencia 1/2. En
general, la raz x de un nmero se obtiene elevando ese
nmero a la potencia 1/x.
Llamaremos RAIZCUA a la funcin que vamos a
escribir. La funcin RAIZCUA debe obtener un valor
que se pasa desde el algoritmo principal (el nmero del
cual queremos calcular la raz cuadrada), elevarlo a la
potencia 1/2 y luego devolver este valor al algoritmo
principal. Recordemos que no podemos permitir el
ingreso de nmeros negativos.
inicio
leer numero
mientras numero < = 0
imprimir "Ingrese un nmero positivo"
leer numero
fin-mientras
resultado RAIZCUA(numero)
imprimir "La raiz cuadrada es:", resultado
fin
Funcin RAIZCUA(valor)
raiz valor ^ 1/2
RAIZCUA raiz
fin-funcin
Este algoritmo comienza leyendo el nmero, verifica
que sea un nmero positivo con la estructura repetitiva
mientras y luego hace el llamado a la funcin RAIZCUA
pasndole la variable numero. El valor de esa funcin se
recibe en una variable resultado.
La funcin RAIZCUA recibe el numero que el programa
le pasa en la variable valor, luego eleva ese numero a la
potencia 1/2 y lo asigna a la variable raz.
29
numero2,
PROCEDIMIENTOS
Hemos visto que las funciones se utilizan para devolver
como resultado un valor Sin embargo, en ocasiones
necesitaremos devolver ms de un resultado o tambin
ejecutar las mismas lneas de cdigo varias veces en un
algoritmo (como por ejemplo una ordenacin, etc.) En
estas situaciones la funcin no es apropiada y se
utilizarn los procedimientos (tambin llamados
subrutinas).
Un procedimiento es un conjunto de sentencias o
instrucciones que realizan una determinada tarea y que
pueden ser ejecutados desde ms de un punto del
programa principal. Un procedimiento tiene una
llamada, cuando el procedimiento se ejecuta totalmente,
vuelve al punto desde donde fue llamado y se ejecuta la
siguiente instruccin.
El procedimiento se escribe como cualquier otro
algoritmo, solo existen diferencias en la parte inicial y
final. Para nombrar los procedimientos se deben seguir
las mismas reglas que para las variables. Notemos que el
objetivo de los procedimientos es ayudar en la
modularidad del programa y evitar la repeticin de
instrucciones ya que estas se pueden escribir en un
procedimiento y en lugar de repetirlas, llamar al
procedimiento cuantas veces sea necesario.
Desde el programa principal es posible pasar valores
(numricos, alfanumricos o combinacin de ambos) al
procedimiento. Este utilizar esos valores para realizar
un determinado proceso. Los valores que se pasan a un
procedimiento (en forma de variables) se llaman
parmetros (de igual forma que en las funciones).
Declaracin de un procedimiento
La sintaxis para la declaracin de un procedimiento es la
siguiente:
Procedimiento Nombre_procedimiento (parmetros)
<......acciones...>
<......acciones...>
30
Fin Procedimiento
La llamada a un procedimiento se hace simplemente por
su nombre:
Nombre_procedimiento(parmetros)
Tambin es posible que no se pase ningn parmetro al
procedimiento, en cuyo caso la llamada se hace as:
Nombre_procedimiento()
Cuando no se pasan parmetros se puede obviar los
parntesis.
Nombre_procedimiento
Podemos utilizar procedimientos, por ejemplo para
dibujar recuadros en la pantalla, mostrar mensajes de
error, realizar procesos en los que se debe devolver ms
de un resultado, colocar en un procedimiento las lneas
de cdigo que se repiten varias veces en un algoritmo.
Cuando necesitemos devolver ms de un valor en un
procedimiento, las variables que se devolvern los
resultados deben figurar en la lista de parmetros.
Ejemplo 1: Procedimiento para calcular el cociente y
resto de la divisin entre dos nmeros
inicio
leer numeroA, numeroB
DIVISION (numeroA, numeroB, P, Q)
imprimir P, Q
fin
Generales
1. Construya un algoritmo que reciba como entrada dos
valores: a y b, donde a < b. Este algoritmo debe
generar como salida los mltiplos de a que son
menores que b.
2. La serie de Fibonacci permite aproximar la forma en
que se reproducen los conejos. Se sabe que una pareja
de conejos puede tener dos cras al mes, y esto se da a
partir del tercer mes de nacidos, en el cual los conejos
alcanzan su edad madura. La forma en que aumenta la
poblacin de conejos mes a mes se puede ver en la
siguiente tabla, si consideramos que no se mueren
conejos y que inicialmente se cuenta con una pareja de
conejos recin nacida:
31
mes
1
2
3
4
5
6
parejas
conejos
1
1
2
3
5
8
de
Ej: 100336275-1
Construya un algoritmo que dado un valor n,
correspondiente a un mes cualquiera, determine la
cantidad de conejos en ese mes. Indicacin: observe que
en cada mes, la cantidad de conejos corresponde a la
suma de los conejos de los dos meses anteriores a ese
mes.
3. Construya un algoritmo que genere los trminos de la
siguiente serie, y adems calcule su valor para un n
dado.
1 0 0 3 3 6 2 7 5 1
2
0
6
4
1 13
0
3
6
7
16
29
Suma
30
Resta
Nmero
Binario: 1
Resto
75
74
1
2
37
36
1
2
18
18
0
2
9
8
1
2
4
4
0
Nmero
Binario: 1
2
2
2
0
2
1
2
2
2
0
2
1
32
33
1, 2, 4, 5, 10 y
20
10: 1, 2, 5 y 10
20:
2
2
2
5
60
30
15
5
1
2
2
3
5
MCD = 2x2x5= 20
Ejemplo:
ISBN=8472102629
2x2
5
34
20. Camino
Todos los das Jos parte de su casa (ubicada en un
cruce) hacia su trabajo (ubicado en un cruce tambin),
recorriendo calles que unen estos cruces. Aunque Jos
puede realizar este recorrido usando diferentes rutas, ha
notado que existen cruces a los cuales le es imposible
evitar.
Tarea
A Jos le inquieta saber todos los cruces que
necesariamente tiene que visitar, por eso usted debe
escribir un programa que le ayude a identificarlos.
Suponga el siguiente mapa de calles y cruces:
35
Salida: CAMINO.SAL
Un archivo CAMINO.SAL conteniendo la lista de
cruces solicitados, uno por lnea. Los cruces 1 y 1000
(casa y trabajo respectivamente) no deben ser
considerados en esta lista.
Ejemplo
CAMINO.ENT
CAMINO.SAL
14
15
12
13
14
25
35
45
56
59
67
68
79
89
23. Pesca
9 1000
Historia
Limo se ha ido de pesca y ha observado que los peces se
encuentran distribuidos a los largo de un lago. El tiene
una red de tamao nxm. Un pez es atrapado si se
36
DE
LOS
CUADRADOS
37
4
6
10
7
11
13
16
15
6
10
3
14
7
11
2
4
9
5
<16
1>
6
8
11
15
21
16
22
29
38
31
1
36
32
8
19
18
31
26
5
28
15
21
9
27
16
22
10
35
11
6
24
13
29
2
<36
32
8
23
17
26
5
4
28
15
21
9
34
33
27
16
22
10
3
35
11
14
20
29
2
6
25
24
13
7
<36
39
40
40 4
CHEF.SOL
Da 1: cena para la empresa 1
Da 2: cena para la empresa 4
Da 3: cena para la empresa 3
Total ganancia obtenida= $124
Da 1: cena para la empresa 4
Da 2: cena para la empresa 8
Da 3: cena para la empresa 7
Da 4: cena para la empresa 11
Da 5: cena para la empresa 9
41
42
35. Escriba un programa que juegue al juego de ROJOAMARILLO-VERDE. El programa genera tres
dgitos aleatorios entre 0 y 9. A estos dgitos se le
asigna la posicin 1, 2 y 3.
43