• No se han encontrado resultados

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

N/A
N/A
Protected

Academic year: 2021

Share "Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011"

Copied!
45
0
0

Texto completo

(1)

Informática y Programación

Escuela de Ingenierías Industriales y Civiles

Curso 2010/2011

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Módulo 2.

Fundamentos de

Programación

(2)

Tema 1. Conceptos generales de algorítmica

Tema 2. Sentencias de control

Tema 3. Conjuntos dimensionados

Tema 4. Programación modular

Tema 5. Ficheros

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

CONTENIDO

(3)

PROGRAMACIÓN MODULAR

Introducción

Definiciones

Parámetros y variables

Recursividad

Ventajas de la programación modular

Análisis/Diseño modular

Ejercicios

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(4)

La solución de un problema complejo puede obtenerse a

menudo a partir de la resolución de subproblemas más

simples (estrategia “divide y vencerás”).

Análogamente, un algoritmo que resuelve un problema

complejo puede expresarse en términos de subalgoritmos

que resuelven problemas simples.

4 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Problema Subproblemas Algoritmo

Introducción

(5)

Ejemplo: Cálculo del número combinatorio

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 5 Algoritmo Combinatorio_NoModular

variable entera n, k, i, num, denA , denB Leer(n, k)

num = 1, denA = 1, denB = 1 para i desde 1 hasta n hacer

num = num*i fin para

para i desde 1 hasta n-k hacer denA = denA*i

fin para

para i desde 1 hasta k hacer denB = denB*i

fin para

Escribir("Resultado: " , num/( denA*denB ) )

Solución no

modular: Código redundante para realizar la misma tarea, en este caso el factorial de un número. Observa que sólo cambia la condición de parada.

(

)

!

!

!

)

,

(

k

n

k

n

k

n

k

n

C

=





=

(6)

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 6 Algoritmo Combinatorio_Modular

Función entera Fact(n) variable entera n, i, f f=1

para i desde 1 hasta n hacer f=f*i fin para devolver f fin Función variable entera n, k Leer(n, k) Escribir("Resultado: " , Fact(n)/ (Fact(n-k)*Fact(k)) Solución modular: Subalgoritmo La parte principal es mucho más compacta y simple

(

)

!

!

!

)

,

(

k

n

k

n

k

n

k

n

C

=





=

(7)

Definiciones

Un

subalgoritmo

es un

conjunto de instrucciones

identificadas con un

nombre único

que toma una serie de

datos de entrada

y los procesa para generar un

resultado

.

Puede ser llamado o invocado

desde un algoritmo o desde

otros subalgoritmos (estructura jerárquica).

Su uso reduce el algoritmo, simplificándolo ya que hace

innecesaria la repetición de código para realizar una misma

tarea.

Dos

tipos

:

Funciones

: retornan un valor.

Procedimientos

: no devuelven nada.

G

ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(8)

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función <tipo> <nombre> (<param>) <declaración_variables>

<cuerpo>

devolver valor <cuerpo>

fin Función

Procedimiento <nombre> (<param>) <declaración_variables>

<cuerpo> retornar <cuerpo>

fin Procedimiento

Estructura similar a un algoritmo: cabecera, declaración

de variables y constantes, cuerpo y cierre.

Diferencias: la cabecera incluye

una lista de parámetros

y el

cuerpo contiene

instrucciones de retorno

, indicando además el

valor a retornar en el caso de las funciones.

(9)

Ejemplos

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo Algoritmo Prueba_Procedimiento Procedimiento Escribe_Pot_23(x) variable real x Escribir(“Cuadrado=”, x*x, “cubo=“, x*x*x) retornar fin Procedimiento variable real y Leer(y) Escribe_Pot_23(y) Declaración Retorno

(10)

Ejemplos – ejecución 1

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo

Se inicia la ejecución en el algoritmo

(11)

Ejemplos – ejecución 2

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo

Continúa la ejecución en el algoritmo principal

(12)

Ejemplos – ejecución 3

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo

Se produce la

llamada a la función desde el algoritmo principal

(13)

Ejemplos – ejecución 4

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo Se suspende la ejecución en el algoritmo principal La ejecución salta a la función

(14)

Ejemplos – ejecución 5

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo

Algoritmo principal a la espera

Termina la ejecución en la función

(15)

Ejemplos – ejecución 6

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x devolver x*x fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y) fin Algoritmo

Se reanuda la ejecución en el algoritmo principal, a la variable y se le asigna el valor retornado por la función

(16)

Parámetros y variables

En la declaración de un subalgoritmo se incluyen los

parámetros

a través de los cuales se le suministran los datos

de entrada.

En el momento de la llamada se produce un intercambio de

información

entre

los

parámetros

del

subalgoritmo

(

parámetros formales

) y las variables del algoritmo principal

(

parámetros reales

).

Además de los parámetros, pueden existir

variables

internas

que son de ámbito local al subalgoritmo.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(17)

Ejemplo

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo Prueba_Función Función real Cuadrado (x)

variable real x variable real y y=x*x; devolver y fin Función variable real y, z Leer(z) y = Cuadrado(z)

Escribir(“El cuadrado de ”, z, “es”, y)

Parámetro real Parámetro formal

Variable local a la función

(18)

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Existen dos modos de paso de parámetros:

Por valor

: el contenido de los parámetros reales se copia a los

parámetros formales. Las modificaciones internas al subalgoritmo

no afectan a la variable externa. Pueden verse como

parámetros

de entrada

.

Por referencia

: se pasa una referencia a la dirección de memoria

del parámetro real. Si se modifica el parámetro formal se

modifica la variable externa. Pueden verse como

parámetros de

salida o de entrada/salida

.

En la lista de parámetros, el paso por referencia se indica

anteponiendo

ref

al parámetro.

(19)

Ejemplo

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 19 Algoritmo Prueba_Procedimiento

Procedimiento Pot_23(x, ref x2, ref x3) variable real x, x2, x3 x2 = x*x, x3 = x2*x x = 0 retornar fin Procedimiento variablesreal y, y2, y3 y = 7, y2 = 0, y3 = 0 Pot_23(y, y2, y3)

Escribir(“V=”, y, “V^2=“, y2, “V^3=“, y3)

Paso por valor Paso por referencia Modificación de variables interna al procedimiento Inicialización

(20)

Ejemplo - continuación

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 20 Algoritmo Prueba_Procedimiento

Procedimiento Pot_23(x, ref x2, ref x3) variable real x, x2, x3 x2 = x*x, x3 = x2*x x = 0 retornar fin Procedimiento variablesreal y, y2, y3 y = 7, y2 = 0, y3 = 0 Pot_23(y, y2, y3)

Escribir(“V=”, y, “V^2=“, y2, “V^3=“, y3)

Paso por valor Paso por referencia y 7 y2 0 y3 0 Estado de la memoria antes de la llamada

(21)

Ejemplo - continuación

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 21 Algoritmo Prueba_Procedimiento

Procedimiento Pot_23(x, ref x2, ref x3) variable real x, x2, x3 x2 = x*x, x3 = x2*x x = 0 retornar fin Procedimiento variablesreal y, y2, y3 y = 7, y2 = 0, y3 = 0 Pot_23(y, y2, y3)

Escribir(“V=”, y, “V^2=“, y2, “V^3=“, y3) fin Algoritmo Paso por valor Paso por referencia y 7 y2, x2 0 y3, x3 0 x 7 Estado de la memoria al entrar en el procedimiento x2 y x3 hacen referencia a

la misma dirección que y2 e y3, respectivamente

x es una variable distinta sobre la que se copia el

(22)

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

NOTA:

En realidad, el programa principal y las funciones

poseen espacios de memoria separados.

Aquí se utiliza una representación simplificada a fin de

facilitar la exposición.

(23)

Ejemplo - continuación

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 23 Algoritmo Prueba_Procedimiento

Procedimiento Pot_23(x, ref x2, ref x3) variable real x, x2, x3 x2 = x*x, x3 = x2*x x = 0 retornar fin Procedimiento variablesreal y, y2, y3 y = 7, y2 = 0, y3 = 0 Pot_23(y, y2, y3)

Escribir(“V=”, y, “V^2=“, y2, “V^3=“, y3)

Paso por valor Paso por referencia y 7 y2, x2 49 y3, x3 343

Estado de la memoria tras ejecutar el cuerpo del procedimiento

(24)

Ejemplo - continuación

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 24 Algoritmo Prueba_Procedimiento

Procedimiento Pot_23(x, ref x2, ref x3) variable real x, x2, x3 x2 = x*x, x3 = x2*x x = 0 retornar fin Procedimiento variablesreal y, y2, y3 y = 7, y2 = 0, y3 = 0 Pot_23(y, y2, y3)

Escribir(“V=”, y, “V^2=“, y2, “V^3=“, y3) fin Algoritmo Paso por valor Paso por referencia y 7 y2 49 y3 343 Estado de la memoria al volver al programa principal y no ha cambiado y2 e y3 se han

(25)

Recursividad

Una

función recursiva

es aquella que se llama a sí misma.

Permite soluciones compactas para algunos problemas.

La estructura de una función recursiva incluye siempre al

menos una condición de salida o

caso base

y una o más

llamadas recursivas

.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función <tipo> FunRec(param) si <condición_sobre_param> devolver <valor> si no <modificar_param> resultado=<depende_de> FunRec(param) devolver resultado fin si Caso base Llamada

(26)

Ejemplo: obtener el factorial de un número.

n! = n*(n-1)*(n-2)…*1

0!=1

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función entera FactorialNoRec(n) variable entera n, i, f

si n<=1 entonces devolver 1

si no f=1

para i desde 1 hasta n hacer f=f*i

fin para devolver f fin si

fin Función

Función entera FactorialRec(n) si n<=1 entonces devolver 1 si no devolver n*FactorialRec(n-1) fin si fin Función Solución no Solución recursiva

(27)

Ventajas de la programación

modular

Facilita la programación

: Es más sencillo resolver varios

problemas simples que uno complejo.

Mayor

claridad

: Programación estructurada en bloques y

código más compacto.

Ahorro de tiempo

: Cada parte de la solución puede

desarrollarse independientemente en paralelo.

Facilita la modificación/mantenimiento

.

Permite la

reutilización del código

: Empaquetado de

funciones y procedimientos en librerías

o bibliotecas

reutilizables.

Gru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(28)

Una

librería

es un conjunto de funciones y procedimientos

con un nexo común que se empaquetan para su reutilización.

Ejemplos: funciones gráficas, entrada/salida, matemáticas, etc.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Librería genérica Problema A Problema B Problema C

Librerías

(29)

Análisis/Diseño modular

Aspectos específicos a considerar:

Identificación de subproblemas

: ¿puede el problema

descomponerse en problemas más simples? ¿Pueden, a su vez,

dichos subproblemas descomponerse? (estructura jerárquica)

Planteamiento de la solución

: ¿cómo se obtiene la solución

global a partir de las particulares?

Identificación de

funciones/procedimientos y sus parámetros

.

Generación de

librerías

: ¿son los subalgoritmos de utilidad para

otros problemas?

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(30)

Características deseables

de los subalgoritmos:

Caja negra: la salida solo depende de los parámetros de entrada.

Número reducido de parámetros de entrada.

Pocas líneas de código y simplicidad.

Evitar demasiados niveles de jerarquía en la solución (hay que

llegar a un compromiso con la anterior).

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Características deseables

(31)

Estudio de casos: Ejemplo 1

Estamos diseñando el

software para una empresa

de ámbito

nacional.

El precio final de cada uno de los productos que

comercializa se obtiene añadiendo al precio de partida los

impuesto locales de la región de venta

. Analizar este aspecto

desde la perspectiva de la programación modular.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Facturación Contabilidad Publicidad

(32)

Ejemplo 1 - continuación

A) Subproblemas y solución

• El cálculo del precio es una operación que con total seguridad se

requerirá en múltiples puntos del software.

• Si no se usase un subalgoritmo para realizarla, cualquier cambio en

la forma en que se computa el precio sería costoso de aplicar, ya que requiere modificar todos y cada uno de los puntos donde se aplica el cálculo del precio.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Cálculo Facturación Contabilidad Publicidad CPrecio CPrecio CPrecio

(33)

Ejemplo 1 - continuación

B) Funciones/Procedimientos y parámetros

• Se puede emplear una función que tome como datos de entrada el

precio y la región de venta y devuelva el precio final.

33 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función real CalculaPrecioFinal(precio, región) variable real precio

variable entera región variable real impuesto según región hacer

caso 1, impuesto = 4.5 // Canarias caso 2, impuesto = 5.5 // Andalucía …

otro caso, impuesto = 5.0 fin según

(34)

Ejemplo 1 - continuación

• Si el cálculo de los impuestos fuese necesario para otros algoritmos,

podría codificarse también como una función independiente.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función real CalculaImpuesto(región) variable entera región

variable real impuesto según región hacer

caso 1, impuesto = 4.5 // Canarias caso 2, impuesto = 5.5 // Andalucía …

otro caso, impuesto = 5.0 fin según

(35)

Jerarquía:

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Cálculo precio Facturación Contabilidad Publicidad Cálculo impuesto

Ejemplo 1 - continuación

(36)

Estudio de casos: Ejemplo 2

Tenemos que escribir

diferentes algoritmos para realizar

operaciones con vectores y matrices

, pidiendo los datos por

teclado y mostrando el resultado por pantalla: sumas, restas,

multiplicaciones, divisiones, producto escalar, etc.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Algoritmo SumaM Algoritmo ProductoM Algoritmo RestaM Algoritmo PEscalarV Algoritmo Algoritmo DivisiónM

(37)

Estudio de casos: Ejemplo 2

A) Subproblemas y solución

• Todos los algoritmos requieren tres fases: lectura de datos,

operación y escritura de resultados.

• La solución se obtiene encadenando secuencialmente las tres fases. • Las fases de lectura y escritura son similares en muchos algoritmos.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Lectura de

matrices matricialSuma

Escritura de matriz Lectura de

matrices Producto matricial

Escritura de matriz

Algoritmo SumaM Algoritmo ProductoM

(38)

Ejemplo 2 - continuación

B) Funciones/Procedimientos

• La fase de lectura pide datos al usuario y los devuelve en forma de

vector o matriz → funciones o procedimientos con parámetros de

entrada/salida para leer vectores y matrices (lee_vector, lee_matriz).

• La fase de escritura muestra resultados por pantalla →

procedimientos para escribir vectores y matrices (escribe_vector, escribe_matriz).

• Las operaciones toman los datos para generar resultados, son

comunes y seguramente las volvamos a necesitar → funciones o

procedimientos diferentes para cada operación (suma_vectores, multiplica_matrices, etc). 38 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Funciones de lectura Algoritmos Funciones de Procedimientos de escritura

(39)

Ejemplo 2 - continuación

Podríamos pensar en una función de lectura genérica que

llamara a la función lee_matriz, que llamara a lee_vector por

cada fila, esta a su vez a lee_elemento para cada posición y

esta finalmente a lee_número.

• Mala solución, demasiados niveles jerárquicos no justificados

pueden complicar el código.

39 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Funciones de lectura de Funciones de lectura de vectores Funciones de lectura de matrices Funciones de lectura de elementos Función de lectura

(40)

Ejemplo 2 - continuación

Sí podría estar justificada la siguiente jerarquía

:

• La división de matrices es un producto de una matriz por la

inversa de la otra -> puede llamarse a la función producto matricial.

• La multiplicación de matrices consiste en una serie de productos

escalares de vectores fila y columna -> puede llamarse a la función producto escalar.

40 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11 Función Producto Función Producto Matricial Función División Matricial

(41)

Ejemplo 2 - continuación

C) Parámetros – caso lee_matriz

• Este subalgoritmo de lectura necesita conocer las dimensiones de la

matriz a leer, por lo que tomará dos parámetros de entrada: el número de filas y el número de columnas.

• Si se programa como función podría devolver un puntero a la matriz

leída o bien un dato tipo matriz.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Función ref entera lee_matriz (filas, columnas) ...

• Si se programa como procedimiento se le pasa por referencia una

matriz que luego se rellena con los datos introducidos por el usuario.

Procedimiento lee_matriz (filas, columnas, ref M) ...

(42)

Ejercicios

1. Escribir un algoritmo que realice la conversión de pulgadas a centímetros utilizando una función. El factor de conversión es: 1 pulgada = 2,54 cm.

2. Diseñar un algoritmo, que haciendo uso de una función, evalúe la siguiente fórmula:

3. Escribir un algoritmo que use una función para convertir las letras de una cadena de caracteres de minúscula a mayúscula. Asumir por simplicidad que la cadena no contiene tildes, y que además de los caracteres solo contiene espacios en blanco.

4. Escribir un algoritmo que guarde en un vector los elementos de una matriz ordenados por filas, utilizando para ello subprogramas.

1 2 3 4 5 6 7 8 9 G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(

)

(

) (

( )

(

2

!

)

)

!

2

!

2

!

!

!

n

m

n

m

k

n

k

n

x

+

=

(43)

Ejercicios

5.

Escribir, usando subalgoritmos reutilizables,

A. Un algoritmo que lea una matriz e imprima los elementos sobre la diagonal principal. Ejemplo, para la matriz:

1 2 3

4 5 6

7 8 9

El resultado sería: 1 2 3 5 6 9.

B. Un algoritmo que lea una matriz e imprima los elementos bajo la diagonal secundaria. Para el ejemplo anterior el resultado sería: 3 5 6 7 8

6.

Realizar un algoritmo que devuelva como resultado la traspuesta

de una matriz de m filas y n columnas, considerando que m y n

pueden no ser iguales. Utilizar subprogramas en la solución.

7.

Escribir un algoritmo, haciendo uso de subprogramas, que

sustituya una fila i de una matriz por la resta de esa fila con el

43

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(44)

Ejercicios

8.

Escribir un algoritmo que calcule el sumatorio de los n primeros

números enteros, haciendo uso de una función recursiva.

9.

Escribir un algoritmo que dado un número x calcule su potencia p,

utilizando para ello una función recursiva.

10.

Escribir un algoritmo que calcule para dos números enteros n

elevado a m, haciendo uso de una función recursiva.

11.

Desarrollar un algoritmo recursivo que devuelva el enésimo

número de la serie de Fibonacci.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

(45)

Bibliografía

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.

G ru po D oc en te Iy P – D ep art ame nt o d e In fo rmá tic a y Sis te mas -2010/ 11

Referencias

Documento similar