P. 1
algoritmos simples

algoritmos simples

1.0

|Views: 12.113|Likes:

More info:

Published by: Jose Antonio Rivilla Ventura on Oct 19, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/02/2014

pdf

text

original

2

ÍNDICE

Fundamentos de Informática E.U.P. Universidad de Sevilla (I.T. Diseño Industrial)

Concepto de Algoritmo Datos: Variables y Constantes Tipo de datos compuestos: Vectores y Matrices Representación de Algoritmos
Diagrama de Flujo, Pseudo código Lenguajes de programación: MATLAB

Introducción a la Algorítmica y a la Programación en MATLAB

Programación Estructurada
Estructura Secuencial Estructura Selectiva Simple (If) Doble (If-else) Múltiple Estructura Repetitiva While (Mientras) For (Para)

1

3

4

CONCEPTO DE ALGORITMO (1)

EJEMPLO DE ALGORITMO INTUITIVO: RECETA DE COCINA

Calabacines rehogados Un algoritmo es un conjunto de acciones que determinan la secuencia de los pasos a seguir para resolver un problema específico. Otras definiciones:
Conjunto de reglas en cierto orden para resolver un problema. Una forma de describir la solución de un problema en pasos sucesivos.
1. 2. 3. 4. 5. 6.

Pelar los calabacines y cortar en rodajas Añadir sal a los calabacines Poner los calabacines en una sartén con aceite a medio fuego Mover los calabacines hasta que estén trasparentes Sacar de la sartén y escurrir el aceite Añadir queso parmesano rallado; sino se dispone de parmesano, utilizar queso curado.

Los pasos de un algoritmo deben estar definidos:
con precisión, no deben existir ambigüedades que den origen precisió a elegir una decisión equivocada. con un orden estricto. La alteración de tal orden conduciría a que el algoritmo no resolviera el problema correctamente

Cualquier error no funcionará. Pensar ej. Elementos del algoritmo
COCINA Ingredientes Ingredientes intermedios Acciones Orden de ejecución de las acciones Resultado (Plato DE calabacines) PROGRAMACIÓN Entrada Variables, Constantes Sentencias Secuencialidad Salida

5

6

EJEMPLO DE ALGORITMO INTUITIVO: ¿Qué pasa cuando no se especifica bien un algoritmo? Un ejemplo de algoritmo: ¿está bien especificado? 1. Sal de casa 2. Ve a la tienda y pide dulces. 3. Si la tienda no tiene, vuelve al punto 2 4. Vuelve a casa.

EJEMPLO DE ALGORITMO INTUITIVO: ¿Qué pasa cuando no se especifica bien un algoritmo? El algoritmo del ejemplo anterior está mal especificado:
2. Ve a la tienda y pide dulces. 3. Si la tienda no tiene, vuelve al punto 2

OK
Va a ser que no

7

8

EJEMPLO DE ALGORITMO INTUITIVO: ¿Qué pasa cuando no se especifica bien un algoritmo? El algoritmo bien especificado sería el siguiente:

Conceptos básicos: ¿Qué pasa cuando no se especifica bien un algoritmo? Resultado de la ejecución del algoritmo bien especificado:

Ahora sí que le has cogido el truco

OK

1. Sal de casa 2. Ve a la tienda más cercana que no hayas visitado y pide dulces. 3. Si la tienda no tiene y tú no estás cansado, vuelve al punto 2 4. Vuelve a casa
2. Ve a la tienda y pide dulces. 3. Si la tienda no tiene, vuelve al punto 2

2. Elementos del algoritmo Datos de entrada. Sí: Guardar C en D (D=C). Leer numero decimal y guardarlo en D bucle (repetición) Hallo el resto de D/2. 7. Imprimir R (digito binario) Hallo el cociente: C=D/2 (me quedo con la parte entera) ¿Es C mayor o igual que 2? 6. Lenguaje para expresarlo (SINTAXIS).2) == 0? (es decir. Ej: la palabra disp() se corresponde con el nombre de una función de MATLAB que sirve para mostrar datos por pantalla.2). Ejemplo 2: Convertir de decimal a binario. NO: Aún num puede ser un número primo. Ej: el signo % se utiliza para añadir comentarios que MATLAB no interpretará como código a ejecutar. 4. finbucle UN ALGORITMO CONCRETO NO TIENE POR QUÉ SER ÓPTIMO Ejemplo: Mejora en el algoritmo anterior: sólo dividir por 2 e impares ¿Más mejoras? Puede que hubiera otras posibles mejoras. 11.9 10 EJEMPLOS DE ALGORITMOS CONOCIDOS EJEMPLO DE ALGORITMO DIFICIL Descubrir si un número es primo: a partir de su definición 1. Continuar con paso siguiente. 7. Fin del algoritmo. 6. Hay que dividir por 2 mientras el cociente sea >= 2 1. variables y constantes (Ej: num. Guardo en k el valor 2. 2. Leer numero ¿rem(num. Continuar con el paso 2 (repetir del 2 al 7). Son comandos. ¿es num divisible por 2?) a) SI: entonces ES PAR b) NO: entonces ES IMPAR Leer el número y guardarlo en num. R=rem(D. SI: no es primo. No: Imprimir C (digito binario). Ej: la palabra ans se corresponde con una variable creada automáticamente por MATLAB.k) == 0? ) 5. es decir. 5. 4. 10. SI: es primo. Fin del algoritmo. Ejemplo 1: descubrir si un número es impar. Ej: MATLAB ALGORITMO DATOS DE ENTRADA CONCEPTO DE ALGORITMO (3) La sintaxis consta de un conjunto de palabras y signos reservados que tienen una funcionalidad específica. 2. 3. ¿rem(num. Ej: la palabra who se corresponde con un comando de MATLAB que sirve para conocer los nombres de las variables creadas hasta ese momento. PROCESAMIENTO RESULTADOS TECLADO ARCHIVO LENGUAJE (SINTAXIS) PANTALLA ARCHIVO . 1. nombres de variables y caracteres especiales del lenguaje de programación que usemos. ¿Es k mayor o igual que num? 9. NO: Continuar con el paso 3 (repetir del 3 al 10).k)) Orden de ejecución de las Sentencias (si el orden está mal Salida (por pantalla o datos de salida) 8. Incrementar k en 1. finbucle error lógico) 11 12 CONCEPTO DE ALGORITMO (2) Componentes informáticas de un algoritmo: proceso (sentencias) datos de entrada datos de salida (resultados). 8. bucle ¿Es num divisible por k? (es decir. Fin del algoritmo. k) Sentencias: manipulan los datos (Ej: rem(num. 3.

Javascript. Ventajas: Muy gráfico. JAVA.PHP. 7. s DIAGRAMA DE FLUJO: Es un lenguaje gráfico que sirve para expresar la solución del algoritmo. Permite entender de un vistazo la solución algorítmica. FIN LEE a LEE b LEE c p ← (a + b + c) / 2 s ← sqrt ( p * (p-a) * (p-b) * (p-c) ) ESCRIBE p .. 5.Perl. Ventajas: El lenguaje está cercano a nuestro idioma. SALIDA 4. 6. Desventaja: No es ejecutable directamente en un ordenador. 10. Fácil comprensión del código. . 8. entre los que se encuentra el de MATLAB (otros ejemplos: C. c p. No es ejecutable en un ordenador. b.13 14 REPRESENTACIÓN DE LOS ALGORITMOS (1) Existen diversas herramientas para representar un algoritmo: Lenguajes de descripción de algoritmos: Diagramas de Flujo Pseudocódigo Lenguajes de implementación de algoritmos: Son los lenguajes de programación. Desventajas: Ocupa mucho espacio.. La SINTAXIS usada no es tan importante por tratarse de un lenguaje informal. La SINTAXIS usada sí es importante. s a. ALGORITMO Problema1 2. ENTRADA 3. 15 16 REPRESENTACIÓN DE LOS ALGORITMOS (1) REPRESENTACIÓN DE LOS ALGORITMOS (2) PSEUDOCÓDIGO (Ejemplo): 1.. 9.) REPRESENTACIÓN DE LOS ALGORITMOS (1) PSEUDOCÓDIGO: Es una mezcla de lenguaje de programación y español (o cualquier otro idioma). Lo importante es entender el algoritmo y comprobar que sea correcto.

y también aprender a detectar los errores. Ventaja: Es ejecutable en un ordenador.jpg').17 18 REPRESENTACIÓN DE LOS ALGORITMOS (2) REPRESENTACIÓN DE LOS ALGORITMOS (3) DIAGRAMA DE FLUJO (Ejemplo): ALUMNO INTERESADO EN HACER EVALUACIÓN ALTERNATIVA ALUMNO INTERESADO EN HACER SÓLO EVALUACIÓN CLÁSICA SI EX.j.imagen_resultante.jpg).etc.img1(i. La SINTAXIS usada sí es MUY importante.k). Solución: lenguajes de programación de alto nivel (Ej: lenguaje C.j.k). end end end figure image(img2) imwrite (img2. Sistema Operativo.). SOBRESALIENTE Nota FINAL >=5 NO (60% Bloque 2)+ (40% Bloques 1 y 3) El alumno puede seguir asistiendo a clases.j. pero es fácil acostumbrarse (son sólo un conjunto limitado de palabras reservadas).15) + (Nota Blq 2 * 0. .img1(i.k)= 255 .j.5 NO SI NOTA FINAL= (Nota Blq 1 * 0. Las programadores tienen dificultades para trabajar con el lenguaje máquina por estar muy cercano a la arquitectura del ordenador (CPU.5 NO SI EVALUACIÓN BLOQUE TEMÁTICO 3 >=3.6)+ (Nota Blq 3*0.img1(i. PARCIAL BLOQUE TEMÁTICO 1 >=3. SOBRESALIENTE LENGUAJE DE PROGRAMACIÓN: Es un lenguaje PROCESABLE POR EL ORDENADOR que sirve para expresar el código del algoritmo.k)= 255 . No es necesario conocer el hardware del ordenador Portabilidad del software. img2=img1 [numfil. JAVA. y hace uso de la programación imperativa) LENGUAJE DE PROGRAMACIÓN (Ejemplo: MATLAB) function result = negativo() img1=imread('foto. MATLAB. pero ya no tiene la opción de superar la asignatura por evaluación alternativa EX.numcol.j. 19 20 REPRESENTACIÓN DE LOS ALGORITMOS (3) Introducción a la programación imperativa (1) Hay dos grandes “paradigmas de la programación”: Programación Imperativa (es la más básica y la que aprenderemos en nuestro curso) Programación Orientada a Objetos (es más avanzada.j.k)= 255 . La sintaxis es estricta. image(img1). Desventajas: La sintaxis suele estar en inglés. NOTABLE.…) Pueden sustituir varias instrucciones del lenguaje máquina por una sola instrucción de un lenguaje más cercano al lenguaje matemático de fácil compresión para el programador Más fácil desarrollo y mantenimiento del software. img2(i.5 NO Evaluación Clásica Un único examen en las convocatorias oficiales SI Nota FINAL >=5 NO SUSPENSO APROBADO. img2(i. for i=1:numfil for j=1:numcol for k=1:canales img2(i.25) SI APROBADO.k). PARCIAL BLOQUE TEMÁTICO 2 >=3. NOTABLE. end En cualquiera de los dos paradigmas el ordenador sólo reconoce el lenguaje máquina (lenguaje ensamblador). Hay que aprenderla bien.canales]=size(img2).

Ej: num. R3  variable2 . DATO es cualquier objeto manipulable por el ordenador y que contiene información Se distinguen dos clases de datos: VARIABLES: Objeto cuyo valor cambia durante la ejecución de un programa.21 22 Introducción a la programación imperativa (2) Introducción a la programación imperativa (3) Compilar: mediante un programa llamado compilador se genera un fichero ejecutable a partir de un fichero con código fuente escrito en un lenguaje de alto nivel. Ej: MATLAB es un lenguaje interpretado (aunque también permite compilar). CONSTANTES: Objeto cuyo valor NO cambia durante la ejecución de un programa. Pero tiene la desventaja de que el fichero ejecutable final ocupa más espacio (al ser código máquina). La interpretación ahorra compilación. ocupa menos tamaño. y la depuración de errores sintácticos es más fácil porque sólo te da el primero que encuentra (hasta que es depurado y entonces te da el siguiente error. . y el resto de los valores numéricos se corresponden con el valor verdadero. Ej: x=0 %si x no varia su valor dentro del algoritmo funciona como constante En MATLAB todas las variables serán reales de doble precisión (double) mientras no se fuerce a que sean de otro tipo. si lo hay). R3 . [R4] ADD R3. Código ensamblador Código lenguaje MATLAB variable3 = variable2 + 5.k)==0? Normalmente en los lenguajes de programación el valor numérico 0 se corresponde con el valor falso. 5 MOV [R5]. Pero tiene la desventaja de depender del intérprete para ejecutarse. Ejemplo: Las variables num y k del algoritmo de los números primos Booleanos: su valor sólo puede ser verdadero o falso Ejemplo: Las respuestas a preguntas ¿rem(num. Ej: lenguaje C. k en el algoritmo de los número primos serían variables reales. Ventajas/desventajas: La compilación permite la ejecución más rápida de programas. en MATLAB NO ES NECESARIO DECLARAR LAS VARIABLES ANTES DE USARLAS (mientras que la declaración de variables es obligaroria en la mayoría de los lenguajes de programación). Al ser todas las variables por defecto de tipo real de doble precisión. Así. da la posibilidad de optimizar código. facilita la portabilidad entre sistemas operativos. y además es más difícil depurar errores. MOV R3. Ejemplo: el número pi. Interpretar: mediante un programa llamado intérprete se traduce sentencia a sentencia (instrucción a instrucción) y a continuación se ejecuta el código de la sentencia traducida. reales. R3  variable2 + 5 . etc. Una variable que creemos y le demos sólo un valor inicial sin modificarlo funciona como una constante. Caracteres: contienen texto Ejemplo: Una variable que contenga el nombre de una persona. por ejemplo existen tipos: Numéricos: enteros. variable3  R3 Es necesario un proceso de traducción de lenguaje en alto nivel al lenguaje máquina (lenguaje ensamblador) Traducción Dos posibilidades de traducción de un programa escrito en un lenguaje de alto nivel: Compilar el código Interpretar el código 23 24 DATOS: VARIABLES Y CONSTANTES DATOS: VARIABLES Y CONSTANTES Los valores que pueden tomar las variables y las constantes pertenecen a un TIPO (tipo de dato). y hace la aplicación independiente del compilador.

Ej: al ejecutar la operación 1+3*8 en MATLAB nos devolverá el valor resultante en la variable ans. 27 28 DATOS: VARIABLES Y CONSTANTES En MATLAB la variable ans (del inglés answer) contiene el valor de la última operación calculada por el programa en ejecución. Indica que el valor calculado en expresión debe ser almacenado en nombre_de_variable. expresion_o_valor: indica cómo se calcula el valor a almacenar.… CONSEJOS PARA CREAR NOMBRES DE VARIABLES: Utilizar siempre nombres en minúsculas. a no ser que la metamos explícitamente en una variable creada por nosotros: >> 1+3*8 ans = 25 >> n=1+3*8 n= 25 SENTENCIA DE ASIGNACIÓN En la sentencia de asignación: nombre_de_variable= expresion_o_valor nombre_de_variable: nombre de variable definida previamente en alguna sentencia de declaración. Ej (correcto): x=2 x=x+1 % al final x valdrá 3.25 26 DATOS: VARIABLES Y CONSTANTES DATOS: VARIABLES Y CONSTANTES En MATLAB una variable se crea la primera vez que se utiliza. y=5. Es correcto porque en la variable x se escribió primero un valor inicial 2. Ej (incorrecto): x=z+1 %dará un error porque la variable z no tiene valor inicial y por tanto no se le puede sumar 1. Ej: anio %en lugar de año A las variables hay que darles un valor inicial en una sentencia de asignación: nombre_de_variable= expresión_o_valor donde el nombre_de_variable siempre tiene que estar a la izquierda de la asignación Ej: x=3. No usar caracteres raros ni acentos ni la letra ñ. y=x % la variable y tomará el valor 3 % si invertimos el orden x=y entonces la x tomará el valor 5 Si el nombre de la variable está compuesto por más de una palabra usar un guión bajo _ para unirlas. Esta variable es creada automáticamente por MATLAB y no podemos crear otra variable con el mismo nombre. Es decir. ‘=‘ operador de asignación. var1. . En MATLAB una variable se crea la primera vez que se utiliza. Los nombres distinguen mayúsculas de minúsculas Ej: La variable Var1 no es la misma que las variables VAR1. Ej: nombre_empleado %en lugar de nombre empleado que MATLAB interpretaría como dos variables nombre y empleado. una variable no debe aparecer por primera vez en lectura (como la variable z) antes que en escritura.

es decir una expresión aritmético-lógica. Resultado de la expresión El resultado de la expresión es el valor de la constante El resultado de la expresión es el valor de la variable Suma Expresión1 y Expresión2. Para la comparación se emplea doble == Ej: x==z %compara si x e z tienen el mismo valor Para la desigualdad se usa ~= Ej: x~=z %compara si x e z tienen distinto valor 31 32 EXPRESIONES ARITMÉTICAS Expresión ARITMÉTICA EXPRESIONES LÓGICAS (CONDICIONES) Se modelan como variables y/o expresiones del Álgebra de Boole una expresión de condición es cierta ó falsa.Expresión Expresión RELACIONAL Operando1 > Operando2 Operando1 >= Operando2 Operando1 < Operando2 Operando1 <= Operando2 Operando1 == Operando2 Operando1 ~= Operando2 Resultado de la expresión Es verdadero si Operando1 ES MAYOR QUE Operando2 Es verdadero si Operando1 ES MAYOR O IGUAL QUE Operando2 Es verdadero si Operando1 ES MENOR QUE Operando2 Es verdadero si Operando1 ES MENOR O IGUAL QUE Operando2 Es verdadero si Operando1 ES IGUAL QUE Operando2 Es verdadero si Operando1 ES DISTINTO QUE Operando2 funcion(lista_parámetros) El resultado de la expresión es el valor devuelto por la . y está sujeta al Álgebra de Boole) o una mezcla.29 30 SENTENCIA DE ASIGNACIÓN SENTENCIA DE ASIGNACIÓN CUIDADO! No confundir la asignación con una comparación de igualdad. que son. a su vez. expresiones más pequeñas Resta Expresión2 a Expresión1 Multiplica Expresión1 y Expresión2 Divide Expresión1 entre Expresión2 El resultado es la Expresión cambiada de signo función Constante Nombre_de_Variable Expresión1 + Expresión2 Expresión1 – Expresión2 Expresión1 * Expresión2 Expresión1 / Expresión2 . una expresión lógica (que expresa una condición. Para la asignación se emplea un único = Ej: x=z %da a x el valor que tenga z En la sentencia de asignación: nombre_de_variable= expresion_o_valor donde la expresion_o_valor puede ser: un valor una expresión aritmética.

Pulsando la tecla Shift (la que sirve para poner las mayúsculas) y tecleando el número 126 rápidamente sin soltar la techa Shift 2.B) A 0 1 ~A 1 0 35 Álgebra de Boole Leyes fundamentales Ley conmutativa. Pulsando las teclas Alt-Gr el número 4 y la barra de espacio ¡Pruébalo. . num=input(‘Tiene que introducir un número entero: ‘).33 34 EXPRESIONES LÓGICAS (CONDICIONES) Expresión LÓGICA (sintaxis en MATLAB) Operando1 & Operando2 Es verdadero si Operando1 es verdadero Y Operando2 es verdadero and (Operando1. es fácil! Representación de la lógica Álgebra de Boole Inventada para lógica filosófica (s. Operando 2) EXPRESIONES LÓGICAS (CONDICIONES) Se suelen emplear en las condiciones que controlan las estructuras selectivas e iterativas. Álgebra con sólo dos elementos: 0 (FALSO) y 1 (VERDADERO) Y con un conjunto de operaciones definidas sobre tales elementos : Operaciones UNARIAS: Negación lógica (NOT): ~A not(A) Operaciones BINARIAS: Y lógico (AND): A & B and(A. Operando 2) Operando1 | Operando2 Es verdadero si Operando1 es verdadero O Operando2 es verdadero or (Operando1. distributiva OR (suma) Ley de idempotencia Ley de absorción Ley de De Morgan A|A=A A | (A & B) = A ~(A | B) = (~ A) & (~ B) 36 AND (producto) A&A=A A & (A | B) = A ~(A & B) = (~ A) | (~ B) NOTA: La operación OR también se llama “suma lógica”.B) 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 El Álgebra de Boole y estas leyes son útiles a la hora de operar y simplificar expresiones de condición en nuestros programas y de pensar en las condiciones que deben cumplirse en los programas Hacer los siguientes ejercicios del enunciado de la práctica 1 Ejercicio 19 Ejercicio 20 Ejercicio 21 Y usar el test de autoevaluación correspondiente en Enseñanza Virtual para comprobar los resultados. Ej: El siguiente código pide al usuario un número y averigua si es par y positivo. while floor(num)~=num disp(‘Error.XIX). tiene decimales’). end. num=input(‘Introduzca un número: ’). Resultado de la expresión ~ Operando1 Es verdadero si Operando1 NO es verdadero not (Operando1) NOTA: Para poner el operador de negación ~ se puede hacer de dos formas: 1.B) O exclusivo (XOR): xor(A.2)==0 & num>0 disp(‘El número es par y positivo’).B) O lógico (OR): A | B or(A. y le da la oportunidad de meterlo de nuevo num=input(‘Introduzca un número entero: ’). asociativa. evalúa si es entero. El número es real. Así trabajan los computadores actuales pues con transistores se implementa muy fácilmente. if rem(num. Ej: El siguiente código pide al usuario un número. end. pero no tiene nada que ver con la suma aritmética de números binarios: 1 + 1 = 10(2 (suma aritmética) 1|1=1 (álgebra de Boole) A B A&B A|B xor(A.

Prima el valor de A. Ej: rem(). Prima el valor de A. pruebe a demostrar que la siguiente ley de absorción también es cierta: A & (A | B) = A 39 40 EXPRESIONES ARITMÉTICAS Y LÓGICAS (ORDEN DE PRIORIDAD) Operador Prioridad Alta FUNCIONES DE DE MATLAB Precedencia de los operadores: -(operador ~ * + < unario de signo) / <= >= > ~= & | Baja IMPORTANTE: Los paréntesis alteran el orden de evaluación de la expresión Ej: 3*2+1 no es igual que 3*(2+1) == MATLAB ofrece una serie de funciones que se pueden utilizar/llamar directamente en nuestro código. round(). Ejercicio para el alumno: De forma análoga a la mostrada en la demostración anterior A | (A & B) = A. ceil().3) %devuelve el resto de la división entera de 15/3 . es decir la condición contraria a la anterior. ~((num >=0) & (num<=10)) y aplicando las Leyes de De Morgan queda (num<0) | (num >10) Si A==1 1 | (1 & B) %el valor 1 | (lo que sea) hace que el resultado sea directamente verdadero. factorial(). Es decir no importa qué valor tiene B. Las funciones reciben unos parámetros de entrada y devuelven uno o más resultados.10]. Por tanto 0 | 0 vale 0. es decir no importa qué valor tiene B.10] (num >=0) & (num<=10) Comprobar si una variable num está fuera del intervalo [0. Estas funciones se agrupan dentro de librerías.Álgebra de Boole Leyes fundamentales 37 Álgebra de Boole Leyes fundamentales 38 Demostración de la Ley de Absorción A | (A & B) = A Esto quiere decir que nos da igual lo que valga B Si A==0 0 | (0 & B) %el valor 0 en (0 & B) hace que este operando sea falso. floor(). Utilidad del Álgebra de Boole en programación: Ejemplos prácticos: Comprobar si una variable num está en el intervalo [0.… Ej: rem(15.

Ej: var_edad = input(‘Introduce tu edad’) Secuencial: Selectiva: Una acción se ejecuta una tras otra. Para distinguirlas de otras palabras reservadas las nombraremos como nombre_funcion() es decir seguidas de dos paréntesis ( ). Para eliminar las variables activas en un momento dado de la ejecución de un programa. que determina si el bucle se repite o no. usar el comando clear. Ej: disp (var1). Se evalúa la condición y en función del resultado se ejecuta un conjunto de instrucciones u otro. % siendo var1 el nombre de una variable Para saber más sobre esta función ejecutar en la ventana de comandos de MATLAB help disp 43 44 ENTRADA DE DATOS POR TECLADO PROGRAMACIÓN ESTRUCTURADA Un programa se escribe utilizando los siguientes tipos de estructuras de control: El usuario puede dar un valor a una variable a través del teclado mediante la función input(‘Texto a mostrar al usuario’). Todo bucle tiene que llevar asociada una condición. . En MATLAB se utiliza la función disp() usando como argumento un texto entre comillas simples ‘ ’ .41 42 FUNCIONES DE MATLAB Para saber cómo usar una función concreta de las que tiene MATLAB poner en la ventana de comandos: help nombre_comando Ej: help rem IMPORTANTE: En la ayuda de MATLAB las funciones aparecen con nombres en mayúsculas. Ej: disp(‘Hola mundo’). doble o múltiple). pero en realidad se emplean en minúsculas. es decir. SALIDA DE DATOS POR PANTALLA Para saber el nombre de todas las variables activas en un momento dado de la ejecución de un programa. Esta función de MATLAB muestra el mensaje que le ponemos entre comillas simples ‘ ’ dentro de los paréntesis ( ). Hay tres tipos de selectivas (simple. y además lee del teclado el valor que introduzca el usuario cuando éste presione la tecla INTRO. una instrucción sigue a otra en secuencia. usar el comando who. Cada repetición del bucle se llama iteración. Repetitiva: Contienen un bucle (conjunto de Para saber más sobre esta función ejecutar en la ventana de comandos de MATLAB help input instrucciones que se repiten un número finito de veces). Un programa puede imprimir por pantalla el valor de una variable.

Para definir una función se sigue la siguiente sintaxis: function [varsal1. - - . b y c debe leerse del teclado.m a= input('Introduzca el valor del primer lado del triángulo: '). Después de las variables de entrada va un = . pero suele ser habitual que sí las lleve. s= sqrt (p * (p-a) * (p-b) * (p-c)). S = p ( p − a )( p − b )( p − c ) El valor de las variables a. b y c.45 46 ESTRUCTURA SECUENCIAL EJEMPLO DE ESTRUCTURA SECUENCIAL (Problema 1: enunciado) Sentencia 1 Sentencia 2 . y el resultado s debe mostrarse por pantalla. disp(s). van los nombres de las variables de salida separadas por comas y entre corchetes [ ]. p=(a+b+c)/2. 47 48 EJEMPLO DE ESTRUCTURA SECUENCIAL (Problema 1: solución) CÓMO CREAR NUESTRA PROPIA FUNCIÓN (Sintaxis) Una función hay que definirla y luego llamarla (para usarla). es decir el fichero se llamará nombre_funcion. c= input('Introduzca el valor del tercer lado del triángulo: '). en cuyo caso no es necesario poner el = Después va el nombre de la función que siempre debe estar presente y debe coincidir con el nombre del fichero de MATLAB que contiene la función (con extensión .…) <código en MATLAB que resuelve esta función> end La función comienza con la palabra reservada de MATLAB function A continuación. Guardamos el código que tenemos en el fichero de script problema1. dadas tres variables que contienen la longitud de los lados de un triángulo a.. varsal2. Usar la función sqrt() de MATLAB para calcular la raíz cuadrada. es decir una sentencia sigue a otra en secuencia.m Siguiendo el nombre de la función van los nombres de las variables de entrada separadas por comas y entre ( ).…]= nombre_funcion (varent1.m). disp(‘La superficie del triángulo vale: ‘).. Sentencia N Escriba un algoritmo en MATLAB tal que. En una función que no devuelve nada no hay variables de salida. Podría ocurrir que una función no recibiera datos de entrada de esta manera. calcule su área S aplicando las siguientes ecuaciones: p = (a + b + c)/2 Se caracteriza porque las acciones se ejecutan una tras otra. En una función que sólo hay una única variable de salida no es necesario poner los [ ]. b= input('Introduzca el valor del segundo lado del triángulo: '). a no ser que la función no devuelva ninguna variable de salida. varent2.

que suele tener que variables de entrada (en este caso: a. c y luego la variable auxiliar p.20.20) La superficie del triángulo vale: 173. Cerramos la función con un end 51 52 EJEMPLO DE FUNCIÓN (Problema 1F: ¿Qué ocurre en la memoria en tiempo de ejecución?) Al ejecutar en la línea de comando la sentencia >> res = fproblema1(20.b. b. Guardamos el código que tenemos en el fichero fproblema1. tanto no del triángulo: su c= input('Introduzca el valor del tercer lado es necesario pedirle').b.c) p=(a+b+c)/2.20. se obtiene el resultado en la ventana de MATLAB. aplicando las siguientes ecuaciones: l=2πr S = 4 π r2 = 2 r l V = 4/3 π r3 = r S/3 Para calcular las potencias puede usar en MATLAB el operador ^ Ej: r^3 Al ejecutarse la función desde la línea de comando lo primero que se reserva es espacio en memoria son las variables locales s. disp(‘La superficie del triángulo vale: ‘). Por p=(a+b+c)/2. dado el radio de una esfera r (que debe leerse del teclado).20 y 20 sería el devuelto por la llamada a la función. a. s= sqrt (p * (p-a) * (p-b) * (p-c)). s= sqrt (p * (p-a) * (p-b) * (p-c)).205 function s = fproblema1(a.m (fichero con el mismo nombre que la función que tiene codificada dentro). en este caso la solución del problema1) 1. Quitamos el código que sobra. end %ver paso2 %ver paso3 %ver paso4 Escriba un algoritmo en MATLAB tal que. calcule e imprima por pantalla la longitud de su ecuador l. su superficie S y su volumen V. . ya que estas 49 50 EJEMPLO DE FUNCIÓN (Problema 1F: ¿Qué se obtiene al llamar a la función?) Por tanto. end >> fproblema1(20. end 5. s= sqrt (p * (p-a) * (p-b) * (p-c)).205 Al llamar a la función desde línea de comandos. la definición de la función completa quedaría de la siguiente forma: function s = fproblema1(a. Añadimos la cabecera de la función 4. c y la variable de salida es s 3. disp(s). las variables locales desaparecen de memoria.205) es devuelta por la función y queda guardada en la variable global res. Ej: El resultado para un triangulo con lados de longitud 20. 2. y el valor de la variable s. valor al usuario mediante el uso de la función input() variables se del en memoria '). en este caso daría 173. b. Averiguamos cuáles son las variables de entrada y de salida En este ejemplo las variables de entrada son a.c) p=(a+b+c)/2. disp(s).EJEMPLO DE FUNCIÓN (Problema 1F: Cómo convertir en función un script. disp(‘La superficie del triángulo vale: ‘).205 20 20 20 30 res s a b c p 173.c) a= input('Introduzca el valor del primer lado del triángulo:valores inciales a las ver con las asignaciones de ').c. (en este caso 173.205 173.205 res res s a b c p res s a b c p res s a b c p 173.205 20 20 20 30 20 20 20 20 20 20 30 %paso1 %paso2 %paso3 %paso4 %paso5 Al terminar de ejecutarse la función. disp(‘La superficie del triángulo vale: ‘). disp(s).b.20) %ver paso1 %ver paso5 en la memoria del ordenador se reserva espacio para la variable global res EJEMPLO DE ESTRUCTURA SECUENCIAL (Problema 1B: enunciado para el alumno) function s = fproblema1(a. y luego se imprime ‘La superficie del triángulo vale’ 173. Se hacen los cálculos de p y s. b= input('Introduzca el valor del segundo lado crean triángulo:justo cuando se llama a la función y reciben los valores de la llamada.b.

que deben leerse del teclado. Q=input('Introduce el valor de Q '). if (P^3 + Q^4 .2 * P^2) < 680 disp('La expresión aritmética es menor que 680'). se ejecutan las sentencias. 55 56 EJEMPLO DE ESTRUCTURA SELECTIVA SIMPLE (Problema 2: solución) EJEMPLO DE ESTRUCTURA SELECTIVA SIMPLE (Problema 2B: enunciado para el alumno) P=input('Introduce el valor de P ').53 54 ESTRUCTURA SELECTIVA (SIMPLE) EJEMPLO DE ESTRUCTURA SELECTIVA SIMPLE (Problema 2: enunciado) if condicion sentencias end Construya un algoritmo en MATLAB tal que. En tal caso debe imprimir el valor del discriminante. se salta dicho grupo de sentencias. determine si el discriminante es negativo. determine si los mismos satisfacen la siguiente expresión: Se evalúa la condicion. en caso contrario. b. c (que deben leerse del teclado). dados los valores enteros P y Q. dados los valores de una ecuación de segundo grado a. P 3 + Q 4 − 2 P 2 < 680 En caso afirmativo debe escribir por pantalla los valores de P y Q. Recordar que para la ecuación: ax2+bx+c=0 El discriminante se define como: b2-4ac . y también debe informar al usuario que la ecuación no tiene soluciones reales. si es verdadera. end Construya un algoritmo en MATLAB tal que.

>=. disp (media). ex2=input('Introduce la nota del segundo examen: '). ex1=input('Introduce la nota del primer examen: '). • Uso de expresión lógica (operadores &. Y por cada if else hay un end al final. media=(ex1+ex2+ex3)/3. Para que aparezca una nueva condición debe haber un else if o bien elseif. Se evalúa la condicion Si es verdadera: se ejecutan las sentencias 1. disp('La nota media es: '). • La expresión relacional (operadores <. que se leerán del teclado. EJEMPLO DE ESTRUCTURA SELECTIVA DOBLE (Problema 3: enunciado) Calcular si estás aprobado o suspenso. -En cualquier de las dos sintaxis. no aparece nunca una condición inmediatamente después de un else. -El último caso siempre va tras un else sin ninguna condición detrás (en ambas sintaxis).>. 59 60 EJEMPLO DE ESTRUCTURA SELECTIVA DOBLE (Problema 3: solución) ESTRUCTURA SELECTIVA MULTIPLE Existen dos posibles sintaxis: -En la mostrada en la izquierda la palabra else y el siguiente if van separados por un espacio en blanco. a partir de la media aritmética de la nota de tres exámenes parciales.~=) es la más utilizada.<=. donde condición es: • Cualquier expresión que toma el valor verdadero (valor distinto de 0) o falso (valor 0). -En la mostrada en la derecha los elseif van unidos y sólo hay un end al final. if condicion1 sentencias1 else if condición2 sentencias2 else sentencias3 end end if condicion1 sentencias1 elseif condicion2 sentencias2 elseif condicion3 sentencias3 else sentencias4 end .= =.57 58 ESTRUCTURA SELECTIVA (DOBLE) if condicion sentencias 1 else sentencias 2 end Esta estructura permite elegir entre dos posibles bloques de acciones en función de una condición. Si es falsa: se ejecutan las sentencias 2. ex3=input('Introduce la nota del tercer examen: ').~) como combinación de condiciones.|.

min=input ('Introduce los minutos: '). disp('El deporte recomendado para esta temperatura es:') if fah >85 disp ('Natación') elseif fah >70 disp ('Tenis') elseif fah >35 disp ('Golf') elseif fah >32 disp ('Esquí') else disp ('Marcha') end Para convertir grados centígrados (variable c) a fahrenheit (variable f) se utiliza la siguiente ecuación: f = c∗ 9 + 32 5 63 64 EJEMPLO DE ESTRUCTURA SELECTIVA MULTIPLE (Problema 4B: enunciado) EJEMPLO DE ESTRUCTURA SELECTIVA MULTIPLE (Problema 4B: solución) hora=input('Introduce la hora: ').61 62 EJEMPLO DE ESTRUCTURA SELECTIVA MULTIPLE (Problema 4: enunciado) EJEMPLO DE ESTRUCTURA SELECTIVA MULTIPLE (Problema 4: solución) cent= input('Introduce la temperatura en grados Farenheit: '). if min_total<0 disp ('Error: Hora no válida') elseif min_total<(8*60) disp('El precio por minuto es de 6 céntimos de euro') Elabore un programa en MATLAB que lea del teclado la hora del día y los minutos y escriba por pantalla el precio por minuto de una llamada telefónica. teniendo en cuenta la siguiente tabla: TEMPERATURA en grados Fahrenheit TEMP> 85 70 < TEMP <= 85 35 < TEMP <= 70 32 < TEMP <= 35 TEMP<= 32 DEPORTE Natación Tenis Golf Esquí Marcha fah=(9 / 5) * cent + 32. calcule los grados Fahrenheit y escriba por pantalla el deporte que es apropiado practicar a esa temperatura. min_total=hora*60 + min. Elabore un algoritmo en MATLAB que lea del teclado una temperatura en grados centígrados. teniendo en cuenta la siguiente tabla: Franja Horaria: Minutos De 0:00 a 7:59 De 8:00 a 14:59 De 15:00 a 19:29 De 19:30 a 23:59 Precio Por Minuto (en centimos de euro) 6 10 15 30 elseif min_total<(15*60) disp('El precio por minuto es de 10 céntimos de euro') elseif min_total<(19*60+30) disp('El precio por minuto es de 15 céntimos de euro') elseif min_total<=(23*60+59) disp('El precio por minuto es de 30 céntimos de euro') else disp ('Error: Hora no válida') end .

se ejecutan las sentencias del bucle y después se vuelve a evaluar la condición. Todo bucle debe tener: I Inicialización C Condición de salida B cuerpo del Bucle A Actualización (si no existiera. Su valor se incrementa en cantidades variables. Como la condición es evaluada. el 0 total = total + valor producto_multiple=1 %hay que inicializarlo al valor neutro del producto.65 66 ESTRUCTURAS REPETITIVAS: VARIABLES ESPECIALES EJEMPLO DE CONTADOR Y ACUMULADOR Incrementa c cada vez que imprime una letra 'a' • • • • • • • c=0. Normalmente su valor se incrementa o decrementa en 1. B El orden de ejecución será: I CBA CBA CBA. En el momento en el que la condición es falsa se sale del bucle.. Si es verdadera. antes de entrar en el bucle. el valor de la condición debe ser modificado en las sentencias que componen el bucle. la condición siempre se cumpliría y el bucle repetiría infinitas veces) Sólo en casos excepcionales pueden faltar I. Ejemplos: valor=input(‘Introduce un valor: ‘) total=0. antes ejecutar las sentencias del bucle. la primera vez. Es decir. Cuando el bucle empieza a ser complejo. Cuando el bucle se acaba. Ejemplos: contador=0 contador = contador + 1 indice=10 indice = indice . mientras la condición sea cierta se ejecutan las sentencias. interesa seguir un método para no equivocarse. %hay que inicializarlo al valor neutro de la suma.. puede que el bucle se ejecute 0 veces. disp(‘a’) c=c+1 disp(‘a’) c=c+1 disp(‘a’) c=c+1 En la variable ac acumula los valores leídos del teclado • • • • • ac=0 v=input(‘Introduce valor:’) ac = ac + v v=input(‘Introduce valor:’) ac = ac + v Contadores: Son variables que se utilizan para contar. el 1 producto_multiple = producto_multiple * valor 67 68 ESTRUCTURA REPETITIVA while (MIENTRAS) PARTES DE UN BUCLE while condicion sentencias end La condición del bucle se evalúa al principio. la condición seguro que es falsa Para finalizar un bucle.1 Acumuladores: Se utilizan para almacenar el resultado de sumas sucesivas. Mientras el bucle itera: C es verdadero Cuando el bucle se acabe: C es falso .

69 70 ESTRUCTURA REPETITIVA while : EJEMPLO I c=1 C while c<3 disp(‘a’) c<3 SI ESCRIBIR 'a' ESCRIBIR c c←c+1 Ejercicios para el alumno: Identificar ICBA en los bucles de las soluciones de los próximos ejercicios. Es decir. while (num>=5) num=input('Teclee un número menor que 5: '). debe volver a leer un número. repitiendo la operación hasta que el usuario escriba un valor negativo. Finalmente debe escribir por pantalla el valor leído. end disp('El primer número leído menor que 5 es: '). repitiendo la operación hasta que el usuario escriba un valor correcto. NO: fin del bucle c=c+1 end disp(c) B A EJERCICIOS ESTR. REPETITIVA while Problema 5: solución EJERCICIOS ESTR. mientras que sea mayor o igual que 0. REPETITIVA while Problema 5: enunciado c←1 comienzo bucle Escriba un programa en MATLAB que lea del teclado un número y compruebe si es menor que 5. disp(num). . Finalmente debe escribir por pantalla el valor leído. REPETITIVA while Problema 5B: enunciado num=input('Teclee un número menor que 5: '). 71 72 EJERCICIOS ESTR. Escriba un algoritmo en MATLAB que lea del teclado un número y compruebe que el número introducido sea negativo. debe volver a leer un número. Si no lo es.

debe volver a leer un número. end disp('El primer número dentro del intervalo (5. repitiendo la operación hasta que el usuario escriba un valor correcto. debe volver a leer un número. repitiendo la operación hasta que el usuario escriba un valor negativo. REPETITIVA while Problema 6: solución EJERCICIOS ESTR. mientras que sea mayor o igual que 0 o sea par. Si no lo es. Es decir. Escriba un algoritmo en MATLAB que lea del teclado un número y compruebe que el número introducido sea negativo e impar. Finalmente debe escribir por pantalla el valor leído.15). while num>=0 num=input('Teclee un número negativo: '). Escriba un programa en MATLAB que lea del teclado un número y compruebe si se encuentra en el rango (5. end disp('El primer número negativo leído es: '). REPETITIVA while Problema 6: enunciado num=input('Teclee un número negativo: '). while (num<=5) | (num>=15) num=input('Teclee un número entre 5 y 15 (no incluidos): '). .73 74 EJERCICIOS ESTR. REPETITIVA while Problema 5B: solución EJERCICIOS ESTR. Finalmente debe escribir por pantalla el valor leído. disp(num). 75 76 EJERCICIOS ESTR.15) ha sido: '). REPETITIVA while Problema 6B: enunciado num=input('Teclee un número entre 5 y 15 (no incluidos): '). disp(num).

REPETITIVA while Problema 7: enunciado num=input('Teclee un número negativo e impar: '). repitiendo la operación hasta que el usuario escriba un valor correcto. .15). while (num<=5) | (num>=15) num=input('Teclee un número entre 5 y 15 (no incluidos): '). Si no lo es. debe volver a leer un número. debe volver a leer un número. disp('y el número de veces que se ha leído un número ha sido: '). end disp('El primer número dentro del intervalo (5. while (num>=0) | (rem(num.2)==0) num=input('Teclee un número negativo e impar: ').15). Finalmente debe escribir por pantalla el contador del número de veces. Si no lo es. disp(cont). disp(num). REPETITIVA while Problema 7: solución num=input('Teclee un número entre 5 y 15 (no incluidos): '). repitiendo la operación hasta que el usuario escriba un valor correcto. end disp('El primer número negativo e impar ha sido: '). EJERCICIOS ESTR. donde contador mostrará el valor de la variable correspondiente. cont=1. En cada iteración del bucle debe escribir por pantalla el mensaje ‘El número de equivocaciones cometidas hasta el momento es de: contador’. REPETITIVA while Problema 7B: enunciado Escriba un programa en MATLAB que lea del teclado un número y compruebe si se encuentra en el rango (5. disp(num). Además debe contar el número de veces que se introduce un número por teclado. cont=cont+1. REPETITIVA while Problema 6B: solución EJERCICIOS ESTR.77 78 EJERCICIOS ESTR.15) ha sido: '). 79 80 EJERCICIOS ESTR. Además debe contar el número de veces que se introduce un número por teclado. Escriba un programa en MATLAB que lea del teclado un número y compruebe si se encuentra en el rango (5.

81 82 EJERCICIOS ESTR. EJERCICIOS ESTR. repitiendo la operación hasta que el usuario escriba un valor correcto. y que compruebe si está en el rango (5. Además debe contar el número de veces que se introduce un número por teclado. debe volver a leer un número. y el bucle debe permitir realizar 10 lecturas del teclado como máximo. disp(cont).15) ha sido: '). . En cada iteración del bucle debe escribir por pantalla el mensaje ‘El número de equivocaciones cometidas hasta el momento es de: contador’. end disp('El primer número dentro del intervalo (5. mostrarlo por pantalla. Si no lo está. num=input('Teclee un número entre 5 y 15 (no incluidos): '). 83 EJERCICIOS ESTR. REPETITIVA while Problema 7C: enunciado para el alumno Escriba un programa en MATLAB que lea del teclado un número y compruebe si se encuentra en el rango (5. REPETITIVA while Problema 7B: solución num=input('Teclee un número entre 5 y 15 (no incluidos): '). REPETITIVA while Problema 7D: enunciado para el alumno Escriba un programa en MATLAB que lea del teclado un número. debe volver a leer un número. lo meta en la variable num. imprimir la frase ‘El primer valor del intervalo ha sido: ‘ y el valor de la variable num correspondiente. repitiendo la operación hasta que el usuario escriba un valor correcto. donde contador mostrará el valor de la variable correspondiente.15). cont=cont+1. Si se salió porque el número estaba en el intervalo. y el bucle debe permitir realizar 10 lecturas del teclado como máximo. escriba por pantalla: 'Has cometido el máximo de errores permitido‘. while (num<=5) | (num>=15) disp('El número de equivocaciones cometidas hasta el momento es de: '). Y si tras el bucle se descubre que se realizaron ya las 10 lecturas (y por eso se salió del mismo). cont=1. Si no lo es.15). disp(num). mostrarlo por pantalla. disp('y el número de veces que se ha leído un número ha sido: '). disp(cont). Además debe contar el número de veces que se introduce un número por teclado.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->