Resolución de problemas mediante algoritmos Metodología de resolución 1.Planteamiento del problema a)Datos de entrada y de salida b)Algoritmo conceptual básico 2.Diseño del algoritmo (pseudocódigo) 3.Prueba con ejemplos Ejemplo: Algoritmo para generar coste de una factura mensual telefónica Datos de entrada Cálculo Salida Resolución algorítmica 2 Elementos principales de un algoritmo ● Variables, constantes y expresiones ● Sentencias – Asignación – Entrada/Salida – Estructuras de selección – Estructuras de repetición Resolución algorítmica 3 Variables, constantes y valores constantes Variable: elemento del algoritmo que posee un valor, es conocido por un nombre o identificador y pertenece a un tipo de dato. a Constante: elemento del algoritmo similar a una variable, pero cuyo valor no cambia a lo largo del algoritmo. PI 3.1416 Un valor constante o constante literal es un valor de cualquier tipo que se utiliza como tal. Resolución algorítmica 2.79 5.38 “Hola” 4 Expresiones Expresión: combinación de variables, constantes, valores constantes, operadores y funciones que al evaluarla en el orden correcto tiene un valor concreto cos(2*PI*r) Dato numérico Las expresiones más representativas son las numéricas y las lógicas Resolución algorítmica 5 Representación de algoritmos Pseudocódigo ALGORITMO nombre del algoritmo ENTRADA descripción de los datos de entrada al algoritmo SALIDA descripción de los datos de salida del algoritmo VARIABLES lista de variables con sus tipos INICIO sentencias FIN 6 Representación de algoritmos ● Asignación – almacena un valor en una variable – operador asignación: Variable ● Expresión Entrada/Salida – Lectura o entrada: permite introducir datos desde disp. externos (teclado) o desde ficheros – Leer lista de variables separadas por comas – Salida o escritura: permite visualizar datos en disp. externos (pantalla, impresora) o almacenarlos en ficheros – Escribir lista de variables o expresiones separadas por comas 7 Ejemplo: área de un triángulo Escribir “Base del triángulo: “ Leer base Escribir “Altura del triángulo: “ Leer altura #include <stdio.h> codificación en C ALGORITMO área de un triángulo ENTRADA su base y altura SALIDA el área del triángulo VARIABLES base, altura, area: reales INICIO main() { float base,altura,area; printf("Base del triángulo: "); scanf("%f",&base); printf("Altura del triángulo: "); scanf("%f",&altura); area = base*altura/2; area ← base*altura/2 Escribir “El área es “, area printf("El área es %f\n",area); } FIN http://bit.ly/OV5Avm Resolución algorítmica 8 Representación de algoritmos Estructuras de control selectivas Permite codificar alternativas dobles o múltiples En el caso doble: SI condición sentencia 1 …. SI NO sentencia 2 …. FIN_SI Resolución algorítmica 9 Ejemplo: comprobar área de un triángulo Escribir “Base del triángulo: “ Leer base Escribir “Altura del triángulo: “ Leer altura area ← base*altura/2 Si area>50 Escribir “El área es mayor que 50” si no Escribir “El área no es mayor que 50” Fin Si #include <stdio.h> codificación en C ALGORITMO área de un triángulo ENTRADA su base y altura SALIDA comprobación si el área es >50 VARIABLES base, altura, area: reales INICIO main() { float base,altura,area; printf("Base del triángulo: "); scanf("%f",&base); printf("Altura del triángulo: "); scanf("%f",&altura); area = base*altura/2; if (area>50) printf("El área es mayor que 50\n"); else printf("El área no es mayor que 50\n"); } FIN http://bit.ly/SNA0kd 10 Representación de algoritmos Estructuras de control repetitiva bucle PARA PARA i=0 HASTA i=9 CON INCREMENTO 1 Entrar en el bucle Salida del bucle Sentencias del bucle Sentencias del bucle Sentencias del bucle i=0 i=1 i=9 Resolución algorítmica 11 Representación de algoritmos bucle PARA En pseudocódigo sería: PARA contador = vi HASTA vf CON INCREMENTO n Bloque de sentencias FIN_PARA Resolución algorítmica 12 ALGORITMO números pares ENTRADA SALIDA números pares hasta 50 VARIABLES i: entero INICIO Para i = 0 hasta 50 con incr. 2 Escribir i Fin Para FIN codificación en C Ejemplo: números pares hasta 50 #include <stdio.h> main() { int i; for (i=0;i<=50;i=i+2) printf("%d\n",i); } http://bit.ly/PAmORk Resolución algorítmica 13 Representación de algoritmos Estructuras de control repetitiva bucle MIENTRAS Entrar en el bucle ¿se cumple la condición? NO SI Sentencias del bucle Salir del bucle 14 Representación de algoritmos bucle MIENTRAS En pseudocódigo sería: MIENTRAS condición_lógica HACER Bloque de sentencias FIN_MIENTRAS Resolución algorítmica 15 ALGORITMO números pares ENTRADA SALIDA números pares hasta 50 VARIABLES i: entero INICIO i ← 0 Mientras i <= 50 Escribir i i ← i + 2 Fin Mientras codificación en C Ejemplo: números pares hasta 50 #include <stdio.h> main() { int i; i = 0; while (i<=50) { printf("%d\n",i); i = i + 2; } FIN } http://bit.ly/Vw0Pxj Resolución algorítmica 16 Resumen ● ● Programar significa combinar de forma “inteligente” un conjunto de elementos para resolver un problema con el ordenador Elementos: 17