Funciones lenguaje c modulo4

28
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 1

Transcript of Funciones lenguaje c modulo4

Page 1: Funciones lenguaje c modulo4

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

Page 2: Funciones lenguaje c modulo4

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

Page 3: Funciones lenguaje c modulo4

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

Page 4: Funciones lenguaje c modulo4

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

Page 5: Funciones lenguaje c modulo4

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.

5

Parámetro real (llamada)

Parámetro formal (declaración)

main( ){ imprimeEntero(5);}void imprimeEntero(int x){ printf(“%d\n”, x);/* x vale 5 */}

Page 6: Funciones lenguaje c modulo4

 

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.

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

6

Page 7: Funciones lenguaje c modulo4

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ón7. Permite usar menos memoria8. Reduce la probabilidad de errores.

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()

7

Page 8: Funciones lenguaje c modulo4

{

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;

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++)

{

8

Page 9: Funciones lenguaje c modulo4

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])

{

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;

9

Page 10: Funciones lenguaje c modulo4

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>>>");

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

Page 11: Funciones lenguaje c modulo4

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.

11

Page 12: Funciones lenguaje c modulo4

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);

}

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;

12

Page 13: Funciones lenguaje c modulo4

}

getch();}

Ejecucón del programa:

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

13

Page 14: Funciones lenguaje c modulo4

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("*"); }

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;

14

Page 15: Funciones lenguaje c modulo4

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];

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 ");

15

Page 16: Funciones lenguaje c modulo4

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{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 ");

16

Page 17: Funciones lenguaje c modulo4

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; } 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(); }

17

Page 18: Funciones lenguaje c modulo4

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.

Análisis El presente programa usa funciones, para ello primeramente declaramos las variables globales que nos servirán para todo el programa estas variables

18

Page 19: Funciones lenguaje c modulo4

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 matricesint 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 tecladofor(f=1;f<=l;f++) //dos lazos for para ingreso de matriz { for(c=1;c<=l;c++) { matriz[f][c]=0;

19

Page 20: Funciones lenguaje c modulo4

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

20

Page 21: Funciones lenguaje c modulo4

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

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.

21

Page 22: Funciones lenguaje c modulo4

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 globalesint 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; }c1=25;f1=f1+1;}}void producto() //function que realize el product de las matrices

22

Page 23: Funciones lenguaje c modulo4

{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 forc2=c2+4;}c2=42;f2=f2+1;}}void main() //function principal{do{clrscr(); //borrado de pantallaborde(); //llamado a la función bordec=5;c1=25;c2=42;f=10;f1=10;f2=10;gotoxy(28,3);printf("PRODUCTO DE MATRICES"); //leyendas o titulacionesgotoxy(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 ingresoproducto(); //llamado a función productogotoxy(8,20);printf("seleccione 1 para continuar y 0 para salir ");scanf("%d",&op);}while(op==1); //cierre de lazo do/whilegetch();} //cierre del programa general

23