Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Funciones en Lenguaje C

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 26

REPBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD FERMIN TORO


BARQUISIMETO-LARA

Integrante:

Jeison Noguera

Barquisimeto; Febrero de 2015.

Que son Funciones en Lenguaje C?


Una funcin es un conjunto de lneas de cdigo que realizan una tarea
especfica y puede retornar un valor.

Las

funciones

pueden

tomar

parmetros

que

modifiquen

su

funcionamiento.
Las funciones son utilizadas para descomponer grandes problemas en
tareas simples y para implementar operaciones que son comnmente
utilizadas durante un programa y de esta manera reducir la cantidad de
cdigo.
Cuando una funcin es invocada se le pasa el control a la misma, una
vez que esta finaliz con su tarea el control es devuelto al punto desde el
cual la funcin fue llamada.

<tipo> [clase::] <nombre> ( [Parmetros] )


{
cuerpo;
}

Ejemplo de una funcin

Para comenzar, vamos a considerar el caso en el cual se desea crear


la funcin cuadrado (), que deber devolver el cuadrado de un nmero real
(de punto flotante), es decir, cuadrado() aceptar nmeros de punto flotante y
regresar una respuesta como nmero flotante.

Nota: aunque para la funcin que veremos el tipo de retorno coincide


con el tipo de parmetro pasado, algunas veces las cosas pueden cambiar,
2

es decir, no es obligatorio que una funcin reciba un parmetro de un tipo y


que tenga que regresar una respuesta de dicho tipo.

// regresar el cuadrado de un nmero


double Cuadrado(double n)
{
return n*n;
}

Parmetros
Normalmente, las funciones operan sobre ciertos valores pasados a
las mismas ya sea como constantes literales o como variables, aunque se
pueden definir funciones que no reciban parmetros. Existen dos formas en
C++ de pasar parmetros a una funcin; por referencia o por valor.
El hecho es que si en una declaracin de funcin se declaran
parmetros por referencia, a los mismos no se les podr pasar valores
literales ya que las referencias apuntan a objetos (variables o funciones)
residentes en la memoria; por otro lado, si un parmetro es declarado para
ser pasado por valor, el mismo puede pasarse como una constante literal o
como una variable. Los parmetros pasados por referencia pueden ser
alterados por la funcin que los reciba, mientras que los parmetros pasados
por valor o copia no pueden ser alterados por la funcin que los recibe, es
decir, la funcin puede manipular a su antojo al parmetro, pero ningn
cambio hecho sobre este se reflejar en el parmetro original.

Que son Parmetros por Valor?


La funcin cuadrado() (ver arriba) es un clsico ejemplo que muestra
el paso de parmetros por valor, en ese sentido la funcin cuadrado() recibe
una copia del parmetro n. En la misma funcin se puede observar que se
realiza un calculo ( n*n ), sin embargo el parmetro original no sufrir cambio
alguno, esto seguir siendo cierto an cuando dentro de la funcin hubiera
una instruccin parecida a n = n * n; o n*=n;.

Que son Parmetros por Referencias?


Para mostrar un ejemplo del paso de parmetros por referencia,
vamos a retomar el caso de la funcin cuadrado, salvo que en esta ocasin
cambiaremos ligeramente la sintaxis para definir la misma. Veamos:

// regresar el cuadrado de un nmero


double cuadrado2(double &n)
{
n *= n;
return n;
}
Al poner a prueba las funciones cuadrado () y cuadrado2 () se podr
verificar que la primera de estas no cambia el valor del parmetro original,
mientras que la segunda s lo hace.

Que son Variables Lgicas?


Son aquellas que solo pueden tener dos valores (verdadero o falso)
estos representan el resultado de una comparacin entre otros datos.
Una variable lgica es una variable que slo puede tener dos valores
posibles de forma que un valor excluye al otro, es decir que si tiene un valor
el otro no puede ser.
Por ejemplo, s o no o tambin 0 o 1. Imaginemos que A es una
variable que almacena la respuesta a la pregunta vienes maana? que slo
puede tener dos respuestas s o no. Si es s no puede ser no, si es no, no
puede ser s.
Normalmente la variables lgicas de representan por 0 o 1 de forma
numrica lo que conforma el sistema binario de numeracin usado en
sistemas digitales (dentro de los digitales estn los computacionales)

Que son Variables Globales?


Una variable global es aquella que se define fuera del cuerpo de
cualquier funcin, normalmente al principio del programa, despus de la
definicin de los archivos de biblioteca (#include), de la definicin de
constantes simblicas y antes de cualquier funcin.

El mbito de una variable global son todas las funciones que


componen el programa, cualquier funcin puede acceder a dichas variables
para leer y escribir en ellas. Es decir, se puede hacer referencia a su
direccin de memoria en cualquier parte del programa.
Una variable global es, en informtica, una variable accesible en todos
los mbitos de un programa informtico. Los mecanismos de interaccin con
variables globales se denominan mecanismos de entorno global. El concepto
de entorno global contrasta con el de entorno local donde todas las variables
son locales sin memoria compartida (y por ello todas las iteraciones pueden
restringirse al intercambio de mensajes).
El uso de este tipo de variables suele considerarse como una mala
prctica, por el riesgo que conlleva esa deslocalizacin: una variable global
puede ser modificada en cualquier parte del programa (a menos que resida
en una seccin de memoria protegida) y cualquier parte del programa
depende de ella.
Es por ello que una variable global tiene un potencial ilimitado para
crear dependencias, factor ste que aumenta la complejidad. Sin embargo,
en algunas ocasiones, las variables globales resultan muy tiles. Por
ejemplo, se pueden usar para evitar tener que pasar variables usadas muy
frecuentemente de forma continua entre diferentes subrutinas.
El uso de variables globales se desaconseja especialmente para
lenguajes de programacin funcionales (como puede ser Scheme). Viola la
transparencia referencial y dificulta la legibilidad del cdigo fuente.
Las variables globales se usan de forma frecuente para pasar
informacin entre diferentes secciones del cdigo que no comparten una
relacin de "funcin llamadora" - "funcin llamada", como ocurre con hilos
concurrentes y mdulos para el manejo de seales. Los lenguajes de

programacin donde cada archivo define un espacio de nombres implcito


elminan la mayor parte de los problemas de los lenguajes con nombres de
espacios gloables, aunque pueda haber algunos problemas si no se tiene
cuidado a la hora de encapsular el cdigo. Sin las restricciones adecuadas
(como por ejemplo con un mutex), el cdigo que usa variables globales no
ser a prueba de hilos excepto para los valores de slo lectura en la memoria
protegida.
El uso de variables globales no es aconsejable a pesar de que
aparentemente nos parezca muy til, esto se debe a varias razones
fundamentales:
Legibilidad menor.
Nos condiciona en muchos casos que el programa slo sirva
para un conjunto de casos determinados.
El uso indiscriminado de variables globales produce efectos
colaterales. Esto sucede cuando existe una alteracin no
deseada del contenido de una variable global dentro de una
funcin, bien por invocacin, bien por olvidar definir en la
funcin una variable local o un parmetro formal con ese
nombre. La correccin de dichos errores puede ser muy ardua.
Atenta contra uno de los principios de la programacin, la
modularidad. El bajo acoplamiento supone no compartir
espacios de memoria con otras funciones, y potenciar el paso
de informacin (llamadas) para que la funcin trate la
informacin localmente.
Es fuera de todos los procedimiento o funciones a este tipo de
variables se les llama variables globales y podrn ser usadas por cualquier
funcin o procedimiento del programa, sin embargo hay que agregarle la

palabra reservada STATIC y a partir del momento en que se declara,


acompaada de dicha palabra reservada static se considera y puede usarse
como variable global.
En programacin, no es aconsejable usar muchas variables globales
por varias razones, una de ellas es que variables globales estn vivas todo el
tiempo de ejecucin del programa y si una global solo la ocupan unos
cuantos procedimientos no tiene caso que este viva para todo el resto, otra
razn es que es peligroso tener variables globales porque todo el conjunto de
procedimiento y funciones que componen un programa tienen acceso o
comparten su valor y se corre el riesgo de que inadvertidamente alguno de
ellos modifique su valor.
Ejemplo 1
#include <stdio.h>
#include <conio.h>
#include <string.h>
// recordar declarar primero proc y funciones
void proc1();
// variables globales
float base, altura, area;
void main() {
clrscr();
//capturando datos
printf("dame base: ");scanf("%f",&base);

printf("dame altura: ");scanf("%f",&altura);


//llamando procedimiento
proc1();
}
void proc1(){
// area de operaciones
area = base * altura / 2;
// area de construccion de pagina de salida
printf(" area =%0.2f",area);
getchar();getchar();
}
Ejemplo 2
Ejemplo de una variable global en C++:
#include <iostream>
int global = 3; // Esta es la variable global.
void ChangeGlobal()
{
global = 5; // Se referencia la variable global en una funcin.
}
int main()

{
std::cout << global << '\n'; // Se referencia la variable global en una
segunda funcin.
ChangeGlobal();
std::cout << global << '\n';
return 0;
}

Libreras utilizadas en C
Una biblioteca (o librera) C es una coleccin de bibliotecas utilizadas
en el lenguaje de programacin C.
Las bibliotecas ms comunes son la librera estndar de C y la ISO y
estndar ANSI C provee las especificaciones de los estndares, las cuales
son ampliamente compartidas entre bibliotecas. La biblioteca ANSI C
estndar incluye rutinas para la entrada y salida de archivos, alojamiento de

10

memoria y operaciones con datos comunes como funciones matemticas,


funciones de cadenas y funciones de hora y fecha.
Otros juegos de bibliotecas C son aquellas utilizadas para desarrollar
sistemas Unix, las cuales proveen interfaces hacia el ncleo. Estas funciones
son detalladas en varios estndares tales como POSIX y el Single UNIX
Specification.
Ya que muchos programas han sido escritos en el lenguaje C existe
una gran variedad de bibliotecas disponibles. Muchas bibliotecas son escritas
en C debido a que C genera cdigo objeto rpido; los programadores luego
generan interfaces a la biblioteca para que las rutinas puedan ser utilizadas
desde lenguajes de mayor nivel, tales como Java, Perl y Python.
Las librerias son un grupo de archivos que tienen una funcionalidad
pre-construida por terceros, y que puede ser usadas por cualquier ejecutable.
Las libreras contienen en su interior variables y funciones. Veamos cmo
usarlas con algunas de las libreras ms comunes:
#include <iostream.h>
#include <math.h>
#include <time.h>
Donde <iostream.h> contiene las funciones de ingresar y mostrar
datos.
Donde <math.h> contiene las funciones matematicas comunes.
Donde <time.h> contiene las funciones para tratamiento y
conversin entre formatos de fecha y hora.

11

Si usamos la biblioteca <iostream.h> tenemos que, las funciones


ms comunes que vamos a usar son de entrada / salida de datos. Y las
operaciones ms comunes como suma/resta/multiplicacion/division.
Si usamos la biblioteca <math.h> tenemos que, las funciones ms
comunes que vamos a usar son de clculos matemticos y conversiones. Y
posee operaciones como hallar coseno/hallar raiz cuadrada/hallar la
potencia/entre otras.
Si usamos la biblioteca <time.h> tenemos que, las funciones ms
comunes que vamos a usar son de tratamiento y operaciones usando la hroa
y fecha como base. Y posee operaciones como calcular el nmero de veces
que se di click con el mouse durante la ejecucin del programa/hallar un
numero aleatorio/entre muchas opciones mas
iostream.h
Declara en el C++ bsico los datos de (I/O).
Funciones
Cin

Cout :

Declara los datos de entrada para alas variables


Muestra los datos que uno desea que se vean en la

pantalla.

stdio.h
Define los tipos y macros necesitados para el paquete definido de I/O
normal en Kernighan y Ritchie, extendido bajo el Sistema de UNIX V.
Define el estndar de I/O predefinido vierte stdin, stdout, stdprn, y
stderr, y declara I/O de datos.

12

Funciones
gets
Sintaxis:
#include <stdio.h>
char *gets(char *s);
Description:
Recibe una cadena del stdin (cadena estndar de entrada).
Gets colecciona una cadena de caracteres terminados por una nueva
lnea desde la cadena estndar de entrada stdin y lo pone en s. La
nueva lnea es reemplazada por un carcter nulo (\0) en s.
Gets permite las cadenas de la entrada para contener ciertos
caracteres del whitespace o espacio en blanco (los espacios,
etiquetas). Gets vuelve cuando encuentra una nueva lnea; a toda la
nueva lnea la copia en s.
El Valor de retorno:
Si el programa esta bien, Gets devuelve s al argumento de la cadena.
Si hay error, Gets devuelve NULO

putchar
Sintaxis:
#include <stdio.h>
int putchar(int c);

13

Descripcin:
putchar(c) es un macro definido para putc(c, stdout).
El Valor de retorno:
Si el programa esta bien, putchar devuelve el carcter c.
Si hay error, putchar devuelve EOF.

math.h
Math.h realiza clculos matemticos y conversiones.
Cos, cosl
Sintaxis:
#include <math.h>
double cos(double x);
long double cosl(long double x);
Descripcin:
Calcula el coseno de un valor.
Cos computa el coseno del valor de la entrada. El ngulo se especifica
en los radianes.
Cosl es la versin doble larga; toma un argumento doble largo y
devuelve un resultado doble largo.
Esta funcin puede usarse con bcd y tipos del complejo.
El Valor de retorno:

14

Si el programa esta bien, Cos de un argumento real devuelve un valor


en el rango -1 a 1
Si hay error, estas funciones pueden modificarse a travs de _matherr
(o _matherrl).

pow, powl
Sintaxis:
#include <math.h>
double pow(double x, double y);
long double powl(long double x, long double y);
Descripcin:
Calcula x a la potencia y (xy).
Powl es la versin larga doble; toma argumentos dobles y regresa un
resultado doble largo.
Esta funcin puede usarse con los bcd y tipos complejos.
El Valor de retorno:
Si el programa est bien, el pow y powl devuelven el valor calculado
de x elevado a y.
A veces los resultados dados son grandes o son incalculables.
Cuando el resultado es correcto pero grandes o incalculables las
funciones devuelven HUGE_VAL (pow) or _LHUGE_VAL (powl).
Los resultados de magnitud excesivamente grande pueden causar el
error inconstante global para ser puesto a
15

ERANGE Resultado fuera de rango


Si el argumento x pas al pow o usted llama el pow(0,0).
EDOM Error de Dominio
Error que maneja para estas funciones puede modificarse a travs de
las funciones _matherr y _matherrl.

sqrt, sqrtl
Sintaxis:
#include <math.h>
double sqrt(double x);
long double sqrtl(long double x);
Descripcin:
Calcula la raz cuadrada positiva.
Sqrt calcula la raz cuadrada positiva del argumento x.
Sqrtl es la versin larga doble; toma argumentos dobles y regresa un
resultado doble largo. Error que maneja para estas funciones puede
ser modificadas a travs de las funciones _matherr y _matherrl.
Esta funcin puede usarse con los bcd y tipos del complejo.
El Valor de retorno:
Si el programa esta bien, sqrt y sqrtl devuelven el valor calculado, la
raz cuadrada de x. Si x es real y positivo, el resultado es positivo. Si x

16

es real y negativo, el retorno ser inconstante global se pone a EDOM


(Error de Dominio).

string.h
Declara varios cadenas-manipulacin y memorias de rutinas de
manipulacin.
Strcpy
Sintaxis:
#include <string.h>
char *strcpy(char *dest, const char *src);
Descripcin:
Copia de una cadena a otra.
Copia las cadenas del src al dest, se detiene despus que el carcter
nulo haya terminando de moverse.
El Valor de retorno:
el strcpy devuelve el dest.
Strcmp
Sintaxis:
#include <string.h>
int strcmp(const char *s1, const char *s2);
Descripcin:

17

Compara de una cadena a otra.


Strcmp realiza una comparacin sin firmar de s1 al s2, empieza con el
primer carcter de cada cordn y contina con los caracteres
subsecuentes hasta que los caracteres correspondientes difieren o
hasta el fin que alcance la cadena.
El Valor de retorno:
Si el s1 es... el strcmp devuelve un valor que es...
menos del s2 <0
igual que el s2 == 0
mayor que el s2> 0
conio.h
Declara varias funciones usadas llamando la consola del sistema
operativo las rutinas de I/O.
Clrscr
Sintaxis:
#include <conio.h>
void clrscr(void);
Descripcin:
Aclara el modo de texto de la ventana.
clrscr aclara el texto de la actual y lugares del cursor en la esquina
izquierda superior o en la posicin (1,1).
El Valor de retorno:

18

Ninguno.
Clreol
Sintaxis:
#include <conio.h.>
void clreol(void);
Descripcin:
Aclara el final de la lnea en la ventana de texto.
clreol aclara todos los caracteres donde el cursor se posicione hasta el
fin de la lnea dentro de la ventana de texto actual, sin mover el cursor.
El Valor de retorno:
Ninguno.
Gotoxy
Sintaxis:
#include <conio.h>
void gotoxy(int x
int y);
Descripcin:
Posiciona el cursor en la ventana del texto.
Gotoxy mueve el cursor a la posicin dada en la ventana del texto
actual. Si las coordenadas no son valas entonces la funcin gotoxy se
ignora. Un ejemplo de esto es si gotoxy(40,30) cuando (35,25) es la

19

correcta posicin del fondo de la ventana. Ningn argumento de


gotoxy puede ser el cero.
El Valor de retorno:
Ninguno.
Switch
Sintaxis:
switch ( <switch variable> ) {
case <constant expression> : <statement>; [break;]
default : <statement>;
}
Descripcin:
Use la declaracin switch para pasar el mando a un caso que
empareja el <el interruptor inconstante>. A que el punto las
declaraciones que siguen el caso emparejando evala.
Si ningn caso satisface la condicin que el caso predefinido evala.
Evitar evaluar cualquier otro caso y abandonar el mando del
interruptor, termine cada caso break.

iomanip.h

20

Declara la I/O de las cadenas en C++ y contiene los macros por crear
a los manipuladores del parametro.
Incluye:
iostream.h

#include <stdio.h>
clearerr
fclose
fgets
fopen
freopen
fscanf
getchar
gets
remove
rename
sscanf
tmpfile

feof
formato
fseek
perror
rewind
tmpnam

ferror
fprintf
fsetpos
printf
scanf
ungetc

fflush
fputc
ftell
putc
setbuf
vfprintf

fgetc
fputs
fwrite
putchar
setybuf
vprintf

fgetpos
fread
getc
puts
sprintf
vsprintf

#include <stdlib.h>
abort
calloc
malloc
srand

abs
div
mblen
strtod

atexit
exit
mbstowcs
strtol

atof
free
mbtowc
strtoul

atoi
getenv
qsort
system

atol
labs
rand
wctomb

bsearch
ldiv
Realloc

memcpy
strcpy
strpbrk

memmove
strcspn
strrchr

memset
strerror
strspn

strcat
strlen
strstr

strchr
strmcat
strtok

#include <string.h>
memchr
strcmp
strmcmp
strxfrm

memcmp
strcoll
strmcpy

#include <ctype.h>
tolower

toupper

#include <locale.h>

21

localeconv

setlocale

#include <math.h>
Acos
Exp
log10
tanh

Asin
Fabs
modf

atan
floor
pow

atan2
fmod
sin

ceil
frexp
sinh

cos
ldexp
sqrt

cosh
log
tan

ctime

difftime

Gmtime

localtime

mktime

#include <setjmp.h>
longjmp

setjmp

#include <signal.h>
raise

signal

#include <time.h>
asctime
strftime

clock
time

Otras librerias que no tienen funciones asociadas. Pero tienen macros


constantes y/o estructuras.

#include <assert.h>

#include <errno.h>

#include <float.h>

#include <limits.h>

#include <stdarg.h>

#include <stddef.h>

RESUMEN DE LIBRERIAS

22

assert.h Contiene una macro para el diagnstico dentro de los


programas.
ctype.h Contiene varias funciones para comprobacin de tipos y
transformacin de caracteres.
errno.h Contiene varias macros usadas para informar de errores.
limits.h Contienen varias macros que definen constantes para el
tamao de tipo enteros.
float.h Contienen varias macros que definen constantes para el
tamao de tipo flotante.
locale.h Contienen varias macros, funciones y tipos para unidades
locales, como unidad monetaria, tiempo, dgitos, etc.
math.h Contiene una macro y varias funciones matemticas.
setjmp.h Contienen declaraciones que proporcionan una forma de
evitar la secuencia normal de llamada y regreso de funciones.
signal.h Contiene un tipo, dos funciones y varias macros para
manejar condiciones excepcionales que aparecen durante la
ejecucin, tal como una seal de interrupcin de una fuente
externa o un error en la ejecucin.
stdarg.h Contiene un tipo y tres macros que proporcionan recursos
para recorrer una lista de argumentos de funcin de tamao y tipo
desconocido.
stddef.h Contiene varios tipos y macros que tambin estn
definidas en otras libreras, como size_t.
stdio.h Contiene tipos, macros y funciones para la realizacin de
tareas de E/S.
stdlib.h Contiene tipos, macros y funciones para la conversin
numrica, generacin de nmeros aleatorios, bsquedas y
ordenacin, gestin de memoria y tareas similares.
string.h Contiene tipos, macros y funciones para la manipulacin
de cadenas de caracteres.
time.h Contiene tipos, macros y funciones para la la manipulacin
de informacin sobre fechas y horas.

23

Tipos: char, int, float, long, long long, short, double, void.
CADENAS DE FORMATO
d, i

entero decimal con signo

entero octal sin signo

entero decimal sin signo

entero hexadecimal sin signo (en


minsculas)

entero hexadecimal sin signo (en


maysculas)

Coma flotante en la forma [-]dddd.dddd

Coma flotante en la forma [-]d.dddd


e[+/-]ddd

Coma flotante segn el valor

Como e pero en maysculas

Como g pero en maysculas

un carcter

cadena de caracteres terminada en '\0'

imprime el carcter %

puntero

24

SECUENCIA DE ESCAPE
\a

Alerta

\b

Espacio atrs

\f

Salto de pgina

\n

Salto de lnea

\r

Retorno de carro

\t

Tabulacin horizontal

\v

Tabulacin vertical

\\

Barra invertida

\'

Comilla simple

\"

Comillas dobles

\OOO

Visualiza un carcter cuyo cdigo ASCII es OOO en octal

\xHHH Visualiza un carcter cuyo cdigo ASCII es HHH en


hexadecimal
Funcionabilidad de la Funcin System, que pertenece a la librera
<stlib.h>
Colores de Fondo
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Prpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro

25

Colores de Fuente
a = Verde claro
b = Aguamarina claro
c = Rojo claro
d = Prpura claro
e = Amarillo claro
f = Blanco brillante

26

También podría gustarte