SlideShare une entreprise Scribd logo
1  sur  23
UNIVERSIDAD TÉCNICA DE
                     AMBATO



   FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN


          CARRERA DE DOCENCIA EN INFORMÁTICA


TEMA:
               FUNCIONES EN LENGUAJE C



NOMBRE:
                    WILMA CAÑAR



ASIGANTURA:
                   PROGRAMACIÓN II




                     ENERO, 2012


                                                    1
FUNCIONES EN LENGUAJE C




Es una sección de código independiente, con nombre, que ejecuta una tarea específica
y opcionalmente devuelve un valor al programa que la llamó.
En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un
programa con el objetivo que, cada bloque realice una tarea determinada.
En las funciones juegan un papel muy importe las variables, ya que como se ha dicho
estas pueden ser locales o globales.
Variables Globales: Estas se crean durante toda la ejecución del programa, y son
globales, ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier
función. Se definen antes del main().
Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan
sido declaradas.

SINTAXIS:

La sintaxis de una función es la siguiente:
Tipo_de_datos nombre_de_la_funcion(tipo y nombre de argumentos)
{
    acciones
}




                                                                                   2
DONDE:
       Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser
       real, entera, o tipo void(es decir que no devolverá ningún valor).
       Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la
       cual debe cumplir las reglas que definimos en un principio para los
       identificadores.
       Tipo y nombre de argumentos: son los parámetros que recibe la función.
       Los argumentos de una función no son más que variables locales que reciben
       un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden
       existir funciones que no reciban argumentos.
       Acciones: Constituye el conjunto de acciones, de sentencias que cumplirá la
       función, cuando sea ejecutada. Entre ellas están:
           1. Asignaciones
           2. Lecturas
           3. Impresiones
           4. Cálculos, etc


Una función, termina con la llave de cerrar, pero antes de esta llave, debemos
colocarle la instrucción return, con la cual devolverá un valor específico. Es
necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo void, no
tiene que ir la sentencia return, ya que de lo contrario, nos dará un error.


La Sentencia Return

            Fuerza la salida inmediata de la función en que se encuentra.
            Se puede utilizar para devolver un valor.

¿Cómo es que funcionan las Funciones?


A menudo, se utiliza el adjetivo de “Subprogramas”, para referirse a las funciones, así
que, el lector debe familiarizarse también con este término.
Los subprogramas se comunican con el programa principal, que es el que contiene a
las funciones, mediante parámetros, que estos pueden ser: Parámetros Formales y
Parámetros Actuales.

                                                                                       3
Cuando se da la comunicación los parámetros actuales son utilizados en lugar de los
parámetros formales.




Para qué sirven?.
Sirven para facilitar la resolución de problemas mediante la aplicación del
paradigma “DIVIDIR Y CONQUISTAR”


Funciones: modos de uso.

1.- Funciones diseñadas para realizar operaciones a partir de sus argumentos y
devolver un valor basado en sus cálculos.

2.- Funciones que no reciben argumentos, realizan un proceso y devuelven un valor .

3.- Funciones que no tienen argumentos ni valor de retorno explícito, operan sobre el
entorno de variables globales o atributos del sistema operativo.

Argumentos de funciones

    Son variables locales conocidas como parámetros formales y se utilizan
       como un medio para entregarle información a la función.
    Los parámetros formales reciben sus valores iniciales desde los parámetros
       reales, es decir desde los valores que se les pasan a traveś de la llamada.
       Ejemplo




                                                                                      4
Transferencia de Información

           por valor: copia el valor de un argumento de la llamada en el
              parámetro formal de la función. Por lo tanto, los cambios en los
              parámetros de la función no afectan a las variables que se usan en la
              llamada.
           por referencia: se copia la dirección del argumento en el parámetro.
              Los cambios hechos a los parámetros afectan a las variables usadas en
              la llamada a la función.

Funciones Definidas Por El Usuario en C


Una función, como ya se ha dicho, es un bloque de código dentro del programa que se
encarga de realizar una tarea determinada. Por lo tanto un programa en c debe
constar de una o más funciones, y por supuesto no puede faltar la función principal
main().
Un viejo adagio dice: Separa y vencerás, lo cual se acopla perfectamente cuando
tenemos un programa que es bastante grande; podemos separarlos en pequeños
subprogramas (funciones), y concentrarnos en la solución por separados de cada uno
de ellos y así resolver un gran problemas, en unos cuantos problemitas más pequeños.


Si un programa, está constituido por más de una función, las llamadas a la misma,
pueden realizarse desde cualquier parte del programa, y la definición de ellas debe
ser independiente unas de otras.

DECLARACIÓN

Cada función debe ser declarada. Su forma general es: tipo nombre función (lista de
tipos (y nombres) de los argumentos); Si una función va usar argumentos, debe
declarar variables que acepten los valores de los argumentos. Estas variables se
llaman parámetros formales de la función y se comportan como variables locales
dentro de la función, creándose al entrar en la función y destruyéndose al salir. La
declaración de parámetros aparece después del nombre de la función al definirla.

En C, todas las funciones están al mismo nivel, es decir, no se puede definir una
función dentro de otra función. Esto es por lo que C no es técnicamente un lenguaje
estructurado por bloques.



                                                                                   5
El código de una función es privado a esa función y sólo se puede acceder a él
mediante una llamada a esa función. Las variables definidas dentro de una función
son locales (a no ser que las definamos globales).

FUNCION VOID

La palabra reservada void es utilizada para declarar funciones sin valor de retorno y
también para indicar que una función específica no requiere de parámetros.

Mediante la sentencia return, el programa puede devolver un código de terminación
al proceso de llamada (Ej.: entero a Shell de comandos en Unix).

El valor devuelto puede ser 0 que indica terminación normal o un valor que identifica
un error detectado por el programa.

El valor devuelto puede ser usado para ejecución condicional de comandos en shell en
Unix.



FUNCIONES ANIDADAS

C++ no permite anidar funciones, sin embargo, dentro de una función puede existir la
llamada a una o más funciones declaradas previamente.



VENTAJAS

   1. Facilita el diseño descendente.
   2. 2.- Los procedimientos dentro de ellas se pueden ejecutar varias veces.
   3. 3.- Facilita la división de tareas.
   4. 4.- Se pueden probar individualmente
   5. 5.- Con funciones apropiadamente diseñadas, es posible ignorar como se
      realiza una tarea, sabiendo qué es lo que hacen.
   6. Reduce el código de programación
   7. Permite usar menos memoria
   8. Reduce la probabilidad de errores.




                                                                                    6
EJERCICIOS DE FUNCIONES CON VECTORES:

APLICACIÓN Nº1:
  Enunciado
Diseñe un programa en C utilizando funciones que me permitan ingresar datos en 2
vectores con datos enteros entre 3 y 53, recorrer cada vector y formar un solo vector
con datos intercalados tomando un dato del primer y un dato de el segundo,
presentar el vector resultante ordenado en forma ascendente y descendente.

  Análisis
En el siguiente programa utilizaremos funciones para el ingreso de los vectores,
también validaremos los vectores entre 3 y 53. Luego en un ciclo for realizamos las
operaciones para la intercalación de los dos vectores.



 Codificación

}#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int l,i,v1[25],v2[25],f,x,vt[25],a,aux,j;
void ingvect1()
{
f=15;
for(i=1;i<=l;i++)
{
     do{
         gotoxy(20,f);printf(" ");
         gotoxy(20,f);scanf("%d",&v1[i]);
         }
         while(v1[i]<3 || v1[i]>53);
     f=f+1;
         }
}

void ingvect2()
{
f=15;
                                                                                   7
for(i=1;i<=l;i++)
{
       do{
    gotoxy(40,f);printf(" ");
       gotoxy(40,f);scanf("%d",&v2[i]);
    }
    while(v2[i]<3 || v2[i]>53);
    f=f+1;
       }
}

void vectaltern()
{
a=1;
for(i=1;i<=(l*2);i++)
{
       vt[a]=v1[i];
       a=a+1;
       vt[a]=v2[i];
       a=a+1;
}
f=25;
for(i=1;i<=(l*2);i++)
{
gotoxy(20,f);printf("%d",vt[i]);
       f=f+1;

}
}

void orden()
{
for(i=1;i<=(l*2);i++)
{

for(j=1;j<=(l*2);j++)
{
gotoxy(17,24);printf("Alternado");
      if(vt[i]<vt[j])
      {
                                          8
aux=vt[i];
      vt[i]=vt[j];
      vt[j]=aux;
      }
 }
}
}

void ordasc()
{
f=25;
j=1;
for(i=1;i<=(l*2);i++)
{
gotoxy(30,24);printf("Ascendente");
gotoxy(35,f);printf("%d",vt[i]);
       f=f+1;
j=j+1;
}
}

void ordesc()
{
f=25;
for(i=j-1;i>=1;i--)
{
gotoxy(44,24);printf("Descendente");
gotoxy(50,f);printf("%d",vt[i]);
       f=f+1;
}
}

void main()
{
int op;
do{
clrscr();
gotoxy(10,10);printf("Ingrese el L¡mite :");scanf("%d",&l);
gotoxy(14,14);printf("<<<VECTOR 1>>>");
gotoxy(34,14);printf("<<<VECTOR 2>>>");
                                                              9
ingvect1();
ingvect2();
vectaltern();
orden();
ordasc();
ordesc();
gotoxy(19,48);printf("Oprima   1   para   continuar   o   0   para   cancelar
:");scanf("%d",&op);
}
while(op==1);
getch();
}




 Ejecución del Programa




                                                                           10
APLICACIÓN Nº2 :
 Enunciado

Diseñe un programa utilizando vectores y funciones que me permita llenar un vector
en forma intercalada con dos factores leidos desde teclado en donde el primer factor
sea siempre un multiplo de tres y el segundo factor sea siempre un multiplo de 4,
recorra el vector y encuentre todos los n£meros pares, asignelos a un nuevo vector y
presentelos en forma ordenada ascendente y descendente
  Análisis

En el siguiente programa utilizaremos funciones y vectores en el cual encontraremos
el intercalar de dicho vector, cuyo vector sea un múltiplo de 3 y múltiplos de 4.
Utilizamos las estructuras do while, for e if para estructurar el programa.




 Codificación:

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int col,f,li,mt,r,mc,r1,i,im,pa,x,v1[20],t,c,a;

clrscr();
gotoxy(27,2);printf("VECTOR CON MULTIPLOS 3 Y 4");
gotoxy(5,5);printf("Ingresar un limite: ");scanf("%d",&li);
do{
gotoxy(36,10);printf(" ");
gotoxy(10,10);printf("Ingrese un multiplo de 3: ");scanf("%d",&mt);
}
while(mt%3>=1);

do{
gotoxy(36,12);printf(" ");
gotoxy(10,12);printf("Ingrese un multiplo de 4: ");scanf("%d",&mc);

                                                                                 11
}
while(mc%4>=1);
flushall();
f=20;
 a=1;
for(i=1;i<=(li*2);i++)
{
       t=i*mt;
       v1[a]=t;
       a=a+1;
       c=i*mc;
       v1[a]=c;
       a=a+1;
}
f=25;
for(i=1;i<=(li*2);i++)
{
gotoxy(20,f);printf("%d",v1[i]);
       f=f+1;

}
getch();}
  Ejecucón del programa:




                                   12
EJERCICIOS DE FUNCIONES CON MATRICES:

APLICACIÓN Nº1 :

 Enunciado

Diseñe un programa utilizando funciones y matrices que me permita realizar
las cuatro operaciones básicas

Análisis

    El presente programa usa funciones, para ello primeramente declaramos las
    variables globales que nos servirán para todo el programa estas variables
    globales van colocadas debajo del ingreso de librerías y antes de la declaración
    de la primera función. En este caso mi primera función es void borde(), abrimos
    llaves y allí esta el detalle del borde que se genera, para terminar la función
    cerramos la llave. Luego tenemos la función ingreso, donde van los for que me
    ayudan a generar o lectura de la matriz y el ingreso del limite que se caracteriza
    por poseer en su sentencia scanf("%d",&l), a través de ello ingreso el límite de
    mi vector con el cual se genrará una matriz cuadrátida del orden del limite.
    Como requisito para que se imprima la diagonal principal tenemos que los
    subíndices i == j, y con dos lazos for se imprime la matriz, con la condición if
    (i==j), designamos solo la diagonl principal en la que deben insertarse los
    numero pares, en la diagonal secundaria los impares y cerramos el programa al
    final con la función principal y haciendo el llamad a cada una de las funciones
    insertadas, así como;borde(), ingreso().



 Codificación:

#include<stdio.h>
#include<conio.h>
int matriz1[20][20],matriz2[20][20],matriz3[20][20],i,lim,fila,j,col,op,sal,rep;
  void borde()
  {
  int i;
  textcolor(5);
  for(i=2;i<=24;i++)
  {
  gotoxy(2,i);cprintf("*");
  gotoxy(78,i);cprintf("*");
  }


                                                                                   13
for(i=2;i<=78;i++)
 {
 gotoxy(i,2);cprintf("*");
 gotoxy(i,24);cprintf("*");
 }
 }
 void ingreso(int lim)
 {
 col=9;fila=10;
 for(i=1;i<=lim;i++)
 {
 for(j=1;j<=lim;j++)
 {
 gotoxy(7,8);printf(" MATRIZ 1 ");
 gotoxy(col,fila);scanf("%d",&matriz1[i][j]);

col=col+2;

  }
  fila=fila+2;
 col=9;
  }
  textcolor(10);
  col=25;fila=10;
  for(i=1;i<=lim;i++)
  {
  for(j=1;j<=lim;j++)
  {
   gotoxy(22,8);printf(" MATRIZ 2 ");
  gotoxy(col,fila);scanf("%d",&matriz2[i][j]);

 col=col+2;
 }

 fila=fila+2;
 col=25;
 }
 }
 void suma(int lim)
 {
 fila=10;
 col=45;
 for(i=1;i<=lim;i++)
 {
   for(j=1;j<=lim;j++)
    {
    textcolor(8);
    gotoxy(43,8);cprintf(" RESPUESTAS ");
    matriz3[i][j]=matriz1[i][j]+matriz2[i][j];

                                                 14
gotoxy(col,fila);cprintf("%d",matriz3[i][j]);

   col=col+3;

  }
  fila=fila+3;
  col=45;
  }
  }
  void resta(int lim)
  {
  col=45;fila=10;
  for(i=1;i<=lim;i++)
  {
  for(j=1;j<=lim;j++)
  {

   gotoxy(43,8);printf("RESPUESTA ");

   matriz3[i][j]=matriz1[i][j]-matriz2[i][j];
   gotoxy(col,fila);printf("%d",matriz3[i][j]);
   col=col+3;
   }
   fila=fila+3;
   col=45;
   }
   }
   void multiplicacion(lim)
   {
   col=45;fila=10;
   for(i=1;i<=lim;i++)
   {
   for(j=1;j<=lim;j++)
   {

   gotoxy(43,8);printf("RESPUESTAS");
   matriz3[i][j]=matriz1[i][j]*matriz2[i][j];
   gotoxy(col,fila);printf("%d",matriz3[i][j]);
   col=col+3;
   }
   fila=fila+3;
   col=45;
   }
   }
 void main()
 {
 int lim,i,j;
do{

                                                   15
do{
clrscr();
borde();
  gotoxy(20,6);cprintf(" MENU DE OPCIONES ");
  gotoxy(10,8);cprintf(" 1.- SUMA        ");
  gotoxy(10,10);cprintf(" 2ú- RESTA        ");
  gotoxy(10,12);cprintf(" 3ú- MULTILICACION ");
  gotoxy(10,14);cprintf(" 4ú- SALIR       ");
  gotoxy(10,16);printf(" INGRESE EL LIMITE "); scanf("%d",&lim );
  gotoxy(4,18);cprintf(" Ingrese la opcion que desee: ");scanf("%d",&op);
  switch (op)
    {
//suma
   case 1:
   clrscr();
   borde();
   textcolor(9);
   gotoxy(35,3);cprintf(" **MATRICES** ");
   gotoxy(28,5);printf("SUMA DE DOS MATRICES ");
   gotoxy(44,20);cprintf(" WILMA CA¥AR ");
   ingreso(lim);
   suma(lim);
     break;
//resta
   case 2:
   clrscr();
   borde();
   gotoxy(30,5);printf(" RESTA ");
   gotoxy(25,26);cprintf(" WILMA CA¥AR ");
   ingreso(lim);
   resta(lim);

   break;
//multiplicacion
  case 3:
  clrscr();
  borde();
  gotoxy(30,5);printf(" MULTIPLICACION");
  gotoxy(25,26);cprintf(" WILMA CA¥AR ");
  ingreso(lim);
  multiplicacion(lim);

    break;
//salir
  case4:
  clrscr();
    exit();
   break;
  }

                                                                            16
textcolor(7);
    gotoxy(5,23);cprintf("Ingrese 0 para elegir una nueva opcion 1 para salir:
");cscanf("%d",&rep);
   }
   while(rep==0);
   textcolor(2);
  gotoxy(5,24);cprintf(" Ingrese 1 para continuar 0 para salir: "); cscanf("%d",&sal);
  textcolor(3);

 }
 while(sal==1);
 getch();
 }

 Ejecución del programa
APLICACIÓN Nº2 :




 Enunciado

Diseñe un programa en el que se genera una matriz de las dimensiones de
límite cuya diagonal principal contenga los números pares y en la diagonal
secundaria contenga los números impares el resto de posiciones de la matriz
sean rellenados con ceros.

                                                                                   17
 Análisis
  El presente programa usa funciones, para ello primeramente declaramos las
  variables globales que nos servirán para todo el programa estas variables
  globales van colocadas debajo del ingreso de librerías y antes de la declaración
  de la primera función. En este caso mi primera función es void borde(), abrimos
  llaves y allí esta el detalle del borde que se genera, para terminar la función
  cerramos la llave. Luego tenemos la función ingreso, donde van los for que me
  ayudan a generar o lectura de la matriz y el ingreso del limite que se caracteriza
  por poseer en su sentencia scanf("%d",&l), a través de ello ingreso el límite de
  mi vector con el cual se genrará una matriz cuadrátida del orden del limite.
  Como requisito para que se imprima la diagonal principal tenemos que los
  subíndices i == j, y con dos lazos for se imprime la matriz, con la condición if
  (i==j), designamos solo la diagonl principal en la que deben insertarse los
  numero pares, en la diagonal secundaria los impares y cerramos el programa al
  final con la función principal y haciendo el llamad a cada una de las funciones
  insertadas, así como;borde(), ingreso().

 Codificación

          # include<conio.h>             //ingreso de librerías
          # include<stdio.h>
          int i, j, fil, col,x,y,l,f,c,op;     //declaración de variables globales y
          de matrices
          int matriz[10][10];
          void borde()                   //function borde
          {
           for(i=2;i<=80;i++)            //diseño del borde
            {
            textcolor(11);
            gotoxy(i,2);cprintf("*");
            gotoxy(i,45);cprintf("*");
            }
           for(i=2;i<=45;i++)
            {
            gotoxy(2,i);cprintf("*");
            gotoxy(80,i);cprintf("*");
            }
          }
          void ingreso() //function ingreso
          {
          clrscr();
          textcolor(11);
          gotoxy(15,5);cprintf("INGRESO LIMITE: ");scanf("%d",&l);              //lee
          datos desde teclado
          for(f=1;f<=l;f++)                    //dos lazos for para ingreso de matriz
           {

                                                                                    18
for(c=1;c<=l;c++)
            {
            matriz[f][c]=0;
            gotoxy(f*3+8,c*2+8);cprintf("%d", matriz[f][c]);
             //impression de matriz[f][c]
            }
         }
         x=2;
         for(f=1;f<=l;f++)              //lazos for para la impresión de matriz
         {
          for(c=1;c<=l;c++)
            {
            if(f==c)             //condición para elegir diagonal primaria
             {
            matriz[f][c]=x;
            x=x+2;        //x será el número par que se imprimira en
        diagonal principal
             }
            gotoxy(f*3+8,c*2+8);cprintf("%d", matriz[f][c]);
            }
         }
         x=1;       //variables auxiliaries
         y=l;
         for(f=1;f<=l;f++)       //lazo for para impression de diagonal
        secundaria
          {
           matriz[y][f]=x;
           gotoxy(y*3+8,f*2+8);printf("%d", matriz[y][f]); //visualización de
        valores enteros en diagonal secundaria que son los impares
           x=x+2;         //determinan el valor impar
           y=y-1;
           }
         }
         void main()      //Se inicializa el programa principal
         {
          borde(l);       //se llama a la función borde
         do
          {
          clrscr();              //borrado de pantalla
           ingreso();     //se llama a la función ingreso de matriz
           gotoxy(20,23);printf("Presione 1 para continuar y 0 para salir:
        ");scanf("%d",&op); // bucle do/while para elección de salir o no
        del programa
          }
          while(op==1);
          getch();
        }                 //cierre del programa general

 Ejecución del programa

                                                                             19
APLICACIÓN Nº3 :

 Enunciado

   Diseñe un programa que realice el producto de matrices, en donde se
   visualice las matrices 1 y 2 y la matriz resultante.

 Análisis


                                                                    20
Ingreso de librerías conocidas, declaración de variables globales y de matrices, primera
función, void borde, se detalla la operación que desplegará el borde. Función void ingreso
donde ingresaremos las matrices y sus elementos por teclado.
Función producto donde se realiza la operación de las mismas, se imprimen tres matrices.
Función main llama a todas las funciones existentes: borde(), ingreso() , producto() y las
titulaciones, se cierra el lazo do/while y se cierra el porgrama principal.


 Desarrollo

          #include<stdio.h>                   //inclusion de librerías
          #include<conio.h>
          int l,c,c1,c2,f,f1,f2,k,i,j,op,a;   //declaración de variables globales
          int matriz1[10][10],matriz2[10][10],matriz3[10][10];
          void borde()                  //función borde
          {
          for(i=1;i<=25;i++)            //lazos for para desplegra el borde en sus
          cuatro lados
          {
          gotoxy(1,i);printf("@",i);
          gotoxy(80,i);printf("@",i);
          }
          for(i=1;i<=80;i++)
          {
          gotoxy(i,2);printf("@",i);
          gotoxy(i,25);printf("@",i);
          }
          }
          void ingreso() //function ingreso de matrices
          {
          for(i=1;i<=l;i++)
          {
           for(j=1;j<=l;j++)
           {
           gotoxy(c,f);scanf("%d",&matriz1[i][j]);          //lectura de datos
          ingresados por teclado
           c=c+5;
           }
          c=5;
          f=f+1;
          }
          for(i=1;i<=l;i++) //lazos for para la impresión de la matriz
          {
           for(j=1;j<=l;j++)
           {
           gotoxy(c1,f1);scanf("%d",&matriz2[i][j]); //posicionamiento e
          impresión de la matriz
           c1=c1+5;
           }

                                                                                       21
c1=25;
f1=f1+1;
}}
void producto()         //function que realize el product de las
matrices
{
for(i=1;i<=l;i++)       //lazos para la impresión de la matriz
resultante
{
for(j=1;j<=l;j++)
{
matriz3[i][j]=0;
for(k=1;k<=l;k++)
{
matriz3[i][j]=matriz3[i][j]+matriz1[i][k]*matriz2[k][j];
     //operación de matrices
}}}
for(i=1;i<=l;i++)
{
for(k=1;k<=l;k++)
{
gotoxy(c2,f2);printf("%d",matriz3[i][k]); //impression de matriz
con dos for
c2=c2+4;
}
c2=42;
f2=f2+1;
}}
void main()       //function principal
{
do
{
clrscr();         //borrado de pantalla
borde(); //llamado a la función borde
c=5;
c1=25;
c2=42;
f=10;
f1=10;
f2=10;
gotoxy(28,3);printf("PRODUCTO DE MATRICES"); //leyendas o
titulaciones
gotoxy(10,5);printf("INGRESE UN LIMITE ");scanf("%d",&l);
gotoxy(5,7);printf("MATRIZ1");
gotoxy(25,7);printf("MATRIZ2");
gotoxy(40,7);printf("MATRIZ RESULTANTE");
ingreso(); //llamado a función ingreso
producto();       //llamado a función producto


                                                                   22
gotoxy(8,20);printf("seleccione 1 para continuar y 0 para salir
       ");scanf("%d",&op);
       }
       while(op==1); //cierre de lazo do/while
       getch();
       }         //cierre del programa general


 Ejecución del programa




                                                                         23

Contenu connexe

Tendances (20)

Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Funcion scanf
Funcion scanfFuncion scanf
Funcion scanf
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++
 
Instrucciones para c_
Instrucciones para c_Instrucciones para c_
Instrucciones para c_
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
Operadores
OperadoresOperadores
Operadores
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 

Similaire à Funciones en Lenguaje C

Similaire à Funciones en Lenguaje C (20)

Elemento 4
Elemento 4Elemento 4
Elemento 4
 
Funciones
FuncionesFunciones
Funciones
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
8448148681
84481486818448148681
8448148681
 
vectores y matrices
vectores y matricesvectores y matrices
vectores y matrices
 
Funciones con vectores y matrices1
Funciones con vectores y matrices1Funciones con vectores y matrices1
Funciones con vectores y matrices1
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Presentacion capitulo 6
Presentacion capitulo 6Presentacion capitulo 6
Presentacion capitulo 6
 
Unidad 2 funciones
Unidad 2 funcionesUnidad 2 funciones
Unidad 2 funciones
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Funciones
FuncionesFunciones
Funciones
 
Logica subprogramas
Logica subprogramasLogica subprogramas
Logica subprogramas
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptxSEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
SEMANA 7 INFORMATICA APLICADA A INGENIERI.pptx
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Programación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funcionesProgramación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funciones
 

Dernier

CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 

Dernier (20)

CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 

Funciones en Lenguaje C

  • 1. UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN CARRERA DE DOCENCIA EN INFORMÁTICA TEMA: FUNCIONES EN LENGUAJE C NOMBRE: WILMA CAÑAR ASIGANTURA: PROGRAMACIÓN II ENERO, 2012 1
  • 2. FUNCIONES EN LENGUAJE C Es una sección de código independiente, con nombre, que ejecuta una tarea específica y opcionalmente devuelve un valor al programa que la llamó. En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un programa con el objetivo que, cada bloque realice una tarea determinada. En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas pueden ser locales o globales. Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen antes del main(). Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido declaradas. SINTAXIS: La sintaxis de una función es la siguiente: Tipo_de_datos nombre_de_la_funcion(tipo y nombre de argumentos) { acciones } 2
  • 3. DONDE: Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser real, entera, o tipo void(es decir que no devolverá ningún valor). Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe cumplir las reglas que definimos en un principio para los identificadores. Tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos. Acciones: Constituye el conjunto de acciones, de sentencias que cumplirá la función, cuando sea ejecutada. Entre ellas están: 1. Asignaciones 2. Lecturas 3. Impresiones 4. Cálculos, etc Una función, termina con la llave de cerrar, pero antes de esta llave, debemos colocarle la instrucción return, con la cual devolverá un valor específico. Es necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo void, no tiene que ir la sentencia return, ya que de lo contrario, nos dará un error. La Sentencia Return  Fuerza la salida inmediata de la función en que se encuentra.  Se puede utilizar para devolver un valor. ¿Cómo es que funcionan las Funciones? A menudo, se utiliza el adjetivo de “Subprogramas”, para referirse a las funciones, así que, el lector debe familiarizarse también con este término. Los subprogramas se comunican con el programa principal, que es el que contiene a las funciones, mediante parámetros, que estos pueden ser: Parámetros Formales y Parámetros Actuales. 3
  • 4. Cuando se da la comunicación los parámetros actuales son utilizados en lugar de los parámetros formales. Para qué sirven?. Sirven para facilitar la resolución de problemas mediante la aplicación del paradigma “DIVIDIR Y CONQUISTAR” Funciones: modos de uso. 1.- Funciones diseñadas para realizar operaciones a partir de sus argumentos y devolver un valor basado en sus cálculos. 2.- Funciones que no reciben argumentos, realizan un proceso y devuelven un valor . 3.- Funciones que no tienen argumentos ni valor de retorno explícito, operan sobre el entorno de variables globales o atributos del sistema operativo. Argumentos de funciones  Son variables locales conocidas como parámetros formales y se utilizan como un medio para entregarle información a la función.  Los parámetros formales reciben sus valores iniciales desde los parámetros reales, es decir desde los valores que se les pasan a traveś de la llamada. Ejemplo 4
  • 5. Transferencia de Información  por valor: copia el valor de un argumento de la llamada en el parámetro formal de la función. Por lo tanto, los cambios en los parámetros de la función no afectan a las variables que se usan en la llamada.  por referencia: se copia la dirección del argumento en el parámetro. Los cambios hechos a los parámetros afectan a las variables usadas en la llamada a la función. Funciones Definidas Por El Usuario en C Una función, como ya se ha dicho, es un bloque de código dentro del programa que se encarga de realizar una tarea determinada. Por lo tanto un programa en c debe constar de una o más funciones, y por supuesto no puede faltar la función principal main(). Un viejo adagio dice: Separa y vencerás, lo cual se acopla perfectamente cuando tenemos un programa que es bastante grande; podemos separarlos en pequeños subprogramas (funciones), y concentrarnos en la solución por separados de cada uno de ellos y así resolver un gran problemas, en unos cuantos problemitas más pequeños. Si un programa, está constituido por más de una función, las llamadas a la misma, pueden realizarse desde cualquier parte del programa, y la definición de ellas debe ser independiente unas de otras. DECLARACIÓN Cada función debe ser declarada. Su forma general es: tipo nombre función (lista de tipos (y nombres) de los argumentos); Si una función va usar argumentos, debe declarar variables que acepten los valores de los argumentos. Estas variables se llaman parámetros formales de la función y se comportan como variables locales dentro de la función, creándose al entrar en la función y destruyéndose al salir. La declaración de parámetros aparece después del nombre de la función al definirla. En C, todas las funciones están al mismo nivel, es decir, no se puede definir una función dentro de otra función. Esto es por lo que C no es técnicamente un lenguaje estructurado por bloques. 5
  • 6. El código de una función es privado a esa función y sólo se puede acceder a él mediante una llamada a esa función. Las variables definidas dentro de una función son locales (a no ser que las definamos globales). FUNCION VOID La palabra reservada void es utilizada para declarar funciones sin valor de retorno y también para indicar que una función específica no requiere de parámetros. Mediante la sentencia return, el programa puede devolver un código de terminación al proceso de llamada (Ej.: entero a Shell de comandos en Unix). El valor devuelto puede ser 0 que indica terminación normal o un valor que identifica un error detectado por el programa. El valor devuelto puede ser usado para ejecución condicional de comandos en shell en Unix. FUNCIONES ANIDADAS C++ no permite anidar funciones, sin embargo, dentro de una función puede existir la llamada a una o más funciones declaradas previamente. VENTAJAS 1. Facilita el diseño descendente. 2. 2.- Los procedimientos dentro de ellas se pueden ejecutar varias veces. 3. 3.- Facilita la división de tareas. 4. 4.- Se pueden probar individualmente 5. 5.- Con funciones apropiadamente diseñadas, es posible ignorar como se realiza una tarea, sabiendo qué es lo que hacen. 6. Reduce el código de programación 7. Permite usar menos memoria 8. Reduce la probabilidad de errores. 6
  • 7. EJERCICIOS DE FUNCIONES CON VECTORES: APLICACIÓN Nº1:  Enunciado Diseñe un programa en C utilizando funciones que me permitan ingresar datos en 2 vectores con datos enteros entre 3 y 53, recorrer cada vector y formar un solo vector con datos intercalados tomando un dato del primer y un dato de el segundo, presentar el vector resultante ordenado en forma ascendente y descendente.  Análisis En el siguiente programa utilizaremos funciones para el ingreso de los vectores, también validaremos los vectores entre 3 y 53. Luego en un ciclo for realizamos las operaciones para la intercalación de los dos vectores.  Codificación }#include<stdio.h> #include<conio.h> #include<stdlib.h> int l,i,v1[25],v2[25],f,x,vt[25],a,aux,j; void ingvect1() { f=15; for(i=1;i<=l;i++) { do{ gotoxy(20,f);printf(" "); gotoxy(20,f);scanf("%d",&v1[i]); } while(v1[i]<3 || v1[i]>53); f=f+1; } } void ingvect2() { f=15; 7
  • 8. for(i=1;i<=l;i++) { do{ gotoxy(40,f);printf(" "); gotoxy(40,f);scanf("%d",&v2[i]); } while(v2[i]<3 || v2[i]>53); f=f+1; } } void vectaltern() { a=1; for(i=1;i<=(l*2);i++) { vt[a]=v1[i]; a=a+1; vt[a]=v2[i]; a=a+1; } f=25; for(i=1;i<=(l*2);i++) { gotoxy(20,f);printf("%d",vt[i]); f=f+1; } } void orden() { for(i=1;i<=(l*2);i++) { for(j=1;j<=(l*2);j++) { gotoxy(17,24);printf("Alternado"); if(vt[i]<vt[j]) { 8
  • 9. aux=vt[i]; vt[i]=vt[j]; vt[j]=aux; } } } } void ordasc() { f=25; j=1; for(i=1;i<=(l*2);i++) { gotoxy(30,24);printf("Ascendente"); gotoxy(35,f);printf("%d",vt[i]); f=f+1; j=j+1; } } void ordesc() { f=25; for(i=j-1;i>=1;i--) { gotoxy(44,24);printf("Descendente"); gotoxy(50,f);printf("%d",vt[i]); f=f+1; } } void main() { int op; do{ clrscr(); gotoxy(10,10);printf("Ingrese el L¡mite :");scanf("%d",&l); gotoxy(14,14);printf("<<<VECTOR 1>>>"); gotoxy(34,14);printf("<<<VECTOR 2>>>"); 9
  • 10. ingvect1(); ingvect2(); vectaltern(); orden(); ordasc(); ordesc(); gotoxy(19,48);printf("Oprima 1 para continuar o 0 para cancelar :");scanf("%d",&op); } while(op==1); getch(); }  Ejecución del Programa 10
  • 11. APLICACIÓN Nº2 :  Enunciado Diseñe un programa utilizando vectores y funciones que me permita llenar un vector en forma intercalada con dos factores leidos desde teclado en donde el primer factor sea siempre un multiplo de tres y el segundo factor sea siempre un multiplo de 4, recorra el vector y encuentre todos los n£meros pares, asignelos a un nuevo vector y presentelos en forma ordenada ascendente y descendente  Análisis En el siguiente programa utilizaremos funciones y vectores en el cual encontraremos el intercalar de dicho vector, cuyo vector sea un múltiplo de 3 y múltiplos de 4. Utilizamos las estructuras do while, for e if para estructurar el programa.  Codificación: #include<stdio.h> #include<conio.h> #include<math.h> void main() { int col,f,li,mt,r,mc,r1,i,im,pa,x,v1[20],t,c,a; clrscr(); gotoxy(27,2);printf("VECTOR CON MULTIPLOS 3 Y 4"); gotoxy(5,5);printf("Ingresar un limite: ");scanf("%d",&li); do{ gotoxy(36,10);printf(" "); gotoxy(10,10);printf("Ingrese un multiplo de 3: ");scanf("%d",&mt); } while(mt%3>=1); do{ gotoxy(36,12);printf(" "); gotoxy(10,12);printf("Ingrese un multiplo de 4: ");scanf("%d",&mc); 11
  • 12. } while(mc%4>=1); flushall(); f=20; a=1; for(i=1;i<=(li*2);i++) { t=i*mt; v1[a]=t; a=a+1; c=i*mc; v1[a]=c; a=a+1; } f=25; for(i=1;i<=(li*2);i++) { gotoxy(20,f);printf("%d",v1[i]); f=f+1; } getch();}  Ejecucón del programa: 12
  • 13. EJERCICIOS DE FUNCIONES CON MATRICES: APLICACIÓN Nº1 :  Enunciado Diseñe un programa utilizando funciones y matrices que me permita realizar las cuatro operaciones básicas Análisis El presente programa usa funciones, para ello primeramente declaramos las variables globales que nos servirán para todo el programa estas variables globales van colocadas debajo del ingreso de librerías y antes de la declaración de la primera función. En este caso mi primera función es void borde(), abrimos llaves y allí esta el detalle del borde que se genera, para terminar la función cerramos la llave. Luego tenemos la función ingreso, donde van los for que me ayudan a generar o lectura de la matriz y el ingreso del limite que se caracteriza por poseer en su sentencia scanf("%d",&l), a través de ello ingreso el límite de mi vector con el cual se genrará una matriz cuadrátida del orden del limite. Como requisito para que se imprima la diagonal principal tenemos que los subíndices i == j, y con dos lazos for se imprime la matriz, con la condición if (i==j), designamos solo la diagonl principal en la que deben insertarse los numero pares, en la diagonal secundaria los impares y cerramos el programa al final con la función principal y haciendo el llamad a cada una de las funciones insertadas, así como;borde(), ingreso().  Codificación: #include<stdio.h> #include<conio.h> int matriz1[20][20],matriz2[20][20],matriz3[20][20],i,lim,fila,j,col,op,sal,rep; void borde() { int i; textcolor(5); for(i=2;i<=24;i++) { gotoxy(2,i);cprintf("*"); gotoxy(78,i);cprintf("*"); } 13
  • 14. for(i=2;i<=78;i++) { gotoxy(i,2);cprintf("*"); gotoxy(i,24);cprintf("*"); } } void ingreso(int lim) { col=9;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(7,8);printf(" MATRIZ 1 "); gotoxy(col,fila);scanf("%d",&matriz1[i][j]); col=col+2; } fila=fila+2; col=9; } textcolor(10); col=25;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(22,8);printf(" MATRIZ 2 "); gotoxy(col,fila);scanf("%d",&matriz2[i][j]); col=col+2; } fila=fila+2; col=25; } } void suma(int lim) { fila=10; col=45; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { textcolor(8); gotoxy(43,8);cprintf(" RESPUESTAS "); matriz3[i][j]=matriz1[i][j]+matriz2[i][j]; 14
  • 15. gotoxy(col,fila);cprintf("%d",matriz3[i][j]); col=col+3; } fila=fila+3; col=45; } } void resta(int lim) { col=45;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(43,8);printf("RESPUESTA "); matriz3[i][j]=matriz1[i][j]-matriz2[i][j]; gotoxy(col,fila);printf("%d",matriz3[i][j]); col=col+3; } fila=fila+3; col=45; } } void multiplicacion(lim) { col=45;fila=10; for(i=1;i<=lim;i++) { for(j=1;j<=lim;j++) { gotoxy(43,8);printf("RESPUESTAS"); matriz3[i][j]=matriz1[i][j]*matriz2[i][j]; gotoxy(col,fila);printf("%d",matriz3[i][j]); col=col+3; } fila=fila+3; col=45; } } void main() { int lim,i,j; do{ 15
  • 16. do{ clrscr(); borde(); gotoxy(20,6);cprintf(" MENU DE OPCIONES "); gotoxy(10,8);cprintf(" 1.- SUMA "); gotoxy(10,10);cprintf(" 2ú- RESTA "); gotoxy(10,12);cprintf(" 3ú- MULTILICACION "); gotoxy(10,14);cprintf(" 4ú- SALIR "); gotoxy(10,16);printf(" INGRESE EL LIMITE "); scanf("%d",&lim ); gotoxy(4,18);cprintf(" Ingrese la opcion que desee: ");scanf("%d",&op); switch (op) { //suma case 1: clrscr(); borde(); textcolor(9); gotoxy(35,3);cprintf(" **MATRICES** "); gotoxy(28,5);printf("SUMA DE DOS MATRICES "); gotoxy(44,20);cprintf(" WILMA CA¥AR "); ingreso(lim); suma(lim); break; //resta case 2: clrscr(); borde(); gotoxy(30,5);printf(" RESTA "); gotoxy(25,26);cprintf(" WILMA CA¥AR "); ingreso(lim); resta(lim); break; //multiplicacion case 3: clrscr(); borde(); gotoxy(30,5);printf(" MULTIPLICACION"); gotoxy(25,26);cprintf(" WILMA CA¥AR "); ingreso(lim); multiplicacion(lim); break; //salir case4: clrscr(); exit(); break; } 16
  • 17. textcolor(7); gotoxy(5,23);cprintf("Ingrese 0 para elegir una nueva opcion 1 para salir: ");cscanf("%d",&rep); } while(rep==0); textcolor(2); gotoxy(5,24);cprintf(" Ingrese 1 para continuar 0 para salir: "); cscanf("%d",&sal); textcolor(3); } while(sal==1); getch(); }  Ejecución del programa APLICACIÓN Nº2 :  Enunciado Diseñe un programa en el que se genera una matriz de las dimensiones de límite cuya diagonal principal contenga los números pares y en la diagonal secundaria contenga los números impares el resto de posiciones de la matriz sean rellenados con ceros. 17
  • 18.  Análisis El presente programa usa funciones, para ello primeramente declaramos las variables globales que nos servirán para todo el programa estas variables globales van colocadas debajo del ingreso de librerías y antes de la declaración de la primera función. En este caso mi primera función es void borde(), abrimos llaves y allí esta el detalle del borde que se genera, para terminar la función cerramos la llave. Luego tenemos la función ingreso, donde van los for que me ayudan a generar o lectura de la matriz y el ingreso del limite que se caracteriza por poseer en su sentencia scanf("%d",&l), a través de ello ingreso el límite de mi vector con el cual se genrará una matriz cuadrátida del orden del limite. Como requisito para que se imprima la diagonal principal tenemos que los subíndices i == j, y con dos lazos for se imprime la matriz, con la condición if (i==j), designamos solo la diagonl principal en la que deben insertarse los numero pares, en la diagonal secundaria los impares y cerramos el programa al final con la función principal y haciendo el llamad a cada una de las funciones insertadas, así como;borde(), ingreso().  Codificación # include<conio.h> //ingreso de librerías # include<stdio.h> int i, j, fil, col,x,y,l,f,c,op; //declaración de variables globales y de matrices int matriz[10][10]; void borde() //function borde { for(i=2;i<=80;i++) //diseño del borde { textcolor(11); gotoxy(i,2);cprintf("*"); gotoxy(i,45);cprintf("*"); } for(i=2;i<=45;i++) { gotoxy(2,i);cprintf("*"); gotoxy(80,i);cprintf("*"); } } void ingreso() //function ingreso { clrscr(); textcolor(11); gotoxy(15,5);cprintf("INGRESO LIMITE: ");scanf("%d",&l); //lee datos desde teclado for(f=1;f<=l;f++) //dos lazos for para ingreso de matriz { 18
  • 19. for(c=1;c<=l;c++) { matriz[f][c]=0; gotoxy(f*3+8,c*2+8);cprintf("%d", matriz[f][c]); //impression de matriz[f][c] } } x=2; for(f=1;f<=l;f++) //lazos for para la impresión de matriz { for(c=1;c<=l;c++) { if(f==c) //condición para elegir diagonal primaria { matriz[f][c]=x; x=x+2; //x será el número par que se imprimira en diagonal principal } gotoxy(f*3+8,c*2+8);cprintf("%d", matriz[f][c]); } } x=1; //variables auxiliaries y=l; for(f=1;f<=l;f++) //lazo for para impression de diagonal secundaria { matriz[y][f]=x; gotoxy(y*3+8,f*2+8);printf("%d", matriz[y][f]); //visualización de valores enteros en diagonal secundaria que son los impares x=x+2; //determinan el valor impar y=y-1; } } void main() //Se inicializa el programa principal { borde(l); //se llama a la función borde do { clrscr(); //borrado de pantalla ingreso(); //se llama a la función ingreso de matriz gotoxy(20,23);printf("Presione 1 para continuar y 0 para salir: ");scanf("%d",&op); // bucle do/while para elección de salir o no del programa } while(op==1); getch(); } //cierre del programa general  Ejecución del programa 19
  • 20. APLICACIÓN Nº3 :  Enunciado Diseñe un programa que realice el producto de matrices, en donde se visualice las matrices 1 y 2 y la matriz resultante.  Análisis 20
  • 21. Ingreso de librerías conocidas, declaración de variables globales y de matrices, primera función, void borde, se detalla la operación que desplegará el borde. Función void ingreso donde ingresaremos las matrices y sus elementos por teclado. Función producto donde se realiza la operación de las mismas, se imprimen tres matrices. Función main llama a todas las funciones existentes: borde(), ingreso() , producto() y las titulaciones, se cierra el lazo do/while y se cierra el porgrama principal.  Desarrollo #include<stdio.h> //inclusion de librerías #include<conio.h> int l,c,c1,c2,f,f1,f2,k,i,j,op,a; //declaración de variables globales int matriz1[10][10],matriz2[10][10],matriz3[10][10]; void borde() //función borde { for(i=1;i<=25;i++) //lazos for para desplegra el borde en sus cuatro lados { gotoxy(1,i);printf("@",i); gotoxy(80,i);printf("@",i); } for(i=1;i<=80;i++) { gotoxy(i,2);printf("@",i); gotoxy(i,25);printf("@",i); } } void ingreso() //function ingreso de matrices { for(i=1;i<=l;i++) { for(j=1;j<=l;j++) { gotoxy(c,f);scanf("%d",&matriz1[i][j]); //lectura de datos ingresados por teclado c=c+5; } c=5; f=f+1; } for(i=1;i<=l;i++) //lazos for para la impresión de la matriz { for(j=1;j<=l;j++) { gotoxy(c1,f1);scanf("%d",&matriz2[i][j]); //posicionamiento e impresión de la matriz c1=c1+5; } 21
  • 22. c1=25; f1=f1+1; }} void producto() //function que realize el product de las matrices { for(i=1;i<=l;i++) //lazos para la impresión de la matriz resultante { for(j=1;j<=l;j++) { matriz3[i][j]=0; for(k=1;k<=l;k++) { matriz3[i][j]=matriz3[i][j]+matriz1[i][k]*matriz2[k][j]; //operación de matrices }}} for(i=1;i<=l;i++) { for(k=1;k<=l;k++) { gotoxy(c2,f2);printf("%d",matriz3[i][k]); //impression de matriz con dos for c2=c2+4; } c2=42; f2=f2+1; }} void main() //function principal { do { clrscr(); //borrado de pantalla borde(); //llamado a la función borde c=5; c1=25; c2=42; f=10; f1=10; f2=10; gotoxy(28,3);printf("PRODUCTO DE MATRICES"); //leyendas o titulaciones gotoxy(10,5);printf("INGRESE UN LIMITE ");scanf("%d",&l); gotoxy(5,7);printf("MATRIZ1"); gotoxy(25,7);printf("MATRIZ2"); gotoxy(40,7);printf("MATRIZ RESULTANTE"); ingreso(); //llamado a función ingreso producto(); //llamado a función producto 22
  • 23. gotoxy(8,20);printf("seleccione 1 para continuar y 0 para salir ");scanf("%d",&op); } while(op==1); //cierre de lazo do/while getch(); } //cierre del programa general  Ejecución del programa 23