Documente Academic
Documente Profesional
Documente Cultură
Matemticas Aplicadas y
Computacin
Andrs Hernndez Balderas
2015
4 EL LENGUAJE DE PROGRAMACIN C
# include <stdio.h>
int main()
{
printf("Hola Mundo\n");
return 0;
}
Andrs Hernndez Balderas - 2015
10
char respuesta;
11
float areaCirculo(float r)
{
float area;
area=PI*pow(r,2);
return area;
}
12
do{
printf("\nPropocione el radio: ");
scanf("%f",&radio);
area=areaCirculo(radio);
printf("El rea del crculo es %f",area);
printf("\nDesea continuar (S/N)? ");
respuesta=getche();
}while(respuesta=='S');
La ms importante de las
funciones, y la nica
obligatoria, es main. Esta
funcin es la primera
que se ejecuta y puede
hacer uso de las otras
funciones.
return 0;
}
Andrs Hernndez Balderas - 2015
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Tipos enteros
Tipos reales
char
int
float
double
27
28
29
30
31
32
Consecuencia
long
short
signed
unsigned
33
Bytes
1
1
4
4
2
2
4
4
4
double
long double
16
Rango de valores
[-128, 127]
[0, 255]
[-2,147,483,647, 2,147,483,648]
[0, 4,294,967,295]
[-32,768, 3,2767]
[0, 65,535]
[-2,147,483,647, 2,147,483,648]
[0, 4,294,967,295]
[-3.4E+38, -3.4E-38], [0 ],
[3.4E-38, 3.4E+38]
[-1.7E+308, -1.7E-308], [0] ,
[1.7E-308, 1.7E+308]
[-3.4E-4932, -1.1E+4932], [0 ],
[3.4E-4932, 1.1E+4932]
Andrs Hernndez Balderas - 2015
34
35
Significado
Asigna el resultado de una
expresin a una variable.
36
Significado
Suma
Resta
Multiplicacin
Divisin
Residuo de la divisin
Ejemplos:
resultado = dato1 + datos2;
resultado = valor numero1;
resultado = 5 * radio;
promedio = (dato1 + dato2) / 2;
residuo = 25 % 5;
Andrs Hernndez Balderas - 2015
37
Significado
Incrementa en uno a la variable sobre
la que opera.
Decrementa en uno a la variable sobre
la que opera.
38
Significado
Igual a
Menor que
Mayor que
Menor o igual que
Mayor o igual que
Diferente a
Ejemplos:
(3 ==2 ) // el resultado es falso
(6 < 8) // el resultado es verdadero
(5 > 5) // el resultado es falso
(3 <= 7) // el resultado es verdadero
(8 >= 8) // el resultado es verdadero
(6 != 5) // el resultado es verdadero
Andrs Hernndez Balderas - 2015
39
Significado
Y
O
Negacin lgica
40
Operando B
verdadero
falso
verdadero
falso
A && B
verdadero
falso
falso
falso
41
Operando B
A || B
verdadero
verdadero
verdadero
verdadero
falso
verdadero
falso
verdadero
verdadero
falso
falso
falso
42
!A
verdadero
falso
falso
verdadero
43
44
Significado
Operador unario que cambia el signo del valor del operando. No
confundir con el operador aritmtico de la resta.
sizeof
+=
-=
*=
/=
45
acumulador = 1;
acumulador += 3;
acumulador -= 1;
acumulador *= 4;
acumulador /= 2;
46
47
48
49
50
51
52
Operadores
Asociatividad
()
izquierda a derecha
++ --- ! sizeof
+ (unario) - (unario)
derecha a izquierda
4
5
<
<=
>
==
!=
izquierda a derecha
izquierda a derecha
>=
izquierda a derecha
izquierda a derecha
&&
izquierda a derecha
||
izquierda a derecha
+=
-=
*=
/=
derecha a izquierda
53
54
55
56
auto
extern
register
static
Andrs Hernndez Balderas - 2015
57
58
59
60
Archivo 1
int main() {
VariableGlobal= 1;
FuncionA();
return 0;
}
extern int VariableGlobal; // declaracin externa
Archivo 2
int FuncionA () {
++VariableGlobal;
}
Andrs Hernndez Balderas - 2015
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
79
4.11 Funciones
Una funcin es una parte de cdigo
independiente del programa principal y de otras
funciones.
Puede ser llamada envindole datos
(parmetros) o nada.
Realiza una determinada tarea y/o proporciona
resultados.
Son esenciales para cumplir con la modularidad.
Andrs Hernndez Balderas - 2015
81
4.11 Funciones
Definicin:
tipo_valor_retorno nombre (argumentos_formales)
{
variables_locales;
codigo;
return (expresion); // optativo
}
82
4.11 Funciones
Ejemplo:
double ValorAbsoluto(double x)
{
if (x < 0.0)
return -x;
else
return x;
}
Andrs Hernndez Balderas - 2015
83
4.11 Funciones
As como es necesario declarar todas las variables,
tambin las funcin debe ser declarada antes de ser
utilizada en la funcin o programa que realiza la
llamada.
Mediante una definicin previa de la funcin. Esta
prctica es segura si la definicin precede a la
llamada, pero causa problemas si la definicin se
cambia de lugar.
Mediante una declaracin explcita, previa a la
llamada. Esta es la prctica ms. La declaracin de la
funcin se hace mediante el prototipo de la funcin.
tipo_valor_retorno nombre(lista de tipos de argumentos);
Andrs Hernndez Balderas - 2015
84
4.11 Funciones
Definicin previa de la funcin.
int funcionB()
{
return 1;
}
int funcionA()
{
return funcionB()+1;
}
int main()
{
int a;
a=funcionA();
printf("a=%d",a);
getch();
}
Andrs Hernndez Balderas - 2015
85
4.11 Funciones
Declaracin explcita, previa a la llamada.
int funcionA();
int funcionB();
int main()
{
int a;
a=funcionA();
printf("a=%d",a);
getch();
}
int funcionA()
{
return funcionB()+1;
}
int funcionB()
{
return 1;
}
Andrs Hernndez Balderas - 2015
86
4.11 Funciones
Paso de argumentos por valor y por referencia
El paso de argumentos por valor indica que a la
funcin se le pasa una copia como argumento
por lo que el valor original no ser alterado.
El paso de argumento por referencia pasa como
parmetro la direccin de memoria as que el
valor original puede sufrir cambios
87
4.11 Funciones
Paso de argumentos por valor (copia de las variables)
Si se desea intercambiar dos valores
x
1.0
y
2.0
&x
&y
a
1.0
b
2.0
&a
&b
void main()
{
double a=1.0, b=2.0;
printf(antes: a = %f, b = %f\n", a, b);
permutar(a, b);
printf(despus: a = %f, b = %f\n", a, b);
}
88
4.11 Funciones
Paso de argumentos por referencia (mismas variables)
Si se desea intercambiar dos valores
a
1.0
b
2.0
&a,*x
&b,*y
void main()
{
double a=1.0, b=2.0;
printf(antes: a = %f, b = %f\n", a, b);
permutar(&a, &b);
printf(despus: a = %f, b = %f\n", a, b);
}
89
4.11 Funciones
Recursividad
Se dice que una funcin es recursiva cuando se
define en trminos de ella misma.
Debe estar diseada especialmente para
comportarse de manera recursiva, de otro modo
podran conducir a bucles infinitos, o a que el
programa termine de forma no adecuada.
90
4.11 Funciones
Recursividad
El ejemplo clsico es el del clculo del factorial.
x! = (1)(2)(3)(x-2)(x-1)(x)
El factorial de x es igual a la multiplicacin de
todos los enteros menores o iguales a l.
Por definicin, el factorial de 0 es 1.
No hay factoriales de nmeros negativos.
91
4.11 Funciones
Recursividad
El clculo del factorial se puede ver tambin
como:
x! = (1)(2)(3)(x-2)(x-1)(x)
(x-1)!
Por lo tanto
x! = (x-1)!(x)
Esta definicin est planteada de una forma
recursiva: el factorial est definido en trminos
de s mismo.
Andrs Hernndez Balderas - 2015
92
4.11 Funciones
Recursividad
De manera natural, la funcin en C sera:
int factorial( int x )
{
return factorial( x-1 )*x;
}
93
4.11 Funciones
Recursividad
Incluyendo una condicin de salida, la funcin en
C sera:
int factorial( int x )
{
if(x==0)
return 1; //Se sabe que 0!=1
else
return factorial( x-1 )*x;
}
Andrs Hernndez Balderas - 2015
94
4.11 Funciones
Recursividad
Para 3!, la ejecucin de la funcin se vera as:
3! = (2!)*3
= (2)*3 = 6
2! = (1!)*2
= (1)*2 = 2
1! = (0!)*1
0! = 1
= (1)*1 = 1
95
promedio=(c1+c2+c3+c4+c5)/5;
printf(Promedio=%f, promedio);
}
96
97
98
Estaturas
145
181
165
167
A = Estaturas[0]; // A=170
C= Estaturas[3]+Estaturas[1]; // C=310
printf(Valor=%d, Estaturas[4]; // Escribe 167
scanf(%d, &Estaturas[2]) ; // Lee un entero y
lo guarda en la
posicin 2
99
Ejemplos:
int A[4]={2,4,1,5};
float VectorR[1000];
int Matriz[3][2]={{7, 2}, {9, 4}, {2, 8}};
100
2015
101
102
103
\0
104
Funcin printf
Sintaxis:
printf(%s,cadena);
El modificador %s indica que se trata de una
cadena de caracteres
Ejemplos:
char nombre[30]=Juan Prez;
printf(Tu nombre es %s. Bienvenido., nombre);
Andrs Hernndez Balderas - 2015
105
Funcin scanf
Sintaxis:
scanf(%s,cadena);
Esta funcin se usa si se va a leer una PALABRA y
no una FRASE.
No requiere del uso de & porque el nombre del
arreglo ya indica la direccin de memoria.
Ejemplos:
scanf ("%s", ApellidoPaterno);
Andrs Hernndez Balderas - 2015
106
107
Funcin gets
Sintaxis:
gets(cadena);
Esta funcin se usa si se va a leer una FRASE.
Ejemplos:
char NombreCompleto[100];
gets (NombreCompleto);
108
Funcin strcpy
Sintaxis:
strcpy(CadenaDestino,CadenaOrigen);
Copia el contenido de CadenaOrigen en
CadenaDestino (El destino debe tener espacio
suficiente).
Ejemplos:
char Nombre[30]=Juan Prez, NombreCopia[30];
strcpy(NombreCopia, Nombre);
Andrs Hernndez Balderas - 2015
109
Funcin strcpy
char Nombre[30];
Nombre=Juan Prez //Incorrecto. Error.
strcpy(Nombre,Juan Prez); //Asignacin correcta
110
Funcin strlen
Sintaxis:
strlen(Cadena);
Determina la longitud de una cadena.
Ejemplos:
char Nombre[50]=Juan Prez,
int Longitud;
Longitud=strlen(Nombre); //Longitud=10
Andrs Hernndez Balderas - 2015
111
Funcin strcat
Sintaxis:
strcat(Cadena1,Cadena2);
Concatena (une) dos cadenas. El contenido de
Cadena2 se une al final de Cadena1.
Ejemplos:
char Nombre[50]=Juan, Apellido[50]= Prez;
strcat(Nombre,Apellido); //Nombre=JuanPrez
Andrs Hernndez Balderas - 2015
112
Funcin sprintf
Sintaxis:
sprintf(CadenaDestino, cadena formato,valores);
Funciona idntico a printf con la diferencia de que
la salida la enva a CadenaDestino y no a la
pantalla.
Ejemplos:
char Nombre[50]=Juan, Cadena[100];
sprintf(Cadena, El nombre es %s , Nombre); //Cadena=El nombre
es Juan
Andrs Hernndez Balderas - 2015
113
Funcin strcmp
Sintaxis:
strcmp(Cadena1,Cadena2);
Devuelve un negativo si Cadena1<Cadena2.
Devuelve cero si Cadena1=Cadena2.
Devuelve un positivo si Cadena1>Cadena2
Ejemplos:
char Nombre1[50]=Juan, Nombre2[50]= Luis;
strcmp(Nombre1,Nombre2); //Devuelve negativo
Andrs Hernndez Balderas - 2015
114