Está en la página 1de 45

TIPO DE DATOS

TIPO
int
char
float

DESCRIPCIN

Entero
Carcter
Nmero de punto flotante (nmero que incluye
punto decimal y/o exponente)
double Nmero de punto flotante de doble precisin (ms
cifras significativas y mayor valor posible del
exponente)

MEMORIA
2 bytes
1 byte
1 palabra (4 bytes)
2 palabras (8 bytes)

Algunos tipos bsicos de datos se pueden ampliar usando los cualificadores de


tipos de datos short (corto), long (largo), signed (con signo), unsigned (sin signo)
Un unsigned int ocupa la misma memoria que un int con la diferencia que en un
int, el bit ms a la izquierda se reserva para el signo. En un unsigned int, todos los
bits se utilizan para representar el valor numrico. Por ejemplo un int puede variar
de -32 768 a 32 767, en cambio un unsigned int varia de 0 a 65 535
Un dato tipo char puede tomar valores de 0 a 255 y signed char de -128 a 127

CONSTANTES ENTERAS
Una constante entera decimal puede ser cualquier combinacin dgitos
tomados del conjunto de 0 a9. Si la constante tiene doso ms dgitos, el
primero de ellos debe ser distinto de 0
Ejemplo:
0 1 743 5280 32767 9999
Los siguientes ejemplos son incorrectos:
12,245
carcter ilegal (,)
36.0
carcter ilegal (.)
10 230
carcter ilegal (espacio en blanco)
123-45-6789
carcter ilegal (-)
0900
El primer dgito no puede ser cero
Una constante entera octal puede estar formada por cualquier combinacin de
dgitos tomados del conjunto de 0 a 7. el primer dgito deber ser
obligatoriamente 0, con el fin de identificar la constante como un nmero
octal.
Ejemplo
0
01 0743 077777

Una constante entera hexadecimal debe comenzar por 0x 0X. Puede aparecer
despus cualquier combinacin de dgitos tomados del conjunto de 0 a 9 y de a a
f (tanto minsculas como maysculas).
Ejemplo:
0x 0X1
0X7FFF
0Xabcd
Constantes de punto flotante
Es un nmero en base 10 que contiene un punto decimal o un exponente (o ambos)
Ejemplo:
0.
1.
0.2
827.602
5000.
0.000743
12.3
315.0066
2e-8
0.006e-3
1.6667E+8
.12121212e12

Constantes de carcter
Es un solo carcter encerrado con comillas simples
Ejemplo:
A
x
3

Secuencias de escape
Una secuencia de escape siempre comienza con una barra \ y es seguida por uno o
ms caracteres especiales.
Caracter
sonido (bell)
backspace
tab horizontal
tab vertical
nueva lnea
form feed
retorno de carro
comillas ()
apstrofo ()
signo interrogacin (?)
backslash (\)
nulo

Secuencia de escape

Valor ASCII

\a
\b
\t
\v
\n
\f
\r
\
\
\?
\\
\0

007
008
009
011
010
012
013
034
039
063
092
000

Constantes de cadena de caracteres


Una constante de cadena de caracteres consta de cualquier nLmero de caracteres
consecutivos (o ninguno) encerrados entre comillas ()
Ejemplos:
verde
Washington, D. C. 200005
270-32-3456
$19.95
LA RESPUESTA CORRECTA ES:
2*(I+3)/J

Linea 1\nLinea 2\nLinea 3

VARIABLES Y ARRAYS
Una variable es un identificador que se utiliza para representar cierto tipo de
informacin dentro de una determinada parte del programa. En su forma ms
sencilla, una variable contendr un dato simple, esto es, una cantidad numrica o
una constante de carcter. En algn punto del programa se le asiginar a la variable
un determinado valor. Este valor se puede recuperar despus en el programa con
simplemente hacer referencia al nombre de la variable.
A una variable se le pueden asignar diferentes valores en distintas partes del
programa, de esta forma la informacin representada por la variable puede cambiar
durante la ejecucin del programa. Sin embargo, el tipo de datos asociado a la
variable no puede cambiar.

Ejemplo:
int a, b, c;
char d;
.
.
.
a = 3;
b = 5;
c = a + b;
d = a;
.
.
.
a = 4;
b = 2;
c = a - b;
d = W;
.

Conversiones explcita de tipos utilizando el operador de


conversin de tipos (cast)
Siempre que se quiera modificar, de forma temporal, el formato de una variable,
simplemente se coloca delante del identificador de la variable el tipo, entre
parntesis, al que desea convertir el citado identificador.
int valor1, valor2;
float resultado;
valor1 = 7;
valor2 = 3;
resultado = valor1/valor2;
resultado= (float) valor1/valor2

// resultado = 2
// resultado = 2.333333

OPERADORES
Incremento y decremento
Colocando el operador incremento (++) se aumenta en 1 al valor que tiene
almacenado la variable a la cual se aplica este operador.
En forma similar si se coloca el operadar decremento (--) se disminuye en 1 al valor de
la variable
Este operador se puede colocar antes o despus de la variable. En una expresin
simmple no se nota la diferencia, pero en una expresin compleja, s se nota.
Cuando este operador es colocado despus de la variable, en la expresin, primero se
usa el valor de la variable y luego se incrementa en 1 a la variable; en cambio, cuando
es colocado a la izquierda de la variable, primero se incrementa el valor de la variable
en 1 y luego el nuevo valor se usa en la expresin.
Ejemplo:
int i=3, j k=0;
k= ++i;
k = i ++;
k= --i;
k= i--;
i=j=k--

// i=4, k=4
// i=4, k=3
// i=2, k=2
// i=2, k=3
// i=0, j=0, k=-1

OPERADORES ARITMTICOS
El lenguaje C, incorpora el conjunto, estndar de operadores aritmticos para la suma

(+), resta (-), multiplicacin (*), divisin (/) y mdulo (%)


Ejemplo 1.- Supongamos a = 10 y b = 3 entonces:
Expresin

Valor

a+b
ab
a*b
a/b
a%b

13
7
30
3
1

Ejemplo 2.- Supongamos v1 = 12.5 y v2 = 2.0 entonces


Expresin

Valor

v1 + v2
v1 v2
v1 * v2
v1 / v2

14.5
10.5
25.0
6.25

OPERADOR DE ASIGNACIN
La asignacin se realiza mediante un operador de asignacin (=). Se
puede utilizar una expresin con un operador de asignacin en una
expresin ms compleja, como puede ser:
valor1 = 8 * (valor2 = 5);
valor1 = valor2 = valor3 = 0;

OPERADORES DE ASIGNACIN COMPUESTA


Permiten expresar, de forma ms concisa, ciertos clculos.

a = a + 5 -----
b = b - c -----
d = d*6 ----
e = e/f ---- >

a+= 5
b-= c
d*=6
e/= f

Operadores relacionales

Operador
==
!=
>
<
<=
>=

Significado
Igualdad (No asignacin)
Desigualdad
Mayor que
Menor que
Menor o igual que
Mayor o igual que

Ejemplo.- Supongamos i = 1, j = 2 y k = 3

Expresin
i<j
(i + j) >= k
(j + k) > (i + 5)
k != 3
j == 2

Interpretacin

Valor

cierto
cierto
falso
falso
cierto

1
1
0
0
1

Operadores lgicos
Operador
!
&&
||

Significado
NOT
AND
OR

Ejemplo.- i = 7, f = 5.5, c = w
Expresin
(i >= 6) && (c == w)
(i >= 6) || (c == 119)
(f < 11) && (i > 100)
(c != p) || ((i + f) <= 10)
! (i > (f + 1))

Interpretacin

Valor

cierto
cierto
falso
(cierto
falso

1
1
0
1
0

int main( )
{
float foperando1, foperando2;
printf( \nIntroduzca operando1 y operando2: );
scanf(%f%f, &foperando1, &foperando2);
printf(\n operando1 > operando2 es %d, (foperando1>foperando2));
printf (\n operando1 < operando2 es %d, (foperando1<foperando2));
printf (\n operando1 >= operando2 es %d, (foperando1>=foperando2));
printf (\n operando1 <= operando2 es %d, (foperando1<=foperando2));
printf (\n operando1 == operando2 es %d, (foperando1==foperando2));
printf (\n operando1 != operando2 es %d, (foperando1!=foperando2));
printf (\n operando1 && operando2 es %d, (foperando1&&foperando2));
printf (\n operando1 || operando2 es %d, (foperando1||foperando2));
return(0);
}

Operador condicional
Syntaxis:
condicin ? expresion_caso_verdadero : expresion_caso_falso
if (A <= c && c <= Z)
printf (%c, a + c A);
else
printf(%c, c);

printf(%c, (A <= c && c <= Z) ? (a + c A) : c);

Operador coma
Evala dos expresiones donde la sintaxis permite slo una, el valor del operador
coma es el valor de la expresin que aparece a la derecha del operador. El
formato de la expresin es:
expresin_izquierda , expresin_derecha
Normalmente, el operador coma se utiliza en los bucles for en que se itera ms
de una variable. Por ejemplo:
for (min=0, max=longitud-1; min < max; min++, maxx--) {
.
.
.
}

SUBPROGRAMAS O FUNCIONES
FUNCIONES DE BIBLIOTECA STANDARD
FUNCIONES DEFINIDAS POR EL USUARIO

Funcin.- Es un segmento de programa que realiza determinadas tareas bien


definidas.

Funciones definidas por el usuario.- Son subprogramas que el usuario


define para dividir un programa grande en un cieto nmero de componentes ms
pequeos, cada no de los cuales con un propsito nico e identificable. Por tanto, un
programa en C se puede realizar mediante el uso inteligente de las funciones

El uso de funciones es necesario cuando:


Se requiere que se acceda repetidamente a un grupo determinado de instrucciones
desde varias partes distintas del programa.
Se requiere transferir un diferente conjunto de datos al grupo de instrucciones que se
ejecuta varias veces.
Se requiere identificar con claridad lgica la descomposicin de un programa en
varias funciones concisas.

Definicin de una funcin


La definicin de una funcin tiene 3 componentes principales:
La primera lnea
La declaracin de parmetros
El cuerpo de la funcin
parmetros formales
Primer lnea
tipo nombre(parmetro1, parmetro2, parmetro n)
Tipo de dato que
devuelve la funcin

Nombre de la funcin

Declaracin de parmetros.- Se tiene que declarar los tipos de los parmetros que
deben coincidir con los de los argumentos (los que se usan en la llamada a la
funcin). Los identificadores usados en los parmetros son locales porque no son
reconocidos fuera de la funcin.

Cuerpo de la funcin .- Es una sentencia compuesta que define las acciones que debe
realizar sta.
// convierte_mayuscula_a_minuscula.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h
#include conio.h
char minuscula(char c)
{
return(('A' <= c && c <= 'Z') ? ('a' + c - 'A') : c);
}
int _tmain(int argc, _TCHAR* argv[])
{
char carmin, carmay, d;
printf("Introducir un caracter en mayuscula. \n");
carmay = getchar( );
carmin = minuscula(carmay);
printf("%c\n",carmin);
d = getch( );

return 0;

Recursividad
La recursividad tiene lugar en un programa cuando una funcin se llama a s misma.
Inicialmente, puede parecer un bucle infinito, pero no es as. Tanto C omo C++
admiten la recursividad. Los algoritmo recursivos permiten resolver problemas de
forma creativa, legible y concisa.
double dfactorial (double drespuesta)
{
if (drespuesta <= 1.0)
rerturn (1.0)
else
return(drespuesta*dfactorial(drespuesta-1.0));
}
main( )
{

double dfactorial (double drespuesta)


{
if (drespuesta <= 1.0)
rerturn (1.0)
else
return(drespuesta*dfactorial(drespuesta-1.0));
}
main( )
{
double dnumero, dresult;
printf(Ingresar nmero:); scanf(%lf, &dnumero);
dresult = dfactorial(dnumero);
printf(El factorial de %15.0lf es: %15.0lf\n, dnumero, dresult);
return (0);
}

Inicio

Arcilla
> 30

Si

No
Arcilla
> 20

Si
Si

limo
> 50

Si

No
arena
< 50

No

No
Si

Limo
> 50

No

No
Arena
50

Si

limo
> 50

Si
No

arena
50
No
arena
80

Si

No

Si
1

10

Sentencia for

Entrada Salida
#include "stdio.h
int _tmain(int argc, _TCHAR* argv[])
{
char c
= 'A',
ptam1[] = "Quien a buen rbol se arrima ",
ptam2[] = "buena sombra le cobija.";
int iln
= 0,
ivalor = 1234;
double dpi = 3.14159265;
printf("\n[%2d] %c", ++iln, c); //imprime c
printf("\n[%2d] %d", ++iln, c); //imprime el codigo ASCII de c
printf("\n[%2d] %c", ++iln, c); //ancho minimo 1
printf("\n[%2d] %5c", ++iln, c); //ancho minimo 5, justificado a la derecha
printf("\n[%2d] %-5c", ++iln, c); //ancho minimo 5, justificado a la izquierda
printf("\n[%d] %s", ++iln,ptam1); //29 caracteres no nulos, automaticamente
printf("\n[%d] %s", ++iln,ptam2); //23 caracteres no nulos, automaticamente
printf("\n[%d] %5s", ++iln,ptam1); //ancho minimo 5, automaticamente, 29
printf("\n[%d] %34s", ++iln,ptam1); //ancho min. 34, justificado a la derecha

printf("\n[%d] %-34s", ++iln,ptam1); //ancho min. 34, justificado a la izquierda


printf("\n[%d] %d", ++iln,ivalor); //ancho de ivalor por omision, 4
printf("\n[%d] %+d", ++iln,ivalor); //imprime ivalor con el signo +
printf("\n[%d] %3d", ++iln,ivalor); //ancho min. 3, automaticamente 4
printf("\n[%d] %10d", ++iln,ivalor); //ancho min. 10, justificado a la derecha
printf("\n[%d] %-10d", ++iln,ivalor); //ancho min. 10, justificado a la izquierda
printf("\n[%d] %010d", ++iln,ivalor); //justificado a la derecha, completado con ceros
printf("\n[%d] %f", ++iln,dpi); //utiliza el numero de digitos por omision
printf("\n[%d] %20f", ++iln,dpi); //ancho min. 20, justificado a la derecha
printf("\n[%d] %020f", ++iln,dpi); //justificado a la derecha, completado con ceros
printf("\n[%d] %-20f", ++iln,dpi); //ancho min. 20, justificado a la izquierda
printf("\n[%d] %.2s", ++iln,ptam1); //imprimer los 2 primeros caracteres
printf("\n[%d] %19.2s", ++iln,dpi); //imprime 2 caracteres, justificado a la deracha
printf("\n[%d] %-19.2s", ++iln,dpi); //imprime 2 caracteres, justificado a la izquierda
printf("\n[%d] %10.8f", ++iln,dpi); //ancho 10, con 8 decimales
printf("\n[%d] %20.2f", ++iln,dpi); //2 decimales y justificado a la derecha
printf("\n[%d] %-20.4f", ++iln,dpi); //4 decimales y justificado a la izquierda
printf("\n[%d] %20.2e", ++iln,dpi); //ancho 20 con notacion cientifica
return 0;
}

#include "stdafx.h"
#include "iostream.h"
inline long cuadrado(int iValor) {return iValor * iValor;}

int _tmain(int argc, _TCHAR* argv[])


{
int iValor = 5;
cout << cuadrado(iValor)
<< endl;
return 0;
}

ARRAYS
Los elementos individuales de datos de un array se denominan elementos
Todos los elementos deben ser del mismo tipo de dato.
Todos los elementos se almacenan en posiciones contiguas de la memoria de
la computadora y el subndice del primer elemento es cero
El nombre de un array es un valor constante que representa la direccin del
primer elemento del array

DECLARACIN DE ARRAYS
int iarray[12]; //un array de 12 enteros
char carray[20]; // un array de 20 caracteres
No se puede usar nombre de variable dentro de los corchetes en la declaracin
de un array. Es mejor usar constantes definidas para especificar el tamao de
los arrays
#define iARRAY_MAX 20
#define fARRAY_MAX 15
Int iarray[iARRAY_MAX]
float farray[fARRAY_MAX]

Ejemplo.- Debajo se muestran varias definiciones de arrays que incluyen la


asignacin de valores iniciales:
int digitos[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
float x[6] = {0, 0.25, 0, -0.50, 0, 0};
char color[3] = {R, E, D};
El resultado de estas asignaciones iniciales es como sigue:
digitos[0] = 1
digitos[0] = 2
digitos[0] = 3
digitos[0] = 4
digitos[0] = 5
digitos[0] = 6
digitos[0] = 7
digitos[0] = 8
digitos[0] = 9
digitos[0] = 10

x[0] = 0
x[0] = 0.25
x[0] = 0
x[0] = -0.50
x[0] = 0
x[0] = 0

color[0] = R
color[0] = E
color[0] = D

Todos los elementos del array que no tienen asignados valores iniciales explcitos sern
puestos automticamente a cero.
Ejemplo:
int digitos[10] = {3, 3, 3};
float x[6] = {-0.3, 0, 0.25};

Los resultados son:


digitos[0] = 3
digitos[0] = 3
digitos[0] = 3
digitos[0] = 0
digitos[0] = 0
digitos[0] = 0
digitos[0] = 0
digitos[0] = 0
digitos[0] = 0
digitos[0] = 0

x[0] = -0.3
x[0] = 0
x[0] = 0.25
x[0] = 0
x[0] = 0
x[0] = 0

El tamao del array no necesita ser especificado explcitamente cuando se incluyen


los valores iniciales como una parte de la definicin del array. Con un array numrico,
el tamao del array ser fijado automticamente igual que el nmero de valores
incluidos dentro de la definicin.
Ejemplo
int digitos[] = {1, 2, 3, 4, 5, 6};
float x[] = {0, 0.25, 0, -0.5};
digitos es un array de seis elementos y x un array de cuatro elementos en punto
flotante. Los elementos tendrn asignados los siguientes valores:
digitos[0] = 1
digitos[0] = 2
digitos[0] = 3
digitos[0] = 4
digitos[0] = 5
digitos[0] = 6

x[0] = 0
x[0] = 0.25
x[0] = 0
x[0] = -0.5

Procesamiento de un Array
Se rrealiza mediante bucles y en cada paso del bucle se procesa un elemento del
array
Ejemplo: Se desea obtener el promedio ponderado de un alumno
1

Inicio
Pedir
ncursos
Para i=1 hasta
ncursos
Pedir curso(i)
nota(i),
cred(I)

Para i=1 hasta


ncursos
SumNxC+=nota(i)*cred(i)
SumaCred+=cred(i)

Prox. i

Pp=SumNxC/SumaCred
Prox. i

Mostrar
Pp
1

Fin

main()
{
char curso[20];
int ncursos, nota[10], cred[10], i, SumNxC, SumCred;
float Pp;
printf(Ingresar numero de cursos: ); scanf(%d,&ncursos);
for(i = 0; i < ncursos; i++) {
printf(Nombre curso: ); scanf(%s,curso);
printf(Nota = ); scanf(%d, &nota[i]);
printf(Crreditos = ); scanf(%d,&cred[i]);
}
for(i = 0; i < ncursos; i++) {
SumNxC += nota[i] * cred[i];
SumCred += cred[i];
}
Pp = (float) SumaNxC/SumCred;
printf(El Prom. Ponderado es %4.2f,Pp);
}