Академический Документы
Профессиональный Документы
Культура Документы
Primer Parte
Algoritmo: Es una secuencia ordenada y finita de pasos (acciones) que permite hallar la solucin de un
problema. Nos permite pasar desde un estado inicial o actual a un estado final o deseado.
Ejemplo 2: Mostrar por la pantalla de una computadora, una tabla que contenga las temperaturas
desde 0 a 10 grados centgrados (con escala de 1) y sus respectivos valores equivalentes en grados
fahrenheit.
1. Inicio.
2. Asignar 0 a cantidad de grados centgrados.
3. Repetir los pasos 4, 5 y 6 mientras la cantidad de grados centgrados sea menor o igual a 10:
4. Calcular equivalente de grados centgrados, en grados Fahrenheit.
5. Mostrar por pantalla grados centgrados y Fahrenheit.
6. Incrementar en 1 la cantidad de grados centgrados.
7. Fin
Vemos que en el ejemplo 2 se resuelve un problema computacional, mientras que en el ejemplo 1 es
de otro mbito. Pero en todos los casos, la idea es la misma: elaborar un algoritmo que resuelva el
problema planteado detallando sus pasos en orden.
Hasta aqu se ha trabajado con algoritmos que resuelven problemas de aplicacin general. Si bien
todos comparten determinadas caractersticas, el resto de este apunte har referencia a algoritmos
que resuelven problemas computacionales.
3. Algoritmos:
Los algoritmos se componen de:
Instrucciones elementales:
- Asignacin: Permite asociar un valor a una variable, es decir almacenar un dato en el
espacio de memoria correspondiente a una variable. Es la instruccin fundamental, ya
que todo algoritmo implica una cantidad de asignaciones mas o menos complejas.
Sintaxis: v = E
Donde: v es una variable cualquiera y E puede ser un valor, una expresin que arroja un
resultado u otra variable con un valor asignado anteriormente.
Se lee como Asignar a v, el valor de E. (Notar que no se lee v es igual a E)
este proceso, es resolver los errores de sintaxis en el cdigo fuente. Una vez obtenido el
ejecutable, se debe probar y determinar si el cdigo hace lo que se desea que haga. Si no es
as, quiere decir que existen errores lgicos en el diseo del algoritmo. Finalmente, stos se
deben corregir hasta que el programa funcione correctamente.
En las prximas secciones se explicar con mas detalle cada una de estas etapas.
Para especificar o disear un algoritmo se pueden utilizar diagramas y pseudocdigo, entre otras cosas.
Estas herramientas de diseo son independientes del lenguaje de programacin que se utilice para
codificar.
Diagramas: Existen varios de tipos de stos. Mencionaremos, por ejemplo, a los diagramas de
flujo y de llaves.
- Diagramas de Flujo: Consta de smbolos grficos que permiten construir los patrones
lgicos del algoritmo:
Inicio y Final
Asignacin
Grficamente:
Nota: En este cursado, se ha elegido trabajar con diagramas de flujo pero se debe tener
presente que el diseo de un algoritmo puede realizarse con otros diagramas tambin.
Ahora, veremos en forma genrica como representar las estructuras vistas mediante el diagrama de
flujo y el pseudocdigo respectivamente.
Estructura Secuencial:
Estructura Condicional:
Se cumple Condicin?
- Si es as: realizar Secuencia de acciones 1.
- Si no es as: realizar Secuencia de acciones 2.
Tambin podra ocurrir que no haya nada que hacer si la Condicin no se cumple, como se
muestra en la siguiente imagen:
Estructuras Iterativas:
- Conteo controlado: Las iteraciones se realizan una cantidad de veces, determinada y
conocida antes de comenzar a iterar.
Donde:
v: es una variable
p: es un valor numrico que puede estar almacenado en una variable o ser una
constante.
Lo representado en la figura es lo que describe a continuacin. Al comenzar la repetitiva,
v se inicializa con Valor Inicial. En cada iteracin se verifica la condicin v> Valor Final.
Si se cumple, la repetitiva se detiene y se contina con la accin siguiente a sta. Si no es
as, v se incrementa en p (paso) y se realiza la Secuencia de acciones expuesta en el
diagrama.
Lic. Lidia Ferreyra Pgina 8 de 24
Mtodos Computacionales I Ao 2017
Nota: Otro tipo de repetitiva similar es Repetir Hasta. En ese caso, la Condicin se
evala despus de la Secuencia de acciones. La primera iteracin se realiza seguro y
luego se evala la Condicin para determinar si se contina iterando o no. Entonces, con
un Repetir Hasta, se pueden realizar 1 o mas iteraciones.
Ejemplo: realizar diagrama de flujo y pseudocdigo correspondientes al diseo del algoritmo que
resuelve el siguiente problema:
Leer dos datos de entrada naturales a y b. El valor a debe ser menor o igual que b, de lo contrario
se deben intercambiar sus valores. Calcular la sumatoria de los nmeros naturales pares que
existen entre a y b inclusive. Los nmeros que no sean pares, deben sumarse duplicados
La primera forma de resolverlo, que nombraremos Ejemplo 3 para referirnos a sta mas
adelante, corresponde a una simple secuencia de acciones a ejecutar. All, los datos a y b se leen
desde teclado y el resultado s se muestra por pantalla.
Ejemplo 3:
INICIO
LEER a, b
SI (a>b) ENTONCES
aux=a
a=b
b=aux
FIN SI
S=0
PARA i=a HASTA b, CON PASO 1:
SI (i/2 == int(i/2)) ENTONCES
s=s+i
SI NO
s=s+i*2
FIN SI
FIN PARA
ESCRIBIR s
FIN
Notas:
La funcin int devuelve la parte entera de un valor.
Se utiliz el smbolo ==" en la condicin (rombo) con el objetivo de enfatizar el uso de ==
para expresar igualdad. Pero si se hubiese usado = en ese lugar para expresar lo mismo, es
decir dentro de un condicional de un diagrama de flujo , sera correcto de todos modos.
Ejemplo 4:
Parmetros de Entrada: a,b
Parmetros de Salida: s
FUNCIN SUMA(a, b)
INICIO
SI (a>b) ENTONCES
aux=a
a=b
b=aux
FIN SI
S=0
PARA i=a HASTA b, CON PASO 1:
SI (i/2 == int(i/2)) ENTONCES
s=s+i
SI NO
s=s+i*2
FIN SI
FIN PARA
RETORNAR s
FIN FUNCION
Tambin la consola podra estar junto con otras aplicaciones (Explorador de $Variables, Historial de
comandos o Explorador de Archivos) en la misma ventana como se muestra en la siguiente figura. All,
se ve la consola en la parte central.
Se pueden escribir las instrucciones directamente en consola y ver su resultado al presionar la tecla
enter. Si no estamos interesados en que el resultado se muestre, bastar con agregar ; al final de la
instruccin. Ejemplo:
Las instrucciones que hemos ejecutado permanecen en un historial al que accedemos con las teclas
y , hacia atrs y hacia adelante respectivamente. De manera que al presionar esas teclas,
veremos las instrucciones anteriores en consola nuevamente, sin necesidad de volver a escribirlas.
Ayuda:
Para acceder a la Ayuda de Scilab, una forma puede ser escribir la palabra help en la consola y
presionar enter. Otra forma es hacer clic en el men ? y elegir Ayuda de Scilab. Como sea, se
acceder a la siguiente ventana:
Se distinguen 2 solapas:
- La primera, con la imagen de un libro, muestra los temas en orden. Es la que est activa en
la figura de arriba.
- La segunda, con la imagen de una lupa, permite buscar aquello que queremos consultar,
por ejemplo, una instruccin. Simplemente lo escribimos y presionamos enter. Luego, se
mostrar una lista de coincidencias del lado izquierdo. Al seleccionar una de stas,
aparecer su descripcin del lado derecho, incluso con algunos ejemplos. La figura
expuesta en la siguiente pgina ilustra lo dicho, all se busc la instruccin for, utilizada
en Scilab para repetitivas.
Continuando con el tema de ejecucin de instrucciones en consola, si tenemos que escribir varias
instrucciones seguidas all, como ocurre al codificar un algoritmo completo, esto se torna engorroso.
Entonces, podemos optar por escribir el cdigo fuente completo en otro archivo y despus ejecutarlo.
Para eso, se podra utilizar cualquier editor de texto (por ejemplo, el Bloc de Notas) y escribir all el
cdigo utilizando la sintaxis estipulada por el lenguaje. Pero es conveniente y recomendable usar el
editor provisto por Scilab para este fin, ya que nos brinda la funcionalidad adecuada para eso. Por
ejemplo, resaltar palabras reservadas escritas en el cdigo, permitir grabarlo y ejecutarlo, etc. Scilab
provee un editor llamado SciNotes. Una manera de acceder a ste es ir al men Aplicaciones y elegir
SciNotes. La ventana del editor mencionado se muestra a continuacin:
Scripts:
Contienen una secuencia de instrucciones. Los datos de entrada suelen obtenerse desde el exterior,
sea desde teclado o desde archivos. Las variables utilizadas son globales. Eso quiere decir son
reconocidas dentro y fuera del script. Se podra asignar un valor a una variable x dentro del script y al
utilizar x en la consola o en otro archivo en ejecucin, continuar teniendo el valor que se haba
asignado en el script. Es decir, debemos estar atentos a que el valor de una variable que utilicemos en
un momento, no haya sido modificado involuntariamente dentro de algn script ejecutado, que utiliza
el mismo nombre de variable para otra cosa.
Funciones:
Usualmente utilizan parmetros de entrada y de salida. Las variables utilizadas son locales. Es decir,
slo son reconocidas dentro del mbito de la funcin a la que pertenecen. Afuera, no estn definidas.
Eso nos evitara un inconveniente como el que se mencion para el caso de los scripts. Adems
favorece a la modularizacin y reusabilidad del cdigo. Los nombres de los parmetros de entrada y
salida expuestos en la declaracin de la funcin tambin son locales (esto no ocurre con los nombres
de los parmetros ingresados en la llamada de la funcin).
Donde:
- e1, e2, : Son parmetros de entrada. Son variables que guardan valores que necesita la
funcin para realizar sus clculos.
- s1, s2, : Son parmetros de salida. Son variables que guardan los valores que devuelve la
funcin al exterior.
Despus de declarar una funcin y ejecutarla, est lista para ser llamada y obtener su/s resultado/s
ingresando valores para sus parmetros de entrada. Una funcin puede ser invocada desde el mismo
archivo donde se declar, desde consola o desde otro archivo .sci o .sce.
Donde:
- r1, r2, : Son variables que guardarn los valores de los parmetros de salida de la funcin s1,
s2,.
- p1, p2,: Son los valores asignados a los parmetros de entrada e1, e2, de la funcin. Estos
pueden estar dados por constantes, variables o expresiones.
No es necesario que sean iguales los nombres de los parmetros utilizados en la declaracin y en la
llamada. Slo se verifica que coincida la cantidad de parmetros, adems deben tener tipos
compatibles con las operaciones en las que participarn dentro de la funcin. Es decir, por ejemplo, no
se podra enviar como parmetro un caracter si en el cuerpo de la funcin multiplica ese valor por un
real.
Un archivo pueden contener una o ms funciones. No es necesario, ni conveniente escribir una funcin
en cada archivo. Tambin Scilab permite tener en un archivo scripts y funciones juntos.
Como regla general, los scripts deben guardarse en archivos con extensin .sce y las funciones con
extensin .sci, aunque en la prctica Scilab permite otras combinaciones.
Una vez escrito el cdigo, debe guardarse. Una forma es hacer clic en botn de la barra de
herramientas. Luego, puede ejecutarse mediante el botn . Tambin podra hacerse estos dos pasos
juntos con el botn (guardar y ejecutar) o desde la barra de menes, desplegando el men Ejecutar
y eligiendo las opciones deseadas o desde consola como se explica en el apunte de Scilab publicado en
Pedco.
Corresponde al diseo:
Estructuras iterativas
- Conteo controlado. Sintaxis:
for v = Valor inicial : p : Valor final
Secuencia de acciones en cdigo Scilab
end
Si el paso p es 1, se podra omitir de la instruccin. Es decir, la misma lnea se podra
escribir for v = Valor inicial : Valor final
Corresponde al diseo:
Como se observa, se exponen los errores y los nmeros de lnea en que se encuentran. No
siempre esto es exacto, es lo que detecta el intrprete, pero es una buena gua para buscarlos
en el cdigo fuente y corregirlos. Despus de eso, hay que guardar y ejecutar nuevamente. Esto
se repite hasta que el cdigo ya no contenga errores sintcticos.
- Si el cdigo est sintcticamente correcto se podr ver, por ejemplo, lo expuesto en la siguiente
figura. All vemos que no se indican errores.
En esta etapa, se ha mencionado este procedimiento como una herramienta til para darnos cuenta
cuales son los errores lgicos cometidos en un cdigo que no funciona correctamente. Pero es
necesario destacar que el seguimiento de cdigo o traza permite entender que hace exactamente un
cdigo y cual es su salida, sea incorrecto o no. Por ejemplo, podran darnos un cdigo que no hemos
visto antes y esta es una forma de seguirlo y entenderlo.
a b aux s i
10 15
0
10
0+10 = 10
11
10+11*2 = 32
12
32+12 = 44
13
44+13*2 = 70
14
70+14 = 84
15
84+15*2 = 114
Cuando finaliza la ejecucin de la funcin Suma, sta devuelve al exterior el valor de su parmetro de
salida almacenado en la variable s, en este caso. Entonces, en el mbito en el que se hizo esta llamada,
se asigna el valor de s devuelto por la funcin a la variable r. All se desconoce por completo la
existencia de las variables a, b, aux, s e i, ya que son locales al mbito de la funcin Suma y slo son
reconocidas all.
Ejemplo 8: Traza del Ejemplo 6, en el que se implementa una funcin. Esta traza representa los que
pasa cuando los parmetros de entrada anteriores se ingresan invertidos.
Si la llamada hubiese sido: -->[r]=Suma(15, 10), slo variara al principio y el resto se mantendra igual,
como se ve a continuacin:
a b aux s i
15 10
15
10
15
0
10
0+10 = 10
11
10+11*2 = 32
12
32+12 = 44
13
44+13*2 = 70
14
70+14 = 84
15
84+15*2 = 114
Para seguir el mismo ejemplo dado para funcin, se ingresar 10. Entonces, el valor 10 se asigna a la
variable a.
Despus se ver:
All, hemos ingresado 15 para el 2do nmero natural y esto provocar que se asigne 15 a la variable b.
El resto de lo que ocurre es lo mismo expresado en la traza de la funcin. Excepto al final donde, en el
script, se indica que se muestre por pantalla el valor de s. Para ello, se debe agregar una columna a la
traza que contenga el valor emitido por pantalla. En consola, se ver:
En el caso de que los nmeros ingresados estn invertidos, primero se asignar 15 a la variable a, luego
10 a la variable b. El resto de la traza es el mismo mostrado para la funcin aplicada a estos valores.