Introducción a la Ingeniería Informática

Anuncio
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
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
Capítulo 1: Algoritmos
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
Capítulo 1: Algoritmos
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
Capítulo 1: Algoritmos
1. Introducción
Ejemplo
Calcular el promedio de tres notas.
Inicio
Leer nota 1
Leer nota 2
Leer nota 3
1
2
3
4
5
6
7
Asignar a suma_de_notas el resultado
de nota1+ nota2 + nota3.
Asignar a promedio el resultado de
suma_de_notas / 3
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 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
Capítulo 1: Algoritmos
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,
+,-,*,/,mod,div...), paréntesis y nombres
símbolos de operación (
de 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
estructuras de control son las que permiten conducir el ujo del
estructuras
selectivas y las estructuras repetitivas.
Las
programa. Existen dos tipos de estructuras de control: las
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
Capítulo 1: Algoritmos
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>
Dr. Ricardo Soto - M.Eng Guillermo Cabrera
si (numero MOD 2 == 0)
{
imprimir("número es par")
sino
}
imprimir("número es impar")
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
}
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")
...
<accion sino>
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>
Dr. Ricardo Soto - M.Eng Guillermo Cabrera
desde i=1 hasta 9
{
}
imprimir("el número es: ", i)
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
Repetir anidado
mientras <condicion1>
{
mientras <condicion2>
{
}
repetir
repetir
}
<accion 1>
...
<accion n>
hasta <condicion2>
hasta <condicion1>
<accion 1>
...
<accion n>
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 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.
Programa
Principal
Problema
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
Capítulo 1: Algoritmos
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
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 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
Capítulo 1: Algoritmos
5.2. Procedimientos
procedimiento se utiliza cuando no es necesario retornar un valor al
El
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
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 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()
}
...
subrutina mensaje_fuera_servicio()
inicio
imprimir("Estimado cliente
lamentamos informarle ...
n
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 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
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
Resultado
a: 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 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
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[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
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
Fila 1
notas[1,1] notas[1,2]
notas[1,j]
Fila 2
notas[2,1] notas[2,2]
notas[2,j]
Fila 3
notas[3,1] notas[3,2]
notas[3,j]
Fila i
notas[i,1] notas[i,2]
notas[i,j]
Columna 1 Columna 2
Dr. Ricardo Soto - M.Eng Guillermo Cabrera
Columna j
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
Descargar