• No se han encontrado resultados

Fundamentos de Informática

N/A
N/A
Protected

Academic year: 2021

Share "Fundamentos de Informática"

Copied!
27
0
0

Texto completo

(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

(2)

Tema 9 – Sentencias de Selección

9.1.

Las sentencias de selección

9.2.

La sentencia de selección

IF

(3)

Tema 9.1.

(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

(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.

(6)

Tema 9.2.

(7)

La construcción del bloque IF

Sintaxis: La estructura de este bloque es:

if

expresión lógica

secuencia de instrucciones

end

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),

(8)

La construcción del bloque IF - Diagrama

Secuencia de instrucciones

verdadero

falso

end

Sentencia común

Expresión

Lógica

(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

(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

if

x > 0

instrucciones

end

if

all(x > 0)

instrucciones

end

(11)

La construcción del bloque IF general

Sintaxis: La estructura de este bloque es:

if

expresión lógica

secuencia de instrucciones 1

else

secuencia de instrucciones 2

end

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

.

(12)

La construcción del bloque IF general -

Diagrama

verdadero

falso

end

Sentencia común

Expresión

Lógica

Secuencia de

instrucciones 2

Secuencia de

instrucciones 1

else

(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

>> espar

Introduce un número: 3

impar

>> espar

Introduce un número: 10

par

(14)

IF anidados

Es posible

anidar

estructuras IF generales en

ambas ramas:

if

exprlog1

if

exprlog2

secuencia_si1_si2

else

secuencia_si1_no2

end

else

if

exprlog3

secuencia_no1_si3

else

(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

(16)

IF anidados – Ejemplo (2/2)

% Triangulo: determina si tres lados pueden

% formar un triangulo, y de que tipo

% Entrada de datos

l = input(

'Vector con los tres lados, de la forma [a b c]: '

);

% Usamos tres variables por claridad del codigo

a = l(1);

b = l(2);

c = l(3);

% Operaciones y salida de datos

if

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

(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

end

else

disp('No es un triángulo');

end

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

end

else

disp('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.

(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

(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

end

end

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'

);

(20)

Tema 9.3.

La sentencia de selección

SWITCH

(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.

(22)

SWITCH – Sintaxis (1/2)

switch

criterio

case

valor1

Secuencia sentencias 1

case

valor2

Secuencia sentencias 2

...

case

valorN

Secuencia sentencias N

otherwise

Secuencia sentencias N+1

(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

(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

(25)

SWITCH – Diagrama

Valor 1

otherwise

end

Criterio

Valor 2

Secuencia

sentencias 2

Valor N

Secuencia

sentencias N

Secuencia

sentencias N+1

Secuencia

sentencias 1

(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

0

1 a 6

7 a 11

12

13 a 20

21 a 23

Medianoche

Madrugada

Mañana

Mediodía

Tarde

Noche

(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

Referencias

Documento similar

Las actividades teóricas y prácticas de esta asignatura se centran en la realización de un conjunto de problemas donde se demostrará que el alumno ha entendido la parte teórica de

Las competencias específicas de esta asignatura son la comprensión y dominio de los conceptos básicos de campos y ondas y electromagnetismo, teoría de circuitos eléctricos,

Buscarlo en bibliotecas UNED Ámbito: GUI - La autenticidad, validez e integridad de este documento puede ser verificada mediante el &#34;Código Seguro de Verificación (CSV)&#34; en

Física moderna&#34; será utilizado por el alumno para el estudio de las dos primeras partes de la asignatura relativas al electromagnetismo y a los fundamentos de teoría de

Ahora para aplicar lo aprendido puedes salir en grupo, a una plaza de mercado o a una tienda, y comprar los ingredientes para preparar entre todos un plato típico colombiano.

Desde entonces el globo se ha mantenido año tras años fiel a su cita.. Tan sólo quedó interrumpido durante los tres años de la

El programa “Aprender haciendo”, basado en el aprendizaje experiencial, influye significativamente en el nivel de desarrollo de la competencia resuelve problemas de

también le había pasado a los espectadores en contacto con aquella película, generación tras generación (de espectadores y de monstruo). La película de Erice venia