Lenguaje C
Lenguaje C
Lenguaje C
Lenguaje de programación C
Introducción
Todo programa en C, se compone de una o más funciones. La función que se ejecuta en primera
instancia es una función llamada main( ), esta función es la más importante de todo el programa y es
la que nunca debe faltar. A esta función no se le puede cambiar el nombre; main( ) es el cuerpo
principal de nuestro código fuente. A su vez toda función del programa debe devolver un valor al
programa, este valor se indica con la palabra reservada "return". Ciertas veces no queremos que la
función devuelva ningún valor para estos casos simplemente le indicamos "return 0" o escribimos la
palabra reservada "void" antes del nombre de la función.
Comentarios
Ejemplo:
int main() {
{
/* este es un comentario que puede afectar a un
bloque de varios renglones o a un solo renglón */
Cuando usamos un programa es muy importante manejar datos. En C podemos almacenar los datos
en variables. El contenido de las variables se puede ver o cambiar en cualquier momento. Estas
variables pueden ser de distintos tipos dependiendo del tipo de dato que queramos guardar en ellas.
No es lo mismo guardar un nombre que un número. Hay que recordar también que la memoria del
ordenador es limitada, así que cuando guardamos un dato, debemos usar sólo la memoria necesaria.
Identificadores:
Son nombres dados a constantes, variables y funciones. El identificador está formado por una
secuencia de una o más letras, dígitos y el caracter de subrayado. El primer caracter de un
identificador siempre debe ser una letra o el caracter de subrayado, en estos identificadores
(nombres de variables) se debe tener gran cuidado, ya que el C hace diferencia entre mayúsculas y
minúsculas.
Constantes:
Las constantes son un valor que una vez fijado por el compilador, no cambia durante la ejecución del
programa. El valor almacenado en una constante puede ser un número o bien una cadena de
caracteres ó un caracter suelto. El lenguaje C indica al programa que se trata de una constante
usando la directiva #define (preprocesador) o con el modificador const (compiladores modernos)
Por ejemplo:
#define PI 3.141592 /* constante pi */
En cualquier sitio en el que se utilice PI, el preprocesador lo sustituye por el valor 3.141592 (aún se
puede utilizar este método en C y C++).
Cuando se utiliza el preprocesador para crear constantes, su control queda fuera del ámbito del
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
En C, el compilador trata a const del mismo modo que a una variable que tuviera asociado una
etiqueta que dice «No me cambies». Cuando se define un const en C, el compilador pide espacio
para él, de modo que si se define más de un const con el mismo nombre en dos ficheros distintos (o
se ubica la definición en un fichero de cabeceras), el enlazador generará mensajes de error sobre del
conflicto.
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Tipos de Datos
En una variable de este tipo se almacenan números enteros (sin decimales). El rango de valores que
admite es -32768 a 32767. Cuando definimos una variable lo que estamos haciendo es decirle al
compilador que nos reserve una zona de la memoria para almacenar datos de tipo int. Hay que
decirle al compilador que queremos crear una variable y hay que indicarle de qué tipo. Si esta
declaración se hace antes de main( ), esto indica que la variable será una variable global, o sea que
se usará en main( ) y en el resto de funciones. Mientras que si se declara dentro de main( ), esto
indica que la variable será una variable local, o sea, sólo para la función main( ).
Por ejemplo:
int valor;
int main( )...
/* Esta expresión declara una variable global de nombre "valor" y de tipo
entero. */
int main( )
{
float valor ; /* Esta expresión declara una variable local de nombre */
} /*"valor" y de tipo float (coma flotante) */
variable. Sólo admite valores positivos. Este modificador se usa así: unsigned int total ; esto
declara un variable de nombre "total", de tipo entero positivo.
Tamaño
Tipo de Dato almacenado Rango Observaciones
(en bytes)
Dato
Valores
unsigned Caracteres 1 0 a 255 correspondientes a
char
números ordinales de
los 256 caracteres
ASCII
char letra = 'A'; ó
char Caracteres 1 -128 a 127
letra = 65;
Proporciona un entero
short int Entero 2 -32768 a 32767
en el rango dado
unsigned Entero 2 0 a 65535 Un entero positivo
int
Equivalente al tipo short
int Enero 2 -32768 a 32767
en máquinas de 16 bits
-2147483648 a
long int Entero 4 tamaño(int) <=
2147483647
tamaño(long)
unsigned
Entero 4 0 a 4294967295 entero largo sin signo
long
Números Reales -3.4 E-38 a no tiene más de 5
float 4
3.4 E+38 dígitos significativos
Números Reales 3.4 E-4932
Puede tener hasta 19
long (coma flotante 10 a
dígitos significativos
double con doble 1.18 E+4932
precisión)
Números Reales 1.79769 E-308
double 8 Tiene hasta 16 dígitos
(coma flotante a 1.79769 E+308
significativos
con doble
precisión)
definido
Usando xx depende del tipo XXXXXXXXXXXXXX
por el
estructuras de dato
usuario
Observación: los tamaños en bytes que expresa esta tabla son los que nos brinda portabilidad,
existen compiladores modernos que han ampliado estos rangos
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Nota: Para hacer uso de éstas y otras funciones, es necesario incluir el archivo de cabecera stdio.h,
esto se hace de la siguiente manera: #include<stdio.h>, así queda incluido éste archivo y se
podrá proceder con el programa. Ahora haremos uso de lo que hemos aprendido para hacer un
programa:
# include <stdio.h>
int main()
{
int x;
printf("Bienvenidos al mundo de C\n");
printf("Introduzca un valor entero: ");
scanf("%d", &x);
printf("\nEl valor que introdujo fue %d", x);
return 0;
}
por medio del teclado y se manda a guardar este valor a la variable antes declarada.
● Después se imprime un mensaje y el valor de la variable.
● La expresión "return 0;" es una instrucción.
● Como verán, toda función debe retornar un valor, como no queremos que nuestra función
main( ) devuelve nada, entonces le decimos que retorne 0 (cero).
%c Un único carácter
%s Cadena de caracteres
Secuencias de escape
Código Significado
“ \n “ nueva línea
“ \r " retorno de carro
" \f " nueva página
" \t " tabulador horizontal
" \b " retroceso (backspace)
“ \’ “ comilla simple
" \" " Comillas
" \\ " Barra
Si lo que queremos es que el usuario introduzca un caracter por el teclado usamos las funciones
getchar( ), getc( ), getch( ) y getche( ). Estas esperan a que el usuario introduzca un carácter por el
teclado. La diferencia entre getc( ), getche( ), getchar( ) y getch( ) es que las tres primeras imprimen
en pantalla la tecla que hemos pulsado y la última no.
Observaremos además que getc( ) y getchar( ) necesitan de la tecla “[ENTER]” para confirmar la
captura. Por ejemplo:
# include< stdio.h>
# include< conio.h>
/* los compiladores más modernos traen portabilidad para "conio.h", un
archivo cabecera o HEADER que antiguamente era exclusivo de Borland
International.*/
int main( )
{
char letra;
printf ( "Introduzca una letra: " );
fflush(stdin); // leer nota al pie de página 1
letra = getche( );
printf ( "\nLa letra que introdujo es: %c", letra );
return 0;
}
1 La función del fflush, realiza la limpieza del buffer de entrada (stdin) standard input.
Usualmente quedan almacenados algunos datos en el buffer sobre todo saltos de línea y
espacio y se debería usar antes de cada scanf con el fin de garantizar que el buffer esté
limpio
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
# include< stdio.h>
# include< conio.h>
int main( )
{
char letra;
printf ( "Introduzca una letra: " );
fflush(stdin);
letra = getch( );
printf ( "\nLa letra que introdujo
es: %c", letra );
return 0;
}
# include< stdio.h>
# include< conio.h>
int main( )
{
char letra;
printf ( "Introduzca una letra: " );
letra = getc(stdin);
printf ( "\nLa letra que introdujo
es: %c", letra );
return 0;
}
Con getch( ):
Introduzca una letra:
/* por ejemplo N */
La letra que introdujo es: N
Con getc( ):
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Se debe tener en cuenta, se haga o no en estos ejemplos, que los archivos de cabecera
(“stdio.h”/“conio.h”) deben estar entre los signos < >, de lo contrario se produciría un error en el
programa.
#include<stdio.h> #include<stdio.h>
void main ( ) void main ( )
{ {
char nombre [15]; char nombre [15];
printf("Ingrese su nombre: "); printf("Ingrese su nombre: ");
fflush(stdin); fflush(stdin);
scanf("%s", nombre); gets (nombre);
} }
Operadores (Manipuladores)
Los operadores son símbolos que indican cómo son manipulados los datos. Estos operadores se
pueden clasificar en: aritméticos, lógicos, relacionales, de asignación, de manejo de bits y otros.
Operadores de Asignación: Estos operadores son los que nos sirven para darle (asignarle) un valor
a una variable. Este valor lo podemos teclear manualmente o bien puede ser el valor de otra variable.
Por ejemplo:
Operadores Aritméticos: Los operadores aritméticos son aquellos que sirven para realizar
operaciones tales como suma, resta, división y multiplicación. Con ellos podemos calcular el resto o
módulo de una división entera, o bien podemos incrementar o disminuir el valor de las variables. Por
ejemplo:
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
# include <stdio.h>
int main( ) {
int x = 7 , y, int z = 2 ;
/* es posible declarar e iniciar variables al mismo tiempo */
printf ("El valor de x es: %d\n", x);
y = x + z ; /* asigna el valor de una suma */
x ++ ; /* incrementa el valor de x en uno */
printf ("Los valores de x, y, z son: %d, %d, %d", x, y, z); return 0;
El valor de x es: 7
Los valores de x, y, z son: 8, 9, 2
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Operadores Lógicos: Estos operadores son los que nos permiten hacer comparaciones entre dos o
más variables. Estos operadores son los que nos permitirán decidir en una sentencia condicional que
veremos más adelante. Por ejemplo:
Operador Sizeof( ): Existe un operador muy utilizado que es el sizeof( ). Este operador nos devuelve
el tamaño en bytes de una variable. De esta manera no tenemos que preocuparnos en recordar o
calcular cuánto ocupa. Además el tamaño de una variable cambia de un compilador a otro, es la
mejor forma de asegurarse. Se usa poniendo el nombre de la variable después de sizeof y separado
de un espacio. Por ejemplo:
int main( ) {
float variable;
printf ( "Tamaño de la variable: %d\n”, sizeof variable);
printf ( "Tamaño de un entero: %d", sizeof (int));
}
Se debe tener gran cuidado al agrupar estos operadores, pues unas acciones se llevan a cabo antes
que otras, esto depende del nivel de precedencia que tenga el operador. Para esto se presenta una
tabla, en la que se muestra en orden descendente la prioridad de los mismos.
Operadores Lógicos
Operador Operación
Operadores Aritméticos
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Operador Operación
% Módulo o resto de una división entera, los operandos tienen que ser enteros
Operadores de Relación
Operador Operación
Operadores de Asignación
Operador Operación
= Asignación simple
Niveles de Precedencia
Operador
() []
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
! ++ --
* / %
+ -
== !=
&&
||
= *= /= %= += -=
Operadores avanzados
Los operadores de incremento, decremento y asignación compuesta permiten modificar el
contenido de una variable de forma eficiente y abreviada.
Operadores Significado A++, ++A Incrementa en 1 el valor de A (A=A+1) A--, --A Disminuye en 1 el
valor de A (A=A-1)
A+=x A=A+x A-=x A=A-x A*=x A=A*x A/=x A=A/x
Ejemplo:
x = 1;
A = ++x; //preincremento: A valdrá 2, x valdrá 2
x = 1;
A = x++; // postincremento: A valdrá 1, x valdrá 2
Bibliografia
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1