You are on page 1of 29

Departamento de Lenguajes y

Sistemas Informáticos

INTRODUCCIÓN A LA
PROGRAMACIÓN 1

Curso 2005/2006

Curso 05-06. Práctica 1 1


Prácticas de Laboratorio
Temario
Práctica 1: Introducción al lenguaje C
Práctica 2: Estructuras de control
Práctica 3: Funciones
Práctica 4: Tablas
Práctica 5: Cadenas de caracteres
Práctica 6: Estructuras
Práctica 7: Ficheros de texto
Práctica 8: Ficheros binarios

Curso 05-06. Práctica 1 2


Fases de la Compilación en C

Fuente Compilador
*.LIB
Precompilación Compilación Enlazado
*.C
Programa
*. EXE

*.LIB
*.C” *.OBJ
*.H Biblioteca
estándar
Ficheros intermedios
Curso 05-06. Práctica 1 3
INTRODUCCIÓN AL
LENGUAJE C

1. Introducción
2. Descripción general del lenguaje
3. Estructura general de un programa
4. Declaración de importaciones
5. Definición de constantes
6. Declaración de variables
7. Definición de tipos
8. Expresiones
9. Asignación
10. Entrada y Salida
Curso 05-06. Práctica 1 4
INTRODUCCIÓN AL
LENGUAJE C

2.2. Elementos sintácticos


Palabras clave: aquellas
auto double que tienen
intun significado especial para el
struct
compilador.
break else long switch
case enum¡¡Sóloregister
son 32!! typedef
Identificadores:
char nombres
extern que referencian
return a losunion
diferentes elementos de
un programa que no son palabras clave.
const float short unsigned
continue for signed void
Un identificador debe comenzar por una letra o el carácter
default
subrayado (_) goto sizeof
y puede ir seguido volatile
por dígitos, letras o el carácter
subrayado.
do if static while

¡Se distingue entre mayúsculas y minúsculas.!

Curso 05-06. Práctica 1 5


INTRODUCCIÓN AL
LENGUAJE C

Los comentarios en C van entre los caracteres '/* ' y '*/'; por ejemplo,

/* Este es un comentario de una línea */


/* Este es un comentario de dos
líneas */

Los comentarios no deben anidarse unos en otros, pues los compiladores


antiguos no los interpretan correctamente:

/* aquí hay un comentario


/* anidado */
que es incorrecto */

Curso 05-06. Práctica 1 6


INTRODUCCIÓN AL
LENGUAJE C

3. Estructura general de un programa

declaración de importaciones
definición de constantes
definición de tipos
declaración de prototipos
void main (void)
{ Ejemplo
declaración de variables
instrucciones #include <stdio.h>
} void main (void)
{
definición de funciones
int a, b;
printf ("\nIntroduzca dos números: ");
scanf ("%d%d", &a, &b);
printf ("\n\nEl producto es: %d", a*b);
}

Curso 05-06. Práctica 1 7


INTRODUCCIÓN AL
LENGUAJE C

4. Declaración de importaciones
Se utilizan para comunicar al compilador dónde está la información
necesaria para interpretar correctamente las funciones, constantes y tipos
utilizados en el programa. Esta información se almacena en un fichero de
extensión .h (fichero de cabecera, header file) que se importa mediante:
#include <nombre_fichero_cabecera.h>
El fichero de cabecera puede corresponderse con el uso de :
• Biblioteca estándar (el más frecuente)
• stdio.h (funciones de entrada y salida)
• math.h (funciones matemáticas)
• Otros módulos del mismo programa (Práctica 6)
• Bibliotecas de terceros (Práctica 6)

Curso 05-06. Práctica 1 8


INTRODUCCIÓN AL
LENGUAJE C

5. Definición de constantes
Pueden ser de varios tipos de datos. En el caso de constantes de tipo carácter,
éstas irán encerradas entre comillas simples, utilizándose las comillas dobles
en el caso de cadenas de caracteres. El formato de uso es:

#define identificador_constante valor_constante


Ejemplos:
#define PI 3.14159
#define MAXIMO 999
#define ULTIMALETRA 'Z'
#define MENSAJE "Introduzca su edad:“

En la precompilación se sustituyen los identificadores con su valor real.


(Se sustituye el identificador_constante por valor_constante)

Curso 05-06. Práctica 1 9


INTRODUCCIÓN AL
LENGUAJE C

6. Declaración de variables
Permiten recuperar y almacenar valores de un tipo determinado a través
de un identificador.
• Los Identificadores son alfanuméricos (incluido el ‘_’) y deben
comenzar por una letra. Ejemplos:

suma suma_total contador1 notaMaxima


• La longitud máxima del identificador es de 32 caracteres.
• Deben declararse antes de su utilización.

Curso 05-06. Práctica 1 10


INTRODUCCIÓN AL
LENGUAJE C

Los tipos básicos de variables son:


• char, que representa un carácter
• int / long, que representa un número entero
• float / double, que representa un número real

Equivalencia con los TIPOS DE DATOS


tipos de datos de LEA: LEA C
carácter char
entero int / long
real float / double
Curso 05-06. Práctica 1 11
INTRODUCCIÓN AL
LENGUAJE C

También existe el tipo void, que representa la ausencia de tipo (se estudiará
cuando se vean las funciones).

La declaración de las variables se hace de acuerdo con el siguiente


formato:

tipo lista_de_identificadores;
Ejemplos.-
char c;
int i, j;
long potencia;
double radio, longitud;

Curso 05-06. Práctica 1 12


INTRODUCCIÓN AL
LENGUAJE C

7. Tipos definidos por el usuario


Simplifican la escritura de programas reales (‘los de verdad’), pues permiten
que el programador pueda utilizar tipos de datos cercanos al problema a
tratar. La instrucción para definir un nuevo tipo es:
typedef tipo Nombre;
Ejemplos:
typedef enum {falso, cierto} Logico;
typedef int Contador;
typedef enum {rojo, verde, azul} Color;
La declaración de variables de tipos de usuario no varía, por ejemplo:
Logico encontrado;
Contador i, j; Color color_fondo;
Curso 05-06. Práctica 1 13
INTRODUCCIÓN AL
LENGUAJE C

8. Expresiones
Permiten expresar diversos tipos de operaciones entre los elementos de un
programa (constantes, variables y funciones).
8.1. Operadores aritméticos
Operan sobre datos de tipo numérico, y son los siguientes:

- resta (menos unario) * producto % módulo


+ suma / división -- decremento
++ incremento
Ejemplos de expresiones aritméticas:
(votos/electores)*100 a*x*x + b*x + c
horas*3600+minutos*60+segundos (alto-bajo)/2

Curso 05-06. Práctica 1 14


INTRODUCCIÓN AL
LENGUAJE C

8.2. Operadores relacionales


Operan sobre elementos de diferentes tipos y evalúan un tipo lógico:
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
== igual que
!= distinto de
Ejemplos de expresiones relacionales:
x >= (y+z)
contador < MAXIMO
numero%2 == 0
ordenado != Cierto

Curso 05-06. Práctica 1 15


INTRODUCCIÓN AL
LENGUAJE C

8.3. Operadores lógicos


Estos operadores operan sobre tipos lógicos, evaluando un tipo lógico:
&& Y
|| O
! NO
Ejemplos de expresiones lógicas:
(opcion < MINIMO) || (opcion > MAXIMO)
(opcion >= MINIMO) && (opcion <= MAXIMO)
! encontrado

Curso 05-06. Práctica 1 16


INTRODUCCIÓN AL
LENGUAJE C

8.4. Conversión de tipo en las expresiones


Cuando en una expresión se mezclan constantes y/o variables de distintos
tipos, estos se convierten a un tipo único. El compilador de C promociona
todos los operandos hacia el tipo del operando de mayor tamaño. Esto se hace
operación a operación.
Ejemplos:
int i; double d; i + d es del tipo double.
int i= 100, j= 3; float f; f= i/j; ¿qué se almacena en f?

33.000000 ya que la división de dos números entero


es entera (33) y después se almacena en float
Curso 05-06. Práctica 1 17
INTRODUCCIÓN AL
LENGUAJE C

8.5. Precedencia y asociatividad de operadores


¿Cómo resuelve el compilador la expresión ‘Res= 4 + 6 / 3 * 2?
• Reglas de precedencia. Establecen prioridad entre los operadores.
Los paréntesis pueden alterar el orden de ejecución de las
operaciones, ya que las expresiones que están dentro de los
paréntesis se evalúan en primer lugar.

• Reglas de asociatividad. Resuelven la ambigüedad entre operadores


de la misma prioridad. ea ahora la expresión

La expresión anterior es equivalente, pues, a la siguiente:


4 + ((6 / 3) * 2)

Curso 05-06. Práctica 1 18


INTRODUCCIÓN AL
LENGUAJE C

Operador Asociatividad
! ++ -- - (unario) derecha a izquierda
* / % izquierda a derecha
+ - izquierda a derecha
< <= > >= izquierda a derecha
== != izquierda a derecha
&& izquierda a derecha
|| izquierda a derecha

Curso 05-06. Práctica 1 19


INTRODUCCIÓN AL
LENGUAJE C

Ejemplos de expresiones
(-b + sqrt(b*b - 4*a*c))/(2*a)
(x >= MINIMO) && (x <= MAXIMO)
(contador < MAXIMO) && !encontrado
(anyo1 < anyo2) || (anyo1 == anyo2) && (mes1 <
mes2)
anyo%4 == 0 && anyo%100 !=0 || anyo%400 == 0

Curso 05-06. Práctica 1 20


INTRODUCCIÓN AL
LENGUAJE C

9. Asignación
La operación de asignación consiste en asociar un valor a una variable a través
de una expresión. La sintaxis en C es la siguiente:
nombre_de_variable = expresión ;
Primero se evalúa la expresión y luego se almacena el valor obtenido en la
variable que aparece a la izquierda del operador de asignación (símbolo =).
Por ejemplo, contador = 1;
media = (a + b) / 2.0;
i = i + 1;
kilometros = 1609 * millas;
suma = 0;

Se puede asignar un valor inicial a una variable cuando se declara:


int suma = 0;
Curso 05-06. Práctica 1 21
INTRODUCCIÓN AL
LENGUAJE C

9.1. Operadores de incremento (++) y decremento (--)


La asignación
i = i + 1;
se puede simplificar utilizando el operador de incremento (++):

i++;

Uso del ++ / --
Sólo a la derecha de la variable
y nunca en una expresión

Curso 05-06. Práctica 1 22


INTRODUCCIÓN AL
LENGUAJE C

10. Entrada y salida


No hay palabras reservadas del lenguaje que realicen tareas de
entrada/salida, sino que todas estas operaciones están suministradas por la
biblioteca estándar. Para utilizarlas es preciso importar el fichero de cabecera
stdio.h

10.1. Entrada y salida de caracteres: funciones getchar y putchar


getchar: lee un carácter de la entrada estándar (teclado) y devuelve su valor
cuando se pulsa RETORNO. La función putchar escribe un carácter en la
salida estándar (pantalla).
char ch;
ch = getchar ();
putchar (ch);

lee un carácter del teclado, lo asigna a ch y lo escribe en la pantalla. 23


Curso 05-06. Práctica 1
INTRODUCCIÓN AL
LENGUAJE C

10.2. Entrada y salida de cadenas: funciones gets y puts


La función gets lee una cadena de caracteres de la entrada estándar, mientras
que la función puts escribe una cadena de caracteres en la salida estándar,
saltando a la línea siguiente.
Ejemplos:
puts ("Escriba su nombre:");
gets (nombre);

Curso 05-06. Práctica 1 24


INTRODUCCIÓN AL
LENGUAJE C

10.3. Entrada y salida con formato: funciones printf y scanf


La función printf permite escribir una lista de datos con un formato
preestablecido. Acepta diferentes tipos de argumentos: carácter, valor numérico
entero o real o cadena de caracteres, y los escribe según un formato especificado
sobre la salida estándar. La forma de la función printf es:
printf ("formato", arg1, arg2, ..., argn);
donde argi pueden ser constantes, variables o expresiones, y “formato” es una
serie de caracteres en la cual se pueden encontrar dos tipos de datos: un mensaje
o texto a escribir literalmente, y los símbolos especificadores del formato con el
cual se van a escribir las variables dadas como argumentos.
Por ejemplo: printf ("Esto es un mensaje\n");
Visualiza la cadena:
Esto es un mensaje seguida de un salto de línea (debido al \n)
Curso 05-06. Práctica 1 25
INTRODUCCIÓN AL
LENGUAJE C

Los especificadores de formato deben ir precedidos del signo %. Algunos de


ellos son:
%c carácter (char)
%d número entero (int) %ld número entero (long)
%f número real (float) %lf número real (double)
%s cadena de caracteres
Por cada argumento a imprimir existe un especificador de formato, que
indica el formato en el cual se va a mostrar el dato.

Curso 05-06. Práctica 1 26


INTRODUCCIÓN AL
LENGUAJE C

Otros ejemplos de printf:


printf (“\nEl cuadrado de %f vale %f”, x, x*x);
printf (“\nLa edad de %s es %d años”, “Juan”, edad);
printf (“\nSeno (%lf) = %lf\n”, x, sin(x));

La función printf puede emplearse sin argumentos, en cuyo caso sólo se


imprimen los caracteres presentes en la cadena de formato.

Curso 05-06. Práctica 1 27


INTRODUCCIÓN AL
LENGUAJE C

La función scanf permite leer valores desde la entrada estándar y


almacenarlos en las variables que se especifican como argumentos. Éstas
deben ir normalmente precedidas por el símbolo &. La sintaxis es:
scanf ("formato", arg1, arg2, ..., argn);
donde debe haber tantos especificadores en la cadena de “formato” como
variables en la lista de argumentos. Por ejemplo,
int n;
double x;
scanf ("%d%lf", &n, &x);
para leer un valor de tipo int y otro de tipo double. Los valores se
introducirán desde la entrada estándar separándolos por espacios o retornos
de carro. En la cadena de formato aparecen especificadores de formato (los
mismos que ya se han visto) pero nunca deben aparecer caracteres ordinarios.
Curso 05-06. Práctica 1 28
INTRODUCCIÓN AL
LENGUAJE C

Como ejemplo del uso de printf y scanf, sea un programa que lee dos
números del teclado y calcula e imprime la suma de ambos:
/* Programa que lee dos números y los suma */

#include <stdio.h>
void main (void)
{
int a, b, suma;
printf ("\nIntroduzca a y b: ");
scanf ("%d%d", &a, &b);
printf ("\n a vale: %d; b vale %d", a, b);
suma = a + b;
printf ("\n\nLa suma de a y b vale: %d\n", suma);
}

Curso 05-06. Práctica 1 29

You might also like