Вы находитесь на странице: 1из 24

Mtodos Computacionales I Ao 2017

Conceptos Bsicos de Programacin

Este apunte es un resumen de conceptos bsicos utilizados durante el cursado de Mtodos


Computacionales I. Es una gua inicial e introductoria que debe completarse con lo expuesto en clase y
otros materiales que profundicen o amplen lo que aqu se expone.

Primer Parte

1. Introduccin. Resolucin de problemas mediante algoritmos:


El ser humano se enfrenta a una diversidad de problemas. Cmo obtener un caf de una mquina?
Cmo elegir la siguiente jugada en un partido de ajedrez? Cul es la solucin de un sistema de
ecuaciones?... etc. Los problemas, computacionales o no, son distintos pero todos pueden plantearse
como una diferencia entre un estado inicial o actual y un estado deseado o final. Para pasar de un
estado a otro debemos realizar un conjunto de determinadas acciones.

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.

Caractersticas deseables de un algoritmo:


Deben ser suficientemente generales (prever contingencias)
Deben ser claros para facilitar la comprensin.
Cada accin es determinada (sin ambigedades y sin depender de la casualidad)
Debe involucrar un nmero finito de pasos

Ejemplo 1: Algoritmo para reemplazar el vidrio roto de una ventana a un cliente.


1. Inicio.
2. Medir ancho y alto de espacio a cubrir con vidrio.
3. Calcular tamao de vidrio nuevo.
4. Confeccionar presupuesto.
5. El cliente acepta el presupuesto? SI: Ir a paso 6. NO: Ir a paso 9.
6. Cortar vidrio nuevo.
7. Retirar vidrio roto.
8. Colocar vidrio nuevo.
9. Fin.

Lic. Lidia Ferreyra Pgina 1 de 24


Mtodos Computacionales I Ao 2017

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.

2. Trminos presentes en la resolucin de problemas computacionales:


Instruccin: Es una orden o accin clara y precisa.
Proceso: Ejecucin de una o varias instrucciones en forma secuencial (un conjunto de
instrucciones se est ejecutando cuando la computadora est realizando lo indicado por stas).
Variable: Es un lugar de memoria donde se almacena un dato que puede ir cambiando. Tiene
los siguientes atributos:
- Nombre: Es necesario identificar cada variable con un nombre diferente. Es conveniente
que sea representativo de la informacin que representa.
- Tipo de dato: Describe el tipo de informacin que almacenar la variable. Algunos tipos
de datos son: Entero, Real, Lgico, Carcter, String (es una cadena de caracteres). El tipo
de dato limita las operaciones que podrn realizarse con cada variable. A continuacin
se mencionan algunas a modo de ejemplo.

TIPO DE DATO ALGUNAS DE LAS OPERACIONES PERMITIDAS

Entero Suma, resta, multiplicacin, divisin, potencia

Real Suma, resta, multiplicacin, divisin, potencia, parte entera

Lgico Conjuncin, disyuncin, negacin

String y caracter Concatenacin, comparacin

Lic. Lidia Ferreyra Pgina 2 de 24


Mtodos Computacionales I Ao 2017

Nota: Con respecto a los operadores aritmticos utilizados en las expresiones


algebraicas, su orden de precedencia es el que se indica abajo. Dichas
expresiones se evalan de izquierda a derecha.
1ero: Trminos entre parntesis.
2do: Potenciacin y races.
3ero: Multiplicacin y divisin.
4to: Suma y resta.
Programa: Es la codificacin de un algoritmo. Se escribe bajo la sintaxis determinada por un
lenguaje de programacin.
Lenguaje de programacin: Es un lenguaje diseado para expresar el conjunto de instrucciones
que un equipo debe ejecutar. Por lo tanto, un lenguaje de programacin es un modo prctico
para que los seres humanos puedan dar instrucciones a un equipo. Est formado por un
conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado
de sus elementos y expresiones.
Los lenguajes pueden ser compilados o interpretados.
- Lenguaje compilado: Una vez escrito el programa en cdigo fuente, se traduce en
bloque por medio de un compilador a cdigo mquina, generndose un archivo
ejecutable que realiza el conjunto entero de instrucciones indicadas en el cdigo,
cuando se lo solicite. Ejemplos: C, Fortran, Basic, etc.
- Lenguaje interpretado: Las instrucciones se interpretan y traducen una por una a
lenguaje mquina en tiempo de ejecucin mediante un intrprete. Ejemplos: Lisp,
Scilab, etc.
Comparacin:
- La ejecucin de un programa en un lenguaje interpretado es mas lenta que en uno
compilado, aproximadamente 10 veces.
- El chequeo de tipos de datos en un lenguaje compilado se hace en tiempo de
compilacin (esttico), es decir, cuando el compilador realiza la traduccin. En cambio,
en un lenguaje interpretado, se hace en tiempo de ejecucin (dinmico). Por tal motivo,
en los lenguajes compilados se deben declarar los tipos de datos de las variables dentro
del cdigo fuente, mientras que en los interpretados no.

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)

Lic. Lidia Ferreyra Pgina 3 de 24


Mtodos Computacionales I Ao 2017

- Entrada/Salida: Permiten la comunicacin con el mundo exterior, es decir todo aquello


que est fuera del algoritmo.
Las instrucciones de entrada permiten asociar un valor a una variable pero este
valor es tomado del exterior, por ejemplo desde el teclado o desde un archivo.
Sintaxis: Leer v. (Donde: v es el nombre de la variable)
Las instrucciones de salida permiten mostrar los resultados obtenidos al exterior,
por ejemplo por pantalla o a un archivo. Sin esta instruccin, las soluciones no
podran darse a conocer.
Sintaxis: Escribir E. (Donde: E es una expresin)

Estructuras lgicas bsicas:


Estn compuestas por grupos de instrucciones que se organizan de distintas formas desde el
punto de vista del flujo de la ejecucin. Es decir, del orden en que se realizan tales
instrucciones. Las estructuras bsicas son:
- Secuencial: Est compuesta por una serie de instrucciones que se ejecutan en forma
consecutiva. Se realizan slo una vez en el mismo lugar del algoritmo.
- Alternativa o Condicional: Nos permite tomar decisiones en funcin del valor de verdad
de una condicin lgica. Si la condicin evaluada resulta verdadera, se ejecuta una
secuencia de instrucciones mientras que si la misma es falsa se ejecuta otra diferente.
- Iterativa o Repetitiva: Permite repetir una serie de instrucciones tantas veces como sea
necesario. El nmero de veces debe ser finito.
Estas estructuras se pueden combinar entre s en un mismo nivel (una a continuacin de otra)
o en forma anidada (una dentro de otra).
Es necesario mencionar que estas estructuras no son slo propias del mbito computacional,
sino que se presentan en algoritmos en general, sean computacionales o no. Si bien
trabajaremos sobre problemas computacionales, de todos modos se hace la mencin.

4. Resolucin de problemas computacionales:


La resolucin de problemas computacionales conduce a la escritura de un programa y a su posterior
ejecucin. Aunque este es un proceso creativo, existen una serie de etapas comunes a seguir en el
desarrollo de programas. Estos son:
4.1. Planteo y anlisis del problema: Para poder desarrollar un programa, primero se debe
entender el problema que se debe resolver. Se debe establecer cul es el objetivo deseado y
como alcanzarlo.
4.2. Diseo del algoritmo: As como para construir un edificio, primero se debe disear en un
plano de ste. Para escribir el cdigo de un algoritmo, antes realizaremos su diseo
mediante diagramas y pseudocdigo.
4.3. Codificacin del algoritmo: Se transcribe el diseo del algoritmo al lenguaje de programacin
utilizado, en un archivo de texto al que denominaremos archivo fuente.
4.4. Generacin de cdigo ejecutable. Ejecucin, prueba y depuracin de errores: A partir del
cdigo fuente se genera el cdigo ejecutable, entendible por la mquina. Lo primero durante

Lic. Lidia Ferreyra Pgina 4 de 24


Mtodos Computacionales I Ao 2017

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.

4.1. Planteo y anlisis del problema:


Cul es la informacin que se quiere obtener con el programa a desarrollar, es decir, sus datos de
salida? Qu datos de entrada se necesitan para calcular u obtener tal informacin? Cmo se plantea
obtener los datos de salida a partir de los datos con los que se cuenta? Cules son las limitaciones?
Qu casos particulares deberan preverse?

4.2. Diseo del algoritmo:


Para llevar a cabo esta etapa, es conveniente aplicar las reglas establecidas por el diseo estructurado.
Es decir, se busca obtener algoritmos que cumplan la propiedad de modularidad. La misma consiste en
dividirlos en partes, a las que llamaremos mdulos, que se disean, codifican y prueban por
separado. En relacin a esto, se deben mencionar dos estrategias:
Top-down (de arriba hacia abajo): Se formula un resumen del sistema, sin especificar
detalles. Cada parte se refina diseando con mayor detalle. Cada parte nueva es entonces
redefinida, cada vez con mayor detalle, hasta que la especificacin completa es lo
suficientemente detallada.
Bottom-up (de abajo hacia arriba): Las partes individuales se disean con detalle y luego se
enlazan para formar componentes ms grandes, que a su vez se enlazan hasta que se forma el
sistema completo.
Otra consideracin a tener en cuenta cuando se disea un algoritmo, es que debe ser lo
suficientemente ordenado y claro para poder ser entendido en un futuro y adems, debe pensarse de
tal manera que pueda adaptarse a ampliaciones o a cambios de la funcionalidad requerida
(escalabilidad).

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

Lic. Lidia Ferreyra Pgina 5 de 24


Mtodos Computacionales I Ao 2017

Condicin, Alternativa o decisin


Conexiones
Intersecciones
Entrada o Salida
Conteo Controlado

- Diagramas de llaves: Utilizan el siguiente esquema:


Principio del algoritmo: Comprende todas las acciones que deben realizarse por nica
vez y al comienzo del algoritmo, como inicializar variables.
Cuerpo del algoritmo: Est formado por las combinaciones de estructuras que sean
necesarias para resolver el nudo del problema, respetando el orden e interrelacin
establecidas.
Fin del algoritmo: Comprende todas las acciones que deben realizarse por nica vez y al
final del algoritmo, como mostrar resultados.

Grficamente:

Cuerpo incluyendo estructuras alternativas y repetitivas:

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.

Lic. Lidia Ferreyra Pgina 6 de 24


Mtodos Computacionales I Ao 2017

Pseudocdigo: La palabra pseudo se refiere a algo que no es original, sino que es


una imitacin. O sea, estamos realizando una imitacin de las instrucciones de un cdigo
fuente. El pseudocdigo utiliza palabras claves en lugar de smbolos. Estas son:
Asignacin: variable = expresin
Secuencia: Simplemente se escribe una instruccin (accin) bajo la otra.
Alternativa: SI / ENTONCES / SI NO / FIN SI
Repetitiva:
Si es un conteo controlado: PARA / HASTA / CON PASO / FIN PARA.
Si slo se repite cuando una condicin es verdadera: MIENTRAS / FIN MIENTRAS

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.

Lic. Lidia Ferreyra Pgina 7 de 24


Mtodos Computacionales I Ao 2017

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

(El valor de v tambin podra decrementarse. Entonces, en cada iteracin se verifica la


condicin v<Valor Final. Si es as, la repetitiva se detiene. Si no es as, v se decrementa
en p (paso). Es decir, en lugar de la asignacin v=v+p inherente a cada iteracin,
tendramos v=v-p. Luego, se realiza la Secuencia de acciones expuesta en el diagrama.)

Otra alternativa es representar lo mismo utilizando la condicin v final en el


diagrama de flujo como sigue:

El pseudocdigo es el mismo que el anterior. La diferencia es que, de esta forma, en


cada iteracin se verifica la condicin v Valor Final. Si se cumple, v se incrementa en
p (paso) y se realiza la Secuencia de acciones expuesta. Si no es as, la repetitiva se
detiene y se contina con la accin siguiente a la repetitiva.
(Si v se decrementa en cada iteracin, la condicin a evaluar sera v Valor Final. Si se
cumple, se contina iterando. Si no es as, se corta la repetitiva. Nuevamente, en lugar
de la asignacin v=v+p inherente a cada iteracin, tendramos v=v-p)

- Repetir Mientras: La cantidad de iteraciones no se determinan antes de comenzar a


iterar, como en un conteo controlado, ya que eso depende exclusivamente del valor de
verdad de la Condicin. En cada iteracin, se verifica la condicin. Si es verdadera, se
realiza la Secuencia de acciones que se muestra abajo y se vuelve a verificar lo mismo. Si
es falsa, se corta la repetitiva y se contina con la instruccin que sigue a la repetitiva.
Con esta estructura, se pueden realizar 0 o mas iteraciones.

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.

Lic. Lidia Ferreyra Pgina 9 de 24


Mtodos Computacionales I Ao 2017

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

Lic. Lidia Ferreyra Pgina 10 de 24


Mtodos Computacionales I Ao 2017

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.

La segunda opcin, denominada Ejemplo 4, resuelve lo mismo en forma de una funcin.


Podemos ver esta ltima como uno de los mdulos que se mencionaron anteriormente al hablar
de diseo estructurado. En la prxima seccin se explica en detalle este tema, pero se exhibe aqu
su diseo, para mantener un orden en la exposicin de los temas. En este caso, los datos a y b son
sus parmetros de entrada. El resultado s se retorna al exterior de la funcin desde donde es
llamada.

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

Lic. Lidia Ferreyra Pgina 11 de 24


Mtodos Computacionales I Ao 2017

4.3. Codificacin del algoritmo


Las acciones incluidas en un diagrama de flujo o pseudocdigo se deben traducir a instrucciones que
sern escritas en un archivo de texto utilizando la sintaxis establecida por el lenguaje de programacin.
Tales instrucciones traducidas constituyen el cdigo fuente y el archivo se denomina archivo
fuente. De esta manera, escribimos el programa, que es la codificacin de un algoritmo.
Es importante realizar una buena documentacin de lo desarrollado. En esta etapa, eso tiene que ver
con la eleccin de los nombres de las variables (que hagan referencia a su contenido, en lo posible) y
con comentarios dentro del cdigo que ayuden a entenderlo, pero eso no es todo. La documentacin
tambin es parte de otras etapas del desarrollo ya que incluye modelaciones, diagramas, pruebas,
manuales de usuario, manuales tcnicos, etc; todo con el propsito de eventuales correcciones,
mantenimiento futuro y ampliaciones del programa.
En el presente cursado, trabajaremos con Scilab: Es un software libre y de cdigo abierto para
aplicaciones en ingeniera y ciencias que incluye un lenguaje de programacin interpretado. Se puede
descargar desde el sitio www.scilab.org . Como se mencion antes, en este lenguaje no es necesario
declarar las variables y sus tipos en el cdigo fuente antes de usarlas. Aqu se expondr una breve
introduccin a este lenguaje, es imprescindible completar el tema. Para ello, se publica en Pedco
material sobre Scilab. Tambin el software cuenta con una Ayuda que brinda descripcin y ejemplos de
diferentes temas a utilizar durante la programacin. Tambin es una buena opcin buscar en Internet
lo que necesitamos a medida que avanzamos en el cdigo.
Nota: Las imgenes que se exponen a continuacin corresponden a la versin 5.5.1, la cual era la
ltima en el momento en que se confeccion esta parte del apunte. No se han reemplazado ya que los
cambios en la versin posterior no implican modificaciones en estas imgenes, a excepcin de la barra
de ttulos.
Para comenzar a trabajar, se debe abrir la Consola de Scilab. Esta se muestra a continuacin:

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.

Lic. Lidia Ferreyra Pgina 12 de 24


Mtodos Computacionales I Ao 2017

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:

1. Se asigna 100 a la variable a.


2. Se asigna a c, el resultado de dividir a por 99 y sumar a multiplicada por 2.5. Es til aclarar que el
valor de a no cambia, ya que no est en el lado izquierdo de la asignacin.
3. Se asigna a c, la suma del valor actual de c ms 10. En este caso, el valor de c se modificar, pero
no se muestra en consola porque la instruccin finaliza con ;.
4. El resultado de escribir el nombre de la variable c en consola, es el valor actual de la variable
misma. Vemos que fue modificado por la instruccin anterior.

Lic. Lidia Ferreyra Pgina 13 de 24


Mtodos Computacionales I Ao 2017

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.

Lic. Lidia Ferreyra Pgina 14 de 24


Mtodos Computacionales I Ao 2017

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:

Lic. Lidia Ferreyra Pgina 15 de 24


Mtodos Computacionales I Ao 2017

All podemos escribir el cdigo desarrollado en forma de Script o Funcin:

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).

Sintaxis de la declaracin de una funcin:

function [s1, s2, ] = Nombre de la funcin(e1, e2, )



Cuerpo de la funcin

endfunction

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.

La sintxis de llamada de una funcin es:

[r1, r2, ] = Nombre de la funcin(p1, p2, )

Lic. Lidia Ferreyra Pgina 16 de 24


Mtodos Computacionales I Ao 2017

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.

Instrucciones frecuentemente utilizadas en Scilab:


Instrucciones bsicas:
Asignacin. Sintaxis: v = e. Donde:
- v es una variable
- e puede ser un valor, una expresin que arroja un resultado u otra variable con un valor
asignado anteriormente.
Entrada. Sintaxis: v = input(mensaje). Donde:
- v es una variable
- mensaje es una cadena de caracteres a mostrar por pantalla mientras se espera el
ingreso del valor de v.
Permite ingresar el valor de v por teclado.
Salida. Generalmente, utilizaremos dos funciones: disp y printf.
Sintaxis: disp(e1, e2, ). Muestra por pantalla de la ltima a la primera ei. Donde:
- ei pueden ser variables, constantes o expresiones.
Sintaxis: printf(formato, e1, e2, ).
Muestra por pantalla e1, e2, utilizando el formato indicado en el primer parmetro. Donde:
- Formato es una cadena de caracteres que incluye localizacin y formatos especficos
de salida de cada ei. Por ejemplo: %f: Muestra un nmero en forma flotante (utilizado
para valores reales), %i: Muestra un nmero en forma de entero, etc.

Lic. Lidia Ferreyra Pgina 17 de 24


Mtodos Computacionales I Ao 2017

Instrucciones para implementar las estructuras lgicas bsicas:


Secuencia. Se escriben las asignaciones una debajo de otra o separadas por ;
Estructura Condicional. Sintaxis:
if (Condicin) then
Secuencia de acciones 1 en cdigo Scilab
else
Secuencia de acciones 2 en cdigo Scilab
end
Los parntesis que encierran la Condicin, se pueden omitir.

Corresponde al diseo:

Si cuando la Condicin no se cumple no se debe hacer nada, la instruccin se reduce a:


if (Condicin) then
Secuencia de acciones 1 en cdigo Scilab
end

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:

Lic. Lidia Ferreyra Pgina 18 de 24


Mtodos Computacionales I Ao 2017

Para un conteo controlado en el que v se decremente en cada iteracin, la sintaxis Scilab


es la misma. Slo cambian los valores inicial, final y el paso.
- Repetir mientras. Sintaxis:
while (Condicin)
Secuencia de acciones traducidas a cdigo Scilab
end
(Los parntesis que encierran la Condicin, se pueden omitir)
Corresponde al diseo:

Los caracteres // se utilizan para incluir comentarios en el cdigo. Lo que se escribe a


continuacin de estas dos barras en la misma lnea, se ignora durante la ejecucin. A partir de
la versin 6.0 inclusive, se permite incluir comentarios multilnea, los cuales deben estar entre
los smbolos /* y */.
Nota: en esta Primer Parte del apunte slo se mencionan variables simples que almacenan un solo
valor (aunque ste se modifique). Es necesario aclarar que usualmente en el cursado tambin
trabajaremos con variables compuestas que almacenan mas de un valor, denominadas arreglos.
A continuacin, se muestra el cdigo Scilab correspondiente al ejemplo representado en la etapa de
diseo:
Ejemplo 5: Codificacin del diseo del ejemplo 3 de la etapa anterior, en forma de script:
a=input("ingrese 1er numero natural: ")
b=input("ingrese 2do numero natural: ")
if (a>b) then
aux=a
a=b
b=aux
end
s=0
for i=a:1:b
if (i/2 == int(i/2)) then //pares
s=s+i
else
s=s+i*2
end
end
disp(s)
Nota: la funcin int(valor) es provista por Scilab. Devuelve la parte entera de valor.

Lic. Lidia Ferreyra Pgina 19 de 24


Mtodos Computacionales I Ao 2017

Ejemplo 6: Codificacin del diseo correspondiente al ejemplo 4 de la etapa anterior, en forma de


funcin:
function [s]=Suma(a, b)
if (a>b) then
aux=a
a=b
b=aux
end
s=0
for i=a:1:b
if (i/2 == int(i/2)) then //pares
s=s+i
else //impares
s=s+i*2
end
end
endfunction

4.3. Generacin de cdigo ejecutable. Ejecucin, prueba y depuracin de errores


Una vez que el cdigo fuente se ha escrito, el intrprete (o compilador, segn el tipo de lenguaje de
programacin) lo traduce a cdigo ejecutable. Durante esta traduccin, lo primero que se hace es
detectar los errores de sintaxis en el cdigo fuente y mostrarlos. Si hay errores de este tipo, el
programador debe volver a la etapa de Codificacin del algoritmo, en la que deben ser corregidos
revisando las reglas sintcticas del lenguaje de programacin. Luego, se contina con la siguiente
etapa.

En el caso de Scilab, despus de ejecutar el cdigo contenido en un archivo:


- Si hay errores sintcticos, se detallarn en la consola, como se ve en el ejemplo de la imagen:

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

Lic. Lidia Ferreyra Pgina 20 de 24


Mtodos Computacionales I Ao 2017

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.

Para cualquier lenguaje, si un cdigo es sintcticamente correcto, se genera el archivo ejecutable


escrito en lenguaje mquina entendible por la computadora. Despus, ste debe ejecutarse para
determinar si realmente hace lo que se espera, es decir, si no se han cometido errores lgicos. Para
eso, se ejecuta el programa suministrndole conjuntos de datos de entrada requeridos para poder
realizar los clculos (o acciones en general) correspondientes y se comparan los resultados obtenidos
con los esperados. Si no coinciden, es porque hay errores lgicos que se arrastran desde el diseo. Una
forma til de detectarlos es hacer un seguimiento de cdigo (o traza), descripto mas adelante. En ese
caso, hay que volver a la etapa de Diseo del algoritmo, corregir los errores lgicos y seguir con las
siguientes etapas de desarrollo. Al llegar a la ltima, nuevamente se depuran errores de ambos tipos.
As, se produce una retroalimentacin. Se trata de un proceso cclico formado por las etapas de
desarrollo de un programa, que se detiene cuando el cdigo funciona correctamente. Es decir, cuando
ya no hay errores para corregir.

Seguimiento de cdigo (o traza):


Consiste en hacer el rol de la mquina cuando ejecuta una por una las instrucciones que hemos escrito
en el cdigo, respetando el orden en que se encuentran. Las instrucciones van generando distintos
valores en las variables hasta que finalmente la ejecucin se detiene y se quedan con sus valores
finales. Algunos de estos ltimos constituirn la salida del programa. Es decir, son los que se devuelve
al usuario mediante algn medio entendible por ste como la pantalla, archivos y otros. No est dems
aclarar que en un punto de la ejecucin, el valor almacenado en una variable siempre ser el ltimo,
los anteriores que tuvo se sobrescriben con los nuevos y se pierden si no se almacenan en otra variable
o medio de almacenamiento. Una forma de realizar el seguimiento de cdigo, es detallarlo en una
tabla, con tantas columnas como variables haya y una fila por instruccin ejecutada.

Lic. Lidia Ferreyra Pgina 21 de 24


Mtodos Computacionales I Ao 2017

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 continuacin, se muestra un seguimiento de los cdigos de los ejemplos dados en la etapa de


Codificacin:

Ejemplo 7: Traza del Ejemplo 6, en el que se implementa una funcin.


Dada la llamada a la funcin:
-->[r]=Suma(10, 15)
la traza sera la siguiente:

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:

Lic. Lidia Ferreyra Pgina 22 de 24


Mtodos Computacionales I Ao 2017

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

Despus de ejecutar la funcin en consola, se ver el resultado de Suma asignado a la variable r:

Si se ejecutara el Script codificado en el ejemplo 5 de la etapa de Codificacin, en Consola se ver:

Para seguir el mismo ejemplo dado para funcin, se ingresar 10. Entonces, el valor 10 se asigna a la
variable a.

Lic. Lidia Ferreyra Pgina 23 de 24


Mtodos Computacionales I Ao 2017

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.

Lic. Lidia Ferreyra Pgina 24 de 24

Вам также может понравиться