Algoritmo y Programación

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 98

Algoritmo y Programación

Semestre: 2017-2
Introducción a Lenguaje de
Programación
 La solución de problemas mediante el uso de un computador nos lleva a
desarrollar programas o aplicaciones, la construcción de estos programas
debe ser realizada mediante una metodología, los pasos para la
construcción de programas son:
1. Diseñar el algoritmo, consiste en analizar el problema y describir los
instrucciones de forma ordenada que resuelven el problema.
2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.
3. Ejecutar y validar el programa en un computador (verificación)
¿Qué es un lenguaje de
programación?
 Un lenguaje de programación es una técnica estándar de comunicación
que permite expresar las instrucciones que han de ser ejecutadas en una
computadora. Estas instrucciones permiten la construcción de programas
con los cuales podemos realizar operación de entrada y salida,
almacenamiento, cálculos y lógica de comparación.
 Un lenguaje de programación permite a un programador especificar de
manera precisa: sobre qué datos una computadora debe operar, cómo
deben ser estos almacenados y transmitidos y qué acciones debe tomar
bajo una variada gama de circunstancias. Todo esto, a través de un
lenguaje que intenta estar relativamente próximo al lenguaje humano o
natural, tal como sucede con el lenguaje
Clasificación de los Lenguajes de
Programación
 Según nivel de abstracción:
 Lenguajes de bajo nivel: Son lenguajes de programación que se acercan al
funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el
código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en
ensamblador se trabajan con los registros de memoria de la computadora de forma
directa.
 Lenguaje de medio nivel: Hay lenguajes de programación que son considerados por
algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C al tener
ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al
mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y,
por tanto, de alto nivel.
 Lenguaje de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender
porque están formados por elementos de lenguajes naturales, como el inglés. En Visual
Basic, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10
THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual
a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante,
dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo
hacen en realidad de una forma rígida y sistemática.
Clasificación de los Lenguajes de
Programación
 Según su Paradigma:
 Imperativo
 Declarativo
 Estructurado
 Orientado a Objetos
 Funcional
 Lógico
Clasificación de los Lenguajes de
Programación
 Según la forma de ejecución:
 Lenguajes compilados: Los compiladores son aquellos cuya función es traducir
un programa escrito en un determinado lenguaje a un idioma que la
computadora entienda (lenguaje máquina con código binario).
 Lenguajes Interpretados: Un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la máquina,
convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el proceso de los datos. No se graba
el código objeto para utilizarlo posteriormente.
Y ¿Que es Programar?

 Pensar y ordenar las acciones necesarias para realizar un proyecto


 Todo lenguaje tiene 3 partes:
 Léxico-gráfica: Colección de vocablos o palabras de una lengua
 Sintaxis: Formas en que se combinan las palabras
 Semántica: Significado, sentido o interpretación de signos lingüísticos
Matlab – Entorno y espacio de trabajo
Todas las sentencias que vamos a utilizar las escribiremos en la ventana command
window (ventana de comandos). Es la ventana de mayor tamaño.
Matlab – Entorno y espacio de trabajo
• Si queremos información acerca de las variables que estamos utilizando en
Matlab podemos verlas en la ventana workspace (espacio de trabajo) o usar:
• who para obtener la lista de las variables (no de sus valores)
• whos para obtener la lista de las variables e información del tamaño, tipo y
atributos (tampoco da valores) para ver esta ventana tenemos que pinchar
en la ventana que tiene este nombre. Está en la parte superior derecha:
Matlab – Entorno y espacio de trabajo

• Si lo que queremos es conocer el valor que tiene una variable lo hacemos escribiendo el
nombre de la variable y pulsando “enter”.

Para recordar órdenes previas usamos las flechas del teclado ↑ y ↓. también podemos verlas en
la ventana command history, ventana situada en la parte inferior derecha:
Operaciones con Escalares
• Un sólo valor, llamado escalar, se representa en MATLAB como una
matriz 1 x 1.
• En la siguiente tabla se muestran las operaciones aritméticas más comunes
entre dos escalares:

Operación Símbolo Expresión en Matlab


Suma + a+b
Resta - a–b
Multiplicación * a*b
División / a/b
Potencia ^ a^b
Operaciones con Escalares
• Orden de precedencia:

• Matlab no tiene en cuenta los espacios.


• Si queremos que matlab evalúe la línea pero que no escriba la respuesta, basta escribir punto y
coma (;) al final de la sentencia.
• Si la sentencia es demasiado larga para que quepa en una sola línea podemos poner tres puntos (…)
seguido de la tecla “enter” para indicar que continúa en la línea siguiente.
• Ejemplo:
• 3+5x2+1
• (4 + 6) x 2 + 4
• 8/(10+4) x 2^2
Formato de visualización de números
 Matlab no cambia la representación interna de un numero cuando se escogen
distintos formatos, solo se modifica la forma de visualizarlo:
Funciones matemáticas básicas

 Redondeo

Función ¿Qué hace? Ejm: X = 6.93


Ceil (x) Redondea hacia el entero superior 7
Fix (x) Redondea hacia cero 6
Floor (x) Redondea hacia el entero inferior 6
Round Redondea hacia el entero más 7
(x) próximo
Funciones matemáticas básicas

 Trigonometría
Funciones matemáticas básicas

 Algunas Operaciones
Funciones matemáticas básicas

 Números Complejos
Variables

 Matlab almacena el ultimo resultado en la variable ans. Ejm:


>> 3 + 5*2 + 1
ans = 14
 Reglas para nombrar variables
 El nombre de una variable puede tener como máximo 63 caracteres (31 en versiones
anteriores), que pueden ser letras, números y el guión de subrayar
 El primer carácter tiene que ser una letra.
 Las mayúsculas y las minúsculas tienen valor distintivo. La variable Base es distinta de
la variable base.
 Dentro de un nombre de variable no puede haber espacios en blanco.
 Existen nombres que deben evitarse, porque tienen significado propio en Matlab: ans,
pi, Inf, . . .
Variables

 Variables especiales en Matlab


Ejercicio

 Realizar las operaciones siguientes y guardar el resultado en la variable


que se indica:
 s = 3^2 − 5 − 6/3 × 2
 t = 3^2 − 5 − 6 /(3 × 2)
 s+t+1
 Obtener el valor absoluto de -6
 Hallar el máximo común divisor entre 9 y 12
 Hallar el mínimo común múltiplo de 10 y 25
 Hallar el Seno(π/2)
Vectores y Matrices

 Para crear un vector introducimos los valores deseados separados por


espacios (o comas) todo ello entre corchetes [].
 Si lo que queremos es crear una matriz lo hacemos de forma análoga pero
separando las filas con puntos y comas (;).
 Generalmente usaremos letras mayúsculas cuando nombremos a las
matrices y minúsculas para vectores y escalares. Esto no es imprescindible
y Matlab no lo exige, pero resulta útil.
 Ejemplos
Direccionamiento de elementos de
Vectores y Matrices
 Para acceder a los elementos individuales de un vector lo haremos
utilizando subíndices, así x(n) sería el n-ésimo elemento del vector x. Si
queremos acceder al último podemos indicarlo usando end como
subíndice.
 Ejemplo:
 x = [5 7 -2 4 -6];
 Hallar el segundo elemento del vector x
 Hallar el último elemento del vector x
Direccionamiento de elementos de
Vectores y Matrices
 Para acceder a un bloque de elementos a la vez, se usa la notación de
dos puntos (:), así x (m:n) nos da todos los elementos desde el m-ésimo
hasta el n-ésimo del vector x. Ejemplo:
 x(2:4) % devuelve desde el segundo al cuarto elemento del vector x
 Si introducimos un número entre el primero y el segundo también separado
por dos puntos (:) se mostrarán los elementos del primero al último
indicado, incrementados según el número que aparece en el centro (o
decrementados si el número es negativo). Ejemplo:
 Hallar el primero, tercero y quinto elemento del vector x
 Otra forma de obtener un conjunto concreto de elementos del vector es
indicando entre corchetes [] las posiciones de los elementos que queremos
obtener y finalmente paréntesis fuera de los corchetes.
Direccionamiento de elementos de
Vectores y Matrices
 Para acceder a los elementos de una matriz necesitamos dar dos valores,
el primero indica la fila y el segundo la columna. Ejm:
 Sea la matriz A = [1 2 3; 4 5 6]
Hallar elemento de la matriz que está en la fila 2 y en la columna 1
 Si queremos que escriba toda una fila usaremos los dos puntos para indicar
que queremos todos los elementos.
 Y similar si queremos que escriba toda una columna pero ahora situamos
los dos puntos en el lugar de las filas para indicar que queremos todas las
filas de esa columna.
 Al igual que con los vectores podemos indicar que escriba una serie de
filas o columnas, la manera de hacerlo sería muy parecido.
Construcción abreviada de vectores

 A parte de crear vectores introduciendo cada uno de sus elemento, se pueden crear haciendo
uso de las siguientes sentencias:
 (a:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de 1 en 1.
 (a:c:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de c en c.
 linspace (a,b,c) genera un vector linealmente espaciado entre los valores a y b con c elementos.
 linspace (a,b) genera un vector linealmente espaciado entre los valores a y b con 100 elementos.
 logspace (a,b,c) genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con c
 elementos.
 logspace (a,b) genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con 50
 elementos.
Construcción de algunas matrices
 Al igual que pasa con los vectores, existen unas sentencias que nos ayudan a crear algunas matrices que Matlab ya
tiene predefinidas (m y n deben tomar valores naturales):
 zeros (n) crea una matriz cuadrada n x n de ceros.
 zeros (m,n) crea una matriz m x n de ceros.
 ones (n) crea una matriz cuadrada n x n de unos.
 ones (m,n) crea una matriz m x n de unos.
 rand (n) crea una matriz cuadrada n x n de números aleatorios con distribución uniforme (0,1).
 rand (m,n) crea una matriz m x n de números aleatorios con distribución uniforme (0,1).
 randn (n) crea una matriz cuadrada n x n de números aleatorios con distribución normal (0,1).
 randn (m,n) crea una matriz m x n de números aleatorios con distribución normal (0,1).
 eye (n) crea una matriz cuadrada n x n de unos en la diagonal y ceros el resto.
 eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.
 magic (n) crea una matriz cuadrada n x n de enteros de modo que sumen lo mismo las filas y las
 columnas.
 hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los elementos (i,j) responden a la
 expresión (1/(i+j-1)).
 invhilb (n) crea una matriz cuadrada n x n que es la inversa de la matriz de Hilbert.
Operaciones básicas con matrices
Ejercicios
 Crear un vector que comienza en 1, aumenta de 1 en 1 y acaba en 7
 Crear un vector que comenzando en 1, aumenta de 3 en 3 hasta el 10
 Crear un vector comenzando en 1, aumenta de 4 en 4 hasta el 10
 Crear un vector que comenzando en 50, disminuye de 7 en 7 hasta el 1
 Genera un vector desde el 2 al 6 con 4 elementos equidistantes
 Genera un vector logarítmicamente espaciado entre 10^0 y 10^2 con 4 elementos
 Crear una matriz cuadrada 3 x 3 de ceros
 Crear una matriz 2 x 3 de unos
 Crear matriz 2 x 4 de valores aleatorios entre 0 y 1 con distribución uniforme (0,1)
 Crear matriz 2 x 5 de valores aleatorios con distribución normal (0,1)
Ejercicios
 Crear una matriz cuadrada de 4 x 4 de unos en la diagonal y ceros el resto (matriz
identidad o unidad)
 Crear una matriz mágica de 4 x 4
 Se definen las siguientes Matrices:
A = [1 2; 3 4] B = [1 1; 0 1]
C = [1 + 1.0i 2 + 2.0i; 3 + 1.0i 4 + 7.0i]
 Multiplicar las Matrices A x B
 Multiplicar elemento a elemento de A x B
 Realizar la transpuesta conjugada de C
 Realizar la transpuesta de C
 Se puede realizar la suma de un numero a una matriz?. Realizar la prueba con el numero 2 a la
matriz A
Funciones para operar con vectores

 Ejemplos:
 x = [1 2 3]; y = [4 5 6];
 cross (x,y) % producto vectorial
 dot (x,y) % producto escalar
Funciones para el análisis de matrices
Otras operaciones con Matrices
Gráficos Bidimensionales

 La orden plot genera una gráfica. Los argumentos deben ser vectores de
la misma longitud.
Ejemplo:
x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];
plot (x,y)
Gráficos Bidimensionales

 Si se quiere cambiar la apariencia de la gráfica basta dar clic en el último


botón de la barra de herramientas y se abrirán unos cuadros en los
laterales que nos permitirán ir haciendo los cambios deseados como darle
nombre a los ejes.
Gráficos Bidimensionales
 La función plot nos permite otras opciones como superponer gráficas sobre
los mismos ejes:
x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; z = [6 5 3 7 5 2];
plot (x,y,x,z)
 También podemos usar distintos tipos de líneas para el dibujo de la gráfica:
Gráficos Bidimensionales
 Además se puede colocar etiquetas o manipular la gráfica:
 etiqueta sobre el eje X de la gráfica actual: >> xlabel('texto')
 etiqueta sobre el eje Y de la gráfica actual: >> ylabel('texto')
 título en la cabecera de la gráfica actual: >> title('texto')
 texto en el lugar especificado por las coordenadas: >> text(x,y, 'texto')
 texto, el lugar lo indicamos después con el ratón: >> gtext('texto')
 dibujar una rejilla: >> grid
 fija valores máximo y mínimo de los ejes: >> axis( [xmin xmax ymin ymax] )
 fija que la escala en los ejes sea igual: >> axis equal
 fija que la gráfica sea un cuadrado: >> axis square
 desactiva axis equal y axis square: >> axis normal
 abre una ventana de gráfico: >> hold on
 borra lo que hay en la ventana de gráfico: >> hold off
 Todas estas órdenes se le puede dar desde la propia ventana de la gráfica una vez que
se haya abierto las opciones con el botón indicado anteriormente.
Gráficos Bidimensionales
 Otros comandos relacionados con las gráficas son:
Gráficos Bidimensionales
 Una ventana gráfica se puede dividir en “m” particiones horizontales y en “n”
verticales, de modo que cada subventana tiene sus propios ejes, y para hacer esto
vamos a usar subplot (m,n,p) donde “p” indica la subdivisión que se convierte en
activa. Ejm:
x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x);
subplot (2,2,1), plot (x,y1), title ('seno')
subplot (2,2,2), plot (x,y2), title ('coseno')
subplot (2,2,3), plot (x,y3), title ('exponencial')
subplot (2,2,4), plot (x,y4), title ('-exponencial')
Gráficos Bidimensionales
 Para volver al modo por defecto basta escribir: subplot (1,1,1).
 Para dibujar polígonos, usar la función plot pero teniendo en cuenta que el último
punto de ambos vectores deben coincidir para que la gráfica quede cerrada. Pero
si se quiere que quede coloreado todo el interior del polígono, se debe usar la
función fill, tiene tres argumentos, los dos vectores que forman los puntos y un tercer
argumento para indicar el color. Ejm:
Gráficos Bidimensionales
 x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
 fill (x,y,'r') % dibuja el polígono, 'r' indica el color rojo
Gráficos Bidimensionales
 Compresión mapa de colores:
Algoritmia

 Algoritmo:
 Secuencia finita de instrucciones, reglas o pasos que describen en forma
precisa las operaciones que una computadora debe realizar para llevar a
cabo una tarea en tiempo finito [Knuth, 1968].
 Descripción de un esquema de comportamiento expresado mediante un
repertorio finito de acciones y de informaciones elementales, identificadas,
bien comprendidas y realizables a priori. Este repertorio se denomina
léxico[Scholl, 1988].
Características de un algoritmo

 Un algoritmo debe tener al menos las siguientes características:


 Ser preciso
 Ser definido
 Ser finito
 Presentación formal: Las formas de presentación de algoritmos son: el
pseudo código, diagrama de flujo y diagramas de Nassi/Schneiderman,
entre otras.
 Corrección
 Eficiencia
Propiedades de los Algoritmos
 Especificación precisa de la entrada: El algoritmo debe dejar claro el número y tipo de
datos de entrada y las condiciones iniciales que deben cumplir esos valores de entrada
para conseguir que las operaciones tengan éxito.
 Especificación precisa de cada instrucción: cada etapa del algoritmo debe estar
definida con precisión, no debe haber ambigüedades sobre las acciones que se deben
ejecutar en cada momento.
 Un algoritmo debe ser exacto y correcto: Un algoritmo se espera que resuelva un
problema y se debe poder demostrar que eso ocurre. Si las condiciones de entrada se
cumplen y se ejecutan todos los pasos el algoritmo entonces debe producir la salida
deseada.
 Un algoritmo debe tener etapas bien definidas y concretas, un número finito de pasos,
debe terminar y debe estar claro la tarea que el algoritmo debe ejecutar.
 Debe ser fácil de entender, codificar y depurar.
 Debe hacer uso eficiente de los recursos de la computadora
 Finitud: en longitud y duración.
 Precisión: Determinar sin ambigüedad las operaciones que se deben ejecutar.
 Efectividad: las reglas pueden ejecutarse sin el ordenador obteniéndose el mismo
resultado.
 Generalidad: Resolver una clase de problema y no un problema particular. Entradas y
salidas: puede tener varias entradas pero una sola salida, el resultado que se debe
obtener
Fases para elaborar un programa de
computador
Diagrama de Flujo
 El Diagrama de Flujo es una herramienta gráfica para la representación
esquemática de la secuencia de instrucciones de un algoritmo o de los
pasos de un proceso.
Reglas para elaborar Diagramas de
Flujo
 Poner un encabezado que incluya un título que identifique la función del algoritmo; el nombre del autor; y la fecha de
elaboración
 Sólo se pueden utilizar símbolos estándar (ISO 5807)
 Los diagramas se deben dibujar de arriba hacía abajo y de izquierda a derecha
 La ejecución del programa siempre empieza en la parte superior del diagrama
 Los símbolos de “Inicio” y “Final” deben aparecer solo una vez
 La dirección del flujo se debe representar por medio de flechas (líneas de flujo)
 Todas las líneas de flujo deben llegar a un símbolo o a otra línea
 Una línea de flujo recta nunca debe cruzar a otra. Cuando dos líneas de flujo se crucen, una de ellas debe incluir una línea
arqueada en el sitio donde cruza a la otra
 Se deben inicializar las variables que se utilicen o permitir la asignación de valores mediante consulta al usuario
 Las bifurcaciones y ciclos se deben dibujar procurando una cierta simetría
 Cada rombo de decisión debe tener al menos dos líneas de salida (una para SI y otra para NO)
 Las acciones y decisiones se deben describir utilizando el menor numero de palabras posible; sin que resulten confusas o
poco claras
 Si el Diagrama se vuelve complejo y confuso, es mejor utilizar símbolos conectores para reducir las líneas de flujo
 Todo el Diagrama debe ser claro, ordenado y fácil de recorrer
 El Diagrama se debe probar recorriéndolo con datos iniciales simples (prueba de escritorio).
Ejemplo
 Diseñar un algoritmo (seudocódigo y diagrama de flujo) para hallar el área
de un triángulo rectángulo cuya Base mide 3 cm, la Altura 4 cm y la
Hipotenusa 5 cm.
 ANÁLISIS DEL PROBLEMA
 Formular el problema: Ya se encuentra claramente planteado.
 Resultados esperados: El área de un triángulo rectángulo.
 Datos disponibles: Base, Altura, Hipotenusa, tipo de triángulo. La incógnita es el área y
todos los valores son constantes. El valor de la hipotenusa se puede omitir. El estudiante
debe preguntarse si sus conocimientos actuales de matemáticas le permiten resolver
este problema; de no ser así, debe plantear una estrategia para obtener los
conocimientos requeridos.
 Determinar las restricciones: Utilizar las medidas dadas.
 Procesos necesarios: Guardar en dos variables (BASE y ALTURA) los valores de Base y
Altura; Guardar en una constante (DIV) el divisor 2; aplicar la fórmula BASE*ALTURA/DIV
y guardar el resultado en la variable AREA; comunicar el resultado (AREA).
Ejemplo

 Algoritmo en SEUDOCÓDIGO
 Paso 1: Inicio
 Paso 2: Asignar el número 2 a la constante "div"
 Paso 3: Asignar el número 3 a la constante “base”
 Paso 4: Asignar el número 4 a la constante “altura”
 Paso 5: Guardar en la variable "área" el resultado de base*altura/div
 Paso 6: Imprimir el valor de la variable "área"
 Paso 7: Final
Ejemplo
 Algoritmo en diagrama de flujo
Ejemplo 2
 Elaborar un Algoritmo para calcular el área de cualquier triángulo
rectángulo y presentar el resultado en pantalla.
 SEUDOCÓDIGO
• Paso 1: Inicio
• Paso 2: Asignar el número 2 a la constante "Div"
• Paso 3: Conocer la base del triángulo y guardarla en la variable "Base"
• Paso 4: Conocer la altura del triángulo y guardarla en la variable "Altura"
• Paso 5: Guardar en la variable "Area" el valor de multiplicar "Base“ por "Altura"
• Paso 6: Guardar en la variable "Area" el valor de dividir "Area“ entre "Div"
• Paso 7: Reportar el valor de la variable "Area"
• Paso 8: Final
Ejemplo 2
 Algoritmo en diagrama de flujo
Ejercicios

 Elaborar en Seudocódigo y luego en diagrama de flujo cada uno de los


siguientes ejercicios:
• 1. Hallar el área de un cuadrado cuyo lado mide 5 cm.
• 2. Hallar uno de los lados de un rectángulo cuya área es de 15 cm2
• y uno de sus lados mide 3 cm.
• 3. Hallar el área y el perímetro de un círculo cuyo radio mide 2 cm.
• 4. Hallar el área de un pentágono regular de 6 cm de lado y con 4 cm de
apotema.
Creación de archivos Scripts

 Hasta ahora los comandos MATLAB que hemos visto se ejecutaban en Ia


Ventana de Comandos. Aunque todos los comandos MATLAB se pueden
ejecutar de esta forma, la utilización de la Ventana de Comandos se
restringe normalmente a Ia ejecución de un número pequeño de
comandos con salidas bien controladas.
 Otra forma de ejecutar comandos en MATLAB es crear un archivo con los
comandos para ejecutarlo posteriormente.
Archivos M

 Un script es una secuencia de comandos MATLAB, también denominada


programa. Los scripts también se denominan archivos M, ya que la
extensión *.m es Ia que más se utiliza.
 Cuando se ejecuta un script, MATLAB ejecuta los comandos en el orden
en que estos han sido escritos, igual que si se ejecutaran uno a uno en la
Ventana de Comandos.
 Si un script contiene un comando que produce una salida (p/e una
asignación de variable sin un punto y coma al final), Ia salida se visualiza
en la Ventana de Comandos.
Archivos M

 En MATLAB, los scripts se crean y editan con Ia Ventana del


Editor/Depurador. Para abrir esta ventana ir al menu File → New → M-file.
 Los comandos, dentro del script, se teclean línea por línea. Estas líneas se
enumeran automáticamente.
 Los comandos también se pueden escribir en cualquier editor o
procesador de textos.
 Las primeras líneas de un script suelen ser comentarios que describen de
forma resumida la funcionalidad del código que sigue a continuación.
Ejecución de archivos M

 Antes de ejecutar un script se tiene que guardar en disco.


 Las reglas de asignación de nombres para los scripts son las mismas que para
variables, ya que estos deben comenzar por una letra y pueden incluir dígitos y
el guión bajo, hasta un máximo de 63 caracteres. No se pueden utilizar como
nombres para scripts las variables ya definidas por el usuario, así como los
nombres de variables predefinidas y comandos y funciones existentes en
MATLAB.
 Un script se puede ejecutar:
o Tecleando su nombre en la Ventana de Comandos (y pulsando Ia tecla Enter)
o Desde Ia Ventana del Editor a través del icono Run (Ejecutar),
 Sin embargo, antes de hacer esto el usuario debe asegurarse de que MATLAB
puede encontrar o tener acceso al archivo. Para ello, el archivo debe estar:
o Almacenado en el directorio actual por defecto
o Almacenado en Ia ruta de búsqueda de archivos.
Directorio de trabajo actual

 El directorio de trabajo actual se muestra en el campo "Current Directory" y


se puede cambiar desde la Ventana del Directorio Actual o tecleando el
comando cd en Ia Ventana de Comandos.
 Ejemplo.
 Una vez que se utilizan dos o mas directorios de trabajo en una sesión, es
posible cambiar de uno a otro en el campo de Directorio Actual de la
Ventana de Comandos.
 Cuando el usuario ejecuta un script o una función, MATLAB busca el
archivo en los directorios que se encuentran en la ruta de búsqueda.
 Una vez abierta esta ventana, se pueden añadir nuevos directorios o
borrar los existentes, modificando la ruta de búsqueda de archivos en
MATLAB
Variables Globales

 Las variables globales son variables que, una vez creadas en MATLAB, son
reconocidas en cualquier parte, incluidos todos los script.
 Cuando una variable se define en un script esta puede ser usada en Ia
Ventana de Comandos. En otras palabras, cualquier variable creada
existe, y por lo tanto puede ser manipulada tanto en scripts como en la
Ventana de Comandos.
Entrada y salida de datos – Valores de
entrada
 1. Variable definida y asignada en el script
 En este caso, la asignación del valor a la variable forma parte del script. Si el
usuario quiere ejecutar el script con un valor diferente para esa variable, el script
debe editarse para asignarle un nuevo valor.

 2. Variable definida y asignada en Ia Ventana de Comandos


 En este caso, la asignación de un valor a la variable se realiza en Ia Ventana de
Comandos (recuerde que la variable es reconocida sin problemas dentro del
script). Si el usuario quiere ejecutar el script con un valor diferente para esta
variable, se debe asignar el nuevo valor en la Ventana de Comandos, y
después ejecutar el script de nuevo.
Entrada y salida de datos – Valores de
entrada
 3. Variable definida y asignada en el script, pero además se introduce un
valor concreto para Ia variable cuando se ejecuta el script
 En este caso, la variable se define en el script y cuando se ejecuta se le pide al
usuario un valor concreto, a través de la Ventana de Comandos, para
asignárselo a la variable del script. Para hacer esto se utiliza el comando input.
nombre_variable=input ('Mensaje ')

 En este caso, la cadena se puede introducir sin comillas simples.


Ejemplo

 Calcular el área de un rectángulo:


 area1.m
 b = 6; %se da el valor de la base del rectángulo
 h = 4; %se da el valor de la altura del rectángulo
 area=b*h %se calcula el área y se imprime
 area2.m
 area3.m
 b = input('Ingrese la base: ') %pide el valor de la base
 h = input('Ingrese la altura: ') %pide el valor de la altura
 area=b*h
Comando de salida

 Además de esta forma de mostrar datos como salida, MATLAB posee


varios comandos que pueden ser utilizados para generar mensajes y
salidas mas elaboradas. Esto es necesario cuando, aparte del valor de una
variable y su nombre, es necesario mostrar mensajes informativos sobre Ia
naturaleza de ciertos datos de salida y/o gráficos.
 MATLAB posee varios comandos que pueden ser utilizados para generar
mensajes y salidas mas elaboradas, los comandos de uso muy frecuente
son:
o fprintf
o disp
 El comando disp muestra Ia salida en la pantalla, mientras que el
comando fprintf se puede usar para visualizar un resultado en Ia pantalla o
para guardarlo en un archivo.
Comando disp

 El comando disp se utiliza para visualizar un texto o el contenido de una


variable sin mostrar su nombre. El formato de este comando es:
disp(nombre de variable) o disp('Mensaje')
 Cada vez que se ejecuta el comando disp, la salida aparece en una
nueva línea. Sólo se puede visualizar una sola variable en un comando
disp.
 En algunos casos es necesario visualizar datos en forma de tabla. Esto se
puede hacer definiendo una variable de tipo array con los elementos a
visualizar y luego utilizar el comando disp para mostrar el array.
Ejemplo

 Ejemplo: salida1.m
 x =[1 2 3 4 5]; disp('Los valores en la matriz x son:');
 disp(x);
 Ejemplo: salida2.m
 x =[1 2 3 4 5];
 disp(['los valores en el arreglo x son: ' num2str(x)])
Ejemplo

 Ejemplo: platica.m
 disp('Hola, ¡Buenos días!');
 disp('Soy el programa MATLAB');
 nombre=input('¿Quién eres tu? ','s');
 disp(['Hola ',nombre] );
 respuesta=input('Las computadoras son adorables, ¿no? ', 's');
 disp([respuesta, '?'] );
 disp('Las computadoras son muy útiles.');
 disp('Las vas a usar mucho durante tus estudios. ');
 disp('Buena suerte con ellas.')
 pause(2);
 disp('Bye, bye')
Comando fprintf

 El comando fprintf se utiliza para visualizar salidas de programas (texto y


datos) en Ia pantalla, o bien para almacenarlas en un archivo, a
diferencia de disp, Ia salida puede tener un formato preestablecido.
 Gracias a su expresividad, el comando fprintf es útil en Ia visualización de
salidas, pero esta misma razón hace que este comando sea un tanto
complejo y con una sintaxis larga en algunos casos. Pero nos permitirá
visualizar mensajes de texto, números y cadenas en la salida, dar formato a
la visualización y almacenar datos en disco. Matlab Comando fprintf
Comando fprintf

 Para la visualización de texto, el comando fprintf se utiliza de la siguiente forma:


fprintf('Mensaje en forma de cadena')
 Es posible empezar una nueva línea insertando \n antes del carácter que va a
empezar en la línea siguiente.
 Carácteres utilizados para controlar Ia salida.
 \n salto de línea
 \r regreso de carro
 \ t tabulador
 \b retroceder un espacio
 Cuando un programa tiene varios comandos fprintf, la salida es continua (no
salta automáticamente de línea).
Ejemplo

 fprintf('El problema no tiene solución.')


 fprintf('Por favor:\r \t Compruebe los datos de entrada.\n')
 fprintf('\t \bCambie los datos de entrada.\n')
Comando fprintf

 Para visualizar texto y datos (valores de variables) juntos, el comando


fprintf debe utilizarse siguiendo la sintaxis:
Comando fprintf

 Elementos de formato

 El flag o bandera,
 (signo menos) Justificación izquierda dentro del campo.
 + (signo más) Visualiza el signo (+ o -) delante del número
 0 (cero) Añade ceros si el número es mas pequeño que el campo.
Comando fprintf

 La especificación del ancho y precisión del campo


 El primer número es el ancho del campo, el cual nos indica el menor número
de dígitos en la visualización. Si el número es menor se añadirán ceros o
espacios delante.
 La precisión corresponde al segundo número y especifica el número de dígitos
que se mostrarán a la derecha del punto.
 Formato de conversión
 e Notación exponencial en minúsculas (ej. 1.709098e+001).
 E Notación exponencial en mayúsculas (ej. 1.709098E+001).
 f Notación de punto fijo (ej. 17.090980).
 g Formato corto de las notaciones e o f.
 G Formato corto de las notaciones E o f.
 i Entero.
Comando fprintf

 Con el comando fprintf es posible insertar tantos valores numéricos


(variables) como se quiera dentro del texto.
 Es necesario teclear % (seguido del formato del elemento) en tantos sitios
como se desee dentro de la cadena de texto, poniendo además después
de Ia cadena, y separadas por comas, las variables a las que se hacen
referencia. Debe haber una por cada %, ordenadas de izquierda a
derecha por orden de aparición en el texto.
fprintf('...texto...%f...%f...%f...', variable1, variable2, variable3)
Comando fprintf

 Si se desea introducir una comilla simple dentro del texto, debe teclearse
doblemente dentro de la cadena.
 Si se desea introducir un símbolo de % dentro del texto, debe teclearse
doblemente dentro de la cadena.
 El comando fprintf permite vectorización. Esto significa que cuando se
introduce una variable de tipo array para ser visualizada, el comando
muestra tantos elementos como haya en el array, utilizando incluso una
visualización apropiada, en forma de columnas y filas, para el caso de las
matrices.
Ejemplo

 Ejemplo: impresion.m
 voltaje = 3.1;
 fprintf('El voltaje es %8.2f milivolts \n',voltaje);
 fprintf('El voltaje es %8.2e milivolts \n',voltaje);
 fprintf('El voltaje es %i milivolts \n',3);
 a=1.2; b=3;c=0.0000000000123;
 fprintf('ejemplo a=%g b=%i y c=%1.2e...', a, b, c);
 x = 1:5;
 fprintf('%8.2f \n' , x);
 feet = 1:3;
 inches = feet.*12;
 table = [feet;inches];
 fprintf('%4.0f %7.2f \n' , table);
Comando fprintf

 Además de poder visualizar la salida en la Ventana de Comandos, el


comando fprintf nos da Ia posibilidad volcar esta salida a un archivo. La
ventaja es que, guardando el resultado, es posible reutilizarlo en MATLAB o
en otras aplicaciones.
 Para guardar la salida en un archivo se requieren los siguientes pasos:
 a) Abrir el archivo utilizando el comando fopen.
 b) Escribir la salida al archivo utilizando el comando fprintf.
 c) Cerrar el archivo utilizando el comando fclose.
Comando fprintf

 Paso a:
 El comando fopen, que crea un archivo nuevo vacío o abre un archivo ya
existente en disco para trabajar con el
f_id=fopen( 'nombre_archivo', 'permisos')
 f_id es una variable denominada identificador de archivo.
 El nombre del archivo se escribe junto con su extensión.
 Los permisos corresponden a una serie de códigos que le dicen al sistema
cómo abrir el archivo.
 'r' Indica que el archivo se abre para leer (por defecto).
 'w' Indica que el archivo se abre (o crea) para escritura.
 'a' Indica Io mismo que 'w', excepto que si el archivo existe entonces los datos
son añadidos al final del archivo.
Comando fprintf

 Paso b:
 Una vez que el archivo está abierto, se utiliza el comando fprintf para
escribir la salida en el archivo, sólo que es necesario poner el identificador
de archivo (f_id) antes del texto de Ia siguiente forma:
fprintf(f_id,'texto %-5.2f texto adicional', variable)
 Paso c:
 Cuando se ha terminado de escribir los datos en el archivo, este debe ser
cerrado utilizando el comando fclose. La sintaxis de este comando es la
siguiente:
fclose(f_id)
Ejemplo

 escritura.m
 arch1=fopen( 'ejemplo.txt', 'w');
 feet = 1:3;
 inches = feet.*12;
 table = [feet;inches];
 fprintf(arch1,'%4.0f %7.2f \n' , table);
 fclose(arch1);
Operaciones Relacionales y Lógicas

 Como entradas a las expresiones relacionales y lógicas, Matlab considera


que cero es falso y que cualquier número distinto de cero es verdadero.
 La salida de expresiones de este tipo produce 1 si es verdadero y 0 si es
falso.
 Operadores Relacionales:
Operadores Lógicos

 La salida de las operaciones lógicas se puede utilizar también en


operaciones matemáticas
 Además de los operadores relacionales y lógicos básicos anteriores,
Matlab proporciona una serie de funciones relacionales y lógicas
adicionales que incluyen:
 Podemos ver muchos más casos pero todos serían similares: ischar,
isempty, isequal, isfloat, isinteger, islogical, isnumeric, isprime, isreal,
isscalar, isspace, …
 Existe un orden de precedencia para operadores aritméticos, lógicos y
relacionales, en la siguiente tabla van de mayor a menor precedencia:
Ejemplos
 Definimos 2 vectores: a = 1:9, b = 5-a
 r1 = a<6 % pregunta si a es menor que 6, devuelve 1 cuando es verdadero y 0 cuando es
falso
 >> r2 = a==b % pregunta si a es igual a b, devuelve 1 cuando es verdadero y 0 cuando es
falso
 >> r3 = a~=b % pregunta si a es distinto a b, devuelve 1 cuando es verdadero y 0 cuando
es falso
 >> r4 = (a>b)&(b>-3) % pregunta si a>b y b>-3, devuelve 1 cuando es verdadero y 0
cuando es falso
 >> c = [Inf 0 5 -8 NaN 94];
 >> exist ('c') % pregunta si existe alguna variable llamada c
 >> isnan (c) % pregunta cuando c es NaN, devuelve 1 cuando es verdadero y 0 cuando
es falso
 >> isinf (c) % pregunta cuando c es Inf, devuelve 1 cuando es verdadero y 0 cuando es
falso
 >> isfinite (c) % pregunta cuando c es finito, devuelve 1 cuando es verdadero y 0 cuando
es falso
Estructuras de Control

 Todos los algoritmos tienen tres estructuras básicas:


 Estructura Secuencial
 Estructura Condicional
 Estructura repetitiva
 Estructura Secuencia
 Es aquella en la que la acción (intrucción), sigue a otra en secuencia
Estructuras de Control

 Una sentencia condicional es una instrucción MATLAB que permite tomar


decisiones sobre si se ejecuta un grupo de comandos que cumplen una
condición o, por el contrario, omitirlos.
 En una sentencia condicional se evalúa una expresión condicional. Si la
expresión es verdadera, el grupo o bloque de comandos se ejecutan. Si la
expresión es falsa, MATLAB no ejecuta (salta) el grupo de comandos en
cuestión,
 Las sentencias condicionales pueden ser parte de un script o de una
función.
Estructuras de Control
 Sentencias Condicionales:
Estructuras de Control

 IF-END
 Un enunciado if simple tiene la siguiente forma:
if condicion
sentencias

end
 Si la condición (una expresión lógica) es verdadera, se ejecutan las
sentencias y sigue a end.
 Si la comparación es falsa, el programa salta inmediatamente al
enunciado que sigue a end
Estructuras de Control

 IF-ELSE-END
 El if simple le permite ejecutar una serie de enunciados si una condición es
verdadera y saltar dichos pasos si la condición es falsa.
 La cláusula else le permite ejecutar un conjunto de enunciados si la
comparación es verdadera y un conjunto diferente de enunciados si la
comparación es falsa.
if condicion
bloque1
else
bloque2
end
Estructuras de Control

 IF-ELSEIF-ELSE-END
 Esta estructura incluye dos sentencias condicionales, lo que hace posible
ejecutar uno de entre tres grupos de instrucciones diferentes.
if condicion1
bloque1

elseif condicion2
bloque2

else
bloque3

end
Estructuras de Control

 Es necesario destacar que se puede introducir mas de una sentencia elseif


y por tanto asociar nuevos grupos de instrucciones que se ejecutarán o no
dependiendo de las condiciones establecidas.
 Además, la sentencia else es opcional. Esto significa que en el caso de
que haya varios elseif y ningún else, si alguna condición de los elseif es
verdadera, los comandos serán ejecutados, pero en otro caso (todas las
condiciones de los elseif son falsas) no se ejecutan ni se realizará ninguna
operación.
Ejemplos
 Ejemplo: Ejemplo1.m
G=100*rand(1);
count=0;
if G< 50
count = count +1 ;
disp(G);
end
 Ejemplo: Ejemplo2.m
x = input('Ingrese un valor para calcular su logaritmo: ') ;
if x >0
y=log(x);
fprintf('\nEl logaritmo de %f es %f. \n',x,y);
else
beep
disp('La entrada a la función log debe ser positiva')
end
Ejemplos

 Ejemplo: ejemplo3.m
 age = input('Ingrese su edad: ') ;
if age < 18
disp('Lo siento. Tendrá que esperar')
elseif age<70
disp('Puede obtener una licencia estándar')
else
disp('Los mayores de 70 requieren una licencia especial ')

end
Estructuras de Control

 Switch y case
 La estructura switch-case se usa con frecuencia cuando existe una serie
de opciones de ruta de programación para una variable dada,
dependiendo de su valor.
 Switch-case es similar a if/else/elseif. De hecho, cualquier cosa que pueda
hacer con switch/case se podría hacer con if/else/elseif.
 Se trata de una estructura que le permite elegir entre múltiples salidas, con
base en ciertos criterios. Los criterios pueden ser un escalar (un número) o
una cadena.
Estructuras de Control

switch variable
case opcion1
código a ejecutar si la variable es igual a opcion1

case opcion2
código a ejecutar si la variable es igual a opcion2 . . .

case opcionN
código a ejecutar si la variable es igual a opcionN

otherwise
código a ejecutar por default

end
Ejemplo

 Ejemplo: ejemplo4.m
 ciudad = input('Ingrese el nombre de una ciudad entre comillas simples: ')
switch ciudad
case ‘Piura'
disp('Costo del boleto: $95 ')

case ‘Huánuco'
disp('Costo del boleto: $99')

case ‘Tacna'
disp('Costo del boleto: $120')

otherwise
disp('No hay servicio de transporte a esa ciudad.')

end
Estructuras de Control
 Estructura Repetitiva
 Conocida también como estructuras iterativas, nos permite repetir una secuencia de
instrucciones, un numero determinado de veces. Todo bucle consta de tres partes
básicas
 Decisión: aquí se evalúa la condición y en caso de ser cierta, se ejecuta el cuerpo del bucle.
 Cuerpo del bucle: son las instrucciones que se ejecutaran rápidamente, un número
determinado de veces, cuando la decisión es verdadera.
 Salida del bucle: es la condición que indica cuando terminan las iteraciones
Estructuras de Control

 Básicamente existen tres tipos de estructuras repetitivas.


 1-.Mientras. (while)
 2-.repetir hasta (do…until)
 3-.desde (for)

También podría gustarte