Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos Simples
Algoritmos Simples
NDICE
Concepto de Algoritmo Datos: Variables y Constantes Tipo de datos compuestos: Vectores y Matrices Representacin de Algoritmos
Diagrama de Flujo, Pseudo cdigo Lenguajes de programacin: MATLAB
Programacin Estructurada
Estructura Secuencial Estructura Selectiva Simple (If) Doble (If-else) Mltiple Estructura Repetitiva While (Mientras) For (Para)
Calabacines rehogados Un algoritmo es un conjunto de acciones que determinan la secuencia de los pasos a seguir para resolver un problema especfico. Otras definiciones:
Conjunto de reglas en cierto orden para resolver un problema. Una forma de describir la solucin de un problema en pasos sucesivos.
1. 2. 3. 4. 5. 6.
Pelar los calabacines y cortar en rodajas Aadir sal a los calabacines Poner los calabacines en una sartn con aceite a medio fuego Mover los calabacines hasta que estn trasparentes Sacar de la sartn y escurrir el aceite Aadir queso parmesano rallado; sino se dispone de parmesano, utilizar queso curado.
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
EJEMPLO DE ALGORITMO INTUITIVO: Qu pasa cuando no se especifica bien un algoritmo? El algoritmo bien especificado sera el siguiente:
Conceptos bsicos: Qu pasa cuando no se especifica bien un algoritmo? Resultado de la ejecucin del algoritmo bien especificado:
OK
1. Sal de casa 2. Ve a la tienda ms cercana que no hayas visitado y pide dulces. 3. Si la tienda no tiene y t no ests 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
10
Leer numero rem(num,2) == 0? (es decir, es num divisible por 2?) a) SI: entonces ES PAR b) NO: entonces ES IMPAR
Ejemplo 2: Convertir de decimal a binario. Hay que dividir por 2 mientras el cociente sea >= 2
1. 2.
3. 4. 5.
SI: no es primo. Fin del algoritmo. NO: An num puede ser un nmero primo. Continuar con paso siguiente.
SI: es primo. Fin del algoritmo. NO: Continuar con el paso 3 (repetir del 3 al 10).
11.
S: Guardar C en D (D=C). Continuar con el paso 2 (repetir del 2 al 7). No: Imprimir C (digito binario). Fin del algoritmo.
8.
finbucle
error lgico)
11
12
CONCEPTO DE ALGORITMO (2) Componentes informticas de un algoritmo: proceso (sentencias) datos de entrada datos de salida (resultados). Lenguaje para expresarlo (SINTAXIS). Ej: MATLAB
ALGORITMO
DATOS DE ENTRADA
La sintaxis consta de un conjunto de palabras y signos reservados que tienen una funcionalidad especfica. Son comandos, nombres de variables y caracteres especiales del lenguaje de programacin que usemos.
Ej: la palabra ans se corresponde con una variable creada automticamente por MATLAB. Ej: la palabra who se corresponde con un comando de MATLAB que sirve para conocer los nombres de las variables creadas hasta ese momento. Ej: la palabra disp() se corresponde con el nombre de una funcin de MATLAB que sirve para mostrar datos por pantalla. Ej: el signo % se utiliza para aadir comentarios que MATLAB no interpretar como cdigo a ejecutar.
PROCESAMIENTO
RESULTADOS
TECLADO
ARCHIVO
LENGUAJE (SINTAXIS)
PANTALLA
ARCHIVO
13
14
REPRESENTACIN DE LOS ALGORITMOS (1) Existen diversas herramientas para representar un algoritmo: Lenguajes de descripcin de algoritmos: Diagramas de Flujo Pseudocdigo Lenguajes de implementacin de algoritmos: Son los lenguajes de programacin, entre los que se encuentra el de MATLAB (otros ejemplos: C, JAVA,PHP,Perl,Javascript,...)
PSEUDOCDIGO: Es una mezcla de lenguaje de programacin y espaol (o cualquier otro idioma). Lo importante es entender el algoritmo y comprobar que sea correcto. La SINTAXIS usada no es tan importante por tratarse de un lenguaje informal. Ventajas: El lenguaje est cercano a nuestro idioma. Fcil comprensin del cdigo. Desventaja: No es ejecutable directamente en un ordenador.
15
16
PSEUDOCDIGO (Ejemplo):
1. ALGORITMO Problema1 2. ENTRADA 3. SALIDA 4. 5. 6. 7. 8. 9. 10. FIN LEE a LEE b LEE c p (a + b + c) / 2 s sqrt ( p * (p-a) * (p-b) * (p-c) ) ESCRIBE p , s a, b, c p, s
DIAGRAMA DE FLUJO: Es un lenguaje grfico que sirve para expresar la solucin del algoritmo. La SINTAXIS usada s es importante. Ventajas: Muy grfico. Permite entender de un vistazo la solucin algortmica. Desventajas: Ocupa mucho espacio. No es ejecutable en un ordenador.
17
18
SI
EX. PARCIAL BLOQUE TEMTICO 2 >=3.5
NO
SI
EVALUACIN BLOQUE TEMTICO 3 >=3.5
NO
SI
NOTA FINAL= (Nota Blq 1 * 0.15) + (Nota Blq 2 * 0.6)+ (Nota Blq 3*0.25)
SI
APROBADO, NOTABLE, SOBRESALIENTE
NO
El alumno puede seguir asistiendo a clases, pero ya no tiene la opcin de superar la asignatura por evaluacin alternativa
NO
Evaluacin Clsica
Un nico examen en las convocatorias oficiales
SI
NO
SUSPENSO
LENGUAJE DE PROGRAMACIN: Es un lenguaje PROCESABLE POR EL ORDENADOR que sirve para expresar el cdigo del algoritmo. La SINTAXIS usada s es MUY importante. Ventaja: Es ejecutable en un ordenador. Desventajas: La sintaxis suele estar en ingls, pero es fcil acostumbrarse (son slo un conjunto limitado de palabras reservadas). La sintaxis es estricta. Hay que aprenderla bien, y tambin aprender a detectar los errores.
19
20
En cualquiera de los dos paradigmas el ordenador slo reconoce el lenguaje mquina (lenguaje ensamblador). Las programadores tienen dificultades para trabajar con el lenguaje mquina por estar muy cercano a la arquitectura del ordenador (CPU, Sistema Operativo,etc.). Solucin: lenguajes de programacin de alto nivel (Ej: lenguaje C, MATLAB, JAVA,)
Pueden sustituir varias instrucciones del lenguaje mquina por una sola instruccin de un lenguaje ms cercano al lenguaje matemtico de fcil compresin para el programador Ms fcil desarrollo y mantenimiento del software. No es necesario conocer el hardware del ordenador Portabilidad del software.
21
22
Cdigo ensamblador Cdigo lenguaje MATLAB variable3 = variable2 + 5; MOV R3, [R4] ADD R3, 5 MOV [R5], R3 ; R3 variable2 ; R3 variable2 + 5 ; variable3 R3
Es necesario un proceso de traduccin de lenguaje en alto nivel al lenguaje mquina (lenguaje ensamblador) Traduccin Dos posibilidades de traduccin de un programa escrito en un lenguaje de alto nivel:
Compilar el cdigo Interpretar el cdigo
23
24
DATO es cualquier objeto manipulable por el ordenador y que contiene informacin Se distinguen dos clases de datos:
VARIABLES: Objeto cuyo valor cambia durante la ejecucin de un programa.
Ejemplo: Las variables num y k del algoritmo de los nmeros primos
En MATLAB todas las variables sern reales de doble precisin (double) mientras no se fuerce a que sean de otro tipo. Ej: num, k en el algoritmo de los nmero primos seran variables reales. Al ser todas las variables por defecto de tipo real de doble precisin, en MATLAB NO ES NECESARIO DECLARAR LAS VARIABLES ANTES DE USARLAS (mientras que la declaracin de variables es obligaroria en la mayora de los lenguajes de programacin).
25
26
CONSEJOS PARA CREAR NOMBRES DE VARIABLES: Utilizar siempre nombres en minsculas. No usar caracteres raros ni acentos ni la letra .
Ej: anio %en lugar de ao
A las variables hay que darles un valor inicial en una sentencia de asignacin: nombre_de_variable= expresin_o_valor donde el nombre_de_variable siempre tiene que estar a la izquierda de la asignacin Ej: x=3; y=5; 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 ms de una palabra usar un guin bajo _ para unirlas.
Ej: nombre_empleado %en lugar de nombre empleado que MATLAB interpretara como dos variables nombre y empleado.
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. Es decir, una variable no debe aparecer por primera vez en lectura (como la variable z) antes que en escritura.
Ej (correcto):
x=2 x=x+1 % al final x valdr 3. Es correcto porque en la variable x se escribi primero
un valor inicial 2.
27
28
DATOS: VARIABLES Y CONSTANTES En MATLAB la variable ans (del ingls answer) contiene el valor de la ltima operacin calculada por el programa en ejecucin. Esta variable es creada automticamente por MATLAB y no podemos crear otra variable con el mismo nombre. Ej: al ejecutar la operacin 1+3*8 en MATLAB nos devolver el valor resultante en la variable ans, a no ser que la metamos explcitamente en una variable creada por nosotros: >> 1+3*8 ans = 25 >> n=1+3*8 n= 25
SENTENCIA DE ASIGNACIN
29
30
SENTENCIA DE ASIGNACIN
SENTENCIA DE ASIGNACIN
31
32
EXPRESIONES ARITMTICAS
Expresin ARITMTICA
Resultado de la expresin
El resultado de la expresin es el valor de la constante El resultado de la expresin es el valor de la variable Suma Expresin1 y Expresin2, que son, a su vez, expresiones ms pequeas Resta Expresin2 a Expresin1 Multiplica Expresin1 y Expresin2 Divide Expresin1 entre Expresin2 El resultado es la Expresin cambiada de signo funcin
Constante Nombre_de_Variable Expresin1 + Expresin2 Expresin1 Expresin2 Expresin1 * Expresin2 Expresin1 / Expresin2 - Expresin
Expresin RELACIONAL
Operando1 > Operando2 Operando1 >= Operando2 Operando1 < Operando2 Operando1 <= Operando2 Operando1 == Operando2 Operando1 ~= Operando2
Resultado de la expresin
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
33
34
Resultado de la expresin
~ Operando1
Es verdadero si Operando1 NO es verdadero not (Operando1)
NOTA: Para poner el operador de negacin ~ se puede hacer de dos formas: 1. Pulsando la tecla Shift (la que sirve para poner las maysculas) y tecleando el nmero 126 rpidamente sin soltar la techa Shift 2. Pulsando las teclas Alt-Gr el nmero 4 y la barra de espacio Prubalo, es fcil!
Representacin de la lgica
lgebra de Boole Inventada para lgica filosfica (s.XIX). As trabajan los computadores actuales pues con transistores se implementa muy fcilmente. lgebra con slo dos elementos: 0 (FALSO) y 1 (VERDADERO) Y con un conjunto de operaciones definidas sobre tales elementos :
Operaciones UNARIAS:
Negacin lgica (NOT): ~A not(A) Operaciones BINARIAS: Y lgico (AND): A & B and(A,B) O lgico (OR): A | B or(A,B) O exclusivo (XOR): xor(A,B) A 0 1 ~A 1 0
35
lgebra de Boole
Leyes fundamentales
Ley conmutativa, asociativa, distributiva OR (suma) Ley de idempotencia Ley de absorcin Ley de De Morgan A|A=A A | (A & B) = A
~(A | B) = (~ A) & (~ B)
36
NOTA: La operacin OR tambin se llama suma lgica, pero no tiene nada que ver con la suma aritmtica de nmeros binarios: 1 + 1 = 10(2 (suma aritmtica) 1|1=1 (lgebra de Boole)
A B
A&B
A|B
xor(A,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 condicin en nuestros programas y de pensar en las condiciones que deben cumplirse en los programas Hacer los siguientes ejercicios del enunciado de la prctica 1
Ejercicio 19
Ejercicio 20
Ejercicio 21
Y usar el test de autoevaluacin correspondiente en Enseanza Virtual para comprobar los resultados.
lgebra de Boole
Leyes fundamentales
37
lgebra de Boole
Leyes fundamentales
38
Si A==1 1 | (1 & B)
%el valor 1 | (lo que sea) hace que el resultado sea directamente verdadero. Es decir no importa qu valor tiene B. Prima el valor de A.
Ejercicio para el alumno: De forma anloga a la mostrada en la demostracin anterior A | (A & B) = A, pruebe a demostrar que la siguiente ley de absorcin tambin es cierta: A & (A | B) = A
39
40
FUNCIONES DE DE MATLAB
-(operador ~ * + <
unario
de signo)
==
MATLAB ofrece una serie de funciones que se pueden utilizar/llamar directamente en nuestro cdigo. Estas funciones se agrupan dentro de libreras. Las funciones reciben unos parmetros de entrada y devuelven uno o ms resultados. Ej: rem(), floor(), ceil(), round(), factorial(),
Ej: rem(15,3) %devuelve el resto de la divisin entera de 15/3
41
42
FUNCIONES DE MATLAB Para saber cmo usar una funcin 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 maysculas, pero en realidad se emplean en minsculas.
Para saber el nombre de todas las variables activas en un momento dado de la ejecucin de un programa, usar el comando who. Para eliminar las variables activas en un momento dado de la ejecucin de un programa, usar el comando clear. Para distinguirlas de otras palabras reservadas las nombraremos como nombre_funcion() es decir seguidas de dos parntesis ( ).
Un programa puede imprimir por pantalla el valor de una variable. En MATLAB se utiliza la funcin disp() usando como argumento un texto entre comillas simples .
Ej: disp(Hola mundo); Ej: disp (var1); % siendo var1 el nombre de una variable
Para saber ms sobre esta funcin ejecutar en la ventana de comandos de MATLAB help disp
43
44
PROGRAMACIN ESTRUCTURADA Un programa se escribe utilizando los siguientes tipos de estructuras de control:
El usuario puede dar un valor a una variable a travs del teclado mediante la funcin input(Texto a mostrar al usuario). Esta funcin de MATLAB muestra el mensaje que le ponemos entre comillas simples dentro de los parntesis ( ), y adems lee del teclado el valor que introduzca el usuario cuando ste presione la tecla INTRO.
Ej: var_edad = input(Introduce tu edad)
Secuencial: Selectiva:
decir, una instruccin sigue a otra en secuencia. Se evala la condicin y en funcin del
resultado se ejecuta un conjunto de instrucciones u otro. Hay tres tipos de selectivas (simple, doble o mltiple).
Repetitiva:
Contienen
un
bucle
(conjunto
de
Para saber ms sobre esta funcin ejecutar en la ventana de comandos de MATLAB help input
instrucciones que se repiten un nmero finito de veces). Cada repeticin del bucle se llama iteracin. Todo bucle tiene que llevar asociada una condicin, que determina si el bucle se repite o no.
45
46
ESTRUCTURA SECUENCIAL
Escriba un algoritmo en MATLAB tal que, dadas tres variables que contienen la longitud de los lados de un tringulo a, b y c, calcule su rea S aplicando las siguientes ecuaciones: p = (a + b + c)/2
Se caracteriza porque las acciones se ejecutan una tras otra, es decir una sentencia sigue a otra en secuencia.
S =
p ( p a )( p b )( p c )
El valor de las variables a, b y c debe leerse del teclado, y el resultado s debe mostrarse por pantalla. Usar la funcin sqrt() de MATLAB para calcular la raz cuadrada.
47
48
Guardamos el cdigo que tenemos en el fichero de script problema1.m a= input('Introduzca el valor del primer lado del tringulo: '); b= input('Introduzca el valor del segundo lado del tringulo: '); c= input('Introduzca el valor del tercer lado del tringulo: '); p=(a+b+c)/2; s= sqrt (p * (p-a) * (p-b) * (p-c)); disp(La superficie del tringulo vale: ); disp(s);
EJEMPLO DE FUNCIN
(Problema 1F: Cmo convertir en funcin un script, en este caso la solucin del problema1)
1. 2. Guardamos el cdigo que tenemos en el fichero fproblema1.m (fichero con el mismo nombre que la funcin que tiene codificada dentro). Averiguamos cules son las variables de entrada y de salida En este ejemplo las variables de entrada son a, b, c y la variable de salida es s 3. Aadimos la cabecera de la funcin 4. Quitamos el cdigo que sobra, que suele tener que variables de entrada (en este caso: a,b,c, ya que estas
49
50
EJEMPLO DE FUNCIN
(Problema 1F: Qu se obtiene al llamar a la funcin?)
Por tanto, la definicin de la funcin completa quedara de la siguiente forma:
function s = fproblema1(a,b,c) p=(a+b+c)/2; s= sqrt (p * (p-a) * (p-b) * (p-c)); disp(La superficie del tringulo vale: ); disp(s); end
>> fproblema1(20,20,20) La superficie del tringulo vale: 173.205
Al llamar a la funcin desde lnea de comandos, se obtiene el resultado en la ventana de MATLAB. Ej: El resultado para un triangulo con lados de longitud 20,20 y 20 sera el devuelto por la llamada a la funcin, en este caso dara 173.205
function s = fproblema1(a,b,c)
a= input('Introduzca el valor del primer del tringulo: '); inciales a las verlado con las asignaciones de valores
tanto no es necesario pedirle su valor al usuario c= input('Introduzca el valor del tercer lado del tringulo: '); mediante el uso de la funcin input()
variables se crean en memoria justo b= input('Introduzca el valor del segundo lado del tringulo: '); cuando se llama a la funcin y reciben los valores de la llamada. Por
p=(a+b+c)/2; s= sqrt (p * (p-a) * (p-b) * (p-c)); disp(La superficie del tringulo vale: ); disp(s); end
5. Cerramos la funcin con un end
51
52
EJEMPLO DE FUNCIN
(Problema 1F: Qu ocurre en la memoria en tiempo de ejecucin?)
Al ejecutar en la lnea de comando la sentencia >> res = fproblema1(20,20,20) %ver paso1 %ver paso5 en la memoria del ordenador se reserva espacio para la variable global res
function s = fproblema1(a,b,c) p=(a+b+c)/2; s= sqrt (p * (p-a) * (p-b) * (p-c)); disp(La superficie del tringulo vale: ); disp(s); end
Escriba un algoritmo en MATLAB tal que, dado el radio de una esfera r (que debe leerse del teclado), calcule e imprima por pantalla la longitud de su ecuador l, su superficie S y su volumen V, aplicando las siguientes ecuaciones: l=2r 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 funcin desde la lnea de comando lo primero que se reserva es espacio en memoria son las variables locales s, a, b, c y luego la variable auxiliar p. Se hacen los clculos de p y s, y luego se imprime La superficie del tringulo vale 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 res s a b c p 173.205 173.205 20 20 20 30
20 20 20
20 20 20 30
%paso1
%paso2
%paso3
%paso4
%paso5
Al terminar de ejecutarse la funcin, las variables locales desaparecen de memoria, y el valor de la variable s, (en este caso 173.205) es devuelta por la funcin y queda guardada en la variable global res.
53
54
Construya un algoritmo en MATLAB tal que, dados los valores enteros P y Q, que deben leerse del teclado, determine si los mismos satisfacen la siguiente expresin:
Se evala la condicion, si es verdadera, se ejecutan las sentencias; en caso contrario, se salta dicho grupo de sentencias.
P 3 + Q 4 2 P 2 < 680
En caso afirmativo debe escribir por pantalla los valores de P y Q.
55
56
P=input('Introduce el valor de P '); Q=input('Introduce el valor de Q '); if (P^3 + Q^4 - 2 * P^2) < 680 disp('La expresin aritmtica es menor que 680'); end
Construya un algoritmo en MATLAB tal que, dados los valores de una ecuacin de segundo grado a, b, c (que deben leerse del teclado), determine si el discriminante es negativo. En tal caso debe imprimir el valor del discriminante, y tambin debe informar al usuario que la ecuacin no tiene soluciones reales. Recordar que para la ecuacin: ax2+bx+c=0 El discriminante se define como: b2-4ac
57
58
Calcular si ests aprobado o suspenso, a partir de la media aritmtica de la nota de tres exmenes parciales, que se leern del teclado.
59
60
ex1=input('Introduce la nota del primer examen: '); ex2=input('Introduce la nota del segundo examen: '); ex3=input('Introduce la nota del tercer examen: '); media=(ex1+ex2+ex3)/3; disp('La nota media es: '); disp (media);
-En la mostrada en la derecha los elseif van unidos y slo hay un end al final. -En cualquier de las dos sintaxis, no aparece nunca una condicin inmediatamente despus de un else. Para que aparezca una nueva condicin debe haber un else if o bien elseif. -El ltimo caso siempre va tras un else sin ninguna condicin detrs (en ambas sintaxis).
if condicion1 sentencias1 elseif condicion2 sentencias2 elseif condicion3 sentencias3 else sentencias4 end
61
62
Elabore un algoritmo en MATLAB que lea del teclado una temperatura en grados centgrados, calcule los grados Fahrenheit y escriba por pantalla el deporte que es apropiado practicar a esa temperatura, teniendo en cuenta la siguiente tabla:
TEMPERATURA en grados Fahrenheit TEMP> 85 70 < TEMP <= 85 35 < TEMP <= 70 32 < TEMP <= 35 TEMP<= 32 DEPORTE Natacin Tenis Golf Esqu Marcha
fah=(9 / 5) * cent + 32; disp('El deporte recomendado para esta temperatura es:') if fah >85 disp ('Natacin') elseif fah >70 disp ('Tenis') elseif fah >35 disp ('Golf') elseif fah >32 disp ('Esqu') else disp ('Marcha') end
Para convertir grados centgrados (variable c) a fahrenheit (variable f) se utiliza la siguiente ecuacin:
f = c
9 + 32 5
63
64
Elabore un programa en MATLAB que lea del teclado la hora del da y los minutos y escriba por pantalla el precio por minuto de una llamada telefnica, 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
elseif min_total<(15*60) disp('El precio por minuto es de 10 cntimos de euro') elseif min_total<(19*60+30) disp('El precio por minuto es de 15 cntimos de euro') elseif min_total<=(23*60+59) disp('El precio por minuto es de 30 cntimos de euro') else disp ('Error: Hora no vlida') end
65
66
Contadores:
Son variables que se utilizan para contar. Normalmente su valor se incrementa o decrementa en 1.
Ejemplos: contador=0 contador = contador + 1 indice=10 indice = indice - 1
Acumuladores:
Se utilizan para almacenar el resultado de sumas sucesivas. Su valor se incrementa en cantidades variables.
Ejemplos: valor=input(Introduce un valor: ) total=0; %hay que inicializarlo al valor neutro de la suma, el 0 total = total + valor producto_multiple=1 %hay que inicializarlo al valor neutro del producto, el 1 producto_multiple = producto_multiple * valor
67
68
PARTES DE UN BUCLE
Cuando el bucle empieza a ser complejo, interesa seguir un mtodo para no equivocarse. Todo bucle debe tener:
I Inicializacin C Condicin de salida B cuerpo del Bucle A Actualizacin (si no existiera, la condicin siempre se cumplira y el bucle repetira infinitas veces)
Slo en casos excepcionales pueden faltar I, B El orden de ejecucin ser: I CBA CBA CBA...
Mientras el bucle itera: C es verdadero Cuando el bucle se acabe: C es falso
69
70
c1 comienzo bucle
Escriba un programa en MATLAB que lea del teclado un nmero y compruebe si es menor que 5. Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor ledo.
71
72
num=input('Teclee un nmero menor que 5: '); while (num>=5) num=input('Teclee un nmero menor que 5: '); end disp('El primer nmero ledo menor que 5 es: '); disp(num);
Escriba un algoritmo en MATLAB que lea del teclado un nmero y compruebe que el nmero introducido sea negativo. Es decir, mientras que sea mayor o igual que 0, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor negativo. Finalmente debe escribir por pantalla el valor ledo.
73
74
num=input('Teclee un nmero negativo: '); while num>=0 num=input('Teclee un nmero negativo: '); end disp('El primer nmero negativo ledo es: '); disp(num);
Escriba un programa en MATLAB que lea del teclado un nmero y compruebe si se encuentra en el rango (5,15). Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor ledo.
75
76
num=input('Teclee un nmero entre 5 y 15 (no incluidos): '); while (num<=5) | (num>=15) num=input('Teclee un nmero entre 5 y 15 (no incluidos): '); end disp('El primer nmero dentro del intervalo (5,15) ha sido: '); disp(num);
Escriba un algoritmo en MATLAB que lea del teclado un nmero y compruebe que el nmero introducido sea negativo e impar. Es decir, mientras que sea mayor o igual que 0 o sea par, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor negativo. Finalmente debe escribir por pantalla el valor ledo.
77
78
num=input('Teclee un nmero negativo e impar: '); while (num>=0) | (rem(num,2)==0) num=input('Teclee un nmero negativo e impar: '); end disp('El primer nmero negativo e impar ha sido: '); disp(num);
Escriba un programa en MATLAB que lea del teclado un nmero y compruebe si se encuentra en el rango (5,15). Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Adems debe contar el nmero de veces que se introduce un nmero por teclado. Finalmente debe escribir por pantalla el contador del nmero de veces.
79
80
EJERCICIOS ESTR. REPETITIVA while Problema 7: solucin num=input('Teclee un nmero entre 5 y 15 (no incluidos): '); cont=1; while (num<=5) | (num>=15) num=input('Teclee un nmero entre 5 y 15 (no incluidos): '); cont=cont+1; end disp('El primer nmero dentro del intervalo (5,15) ha sido: '); disp(num); disp('y el nmero de veces que se ha ledo un nmero ha sido: '); disp(cont);
Escriba un programa en MATLAB que lea del teclado un nmero y compruebe si se encuentra en el rango (5,15). Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Adems debe contar el nmero de veces que se introduce un nmero por teclado. En cada iteracin del bucle debe escribir por pantalla el mensaje El nmero de equivocaciones cometidas hasta el momento es de: contador, donde contador mostrar el valor de la variable correspondiente.
81
82
Escriba un programa en MATLAB que lea del teclado un nmero y compruebe si se encuentra en el rango (5,15). Si no lo es, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Adems debe contar el nmero de veces que se introduce un nmero por teclado, mostrarlo por pantalla, y el bucle debe permitir realizar 10 lecturas del teclado como mximo. En cada iteracin del bucle debe escribir por pantalla el mensaje El nmero de equivocaciones cometidas hasta el momento es de: contador, donde contador mostrar el valor de la variable correspondiente.
83
Escriba un programa en MATLAB que lea del teclado un nmero, lo meta en la variable num, y que compruebe si est en el rango (5,15). Si no lo est, debe volver a leer un nmero, repitiendo la operacin hasta que el usuario escriba un valor correcto. Adems debe contar el nmero de veces que se introduce un nmero por teclado, mostrarlo por pantalla, y el bucle debe permitir realizar 10 lecturas del teclado como mximo. Y si tras el bucle se descubre que se realizaron ya las 10 lecturas (y por eso se sali del mismo), escriba por pantalla: 'Has cometido el mximo de errores permitido. Si se sali porque el nmero estaba en el intervalo, imprimir la frase El primer valor del intervalo ha sido: y el valor de la variable num correspondiente.