Sie sind auf Seite 1von 11

Introduccin a la programacin con Smath Studio

Preparado por Gilberto E. Urroz. Setiembre de 2009


Traducido por Edmundo Getar, Setiembre de 2011
Estructuras de programacin y diagramas de flujo
Programar, en el contexto de las aplicaciones numricas, significa simplemente controlar una
computadora, u otro dispositivo de clculo, para producir una cierta salida numrica. En este
contexto, reconocemos tres estructuras de programacin principales, como sigue, (a) estructuras
secuenciales, (b) estructuras de decisin, y (c) estructuras de repeticin (bucles). La mayora de los
clculos numricos auxiliados con computadoras u otros dispositivos de clculo programables (por
ejemplo calculadoras) se pueden completar usando una o mas de estas estructuras.
El uso de estas estructuras de programacin sern ilustradas con diagramas de flujo. Un diagrama
de flujo es simplemente una representacin grfica de los procesos que se programan. Estos
diagraman el flujo del proceso programado, de ah su nombre. La figura siguiente muestra algunos
de los smbolos de uso mas frecuente en los diagramas de flujo:

Inicio/Fin

Proceso

Entrada/Salida

Decisin

En un diagrama de flujo, estos smbolos estarn conectados por flechas apuntando en la direccin
del flujo del proceso.
Estructuras secuenciales
El diagrama de flujo completo de un programa debera tener un punto de entrada y uno de salida y
al menos un bloque de proceso entre ellos. La figura siguiente muestra una estructura secuencial
para el clculo de una suma:
Inicio

Leer a,b

S a+b

Escribir S

Generalmente los diagramas de flujo se dibujan en forma vertical.


La estructura secuencial que se muestra en este diagrama de flujo puede
representarse usando pseudo-cdigo. El pseudo-cdigo es nada mas que la
escritura del proceso del programa de manera que se parezca a un lenguaje de
programacin, por ejemplo,
Inicio
Leer a,b
s a+b
Escribir s
Fin
Un diagrama de flujo o un pseudo-cdigo se puede traducir a cdigo fuente de
muchas formas, dependiendo del lenguaje que se use. En Smath Studio, esta

Fin

Inicio

Leer a,b

S a+b

Escribir S

Fin

estructura secuencial se puede codificar como sigue:

Otro ejemplo de una estructura secuencial en SMath Studio que muestra mas de un paso de clculo.
La estructura secuencial en SMath Studio no necesita ser estrictamente vertical, como se muestra
abajo (de hecho SMath Studio calcula de izquierda a derecha y de arriba hacia abajo).

El comando line y la paleta Programacin


A la derecha de la figura anterior, se muestra la estructura secuencial reuniendo los pasos de clculo
en una linea de programacin. La figura siguiente muestra como hacer para insertar una linea de
programacin en una hoja de SMath Studio. El comando line juntamente con otros comandos de
programacin se encuentran en la paleta Programacin, que se ve as:

El comando line se puede usar para aadir estructuras secuenciales a puntos de entrada en otras
instrucciones de programacin como se ve en la prxima figura.

Estructura de Decisin
Una estructura de decisin provee caminos alternativos al flujo de procesos de un programa basado
en que una declaracin lgica sea verdadera o falsa. Como un ejemplo de una estructura de
decisin, observe el diagrama de flujo para la siguiente instruccin:

f ( x)= x +1, si x<1


x 1, si x1
La figura de la derecha muestra el diagrama de flujo.
El pseudo-cdigo correspondiente a continuacin:
Inicio
Leer x
si x < -1 entonces
y |x+1|
sin
y |x-1|
Escribir x,y
Fin

Inicio

Leer x

?
x < -1

Verdadero

Falso

y |x -1|

y |x +1|

Codificado en SMath Studio queda:


Escribir x,y

En SMath Studio una estructura de decisin


se consigue usando el comando if. Las formas
de usar el comando se detallan en la figura que sigue.

Fin

Declaraciones lgicas y operaciones lgicas


Las estructuras de decisin requieren una condicin para establecer el flujo del programa. Esta
condicin se representa con una declaracon lgica. En el contexto de la programacin de clculos
numricos, una declaracin lgica es un enunciado matemtico del que se puede afirmar que es
verdadero o falso, ejemplos de estas declaraciones son 3>2, 5<2, etc. En SMath Studio las salidas
lgicas verdadero y falso se representan por los valores enteros 1 y 0 respectivamente.
En la figura siguiente hay ejemplos de declaraciones lgicas. Tambin hay ejemplos de las cuatro
operaciones lgicas: (1) negacin (not ); (2) conjuncin o multiplicacin lgica (and ^); (3)
disyuncin o suma lgica (or ); y, (4) o exclusiva (xor ). Adems estn las tablas de verdad para
estas cuatro operaciones. Una tabla de verdad muestra las salidas de todas las combinaciones
posibles de verdadero y falso en las declaraciones lgicas.

Los smbolos para los operadores de comparacin (=, <, >, , , )


y las operciones lgicas (, ^, , ) se pueden obtener de la paleta
Booleano, que se ve asi:
Hay que observar que hay un igual lgico (= en negritas) que se usa en las comparaciones, diferente
del de evaluacin. El igual lgico se usa para definir ecuaciones en SMath Studio, por ejemplo para
el comando solve:

Ejemplos del comando if en la definicin de funciones


La figura a continuacin tiene mas ejemplos de declaraciones if para definir funciones a trazos:

Declaraciones if anidadas
Las estructuras de decisin, como if pueden anidarse (o encajarse) como se muestra:

Combinacin del comando if con el comando line


Los dos ejemplos que siguen muestran una declaracin if intercambiando los contenidos de dos
variables x e y si x<y, o cambiando los signos de ambas variables en caso contrario. En el primer
caso, x<y, por lo tanto se intercambian sus valores:

en el segundo caso x>y, entonces se activa la clausula else y se cambia el signo de ambas variables:

Estructuras de repeticin
En una estructura de repeticin el flujo del proceso se repite un nmero finito de veces antes de ser
conducido fuera del bucle. El diagrama de flujo que se muestra contiene en su parte central una
estructura de bucle. El propsito de este diagrama es calcular una sumatoria, sea

S n= k=1

1
.
k

Inicio

Leer n

Para esto la suma Sn se inicializa en Sn 0, y un ndice, k, se


inicializa en k 0 antes de darle el control al bucle.
El bucle comienza incrementando k y luego verifica si k super el
lmite impuesto por el valor de n.

Sn 0, k 0

k k+1

?
k>n

La suma se acumula dentro del bucle, Sn Sn+1/k, y el proceso se


repite hasta que se satisface la condicin k>n.

Una vez satisfecha la condicin en el bloque de decisin, se pasa el


control al bloque de escritura.

Sn Sn +1/k

Escribir n, Sn

Fin

En trminos de instrucciones de programacin, hay dos formas de implementar bucles en SMath


Studio: while y for. El pseudo-cdigo asociado a un bucle while que implementa el diagrama de
flujo de la figura puede ser:
Inicio
leer n
Sn 0
k0
mientras no(k>n)
k k+1
Sn Sn + 1/k
fin mientras
escribir n, Sn
Fin
La condicin se estableci como no(k>n) (que es equivalente a kn) dado que el bucle while
verifica la condicin al principio del bucle.
El comando while en SMath Studio

El pseudo-cdigo anterior se puede traducir en SMath Studio como se muestra:

Obsrvese que la sumatoria se puede calcular usando el comando sumatoria de SMath Studio:
Otro ejemplo de bucle while en SMath Studio:

Los bucles while se pueden anidar (encajar) como se ve a la izquierda en la figura siguiente. A la
derecha el mismo clculo como una sumatoria doble.

La figura muestra un diagrama de flujo que representa una estructura de repeticin en forma
n
1
compacta para la sumatoria S n= k=1
.
k
Inicio

El smbolo hexagonal en el diagrama de flujo muestra tres elementos:


(1) la inicializacin del ndice, k 1;
(2) el incremento del ndice, k k+1; y
(3) la condicin que se debe verificar para terminar el
bucle, k>n. El smbolo hexagonal es en realidad la
representacin del comando for para esta sumatoria.
La representacin genrica de la instruccin for cuando el ndice es k,
empezando con k0, finalizando con kf y con incrementos k, es:

Leer n

Sn 0

Inicio
k1
k>n
k k+1

k k0
k k +k

k > kf

Sn Sn + 1/k

Instrucciones
a repetir en
el bucle

Fin

Escribir
n, Sn

Fin

por lo tanto el ndice toma valores sucesivos k= k0, k0 + k, k0 +2 k, , kultimo, donde


kf kultimo k.
Los comandos for y range en SMath Studio

El comando for en SMath Studio utiliza un range (rango) de valores que son los que tomar el
ndice para completar el bucle

Un ejemplo de comando for usando el rango 1 a 10 en SMath Studio:

El programa de sumatoria doble implementado antes con bucles while, se puede implementar con
bucles for:

Un ejemplo de programacin que usa estructuras secuenciales, de decisin y de repeticin


Este ejemplo muestra un programa implementado en SMath Studio que usa las tres estructuras de
programacin. Es el clsico mtodo de la burbuja que ordena los elementos de un vector de
menor (mas liviano) a mayor. El programa usa como dato un vector fila rS inicialmente
desordenado y se refiere a sus elementos por medio de subndices, como S1k. Se muestra como
gestionar subndices. La salida del programa es el mismo vector rS, ordenado.

Muchas aplicaciones de programacin, como la de mas arriba, usan vectores y matrices.


Afortunadamente, SMath Studio incorpora un buen nmero de funciones relativas a matrices, por
ejemplo:

Creacin de matrices: augment, diag, identity, mat, matrix, stack


Extraccin de filas, columnas, elementos: col, el, row, submatrix, vminor, minor
Caracterizacin de matrices: cols, det, length, max, min, norm1, norme, normi, rank, rows,

tr
Funciones de ordenamiento: csort, reverse, rsort, sort
Operaciones sobre matrices: alg, invert, transpose

Algunas de estas funciones estn disponibles en la paleta Matrices:


(1)
(2)
(3)
(4)
(5)
(6)

Matriz 3x3 (Ctrl+M) (mat)


Determinante (det)
Transpuesta (Ctrl+L) (transpose)
Suma algebraica a una matriz (alg)
Menor (minor)
Producto cruz

En el documento Introduction to the use of SMath Studio hay ejemplos de operaciones con
matrices.
Pasos en programacin
Los siguientes son pasos recomendados para producir programas eficientes:
(1)
(2)
(3)
(4)

Definir claramente el problema a resolver


Definir las entradas y salidas del programa
Disear el algoritmo usando diagramas de flujo o pseudo-cdigo
Programar el algoritmo en un lenguaje de programacin (por ejemplo comandos de SMath
Studio)
(5) Verificar el cdigo con un juego de valores conocido
Errores en programacon
Tpicamente hay principalmente tres tipos de errores al desarrollar un programa:
(1) Errores de sintaxis: Cuando un comando no sigue las reglas del lenguaje de programacin.
Son fciles de detectar ya que el propio editor destacar las violaciones a las reglas
(2) Errores en tiempo de ejecucin: Errores debidos a inconsistencias matemticas, por ejemplo
divisin por cero. Tambin podran ser detectadas por el programa.
(3) Errores lgicos: Errores del algoritmo. Son mas difciles de detectar, por eso es necesario
correr (ejecutar) el programa con datos conocidos. Verificar cada paso del algoritmo para
asegurarse que hace lo que se espera que haga.

Das könnte Ihnen auch gefallen