Introducción a la Ingeniería Informática [ICI-140...

30

Transcript of Introducción a la Ingeniería Informática [ICI-140...

Capítulo 1: Algoritmos

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

Dr. Ricardo Soto[[email protected]]

[http://www.inf.ucv.cl/∼rsoto]M.Eng. Guillermo Cabrera

[[email protected]]

[http://www.inf.ucv.cl/∼gcabrera]

Escuela de Ingeniería Informática

Ponti�cia 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

Capítulo 1: Algoritmos

1. Introducción

Un algoritmo es un conjunto �nito de instrucciones que especi�can

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

Capítulo 1: Algoritmos

1. Introducción

Ejemplo

Un alumno solicita ser el ayudante de un ramo. El profesor examina en labase de datos de la escuela el historial del alumno. Si el alumno estácapacitado el profesor lo acepta como ayudante, en caso contrario lasolicitud del alumno será rechazada.

Los pasos del algoritmo en descripción narrativa son los siguientes:

1 Inicio2 Leer solicitud del alumno3 Leer historial del alumno4 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

Capítulo 1: Algoritmos

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 resultadode nota1+ nota2 + nota3.

6 Asignar a promedio el resultado desuma_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

Capítulo 1: Algoritmos

2. Tipos de datos

El principal objetivo de todo computador es el manejo deinformación o datos. Un dato es la expresión general que describelos objetos con los cuales opera una computadora.

Existen dos clases de tipos de datos: simples (sin estructura) ycompuestos (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

Capítulo 1: Algoritmos

3. Variables, constantes, identi�cadores y expresiones

Una constante es un objeto o una partida de datos cuyo valor nocambia durante el desarrollo del algoritmo o ejecución del programa.

Una variable es un objeto o una partida de datos cuyo valor puedecambiar durante el desarrollo del algoritmo o ejecución delprograma.

Un identi�cador es el nombre que posee la variable. No se debenutilizar como identi�cadores palabras reservadas del lenguaje deprogramación.

Una expresión es una combinaciones de constantes, variables,símbolos de operación (+,-,*,/,mod,div...), paréntesis y nombresde funciones especiales.

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

Capítulo 1: Algoritmos

4. Estructuras de control

Las estructuras de control son las que permiten conducir el �ujo delprograma. Existen dos tipos de estructuras de control: las estructurasselectivas 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 accionesun número determinado de veces.

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

Capítulo 1: Algoritmos

4.1. Estructuras de control selectivas

Alternativa simple

si <condicion>

{

<accion 1>

<accion 2>

<accion n>

}

si (numero MOD 2 == 0)

{

imprimir("número es par")

}

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

Ejercicios

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

4.4. Estructuras de control repetitivas anidadas

Mientras anidado

mientras <condicion1>

{

mientras <condicion2>

{

<accion 1>

...

<accion n>

}

}

Repetir anidado

repetir

repetir

<accion 1>

...

<accion n>

hasta <condicion2>

hasta <condicion1>

Desde anidado

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

Ejercicios

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

Capítulo 1: Algoritmos

5. Subprogramas

Un método conocido para solucionar un problema complejo es dividirlo ensubproblemas, o problemas más sencillos. La misma técnica se puedeaplicar a los algoritmos, donde a cada uno de estos subproblemas lellamaremos Subprogramas, Subalgoritmos o Subrutinas.

ProblemaPrincipal

SubProblema2

SubProblema3

SubProblema1

ProgramaPrincipal

SubPrograma2

SubPrograma3

SubPrograma1

Podemos identi�car 2 tipos comunes de subprogramas:

Funciones: retornan un valor y pueden utilizarse como operandos enexpresiones.

Procedimientos: no retornan un valor, por lo que no puedenutilizarse como operandos en expresiones.

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

Capítulo 1: Algoritmos

5.1. Funciones

Una función es una operación que toma uno o más valores llamadosargumentos y retorna un resultado.

Los argumentos de la declaración de la función se denominanparámetros formales y sólo se utilizan dentro del cuerpo de lafunció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

Capítulo 1: Algoritmos

5.1. Funciones

Invocación de la función

<nombre_funcion> (<parametros_actuales>)

Los argumentos utilizados en la llamada a la función se denominanparámetros actuales.

Debe haber exactamente el mismo número de parámetros actuales yformales, 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

Capítulo 1: Algoritmos

5.2. Procedimientos

El procedimiento se utiliza cuando no es necesario retornar un valor alprograma principal.

Los argumentos de la declaración de la función se denominanparámetros formales y sólo se utilizan dentro del cuerpo de lafunció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

Capítulo 1: Algoritmos

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 denominanparámetros actuales.

Debe haber exactamente el mismo número de parámetros actuales yformales, 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

Capítulo 1: Algoritmos

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 seven re�ejados en el programa que llama a la subrutina.

Por referencia

los cambios aplicados a la variable que recibe el parámetro SI se venre�ejados 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

Capítulo 1: Algoritmos

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

Resultadoa: 1

b: 2

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

Capítulo 1: Algoritmos

Ejercicios

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

Capítulo 1: Algoritmos

6. Arreglos

Un arreglo es un conjunto �nito y ordenado (cada elemento

puede ser identi�cado) de elementos homogéneos (son del

mismo tipo de datos).

Existen distintos tipos de arreglos, los cuales varíandependiendo 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

Capítulo 1: Algoritmos

6.1 Arreglos Unidimensionales

Declaración

<nombre_arreglo> : vector [<tamaño>] <tipo_de_dato>

mi_vector : vector [10] numerico

notas[1] notas[3]notas[2] notas[n]

Subíndice denota posicióndel elemento en el vector

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

6.1 Arreglos Bidimensionales

Declaración

<nombre_arreglo> : vector [<tamaño_fila>,<tamaño_columna>] <tipo_de_dato>

mi_matriz : matriz [10,10] numerico

notas[1,1] notas[1,2] notas[1,j]

Columna 1

notas[2,1] notas[2,2] notas[2,j]

notas[3,1] notas[3,2] notas[3,j]

notas[i,1] notas[i,2] notas[i,j]

Columna 2 Columna j

Fila 1

Fila 2

Fila 3

Fila i

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

Capítulo 1: Algoritmos

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

Capítulo 1: Algoritmos

Ejercicios

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