Logo Studenta

Grado_en_Ingenieria_Industrial_GUION_DE

¡Este material tiene más páginas!

Vista previa del material en texto

Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 1 
 
Tabla de contenido 
Introducción .................................................................................................................................. 2 
Estructuras secuenciales ............................................................................................................... 2 
Asignación ................................................................................................................................. 2 
Entrada de datos básica ............................................................................................................ 3 
Salida de datos básica ............................................................................................................... 4 
Estructuras condicionales o de selección ...................................................................................... 7 
Selección Simple ........................................................................................................................ 7 
Selección Múltiple ..................................................................................................................... 8 
Estructuras repetitivas o cíclicas ................................................................................................... 9 
Ciclo Fijo o contado ................................................................................................................... 9 
Ciclo condicional...................................................................................................................... 10 
Recuerda ..................................................................................................................................... 11 
Ejercicios ...................................................................................................................................... 12 
 
 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 2 
 
INTRODUCCIÓN 
 
El lenguaje de programación de Matlab permite las estructuras de control típicas de los 
lenguajes estructurados: 
 
• Estructuras secuenciales. 
• Estructuras condicionales o de selección. 
• Estructuras repetitivas o cíclicas. 
 
A continuación pasaremos a describir cada una de ellas junto con ejemplos de su utilización. 
 
 
ESTRUCTURAS SECUENCIALES 
 
Las estructuras de control secuencial son aquellas en las que las instrucciones se ejecutan una 
a continuación de otra en el orden en el que están escritas. Existen tres estructuras de control 
secuencial como son la operación de asignación, operación de entrada de datos y la de salida 
de datos. 
 
Asignación 
La operación de asignación (=) permite ir cambiando el valor de las variables que utiliza el 
programa. Este operador se ha comentado en la práctica anterior, y su sintaxis es la siguiente: 
 
 
 
Donde el valor que representa la expresión se almacenará en la variable. 
 
La operación de asignación es destructiva, es decir, la variable pierde el valor que tuviera 
almacenado. Esto determina que hay veces en las que el orden en que se realice la asignación 
es importante. 
 
Ejemplo. Supongamos las siguiente secuencia de asignaciones: 
x = 6; 
y = 9; 
z = 12; 
x = y; 
y = z; 
 
Tras la ejecución de las mismas, comprobad que los valores finales para las variables son: 
x = 9; 
y = 12; 
z = 12; 
 
Si cambiamos el orden de ejecución de la siguiente forma: 
x = 6; 
y = 9; 
z = 12; 
y = z; 
<identificador> = <expresión>; 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 3 
 
x = y; 
 
Comprobemos que ahora el resultado cambia: 
x = 12; 
y = 12; 
z = 12; 
 
Entrada de datos básica 
Una de las instrucciones básicas de Matlab para la entrada o lectura de datos desde el teclado 
es la siguiente: 
 
 
 
Dicha instrucción muestra en pantalla el texto escrito en la misma y a continuación el cursor 
permanece en espera para que introduzcamos un valor a través del teclado. Tecleamos el valor 
que queramos introducir y al pulsar la tecla intro, dicho valor se almacena en la variable 
indicada a la izquierda de la asignación. 
 
Ejemplo. Tecleemos la siguiente instrucción: 
>> lado = input(‘Introduce el tamaño del lado: ’); 
 
Se mostrará en pantalla el mensaje y el cursor queda esperando que tecleemos un valor: 
Introduce el tamaño del lado: 
 
Si pulsamos 45 y luego intro: 
>> Introduce el tamaño del lado: 45 
 
A la variable lado se le asigna el valor que hemos introducido: 
>> lado = 
 45 
 
Si el valor que queremos introducir es un carácter o cadena de caracteres, podemos hacerlo de 
dos formas: 
 
1. Usando la misma instrucción input, pero el valor que introducimos lo escribimos entre 
comillas. 
 
Ejemplo. Tecleemos la siguiente instrucción: 
>> nombre = input(‘Introduce el nombre de la asignatura: ’); 
 
Se escribirá en pantalla el mensaje y el cursor queda esperando que tecleemos un valor: 
Introduce el nombre de la asignatura: 
 
 
Ahora pulsamos I for ática : 
>> Introduce el nombre de la asignatura: ‘Informática’ 
 
Y a la variable nombre se le asigna dicha cadena 
>> nombre = 
<identificador> = input ( te to ); 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 4 
 
 Informática 
2. Añadiendo un parámetro más a la función input: <identificador> = i put ( te to , s ); 
Ejemplo. Tecleemos la siguiente instrucción: 
>> nombre= input(‘Introduce el nombre de la asignatura: ’,’s’); 
 
Se escribirá en pantalla el mensaje y el cursor queda esperando que tecleemos un valor: 
Introduce el nombre de la asignatura: 
 
Ahora tecleamos Informática (sin comillas) y pulsamos intro: 
>> Introduce el nombre de la asignatura: Informática 
 
Y a la variable nombre se le asigna dicha cadena: 
>> nombre = 
 Informática 
 
Se pueden introducir también listas de números. Para ello debemos dar los números 
separados por comas o espacios en blanco y entre corchetes, y toda la lista se almacenará en 
la variable puesta en la instrucción input. 
Ejemplo. Tecleamos la siguiente instrucción: 
>> lista= input(‘Introduce la secuencia de números: ’); 
 
Se escribirá en pantalla el mensaje y el cursor queda esperando que tecleemos un valor: 
Introduce la secuencia de números: 
 
Ahora tecleamos [1, 2, 7] y pulsamos intro: 
>> Introduce la secuencia de números: [1, 2, 7] 
 
Y a la variable lista se le asigna la lista de valores [1, 2, 7] 
>> lista = 
 1 2 7 
 
Salida de datos básica 
Una de las instrucciones básicas de Matlab para la salida o escritura de datos en pantalla es la 
siguiente: 
 
 
 
 
Dicha instrucción muestra en pantalla el resultado de evaluar la expresión dada como 
argumento o el texto dado entre comillas. 
 
Ejemplo. Si tecleamos lo siguiente: 
>> area= 12; 
>> disp(‘El área es ’), disp(area); 
 
Se escribe en pantalla: 
 
disp (<expresión>); 
disp ( te to ); 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 5 
 
>>El área es 
 12 
 
En la instrucción también se pueden concatenar salidas de tipo cadena. 
 
Ejemplo. 
>> nombre=’Juan’; 
>> disp([‘Hola ’,nombre]); 
 
se escribe en pantalla: 
>> Hola Juan 
 
Si queremos concatenar con datos de tipo numérico, previamente se han de transformar a 
cadena mediante la función num2str. 
 
Ejemplo. Si tecleamos: 
>> area= 12; 
>> disp([‘El área es ’,num2str(area)]); 
 
Se escribe en pantalla lo siguiente: 
 
>>El área es 12 
 
También se puede utilizar en Matlab, una instrucción de salida de datos con un formato similar 
al usado en el lenguaje de programación C: 
 
fprintf(‘texto %control1,%control2,...’, variable1, variable2,..) 
 
Ejemplo. Escribamos en pantalla: 
>> area= 12; 
>> fprintf(‘El área es %i’, area); 
 
Y se escribe en pantalla: 
>>El área es 12 >> 
 
Si añadimos \n se produce un salto de línea: 
>> fprintf(‘Elárea es %i \n’, area); 
 
Ahora se muestra el mensaje y el cursor pasa a la línea siguiente: 
>>El área es 12 
>> 
 
 
Los controles representan los diferentes tipos de datos: 
 
Control Tipo 
%i, %d Entero 
%c Carácter 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 6 
 
%f Real 
%s Cadena de caracteres 
 
Con los tres tipos de estructura secuencial vistos, asignación, entrada y salida de datos, se 
pueden resolver ciertos tipos de problemas, algo más complejos que los que hemos visto hasta 
ahora. 
 
A continuación vamos a plantear algunos problemas y mostraremos el programa que los 
resuelve utilizando las estructuras vistas. En los programas vamos a introducir comentarios 
que aclaren el problema resuelto. 
 
 
Ejemplo. Dado el radio de una circunferencia implementa un programa que calcule el 
perímetro de la misma. 
 
% Programa Calculo_perimetro 
% Entradas: el radio de una circunferencia 
% Salidas: el perímetro de la circunferencia 
% Constantes pi=3,1416 
% Variables : radio, perimetro: REAL 
 
% Instrucciones del Programa 
 radio=input(‘Introduce la medida del radio: ’); 
 perimetro=2*pi*radio; 
 disp(‘El perímetro de la circunferencia mide ’); 
 disp(perimetro); 
 
Ejemplo. Dado el tamaño del lado de un cuadrado implementa un programa que calcule su 
área. 
% Programa Area_cuadrado 
% Entradas: el tamaño del lado de un cuadrado 
% Salidas: el área del cuadrado 
% Variables : lado, area: REAL 
 
% Instrucciones del Programa 
 lado= input(‘Introduce la medida del lado: ’); 
 area=lado^2; 
 disp(‘El área es ’); 
 disp(area); 
 
Ejercicio. Realiza un programa que pida el valor de 3 artículos y muestre el total y la media. 
Intenta formatear el resultado para que se muestren los valores con dos decimales. 
 
Ejercicio. En un hospital existen tres áreas: Ginecología, Pediatría y Traumatología. El 
presupuesto anual del hospital se reparte conforme a la siguiente tabla. Área Porcentaje del 
presupuesto: 
a. Ginecología 40% 
b. Traumatología 30% 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 7 
 
c. Pediatría 30% 
Para un presupuesto dado, obtener la cantidad de dinero que recibirá cada área. 
ESTRUCTURAS CONDICIONALES O DE SELECCIÓN 
 
Las estructuras de control condicionales o de selección permiten decidir qué conjuntos de 
instrucciones ejecutar en función de la evaluación de una expresión. 
Selección Simple 
Esta estructura abre dos posibles caminos de ejecución ante la evaluación de una expresión 
lógica. Su sintaxis en Matlab es la siguiente: 
 
 
 
 
 
Se evalúa la expresión lógica y si el valor es VERDAD se ejecuta el bloque de instrucciones 1, 
mientras que si el valor es FALSO se ejecuta el bloque de instrucciones 2, aunque tengamos en 
cuenta que la parte else (el camino de ejecución cuando la condición es FALSA) es opcional. 
Ejemplo. Queremos implementar un programa que dado un número devuelva el valor 
absoluto del mismo. 
 
% Programa Absoluto 
% Entradas: un número 
% Salidas: el valor absoluto de dicho número 
% Variables : num, absoluto: REAL 
 
% Instrucciones del Programa 
 num=input(‘Introduce un número: ’); 
 absoluto=num; 
 if (absoluto<0) 
 absoluto=-absoluto; 
 end 
 disp(‘El valor absoluto es ’); 
 disp(absoluto) 
 
 
Ejercicio. Implementa un programa que lea tres números y determine cuál es mayor de los 
tres. 
 
Ejercicio. Implementa un programa que lea un número entero y determine si es par o impar. 
 
 
if (expresión lógica) 
 <Bloque instrucciones 1> 
else 
 <Bloque instrucciones 2> 
end 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 8 
 
Selección Múltiple 
Esta estructura de selección múltiple abre varios caminos de ejecución en función del valor 
que tome una expresión. Su sintaxis en Matlab es: 
 
 
 
 
 
 
 
 
 
 
 
Se compara el valor de la expresión con todos los literales empezando por el primero. En el 
momento en que sus valores coincidan, se ejecuta el bloque de instrucciones correspondiente 
y se para el proceso. Si el valor de la expresión no coincide con ninguno de los literales, se 
ejecuta el bloque de instrucciones por defecto, parte otherwise, aunque es opcional. 
 
Ejemplo. Queremos implementar un programa que simule una calculadora capaz de sumar, 
restar, multiplicar o dividir dos números dados por teclado. 
 
% Programa Calculadora 
% Entradas: dos números y el operador 
% Salidas: el resultado de aplicar el operador leído a los números 
% Variables : a, b, res: REAL; op: CARACTER 
 
% Instrucciones del Programa 
 a=input(‘Introduce el primer operando: ’); 
 b=input(‘Introduce el segundo operando: ’); 
 op=input(‘Introduce el operador: ’,’s’); 
 
 switch (op) 
 case ‘+’ 
 res=a+b; disp(res) 
 case ‘-’ 
 res=a-b; disp(res) 
 case ‘*’ 
 res=a*b; disp(res) 
 case ‘/’ 
 res=a/b; disp(res) 
 otherwise 
 disp(‘El operador no es válido’); 
 end 
 
switch (expresión) 
 case <literal 1> 
 <Bloque 1> 
 case <literal 2> 
 <Bloque 2> 
 …. 
 case {<literal n>, <literal n>,… } 
 <Bloque n> 
 otherwise 
 <Bloque por defecto> 
end 
 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 9 
 
 
Ejercicio. Resuelve la siguiente función definida por intervalos: 
 
 f(x) = 1 si x= 0 
 4 si x= 1 
 2x+2 en otro caso 
 
Ejercicio. Implementa un programa que dada una fecha (día, mes y año) determine si es 
válida o no. Suponemos que la fecha es válida si el día es válido según el mes, el mes está en 
el intervalo (1, 12) y el año es positivo. Consideramos que un año es bisiesto cuando sea 
múltiplo de 4. 
ESTRUCTURAS REPETITIVAS O CÍCLICAS 
 
Las estructuras repetitivas permiten que un conjunto de instrucciones se ejecute varias veces. 
Vamos a ver dos tipos de estructuras repetitivas, una en la que el número de veces que se 
ejecutan las instrucciones queda determinado al construirla y otro tipo en el que el número de 
ejecuciones depende de la evaluación de una expresión lógica. 
Ciclo Fijo o contado 
Este ciclo ejecuta un conjunto de instrucciones un determinado número de veces que se 
prefija al construir el ciclo. Su sintaxis en Matlab es: 
 
 
 
 
 
 
 
 
 
 
 
 
Si se toma la primera forma del ciclo, la variable de control toma el valor inicial y si no 
sobrepasa el valor final, se ejecuta el bloque de instrucciones y pasa a incrementarse en el 
valor dado por el incremento. Esto se repite hasta que el valor de la variable sobrepasa el valor 
final. Si en la parte de incremento no se escribe el valor de incremento, la variable se 
incrementará de 1 en 1 cada vez que el cuerpo se ejecute. 
 
Si la variable se iguala a una lista o secuencia de valores, el ciclo se ejecuta tantas veces como 
valores haya en la lista y en cada ejecución la variable va tomando el siguiente elemento de la 
lista. 
 
for variable = lista 
 <Bloque instrucciones> 
end 
 
 valorInicial : [valorIncremento ] : valorFinal 
Iista 
 [valor , valor , …] 
 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 10 
 
 
Ejemplo. Queremos implementar un programa que dado un número entero imprima la tabla 
de multiplicar de dicho número. 
 
% Programa TablaMultiplicar 
% Entradas: un número entero 
% Salidas: la tabla de multiplicar del número dado como entrada 
% Variables : num, i: ENTERO 
% Instrucciones del Programa 
 
 num=input(‘Introduce un número entero: ’); 
 for i=1:10 
 disp([num2str(num),’*’, num2str(i),’=’, num2str(num*i)]) ; 
 end 
 
Ejemplo. Implementa un programa que calcule el cuadrado de tres números leídos por 
teclado. 
 
% Programa Cuadrados 
% Entradas: tres números 
% Salidas: el cuadrado de los números leídos 
% Variables: numeros, i, cuadrado: ENTERO 
 
% Instrucciones del Programa 
 numeros=input(‘Introduce la lista de números: ’); 
 for i=numeros 
 cuadrado=i^2; 
 disp(cuadrado) ; 
 end 
 
Ejercicio. Existen muchos métodos capaces de proporcionar aproximaciones numéricas de π. 
Uno de ellos es el siguiente: 
1
2
6
=i i
=π
 
Crea un programa que lea el grado de aproximación (número de términos de la sumatoria) y 
devuelva un valor aproximado de π. 
 
Ciclo condicional 
El ciclo condicional ejecuta un conjunto de instrucciones un número de veces variable, el 
número de veces depende de una expresión lógica. Su sintaxis en Matlab es: 
 
 
 
 
 
 
El bloque de instrucciones se ejecuta mientras la expresión lógica sea verdadera. 
while (expresión lógica) 
 <Bloque instrucciones> 
end 
 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 11 
 
 
Ejemplo. Queremos implementar un programa que dado un número entero positivo nos diga 
si el número es o no primo. 
 
% Programa Primo 
% Entradas: un número entero positivo 
% Salidas: mensaje indicando si el número leído es o no primo 
% Variables : num, i: ENTERO; es: LOGICO 
 
% Instrucciones del Programa 
 num=input(‘Introduce un número entero positivo: ’); 
 es=true; % empezamos suponiendo que es primo 
 i=2; 
 while (i<num && es) 
 if (mod(num,i)==0) % si es divisible ya no es primo 
 es=false; 
 else i=i+1; 
 end 
 end 
 if es 
 disp(‘El número es primo’) ; 
 else disp(‘El número no es primo’) ; 
 end 
 
Ejercicio. Escribe un programa que calcule el valor de S para un número real X dado, 
utilizando la siguiente serie: 
+
!
X
+
!
X
+
!
X
+X+=S
432
1
432
 
 El valor de S se calculará hasta que la diferencia absoluta entre dos términos consecutivos sea 
menor que 0.0001. 
RECUERDA 
 Cuando implementamos un programa es aconsejable incluir comentarios, al menos 
indicando sus entradas y sus salidas. De esta forma al abrirlo veremos rápidamente el 
problema que resuelve. 
 En Matlab el operador = se utiliza para asignar valores a variables. 
 Podemos usar la instrucción input() para asignar desde el teclado un valor a una 
variable. 
 Para mostrar resultados en pantalla podemos utilizar la instrucción disp(). 
 Cuando queremos seleccionar entre distintos caminos de ejecución utilizaremos las 
estructuras condicionales, if-else y switch. 
 Para repetir conjuntos de instrucciones utilizaremos las estructuras de control cíclicas, 
for y while. 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 12 
 
EJERCICIOS 
Queremos conocer los datos estadísticos de una consulta médica de 3 doctores. 
Necesitamos saber cuántos pacientes han pedido cita para el Doctor1, el Doctor2 y el 
Doctor3. Además, necesitamos preguntar cuál es el precio de la consulta para el 
Doctor1, el Doctor2, y el Doctor3. Una vez introducidos estos datos, calcular y devolver 
al usuario los resultados de calcular: 
a) El tanto por ciento de pacientes que han ido a cada uno de los doctores. 
b) La cantidad de dinero que ha ganado cada doctor. 
c) La media de dinero que gana cada doctor por paciente en la clínica en general. 
1. Un equipo de futbol ha tenido una buena campaña y desea premiar a sus jugadores con 
un aumento del salario para la siguiente campaña. Los sueldos deben ajustarse de la 
siguiente forma: 
Sueldo actual  Aumento correspondiente 
 0-6.000  20% 
 6.000-7.900 10% 
 7.900-12.000 5% 
 más de 12.000  0% 
Diseñar un algoritmo que lea el salario de un jugador y que a continuación muestre el 
tanto por ciento de aumento, el sueldo actual y el sueldo aumentado. 
 
2. Diseñar un algoritmo para leer los dos conjuntos de coeficientes (a, b, c, y d, e, f) del 
siguiente sistema de ecuaciones, e imprimir los valores que son solución para x e y: 
ax + by = c 
dx + ey = f 
 puede resolverse utilizando las siguientes fórmulas: 
x
ce bf
ae bd
 y
af cd
ae bd
 
Diseñar un algoritmo para leer los coeficientes a, b, c, d, e, f, y calcular los valores de x e 
y. Hay que tener en cuenta aquellos casos que no tienen solución, esto ocurre cuando 
las rectas representadas por las ecuaciones son paralelas (la solución al sistema de 
ecuaciones es el punto donde se cortan las dos rectas). 
 
3. Escribe un programa que calcule la letra del NIF a partir del número del DNI que se pida 
por pantalla. La letra se obtiene calculando el resto de la división del número del DNI por 
23. A cada resultado le corresponde una letra: 0=T; 1=R; 2=W; 3=A; 4=G; 5=M; 6=Y; 7=F; 
8=P; 9=D; 10=X; 11=B; 12=N; 13=J; 14=Z; 15=S; 16=Q; 17=V; 18=H; 19=L; 20=C; 21=K; 
22=E. 
 
4. Diseñar un algoritmo que lea las longitudes de los tres lados de un triangulo (L1, L2, L3) y 
determine qué tipo de triangulo es, de acuerdo a los siguientes casos. Suponiendo que A 
determina el mayor de los tres lados y B y C corresponden con los otros dos, entonces: 
 Si A>=B + C No se trata de un triángulo 
 Si A2 = B2 + C2 Es un triangulo rectángulo 
 Si A2 > B2 + C2 Es un triangulo obtusángulo 
Grado en Ingeniería Industrial GUIÓN DE PRÁCTICAS 2: ESTRUCTURAS DE CONTROL 
 
 13 
 
 Si A2 < B2 + C2 Es un triangulo acutángulo 
5. Pide al usuario el día del mes en el que estamos y en qué día empezó dicho mes, es decir 
que diga si fue lunes, martes, miércoles, jueves, viernes, sábado o domingo. Entonces 
devolverá el día de la semana en que estamos. Por ejemplo, si el usuario dice que hoy es 
día 10 y el mes empezó en lunes, entonces el sistema devolverá: Miércoles. Si el usuario 
dice que hoy es día 23 y el mes empezó en jueves, entonces el sistema devolverá que 
hoy es viernes. Observación: En este ejercicio se requiere usar dos estructuras switch, 
una para decidir el desplazamiento dependiendo del día de la semana, y otra para 
devolver la respuesta dependiendo del resto. 
 
6. Implementa un programa que muestre por pantalla los cuadrados de los 100 primeros 
números enteros positivos. Modifícalo para que muestre también la suma de dichos 
valores. 
 
7. Implementa un programa que calcule el factorial de un número entero positivo si éste 
está e el ra go … . Si el ú ero o está e di ho ra go el progra a de e i di arlo 
volver a pedir otro número hasta que sea válido para realizar el cálculo. 
 
8. Implementar un programa que lea n notas y calcule la nota media. 
 
9. Implementa un programa que calcule la suma de los siguientes 100 términos de la serie: 
1 - 1/2 + 1/4 - 1/6 + 1/8 - 1/10 + 1/12 - ... 
 
10. Implementa un programa que calcule el producto de dos números enteros positivos sin 
utilizar el operador producto, es decir, que tenemos que resolverlo a base de sumas.

Continuar navegando

Contenido elegido para ti

131 pag.
45 pag.
Programacion Estructurada

SIN SIGLA

User badge image

Vanina Gisele Beguiristain

251 pag.
189 pag.
lenguajec_UNRN_lectura

User badge image

Michel Matías

151 pag.

Otros materiales