Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Módulo 2. Fundamentos de Programación 1 • • • • • Tema 1. Conceptos generales de algorítmica Tema 2. Sentencias de control Tema 3. Conjuntos dimensionados Tema 4. Programación estructurada Tema 5. Cadenas y ficheros Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 CONTENIDO 2 Para que un ordenador realice una tarea o trabajo un programador previamente debe analizar y diseñar los pasos que permiten resolver dicha tarea. El programador aporta la inteligencia para describir en forma entendible por el ordenador los pasos que permitan resolver el problema. Esta secuencia de pasos o acciones que puedan ser ejecutadas por el ordenador es lo que denominamos algoritmo. Un algoritmo es un conjunto definido y ordenado de acciones, expresiones y procedimientos que permiten hallar la solución de una tarea o proyecto en un tiempo finito. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos 3 La etimología del término algoritmo tiene su origen en el matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, que durante el siglo IX describe en sus obras el sistema de numeración arábiga. Posteriormente su obra es traducida al latín por el matemático italiano Fibonacci, comenzando con las palabras: “Algoritmi dicit”. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos. Etimología de Algoritmo 4 Fases en la resolución de problemas: Análisis Formalizar el entorno del problema Definir lo que debe hacer el programa Estudio de posibilidades y casos Determinar los actores que intervienen Diseño Definir los elementos que intervienen Identificación de los datos de entrada y salida Identificación de recursos a utilizar Definición de las acciones para resolver el problema. Se utilizan técnicas de diseño descendente (top-down) Programación Modular y estructurada Implementación Transformar los elementos y acciones en una secuencia ordenada de instrucciones y sentencias que definen el algoritmo. A las que siguen las fases de Compilación y Ejecución, Depuración y Mantenimiento Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos. Fases 5 Lenguaje algorítmico o pseudocódigo Lenguaje que permite expresar el algoritmo Próximo al lenguaje natural Permite describir la resolución del problema sin ambigüedades Es universal e independiente del ordenador. El lenguaje informático Próximo a la máquina, es aquel por medio del cual un algoritmo se codifica a un programa comprensible por el ordenador. C, PHP, JAVA, ADA,... Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos. Lenguajes 6 Vamos a definir la estructura, la gramática y la sintaxis de las sentencias del lenguaje algorítmico o pseudocódigo, para poder describir de forma precisa la resolución de un problema. Vamos a utilizar un ejemplo cotidiano, y nos planteamos: Realizar un algoritmo para hacer una ensalada mixta. 1) 2) 3) 4) 5) 6) 7) 8) 9) Ingredientes: 1 lechuga, 2 tomates, 2 cebollas. Ingredientes: 1 lata de atún, aceite, vinagre, sal. Recursos: ensaladera, cuchillo, plato. Lavar tomates, lechuga, pelar cebolla. Cortar tomates, lechuga, cebolla. Mezclar tomate, cebolla y lechuga en la ensaladera. Poner el atún sobre la ensalada. Aliñar con el aceite, vinagre y sal. Servir plato con la ensalada. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos. 7 Entorno del algoritmo Conjunto de recursos necesarios para la realizar la tarea, en el ejemplo son los ingredientes y los utensilios de cocina,... etc.). Acción Suceso de duración finita que, a partir de un estado particular inicial del entorno, tiene como consecuencia un nuevo estado bien definido. Cada línea del algoritmo. Repertorio de acciones Conjunto de instrucciones u operaciones que puede llevar a cabo el hardware del ordenador. • Acciones de lectura o escritura. • Operaciones aritméticas (suma, resta, multiplicación, división) • Operaciones lógicas (and, or, negación). • Decisiones basadas en comparaciones condicionales. • Acciones repetitivas. Procesador Entidad capaz de ejecutar las instrucciones de forma precisa para realizar la tarea. (Ejemplo anterior, la persona que prepara la ensalada) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Conceptos básicos. 8 Cabecera Nombre del algoritmo. Declaración de constantes y variables Se definen los datos y variables a utilizar. Cuerpo del algoritmo Se encuentran las sentencias que indican los pasos a realizar por el algoritmo. Desde él, se controla las entradas a los procedimientos y funciones principales (aunque estos pueden llamar a otros procedimientos y funciones secundarias). Cierre Se indica el fin del algoritmo. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 9 • Identificar los datos. • Identificar las acciones a realizar. Ejemplo de algoritmo para hacer una ensalada. Fase de identificación de parámetros o datos 1 ensaladera , 1 cuchillo, 1 plato 1 lechuga , 2 tomates , 2 cebollas 1 lata de atún , aceite , vinagre, sal Fase de identificación de acciones Lavar tomates , lechuga, pelar cebolla Cortar tomates, lechuga, cebolla Mezclar tomate , lechuga , cebolla en ensaladera Poner el atún sobre la ensalada Rociar con aceite, vinagre y sal Servir plato con la ensalada Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Fases de diseño 10 Ejemplo de algoritmo para hacer una ensalada. Cabecera Algoritmo Ensalada Declaración de variables 1 ensaladera , 1 cuchillo, 1 plato 1 lechuga , 2 tomates , 2 cebollas 1 lata de atún , aceite , vinagre, sal Cuerpo Lavar tomates , lechuga, pelar cebolla Cortar tomates, lechuga, cebolla Mezclar tomate , lechuga , cebolla en ensaladera Poner el atún sobre la ensalada Rociar con aceite, vinagre y sal Servir plato con la ensalada Cierre fin Algoritmo Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 11 Ejemplo de algoritmo para calcular longitud de una circunferencia. longitud = 2 π r Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 12 • Identificar los datos. • Identificar las acciones a realizar. Ejemplo de algoritmo para calcular la longitud de una circunferencia. Fase de identificación de parámetros o datos (1) π es un parámetro constante y conocemos su valor. (2) radio es un parámetro de entrada y necesitamos su valor. (3) longitud es el parámetro de salida que contendrá el resultado. Fase de identificación de acciones (4) Leer radio. (5) Realizar la operación: 2 π r (6) Mostrar por pantalla el resultado obtenido. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Fases de diseño 13 Algoritmo para calcular la longitud de la circunferencia. Cabecera Algoritmo Circunferencia Declaración de variables Entrada datos Cuerpo Calculo Salida datos Cierre constante real Pi=3.14159 variable real radio, longitud Escribir(“Introduzca el radio de la circunferencia. “) Leer(radio) Longitud=2*Pi*radio Escribir(“Su longitud es: “, longitud) fin Algoritmo Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 14 • Cabecera: define el punto de comienzo del algoritmo. Algoritmo Nombre {descripción algoritmo} • Declaración de constantes y variables: variable entera a, b, c variable real x1, x2, z variable cadena nombre, apellidos variable lógica m, n, p En una misma línea del algoritmo se puede definir más de una variable o constante siempre del mismo tipo y separando por comas. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 15 • Cuerpo del algoritmo: Contiene las acciones o sentencias a realizar que indican los pasos que el ordenador debe ejecutar. Contenido del cuerpo de un algoritmo /* Asignación */ X = expresión /* Instrucciones de entrada salida */ ... /*sentencias de control */ ... /* Llamadas a procedimientos, funciones */ ... /* Muestra de resultados */ ... Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 16 • Finalización o cierre: El cierre define el punto de finalización del algoritmo y se identifica con las palabras : fin Algoritmo • Comentarios: Se pueden incluir comentarios en un algoritmo con objeto de aclarar su contenido. En lenguaje algorítmico se emplean los caracteres // al inicio para indicar que esa línea es un comentario o la pareja de símbolos /* y */ para delimitar un comentario que abarca varias líneas. Algoritmo Título algoritmo /* Comentario */ . . . / / otro comentario f i n Algoritmo Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Estructura básica de un algoritmo 17 1. Realizar un algoritmo que lea un número y escriba el triple. 2. Realizar un algoritmo que calcule la suma de dos números. 3. Realizar un algoritmo que calcule la media de tres números. 4. Realizar un algoritmo que devuelva el área de un triángulo. 5. Realizar un algoritmo que devuelva el área de un círculo leyendo el radio de teclado. r A = π ⋅r 2 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Ejercicios propuestos 18 Se caracterizan por: Nombre: por el cual la referenciamos dentro del algoritmo Dirección: donde se almacena. Tipo: la clase de valores que puede almacenar, implica un tamaño de memoria y conjunto de operaciones sobre los valores. Valor: el contenido en un momento dado. La principal diferencia entre variables y constantes es que las primeras pueden variar su valor (contenido) a lo largo de la ejecución del programa, mientras que las segundas permanecen siempre constantes. Las constantes se suelen declarar después de la cabecera y antes de las variables. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Variables y constantes 19 El tipo de una variable (o constante) define el contenido de ésta, es decir, el tipo de los elementos de su dominio y sus operaciones. Algunos tipos básicos de datos son: entero: Su contenido es un número entero (-10, 6, 291) real: Su contenido es un número real (1.5, -0.63, 54.4E-10) carácter: Su contenido es un carácter alfanumérico (‘a’, …‘z’, ‘A’, …’Z’, ‘0’, …’9’,’+’,’-’,’*’) cadena: Su contenido es un conjunto de caracteres (‘Sara’,’Pedro’) lógico:Su valor indica un hecho cierto o falso (Verdadero / Falso) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Variables y constantes. Tipos básicos 20 Ejemplo de una variable almacenada en memoria. Ejemplo de declaración de variables variable entera a,b,c // declaración de variables enteras variable real x,y,z // declaración de variables reales entera variable carácter s, c // declaración de variables carácter variable cadena w // declaración de variable cadena variable lógica f // declaración de variable lógica Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Variables 21 Pueden considerarse como variables que no cambian su contenido durante la ejecución del programa. Ejemplo de declaración de constantes constante entera base = 10 constante real pi = 3.141592 constante cadena nom = “Salgado” Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Constantes 22 Expresión Es una aplicación de operadores a operandos para obtener un valor. Los operandos básicos son las variables y constantes, si bien también pueden ser funciones. Operaciones relacionadas con los tipos de variables Cada tipo de variable limita un conjunto de operaciones con los datos. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Operadores 23 Acción que permite asignar un valor a una variable. Utilizamos el caracter = como operador de asignación V = E V nombre de la variable a asignar = acción de asignación E valor a asignar (constante, variable o expresión) Homogeneidad en la asignación. Ejemplos de asignación: a= b a=4 Intercambio del contenido de variables a y b c = a, a = b, b = c Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Operador de asignación 24 Para formar expresiones aritméticas se utilizan constantes, variables y operadores (+, -, *, /, div), teniendo en cuenta las prioridades de estos. + suma - resta * producto / división div división entera mod resto división entera funciones matemáticas: raíz_cuadrada, cos, sen, … Algunas expresiones aritméticas en operaciones de asignación a=5 b = a + 15 /* Suma */ c = (b+4)*7 / a / *Di v i s i ó n */ d=raíz_cuadrada(c) /* f u n c i ó n r a í z cuadrada */ r = 7 mod 5 /* Re s t o división entera */ s=7div5 /* Di v i s i ó n entera */ Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Operadores matemáticos 25 Operan sobre datos de tipo lógico. Las expresiones lógicas una vez evaluadas solo pueden tomar el valor verdadero o falso. Y es el y booleano O es el o booleano NO es la negación Algunas expresiones lógicas en operaciones de asignación l=8<5 m = l Y (7 <= 12) n = NO m /* la comparación da un resultado lógico */ /* Negación */ Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Operadores lógicos 26 Operadores sobre cadenas. Son operadores que permiten operar con cadenas de caracteres. alfanuméricos: convertir caracter a número (Carácter) número de caracteres dentro de una cadena(“santiago") unir cadenas (“santiago"+“candela”) encontrar cadena S dentro de cadena R: pos(R,S) extracción subristra: sub(R,P,T) Asignación x = “Me llamo Modesto” Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Operadores sobre cadenas 27 Consisten en una expresión lógica que permite evaluar si una condición se verifica o no. Permiten comparar entre variables o en general entre expresiones utilizando los operadores relacioneles. > mayor que < menor que >= mayor o igual que <= menor o igual que <> distinto que == igual que Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Predicados. Expresiones elementales 28 Sean las variables inicializadas como: a1=13 a2=57 a3=890 Sean las variables inicializadas como: Predicado Resultado a1 < a2 verdadero a2 ≥ 58 falso a3 > a2 verdadero a2 == a3 falso a2 == a3*a1 falso a2 <> a3 verdadero Predicado Resultado n1 < n2 verdadero n3 ≥ n1 verdadero n3 == n1 falso n3 <> n1 verdadero n2 < n3 falso La comparación de dos cadenas se realiza carácter a carácter. n1 = “Daniel” n2 = “Sunil” n3 = “Luis” Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Predicados. Expresiones elementales 29 Permiten construir expresiones lógicas más complejas mediante la combinación de predicados simples con ayuda de operadores lógicos o booleanos. Sean las variables inicializadas como: a1=1, a2=2, a3= 3 Predicado a1 < a2 Y a1 < a3 a1 < a2 Y a1 > a3 a1 < a2 O a1 > a3 NO(a2 ≤ 58) NO(a1 < a2 O a1 > a3) NO(a2 <> a3) Resultado verdadero falso verdadero falso falso falso Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Predicados. Expresiones compuestas 30 Permiten construir expresiones lógicas más complejas mediante la combinación de predicados simples con ayuda de operadores lógicos o booleanos. (a==1 O b==2) Y c>3 a==1 O (b==2 Y c>3) Resultado Resultado (a == 1 O b == 2) Y c > 3 V V F V F F falso a == 1 O (b == 2 Y c > 3) V V F V F V verdadero Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Predicados. Expresiones compuestas 31 Se debe considerar que a, b y c son variables enteras: ¿Son los valores que contienen las variables a y b menores que 17? a < 17 Y b < 17 ¿Contienen a, b y c valores iguales? a == b Y b == c ¿Entre los valores que contienen a, b, y c hay al menos dos que sean iguales? a == b O b == c O a == c ¿Entre los valores que contienen a, b, y c hay a lo sumo dos valores idénticos? (a == b Y b <> c) O (a == c Y b <> c) O (b == c Y a <> c) ¿El valor que contiene a es par y el que contiene b es impar? (a mod 2 == 0) Y (b mod 2 == 1) ¿El valor que contiene a es impar y está comprendido entre b y c? (a mod 2 == 1) Y ((a > b Y a < c) O (a > c Y a < b)) Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Construcción de predicados 32 De mayor a menor jerarquía: Tipo operación Paréntesis Operadores relacionales Producto, división Suma, resta operadores lógicos Símbolo () <;>;<=;>=;==;<> *;/; div;mod +; NO, Y, O Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Jerarquía de operadores 33 Mecanismo por el cual el usuario interactúa con el programa para introducir y sacar o visualizar datos. Escribir Operación de salida que permite mostrar o escribir en un dispositivo de salida: pantalla, impresora, fichero. Escribir(<idDispositivo>, <lista_variables>) //Notación de la escritura Escribir("Cadena de texto") // Mostrar por pantalla un texto Escribir(a,b,c) // Mostrar por pantalla el contenido de las variables a , b , c Escribir( id Fichero,a ,b ,c) /* Escritura en fichero del contenido de las variables a , b , c */ Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Entrada y salida de datos 34 Leer Operación que permite la entrada externa de datos hacia el ordenador. Dispositivo de entrada: teclado, fichero. Leer (<idDispositivo>, lista_variables) // Notación de la lectura Leer (a, b, c) /*Lectura de teclado, los valores se almacenan en las variables a, b, c */ Leer (idFichero, a, b, c) /*Lectura desde fichero */ Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Entrada y salida de datos 35 Ejemplo: Escribir en la pantalla del ordenador ¡Hola mundo! Algoritmo Hola mundo Escribir(“¡Hola mundo!”) fin Algoritmo Ejemplo: Operación de entrada salida Algoritmo Entrada Salida variable entera a Escribir(“Introduzca un valor entero”) Leer(a) fin Algoritmo Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Entrada y salida de datos 36 La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Simula en papel la ejecución de un programa en un ordenador. Visualiza la evolución temporal de las variables de un algoritmo. Permite comprobar que el resultado de un algoritmo se corresponde con la salida esperada. No muestra el funcionamiento correcto de un algoritmo, sino la ausencia de error para cada situación concreta. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza de un algoritmo 37 Definimos un entorno compuesto por una Tabla de análisis de las variables que analiza las variables, y la Tabla de la traza que contiene propiamente la traza. Tabla de análisis de las variables, contiene la información: Variable: Nombre de la variable. Función: Función de esta variable dentro del algoritmo. Valor inicial: Valor de la variable al comienzo del algoritmo. Valor final: Valor final de la variable cuando termina el algoritmo. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza de un algoritmo. Entorno 38 Tabla de la traza, contiene la información: Algoritmo: Visualiza las acciones del algoritmo e indica mediante un número la próxima acción a realizar. Bloque de datos: Muestran la evolución del contenido de todas las variables y constantes a medida que se ejecutan las acciones del algoritmo. Terminal: En este bloque se simula el resultado de la operación de E/S, mostrando los resultados por pantalla o esperando a que el usuario introduzca unos valores por teclado. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza de un algoritmo. Entorno 39 Traza del algoritmo: cálculo de la longitud de una circunferencia. Algoritmo Circunferencia variable real Pi=3.14159265 variable real r, l Escribir(“Introduzca el radio de la circunferencia: ”) Leer(r) l = 2*Pi*r Escribir(“Su longitud es: “, l) fin Algoritmo Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza de un algoritmo. Ejemplo 40 Tabla de análisis de las variables Variable Función Valor inicial Valor final 3,14159265 3,14159265 Valor introducido por el usuario Pi Constante que almacena el valor del número Pi r Varaible que contiene el valor del radio de la circunferencia Valor indeterminado l Variable que almacena el cálculo de la longitud de la circunferencia. Valor longitud = 2pir indeterminado Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza del algoritmo Circunferencia 41 Tabla de la traza Inicialmente 1. Escribir (“Introduzca el radio de la circunferencia:”) 2. Leer(r) (Suponemos que el usuario introduce un 2) 3. l=2*Pi* 4. Escribir(“Su longitud es:”, l) fin de ejecución Terminal Bloque de datos Algoritmo Pi r l 3.14... - - - 3.14... - - Introduzca el radio de la circunferencia: 3.14... 2 - El usuario introduce el radio por el teclado 3.14... 2 12.56... 3.14... 2 3.14... 2 Su longitud es: 12.56... 12.5663 12.56... Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Traza del algoritmo Circunferencia 42 1. Realizar un algoritmo para calcular el volumen de un cilindro leyendo el radio y altura de teclado. r V = π ⋅r2 ⋅h h 2. Realizar un algoritmo para calcular la siguiente función: 4 x 2 − 3xy + 2 y 2 5( x 2 + y 2 ) 3. Realizar un algoritmo que calcule unas previsiones de ventas para una empresa X, de acuerdo a un incremento del 25% en las ventas del año anterior. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Ejercicios propuestos 43 • Fundamentos de Informática y Programación para Ingeniería. Ejercicios Resueltos para C y Matlab. Modesto Castrillón et al, Paraninfo, 2011. • Introducción a la informática, A. Prieto Espinosa, A. Lloris Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid, 1989. Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 Bibliografía 44