Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Funciones

No description
by

Gabriel Chaldu

on 3 April 2018

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Funciones

Por: Prof. Gabriel Chaldu
Funciones - Acoplamiento - Cohesión en C
Parámetros formales:
Son variables.
Por valor (o copia)
como la función trabaja con una copia la variable origen no altera su contenido porque tiene otra dirección de memoria.
Por referencia

se utiliza una variable puntero

como parámetro formal y el parámetro actual es una dirección de memoria. Se asigna la dirección de memoria de la variable que oficia de parámetro actual, por lo tanto, dentro de la función se puede acceder directamente al contenido de la variable a través del operador
*
. Se puede modificar el contenido de la dirección de memoria apuntada por el parámetro, pero no se puede modificar el parámetro.
Algoritmo de Ordenamiento por selección
Ordenamiento Por Selección
Algoritmo de Ordenamiento por Inserción
Ordenamiento por Inserción
void

insertar
(int a[8], int u, int dato)
{
int i= u;
while
(i >= 0 && dato < a[i])
{
a[i+1] = a[i];
i --;
}
a[i+1] = dato;
}
¿Qué es una Función?
Conjunto de instrucciones que realizan un tarea específica.
Ventajas:
Disminuir la cantidad de líneas de código.

Tipo de Retorno
Parámetros
Cuerpo de la
Función
Llamada de una Función

<nombre_función>
(parámetro/s);
En caso de Retorno
Algunas Funciones
No tienen
int
posicion_menor
(int a[8], int pos)
{
int menor = a[pos];
int posmenor = pos;
int index = pos + 1;
while (index < 8)
{
if(menor > a[index])
{
menor = a[index];
posmenor = index;
}
index++;
}
return
posmenor;
}
void
intercambio
(int *a, int *b)
{
int aux;
aux = a;
*a = *b;
*b = *aux;
}
void
ordenacion_seleccion
(int a[8])
{
int posmenor;
int i = 0;
while(i<7)
{
posmenor =
posicion_menor
(a, i);
intercambio
(&a[pormenor], &a[i]);
i++;
}
}
void
ordenacion_insercion
(int a[8])
{
int u=0;
while (u < 7)
{
insertar
(a, u, a[u+1]);
u++;
}
}
Diseño Estructurado
El objetivo del diseño es
minimizar los costos
. El costo del software está determinado por el
costo de mantenimiento
, y el costo del mantenimiento está determinado por el
costo de los cambios que surgen en el sistema.
El costo esperado se puede reducir atendiendo a dos factores:
El acoplamiento
entre los elementos.
La cohesión
dentro de los elementos.
Acoplamiento = Dependencia
Dos elementos están acoplados en la medida en el que los cambios en uno tienden a necesitar cambios en el otro.
Cohesión = Propósito
A mayor cohesión, mejor: el módulo en cuestión será más sencillo de diseñar, programar, probar y mantener.
En el diseño estructurado, se logra alta cohesión cuando cada módulo (función o procedimiento) realiza una
única tarea
. Un test que se suele hacer es que puedan describirse con una
oración simple
, con
un solo verbo activo
,
lo que hace la función
. Si hay más de un verbo activo en la descripción del procedimiento o función, deberíamos analizar su partición en más de un módulo, y volver a hacer el test.
Ejemplo:

Imaginemos un componente que gestiona el estado de una ficha de datos personales. Lo lógico sería que su contrato tuviese operaciones como "
Actualizar nombres y apellidos
", "
Eliminar teléfono de contacto
" y demás. Si defino una operación que
calcula el pronóstico del tiempo en Paris
para el próximo fin de semana, pues la cohesión se anula completamente, ya que nada tiene que ver con el resto de operaciones y, sobretodo, con el fin del componente.
Identificador de la Función
El Diseño de Software
¿Cómo medimos si un diseño es bueno o malo?
¿Cómo saber cuando un Acoplamiento es Alto?
La palabra clave es CAMBIO, MODIFICACIÓN, MANTENIMIENTO.
Si tengo que modificar un módulo y este tiene muchas dependencias este cambio seguramente afectara al resto de los módulos que también tendré que modificar.
<variable receptora> =
int posicionMenor (int A[], int pos, int c)
{
int menor = A[pos];
int posmenor = pos;
int i = pos +1;
while (i<c)
{
if (menor > A[i])
{
menor = A[i];
posmenor = i;
}
i++;
}
return posmenor;
}
void ordenacionSeleccion (int A[], int c)
{
int posmenor;
int aux;
int i = 0;
while (i<c)
{
posmenor = posicionMenor(A,i,c);
aux = A[posmenor];
A[posmenor]=A[i];
A[i]= aux;
i++;
}
}
void
insertar
(int A[], int u, int dato)
{
int i = u;
while(i>=0 && dato <A[i])
{
A[i+1]=A[i];
i--;
}
A[i+1]=dato;
}
void ordenacionInsercion (int A[], int c)
{
int u = 0;
while (u<c-1)
{
insertar(A,u,A[u+1]);
u++;
}
}

Algoritmo de Ordenamiento por selección
Ordena un arreglo desordenado
Retorno la posicion en el arreglo del menor elemento
Ordena el arreglo a partir de la posición actual
Insertar un dato de
forma ordenada
Ordena un arreglo
utilizando la funcion
insertar()
Disminuir la cantidad de errores.
Reducir la complejidad del programa.
Eliminar código duplicado.
Reutilización de código.
Mejorar la legibilidad del código.
Facilitar la portabilidad del código.
Dos Tipos de Funciones
Función SIN retorno
Función CON retorno
Llamada a la función
mostrar()
Llamada a la función
sumar()
Necesito una variable para recibir el valor de retorno
Parámetros
Parámetros actuales o reales:


datos

(valores)

Pasaje de Parámetros
#A1234
#A6789
#A1001
#A1002
#A1234
#A6789
#A1016
#A1003
Dirección de Memoria numero1
Dirección de Memoria numero2
Las direcciones de Memoria cambian dentro de la Función "suma"
retorno el valor de la suma
Las 3 dir. de memoria son las mismas del main porque utilizamos punteros
NO HAY COMUNICACIÓN CON EL MAIN
HAY COMUNICACIÓN CON EL MAIN
COPIA DE LAS VARIABLES
3 REFERENCIA DE LAS VARIABLES
UTILIZO EL (AMPERSAND)
NO ES NECESARIO RETORNAR
Utilizo punteros
*
Pasaje de Parámetros
#A1016
Prototipado de la función
Full transcript