{"id":5408,"date":"2024-11-22T14:35:21","date_gmt":"2024-11-22T20:35:21","guid":{"rendered":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/?page_id=5408"},"modified":"2024-11-22T14:35:21","modified_gmt":"2024-11-22T20:35:21","slug":"lecm22","status":"publish","type":"page","link":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/lecm22\/","title":{"rendered":"lecm22 T\u00e9cnicas de programaci\u00f3n"},"content":{"rendered":"\n<p><br>Los archivos M permiten almacenar varias instrucciones en un documento que act\u00faa como programa de c\u00f3mputo. Estos archivos hacen que las instrucciones ya establecidas se desarrollen secuencialmente una despu\u00e9s de la otra. A cada guion se le asigna un nombre y una extensi\u00f3n .m para quedar almacenado en el directorio de trabajo de Matlab.<\/p>\n\n\n\n<p>Para designar un nombre de archivo se deben seguir ciertas reglas.<\/p>\n\n\n\n<ol>\n<li>El nombre debe iniciar con una letra<\/li>\n\n\n\n<li>No se deben utilizar espacios, pero se puede utilizar gui\u00f3n bajo para unir las palabras. En el ejemplo siguiente se emplea programa_2<\/li>\n\n\n\n<li>El nombre debe estar relacionado con el problema a resolver<\/li>\n<\/ol>\n\n\n\n<p>Para crear un archivo-M, desde la ventana de inicio de MATLAB, se da un clic al men\u00fa File. Luego se da un clic en new y de ah\u00ed se va a M-file y en seguida aparecer\u00e1 la ventana Editor donde se escribir\u00e1n las instrucciones necesarias.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlabm.jpg?w=616\" alt=\"\" class=\"wp-image-308\" \/><\/figure><\/div>\n\n\n<p>Otra forma r\u00e1pida de llamar al editor es presionando simult\u00e1neamente las teclas control y N. El editor muestra una ventana con la leyenda Editor \u2013 Untitled y el cursor se sit\u00faa en la l\u00ednea n\u00famero uno. El nombre Untitled se va agregando consecutivamente cada vez que se inicia un nuevo archivo.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlabeditor.jpg?w=300&amp;h=164\" alt=\"\" class=\"wp-image-309\" \/><\/figure><\/div>\n\n\n<p>La figura siguiente muestra el c\u00f3digo de un programa de seis l\u00edneas; observa&nbsp; la numeraci\u00f3n de cada una.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlab53.jpg?w=616\" alt=\"\" class=\"wp-image-287\" \/><\/figure><\/div>\n\n\n<p>Para ver en operaci\u00f3n el programa se dice que se \u00abcorre el programa\u00bb.&nbsp; En la parte superior se muestra el bot\u00f3n Run que almacena y ejecuta el programa.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlabrun.jpg?w=616\" alt=\"\" class=\"wp-image-310\" \/><\/figure><\/div>\n\n\n<p>Lo primero que solicita es cambiar el nombre sin titulo por otro.&nbsp;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\u00f3n bajo para unir las palabras. En este ejemplo se emplea programa_2<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlabunti.jpg?w=616\" alt=\"\" class=\"wp-image-311\" \/><\/figure><\/div>\n\n\n<p>Al correr el programa, en la ventana de comandos se despliega la ejecuci\u00f3n del mismo. Tal como lo muestra la siguiente figura.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlab54.jpg?w=616\" alt=\"\" class=\"wp-image-288\" \/><\/figure><\/div>\n\n\n<p>Se ingresa el numero telef\u00f3nico y como respuesta muestra el n\u00famero de la suerte calculado.<\/p>\n\n\n\n<p>En caso de error, el programa se detiene y muestra la l\u00ednea con el error que se debe corregir<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlaberror-1.jpg?w=616\" alt=\"\" class=\"wp-image-313\" \/><\/figure><\/div>\n\n\n<p>En la linea 3 hay un error y el programa se detiene. Se debe corregir la palabra imput por el&nbsp; comando input.<\/p>\n\n\n\n<p>Ahora practiquemos con un ejemplo de varias l\u00edneas.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlabasico1.jpg?w=616\" alt=\"\" class=\"wp-image-314\" \/><\/figure><\/div>\n\n\n<p>Escriba las 17 l\u00edneas del programa y despu\u00e9s da clic en el icono Save and Run, que ejecutar\u00e1 el guion una vez que se le asigne un nombre al archivo. Debe darle el nombre basico1; la extensi\u00f3n se asigna autom\u00e1ticamente.<\/p>\n\n\n\n<p>Hay algunas instrucciones que no se han descrito pero si conoce un poco de ingl\u00e9s estas se explican por s\u00ed mismas. La orden&nbsp;<strong>pause<\/strong>&nbsp;permite hacer una pausa mientras se van efectuando los cambios que se presentan sobre la figura. La instrucci\u00f3n&nbsp;<strong>axis<\/strong>&nbsp;es un acercamiento o encuadre de la gr\u00e1fica en las coordenadas especificadas, de -4 a 4 en X, y de -2 a 2 en Y.<br>Al escribir estos guiones se dice que se est\u00e1 programando porque las \u00f3rdenes conforman una lista de comandos que en conjunto forman un programa o algoritmo. Todos los programas se escriben en el editor.<\/p>\n\n\n\n<p>Ahora, es recomendable utilizar siempre el editor para trabajar con Matlab. La calculadora s\u00f3lo se emplear\u00e1 para c\u00e1lculos r\u00e1pidos.<br>Los algoritmos o programas se pueden clasificar como:<br>1. Secuenciales<br>2. Repetitivos<br>3. Condicionales, y<br>4. Mixtos<\/p>\n\n\n\n<h2>Programas secuenciales<\/h2>\n\n\n\n<p>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\u00ednea se ejecuta una despu\u00e9s de la otra siguiendo un orden l\u00f3gico. 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\u00e1fica.<br>A partir de este tema se ir\u00e1n adicionando nuevos comandos para ir complementando cada vez m\u00e1s la programaci\u00f3n hasta llegar a programas m\u00e1s robustos.<\/p>\n\n\n\n<p><strong>Programa 1. Interactivo<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">clc\ndisp ( ' ***** n\u00famero de la suerte ***** ')\ntel=input('dame tu n\u00famero de tel\u00e9fono ?');\nsu=int8(tel\/5428504);\ndisp ('tu n\u00famero de la suerte es: ')\ndisp(su)<\/pre>\n\n\n\n<p><strong>disp<\/strong>&nbsp;despliega o muestra la informaci\u00f3n contenida entre ap\u00f3strofos, s\u00f3lo se permite una cadena de datos a la vez.<br><strong>input<\/strong>&nbsp;permite almacenar datos en una variable a la cual se le ha adicionado un mensaje de petici\u00f3n.<br><strong>int8<\/strong>&nbsp;convierte la cantidad encerrada entre par\u00e9ntesis en un n\u00famero entero.<\/p>\n\n\n\n<p><strong>Programa 2. Uso de funciones internas y formato de salida<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">clc\nformat compact;\nx=input('dame el valor de x ?');\nraiz=sqrt(x);\nlogaritmo=log(x);\nexponencial=exp(x);\nfprintf ( 'ra\u00edz cuadrada, logaritmo natural, exponencial\\n')\nfprintf( '%9.2f %9.3f %9.3e\\n', raiz, logaritmo, exponencial)<\/pre>\n\n\n\n<p><strong>clc&nbsp; &nbsp; &nbsp; &nbsp;<\/strong>&nbsp;limpia el contenido de la pantalla.<br><strong>fprintf&nbsp;<\/strong>&nbsp;muestra la informaci\u00f3n en el formato que se especifique. El mensaje debe estar entre ap\u00f3strofos, 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\u00famero de punto flotante. Al final se debe incluir \\n para avanzar una l\u00ednea y evitar que la informaci\u00f3n aparezca encimada. Luego del apostrofo se deben incluir las variables por cada formato declarado. En este caso son tres formatos y tres variables: ra\u00edz, logaritmo y exponencial.<\/p>\n\n\n\n<p><strong>Programa 3. C\u00e1lculo de volumen ideal con varios datos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">clc\nformat compact;\ndisp ( ' ***** c\u00e1lculo de volumen ideal ***** ')\nt=input(' temperatura en [ K ] ?');\np=input(' presi\u00f3n en [ atm ] ?');\npm=input(' peso molecular ?');\nm=input(' masa en [ g ] ?');\nn = m\/pm;\nv=(n*0.08205*t)\/p;\nfprintf (' volumen calculado = %9.3f litros \\n', v)<\/pre>\n\n\n\n<h2>Programas repetitivos<\/h2>\n\n\n\n<p>Este tipo de programas utiliza un contador que generalmente es i o j y se repite la tarea hasta alcanzar un n\u00famero determinado de repeticiones. Se puede iniciar desde uno y se termina hasta n c\u00e1lculos. 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\u00fascula para establecer que es posible utilizar otra letra o palabra en lugar de i o j.<\/p>\n\n\n\n<p><strong>Programa 4. C\u00e1lculo de ra\u00edz de diez datos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">clear, clc\nformat compact;\ndisp ( ' ***** c\u00e1lculo de ra\u00edces de un n\u00famero ***** ')\nfor A=1:10;\nn(A)=A;\nraiz2(A) = sqrt(A);\nraiz3(A) = A^(1\/3);\nraiz4(A)= sqrt(sqrt(A));\nend\ntabla=[n' raiz2' raiz3' raiz4'];\ndisp(' n\u00famero ra\u00edz c\u00fabica cu\u00e1rtica');\ndisp(tabla);<\/pre>\n\n\n\n<p>El resultado debe ser como el que se muestra a continuaci\u00f3n.<\/p>\n\n\n\n<p>Otro ejemplo sencillo es<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">for x = 0:25:360 % datos en grados\nseno=sin(x*pi\/180) %conversi\u00f3n de grados a radianes\ncoseno=cos(x*pi\/180)\nend<\/pre>\n\n\n\n<h2>Programas condicionales<\/h2>\n\n\n\n<p>En estos programas se realizan las operaciones dependiendo de una condici\u00f3n. Si la condicionante es verdadera entonces se realiza la tarea para esta condici\u00f3n, y si no se cumple entonces se detiene el proceso o secuencia.<br>La forma b\u00e1sica de una instrucci\u00f3n condicional inicia con la palabra if despu\u00e9s se establece la expresi\u00f3n condicional mayor que &gt;, menor que &lt;, igual que ==, y otras posibles combinaciones. Al final se debe indicar la palabra end para establecer la \u00faltima l\u00ednea condicionante.<\/p>\n\n\n\n<p>La instrucci\u00f3n condicional if tiene tres posibles estructuras.<\/p>\n\n\n\n<ol>\n<li>Condicionante simple ( if \u2026 end)<\/li>\n\n\n\n<li>Condicionante alternativo (if \u2026 else \u2026 end)<\/li>\n\n\n\n<li>Condicionante m\u00faltiple (if \u2026 elseif \u2026 else \u2026 end)<\/li>\n<\/ol>\n\n\n\n<p>LA ESTRUCTURA&nbsp;<strong>IF \u2013 END<\/strong>&nbsp;s\u00f3lo realiza la instrucci\u00f3n cuando se cumple la condici\u00f3n, es decir la decisi\u00f3n es verdadera. La opci\u00f3n falsa no se realiza y sigue la secuencia. La siguiente figura muestra el diagrama de flujo de las instrucciones.<\/p>\n\n\n\n<p>Ingresa estas l\u00edneas y observa c\u00f3mo funciona el programa.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">clc\na = input ('adivina en que n\u00famero pienso ');\nif a &gt;= 8\ndisp( ' casi adivinas, da un n\u00famero m\u00e1s peque\u00f1o ')\nend<\/pre>\n\n\n\n<p>Cuando el programa se ejecuta y alcanza la instrucci\u00f3n if, se evalua el valor de a y se compara con el n\u00famero 8. Si el resultado es verdadero (a &gt;=8) despliega el mensaje \u201ccasi adivinas, da un n\u00famero m\u00e1s peque\u00f1o\u201d y continua hasta la instrucci\u00f3n end. Si no se cumple la condici\u00f3n, por decir dar un n\u00famero menor a 8 hace que la condicionante sea falsa y la ejecuci\u00f3n salta hasta la instrucci\u00f3n end.<\/p>\n\n\n\n<p>Las palabras if y end aparecen en color azul y las instrucciones entre ellas se indexan autom\u00e1ticamente.<br>Se pueden colocar varias condicionantes simples en un mismo programa, tal como se muestra a continuaci\u00f3n.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/mimatlab.files.wordpress.com\/2019\/02\/matlab63.jpg?w=616\" alt=\"\" class=\"wp-image-297\" \/><\/figure><\/div>\n\n\n<p>LA ESTRUCTURA&nbsp;<strong>IF \u2013 ELSE \u2013 END<\/strong>&nbsp;discrimina entre dos posibles resultados. Uno para la condici\u00f3n Verdadera y otra para la condici\u00f3n Falsa. El enlace entre ambos grupos de instrucciones es la palabra&nbsp;<em>else<\/em>.<\/p>\n\n\n\n<p>El diagrama de flujo para esta estructura es la siguiente.<\/p>\n\n\n\n<p>LA ESTRUCTURA&nbsp;<strong>IF \u2013 ELSEIF \u2013 ELSE \u2013 END<\/strong>&nbsp;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.<\/p>\n\n\n\n<p>Para complementar la toma de decisiones se pueden emplear sentencias l\u00f3gicas combinando condicionales. El ejemplo siguiente aclara mejor lo aqu\u00ed establecido.<\/p>\n\n\n\n<div class=\"is-content-justification-center is-layout-flex wp-container-1 wp-block-buttons\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-dark-gray-color has-bright-blue-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/\">Lecciones<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-dark-gray-color has-yellow-background-color has-text-color has-background wp-element-button\" href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/lecm23\/\">siguiente lecci\u00f3n<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Los archivos M permiten almacenar varias instrucciones en un documento que act\u00faa como programa de c\u00f3mputo. Estos archivos hacen que las instrucciones ya establecidas se desarrollen secuencialmente una despu\u00e9s de la otra. A cada guion se le asigna un nombre y una extensi\u00f3n .m para quedar almacenado en el directorio de trabajo de Matlab. Para &hellip; <a href=\"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/l-m\/lecm22\/\" class=\"more-link\">Contin\u00faa leyendo <span class=\"screen-reader-text\">lecm22 T\u00e9cnicas de programaci\u00f3n<\/span><\/a><\/p>\n","protected":false},"author":123458,"featured_media":0,"parent":5258,"menu_order":22,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"_links":{"self":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5408"}],"collection":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/users\/123458"}],"replies":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/comments?post=5408"}],"version-history":[{"count":3,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5408\/revisions"}],"predecessor-version":[{"id":5564,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5408\/revisions\/5564"}],"up":[{"embeddable":true,"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/pages\/5258"}],"wp:attachment":[{"href":"https:\/\/blogceta.zaragoza.unam.mx\/mnumericos\/wp-json\/wp\/v2\/media?parent=5408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}