Está en la página 1de 48

FUNDAMENTOS DE PROGRAMACIÓN 1

Capítulo 4: Tipos de Datos en C


Universidad de Cuenca
Facultad de Ingeniería
Ma. Fernanda Granda
fernanda.granda@ucuenca.edu.ec

LENGUAGE DE PROGRAMACIÓN C

PROGRAMACION I 1
Objetivos
Introducir el Lenguage C
Definir y usar variables en el lenguaje C
Conocer los tipos de datos en el lenguaje C
Aprender a emplear operadores
Aprender a leer y mostrar datos desde/para la consola

PROGRAMACION I 2
Características del lenguaje C
Desarrollado en los laboratorios Bell a comienzo de los 70 por Brian W. Kernighan y Dennis M. Ritchie.
Se diseñó y desarrolló para programar el S.O. Unix.
Características:
Lenguaje de alto nivel y de propósito general, útil para desarrollar cualquier tipo de aplicación o
programa.
Es el lenguaje más utilizado en ingeniería e investigación.
Es un lenguaje estructurado (funciones, estructuras, bucles, etc.) que permite la programación
modular.
Eficiencia. Los programas ejecutables son rápidos.
El código fuente es portable a muchas arquitecturas de computadores.
Se encuentran compiladores de C disponibles para cualquier tipo de ordenador y S.O.
Es el paso previo a otros lenguajes como C++ y Java

PROGRAMACION I 3
Estructura Básica de un Programa en C
main. Palabra reservada. Indica que el programa comienza a
partir de ella.
 { }. Delimitan el conjunto de instrucciones que componen el
programa.
 El programa se compone de n instrucciones que se ejecutan
secuencialmente. Todas deben acabar en ;
 La tabulación, aunque voluntaria, es útil para hacer los
programas ordenados y legibles.

PROGRAMACION I 4
Comentarios en C
Es útil documentar un programa para hacerlo más legible.
Los comentarios son textos que el programador escribe para describir partes del
código.
Facilita la comprensión posterior por el propio programador y por otros (trabajo
en equipo).
Inserta información adicional de cualquier tipo.
No influye en absoluto sobre el rendimiento final del programa generado.
Deben ir delimitados entre /* y */
◦ Ejemplo:
/* Esto es un ejemplo de un comentario */

PROGRAMACION I 5
Variables y Contantes
Objetos básicos que se manipulan en un programa y sobre los que
se realizan las operaciones.
Variable: Objeto cuyo valor puede variar. La declaración de
variables supone:
◦ Darle un nombre o identificador.
◦ Asignarle un tipo de dato.
◦ tipo_de_dato nombre1, nombre2;

Constante: Objeto cuyo valor no puede variar

PROGRAMACION I 6
Identificadores
Identificador: Nombre dado a un elemento del programa (constantes simbólicas, variables y
funciones).
Reglas para construir un identificador:
Deben comenzar por letra (a..z o A..Z) o subrayado (_).
El resto del identificador puede constar de letras del alfabeto, dígitos numéricos o subrayado.
No se admiten espacios.
Se distinguen mayúsculas y minúsculas.
Pueden tener hasta 32 caracteres (dependiendo del compilador se consideran 8 o más).
No pueden coincidir con las palabras reservadas del lenguaje.
Palabras Reservadas: Identificadores que tienen un significado predefinido dentro del lenguaje (main,
int,...).

PROGRAMACION I 7
Declaración de Variables en un Programa
en C
int main()
{
/* Zona de declaración de variables */
tipo1 variable1;
tipo2 variable2, variable3;
...
/* Zona de entrada de datos */
instrucción 1;
instrucción 2;
...
/* Área de cálculo */
instrucción m;
...
/* Extracción de resultados */
instrucción n;
...
return 0;
}

PROGRAMACION I 8
Tipos de Datos
Cuando declaramos una variable, definimos (de forma implícita):
 La longitud del dato (número de bits).
 Operaciones que se pueden realizar con ese dato.
 Conjunto de valores posibles.

Clasificación de los tipos de datos:


 Simples o Básicos.
 Estructurados. Compuestos de otros tipos de datos simples o estructurados.

PROGRAMACION I 9
Tipos de Datos (II)
Los tipos de datos básicos se clasifican en:
Numéricos.
 Enteros. Subconjunto finito de números enteros.
 Reales. Subconjunto finito de números reales.

Alfanuméricos.
 Carácter. Conjunto finito y ordenado de caracteres que el procesador reconoce.
 Cadenas de caracteres. Secuencia finita de caracteres.

PROGRAMACION I 10
Tipos de datos Enteros
Subconjunto de los enteros con signo.
Emplea la palabra clave int.
Declaración:
◦ int variable1, variable2;
Podemos variar el tamaño con short y long:
◦ short int v3;
◦ long int v4, v5, v6;
Podemos expresar enteros sin signo con unsigned.
◦ unsigned int a;
◦ unsigned short int b, c;
◦ unsigned long int d, e, f;

PROGRAMACION I 11
Tipos de datos Enteros (II)
Su tamaño depende del compilador y del procesador que se utilice:

Tipo Bits Rango


Short int 16 bits [-32.768, … ,32.767]
Unsigned short int 16 bits [0, … , 65.535]
Long int 32 bits [-2.147.483.648, …, 2.147.483.647]
Unsigned long int 32 bits [0, …, 4.294.967.295]

PROGRAMACION I 12
Tipos de Datos Reales
Subconjunto de los reales con signo
Emplean las palabras float o double
Declaración:
 float f1, f2;
 double numero;

PROGRAMACION I 13
Tipos de Datos Reales (II)
La diferencia entre float y double es su tamaño.
 Esto influye tanto al rango de números representables como a su precisión.
Tipo Tamaño Valor Mínimo y Máximo
(en valor absoluto)
float 32 bits [1.17549e-38, …, 3.4028e+38]
double 64 bits [2.2251e-308, …,1.7977e+308]

PROGRAMACION I 14
Tipos de Datos Caracter
Conjunto finito y ordenado de caracteres que el ordenador es capaz de reconocer.
Contiene un solo carácter: 1 byte (8 bits).
Un carácter se almacena como un valor entero de 8 bits. El ordenador interpreta este código en
función de
unas tablas de conversión (código ASCII).
Las constantes de este tipo se representan entre comillas simples.
Declaración:
 char letra;
Puede usarse para almacenar enteros pequeños:
 char valor_pequenyo; /* Rango: [-128,127] */
 unsigned char sin_signo; /* Rango: [0,255] */

PROGRAMACION I 15
Tipos de Datos Caracter (II)
Tipos de Caracteres:
 Alfabéticos: a … z, A ... Z
 Numéricos: 0 ... 9
 Especiales: +, -, *, /, <, ... incluyendo los caracteres no
imprimibles (retorno de carro, fin de cadena,...). \0 Fin de cadena
\n Nueva línea
\t Tabulado
\b Retroceso
\r Retorno de carro
\f Salto de página
\\ Contrabarra
\’ Apóstrofe (comilla simple)
\” Comillas

PROGRAMACION I 16
Tipos de Datos Cadena de Caracteres
Bajo un mismo nombre de variable agrupamos un conjunto de caracteres.
Se representan entre comillas dobles.
Cuando se declara una variable de este tipo debemos indicar el número de caracteres que
almacena.
 char cadena[20], frase[100];

En C se sigue la convención de que las cadenas acaban siempre con el carácter '\0'.
Por este motivo, al declarar la variable debemos reservar un espacio más.
 char saludo[5]="HOLA";
 char despedida[]="ADIOS";

PROGRAMACION I 17
Inicialización de Variables
Cuando una variable se declara, el compilador le reserva espacio en la memoria,
pero no modifica la información que había en dicho espacio.
Toda variable debe ser inicializada antes de usar su valor en el programa.
Las variables pueden ser inicializadas a un valor concreto cuando son
declaradas.
Para ello, en la declaración se añade el signo de igual más una constante.

PROGRAMACION I 18
Constantes
Al igual que las variables, las constantes guardan datos, pero su valor no varía.
Existen tantos tipos de constantes como tipos de datos. Podemos expresar una constante según el tipo de dato.
Las constantes pueden aparecer con su valor directamente o mediante un identificador.
Constantes simbólicas:
 Constantes a las cuales se les asocia un nombre o identificador.
 Se declaran como: #define nombre_constante valor
#define M 10
#define N 10. /* Es un double */
#define PI 3.14159265 /* double */
#define PIf 3.14159265f /* float */
#define A -1.2345e-17 /* double en notación científica */
#define salto_de_linea '\n'
#define HOLA "HOLA"

PROGRAMACION I 19
Expresiones
Operador: Símbolo que se asocia a una determinada operación básica que se realiza con los
datos en algún punto del programa.
Expresión: Combinación de variables, constantes, operadores, paréntesis y nombres de función,
escritos en un determinado orden que tiene la propiedad de ser evaluada para obtener un valor.
Tipos de expresiones:
 Aritméticas: Operandos y resultado de tipo numérico.
 Relacionales: Operandos de cualquier tipo y resultado lógico (tipo entero significando verdadero, si
distinto de cero; o falso, cuando es cero).
 Lógicas: Los operandos y el resultado tienen valores lógicos (verdadero o falso).

PROGRAMACION I 20
Operadores Aritméticos
Operador Acción Tipos de Datos
+ Suma char, int, float, double
- Resta char, int, float, double
* Multiplicación char, int, float, double
/ División entera o real char, int, float, double
% Resto de la division entera char, int
Reglas de prioridad:
Los paréntesis permiten cambiar el orden de evaluación predeterminado. Si existen varios paréntesis anidados,
las expresiones de los más internos se evalúan primero.
El orden de prioridad de los operadores aritméticos es:
 Primero: /, *, % (tienen igual prioridad entre ellos).
 Después: +, - (tienen igual prioridad entre ellos).
Dentro del mismo orden de prioridad se sigue la asociatividad de izquierda a derecha.

PROGRAMACION I 21
Operadores de Relación y de Igualdad
Operadores de relación e igualdad: Se utilizan para realizar comparaciones, devolviendo
verdadero o falso.
Operador Significado
> Mayor que
Reglas de prioridad: >= Mayor o igual que

Tienen menos prioridad que los aritméticos. < Menor que


<= Menor o igual que
El orden de prioridad de los operadores de relación es:
 Primero: >, >=, <, <= (tienen igual prioridad entre ellos). == Igual a
 Después: ==, != (tienen igual prioridad entre ellos). != Distinto de

Dentro del mismo orden de prioridad se sigue la asociatividad de izquierda a derecha.

PROGRAMACION I 22
Operadores Lógicos
Operadores lógicos: Combinan expresiones que devuelven valores lógicos, devolviendo valores
lógicos también.

Operador Acción
&& And “Y” lógico. La expressión es cierta si ambos operandos son ciertos
|| Or “O” lógico. La expression es cierta si cualquier operando es cierto
! Not “No” lógico. Devuelve lo contrario del operando

Reglas de prioridad:
 Primero: !
 Luego: &&
 Después: ||

PROGRAMACION I 23
Operadores de Incremento y
Decremento
Operador Acción
++ Incrementa en 1 el valor de una variable
-- Decrementa en 1 el valor de una variable
Operador prefijo: precede al operando (--x, ++x).
Operador sufijo: detrás del operando (x--, x++).
Cuando estos operadores se usan en una instrucción aislada tienen el mismo efecto (++x; es lo
mismo que x++; y --x; es lo mismo que x--;).
Cuando se usan en una expresión:
 Operador prefijo: incrementa o decrementa el valor de la variable antes de que se use su valor.
Ejemplo: Si a vale 1, b=++a; deja a=2 y b=2.
 Operador sufijo: usa el valor de la variable y después la incrementa o decrementa.
Ejemplo: Si a vale 1, b=a++; deja a=2 y b=1.

PROGRAMACION I 24
Operadores y Expresiones de Asignación
Ya hemos usado múltiples veces el operador de asignación: la sentencia variable = expresión
evalúa la expresión de la derecha y la asigna a la variable de la izquierda.
Sin embargo el operador de asignación (=) se puede combinar con los operadores aritméticos (op).
De este modo: variable op= expresión equivale a variable = variable op (expresión)
Ejemplo: Operador Significado
int a=3, b=7;
a++; += Incrementa el valor de la variable en un valor determinado
b+=b*2; -= Decrementa el valor de la variable en un valor determinado
b=++a; *= Multiplica el valor de la variable en un valor determinado
b=a++;
b--; /= Divide el valor de la variable en un valor determinado
a=b=2; %= Calcula el resto de la división de la variable en un valor determinado
a=b-=2;

PROGRAMACION I 25
Expresión Condicional
expr1 ? expr2 : expr3
Se evalúa expr1:
 Si expr1 es verdadero entonces se devuelve expr2
 Si expr1 es falso entonces se devuelve expr3

PROGRAMACION I 26
Precedencia y Orden de Evaluación
Máxima ! ++ --
* / %
+ -
> >= < <=
== !=
&&
||
Mínima
?:
= += -= *= /= %=
Para cambiar esta precedencia se usan los paréntesis.
Los operadores de igual precedencia se van evaluando de izda. a dcha., exceptuando los de
asignación que van de dcha. a izda.

PROGRAMACION I 27
Conversión de Tipos
Si en las operaciones aritméticas se combinan operandos de distintos tipos, se trabaja con el
tipo del operando con más precisión y se devuelve ese tipo.
Si a una variable entera se le asigna un resultado real, la parte decimal se pierde (se trunca). El
caso contrario se asigna correctamente.
Si a una variable entera se le asigna un valor que la sobrepasa en rango, el resultado no será
correcto.
Conversiones de tipo forzadas, “operador de cast”, o “casting”: Una variable o el resultado de
una expresión se fuerzan a un tipo diferente del inicial.
(tipo) expresión
Ejemplo: (int)3.5f+7.5f
(es diferente de (int)(3.5f+7.5f) )

PROGRAMACION I 28
Conceptos previos de E/S
Para que un programa pueda acceder a los dispositivos de E/S, el Sistema Operativo proporciona
una serie de funciones E/S (transportan datos).
 Funciones de Entrada->Introducen información en el ordenador.
 Funciones de Salida -> Extraen información desde el ordenador.
No forman parte de la definición del lenguaje C.
El lenguaje C va acompañado de una librería (biblioteca) estándar disponible en todos los
compiladores, que se encarga de traducir las peticiones de entrada/salida en las
correspondientes llamadas a funciones del S.O. Su cabecera se encuentra en stdio.h
Utilizando esta librería, el programador de C puede realizar operaciones de E/S de manera
independiente del S.O., permitiendo así que los programas sean portables.

PROGRAMACION I 29
Salida con putchar(c)
Muestra el carácter c por pantalla en la posición actual del cursor.
c es un dato normalmente de tipo int o char, cuyo valor se interpreta como el código ASCII del
carácter que se quiere mostrar.
En pantalla se muestra el símbolo correspondiente. Ejemplos:
putchar('a'); /* El carácter 'a' */
putchar(97); /* También el carácter 'a' */
putchar('\n'); /* Salto de línea */

PROGRAMACION I 30
Salida con puts(cadena)
Muestra por pantalla una cadena de caracteres a partir de la posición actual del cursor.
cadena debe ser una cadena de caracteres.
Tras mostrar la cadena salta a la línea siguiente automáticamente.
Ejemplos:
char cadena[]="Esto es una cadena";
puts(cadena);
puts("Esto es un ejemplo de puts");

PROGRAMACION I 31
Mostrar con printf(control, argumentos)
La función printf() sirve para escribir datos en la pantalla con un formato determinado.
Control es una cadena de control que tiene dos clases de elementos:
 Caracteres normales que se imprimirán por pantalla directamente.
 Caracteres especiales de formato que definen el modo en que se visualizarán los argumentos. Siempre
empiezan con el carácter %.

Argumentos
 Una lista de cero o más elementos separados por comas.
 Para cada argumento deberá haber una secuencia especificando el formato deseado en control.

PROGRAMACION I 32
Mostrar con printf(control, argumentos)
%-+0n.mX
(Lo mínimo a poner sería %X . Lo demás es opcional)
- : Alinear a la izquierda
+ : Incluir siempre el signo (+ ó -)
0 : Alinear rellenando con ceros en lugar de espacios
n : Valor entero que indica el mínimo número de caracteres a mostrar
.m : m es un valor entero que indica el número de dígitos decimales a mostrar
X : Letra(s) que indica(n) el tipo de dato que se quiere mostrar

PROGRAMACION I 33
Mostrar Valores con printf()
Tipo de dato Especificaciones de format Comentario
Int %d Entero con signo
Float %f Real con signo
Char %c Carácter
Char[n] %s Cadena de caracteres
Unsigned int %u Entero sin signo
Unsigned long %ld Entero largo sin signo
Float %f Número real en notación de punto fijo
Float %e Número real en notación científica
Float %g Real en notación de punto fijo o científica, según
convenga

PROGRAMACION I 34
Mostrar Valores con printf()
printf(“\n Valores: %d, %f”, entero, real);
Salida por pantalla:
(Retorno de carro)Valores: 2, 2.3
printf(“%s\t%d\n%f”, concepto, num, coste);
Salida por pantalla:
Cremallera 1234
12.345

PROGRAMACION I 35
Entrada de datos con getchar()
Lee un carácter desde el teclado y devuelve su código ASCII, que puede almacenarse en una
variable.
Ejemplo:
char c;
c = getchar();

PROGRAMACION I 36
Entrada de datos con gets(cadena)
Lee una cadena de caracteres introducida desde el teclado por el usuario y la almacena en la
variable cadena.
Se almacenan caracteres hasta que se encuentra un salto de línea ('\n') (por ejemplo porque se
ha pulsado la tecla intro.), que NO se almacena.
Se utiliza mucho para leer cadenas con espacios.
Ejemplo:
char cadena[20];
gets(cadena);

PROGRAMACION I 37
Entrada con scanf(control,variables)
Lee datos por teclado del tipo indicado.
Similar a printf, pero en sentido inverso.
En control solamente deben aparecer caracteres de control.
Las variables han de ir precedidas por el símbolo & (excepto las cadenas de caracteres), que es
la forma de indicar en C que van a ser modificadas.
El formato de la cadena de control es: %X
o No se indican datos de precisión, alineación ...

Toma como delimitador los espacios en blanco y saltos de línea.


o No se puede usar para leer cadenas que contengan espacios

PROGRAMACION I 38
Entrada con scanf(control,variables)
Control Tipo de dato
\n%c char
%s Cadena de caracteres
%d int
%u unsigned int
%hd short int
%hu unsigned short int
%ld long int
%lu unsigned long int
%f float
%lf double

PROGRAMACION I 39
Ejemplo Mostrar:
#include <stdio.h> // librería que contiene las funciones de entrada/salida de datos
int main (void) {
int numero1=1;
int numero2=2.1;
float numero3=12.23;
char letra=’a’;
char palabra[5]=”HOLA”;

printf("\n El valor de numero1 es: %d", numero1);


printf("\n El valor de numero2 es: %d", numero2);
printf("\n El valor de numero3 es: %f", numero3);
printf("\n El valor de letra es: %c", letra);
printf("\n El valor de numero1 es: %s",& palabra);
printf("\n”);
system(“PAUSE”); //Esta función lo que hace es pausar la ejecución hasta que pulsemos una tecla.
}

PROGRAMACION I 40
Usando Dev-C++
Dev-C++ es un entorno desarrollo integrado (IDE) para los lenguajes de programación C/C++.
Usa Mingw basado en GCC (GNU Compiler Collection) como compilador. Puede crear ejecutables para Windows,
ya sea en modo consola o GUI gráfico, así como también DLLs y bibliotecas estáticas. Dev-C++ puede también ser
usado en combinación con Cygwin o cualquier otro compilador basado en GCC.
Es software libre. Las características de Dev-C++ son:
- Soporta compiladores basados en GCC (incluido Mingw)
- Depuración integrada (con GDB)
- Soporta múltiples lenguajes (idiomas)
- Explorador de Clases
- Explorador de Depuración de variables
- Autocompletar código
- Mostrado de funciones
- Admistrador / Explorador de proyectos
- Editor con Sintaxis remarcada configurable
- Rápidamente crea programas en modo ventana, modo consola, bibliotecas estáticas y DLLs
- Soporta plantillas para crear tipos de proyectos propios personalizados
- Utilidades de Búsqueda y Reemplazamiento
- Administrador de Paquetes, para una instalación de plugins y bibliotecas

PROGRAMACION I 41
Crear un Proyecto en Dev-C++
Creamos un nuevo proyecto
que sea Console Application,
seleccionamos C Project y le
ponemos el nombre que
queramos, que en este caso
es: Tipo_Datos.

PROGRAMACION I 42
Usando Dev-C++
A continuación indicamos donde
queremos guardar el proyecto que
hemos creado.

PROGRAMACION I 43
Usando Dev-C++
Por defecto, Dev-C++ crea el
archivo main.c.

PROGRAMACION I 44
Usando Dev-C++
Ahora ya podemos incluir nuestro código.
Lo primero que tenemos que hacer es llamar
a la librería que contiene las funciones de
entrada/salida de datos (stdio.h). Para ello
escribimos al inicio del código:
#include <stdio.h>

Luego dentro del main hacemos la


declaración de las variables.

Llamamos a las funciones printf que muestra


por pantalla los valores que se han definido
en el código.

PROGRAMACION I 45
Usando Dev-C++
Compilamos y ejecutamos el
programa para comprobar que todo
es correcto.
El resultado es el siguiente:

PROGRAMACION I 46
Ejemplo Leer Datos
#include <stdio.h>
int main (void) {
int numero1, numero2;
float numero3;
char letra;
char palabra[5];
printf(“\n Escriba el valor de numero1: “); scanf(“%d”,&numero1);
printf(“\n Escriba el valor de numero2: “); scanf(“%d”,&numero2);
printf(“\n Escriba el valor de numero3: “); scanf(“%f”,&numero3);
printf(“\n Escriba el valor de letra: “);
fflush (stdin); // limpia el buffer
scanf(“%c”,&letra);
printf(“\n Escriba el valor de palabra: “); scanf(“%s”,&palabra);
printf("\n El valor introducido de numero1 es: %d", numero1);
printf("\n El valor introducido de numero2 es: %d", numero2);
printf("\n El valor introducido de numero3 es: %f", numero3);
printf("\n El valor introducido de letra es: %c", letra);
printf("\n El valor introducido de numero1 es: %s",& palabra);
printf("\n”);
system(“PAUSE”);
}
PROGRAMACION I 47
Recursos Adicionales
Instalador Dev C++
https://sourceforge.net/projects/orwelldevcpp/?source=typ_redirect
Bibliografía
“El lenguaje de Programación C”. Kernighan y Ritchie. Ed. Prentice-Hall.
“Programación en Lenguaje C”. H. Schildt. Ed. McGraw-Hill.
“Programación en C. Introducción y Conceptos Avanzados”. M. Waite, S. Prata y D. Martín. Ed. Anaya
Multimedia.
“Problemas Resueltos de Programación en C”. F. García et al. Ed. Thomson.
“Programación en Lenguaje C, Ejercicios y Problemas”. E. Quero. Ed. Thomson.
“Ejercicios de Programación Creativos y Recreativos en C++”. C. Gregorio Rodríguez et al. Ed. Prentice
Hall.

PROGRAMACION I 48

También podría gustarte