5_Tema6_PROGRAMACION_2024_B1xdxdxdxd.pdf

pablogarciaalonso200 13 views 46 slides Sep 11, 2025
Slide 1
Slide 1 of 46
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46

About This Presentation

El presente documento en formato PDF de Programación ha sido diseñado como material de apoyo fundamental para la asignatura de Programación, parte esencial dentro de la formación académica en el ámbito de la informática y la tecnología. Su objetivo principal es proporcionar a los estudiantes...


Slide Content

TEMA 6
INICIACIÓN A LA PROGRAMACIÓN
SEGUNDA PARTE
INFORMÁTICA. GRUPO B1. 2024
Juan Viu Sos
Sentencias condicionales
Bucles (sentencias repetitivas)
Interrupciones de programas

SENTENCIAS DE CONTROL DE FLUJO 2
Cuerpo del programa: el algoritmo
➢Las estructuras de Entrada y Salida de datos suelen ser
similares en todos los programas/scripts.
➢El algoritmo es la "receta central" con instrucciones
que la máquina debe ejecutar (varía según el problema):
➢Algoritmo: operaciones y decisiones/control en su
realización (sentencias de control de flujo)
Sentencias condicionales
Bucles
Datos de
entrada
Datos de
salida
ALGORITMO

3 SENTENCIAS DE CONTROL DE FLUJO
Sentencias condicionales
Darán paso a ciertas instrucciones sólo si se cumplen una
condición asociada a ellas.
(P.ej.: "que un número no sea cero antes de dividir por él")
➢if
if simple
if unicondicional
if multicondicional
➢switch (éste no lo veremos)

CONDICIONAL SIMPLE
4 SENTENCIAS DE CONTROL DE FLUJO
Sentencias condicionales

Sintaxis básica:
if condicion
operaciones
end
o bien, de forma breve:
if condicion, operaciones, end
5 SENTENCIAS DE CONTROL DE FLUJO
CONDICIONAL SIMPLE
➢La condición viene dada por (operaciones de) expresiones lógicas.
Si la condición evaluada es cierta (true), se ejecutan las operaciones.
Si ésta es falsa (false), no se ejecutan se ejecutan las operaciones.
Sentencias condicionales

6 SENTENCIAS DE CONTROL DE FLUJO
CONDICIONAL SIMPLE
Ejercicio
Escribir un programa que pida un número entero y escriba en pantalla la
frase 'Es múltiplo de 2' si lo es, y/o 'Es múltiplo de 3' si lo es.
Sentencias condicionales

n ← dame un entero
n múltiplo de 2
Escribe 'Es múltiplo de 2'
SI
NO
Escribe 'Es múltiplo de 3'
SI
NO
FIN
7 SENTENCIAS DE CONTROL DE FLUJO
CONDICIONAL SIMPLE
n = input('Introduce un entero:' );

if rem(n,2)==0 %resto n/2 es 0
disp('Es múltiplo de 2')
end
if rem(n,3)==0 %resto n/3 es 0
disp('Es múltiplo de 3')
end
Cuidado: siempre hay que terminar
la sentencia condicional con end.
El editor de Octave autocompleta
con endif y puede dar problema
con Matlab (esto se puede cambiar
en "Preferencias/Editor/Sangrado")
Solución
n múltiplo de 3
Sentencias condicionales

8 SENTENCIAS DE CONTROL DE FLUJO
BLOQUE UNICONDICIONAL
Sentencias condicionales

9 SENTENCIAS DE CONTROL DE FLUJO
BLOQUE UNICONDICIONAL
Sintaxis:
if condicion
operaciones 1
else
operaciones 2
end
➢Si la condición evaluada es cierta (true), se ejecuta operaciones 1.

Ojo: en este caso, el programa continúa directamente después del end.
➢Si la condición es falsa (false), se ejecuta operaciones 2. (Nunca ambas)
Sentencias condicionales

10 SENTENCIAS DE CONTROL DE FLUJO
CONDICIONAL SIMPLE
Ejercicio
Escribir un programa que pida un número entero positivo y escriba en
pantalla si es par o impar.
Sentencias condicionales

n ← dame un entero positivo
n es par
SI NO
Escribe 'Es par'
Escribe 'Es impar'
FIN
11 SENTENCIAS DE CONTROL DE FLUJO
BLOQUE UNICONDICIONAL Solución
n = input('Introduce un entero positivo: ' );

if rem(n,2)==0 %resto de n entre 2 es 0
disp('Es par')
else %en caso contrario
disp('Es impar')
end
Sentencias condicionales

opcional
12 SENTENCIAS DE CONTROL DE FLUJO
BLOQUE MULTICONDICIONAL
Sentencias condicionales

13 SENTENCIAS DE CONTROL DE FLUJO
BLOQUE MULTICONDICIONAL
Sintaxis:
if condicion_1
operaciones 1
elseif condicion_2
operaciones 2
elseif …………………….
………………………………………..
...
else %opcional, sólo ejecuta si las anteriores son falsas
operaciones optativas
end
➢Entra en el bloque de la PRIMERA condición evaluada que sea cierta (true), ejecuta las
operaciones del bloque y continúa directamente después del end.
Sentencias condicionales

14 SENTENCIAS DE CONTROL DE FLUJO
Ejercicio
Escribir un programa que pida un número entero y escriba en pantalla si
es cero, negativo o positivo.
BLOQUE MULTICONDICIONAL
Sentencias condicionales

15 SENTENCIAS DE CONTROL DE FLUJO
Ejercicio
Escribir un programa que pida un número entero y escriba en pantalla si
es cero, negativo o positivo.
Solución
n=input('Introduce un entero: ' );
if n<0 %caso n negativo
disp('el número es negativo' )
elseif n==0 %caso n cero
disp('el número es cero')
else %caso restante
disp('el número es positivo' )
end
BLOQUE MULTICONDICIONAL
Sentencias condicionales

16 SENTENCIAS DE CONTROL DE FLUJO
Sentencias repetitivas: bucles
Usaremos los bucles cuando necesitemos repetir un conjunto de
sentencias…
➢for
...un número determinado de veces, usando un contador para las
iteraciones.
P.ej. "dado un vector, ir accediendo de la primera a la última
componente, sumando a cada componente su anterior".
➢while
...mientras se cumpla una determinada condición de control.
P.ej. "El usuario debe introducir un valor positivo → si no lo es, se lo
seguimos pidiendo hasta que el dato introducido sea positivo".

17 SENTENCIAS DE CONTROL DE FLUJO
Contador
automático
desde un valor
inicial a otro
final
Sentencias
No hemos superado
el valor final
Hemos superado
el valor final
Bucles con for
➢Repetiremos sentencias,
usando un contador.
➢Este contador va tomando
valores desde un valor
inicial hasta un valor final.
➢Cuando llegamos al valor
final, el bucle se termina y
continuamos con el
programa.
➢Ojo: ¡las sentencias del bucle
pueden depender del valor
del contador!
BUCLE MEDIANTE CONTADOR

18 SENTENCIAS DE CONTROL DE FLUJO
Bucles con for
Bucle ordinario
for variable=inicio:fin
sentencias
end
for variable=inicio:paso:fin
sentencias
end
for variable=[valor1,valor2,valor3,...]
sentencias
end
El bucle se forma mediante la iteración de una variable de control
(usualmente llamada i, j o k), quien va recorriendo un vector fila.
for i=1.5:0.1:2
disp(i)
end
for i=1:5
disp(i)
end
for i=[4,1,1,-2,0.4]
disp(i)
end
Ejemplos

Bucle ordinario EJEMPLOS
19 SENTENCIAS DE CONTROL DE FLUJO
n = 5;
v = [];
for i=1:n
v(i)=1;
end
disp(v)
salida
salida
Bucles con for
v=[0 9 -2 3];
w=[];
n=length(v);
for i=1:4
w(i)=v(i)-1;
end
disp(w)


RECORRIENDO VECTORES Y REALIZANDO ASIGNACIONES

Bucle ordinario EJEMPLOS
20 SENTENCIAS DE CONTROL DE FLUJO
n = 5;
v = [];
for i=1:n
v(i)=1;
end
disp(v)
1 1 1 1 1
salida
-1 8 -3 2
salida
Bucles con for
v=[0 9 -2 3];
w=[];
n=length(v);
for i=1:n
w(i)=v(i)-1;
end
disp(w)
RECORRIENDO VECTORES Y REALIZANDO ASIGNACIONES

Bucles anidados
21 SENTENCIAS DE CONTROL DE FLUJO
¿CÓMO PODEMOS RECORRER MATRICES POR FILAS Y COLUMNAS?
Dadas dos matrices A y B de tamaño 3x2 …
¿Cómo podríamos realizar la operación usando bucles?
Bucles con for
C = A.*B
"A MANO"...

Bucles anidados
22 SENTENCIAS DE CONTROL DE FLUJO
¿CÓMO PODEMOS RECORRER MATRICES POR FILAS Y COLUMNAS?
Dadas dos matrices A y B de tamaño 3x2 …
¿Cómo podríamos realizar la operación usando bucles?
Bucles con for
C = A.*B
"A MANO"...
%Fila 1
for j=1:2
C(1,j) = A(1,j)*B(1,j)
end
%Fila 2
for j=1:2
C(2,j) = A(2,j)*B(2,j)
end
%Fila 3
for j=1:2
C(3,j) = A(3,j)*B(3,j)
end
Primer intento… pero...
¡Estamos realizando una tarea repetitiva!
¿Podemos usar BUCLES para repetir BUCLES?

Bucles anidados
23 SENTENCIAS DE CONTROL DE FLUJO
¡BUCLES ANIDADOS!
Los bucles anidados se forman colocando un bucle dentro de otro.
Para cada valor del bucle exterior, se van recorriendo los sucesivos valores
del bucle interior.
Bucles con for
%Fila 1
for j=1:2
C(1,j) = A(1,j)*B(1,j)
end
%Fila 2
for j=1:2
C(2,j) = A(2,j)*B(2,j)
end
%Fila 3
for j=1:2
C(3,j) = A(3,j)*B(3,j)
end
%BUCLE: sobre las 2 filas
for i=1:3
%BUCLE: sobre las 3 columnas
for j=1:2
C(i,j) = A(i,j)*B(i,j)
end
end

24 SENTENCIAS DE CONTROL DE FLUJO
Bucles anidados EJEMPLOS
Bucles con for
A = [1 3 5 ; 4 7 0];%2x3
for i=1:2
for j=1:3
fprintf('%d ', A(i,j))
end
fprintf('\n') %Salto de linea
end
salida
 ¡Muy útiles para recorrer y realizar asignaciones en matrices!
"A MANO"...

25 SENTENCIAS DE CONTROL DE FLUJO
n=5; m=7; %Por ejemplo
for i=1:n
for j=1:m
A(i,j)=1/(i+j-1);
end
end
→ i=1 → j=1, j=2, … , j=m
→ i=2 → j=1, j=2, … , j=m
… …………………………………
→ i=n → j=1, j=2, … , j=m
¿Cómo se
comporta?
Bucles con for
A(1,1)=1/(1+1-1)A(1,2)=1/(1+2-1)…… A(1,m)=1/(1+m-1)
A(2,1)=1/(2+1-1)A(2,2)=1/(2+2-1)……A(2,m)=1/(2+m-1)
…… …… …… ……
A(n,1)=1/(n+1-1)A(n,2)=1/(n+2-1)……A(n,m)=1/(n+m-1)
Este bucle genera las sentencias:
i=1 →
i=2 →
i=n →
Bucles anidados EJEMPLOS
Queremos generar la matriz:

26 SENTENCIAS DE CONTROL DE FLUJO
Bucles con for
Ejercicio
Escribir un programa que pida una matriz por teclado y, MEDIANTE EL
USO DE BUCLES Y CONDICIONALES, la modifique de la forma siguiente:
1) elevando al cuadrado los elementos de la diagonal,
2) cambiando por cero cualquier otro elemento.
Finalmente, la debe mostrar en pantalla.
Recordad: podemos calcular el n.º de filas y el n.º de columnas mediante
la función size()
Bucles anidados

27 SENTENCIAS DE CONTROL DE FLUJO
Bucles con for
Solución
A = input('Introduce una matriz: ' );
[nfils, ncols] = size(A); %Num. de filas y colums.
for i=1:nfils %Para cada fila
for j=1:ncols %Para cada columna
if i==j %Si elem. en la diagonal
A(i,j) = A(i,j)^2;
else %Si no
A(i,j) = 0;
end
end
end
disp(A)
Bucles anidados

28 SENTENCIAS DE CONTROL DE FLUJO
¿Qué hace este programa? Lo intentamos descifrar 
Bucles con for
for i=1:3
fprintf('a i=%d,\n', i)
for j=1:i
suma = i+j;
fprintf('\t le sumo j=%d: da %d \n' , j, suma)
end
end
 Ojo: La variable "interior" puede depender del valor de la "exterior"
Bucles anidados EJEMPLOS

29 SENTENCIAS DE CONTROL DE FLUJO
¿Qué hace este programa? Lo intentamos descifrar 
Bucles con for
for i=1:3
fprintf('a i=%d,\n', i)
for j=1:i
suma = i+j;
fprintf('\t le sumo j=%d: da %d \n' , j, suma)
end
end
 Ojo: La variable "interior" puede depender del valor de la "exterior"
salida
El bucle interior va tomando
valores:
i = 1 → j de 1 a 1
i = 2 → j de 1 a 2
i = 3 → j de 1 a 3
Bucles anidados EJEMPLOS

30 SENTENCIAS DE CONTROL DE FLUJO
Bucles con while
Sintaxis:
while condicion
sentencias
end
➢La condición viene dada por expresiones lógicas.
➢Las sentencias del bucle se realizan a cada iteración,
mientras la condición sea cierta (true ).
➢Cuidado: tenemos que asegurarnos que el bucle se
detiene en algún momento (bucles infinitos ).
BUCLE MEDIANTE CONDICIONALES

31 SENTENCIAS DE CONTROL DE FLUJO
Sintaxis:
while condicion
sentencias
end
Ejemplo 1
¿Cuál es la condición?
¿Cómo se actualiza la
condición en cada iteración?
¿Podemos caer en un bucle
infinito?
Bucles con while
BUCLE MEDIANTE CONDICIONALES
i=1;
while i<6
disp(i);
i=i+1;
end
disp('Fin')

i=1;
while i<6
disp(i);
i=i+1;
end
disp('Fin')
32 SENTENCIAS DE CONTROL DE FLUJO
Sintaxis:
while condicion
sentencias
end
Ejemplo 1
Bucles con while
"mientras el valor i sea menor
que 6..."
"...muestro el valor i y DESPUÉS
actualizo i sumándole 1"
salida
BUCLE MEDIANTE CONDICIONALES

33 SENTENCIAS DE CONTROL DE FLUJO
Sintaxis:
while condicion
sentencias
end
Ejemplo 2
¿Cuál es la condición?
¿Cómo se actualiza la
condición en cada iteración?
¿Podemos caer en un bucle
infinito?
Bucles con while
BUCLE MEDIANTE CONDICIONALES
v = [-1,4,0,7,9,-1];
i=1;
while v(i)<7
disp(v(i));
i=i+1;
end
disp('Fin')

v = [-1,4,0,7,9,-1];
i=1;
while v(i)<7
disp(v(i));
i=i+1;
end
disp('Fin')
34 SENTENCIAS DE CONTROL DE FLUJO
Sintaxis:
while condicion
sentencias
end
Ejemplo 2
Bucles con while
"mientras el valor v(i) sea menor
que 7..."
"muestro el valor v(i) y
...actualizo i sumándole 1"
salida
BUCLE MEDIANTE CONDICIONALES

v = [-1,4,0,7,9,-1];
i=1;
while v(i)<7
disp(v(i));
end
disp('Fin')
35 SENTENCIAS DE CONTROL DE FLUJO
Ejemplo 3 ¿Qué ocurre en el siguiente ejemplo?
Bucles con while
BUCLE MEDIANTE CONDICIONALES

v = [-1,4,0,7,9,-1];
i=1;
while v(i)<7
disp(v(i));
end
disp('Fin')
36 SENTENCIAS DE CONTROL DE FLUJO
Ejemplo 3 ¿Qué ocurre en el siguiente ejemplo?
Bucles con while
BUCLE MEDIANTE CONDICIONALES
¡No actualizamos el valor de i
dentro del bucle!
salida
¡LA CONDICIÓN NUNCA CAMBIA!
v(1) < 7
¡BUCLE
INFINITO!


Recordad: podemos para la ejecución de un
programa con CTRL + C

37 SENTENCIAS DE CONTROL DE FLUJO
Bucles con while
Verificando datos de entrada con WHILE
Al pedir entrada de ciertos datos (p.ej. "introduce un número par"), podemos
usar while para asegurarnos de que el usuario cumple con lo que le pedimos:
n = input('Introduce un número par: ' );
while rem(n,2)~=0 %BUCLE: si n no es divisible por 2
n = input('¡Debes introducir un número par!: ' );
end
disp(n)

38 SENTENCIAS DE CONTROL DE FLUJO
x = input('Introduce un número: ' );
while isempty(x) %isempty(x) da 1 si x es vacio y 0 si no
x = input('Debes introducir un número: ' );
end
fprintf('Has introducido el %f \n' ,x)
Otro ejemplo, usando la función isempty( ):
Bucles con while
Verificando datos de entrada con WHILE
Al pedir entrada de ciertos datos (p.ej. "introduce un número par"), podemos
usar while para asegurarnos de que el usuario cumple con lo que le pedimos:
n = input('Introduce un número par: ' );
while rem(n,2)~=0 %BUCLE: si n no es divisible por 2
n = input('¡Debes introducir un número par!: ' );
end
disp(n)

39 SENTENCIAS DE CONTROL DE FLUJO
Bucles con while
Ejercicio
Escribir un programa que pida un número entero positivo al usuario. En
caso de que no lo sea, el programa continuará pidiéndo el dato hasta que se
introduzca un dato correcto. Finalmente, muestra el número en pantalla.
Verificando datos de entrada con WHILE

40 SENTENCIAS DE CONTROL DE FLUJO
Bucles con while
Solución
n = input('Introduce un número entero positivo: ' );
%BUCLE: pido de nuevo si no es positivo o si no es entero.
while (n<=0)|(fix(n)~=n)
n = input('Error. Introduce un número entero positivo: ' );
end
disp(n)
Verificando datos de entrada con WHILE
Ejercicio
Escribir un programa que pida un número entero positivo al usuario. En
caso de que no lo sea, el programa continuará pidiéndo el dato hasta que se
introduzca un dato correcto. Finalmente, muestra el número en pantalla.

41 SENTENCIAS DE CONTROL DE FLUJO
Interrupciones de bucles y programas
La estructura de los bucles, y en general de los programas, puede ser
demasiado rígida: todas las sentencias se van ejecutando en orden en
cada iteración, o hasta el final de programa.
Usaremos comandos de interrupción para atajar:
➢break
sale del bucle sin tener que terminar todas las iteraciones.
➢continue
pasa automáticamente a la siguiente iteración de un bucle.
➢return
termina automáticamente la ejecución de un programa/función.

 Se utiliza SÓLO dentro de bucles ( for y while )
 Permite interrumpir el bucle al que pertenece prosiguiendo
el programa por la sentencia posterior al end
Comando BREAK
42 SENTENCIAS DE CONTROL DE FLUJO
for i=1:100
if (i==11)
break
end
disp(i);
end
salida
Ejemplo

Interrupciones de bucles y programas

 Se utiliza SÓLO dentro de bucles ( for y while )
 Permite interrumpir el bucle al que pertenece prosiguiendo
el programa por la sentencia posterior al end
Comando BREAK
43 SENTENCIAS DE CONTROL DE FLUJO
for i=1:100
if (i==11)
break
end
disp(i);
end
1
2
3
4
5
6
7
8
9
10
salida
Ejemplo
Interrupciones de bucles y programas

44 SENTENCIAS DE CONTROL DE FLUJO
Comando CONTINUE
 Se utiliza SÓLO dentro de bucles ( for y while )
 Permite interrumpir la iteración actual pasando a la
siguiente del contador (Ojo: NO termina el bucle)
for i=1:100
if (i==9)
continue
end
disp(i);
end
salida
Ejemplo

Interrupciones de bucles y programas

45 SENTENCIAS DE CONTROL DE FLUJO
Comando CONTINUE
 Se utiliza SÓLO dentro de bucles ( for y while )
 Permite interrumpir la iteración actual pasando a la
siguiente del contador (Ojo: NO termina el bucle)
for i=1:100
if (i==9)
continue
end
disp(i);
end
1
2
3
4
5
6
7
8
10
...
salida
Ejemplo
Interrupciones de bucles y programas

Comando RETURN
46 SENTENCIAS DE CONTROL DE FLUJO
 Se utiliza EN CUALQUIER LUGAR de un programa/función
 Permite finalizar TODO el programa/función,
anticipadamente
notas=input('Introduce las notas del alumno: ' );
if (max(notas)>10 || min(notas)<0)
disp('Datos erroneos')
return
end
media=sum(notas)/length(notas);
fprintf('La nota media es: %f \n' , media)
Ejemplo
Termina el programa
Interrupciones de bucles y programas