01 - Lenguaje de Programación C
01 - Lenguaje de Programación C
01 - Lenguaje de Programación 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
Un buen programa debe contener buenos comentarios. Así, si lo retomamos en el futuro no tendremos
que descifrar lo que hicimos en el pasado. Es una buena costumbre del programador comentar sus
programas. Un buen comentario es aquel que ni ofende el conocimiento del programador, ni tampoco
deja implícito lo que se está haciendo. Para poner un comentario basta con encerrar el texto entre los
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
signos:
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++).
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
Cuando se utiliza el preprocesador para crear constantes, su control queda fuera del ámbito del
compilador. No existe ninguna comprobación de tipo y no se puede obtener la dirección de PI (de modo
que no se puede pasar un puntero o una referencia a PI). PI no puede ser una variable de un tipo
definido por el usuario. El significado de PI dura desde el punto en que es definida, hasta el final del
fichero; el preprocesador no entiende de ámbitos.
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) */
Tamaño
Tipo de Dato Dato almacenado Rango Observaciones
(en bytes)
Valores correspondientes
unsigned Caracteres 1 0 a 255 a números ordinales de
char
los 256 caracteres ASCII
char letra = 'A'; ó letra
char Caracteres 1 -128 a 127
= 65;
Proporciona un entero en
short int Entero 2 -32768 a 32767
el rango dado
unsigned int Entero 2 0 a 65535 Un entero positivo
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
long Entero 4 0 a 4294967295 entero largo sin signo
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;
}
%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
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 ( )
UTN Facultad Regional Mar del Plata
Tecnicatura Universitaria en Programación
Programación 1
{ {
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:
# 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;
}
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