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

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Funciones

No description
by

Gabriel Chaldu

on 23 August 2016

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
Parámetros formales:
Se declaran dentro de la lista de parámetros.
Son variables
del programa invocante.

Parámetros actuales o reales:

contienen
datos

(valores)
que son usados por el cuerpo de la función para realizar los cálculos propios y generar (si hubiere ) el valor de retorno.
Pasaje de Parámetros
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;
}
Funciones
Conjunto de instrucciones que realizan un tarea específica.
Ventajas:
Disminuir la cantidad de líneas de código.

Tipo de Retorno
Parametros
Intrucciones
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.
Nombre 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.
Ejemplo
Full transcript