fundamentos de informáticamatematicaaplicada.jezasoft.co/jeza/material_de...la construcción del...

27
Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 9 3/12/08 1 Fundamentos de Informática Parte III – Programación en Matlab Titulación: Ingeniería Técnica Industrial – Química Industrial Profesor: José Luis Esteban Escuela Superior de Ciencias Experimentales y Tecnología (ESCET) Universidad Rey Juan Carlos Curso académico 2008-2009

Upload: others

Post on 27-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 93/12/08 1

Fundamentos de InformáticaParte III – Programación en Matlab

Titulación: Ingeniería Técnica Industrial – Química IndustrialProfesor: José Luis Esteban

Escuela Superior de Ciencias Experimentales y Tecnología (ESCET)

Universidad Rey Juan Carlos

Curso académico 2008-2009

Page 2: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 93/12/08 2

Tema 9 – Sentencias de Selección

9.1. Las sentencias de selección9.2. La sentencia de selección IF9.3. La sentencia de selección SWITCH

Page 3: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 93/12/08 3

Tema 9.1.

Las sentencias de selección

Page 4: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 4

Las sentencias de selección (1/2)

●Hasta ahora, las instrucciones de nuestros programas se ejecutan de forma secuencial una sola vez y en el orden en que se han escrito Instruccion1 Instruccion2 Instruccion3 ... InstrucciónN

●Las sentencias de selección permiten seleccionar la ejecución de actividades dependiendo de si se cumple o no una condición dada, es decir, alteran el orden secuencial de ejecución y controlan el flujo del programa

Page 5: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 5

Las sentencias de selección (2/2)

●Ejemplo: SI en el examen de mañana apruebo, haré las maletas me iré de vacaciones SI NO me quedaré en casa estudiaré para el examen de septiembre

●En lenguaje Matlab, estas estructuras tiene una sintaxis propia y permiten elegir qué sentencias se van a ejecutar dependiendo de que se cumpla la condición especificada.

Page 6: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 93/12/08 6

Tema 9.2.

La sentencia de selección IF

Page 7: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 7

La construcción del bloque IF

●Sintaxis: La estructura de este bloque es: if expresión lógica

secuencia de instruccionesend

●Semántica: 1. Se evalúa expresión lógica

El resultado puede ser verdadero (1) o falso (0)2. Si es verdadero (1),

se ejecuta secuencia de instrucciones y después se siguen ejecutando las instrucciones que siguen al end

3. Si es falso (0),se siguen ejecutando las instrucciones que siguen al end

Page 8: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 8

La construcción del bloque IF - Diagrama

Secuencia de instrucciones

verdadero falso

end

Sentencia común

ExpresiónLógica

Page 9: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 9

La construcción del bloque IF - Ejemplo

% RAIZ: calcula la raíz cuadrada si el

% número es positivo. Si no, no hace nada

x = input('Introduce un número: ');

if x > 0

x = sqrt(x);

end

disp(x);

>> raiz

Introduce un número: 4

2

>> raiz

Introduce un número: -4

-4

Page 10: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 10

Expresiones lógicas matriciales● Si la expresión lógica es matricial

➢ el resultado será verdadero cuando lo sea cada elemento del vector lógico resultante.

➢ Si la matriz lógica resultante es vacía, el resultado se trata como falso

● Las construcciones de los dos recuadros son equivalentes:

>> raiz

Introduce un número: [1 2 3 4]

1.0000 1.4142 1.7321 2.0000

>> raiz

Introduce un número: [-1 0 1 2]

-1 0 1 2

if x > 0

instruccionesend

if all(x > 0)

instruccionesend

● Ejemplos utilizando el script raiz:

Page 11: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 11

La construcción del bloque IF general

●Sintaxis: La estructura de este bloque es: if expresión lógica

secuencia de instrucciones 1else secuencia de instrucciones 2end

●Semántica:1. Se evalúa expresión lógica:

El resultado puede ser verdadero (1) o falso (0)2. Si es verdadero, se ejecuta secuencia de instrucciones 1.3. Si es falso, se ejecuta secuencia de instrucciones 2.4. Después se ejecutan la instrucciones que siguen al end.

Page 12: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 12

La construcción del bloque IF general - Diagrama

verdadero falso

end

Sentencia común

ExpresiónLógica

Secuencia deinstrucciones 2

Secuencia deinstrucciones 1

else

Page 13: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 13

La construcción del bloque IF general - Ejemplo

% EsPar: indica si un número es par

n = input('Introduce un número: ');

if mod(n, 2) == 0 disp('par');else disp('impar');end

>> esparIntroduce un número: 3impar>> esparIntroduce un número: 10par

Page 14: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 14

IF anidados

●Es posible anidar estructuras IF generales en ambas ramas:

if exprlog1if exprlog2

secuencia_si1_si2else

secuencia_si1_no2end

elseif exprlog3

secuencia_no1_si3else

secuencia_no1_no3end

end

Page 15: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 15

IF anidados – Ejemplo (1/2)

● Enunciado: dadas las longitudes de tres lados (a, b y c), decidir si forman un triángulo y de qué tipo es:➢ Es triángulo si la suma de dos lados

cualesquiera es mayor que el otro lado➢ Es equilátero si los lados son iguales➢ Es isósceles si dos de los lados son iguales➢ Es escaleno si los tres lados son distintos

Page 16: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 16

IF anidados – Ejemplo (2/2)% Triangulo: determina si tres lados pueden% formar un triangulo, y de que tipo

% Entrada de datosl = input('Vector con los tres lados, de la forma [a b c]: ');% Usamos tres variables por claridad del codigoa = l(1);b = l(2);c = l(3);

% Operaciones y salida de datosif a+b>c && a+c>b && b+c>a % Es triángulo? if a==b && b==c % Todos los lados iguales ? disp('Equilátero'); else if a~=b && b~=c && a~=c % Todos los lados diferentes? disp('Escaleno'); else disp('Isosceles'); end endelse disp('No es un triángulo');end

Page 17: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 17

Nota de estilo – Sangrados

if a+b>c && a+c>b && b+c>a if a==b && b==c disp('Equilátero'); else if a~=b && b~=c && a~=c disp('Escaleno'); else disp('Isosceles'); end endelse disp('No es un triángulo');end

if a+b>c && a+c>b && b+c>aif a==b && b==cdisp('Equilátero');elseif a~=b && b~=c && a~=cdisp('Escaleno');elsedisp('Isosceles');endendelsedisp('No es un triángulo');end

● Los sangrados no son obligatorios pero ayudan a entender un programa.

● Es habitual que cada bloque de instrucciones subordinado vaya desplazado a la derecha con respecto al if-end que lo contiene.

● Compárese la legibilidad del código en estos dos ejemplos:

Page 18: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 18

IF encadenados – elseif (1/2)

● Cuando se comprueba una serie de condiciones excluyentes entre sí, puede producirse un excesivo anidamiento en las ramas else del if.

x = input('Numero par entre 0 y 100: ');

if x < 0 disp('Error: Menor que cero');else if x > 100 disp('Error: Mayor que 100'); else if mod(x, 2) ~= 0 disp('Error: No es par'); else disp('Bravo, por fin'); end endend

Page 19: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 19

IF encadenados – elseif (2/2)

● En este caso es posible encadenar estructuras IF utilizando elseif:

x = input('Num par entre 0 y 100: ');

if x < 0 disp('Error: Menor que cero');else if x > 100 disp('Error: Mayor que 100'); else if mod(x, 2) ~= 0 disp('Error: No es par'); else disp('Bravo, por fin'); end endend

x = input('Num par entre 0 y 100: ');

if x < 0

disp('Error: Menor que cero');

elseif x > 100

disp('Error: Mayor que 100');

elseif mod(x, 2) ~= 0

disp('Error: No es par');

else

disp('Bravo, por fin');

end

Page 20: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

Ingeniería Técnica Industrial (Química) 2008-09 - "Fundamentos de Informática" - Tema 93/12/08 20

Tema 9.3.

La sentencia de selección SWITCH

Page 21: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 21

SWITCH

●Se utiliza para determinar la ejecución de una secuencia de instrucciones entre múltiples alternativas.

●La secuencia de instrucciones a ejecutar se selecciona en función del resultado de evaluar una expresión criterio que puede tomar una colección predefinida de valores numéricos o cadenas de caracteres.

Page 22: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 22

SWITCH – Sintaxis (1/2)

switch criteriocase valor1

Secuencia sentencias 1case valor2

Secuencia sentencias 2...case valorN

Secuencia sentencias Notherwise

Secuencia sentencias N+1end

Page 23: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 23

SWITCH – Sintaxis (2/2)

●Criterio puede ser una expresión de tipo numérico o cadena de caracteres➢ Conviene evitar expresiones que produzcan números reales

porque el error de redondeo puede hacer que el resultado nunca coincida con un valor especificado en un case.

●Cada uno de los valor i es uno o más valores posibles que puede tomar el criterio.

●La forma de estos valores puede ser:➢Un único valor➢Una lista de valores entre llaves {v1, v2, v3...}

Page 24: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 24

SWITCH – Semántica

●Se evalúa la expresión criterio●Si el resultado de evaluar criterio coincide con el valor o

lista de valores de valor1 entonces se ejecuta el conjunto de instrucciones Secuencia sentencias 1

●Si no, si el resultado de evaluar criterio coincide con el valor o lista de valores de valor2 entonces se el conjunto de instrucciones Secuencia sentencias 2

● ... y así sucesivamente con cada CASE●En caso de que expresión no satisfaga ningún valor de los

especificados en alguno de los CASE, se ejecuta el conjunto de instrucciones Secuencia sentencias n+1

Page 25: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 25

SWITCH – Diagrama

Valor 1

otherwise

end

CriterioValor 2

Secuencia sentencias 2

Valor N

Secuencia sentencias N

Secuencia sentencias N+1

Secuencia sentencias 1

Page 26: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 26

SWITCH – Ejemplo (1/2)

● En un ciclo de 24, podemos determinar cuál es cada una de las partes del día, según la tabla siguiente. Elaboraremos un script que pida al usuario una hora entera y que devuelva por pantalla el nombre de la parte del día:

Hora Parte del día

01 a 67 a 11

1213 a 2021 a 23

24Otros

MedianocheMadrugada

MañanaMediodía

TardeNoche

MedianocheError

Page 27: Fundamentos de Informáticamatematicaaplicada.jezasoft.co/jeza/material_de...La construcción del bloque IF Sintaxis: La estructura de este bloque es: if expresión lógica secuencia

3/12/08 Ingeniería Técnica Industrial (Química) 2008-2009 - "Fundamentos de Informática" - Tema 9 27

SWITCH – Ejemplo (2/2)

h = input('Hora: ');

switch h case {0, 24} disp('Medianoche'); case {1, 2, 3, 4, 5, 6} disp('Madrugada'); case {7, 8, 9, 10, 11} disp('Mañana'); case 12 disp('Mediodia'); case {13, 14, 15, 16, 17, 18, 19, 20} disp('Tarde'); case {21, 22, 23} disp('Noche'); otherwise disp('Error');end