Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capitulo 1 PDF
Capitulo 1 PDF
Tipos de datos
CAPÍTULO 1
EL PRIMER PROGRAMA EN C. TIPOS
DE DATOS
Ejemplo:
void main ( )
{
Lo que debe escribirse entre las llaves son las instrucciones del programa. En el
ejemplo anterior no hay ninguna instrucción, luego el programa no realiza nada,
pero es un programa C válido.
La función main no tiene por qué ser la primera de un programa, puede haber
instrucciones anteriores. Las definiciones de las funciones adicionales empleadas
en el programa pueden preceder o seguir a main.
El primer programa en C. Tipos de datos
# include <stdio.h>
Cuando se ejecuten otras instrucciones (se utilicen otras funciones) se debe incluir
la llamada a las librerías correspondientes. Con esto se consigue que el programa al
compilar sólo utilice las librerías que necesita, con lo que se reduce el tiempo de
compilación y el tamaño del fichero ejecutable resultante.
Ejemplo:
# include <stdio.h>
void main ( )
{
printf (“Este es mi primer programa C”);
}
Ejemplo:
# include <stdio.h>
void main ( )
{
printf (“Esta es una línea de texto \n”);
printf (“Estamos en la “);
printf (“segunda línea \n \n”);
printf(“La anterior línea está en blanco”);
}
Ejemplo:
# include <stdio.h>
void main ( )
{
puts (“Escribo una frase en pantalla”);
puts (“Escribo otra frase en la siguiente línea”);
}
Ejecutando este ejemplo aparecen en pantalla las dos frases escritas en dos líneas
consecutivas.
d à decimal
o à octal
x à hexadecimal
c à de carácter
s à cadena
f à de punto flotante
#include <stdio.h>
void main ( )
{
int edad=20;
printf ("tu edad es: %x ",edad);
}
Ejemplo:
# include <stdio.h>
void main ( )
{
float f;
f=3.14159;
printf (“f = % -12.5f \ n”,f);
}
(Véase el ejercicio 4 de las prácticas de este capítulo que incluye todas las
posibilidades para los formatos de salida)
Ejemplo:
El primer programa en C. Tipos de datos
#include <stdio.h>
/* Este es un comentario ignorado por el compilador*/
void main ( ) /* se puede comentar cuando quiera */
{
printf("Comentarios en un programa "); /*se puede continuar en otra
línea*/
printf("C \n");
}
/* más comentarios al final*/
#include <stdio.h>
#include <stdio.h>
void main ( ) /* Este programa escribe texto en pantalla*/ { printf(
"Un buen diseño ");
printf("puede ayudar a ");printf ("comprender un programa.\n"
);printf("Y un mal diseño "); printf("puede hacer un programa "
);printf ("ilegible.\n");}
Los dos programas son válidos y realizan las mismas instrucciones. La única
diferencia entre ambos es el diseño.
El compilador C ignora todos los espacios extra y los saltos de línea, sin
embargo, no admite un salto de línea entre las comillas de inicio y cierre de la
función printf.
Nota importante:
Esta conversión debemos hacerla cuando queramos que aparezca en DOS algún
carácter de código ASCII 128 a 255 (Tabla A.1) utilizando para ello la Tabla A.2.
1.2 Tipos atómicos de datos: constantes y variables. Declaración de variables.
El primer programa en C. Tipos de datos
Algunos compiladores C pueden reconocer otras palabras clave. Para obtener una
lista completa de las palabras clave de un determinado compilador se debe
consultar su manual de referencia.
Todas las palabras clave están en minúsculas. Recordemos que las minúsculas y
mayúsculas no son equivalentes, por ello se puede utilizar una palabra clave escrita
en mayúsculas como un identificador, aunque no es habitual.
1.2.2.1 Variables
Ejemplos:
int a,b,c;
float raiz1, raiz2;
char indicador, texto;
int a;
int b;
int c;
float raiz1;
float raiz2;
El primer programa en C. Tipos de datos
char indicador;
char texto;
Ejemplos:
int c=12;
char estrella=’*’;
float suma=0., max=0.;
double factor=0.21023 e –6;
1.2.2.3 Constantes
Antes del comienzo real de la compilación, el compilador resuelve todos los define.
Buscará cada lugar del programa donde se encuentre el nombre de la constante y lo
reemplazará por su valor.
Ejemplo:
#include <stdio.h>
#define PI 3.141593
void main ( )
{
printf("PI = %f \ n",PI);
}
El primer programa en C. Tipos de datos
Esta sentencia printf contiene dos veces la palabra PI; la primera de ellas no se
verá afectada por la definición de la constante PI ya que el término "PI = %f \n" es
una constante de cadena (escritura literal), la segunda hace referencia a la constante
o variable PI que está definida y por tanto la sentencia equivale a:
printf("PI = %f\n",3.141593);
Visual C++ considera todas las constantes en punto flotante como de tipo
double, si se quiere que sea considerada como de tipo float se debe
añadir al final de la constante una “f” (mayúscula o minúscula). Ejemplo:
#include <stdio.h>
void main ( )
{
float x=6.7F;
printf("%f \n",x);
}
El primer programa en C. Tipos de datos
#include <stdio.h>
void main ( )
{
printf("%s %s %s","La", "casa es", "blanca");
}
Ejemplo:
#include <stdio.h>
void main ( )
{
printf("Mi casa es \t blanca \ny la tuya \"amarilla\"");
}
La salida a pantalla es:
El primer programa en C. Tipos de datos
Mi casa es blanca
y la tuya "amarilla"
L-valor = R-valor
Un L-valor puede ser una variable escalar, la componente de una tabla, etc.
Ejemplos:
Sería válido
a=x+y
pero no lo sería
x + y = a,
Variable += expresión
es equivalente a
j=j+k;
i=i+j;
El primer programa en C. Tipos de datos
include <stdio.h>
void main ( )
{
int f;
f=31.678; /* si se asigna un valor real
a un dato entero, en general, toma la
parte entera del dato, aunque avisa (warning)
que puede ocurrir una pérdida de datos */
printf("f=%12d\n",f);
}
La salida es:
f= 31
El operador resto (%) requiere que los dos operandos sean enteros; el operador
división (/) requiere que el segundo operando sea no nulo.
El primer programa en C. Tipos de datos
#include <stdio.h>
#include <math.h>
void main ( )
{
double d1=3.,d2=2.,d3;
d3=pow(d1,d2);
printf("%f",d3);
}
* / % + preferencia
+- - preferencia
El resultado de una operación en la que los operandos sean del mismo tipo es
obligatoriamente de ese tipo:
1 + 3 da como resultado 4
1. + 3. da como resultado 4.
4/3 da como resultado 1
4./3. da como resultado 1.333
Ejemplos:
· Sean C1 y C2 variables tipo char, con valores respectivos ‘P’ (código 80)
y ‘T’ (código 84). Las siguientes operaciones dan como resultado:
C1 + C2 à 164
C1 + C2 + 5 à 169
C1 + C2 + ‘5’ à 217 (el carácter ‘5’ tiene código 53)
· Sean las variables: i entera con valor 7; f tipo double con valor 5.5; c tipo
char con valor ‘w’ (código 119). El valor y tipo del resultado de las
siguientes operaciones es:
i + f à 12.5 (double)
i + c à 126 (entero)
i + c – ‘0’ à 78 (entero) (‘0’ tiene código 48)
(i + c) – (2 * f / 5) à 123.8 (double)
Ejemplo:
Ejemplo:
#include <stdio.h>
void main ( )
{
int i=1;
printf("i = %d \n", i);
printf("i = %d \n", ++i);
printf("i = %d \n", i);
}
El primer programa en C. Tipos de datos
#include <stdio.h>
void main ( )
{
int i=1;
printf("i = %d\n", i);
printf("i = %d\n", i++);
printf("i = %d\n", i);
}
#include <stdio.h>
void main ( )
{
int y=2, z=1025;
z= y++; /* y vale 2, le paso ese valor a z y después incremento
y */
printf("z e y valen %d %d\n", z,y);
z=++y; /* y vale 3, incremento su valor (4) y se lo paso a z*/
printf("z e y valen %d %d\n", z,y);
y=3;
z=y--; /* y vale 3, le paso ese valor a z y después decremento y
*/
printf("z e y valen %d %d\n", z,y);
z=--y;/* y vale 2, decremento su valor (1) y se lo paso a z --
>1*/
El primer programa en C. Tipos de datos
RELACIONALES
< Menor que
< = Menor o igual que
> Mayor que
> = Mayor o igual que
IGUALDAD
= = Igual a
! = Distinto de
Los operadores relacionales tienen mayor prioridad que los de igualdad. Entre ellos
tienen la misma prioridad que se resuelve de izquierda a derecha.
Ejemplos:
int i=1, j=2, k=3;
int i=7;
float f= 5.5;
El primer programa en C. Tipos de datos
Actúan sobre operandos lógicos dando como resultado un valor lógico. Son los
siguientes:
El orden de prioridad de los operadores vistos hasta ahora (de mayor a menor):
Monarios
Aritméticos
Relacionales
Igualdad
&&
||
El primer programa en C. Tipos de datos
Ejemplo:
#include <stdio.h>
void main ()
{
int i=7;
float f=5.5;
char c='w';
printf ("lógico: %d\n", f> 5);
printf ("lógico: %d\n", !(f> 5));
printf ("lógico: %d\n", i <= 3);
printf ("lógico: %d\n", !(i<=3));
printf ("lógico: %d\n", i> f +1);
printf ("lógico: %d\n", !(i>f+1));
printf ("lógico: %d\n", i>=6&&c=='w');
printf ("lógico: %d\n", c!='p'||i+f<=10);
}
Sintaxis:
expresión_1?expresión_2:expresión_3
Ejemplo:
#include <stdio.h>
void main ( )
{
int i=7;
printf ("valor de la expresion condicional: %d \n", i<0 ? 0:100);
}
Este operador tiene menor prioridad que el O lógico (||) y mayor que los
operadores de asignación.
El primer programa en C. Tipos de datos
A igual prioridad:
Paréntesis ()
Monarios ! , - , ++, --, sizeof
Derecha a izquierda
Multiplicación, división y resto *,/,% Izquierda a derecha
Suma y resta +,- Izquierda a derecha
Relacionales < , < = , > , >= Izquierda a derecha
Igualdad = =, ! = Izquierda a derecha
Y lógico && Izquierda a derecha
O lógico || Izquierda a derecha
Condicional ?: Derecha a izquierda
Asignación = , +=, -=, *=, Derecha a izquierda
/=, %=
Sintaxis:
Los tipos de las variables deben coincidir uno a uno con los indicados en el
formato. Cada nombre de la variable debe ir precedido por un ampersand (&). (En
realidad, los argumentos son punteros que indican dónde se encuentran situados los
datos en memoria (dirección de memoria), tal como se estudiará en el capítulo 6.)
Los nombres de arrays no deben ser precedidos por el ampersand.
Ejemplo:
#include <stdio.h>
void main ( )
{
int entero;
char letras[20];
double coste;
scanf("%d %s %lf",&entero, letras, &coste);
printf("%d %s %f",entero, letras, coste);
}
Los datos se introducen separados por espacios o saltos de línea. Por ejemplo se
podría haber introducido:
Ejemplo:
#include <stdio.h>
void main ( )
{
char linea[80];
scanf("%[
ABCDEFGHIJKLMNOPQRSTUVWXYZ]",linea);
printf("%s ", linea);
}
Si se introduce la cadena:
LA CASA BLANCA
El primer programa en C. Tipos de datos
Mediante la sentencia:
Para crear un programa que sea “entendido” y pueda ser ejecutado por el
ordenador, es necesario que el programador escriba el código fuente en un lenguaje
de alto nivel (en este caso C/C++) y tras añadir los recursos (gráficos, etc) que
necesita el código se produzca una “traducción” a código binario de acuerdo con
el siguiente esquema:
Preprocesador
Programa Fuente
Compilador
Programa Objeto
Enlazador
Programa Ejecutable
El primer programa en C. Tipos de datos
# include <stdio.h>
void main( )
{
printf("Hola Mundo \n");
}
y la carpeta: Debug
# include <stdio.h>
void main( )
{
printf("Hola Mundo \n")
}
El primer programa en C. Tipos de datos
c:\j.sanz\segundo\holaerr.c(5)
Error C2143: syntax error: missing ‘;’ before ‘}’.
Segundo.exe- 1 error(s), 0 warning(s)
3. Corregir el error colocando “;” detrás de la sentencia que comienza por printf
o antes de la llave de cierre.
1.9. Creación de un Fichero de Texto para incluir datos. Manejo del editor de
Visual C++.
11111
22222
33333
El primer programa en C. Tipos de datos
SALIDA A PANTALLA
void main ( )
{
int n=7;
float f;
f=3.14159;
printf("f=%12.4f\n",f);
printf("f=%12.3f\n",f);
printf("f=%-12.4f\n",f);
printf("f=%12.5f\n",f);
printf("f=%12.6f\n",f);
printf("f=%7f\n",f);
printf("f=%6f\n",f);
printf("f=%.4f\n",f);
printf("n=%.4d\n",n);
printf("n=%7.4d\n",n);
}
TIPOS DE DATOS
/*
* En este ejemplo se imprimen en pantalla dos caracteres utilizando
* el especificador %c y también el especificador %d, es decir, un
* carácter se puede ver como un número entero, que es su código ASCII
*/
El primer programa en C. Tipos de datos
#include<stdio.h>
void main( )
{
char caracter;
caracter = 'M';
#include <stdio.h>
void main( )
{
char car;
int codigo;
car = 'A';
codigo=48;
/*
* En este programa se observan las distintas conversiones de unos tipos de
* datos en otros, de acuerdo con la variable a la que son asignados.
*/
#include<stdio.h>
void main( )
{
char cv;
int i1 =10.3,i2=3 ;
float x1, x2;
OPERADORES
#include <stdio.h>
void main( )
{
int i,j=3,k,m;
float a,b=2.,c,d;
a=2/3*3;
i=2./3*3;
b+=a/j;
El primer programa en C. Tipos de datos
k=5.4+b*2;
d=i+k/i*i;
m=i+k/d*d;
c=1/2+1/2;
printf("\n a=%f b=%f c=%f d=%f ",a,b,c,d);
printf("\n i=%d j=%d k=%d m=%d ",i,j,k,m);
}
void main( )
{
printf("Tipo \t Bytes\n");
printf("char \t %d\n", sizeof (char));
printf("int \t %d\n", sizeof (int));
printf("float \t %d\n", sizeof (float));
printf("double \t %d\n", sizeof (double));
}
El primer programa en C. Tipos de datos
#include <stdio.h>
void main( )
{
int x = 2, y = 3, resultado;
#include <stdio.h>
void main( )
{
int a,x;
printf("%d\n",1!=2);
printf("%d\n",(a=2*2)= =2);
printf("%d\n",a);
printf("%d\n",(x=1+1)= =2);
printf("%d\n", a<x);
printf("%d\n",x=5);
printf("%d\n", x>=a);
}
El primer programa en C. Tipos de datos
#include <stdio.h>
void main( )
{
float a=3.,b=5.; int c,d,e,f;
c=a<5.; d=a>=b;
e=b<=6.;
f=b == a;
printf("%d %d %d %d\n",c,d,e,f);
printf("%d\n", c||d && !e = = f );
printf("%d\n", (c||d && !e) = = f );
}
#include <stdio.h>
void main( )
{
int a=0,b=1,c=0;
printf("%d \n",!a || b);
printf("%d\n", a == (b && c) );
printf("%d\n", (b && c) == (b || ! c &&a) );
}
#include <stdio.h>
void main( )
{
int i=2,j;
printf("%d\n",i>=2?3:4);
j=i+4<5?3:7;
printf("j= %d\n",j);
}
El primer programa en C. Tipos de datos
Para afianzar todos los conocimiento referentes a los distintos tipos de operadores,
prioridades, conversiones, etc, se pide determinar la salida a pantalla del siguiente
programa C (se recomienda hacerlo con todo detalle), sabiendo que ‘c’ tiene
código 99 y ‘d’ código 100:
#include <stdio.h>
void main( )
{
int i=8,j=5;
float x=0.005,y=-0.01;
char c='c',d='d';
printf("%d\n ",(3*i-2*j)%(2*d-c));
printf("%d\n",2*((i/5)+(4*(j-3))%(i+j-2)));
printf("%f\n",(i-3*j)%(c+2*d)/(x-y));
printf("%d\n",-(i+j));
printf("%d\n",++i);
printf("%d\n",i++);
printf("%d\n",--j);
printf("%f\n",++x);
printf("%f\n",y--);
printf("%d\n",i<=j);
printf("%d\n",c>d);
printf("%d\n",x>=0);
printf("%d\n",x<y);
printf("%d\n",j!=6);
printf("%d\n",c==99);
printf("%d\n",5*(i+j)>'c');
printf("%d\n",(2*x+y)==0);
printf("%f\n",2*x+(y==0));
printf("%d\n",2*x+y==0);
printf("%d\n",!(i<=j));
printf("%d\n",!(c==99));
printf("%d\n",!(x>0));
printf("%d\n",(i>0)&&(j<5));
printf("%d\n",(i>0)||(j<5));
printf("%d\n",(x>y)&&(i>0)||(j<5));
printf("%d\n",(x>y)&&(i>0)&&(j<5));
}
El primer programa en C. Tipos de datos
LECTURA DE DATOS
27 2003 Pedro
Ejercicio 18.
Ejercicio 19.
Ejercicio 1.
SALIDA A PANTALLA
Ejercicio 2.
#include <stdio.h>
void main ( )
{
/* Instrucción para escribir en pantalla*/
printf("Este es mi primer programa C.\nProgramar es sencillo y divertido.\n");
}
#include <stdio.h>
void main ( )
{
/* Instrucción para escribir en pantalla*/
printf ("Este es mi primer programa C.\n");
printf ("Programar es sencillo y divertido.\n");
}
#include <stdio.h>
void main ( )
{
El primer programa en C. Tipos de datos
#include <stdio.h>
void main ( )
{
/* Instrucción para escribir en pantalla*/
puts ("Este es mi primer programa C.");
puts ("Programar es sencillo y divertido.");
}
Ejercicio 3.
Ejercicio 4.
f= 3.1416
f= 3.142
f=3.1416
f= 3.14159
f= 3.141590
f=3.141590
f=3.141590
El primer programa en C. Tipos de datos
f=3.1416
n=0007
n= 0007
TIPOS DE DATOS
Ejercicio 5.
Ejercicio 6.
Ejercicio 7.
OPERADORES
Ejercicio 8.
Ejercicio 9.
Para el compilador Visual C ++, la longitud asignada a cada uno de los tipos de
datos, en bytes, es la indicada en la salida a pantalla de este ejercicio:
Tipo Bytes
char 1
El primer programa en C. Tipos de datos
int 4
float 4
double 8
Ejercicio 10.
VALORES INICIALES: x = 2; y = 3
PREFIJO: El resultado de ++x + y = 6
(Despues del calculo, x = 3 y y = 3)
VALORES INICIALES: x = 2; y = 3
SUFIJO: El resultado de x++ + y = 5
(Despues del calculo, x = 3 y y = 3)
Ejercicio 11.
Ejercicio 12.
El orden de prioridad entre los operadores que aparecen en este programa es: (de
arriba abajo)
!
Relacionales (<, <=, >, >=)
Igualdad (= =,!=)
&&
||
El primer programa en C. Tipos de datos
1010
1
0
Ejercicio 13.
1
1
0
Ejercicio 14.
Ejercicio 15.
14 .............. (3*8-2*5)%(2*'d'-'c')=14%(2*('c'+1)-'c'=14%('c'+2)=14%101=14
(el cociente de dividir 14 entre 101 es 0)
18 .............. 2*((8/5)+(4*(5-3))%(8+5-2))=2*(1+8%11)=2*(1+8)=18
-466.666677 ... (8-3*5)%(99+2*100)/(0.005+0.01)=-7/(0.015)=-466.66667
% y / tienen igual prioridad: de izda a derecha
-13 .............. -(8+5)=-13
9 .............. ++i=++8 ; primero se incrementa quedando en i el valor 9, y es
lo que se imprime (el valor de la expresión)
9 ............. i++=9++; se imprime el valor,que es 9 y después se incrementa,
El primer programa en C. Tipos de datos
LECTURA DE DATOS
Ejercicio 16.
#include <stdio.h>
void main( )
{
char nombre[50];
printf ("Escriba su nombre y apellidos y pulse la tecla INTRO\n");
scanf ("%[^\n]", nombre);
printf ("Gracias, %s. Bienvenido a la programacion en C\n", nombre);
}
Ejercicio 17.
#include <stdio.h>
void main ( )
{
int edad, fecha_act;
char nombre[25];
printf ("Introduce tu edad: ");
scanf ("%d",&edad);
printf ("Introduce el año actual: ");
scanf ("%d",&fecha_act);
printf ("Introduce tu nombre: ");
scanf ("%s",nombre);
printf ("%s, naciste en %d.\n", nombre, fecha_act-edad);
}
Ejercicio 18.
#include <stdio.h>
void main( )
{
float area, base, altura, lado_sup;
Ejercicio 19.
#include <stdio.h>
void main( )
{
int es_raiz;
float a,b,c,x0;
printf("Verificación de raiz de ecuacion de segundo grado\n");
printf("Introducir los tres coeficientes de la ecuacion ax2+bx+c\n");
scanf("%f %f %f", &a, &b, &c);
printf("Introduce el valor de la posible raiz: ");
scanf("%f", &x0);
es_raiz=a*x0*x0+b*x0+c= = 0;
printf("RESULTADO DE LA COMPROBACION: %s\n",
es_raiz?"es raiz":"no es raiz");