lecm22 Técnicas de programación


Los archivos M permiten almacenar varias instrucciones en un documento que actúa como programa de cómputo. Estos archivos hacen que las instrucciones ya establecidas se desarrollen secuencialmente una después de la otra. A cada guion se le asigna un nombre y una extensión .m para quedar almacenado en el directorio de trabajo de Matlab.

Para designar un nombre de archivo se deben seguir ciertas reglas.

  1. El nombre debe iniciar con una letra
  2. No se deben utilizar espacios, pero se puede utilizar guión bajo para unir las palabras. En el ejemplo siguiente se emplea programa_2
  3. El nombre debe estar relacionado con el problema a resolver

Para crear un archivo-M, desde la ventana de inicio de MATLAB, se da un clic al menú File. Luego se da un clic en new y de ahí se va a M-file y en seguida aparecerá la ventana Editor donde se escribirán las instrucciones necesarias.

Otra forma rápida de llamar al editor es presionando simultáneamente las teclas control y N. El editor muestra una ventana con la leyenda Editor – Untitled y el cursor se sitúa en la línea número uno. El nombre Untitled se va agregando consecutivamente cada vez que se inicia un nuevo archivo.

La figura siguiente muestra el código de un programa de seis líneas; observa  la numeración de cada una.

Para ver en operación el programa se dice que se «corre el programa».  En la parte superior se muestra el botón Run que almacena y ejecuta el programa.

Lo primero que solicita es cambiar el nombre sin titulo por otro. Recuerda, el nombre debe ser preferentemente corto y sin espacios, de preferencia se recomienda asignar un nombre relacionado con el problema a resolver. En caso de utilizar un nombre largo se puede utilizar un guión bajo para unir las palabras. En este ejemplo se emplea programa_2

Al correr el programa, en la ventana de comandos se despliega la ejecución del mismo. Tal como lo muestra la siguiente figura.

Se ingresa el numero telefónico y como respuesta muestra el número de la suerte calculado.

En caso de error, el programa se detiene y muestra la línea con el error que se debe corregir

En la linea 3 hay un error y el programa se detiene. Se debe corregir la palabra imput por el  comando input.

Ahora practiquemos con un ejemplo de varias líneas.

Escriba las 17 líneas del programa y después da clic en el icono Save and Run, que ejecutará el guion una vez que se le asigne un nombre al archivo. Debe darle el nombre basico1; la extensión se asigna automáticamente.

Hay algunas instrucciones que no se han descrito pero si conoce un poco de inglés estas se explican por sí mismas. La orden pause permite hacer una pausa mientras se van efectuando los cambios que se presentan sobre la figura. La instrucción axis es un acercamiento o encuadre de la gráfica en las coordenadas especificadas, de -4 a 4 en X, y de -2 a 2 en Y.
Al escribir estos guiones se dice que se está programando porque las órdenes conforman una lista de comandos que en conjunto forman un programa o algoritmo. Todos los programas se escriben en el editor.

Ahora, es recomendable utilizar siempre el editor para trabajar con Matlab. La calculadora sólo se empleará para cálculos rápidos.
Los algoritmos o programas se pueden clasificar como:
1. Secuenciales
2. Repetitivos
3. Condicionales, y
4. Mixtos

Programas secuenciales

Hasta el momento los programas que se han utilizado y que generalmente se utilizan en la ventana de comandos son programas secuenciales ya que cada línea se ejecuta una después de la otra siguiendo un orden lógico. Primero se especifica el valor de cada variable, luego se calculan nuevos valores a partir de una formula y finalmente si es necesario se muestran los resultados en una tabla o gráfica.
A partir de este tema se irán adicionando nuevos comandos para ir complementando cada vez más la programación hasta llegar a programas más robustos.

Programa 1. Interactivo

clc
disp ( ' ***** número de la suerte ***** ')
tel=input('dame tu número de teléfono ?');
su=int8(tel/5428504);
disp ('tu número de la suerte es: ')
disp(su)

disp despliega o muestra la información contenida entre apóstrofos, sólo se permite una cadena de datos a la vez.
input permite almacenar datos en una variable a la cual se le ha adicionado un mensaje de petición.
int8 convierte la cantidad encerrada entre paréntesis en un número entero.

Programa 2. Uso de funciones internas y formato de salida

clc
format compact;
x=input('dame el valor de x ?');
raiz=sqrt(x);
logaritmo=log(x);
exponencial=exp(x);
fprintf ( 'raíz cuadrada, logaritmo natural, exponencial\n')
fprintf( '%9.2f %9.3f %9.3e\n', raiz, logaritmo, exponencial)

clc        limpia el contenido de la pantalla.
fprintf  muestra la información en el formato que se especifique. El mensaje debe estar entre apóstrofos, se permiten varios datos a la vez. El formato %9.2f establece un espacio de nueve caracteres y de los cuales 2 de ellos son para dos decimales. La letra f indica que es un número de punto flotante. Al final se debe incluir \n para avanzar una línea y evitar que la información aparezca encimada. Luego del apostrofo se deben incluir las variables por cada formato declarado. En este caso son tres formatos y tres variables: raíz, logaritmo y exponencial.

Programa 3. Cálculo de volumen ideal con varios datos

clc
format compact;
disp ( ' ***** cálculo de volumen ideal ***** ')
t=input(' temperatura en [ K ] ?');
p=input(' presión en [ atm ] ?');
pm=input(' peso molecular ?');
m=input(' masa en [ g ] ?');
n = m/pm;
v=(n*0.08205*t)/p;
fprintf (' volumen calculado = %9.3f litros \n', v)

Programas repetitivos

Este tipo de programas utiliza un contador que generalmente es i o j y se repite la tarea hasta alcanzar un número determinado de repeticiones. Se puede iniciar desde uno y se termina hasta n cálculos. Se utiliza el comando for para indicar el inicio del ciclo y se emplea end para indicar el termino del ciclo. El siguiente programa muestra una variante en el contador al utilizar la letra A mayúscula para establecer que es posible utilizar otra letra o palabra en lugar de i o j.

Programa 4. Cálculo de raíz de diez datos

clear, clc
format compact;
disp ( ' ***** cálculo de raíces de un número ***** ')
for A=1:10;
n(A)=A;
raiz2(A) = sqrt(A);
raiz3(A) = A^(1/3);
raiz4(A)= sqrt(sqrt(A));
end
tabla=[n' raiz2' raiz3' raiz4'];
disp(' número raíz cúbica cuártica');
disp(tabla);

El resultado debe ser como el que se muestra a continuación.

Otro ejemplo sencillo es

for x = 0:25:360 % datos en grados
seno=sin(x*pi/180) %conversión de grados a radianes
coseno=cos(x*pi/180)
end

Programas condicionales

En estos programas se realizan las operaciones dependiendo de una condición. Si la condicionante es verdadera entonces se realiza la tarea para esta condición, y si no se cumple entonces se detiene el proceso o secuencia.
La forma básica de una instrucción condicional inicia con la palabra if después se establece la expresión condicional mayor que >, menor que <, igual que ==, y otras posibles combinaciones. Al final se debe indicar la palabra end para establecer la última línea condicionante.

La instrucción condicional if tiene tres posibles estructuras.

  1. Condicionante simple ( if … end)
  2. Condicionante alternativo (if … else … end)
  3. Condicionante múltiple (if … elseif … else … end)

LA ESTRUCTURA IF – END sólo realiza la instrucción cuando se cumple la condición, es decir la decisión es verdadera. La opción falsa no se realiza y sigue la secuencia. La siguiente figura muestra el diagrama de flujo de las instrucciones.

Ingresa estas líneas y observa cómo funciona el programa.

clc
a = input ('adivina en que número pienso ');
if a >= 8
disp( ' casi adivinas, da un número más pequeño ')
end

Cuando el programa se ejecuta y alcanza la instrucción if, se evalua el valor de a y se compara con el número 8. Si el resultado es verdadero (a >=8) despliega el mensaje “casi adivinas, da un número más pequeño” y continua hasta la instrucción end. Si no se cumple la condición, por decir dar un número menor a 8 hace que la condicionante sea falsa y la ejecución salta hasta la instrucción end.

Las palabras if y end aparecen en color azul y las instrucciones entre ellas se indexan automáticamente.
Se pueden colocar varias condicionantes simples en un mismo programa, tal como se muestra a continuación.

LA ESTRUCTURA IF – ELSE – END discrimina entre dos posibles resultados. Uno para la condición Verdadera y otra para la condición Falsa. El enlace entre ambos grupos de instrucciones es la palabra else.

El diagrama de flujo para esta estructura es la siguiente.

LA ESTRUCTURA IF – ELSEIF – ELSE – END discrimina entre tres posibles resultados utilizando dos sentencias condicionales. Esto permite ejecutar entre tres grupos de instrucciones diferentes, como es el ejemplo que se ha utilizado.

Para complementar la toma de decisiones se pueden emplear sentencias lógicas combinando condicionales. El ejemplo siguiente aclara mejor lo aquí establecido.