Documente Academic
Documente Profesional
Documente Cultură
ÍNDICE
Concepto de Algoritmo
Fundamentos de Informática
Datos: Variables y Constantes
E.U.P. Universidad de Sevilla
Tipo de datos compuestos: Vectores y Matrices
(I.T. Diseño Industrial)
Representación de Algoritmos
Diagrama de Flujo, Pseudo código
Lenguajes de programación: MATLAB
Introducción a la Algorítmica Programación Estructurada
Estructura Secuencial
y a la Programación en MATLAB
Estructura Selectiva
Simple (If)
Doble (If-else)
Múltiple
Estructura Repetitiva
While (Mientras)
1
For (Para)
3 4
EJEMPLO DE ALGORITMO INTUITIVO:
CONCEPTO DE ALGORITMO (1) RECETA DE COCINA
Calabacines rehogados
Un algoritmo es un conjunto de acciones que 1. Pelar los calabacines y cortar en rodajas
determinan la secuencia de los pasos a seguir para 2. Añadir sal a los calabacines
resolver un problema específico. 3. Poner los calabacines en una sartén con aceite a medio fuego
Otras definiciones: 4. Mover los calabacines hasta que estén trasparentes
Conjunto de reglas en cierto orden para resolver un problema. 5. Sacar de la sartén y escurrir el aceite
Una forma de describir la solución de un problema en pasos 6. Añadir queso parmesano rallado; sino se dispone de parmesano,
sucesivos. utilizar queso curado.
Cualquier error no funcionará. Pensar ej.
Los pasos de un algoritmo deben estar definidos: Elementos del algoritmo
con precisió
precisión, no deben existir ambigüedades que den origen COCINA PROGRAMACIÓN
a elegir una decisión equivocada. Ingredientes Entrada
con un orden estricto. La alteración de tal orden conduciría a Ingredientes intermedios Variables, Constantes
que el algoritmo no resolviera el problema correctamente Acciones Sentencias
Orden de ejecución de las acciones Secuencialidad
Resultado (Plato DE calabacines) Salida
5 6
EJEMPLO DE ALGORITMO INTUITIVO: EJEMPLO DE ALGORITMO INTUITIVO:
¿Qué pasa cuando no se especifica bien un algoritmo? ¿Qué pasa cuando no se especifica bien un algoritmo?
Un ejemplo de algoritmo: ¿está bien especificado? El algoritmo del ejemplo anterior está mal especificado:
7 8
EJEMPLO DE ALGORITMO INTUITIVO: Conceptos básicos:
¿Qué pasa cuando no se especifica bien un algoritmo? ¿Qué pasa cuando no se especifica bien un algoritmo?
El algoritmo bien especificado sería el siguiente: Resultado de la ejecución del algoritmo bien especificado:
1. Sal de casa
Ahora sí que
le has cogido 2. Ve a la tienda más cercana que no
el truco hayas visitado y pide dulces.
3. Si la tienda no tiene y tú no estás
OK
cansado, vuelve al punto 2
4. Vuelve a casa
que dividir por 2 mientras el cociente sea >= 2 8. ¿Es k mayor o igual que num?
9. SI: es primo. Fin del algoritmo.
1. Leer numero decimal y guardarlo en D 10. NO: Continuar con el paso 3 (repetir del 3 al 10).
11 12
15 16
NO
EX. PARCIAL BLOQUE TEMÁTICO 2 >=3.5
SI
Desventajas:
NOTA FINAL= (Nota Blq 1 * 0.15) + (Nota Blq 2 * 0.6)+ (Nota Blq 3*0.25)
La sintaxis suele estar en inglés, pero es fácil
SI
Nota FINAL >=5
NO
Evaluación Clásica
Un único examen en las
convocatorias oficiales
acostumbrarse (son sólo un conjunto limitado de
palabras reservadas).
APROBADO,
NOTABLE, (60% Bloque 2)+ (40% Bloques 1 y 3)
SOBRESALIENTE
SI
Nota FINAL >=5
NO La sintaxis es estricta. Hay que aprenderla
APROBADO,
NOTABLE,
SOBRESALIENTE
SUSPENSO
bien, y también aprender a detectar los errores.
19 20
23 24
Los valores que pueden tomar las variables y las constantes pertenecen
a un TIPO (tipo de dato).
DATO es cualquier objeto manipulable por el Así, por ejemplo existen tipos:
ordenador y que contiene información Numéricos: enteros, reales, etc.
Caracteres: contienen texto
Ejemplo: Una variable que contenga el nombre de una persona.
Se distinguen dos clases de datos:
Booleanos: su valor sólo puede ser verdadero o falso
VARIABLES: Objeto cuyo valor cambia durante la Ejemplo: Las respuestas a preguntas ¿rem(num,k)==0?
Normalmente en los lenguajes de programación el valor numérico 0 se
ejecución de un programa.
corresponde con el valor falso, y el resto de los valores numéricos se
Ejemplo: Las variables num y k del algoritmo de los números corresponden con el valor verdadero.
primos
En MATLAB todas las variables serán reales de doble precisión
CONSTANTES: Objeto cuyo valor NO cambia durante (double) mientras no se fuerce a que sean de otro tipo.
la ejecución de un programa. Ej: num, k en el algoritmo de los número primos serían variables reales.
Ejemplo: el número pi.
Una variable que creemos y le demos sólo un valor inicial sin Al ser todas las variables por defecto de tipo real de doble precisión, en
modificarlo funciona como una constante. MATLAB NO ES NECESARIO DECLARAR LAS VARIABLES ANTES
Ej: x=0 DE USARLAS (mientras que la declaración de variables es obligaroria
%si x no varia su valor dentro del algoritmo funciona como en la mayoría de los lenguajes de programación).
constante
25 26
27 28
31 32
Expresión
ARITMÉTICA
Resultado de la expresión Se modelan como variables y/o expresiones del Álgebra de Boole
una expresión de condición es cierta ó falsa.
Constante El resultado de la expresión es el valor de la constante
Expresión1 * Expresión2 Multiplica Expresión1 y Expresión2 Operando1 < Operando2 Es verdadero si Operando1 ES MENOR QUE Operando2
Operando1 <= Operando2 Es verdadero si Operando1 ES MENOR O IGUAL QUE Operando2
Expresión1 / Expresión2 Divide Expresión1 entre Expresión2
Operando1 == Operando2 Es verdadero si Operando1 ES IGUAL QUE Operando2
- Expresión El resultado es la Expresión cambiada de signo Operando1 ~= Operando2 Es verdadero si Operando1 ES DISTINTO QUE Operando2
¡Pruébalo, es fácil!
35 36
Si A==0
Comprobar si una variable num está en el intervalo [0,10]
0 | (0 & B) (num >=0) & (num<=10)
%el valor 0 en (0 & B) hace que este operando sea falso. Por tanto 0 | 0
vale 0, es decir no importa qué valor tiene B. Prima el valor de A.
Comprobar si una variable num está fuera del intervalo
Si A==1
[0,10], es decir la condición contraria a la anterior.
1 | (1 & B)
%el valor 1 | (lo que sea) hace que el resultado sea directamente verdadero.
Es decir no importa qué valor tiene B. Prima el valor de A. ~((num >=0) & (num<=10))
Ejercicio para el alumno: De forma análoga a la mostrada en la y aplicando las Leyes de De Morgan queda
demostración anterior A | (A & B) = A, pruebe a demostrar que la siguiente
ley de absorción también es cierta: A & (A | B) = A (num<0) | (num >10)
39 40
EXPRESIONES ARITMÉTICAS Y LÓGICAS
(ORDEN DE PRIORIDAD) FUNCIONES DE DE MATLAB
Para saber cómo usar una función concreta de las que Un programa puede imprimir por pantalla el
tiene MATLAB poner en la ventana de comandos:
help nombre_comando valor de una variable.
Ej: help rem
43 44
El usuario puede dar un valor a una variable a Un programa se escribe utilizando los siguientes tipos de
través del teclado mediante la función estructuras de control:
input(‘Texto a mostrar al usuario’). Secuencial: Una acción se ejecuta una tras otra, es
Esta función de MATLAB muestra el mensaje decir, una instrucción sigue a otra en secuencia.
que le ponemos entre comillas simples ‘ ’ Selectiva: Se evalúa la condición y en función del
dentro de los paréntesis ( ), y además lee del resultado se ejecuta un conjunto de instrucciones u otro. Hay
teclado el valor que introduzca el usuario tres tipos de selectivas (simple, doble o múltiple).
cuando éste presione la tecla INTRO.
Repetitiva: Contienen un bucle (conjunto de
Ej: var_edad = input(‘Introduce tu edad’)
instrucciones que se repiten un número finito de veces). Cada
Para saber más sobre esta función ejecutar en repetición del bucle se llama iteración. Todo bucle tiene que
la ventana de comandos de MATLAB llevar asociada una condición, que determina si el bucle se
help input repite o no.
45 46
EJEMPLO DE ESTRUCTURA SECUENCIAL
ESTRUCTURA SECUENCIAL
(Problema 1: enunciado)
47 48
EJEMPLO DE ESTRUCTURA SECUENCIAL CÓMO CREAR NUESTRA PROPIA FUNCIÓN
(Problema 1: solución) (Sintaxis)
c= input('Introduzca el valor del tercer lado del triángulo: '); - La función comienza con la palabra reservada de MATLAB function
- A continuación, van los nombres de las variables de salida separadas por comas y
p=(a+b+c)/2; entre corchetes [ ]. En una función que no devuelve nada no hay variables de
s= sqrt (p * (p-a) * (p-b) * (p-c)); salida. En una función que sólo hay una única variable de salida no es necesario
poner los [ ].
disp(‘La superficie del triángulo vale: ‘); - Después de las variables de entrada va un = , a no ser que la función no devuelva
disp(s); ninguna variable de salida, en cuyo caso no es necesario poner el =
- Después va el nombre de la función que siempre debe estar presente y debe
coincidir con el nombre del fichero de MATLAB que contiene la función (con
extensión .m), es decir el fichero se llamará nombre_funcion.m
- Siguiendo el nombre de la función van los nombres de las variables de entrada
separadas por comas y entre ( ). Podría ocurrir que una función no recibiera datos
de entrada de esta manera, pero suele ser habitual que sí las lleve.
49 50
EJEMPLO DE FUNCIÓN
(Problema 1F: Cómo convertir en función un script, en este caso la EJEMPLO DE FUNCIÓN
solución del problema1) (Problema 1F: ¿Qué se obtiene al llamar a la función?)
1. Guardamos el código que tenemos en el fichero fproblema1.m (fichero con el mismo nombre que la
Por tanto, la definición de la función completa quedaría de la siguiente forma:
función que tiene codificada dentro).
2. Averiguamos cuáles son las variables de entrada y de salida function s = fproblema1(a,b,c)
En este ejemplo las variables de entrada son a, b, c y la variable de salida es s
51 52
EJEMPLO DE FUNCIÓN EJEMPLO DE ESTRUCTURA SECUENCIAL
(Problema 1F: ¿Qué ocurre en la memoria en tiempo de ejecución?) (Problema 1B: enunciado para el alumno)
Al ejecutar en la línea de comando la sentencia
>> res = fproblema1(20,20,20) %ver paso1 %ver paso5
en la memoria del ordenador se reserva espacio para la variable global res
res res res res res 173.205 Para calcular las potencias puede usar en MATLAB el operador ^ Ej: r^3
s s s 173.205 s 173.205
a 20 a 20 a 20 a 20
b 20 b 20 b 20 b 20
c 20 c 20 c 20 c 20
p p 30 p 30 p 30
%paso1 %paso2 %paso3 %paso4 %paso5
if condicion
sentencias Construya un algoritmo en MATLAB tal que, dados los valores enteros P
end y Q, que deben leerse del teclado, determine si los mismos satisfacen la
siguiente expresión:
P 3 + Q 4 − 2 P 2 < 680
Se evalúa la condicion,
si es verdadera, se ejecutan las sentencias;
en caso contrario, se salta dicho grupo de En caso afirmativo debe escribir por pantalla los valores de P y Q.
sentencias.
55 56
b2-4ac
57 58
59 60
Para convertir grados centígrados (variable c) a fahrenheit (variable f) elseif fah >32
se utiliza la siguiente ecuación: disp ('Esquí')
9 else
f = c∗ + 32 disp ('Marcha')
5 end
63 64
Contadores:
Son variables que se utilizan para contar. Incrementa c cada vez que En la variable ac acumula los
Normalmente su valor se incrementa o decrementa en 1. imprime una letra 'a' valores leídos del teclado
Ejemplos: • c=0; • ac=0
contador=0
contador = contador + 1 • disp(‘a’) • v=input(‘Introduce valor:’)
• c=c+1 • ac = ac + v
indice=10
indice = indice - 1 • disp(‘a’) • v=input(‘Introduce valor:’)
Acumuladores: • c=c+1 • ac = ac + v
Se utilizan para almacenar el resultado de sumas sucesivas. • disp(‘a’)
Su valor se incrementa en cantidades variables.
Ejemplos: • c=c+1
valor=input(‘Introduce un valor: ‘)
total=0; %hay que inicializarlo al valor neutro de la suma, el 0
total = total + valor
producto_multiple=1 %hay que inicializarlo al valor neutro del producto, el 1
producto_multiple = producto_multiple * valor
67 68
c←1 I
c=1 Escriba un programa en MATLAB que lea del teclado un
C número y compruebe si es menor que 5.
comienzo bucle
while c<3 Si no lo es, debe volver a leer un número, repitiendo la
disp(‘a’) B operación hasta que el usuario escriba un valor correcto.
NO: fin del bucle c=c+1 A Finalmente debe escribir por pantalla el valor leído.
c<3
end
SI
disp(c)
ESCRIBIR 'a'
ESCRIBIR c
c←c+1
Ejercicios para el alumno: Identificar ICBA en los bucles
de las soluciones de los próximos ejercicios.
71 72
EJERCICIOS ESTR. REPETITIVA while EJERCICIOS ESTR. REPETITIVA while
Problema 5: solución Problema 5B: enunciado
num=input('Teclee un número menor que 5: '); Escriba un algoritmo en MATLAB que lea del teclado un
while (num>=5) número y compruebe que el número introducido sea
num=input('Teclee un número menor que 5: '); negativo.
Es decir, mientras que sea mayor o igual que 0, debe
end
volver a leer un número, repitiendo la operación hasta
que el usuario escriba un valor negativo.
disp('El primer número leído menor que 5 es: '); Finalmente debe escribir por pantalla el valor leído.
disp(num);
73 74
num=input('Teclee un número negativo: '); Escriba un programa en MATLAB que lea del teclado un
while num>=0 número y compruebe si se encuentra en el rango (5,15).
Si no lo es, debe volver a leer un número, repitiendo la
num=input('Teclee un número negativo: ');
operación hasta que el usuario escriba un valor correcto.
end
Finalmente debe escribir por pantalla el valor leído.
75 76
EJERCICIOS ESTR. REPETITIVA while EJERCICIOS ESTR. REPETITIVA while
Problema 6: solución Problema 6B: enunciado
num=input('Teclee un número entre 5 y 15 (no incluidos): '); Escriba un algoritmo en MATLAB que lea del teclado un
while (num<=5) | (num>=15) número y compruebe que el número introducido sea
num=input('Teclee un número entre 5 y 15 (no incluidos): '); negativo e impar.
Es decir, mientras que sea mayor o igual que 0 o sea
end
par, debe volver a leer un número, repitiendo la
operación hasta que el usuario escriba un valor negativo.
disp('El primer número dentro del intervalo (5,15) ha sido: '); Finalmente debe escribir por pantalla el valor leído.
disp(num);
77 78
EJERCICIOS ESTR. REPETITIVA while EJERCICIOS ESTR. REPETITIVA while
Problema 6B: solución Problema 7: enunciado
79 80
EJERCICIOS ESTR. REPETITIVA while EJERCICIOS ESTR. REPETITIVA while
Problema 7: solución Problema 7B: enunciado
83
EJERCICIOS ESTR. REPETITIVA while
Problema 7D: enunciado para el alumno