Sei sulla pagina 1di 29

FIME

Antologa: Introducin a MatLab

5. ALGORITMOS Y ESTRUCTURAS EN MATLAB


Un algoritmo es un conjunto de pasos para resolver un problema, sus caractersticas son: 1. Son finitos: su nmero se puede representar mediante un nmero entero. 2. Son secuenciales: se realiza uno por uno. 3. Son ordenados: tienen un orden como parte de su objetivo en el programa. 4. Son confiables: siempre dan el mismo resultado ante las mismas condiciones de entrada.

5.1 Tcnicas para la formulacin de algoritmos


Las tcnicas analizadas en la unidad anterior permiten un diseo global del algoritmo, pero ocasionalmente pueden desatender detalles especficos de este. Las tres tcnicas de formulacin de algoritmos ms usadas son: Diagrama de flujo Pseudocdigo Diagramas estructurados

De ellas, slo se abordar la descripcin de las dos primeras. 5.1.1 Diagramas de Flujo Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. La simbologa utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse a un patrn definido previamente, se muestra en la Tabla 5.1. Ejemplo 1: Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y considerando los descuentos fijos al salario bruto en concepto de impuestos a una tasa de 20%. Solucin: El problema se puede dividir en un conjunto de pasos (contables) y secuencialmente lgicos para resolver el problema. Primero es necesario identificar las etapas del proceso y enseguida, asociarlas con smbolos de diagrama de flujo, por ejemplo: 1. Entrada de datos 2. Clculo de parmetros 3. Salida del resultado La representacin en diagrama de flujo se muestra en la figura 5.1

MIA Rosario Aldana Franco

92

FIME

Antologa: Introducin a MatLab


Tabla 5.1 Smbolos para diagrama de flujo Smbolos Descripcin

MIA Rosario Aldana Franco

93

FIME

Antologa: Introducin a MatLab


Tabla 5.1 Smbolos para diagrama de flujo (continua) Smbolos Descripcin

Ejemplo 2: Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayora o minora de edad segn sea el caso para un nombre especfico. Solucin: se muestra en la figura 5.2

MIA Rosario Aldana Franco

94

FIME

Manual bsico de MatLab

Figura 5.1 Representacin en diagrama de flujo del ejemplo 1 y su cifrado en Matlab 5.1.2 Pseudocdigo Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. El pseudocdigo naci como un lenguaje similar al ingls y era un medio representar bsicamente las estructuras de control de programacin estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa.

MIA Rosario Aldana Franco

95

FIME

Manual bsico de MatLab

El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls (similares a sus homnimos en los lenguajes de programacin), tales como star,begin, end, stop, if-then-else, while, repeat-until.etc

Figura 5.2 Representacin del algoritmo del ejemplo 2 y su codificacin en Matlab

MIA Rosario Aldana Franco

96

FIME
Secuencia
Inicio accin1 accin2 : accin n Fin

Manual bsico de MatLab

Decisin
Simple accin1 accin2 : accin n Doble accin1 accin2: en caso contrario accin1 acci2 si condicin entonces

si condicin then

Iteracin
Fija para var. Entera inicial hasta final accin1 accin2: accin n Condicional al inicio mientras condicin accin1 accin2: accin n hacer hacer

MIA Rosario Aldana Franco

97

FIME
Condicional al final Repetir accin1 accin2: accin n Hasta que condicin

Manual bsico de MatLab

Seleccin
casos selector de valor1 : accin1 accin2 valor2 : accin1 accin n valor n : accin1 accin2 Ejercicio 3: Se requiere preguntar dos valores, y a continuacin ofrecer un men con las operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la posibilidad de una nueva operacin. Solucin: Declaracin de variables : Real : X, Y, RESPUESTA Entero : OPCION Carcter : OP Inicio Repetir escribir(Primer valor : ) leer(X) escribir(Segundo valor : ) leer(Y) escribir(1) Suma ) escribir(2) Resta ) escribir(3) Multiplicacin )

MIA Rosario Aldana Franco

98

FIME
escribir(4) Divisin ) escribir(Qu operacin deseas realizar ? : ) leer(OPCION) casos OPCION de 1 : RESULTADO = X+Y 2 : RESULTADO = X-Y 3 : RESULTADO = X*Y 4 : si Y=0 entonces escribir( Error ) RESULTADO = 0 en caso contrario RESULTADO = X/Y escribir (Resultado : ,RESULTADO) escribir(Deseas otro clculo : [S/N] ) leer(OP) Hasta que RES = N Fin

Manual bsico de MatLab

Ejercicio 4: Preguntar un nombre y repetirse en pantalla tantas veces como se desee (preguntar cantidad de repeticiones), indicando el nmero de repeticin. Solucin: Declaracin de variables Cadena : nom entero : x, n Inicio escribir(Nombre : ) leer(nom) escribir(Cuntas veces quieres repetirlo ? : ) leer(n)

para x = 1 hasta n hacer escribir(x.- , nom) Fin

MIA Rosario Aldana Franco

99

FIME 5.2 Estructuras algortmicas

Manual bsico de MatLab

Las presentes notas son un resumen especial para el curso de Introduccin a Matlab, el resumen est basado fundamentalmente en el libro Fundamentos de Programacin de Luis Joyanes Aguilar, editado por McGraw Hill en 1996, pero adecuado a las necesidades del programa. 5.2.1 Introduccin a la Programacin estructurada Ante la complejidad de los programas necesarios para resolver problemas usando una computadora el estilo de escritura de los programas se vuelve una de las caractersticas ms sobresalientes en las tcnicas de programacin. La programacin modular ensear la descomposicin de un programa en mdulos ms simples de programar, y la programacin estructurada permitir la escritura de programas fciles de leer y modificar, por ejemplo la suma de dos nmeros cualesquiera, como se muestra en la figura 5.3

INICIO LEER X, Y Figura 5.3 Ejemplo de estructura secuencia

SX+Y

ESCRIBIR S

INICIO
La codificacin en Matlab es:

x=input('Dame X: ') y=input('Dame Y:') S=x+y fprintf('La suma de %d y %d es %d',x,y,S)


y los resultados de la corrida son:

Dame X: 3 x = 3 Dame Y:5 MIA Rosario Aldana Franco 100

FIME y = 5 S = 8 La suma de 3 y 5 es 8

Manual bsico de MatLab

Pero un proceso puede contener decisiones, para ejecutar un conjunto de instrucciones u otro, dependiendo de la seleccin. La llamada selectiva o condicional puede ser simple o compuesta. Se usan para tomar decisiones lgicas, mediante la evaluacin de una condicin y en funcin del resultado de la misma se realiza una accin. Las estructuras de decisin se pueden anidar una dentro de otra, pero no se pueden traslapar, es decir que una estructura de decisin se puede ejecutar en el interior de otra, pero el bucle anidado debe concluir antes que el bucle que lo contiene. Las estructuras condicionales simples o selectivas son: IF, ELSE-IF WHILE y SWITCH 5.2.2 Estructuras selectivas y repetitivas IF Con la estructura IF se ejecuta una accin cuando se cumple una condicin dada, as si la condicin establecida se cumple se ejecuta una accin y si la condicin no se satisface, la accin que se ejecuta ser otra diferente por defecto. Un ejemplo de es leer un nmero y escribirlo si es positivo, como se muestra en la figura 5.4.

INICIO

Figura 5.4 Ejemplo de la estructura IF

LEER N V N>0 F FIN


La codificacin en Matlab es: >> N=input('Dame N: ') if N>0 fprintf('%f es positivo',N) end Los resultados de correrlo son:

ESCRIBIR N

MIA Rosario Aldana Franco

101

FIME
Dame N: 6 N = 6 6.000000 es positivo

Manual bsico de MatLab

ELSE-IF Con la estructura ELSE - IF se ejecuta una accin cuando se cumple una condicin dada, as si la condicin establecida se cumple se ejecuta una accin y si la condicin no se satisface, la accin que se ejecuta ser otra diferente tambin preestablecida. Un ejemplo de es leer nmeros, si son positivos se suman, pero si lee un nmero que no es positivo se escribe la SUMA, como se muestra en la figura 5.5.

INICIO Figura 5.5 Ejemplo de la estructura ELSE-IF SUMA 0

LEER N F N>0 V SUMA SUMA + N FIN ESCRIBIR SUMA

Enseguida se muestra el algoritmo representado en pseudocdigo: inicio 1 CONT 0, SUMA0, K, BANDERA = 0 2. SI BANDERA= 0 LEER N 3. MIENTRAS (CONT < K) SUMA SUMA + N CONT CONT +1 4. BANDERA = 1 5. ESCRIBIR (SUMA) fin La codificacin en Matlab es:

MIA Rosario Aldana Franco

102

FIME bandera=0; suma=0; contador=1; k=input('Dame el valor limite k: ')

Manual bsico de MatLab

while bandera==0 suma=suma+contador fprintf('La suma de 0 hasta k=%d es %d',contador,suma) bandera=input('Desea hacer otro calculo? si=0, no cualquier otro') end
Que produce el siguiente resultado:

Dame el valor limite k: 6 k = 6 suma = 1 La suma de 0 hasta k=1 es 1Desea hacer otro calculo? si=0, no cualquier otro1 bandera = 1
SWITCH La estructura SWITCH tambin se llama conmutador o interruptor, y es una estructura selectiva mltiple. Basa su funcionamiento en el uso de una variable que puede tomar diversos valores a lo largo de la ejecucin del programa, permitiendo comunicar informacin de una parte a otra del programa. Esta variable puede tomar dos valores diferentes: 0 y 1, por ejemplo. En la figura 5.6 se muestra un ejemplo del uso de este tipo de estructura. El ejemplo muestra un proceso para sumar o multiplicar un nmero que se da por teclado, dependiendo de la eleccin del usuario, el nmero de entrada se guarda en las variables suma o multiplica, dependiendo de la operacin elegida. La codificacin en Matlab es:

suma=0; multiplica=1 contador=0;

MIA Rosario Aldana Franco

103

FIME k=input('Dame el numero de elementos k: ') while contador<k n=input('\nDame el numero: ')

Manual bsico de MatLab

op=input('\nDame la operacion (suma o multiplica)') switch(op) case{suma} disp('\nEstoy sumando ...') suma=suma+n; contador=contador+1; case{multiplica} disp('\nEstoy multiplicando ...') multiplica=multiplica*n contador=contador+1; otherwise %condicion por defecto disp('\nNo estoy trabajando') end fprintf('\nLa suma guarda %d',suma) fprintf('\nLa multiplicacion guarda %d',multiplica) end
El resultado de la corrida es:

Dame el numero de elementos k: 3 Dame el numero: 1 Dame la operacion (suma o multiplica)'suma' op = suma \nNo estoy trabajando La suma guarda 0 La multiplicacion guarda 1 MIA Rosario Aldana Franco

104

FIME Dame el numero: 4 Dame la operacion (suma o multiplica)suma op = suma \nEstoy sumando ... La suma guarda 4 La multiplicacion guarda 1 Dame el numero: 5

Manual bsico de MatLab

Dame la operacion (suma o multiplica)multiplica op = 1 \nEstoy multiplicando ... La suma guarda 4 La multiplicacion guarda 5 INICIO
Figura 5.6 Ejemplo de uso de la estructura switch

suma 0 contador 0 multiplica 1 A LEER n, op

contador < k V F ESCRIBIR Suma Multiplica

Op

Suma Suma + n

Multiplica Multiplica * n

FIN MIA Rosario Aldana Franco

A 105

FIME
Estructuras repetitivas

Manual bsico de MatLab

Las computadoras estn especialmente diseadas para todas aquellas aplicaciones en las cuales una operacin o conjunto de ellas deben repetirse muchas veces, por ello las estructuras repetitivas son ampliamente utilizadas. Las estructuras repetitivas se valen de bucles o lazos, en los que una o varias acciones se repiten (iteracin) dependiendo de Qu contiene el bucle? Y Cuntas veces se debe repetir?, el bucle termina mediante la evaluacin de una condicin de parada, que se define al principio o final del bucle. Tambin las estructuras repetitivas pueden anidarse, cuidando de no traslapar la ejecucin de los bucles. Las estructuras repetitivas son: WHILE (mientras) y FOR (desde y hasta). WHILE El cuerpo del bucle se repite mientras se cumple una condicin, grficamente se muestra en la figura 5.7

condicin

no si
acciones

Figura 5.7. Estructura WHILE

Pseudocdigo Mientras condicion hacer Accin S1 Accin S2 . . . Accin Sn Fin_mientras Cuando se ejecuta la instruccin mientras, se evala la condicin (expresin booleana), si se evala falsa ninguna accin se lleva a cabo y el programa prosigue en la siguiente instruccin despus del bucle, pero si la expresin booleana se evala verdadera, se ejecuta el cuerpo del bucle y al final se vuelve a evaluar la condicin de ejecucin del bucle, repitindose este proceso en tanto la expresin booleana, que constituye la condicin, sea evaluada como verdadera. Existen 4 mtodos para terminar un bucle:

MIA Rosario Aldana Franco

106

FIME
1. 2. 3. 4.

Manual bsico de MatLab


Plantear la condicin al inicio del bucle Encabezar la lista de datos con su tamao Finalizar la lista de datos con su valor de entrada Agotar los datos de entrada usando un dato centinela determinado desde el diseo. que realizan una tarea especfica son los contadores y los

Algunos bucles acumuladores.

Ejemplo Para calcular una tabla de multiplicar se pueden usar dos ciclos while anidados, como por ejemplo:

r=1; while r==1 t=input('Que tabla desea calcular?' ); li=input('Desde donde?'); ls=input('Hasta donde?'); in=input('Con que incremento?'); while li<=ls m=t*li; fprintf('El resultado de multiplicar %d por %d es %d\n',t,li,m) li=li+1; end r=input('Desea hacer otro calculo? si=1, no cualquier otro numero'); end
Que presenta los siguientes resultados:

Que tabla desea calcular? 5 Desde donde? 1 Hasta donde? 20 Con que incremento? 2 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 El resultado de multiplicar 5 MIA Rosario Aldana Franco

por por por por por por por por por por por por

1 es 5 2 es 10 3 es 15 4 es 20 5 es 25 6 es 30 7 es 35 8 es 40 9 es 45 10 es 50 11 es 55 12 es 60 107

FIME El resultado El resultado El resultado El resultado El resultado El resultado El resultado El resultado Desea hacer

Manual bsico de MatLab de multiplicar 5 por 13 es 65 de multiplicar 5 por 14 es 70 de multiplicar 5 por 15 es 75 de multiplicar 5 por 16 es 80 de multiplicar 5 por 17 es 85 de multiplicar 5 por 18 es 90 de multiplicar 5 por 19 es 95 de multiplicar 5 por 20 es 100 otro calculo? si=1, no cualquier otro numero 3

FOR En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones de un bucle. Entonces cuando el nmero de iteraciones es fijo y conocido se debe usar una estructura FOR (o desde/para). La estructura FOR ejecuta las acciones del cuerpo del bucle un nmero especificado de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle. La estructura FOR comienza con un valor inicial de la variable ndice y las acciones especificadas se ejecutan a menos que el valor inicial sea mayor que el valor final. La variable ndice se incrementa o de manera constante y si este valor no excede el valor final, se ejecutan de nuevo las acciones. Por consiguiente, las acciones especficas en el bucle se ejecutan para cada valor de la variable ndice se incrementa de acuerdo a la constante definida. El incremento en la variable ndice siempre es 1 si no se indica expresamente otra cosa, esta variable es generalmente del tipo entero, positivo o negativo. En la figura 5.8 se muestra un ejemplo (sumar los primeros 100 nmeros enteros positivos) donde se usa una estructura de este tipo. El programa en Matlab sera:

suma=0; for (r=1:100) suma=suma+r; end fprintf('La suma es: %d',suma)


Que al correrlo proporciona el siguiente resultado:

La suma es: 5050

MIA Rosario Aldana Franco

108

FIME INICIO

Manual bsico de MatLab

SUMA 0 N1

si N < = 100 ESCRIBIR SUMA

no SUMA SUMA + N NN+1 FIN

Figura 5.8 Ejemplo de uso de Estructura FOR La representacin del algoritmo en seudocdigo es: inicio 1. SUMA0, N 1 2. MIENTRAS (N < = 100) SUMA SUMA + N N N +1 3. ESCRIBIR (SUMA) fin Tambin es posible sustituir una estructura FOR por una WHILE, usando incrementos o decrementos.

5.2.3 Estructuras de control


Son estructuras repetitivas que permiten la salida del bucle en un punto intermedio, cuando se cumple una condicin, permitiendo interrumpir (BREAK) o terminar (END) la ejecucin del bucle. Los mtodos para controlar el bucle puede ser mediante: Centinela Bandera Contador

MIA Rosario Aldana Franco

109

FIME

Manual bsico de MatLab

END Cuando se cumple una condicin la ejecucin del bucle termina, as como la ejecucin del programa, como se puede apreciar en el ejemplo de sumar 100 nmeros positivos, que se muestra en al figura 5.9.

INICIO

SUMA 0 K0

LEER N

inicio 1. SUMA0, K 1 2. LEER N 3. IF N < = 0 4. MIENTRAS (K < = 100) SUMA SUMA + N K K +1 5. ESCRIBIR (SUMA) FIN DE MIENTRAS FIN DE IF fin

N<=0 no

si FIN

no K < 100 si SUMA SUMA + N KK+1

ESCRIBIR SUMA

Figura 5.9 Ejemplo de uso de Estructura END En Matlab la estructura end forma parte de la sintaxis de las estructuras while, for e if, por lo que no es necesario implementarla en el cdigo. BREAK Cuando se cumple una condicin la ejecucin del bucle se interrumpe, y la ejecucin del programa continua despus del bucle, como se puede apreciar en el ejemplo de sumar 100 nmeros positivos, que se muestra en al figura 5.10. Las caractersticas se pueden listas como: Es un segmento de un algoritmo o programa, cuyas instrucciones se repiten un nmero determinado de veces mientras se cumple una condicin. La condicin puede ser verdadera o falsa. La condicin se prueba una vez a cada paso o iteracin del bucle.

MIA Rosario Aldana Franco

110

FIME
5.10

Manual bsico de MatLab

Por ejemplo, la suma de varios nmeros enteros, como se muestra en la figura


Los procesos repetitivos son la base de una computadora Es una estructura para controlar el nmero de veces que se realiza una accin. Un contador es una variable que se incrementa o decrementa una cantidad constante cada iteracin. Por ejemplo, leer todas las fichas en un archivo, como se muestra en la figura 6.10. Tambin llamado totalizador Es una estructura para almacenar cantidades variables resultantes de sumas sucesivas. A diferencia del contador que acumula cantidades constantes en cada iteracin, las cantidades que se pueden guardar son variables.

INICIO

SUMA 0 K0

inicio 1. 2. 3. 4.

LEER N
fin

SUMA0, K 1 LEER N IF N < = 0 MIENTRAS (K < = 100) SUMA SUMA + N K K +1 5. ESCRIBIR (SUMA) FIN DE MIENTRAS ESCRIBIR (SUMA) FIN DE IF

si N<=0 no no K < 100 si SUMA SUMA + N KK+1 FIN ESCRIBIR SUMA

Por ejemplo, sumar los primeros N nmeros suministrados, como se mostr en figura 5.9

MIA Rosario Aldana Franco

111

FIME 5.3 Arreglos

Manual bsico de MatLab

Los arreglos o matrices son variables donde se pueden guardar varios datos del mismo tipo usando un orden indexado. La forma ms comn de implementar el manejo de arreglos en Matlab es usando dos ciclos for anidados, el primero para indicar las filas y el interior para manejar las columnas. Por ejemplo, construir una matriz usando dos ciclos for anidados:

n=input('Cuantas filas tendra el arreglo? '); m=input('Cuantas columnas tendra el arreglo? '); %Construye arreglo %primero las filas for (r=1:n) %aqui las columnas for(s=1:m) A(r,s)=input('dame un numero '); end end %para mostrar el arreglo se usan nuevamente dos ciclos anidados %aqui las filas fprintf('\nLa tabla es:\n'); for (r1=1:n) %aqui las columnas for(s1=1:m) fprintf('%d\t',A(r1,s1)); end fprintf('\n'); end
Cuyo resultado es: Cuantas filas tendra el arreglo? 4 Cuantas columnas tendra el arreglo? 6 dame un numero 2 dame un numero 4 dame un numero 5 dame un numero 7 dame un numero 8 dame un numero 1 dame un numero 2 dame un numero 5

MIA Rosario Aldana Franco

112

FIME
dame un numero 9 dame un numero 4 dame un numero 3 dame un numero 7 dame un numero 9 dame un numero 10 dame un numero 11 dame un numero 0 dame un numero 4 dame un numero 2 dame un numero 6 dame un numero 8 dame un numero 9 dame un numero 0 dame un numero 2 dame un numero 3

Manual bsico de MatLab

La tabla es: 2 2 9 6 4 5 10 8 5 9 11 9 7 4 0 0 8 3 4 2 1 7 2 3

5.4 Funciones
Tambin pueden programarse funciones. La primera instruccin de un fichero que contenga una funcin de nombre fun debe ser:

function [argumentos de salida]=fun(argumentos de entrada)


Es conveniente que el fichero que contenga la funcin se llame como ella; as, la funcin anterior debera guardarse en el fichero fun.m; por ejemplo, si se desea programar una funcin que calcule, mediante el algoritmo de Euclides, el mximo comn divisor de dos nmeros naturales, basta escribir un fichero euclides.m cuyo contenido sea:

function m=euclides(a,b) % Clculo del mximo comn divisor de dos nmeros naturales % mediante el algoritmo de Euclides if a<b c=b; MIA Rosario Aldana Franco 113

FIME b=a; a=c; end while b>0 c=rem(a,b); a=b; b=c; end m=a;

Manual bsico de MatLab

Si, una vez escrito el fichero anterior, en el espacio de trabajo o en un programa se escribe la instruccin:

mcd=euclides(33,121)
en la variable mcd se almacenar el valor 11. Las variables de una funcin son siempre locales. Por tanto, aunque en el seno de la funcin se modifiquen los argumentos de entrada, el valor de las variables correspondientes queda inalterado. Por ejemplo, en la funcin euclides.m se modifica el valor de los argumentos de entrada, pero, sin embargo:

>>x=15; >>mcd=euclides(x,3); >>x x = 15


Si se pretende que las modificaciones de un argumento de entrada afecten a la variable correspondiente, deber situarse dicho argumento, adems, en la lista de argumentos de salida. Ejercicios propuestos Los siguientes ejercicios son actividades complementarias que es necesario que realice para reforzar los conocimientos adquiridos acerca de este tema fundamental para el desarrollo del curso. Grupo 1. Formule un algoritmo y represntelo en seudocdigo para resolver cada uno de los problemas planteados a continuacin. 1. Baar a su perro 2. Ir al cine con sus amigos 3. Ir a la escuela 4. Preparar agua de limn 5. Encender una computadora personal 6. Pintar una pared 7. Forrar un libro 8. Preparar una torta 9. Baarse 10.Comprarse zapatos

MIA Rosario Aldana Franco

114

FIME
11.Buscar el nmero de telfono de un compaero 12.Cambiar un foco fundido

Manual bsico de MatLab

Grupo 2. Formule un algoritmo y represntelo en seudocdigo y diagrama de flujo para resolver cada uno de los problemas planteados a continuacin. 1. Multiplicar los nmeros enteros del 1 al 10 2. Calcular el promedio de los nmeros enteros del 1 al 100 3. Sumar los nmeros nones entre 0 y 50 4. Escribir un algoritmo que calcule y escriba el cuadrado de un nmero. 5. Determinar el rea y volumen de un cilindro cuyas dimensiones radio y altura se leen desde el teclado. 6. Calcular el permetro y la superficie de un cuadrado dada la longitud de su lado. 7. Formular un algoritmo que sume dos nmeros suministrados desde el teclado. 8. Calcular la superficie de un crculo 9. Calcular el permetro y la superficie de un rectngulo dadas la base y la altura del mismo 10.Escribir un algoritmo para leer la un nombre de una marca de automviles seguida del nombre de su modelo e informe del modelo seguido del nombre. 11.Determinar la hipotenusa de un tringulo rectngulo a partir de las longitudes de sus catetos. 12.Disear un algoritmo que transforme una temperatura en C a F. (F=(9/5)C+32) 13.Formular un algoritmo que calcule el rea de un tringulo en funcin de las longitudes de sus lados. 14.Formular un algoritmo que convierta metros a pies y pulgadas 15.Formular un algoritmo que realice la conversin de divisas de pesos mexicanos a dlares y viceversa, teniendo en cuenta el tipo de cambio vigente en el momento de la conversin. 16.Calcular la media de una serie de nmeros positivos, suponiendo que los datos se leen desde una terminal. Un valor de cero (como entrada) indicar que se ha alcanzado el final de la serie de nmeros positivos. 17.Suma de los nmeros pares comprendidos entre 2 y 100 18.Clculo de los salarios mensuales de los empleados de una empresa, sabiendo que stos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por hora. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarn a razn de 1.5 veces la hora ordinaria. 19.Contar la cantidad de ceros que existen en una serie de 100 nmeros suministrados por teclado (Utilice la serie 5 3 0 2 4 4 0 0 2 3 6 0 2 para probar) 20.Dados tres nmeros, determinar si la suma de cualquier pareja de ellos es igual al tercer nmero. Si se cumple esta condiciones escribir Iguales y, en caso contrario, escribir Distintas 21.Se desea calcular el salario neto semanal de un trabajador en funcin del nmero de horas trabajadas y la tasa de impuestos: Las primeras 35 horas se pagan a tarifa normal Las horas que pasen de 35 se pagan a 1.5 veces la tarifa normal Las tasas de impuestos son: a) Los primeros 6000 pesos son libres de impuestos b) Los siguientes 4000 pesos tienen un 25% de impuestos c) Los restantes a un 45% de impuestos La tarifa horaria es 80 pesos

MIA Rosario Aldana Franco

115

FIME

Manual bsico de MatLab

22.Si se desea obtener el salario neto de un trabajador conociendo el nmero de horas trabajadas, el salario hora y la tasa de impuestos que se le debe deducir. 23.Calcular la suma de los nmeros de 1 a 100 24.Un corredor de maratn (42.195 Km) ha realizado la carrera en 2 horas 25 minutos, Cul es la velocidad promedio a la que realiz la carrera? 25.Formular un algoritmo para intercambiar los valores de dos variables numricas. 26.Calcular el rea de un tringulo dada la base y la altura. Grupo 3. Deducir los resultados que se obtienen de los siguientes algoritmos. 27 Var entero: x, y, z Inicio X 5 Y 20 Z X+Y Escribir (X, Y) Escribir (Z) Fin 28 Var entero: NX, DOBLE Inicio NX 25 DOBLEY NX * 2 Escribir (NX) Escribir (DOBLE) Fin Grupo 4: Desarrolle los siguientes ejercicios usando los principios de la Programacin Estructurada, revisados en este captulo. 29.Calcular el factorial de un nmero N utilizando la estructura FOR 30.Imprimir las treinta primeras potencias de 4, es decir, 4 elevado a 1, 4 elevado a 2, etc. 31.Calcular la suma de los n primeros nmeros enteros utilizando la estructura FOR 32.Disear el algoritmo para imprimir la suma de los nmeros impares menores o iguales que n. 33.Dados dos nmeros enteros, formular el algoritmo que calcule su cociente y su residuo. 34.Formular el algoritmo para obtener la suma de los nmeros pares entre 0 y 1000 35.Buscar y escribir la primera vocal leda del teclado (se leen los caracteres uno a uno desde el teclado). 36.Leer dos nmeros y deducir si estn en orden creciente.

MIA Rosario Aldana Franco

116

FIME
inferior a 100.

Manual bsico de MatLab

37. Se desea leer desde el teclado una serie de nmeros hasta obtener un nmero 38. Escribir un algoritmo que permita escribir en una pantalla Desea continuar? S/N hasta que la respuesta sea S o N. 39.Leer sucesivamente nmeros del teclado, hasta que aparezca un nmero comprendido entre 1 y 5. 40.Calcular el factorial de un nmero n con una estructura que no sea FOR. 41.Calcular el valor mximo de un conjunto de 100 nmeros. 42.Se dispone de una lista de N nmeros, se desea calcular el valor del nmero mayor. 43.Determinar simultneamente los valores mximo y mnimo de una lista de 100 nmeros. 44.Se dispone de un cierto nmero de valores de los cuales el ltimo es el 999 (no se procesa, es el final de la lista) y se desea determinar el valor mximo de las medias correspondientes a parejas de valores sucesivos. 45.Formular un algoritmo que permita detectar, en un conjunto de N nmeros, cules no son enteros. 46.Determinar el costo del boleto de pasaje de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y sabiendo que si el nmero de das de estancia es superior a 7 y la distancia superior a 800 km el billete tiene una reduccin del 30%. El precio por km es de 25 pesos. 47.Se tienen las calificaciones de los alumnos del curso de Programacin de la FIMEXalapa, correspondientes a tres exmenes (2 parciales y 1 final). Disear un algoritmo que calcule la media de cada alumno. 48.Los empleados de una fbrica trabajan en dos turnos: diurno y nocturno. Se desea calcular el salario diario de acuerdo con las siguientes condiciones: La tarifa de las horas diurnas es $10 La tarifa de las horas nocturnas es de $15 En caso de ser domingo, la tarifa se incrementa $2 el turno diurno y $3 el turno nocturno.

49.Formular un algoritmo que escriba los das de la semana, en funcin de la entrada correspondiente a la variable DIA. 50.Formular un algoritmo que escriba los N primeros nmeros de la serie de Fibonacci (La serie de Fibonacci es 1,1,2,3,4,8,13, ... )

MIA Rosario Aldana Franco

117

FIME
51.Calcule la suma y el producto de dos nmeros

Manual bsico de MatLab

52.Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la hora de trabajo y, considerando unos descuentos fijos, el sueldo bruto descontando los impuestos a razn del 20%. 53.Resolucin de una ecuacin de primer grado (ax + b = 0). 54.Calcular la media aritmtica de una serie de nmeros positivos. 55.Se desea obtener la nmina semanal (salario neto) de los empleados de una empresa cuyo trabajo se paga por horas y del modo siguiente: Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada que se debe introducir por teclado al igual que el nmero de horas y el nombre del trabajador. Las horas superiores a 35 se pagarn como extras al precio de 1.5 horas normales. Los impuestos a deducir a los trabajadores varan en funcin de su sueldo mensual: - sueldo <= 10,000 libre de impuestos - los siguientes 7,500 pesos al 20% - el resto al 30%

56.Determinar si un nmero es entero o no. 57.Un ao ledo del teclado es bisiesto? 58.Formular un algoritmo que calcule el rea de un tringulo conociendo sus lados. 59.Se desea convertir las calificaciones alfabticas A, B, C, D y E a calificaciones numricas 10, 8, 6, 4, respectivamente. 60.Formule un algoritmo para determinar sin un nmero entero, ledo del teclado, tiene 1,2, 3 o ms dgitos 61.Se desea leer por teclado un nmero comprendido entre 1 y 10 (inclusive) y se desea visualizar si el nmero es par o impar. 62.Contar los nmeros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero negativo o cero. 63.Escribir los nmeros del 1 al 100 64.Es muy frecuente realizar validacin de datos. Formule un algoritmo que detecte cualquier entrada comprendida entre 1 y 12, rechazando las restantes, ya que se trata de leer los nmeros correspondientes a los meses del ao.

MIA Rosario Aldana Franco

118

FIME

Manual bsico de MatLab

65.Formule un algoritmo para calcular el salario de un grupo de trabajadores, cuyos datos se proporcionan a travs del teclado. Se sabe que las horas de jornada normal se pagan a 20 pesos cad hora y las extraordinarias a 25 pesos mientras no excedan de 10. Si las horas extraordinarias sobrepasan a 10, el exceso se pagar a 23.5 pesos. La introduccin de los datos concluir cuando se escriba * como nombre del trabajador. 66.Formular un algoritmo para determinar si un nmero entero ledo desde el teclado es o no primo. 67.Formule un algoritmo para determinar el nmero de alumnos reprobados, de un total de 40, a partir de las notas de 3 exmenes proporcionadas desde el teclado. 68.Formule un algoritmo para descomponer un nmero, ledo desde el teclado, en sus factores primos. 69.Desarrolle un algoritmo para leer un nmero entero positivo y lo escriba invertido. 70.Dado un capital C, que se coloca en una cuenta bancaria a un inters anual R, averiguar al cabo de cuntos aos se doblar. 71.Formular un algoritmo que permita calcular las soluciones de una ecuacin de segundo grado, incluyendo los valores imaginarios. 72.Formular un algoritmo que convierta horas a minutos y segundos. 73.Imprimir todos los nmeros entre 2 y 100 74.Determinar la media de una lista indefinida de nmeros positivos, terminados con un nmero negativo. 75.Dado el nombre o nmero de un mes y si el ao es bisiesto, deducir el nmero de das del mes. 76.Determinar la media de una lista de nmeros positivos terminada con un nmero no positivo despus del ltimo nmero vlido. 77.Imprimir todos los nmeros primos entre 2 y 1000. 78.Se desea leer las calificaciones de una clase de programacin y contar el nmero total de aprobados (6 y mayores). 79.Leer todas las notas de una clase de programacin y deducir todas aquellas que son NOTABLES (>=7 y <9) 80.Leer 100 nmeros. Determinar la media de los nmeros positivos y la media de los nmeros negativos. 81.Se pretende leer la edad de todos los empleados de una empresa y a la terminacin se debe visualizar cuntos trabajadores son mayores de 65 aos.

MIA Rosario Aldana Franco

119

FIME

Manual bsico de MatLab

82.Averiguar si dados 2 nmeros ledos del teclado, uno es divisor del otro. Dado un entero positivo n, comprobar si es primo o compuesto

MIA Rosario Aldana Franco

120

Potrebbero piacerti anche