Introducción a la Ingeniería Informática [ICI-140] Capítulo 1: Algoritmos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Introducción a la Ingeniería Informática [ICI-140] Capítulo 1: Algoritmos"

Transcripción

1 Introducción a la Ingeniería Informática [ICI-140] Capítulo 1: Algoritmos Dr. Ricardo Soto [ricardo.soto@ucv.cl] [ rsoto] M.Eng. Guillermo Cabrera [guillermo.cabrera@ucv.cl] [ gcabrera] Escuela de Ingeniería Informática Ponticia Universidad Católica de Valparaíso Marzo, 2010 Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 1/30

2 1. Introducción Un algoritmo es un conjunto nito de instrucciones que especican la secuencia de operaciones a realizar para resolver un problema determinado. En otras palabras, es una fórmula para resolver un problema. Generalmente es una lista de la siguiente forma: Paso 1: Hacer algo Paso 2: Hacer algo Paso 3: Hacer algo. Paso n: Hacer algo Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 2/30

3 1. Introducción Ejemplo Un alumno solicita ser el ayudante de un ramo. El profesor examina en la base de datos de la escuela el historial del alumno. Si el alumno está capacitado el profesor lo acepta como ayudante, en caso contrario la solicitud del alumno será rechazada. Los pasos del algoritmo en descripción narrativa son los siguientes: 1 Inicio 2 Leer solicitud del alumno 3 Leer historial del alumno 4 Si el alumno está capacitado, el profesor acepta la solicitud, en caso contrario la solicitud es rechazada. 5 Fin Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 3/30

4 1. Introducción Ejemplo Calcular el promedio de tres notas. 1 Inicio 2 Leer nota 1 3 Leer nota 2 4 Leer nota 3 5 Asignar a suma_de_notas el resultado de nota1+ nota2 + nota3. 6 Asignar a promedio el resultado de suma_de_notas / 3 7 Fin var nota1,nota2,nota3,promedio: numerico inicio leer (nota1) leer (nota2) leer (nota3) suma_de_notas = nota1 + nota2 + nota3 promedio = suma_de_notas / 3 n Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 4/30

5 2. Tipos de datos El principal objetivo de todo computador es el manejo de información o datos. Un dato es la expresión general que describe los objetos con los cuales opera una computadora. Existen dos clases de tipos de datos: simples (sin estructura) y compuestos (estructurados). Tipos de datos simples Datos Numérico Carácter Lógico Entero Real Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 5/30

6 3. Variables, constantes, identicadores y expresiones Una constante es un objeto o una partida de datos cuyo valor no cambia durante el desarrollo del algoritmo o ejecución del programa. Una variable es un objeto o una partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa. Un identicador es el nombre que posee la variable. No se deben utilizar como identicadores palabras reservadas del lenguaje de programación. Una expresión es una combinaciones de constantes, variables, símbolos de operación (+,-,*,/,mod,div), paréntesis y nombres de funciones especiales. Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 6/30

7 4. Estructuras de control Las estructuras de control son las que permiten conducir el ujo del programa. Existen dos tipos de estructuras de control: las estructuras selectivas y las estructuras repetitivas. Las estructuras selectivas se utilizan para tomar decisiones lógicas, también son llamadas estructuras de decisión o alternativas. Las estructuras repetitivas se utilizan para repetir una o varias acciones un número determinado de veces. Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 7/30

8 4.1. Estructuras de control selectivas Alternativa simple si <condicion> <accion 1> <accion 2> si (numero MOD 2 == 0) imprimir("número es par") <accion n> Alternativa doble si <condicion> <accion 1> <accion n> sino <accion 1> <accion n> si (numero MOD 2 == 0) imprimir("número es par") sino imprimir("número es impar") Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 8/30

9 4.1. Estructuras de control selectivas Alternativa múltiple eval caso <condicion 1> <accion 1> caso <condicion 2> <accion 2> caso <condicion n> <accion n> sino <accion sino> imprimir("introduzca una vocal") leer(vocal) eval caso (vocal == 'a') imprimir("ha pulsado la letra a") caso (vocal == 'e') imprimir("ha pulsado la letra e") caso (vocal == 'i') imprimir("ha pulsado la letra i") sino imprimir("no ha pulsado una vocal") Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 9/30

10 4.2. Estructuras de control repetitivas Mientras mientras <condicion> <accion 1> <accion 2> <accion n> mientras (i< 10) imprimir("el número es: ", i) i=i+1 Repetir repetir <accion 1> <accion 2> hasta <condicion n> repetir imprimir("el número es: ", i) i=i+1 hasta (i == 10) Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 10/30

11 4.2. Estructuras de control repetitivas Desde desde <inicio_desde> hasta <fin_desde> <accion 1> <accion 2> <accion n> desde i=1 hasta 9 imprimir("el número es: ", i) Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 11/30

12 Ejercicios Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 12/30

13 4.3. Estructuras de control selectivas anidadas Si anidado si <condicion 1> si <condicion 2> <accion 1> <accion n> Si-sino anidado si <condicion 1> si <condicion 2> <accion 1> <accion n> sino <accion 1> <accion n> sino Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 13/30

14 4.4. Estructuras de control repetitivas anidadas Mientras anidado mientras <condicion1> mientras <condicion2> <accion 1> <accion n> Desde anidado Repetir anidado repetir repetir <accion 1> <accion n> hasta <condicion2> hasta <condicion1> desde <inicio_desde> hasta <fin_desde> desde <inicio_desde> hasta <fin_desde> <accion 1> <accion n> Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 14/30

15 4.4. Estructuras de control anidadas Posibilidad de anidar cualquier combinación de estructuras de control mientras <condicion1> desde <inicio_desde> hasta <fin_desde> si <condicion2> repetir <condicion2> <accion 1> <accion n> hasta <condicion3> sino desde <inicio_desde> hasta <fin_desde> <accion 1> <accion n> Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 15/30

16 Ejercicios Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 16/30

17 5. Subprogramas Un método conocido para solucionar un problema complejo es dividirlo en subproblemas, o problemas más sencillos. La misma técnica se puede aplicar a los algoritmos, donde a cada uno de estos subproblemas le llamaremos Subprogramas, Subalgoritmos o Subrutinas. Problema Principal Programa Principal SubProblema 1 SubProblema 2 SubProblema 3 SubPrograma 1 SubPrograma 2 SubPrograma 3 Podemos identicar 2 tipos comunes de subprogramas: Funciones: retornan un valor y pueden utilizarse como operandos en expresiones. Procedimientos: no retornan un valor, por lo que no pueden utilizarse como operandos en expresiones. Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 17/30

18 5.1. Funciones Una función es una operación que toma uno o más valores llamados argumentos y retorna un resultado. Los argumentos de la declaración de la función se denominan parámetros formales y sólo se utilizan dentro del cuerpo de la función. subrutina <nombre_funcion> (<parametros_formales>) retorna <tipo_de_dato> var <declaraciones_locales> inicio <acciones> retorna <expresion> n subrutina cuadrado(x: numerico) retorna numerico inicio retorna x*x n Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 18/30

19 5.1. Funciones Invocación de la función <nombre_funcion> (<parametros_actuales>) Los argumentos utilizados en la llamada a la función se denominan parámetros actuales. Debe haber exactamente el mismo número de parámetros actuales y formales, presuponiéndose además correspondencia uno a uno de izquierda a derecha. inicio imprimir("ingrese número: ") leer(n) imprimir("el resultado es: ", cuadrado(n)) n subrutina cuadrado(x: numerico) retorna numerico inicio retorna x*x n Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 19/30

20 5.2. Procedimientos El procedimiento se utiliza cuando no es necesario retornar un valor al programa principal. Los argumentos de la declaración de la función se denominan parámetros formales y sólo se utilizan dentro del cuerpo de la función. subrutina <nombre_funcion> (<parametros_formales>) var <declaraciones_locales> inicio <acciones> retorna <expresion> n subrutina mensaje_fuera_servicio() inicio imprimir("estimado cliente lamentamos informarle que nuestro sitio se encuentra temporalmente fuera de servicio") n Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 20/30

21 5.2. Procedimientos Invocación del procedimiento <nombre_procedimiento> (<parametros_actuales>) De igual forma que en las funciones: Los argumentos utilizados en la llamada al procedimiento se denominan parámetros actuales. Debe haber exactamente el mismo número de parámetros actuales y formales, presuponiéndose además correspondencia uno a uno de izquierda a derecha. inicio si (sistema_caido == TRUE) mensaje_fuera_servicio() n subrutina mensaje_fuera_servicio() inicio imprimir("estimado cliente lamentamos informarle n Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 21/30

22 5.3. Paso de Parámetros Existen dos formas de pasar parámetros: Por valor los cambios aplicados a la variable que recibe el parámetro NO se ven reejados en el programa que llama a la subrutina. Por referencia los cambios aplicados a la variable que recibe el parámetro SI se ven reejados en el programa que llama a la subrutina. Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 22/30

23 5.3. Paso de Parámetros var a,b : numerico inicio a = 1 b = 1 mi_sub(a,b) imprimir("\n a: ",a, "\n b: ",b) n subrutina mi_sub(a : numerico; ref b : numerico) inicio a=a+1 b=b+1 n Resultado a: 1 b: 2 Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 23/30

24 Ejercicios Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 24/30

25 6. Arreglos Un arreglo es un conjunto nito y ordenado (cada elemento puede ser identicado) de elementos homogéneos (son del mismo tipo de datos). Existen distintos tipos de arreglos, los cuales varían dependiendo principalmente de su dimension: Arreglo unidimensional, también llamado vector. Arreglo bidimensional, también llamado matriz. Arreglo multidimensional. Los arreglos soportan diversas operaciones tales como asignación, lectura, escritura, recorrido, actualización (añadir, borrar, insertar), ordenación, búsqueda, etc. Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 25/30

26 6.1 Arreglos Unidimensionales Declaración <nombre_arreglo> : vector [<tamaño>] <tipo_de_dato> mi_vector : vector [10] numerico notas[1] notas[2] notas[3] notas[n] Subíndice denota posición del elemento en el vector Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 26/30

27 6.1 Arreglos Unidimensionales Lectura imprimir("ingrese el primer valor del vector") leer(mi_vector[1]) Asignación mi_vector[1] = 28 //llenar el vector con ceros desde i=1 hasta 10 mi_vector[i] = 0 Impresión imprimir("el primer valor del vector es: ", mi_vector[1]) Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 27/30

28 6.1 Arreglos Bidimensionales Declaración <nombre_arreglo> : vector [<tamaño_fila>,<tamaño_columna>] <tipo_de_dato> mi_matriz : matriz [10,10] numerico Fila 1 Fila 2 Fila 3 notas[1,1] notas[1,2] notas[2,1] notas[2,2] notas[3,1] notas[3,2] notas[1,j] notas[2,j] notas[3,j] Fila i notas[i,1] notas[i,2] notas[i,j] Columna 1 Columna 2 Columna j Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 28/30

29 6.1 Arreglos Bidimensionales Lectura imprimir("ingrese el primer valor de la matriz") leer(mi_matriz[1,1]) Asignación mi_matriz[1,1] = 28 //llenar la matriz con ceros desde i=1 hasta 10 desde j=1 hasta 10 mi_vector[i,j] = 1 Impresión imprimir("el primer valor de la matriz es: ", mi_matriz[1,1]) Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 29/30

30 Ejercicios Dr. Ricardo Soto - M.Eng Guillermo Cabrera Introducción a la Ingeniería Informática 30/30