You are on page 1of 40

Informtica Grado en Ingeniera en Tecnologas Industriales Curso 2012/2013 Tema 3: Elementos Bsicos de Programacin

Contenido
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. El lenguaje C. Variables, Constantes e Identificadores. Declaracin de Variables en C. Tipos de Datos. Inicializacin de Variables. Asignacin de Variables. Constantes. Expresiones. Conceptos Bsicos. Operadores Aritmticos. Operadores de Incremento y Decremento. Expresiones de Asignacin. Conversiones de Tipos. Funciones de librera.
Informtica 2012/13 Tema 3 - 2

1. El lenguaje C: Caractersticas.
Desarrollado en los laboratorios Bell a comienzo de los
70 por Brian W. Kernighan y Denis M. Ritchie. Se diseo y desarroll para programar el S.O. Unix. Caractersticas:
Lenguaje de alto nivel y de propsito general, til para desarrollar cualquier tipo de aplicacin o programa. Es el lenguaje ms utilizado en ingeniera e investigacin. Es un lenguaje estructurado (funciones, estructuras, bucles, etc.) que permite la programacin modular. Eficiencia. Los programas ejecutables son rpidos. El cdigo fuente es portable a otras arquitecturas de computadores. Se encuentran compiladores C disponibles para cualquier tipo de ordenador y S.O. Es el paso previo a otros lenguajes como C++ y Java.
Informtica 2012/13 Tema 3 - 3

1. El lenguaje C: Estructura bsica de un programa en C


Estructura ms bsica de un programa en C:
int main ( ) { instruccin 1; instruccin 2; instruccin n; return 0; }
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 con ; return: Palabra reservada. Devolvemos el valor 0 al sistema operativo. La tabulacin, aunque voluntaria, es til para hacer los programas ordenados y legibles.
Informtica 2012/13 Tema 3 - 4

1. El lenguaje C: Los comentarios


Los comentarios son textos que el programador
escribe para describir partes del cdigo. Es til documentar un programa para hacerlo ms legible. Facilita la comprensin posterior por el propio programador y por otros (trabajo en equipo). Inserta informacin adicional de cualquier tipo. No influye en el rendimiento final del programa. Deben ir delimitados entre /* y */. Ejemplo:
/* Esto es un ejemplo de un comentario */
Informtica 2012/13 Tema 3 - 5

2. Variables, Constantes e Identificadores

Objetos bsicos que almacenan los datos y


sobre los que se realizan las operaciones. Variable: Objeto cuyo valor puede variar.
Es obligatorio declarar todas las variables que se van a utilizar. Tipos de variables: locales y globales.

Constante: Objeto cuyo valor no puede


variar.

Informtica 2012/13 Tema 3 - 6

2. Variables, Constantes e Identificadores


Identificador: Nombre dado a un elemento del
programa (constantes, variables y funciones). Reglas para construir un identificador:
Debe comenzar por letra (a,, z,A,...,Z) o subrayado (_). El resto del identificador puede constar de letras del alfabeto, dgitos numricos o subrayado. No se admiten espacios. Se distinguen maysculas y minsculas. Pueden tener hasta 32 caracteres (dependiendo del compilador). No puede coincidir con las palabras reservadas del lenguaje.

Palabras Reservadas: Identificadores que tienen un


significado predefinido dentro del lenguaje (main, int, ).
Informtica 2012/13 Tema 3 - 7

3. Declaracin de variables en C

La declaracin de variables implica:


Reservar memoria para almacenar los datos durante la ejecucin de un programa. Darle un nombre o identificador. Asignarle un tipo de dato.
tipo_de_dato nombre1, nombre2;

Informtica 2012/13 Tema 3 - 8

3. Declaracin de variables en C
int main() { /* Declaraciones de variables */ tipo1 variable1; tipo2 variable2, variable3; ... /* Entrada de datos */ Instruccin 1; ... /* rea de clculo */ Instruccin n; ... /* Extraccin de resultados */ Instruccin m; ... return 0; }
Informtica 2012/13 Tema 3 - 9

4. Tipos de datos: Clasificacin

Cuando declaramos una variable, definimos:


La longitud del dato (nmero de bits que ocupa). Operaciones que se puede realizar con ese dato. Conjunto de valores posibles.

Clasificacin de los tipos de datos:


Simples o Bsicos. Estructurados. Compuestos de otros tipos de datos
simples o estructurados.

Informtica 2012/13 Tema 3 - 10

4. Tipos de datos: Clasificacin

Los tipos de datos bsicos se clasifican en:


Numricos: Enteros: Subconjunto finito de nmeros enteros. Reales: Subconjunto finito de nmeros reales. Alfanumricos: Caracteres: Conjunto finito y ordenado de caracteres
que el ordenador reconoce.

Informtica 2012/13 Tema 3 - 11

4.1. El tipo de datos Entero


Subconjunto de los nmeros enteros con signo. En la declaracin se emplea la palabra clave int. Declaracin:
int variable1,variable2, ;

Ejemplo:
int i,j;

Podemos variar el tamao con short y long:


short int variable1,variable2, ; long int variable1,variable2, ;

Podemos expresar enteros sin signo con unsigned:


unsigned short int variable1,variable2, ; unsigned long int variable1,variable2, ;
Informtica 2012/13 Tema 3 - 12

4.1. El tipo de datos Entero

Su tamao depende del compilador y del


procesador que se utilice:
Tipo
int short int long int unsigned short int unsigned long int

Palabra de 16 bits Palabra de 32 bits


16 16 32 16 32 32 16 32 16 32

En nuestro caso int equivale a long int.


Informtica 2012/13 Tema 3 - 13

4.1. El tipo de datos Entero

Rango de valores representables:


Tipo
short int long int unsigned short int unsigned long int

Bits
16 32 16 32

Rango
[-3276832767] [-2.147.483.648...2.147.483.647] [065535] [0...4.294.967.295]

Informtica 2012/13 Tema 3 - 14

4.2. El tipo de datos Real


Subconjunto de los nmeros reales con signo. En la declaracin se emplean la palabras reservadas float o double. Declaracin:
float variable1,variable2, ; double variable1,variable2, ;

Ejemplo:
float a,b; double area,base,altura;

Informtica 2012/13 Tema 3 - 15

4.2. El tipo de datos Real

La diferencia entre float y double est en su


tamao. Esto influye en el rango de valores representables y en la precisin.
Tipo
float double

Tamao
32 bits 64 bits

Valores mnimo y mximo (en valor absoluto)


[1.17549e-38, , 3.4028e+38] [2.2251e-308, , 1.7977e+308]

Informtica 2012/13 Tema 3 - 16

4.3. El tipo de datos Carcter


Conjunto finito y ordenado de caracteres que el
ordenador es capaz de reconocer. Contiene un solo carcter, el cual se almacena como un valor entero de 8 bits (1 byte). El ordenador interpreta este cdigo en funcin de unas tablas de conversin (cdigo ASCII). Se representan entre comillas simples. En la declaracin se emplea la palabra char. Declaracin:
char variable1,variable2,;

Ejemplo:
char letra=A;
Informtica 2012/13 Tema 3 - 17

4.4. El tipo de datos Carcter

Tipos de caracteres:
Alfabticos: a,, z, A,, Z. Numricos: 0,..., 9. Especiales: +, -, *, /, <, ... Contiene los caracteres no imprimibles (retorno de carro, fin de cadena,...).
\n \t \b \r Nueva lnea Tabulador Retroceso Retorno de carro Contrabarra (\) Apstrofe (comilla simple) Comillas
Informtica 2012/13 Tema 3 - 18

\\ \' \''

4.5 Tipos de datos estructurados

Almacenan varios datos en una sola variable


Vectores: Almacenan simultneamente varios datos del mismo tipo. Permiten implementar variables como matrices. Estructuras (structs). Almacenan simultneamente varios datos de diferente tipo.

Informtica 2012/13 Tema 3 - 19

4.6. El tipo de dato vector

Permite almacenar diferentes datos de un


mismo tipo El nmero de elementos que puede almacenar puede ser bastante grande. Los tipos de datos que almacena pueden ser cualquiera de los vistos con anterioridad tanto simples como estructurados

Informtica 2012/13 Tema 3 - 20

4.6. El tipo de dato vector


Se declaran en el mismo lugar que una variable
simple y como stas precedidas del tipo que almacena. La diferencia es que hay que declarar el tamao del vector, que ser el nmero mximo de elementos que puede almacenar: tipo_dato nombre_vector[tamao];

tamao es un nmero entero o una constante


entera definida previamente, nunca una variable.

Informtica 2012/13 Tema 3 - 21

4.6. El tipo de dato vector


Por ejemplo:
int datos[20]; /*datos es un vector que puede almacenar hasta 20 enteros*/ float ejemplo[2000]; /*ejemplo es un vector que puede almacenar hasta 2000 float */ char frase[80]; /*permite almacenar hasta 40 caracteres*/

Para acceder a una casilla del vector hay que


indicar el nombre del vector y la casilla a la que queremos acceder. La primera posicin de un vector es la 0 y la ultima el tamao -1.
La primera casilla de datos sera datos[0], la tercera datos[2] y la ltima (si tamao es 20) datos[19].
Informtica 2012/13 Tema 3 - 22

5. Inicializacin de variables
Cuando una variable se declara, el compilador le reserva
espacio en la memoria, pero no modifica la informacin que haba en dicho espacio. Toda variable debe ser inicializada antes de utilizarla. Las variables pueden ser inicializadas a un valor concreto cuando son declaradas. Para ello, en la declaracin se aade el signo de igual ms una constante. El tipo de la constante debe coincidir con el tipo de la variable. Ejemplos:
int h; /* h toma un valor indeterminado */ int a=5,b=0; /* a valdr 5 y b valdr 0 */ float altura=5.4; char c=M;
Informtica 2012/13 Tema 3 - 23

6. Asignacin de variables

Instruccin bsica en un lenguaje como C. Permite almacenar un valor en una variable (en
la posicin de memoria asociada a esa variable). Sintaxis:
variable = expresion;

Evala la expresin de la derecha y la asigna a


la variable de la izquierda. El valor anterior de la variable se pierde.
Informtica 2012/13 Tema 3 - 24

6. Asignacin de variables

Ejemplo:
int a, b, c; int datos[20],ejemplo[10]; a=5; b=7; c=a*b+4; a=c; a+b=c; Incorrecto. La parte izquierda slo puede ser una variable. datos[5]=8; ejemplo[14]=datos[5] + 7;

Informtica 2012/13 Tema 3 - 25

7. Constantes
Al igual que las variables, las constantes guardan
datos, pero su valor no vara. Se suelen utilizar para definir valores que se repiten a lo largo del programa. Existen tantos tipos de constantes como tipos de datos. Podemos expresar una constante segn el tipo de dato. Las constantes pueden aparecer con su valor directamente o mediante un identificador. Constantes simblicas:
Constantes a las cuales se les asocia un nombre o identificador. Declaracin: #define nombre_constante valor
Informtica 2012/13 Tema 3 - 26

7. Constantes

Ejemplos:
#define #define #define #define #define #define VALOR 10 VALOR 10U VALOR 10.0 PI 3.14159265 PI 3.14159265f A -1.2345e-17 /* /* /* /* /* /* Es un int */ Es un unsigned int */ Es un double */ Es un double */ Es un float */ Un double en notacin cintifica */ /* Es un carcter */ /* Es un carcter */ /* Es una cadena de caracteres */

#define LETRA y #define salto_linea \n #define nombre Juan

Informtica 2012/13 Tema 3 - 27

8. Expresiones. Conceptos bsicos


Operador: Smbolo que se asocia a una determinada
operacin bsica que se realiza con los datos en algn punto del programa. Expresin: Combinacin de variables, constantes, operadores, parntesis y nombres de funcin escritas en un determinado orden que tiene la propiedad de ser evaluada para obtener un valor. Tipo de expresiones:
Aritmticas: Operandos y resultados de tipo numrico. Relaciones: Operandos de cualquier tipo y resultado de tipo lgico, en forma de entero (verdadero si es distinto de 0 o falso cuando vale 0). Lgicas: Los operandos son expresiones relacionales y el resultado es de tipo lgico, en forma de entero (verdadero si es distinto de 0 o falso cuando vale 0).
Informtica 2012/13 Tema 3 - 28

9. Operadores aritmticos
Operador Accin + * / % Suma Resta Multiplicacin Divisin (entera o real) Resto de la divisin entera Tipo de datos char, int, float, double char, int, float, double char, int, float, double char, int, float, double char, int

Reglas de prioridad:
El orden de prioridad de los operadores aritmticos es:
Primero: /, *, % (tienen igual prioridad entre ellos). Despus: +, - (tienen igual prioridad entre ellos).

Dentro del mismo orden de prioridad se evalan de izquierda a derecha. Los parntesis permiten cambiar el orden de prioridad predeterminado, ya que se evalan primero. Si existen varios parntesis anidados, las expresiones de los ms internos se evalan antes.
Informtica 2012/13 Tema 3 - 29

Ejercicio

Calcular el valor de la variable a en el


siguiente cdigo:
int a=1,b=5,c=2,d=3,e=6; a=a+b%d; a=d*b/2; a=d*(b/2); a=d+b*c-e; a=d+e*b/2; a=(d+e)*b/2;

Informtica 2012/13 Tema 3 - 30

10. Operadores de Incremento y Decremento


Operador ++ -Accin Incrementa en 1 el valor de una variable. Decrementa en 1 el valor de una variable.

Se pueden usar como:


Operador prefijo: Precede al operando (++x,--x). El valor de la variable se incrementa o decrementa antes de que se use su valor.
Ejemplo: a=1; b=++a; /* Deja a=2 y b=2 */

Operador sufijo: Detrs del operando (x--,x++). Primero se usa el valor de la variable y despus la incrementa o decrementa.
Ejemplo: a=1; b=a++; /* Deja a=2 y b=1 */

En instrucciones aisladas tienen el mismo efecto (++x; es lo mismo que x++;. De igual modo, --x; es lo mismo que x--; ).
Informtica 2012/13 Tema 3 - 31

Ejercicio

Indicar, instruccin a instruccin, el valor de


las variables del siguiente programa:
int x,y=5; int z; y++; x=++y; ++x; y--; z=y--;

Informtica 2012/13 Tema 3 - 32

11. Expresiones de asignacin


La sentencia variable = expresin evala la expresin de la
derecha y la asigna a la variable de la izquierda. Sin embargo el operador de asignacin (=) se puede combinar con los operadores aritmticos (op). De este modo, la instruccin:
variable op=expresion

Es equivalente a:
variable=variable op (expresion)
Operador += -= *= /= %= Accin Incrementa el valor de la variable en un valor determinado. Decrementa el valor de la variable en un valor determinado. Multiplica el valor de la variable en un valor determinado. Divide el valor de la variable en un valor determinado. Calcula el resto de la divisin de la variable por un valor determinado.
Informtica 2012/13 Tema 3 - 33

Ejercicios

Calcular el valor de las variables en el


siguiente cdigo:
int a=3, b=7, c=2; a++; a=a+3; b+=b*2; b=++a; b+=a++; c+=++b; b--; a*=a-2; b-=2; c=b;
Informtica 2012/13 Tema 3 - 34

12. Conversiones de tipos


Si en las operaciones aritmticas se combinan
operandos de distintos tipos, se trabaja con el tipo del operando con ms precisin (ms grande) y se devuelve ese tipo. Si a una variable entera se le asigna un resultado real, la parte decimal se pierde (truncamiento). Al contrario se asigna correctamente. Si a una variable entera se le asigna un valor que la sobrepasa en rango, el resultado no ser correcto.

Informtica 2012/13 Tema 3 - 35

12. Conversiones de tipos

Conversiones de tipo forzadas, operadores


de cast o casting: Una variable, o el resultado de una expresin, se fuerzan a un tipo diferente del inicial. Sintaxis:
(tipo)expresion;

Ejemplo:
float x; x=(int)7/2; x=(float)7/2; /* x valdr 3.0 */ /* x valdr 3.5 */

Informtica 2012/13 Tema 3 - 36

Ejercicio

Indicar el tipo con el que se debe declarar la


variable result para almacenar correctamente el resultado de la siguiente expresin:
int a; float b; double c; ? result; result = (2*a) + (b/a) (b*c);

Informtica 2012/13 Tema 3 - 37

Ejercicio

Indicar el resultado de las siguientes


expresiones:
int x=7; float y; y=x/2; y=x/2.0; y=(float)x/2; x=y/2; y=y/2; x=(3*1.5+1); x=2*(int)y;
Informtica 2012/13 Tema 3 - 38

Ejercicios

Escribir un programa en C que asigne un


valor inicial a dos variables cualesquiera y que intercambie el valor de las mismas.

Informtica 2012/13 Tema 3 - 39

13. Funciones de librera


Existen un conjunto de archivos, llamados de cabecera, que
contienen la declaracin de constantes, variables y de funciones especializadas que realizan todo tipo de operaciones (E/S, matemticas, etc.). Utilizan la extensin .h. Se deben incluir al principio del programa para poder emplear aquellas funciones que declaran. Existen implementaciones de las funciones que declaran para diferentes entornos de programacin y para mquinas diferentes, pero los programas que las utilizan son portables. Sintaxis:
#include <nombre_archivo.h>

Ejemplos:
#include <math.h> #include <stdio.h>
Informtica 2012/13 Tema 3 - 40

You might also like