You are on page 1of 10

13

3. Empezando a programar

Cap tulo 3

Empezando a programar
3.1 Identicadores
n es un nombre utilizado para referir un valor constante, Un identicador en un lenguaje de programacio n, dentro de un programa. Todo identicauna variable, una estructura de datos compleja, o una funcio formado por una secuencia de letras, nu meros y caracteres de subrayado, con la restriccio n de dor esta que siempre debe comenzar por una letra o un subrayado y que no puede contener espacios en blanco. ximo para la longitud de los identicadores, siendo habitual un ma ximo de Cada compilador ja un ma 32 caracteres. sculas y minu sculas, segu n lo cual C considerara los identicadores contador, C diferencia entre mayu Contador y CONTADOR, por ejemplo, como diferentes. n En cualquier caso, nunca pueden utilizarse las palabras reservadas del lenguaje para la construccio ndar ANSI, C consta u nicamente de 32 palabras reservadas de identicadores. De acuerdo con el esta (ver Tab. 3.1). Tabla 3.1: Palabras reservadas de C auto break case char const continue default do double else enum extern oat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

3.2 Estructura de un programa


sicamente de los siguientes elementos: Todo programa en C consta ba Directivas del preprocesador Deniciones de tipos de datos Declaraciones de funciones

3.3. Variables y constantes

14

u nicamente la declaracio n de la funcio n main() que corresponde al Por el momento se tratara n de un programa escrito en C siempre comienza por dicha funcio n. programa principal. La ejecucio n, en un programa so lo puede haber una funcio n con dicho nombre. La denicio n de tipos Por esta razo de datos se deja para el cap tulo 8. n en C, y en particular la funcio n main(), tiene la siguiente estructura: Toda funcio tipo datos nombre funci on ( par ametros )

f g

variables locales; secuencia de sentencias;

metros y la deNo entraremos aqu en las particularidades de las funciones como el paso de para n de resultados de un tipo de datos determinado (ver Cap. 10). Comentaremos simplemente volucio n de resultados como los para metros son opcionales, y que en la mayor que tanto la devolucio a de n del programa principal. programas sencillos no se usan en la denicio n se muestra, como ejemplo, un programa para evaluar la expresio n 3 A continuacio /* Evaluando una expresi on */ #include <stdio.h> void main()
5

; =

32 4

int a, b, c = 5; a = 3 * c; b = 32 / 4; c = a - b; printf( "El valor de la expresi on es:

%dnn", c );

El cuerpo del programa principal lo constituyen todas las l neas de programa comprendidas entre s sentencias. Una sentencia es neas puede haber una o ma los s mbolos f y g. En cada una de dichas l una orden completa para el ordenador. Toda sentencia debe acabar con un punto y coma (;).

3.3 Variables y constantes


n mecanismo Los programas de ordenador utilizan diferentes tipos de datos, por lo que requieren de algu para almacenar el conjunto de valores usado. C ofrece dos posibilidades: variables y constantes. Una variable es un objeto donde se guarda un valor, el cual puede ser consultado y modicado durante la n del programa. Por el contrario, una constante tiene un valor jo que no puede ser modicado. ejecucio

3.3.1 Variables
Toda variable debe declararse antes de ser usada por primera vez en el programa. Las sentencias de n de variables indican al compilador que debe reservar cierto espacio en la memoria del ordeclaracio denador con el n de almacenar un dato de tipo elemental o estructurado. Por ejemplo, la siguiente

Los autores, 2000; Edicions UPC, 2000.

15

3. Empezando a programar

n de variables indica al compilador que debe reservar espacio en la memoria para tres variadeclaracio bles de tipo entero, a las que nos referiremos con los nombres a, b y c: int a, b, c; n consiste en dar un nombre signicativo a la variable e indicar el tipo de datos a que La declaracio . A continuacio n se muestra la sintaxis ma s sencilla de una corresponden los valores que almacenara n para una sola variable. sentencia de declaracio tipo datos nombre variable; s, en una sola sentencia pueden declararse varias variables de un mismo tipo de datos, sepaAdema rando los nombres de las variables mediante comas: tipo datos nombre variable1, ..., nombre variableN; n. Opcionalmente, es posible asignar un valor inicial a las variables en la propia declaracio tipo datos nombre variable = valor inicial;

3.3.2 Constantes
licas. C admite dos tipos diferentes de constantes: literales y simbo Constantes literales digo fuente cada vez que es necesario para una operacio n Todo valor que aparece directamente en el co constituye una constante literal. En el siguiente ejemplo, los valores 20 y 3 son constantes literales del tipo de datos entero: int cont = 20; cont = cont + 3; rica contiene un punto decimal, el compilador considera dicha constante Si una constante nume n utilizando alguna como un valor real de coma otante. Este tipo de constantes puede escribirse tambie nmente aceptadas (ver Sec. 6.3). de las notaciones cient cas comu ricas son consideradas por el compilador, como valores Por el contrario, el resto de constantes nume enteros. Pueden usarse tres formatos alternativos: Toda constante que comience por un d gito distinto de 0 es interpretada como un entero decimal (esto es, en base 10). Se especican mediante los d gitos del 0 al 9 y el signo positivo o negativo. Si una constante comienza con el d gito 0, se interpreta como un entero octal (base 8). Se especican mediante los d gitos del 0 al 7 y el signo positivo o negativo. Finalmente, las constantes que comienzan por 0x o 0X se interpretan como enteros en base hexadecimal (base 16). Se especican mediante los d gitos del 0 al 9, las letras de la A a la F, y el signo positivo o negativo. s sobre los distintos sistemas de numeracio n, ver el ape ndice C. Para saber ma

Los autores, 2000; Edicions UPC, 2000.

3.3. Variables y constantes

16

licas Constantes simbo Una constante simb olica es una constante representada mediante un nombre (s mbolo) en el programa. Al igual que las constantes literales, no pueden cambiar su valor. Sin embargo para usar el valor lico, de la misma forma que lo har constante, se utiliza su nombre simbo amos con una variable. Una lica se declara una sola vez, indicando el nombre y el valor que representa. constante simbo licas tienen dos ventajas claras respecto a las literales. Supongamos el siguienLas constantes simbo digo para calcular el per rea del c te co metro de una circunferencia y el a rculo que dene: perimetro = 2 * 3.14 * radio; area = 3.14 * radio * radio; lica de nombre PI y valor 3.14, podr Si por el contrario se hubiese denido una constante simbo amos digo mucho ma s claro: escribir un co perimetro = 2 * PI * radio; area = PI * radio * radio; s, imaginemos ahora que para incrementar la precisio n del ca lculo se desea usar un valor ma s Es ma a substituirse uno a uno el valor preciso de la constante , como 3.14159. En el primer caso deber n de la constante PI con 3.14 en todo el programa. En el segundo caso, bastar a cambiar la denicio el nuevo valor. todo ma s habitual para denir constantes en C es la directiva del preprocesador #define. El me Por ejemplo, en el caso anterior podr amos haber escrito: #define PI 3.14159 lico y a continuacio n el valor constante que representa. Es decir, el nombre simbo

3.3.3 Entrada y salida de valores


ndice B se vera n con ma s detalle las funciones de la librer ndar printf y Aunque en el ape a esta scanf, se introducen en este punto con el n de poder realizar algunos programas sencillos. n printf usa como C utiliza operaciones de entrada y salida con formato. Por ejemplo, la funcio cter especial de formato el s cter que sigue a este s cara mbolo de porcentaje (%). El cara mbolo dene el n). Por ejemplo, %c para valores de tipo cara cter o formato de un valor (constante, variable o expresio %d para valores de tipo entero. El siguiente ejemplo muestra por pantalla el contenido de una variable cter (ch), y una variable entera (num). de tipo cara char ch; int num; . . . printf( "Esto es un car acter: %cnn", ch ); printf( "Y esto un entero: %dnn", num ); El formato es todo aquello especicado entre las comillas, al que le sigue una lista de variables, constantes o expresiones separadas por comas. Es responsabilidad del programador asegurar la perfecta

Los autores, 2000; Edicions UPC, 2000.

17

3. Empezando a programar

Tabla 3.2: Operadores aritm eticos en C Unarios Signo negativo Incremento Decremento Suma Resta n Multiplicacio n Divisio dulo Mo

;
++

;; ;
=
% +

Binarios

mero como en el tipo de los mismos. correspondencia entre el formato y la lista de valores, tanto en nu nea. Finalmente, la secuencia especial nn indica un salto de l n para la entrada de valores a una estructura de datos, y en Por su parte, scanf es una funcio particular a una variable. Su formato es similar al de printf. Por ejemplo: char ch; int num; . . . scanf( "%c%d", &ch, &num ); cter en la variable ch y seguidamente un valor entero en Permite introducir desde el teclado un cara tese que en el caso de scanf se antepone el s la variable num. No mbolo & a las variables. Por el momento, no debemos olvidar utilizarlo, y tengamos en mente que el uso de & tiene que ver con direcciones de memoria y punteros (ver Cap. 9).

3.4 Expresiones
n es una fo rmula matema tica cuya evaluacio n especica un valor. Los elementos que Una expresio n son: constantes, variables y operadores. constituyen una expresio

n 3.4.1 Operador de asignacio


n permite asignar valores a las variables. Su s El operador de asignacio mbolo es un signo igual =. Este a la izquierda del operador el valor que esta a la derecha. Un operador asigna a la variable que esta lidas con el operador de asignacio n son: x = 1; z = 1.35; . ejemplo de expresiones va

ticos 3.4.2 Operadores aritme


s de los operadores aritme ticos tradicionales, C proporciona algunos operadores adicionales (ver Adema Tab. 3.2). n, x++; equivale a x = x+1;, y x--; equivale a x = x-1;. Aunque en el La expresio digo ma s eciente si se usaba los operadores ++, -- en pasado algunos compiladores generaban co lugar de sus expresiones equivalentes, esto ya no es cierto en los compiladores modernos. Los opera s habitual) como preja, indicando en cada dores ++ y -- pueden usarse tanto de manera postja (ma

Los autores, 2000; Edicions UPC, 2000.

3.4. Expresiones

18

s o antes de la evaluacio n de la expresio n en la que caso si el valor de la variable se modica despue digo: aparece. Por ejemplo, la siguiente l nea de co x = ((++z) - (w--)) % 100; es equivalente al siguiente grupo de sentencias: z = z + 1; x = (z - w) % 100; w = w - 1; tese que en C no existe ningu n operador especial para la divisio n entera, de forma que cuando No n son enteros, el cociente que se obtiene es el correspondiente a la los dos operandos de la divisio n entera (el cociente no se redondea, sino que se trunca). Si alguno de los operandos es un valor divisio n sera tambie n real. Por ejemplo, x = 3/2; asigna el valor 1 a la real, el resultado de la divisio variable x (que debe ser entera), mientras que x = 3.0/2; o x = 3/2.0; asigna el valor dulo (%) permite obtener 1.5 a la variable x (que debe ser real). Finalmente, el operador de mo n entera, por lo que sus operandos deben ser tambie n enteros. Por ejemplo, el resto de una divisio x = 8 % 5; asigna el valor 3 a la variable entera x. s una manera abreviada de expresar ciertos ca lculos en C. Es muy comu n tener exExiste adema presiones del estilo de i = i + 5; o x = x * (y + 2);. Este tipo de expresiones puede escribirse en C de forma compacta como: expresi on1 que es equivalente a: expresi on1 = expresi on1 op expresi on2 op = expresi on2

n esto, la asignacio n i = i + 5; puede reescribirse como i += 5; y la asignacio n Segu tese que esta u ltima expresio n no signica en x = x * (y + 2); como x *= y + 2;. No n caso x = (x * y) + 2;. ningu Como puede verse, un uso abusivo de los operadores abreviados de C puede hacer dif cil de leer un n al ser programa. C permite escribir expresiones muy compactas, pero que pueden generar confusio le das. Hay que recordar siempre que la legibilidad (mantenimiento) de un programa es tan importante como su correcto funcionamiento.

3.4.3 Operadores relacionales


Los operadores relacionales se utilizan principalmente para elaborar condiciones en las sentencias condicionales e iterativas (ver Cap. 4 y Cap. 5). n en C. Al relacionar (comparar) dos expreLa tabla 3.3 resume los distintos operadores de relacio gico, es decir: CIERTO o FALSO. siones mediante uno de estos operadores se obtiene un resultado lo n 4 > 8 da como resultado el valor falso, la expresio n num == num da Por ejemplo, la expresio n 8 <= 4 da como resultado falso, etc. como resultado cierto, la expresio Es interesante destacar que a diferencia de otros lenguajes, C no dispone de un tipo de datos es gicos o booleanos. En su lugar, C representa un resultado FALSO como pec co para los valores lo

Los autores, 2000; Edicions UPC, 2000.

19

3. Empezando a programar

Tabla 3.3: Operadores relacionales (izquierda) y l ogicos (derecha) en C Menor que Mayor que Menor o igual que Mayor o igual que Igual que Distinto que

< > < >

= =

== ! =

n o Y lo gico Conjuncio n u O lo gico Disyuncio n o NO lo gico Negacio

&&

jj
!

Tabla 3.4: Tabla de verdad de los operadores l ogicos en C A Cierto Cierto Falso Falso B Cierto Falso Cierto Falso !A Falso Falso Cierto Cierto A && B Cierto Falso Falso Falso A jj B Cierto Cierto Cierto Falso

rico entero cero, y un resultado CIERTO como cualquier valor entero diferente de cero. el valor nume Es muy importante recordar este hecho de ahora en adelante. n Un error habitual es confundir el operador relacional de igualdad == con el operador de asignacio = . Por ejemplo, la sentencia x = 3 asigna el valor 3 a la variable x, mientras que x == 3 compara el valor de x con la constante 3.

gicos 3.4.4 Operadores lo


gicos (ver Tab. 3.3) se utilizan principalmente en conjuncio n con los relacionales para Los operadores lo elaborar condiciones complejas en las sentencias condicionales e iterativas (ver Cap. 4 y Cap. 5). gicos && y Es importante no confundir los operadores lo n 8.5. & y j que veremos en la seccio

jj

con los operadores de manejo de bits

gicos. De acuerdo con dicha tabla, La tabla 3.4 muestra la tabla de verdad para los operadores lo las expresiones 4 && 0, !(4 > 1) y 5 <= 0 dan como resultado 0 (falso), mientras que las expresiones 4 jj 9, (8 == 4*2) && (5 > 2) y 2 && (4 < 9) dan como resultado 1 (cierto).

3.4.5 Prioridad de operadores


La tabla 3.5 muestra los operadores vistos anteriormente, as como la prioridad entre ellos. La prioridad n se muestra la asociatividad para operadores con el mismo desciende al descender en la tabla. Tambie nivel de prioridad. n dicha tabla, la expresio n (a < 10 && 2 * b < c) se interpretara como Por ejemplo, segu (a < 10) && ((2 * b) < c).

Los autores, 2000; Edicions UPC, 2000.

3.5. Ejercicios

20

Tabla 3.5: Prioridad y asociatividad de los operadores en C Operador ntesis Pare gico NO lo Signo negativo Incremento Decremento n Multiplicacio n Divisio dulo Mo Suma Resta Menor que Menor o igual que Mayor que Mayor o igual que Igual que Distinto que gico Y lo gico O lo Asignaciones S mbolo
()

;
++

Asociatividad Izquierda a derecha Derecha a izquierda

;;
=
% Izquierda a derecha Izquierda a derecha Izquierda a derecha

< < > >

== ! =

Izquierda a derecha Izquierda a derecha Izquierda a derecha Derecha a izquierda

&&

jj

= =

+ =

%=

3.5 Ejercicios
Escribir un programa para cada uno de los siguientes ejercicios: ngulo, calcular su a rea y su per 1. Pedir la base y la altura de un recta metro, y mostrar los resultados por pantalla. ntas horas, minutos y segundos 2. Pedir una cantidad de segundos y mostrar por pantalla a cua corresponden. n int x = 7, y; , calcular el 3. Suponiendo que previamente se ha realizado la declaracio n: valor de la variable y tras evaluar cada una de las siguientes sentencias de asignacio (a) y (b) y (c) y (d) y
=

;2
(y

;;x;
x); x;

+ = = =

2;
==

y++

4. Evaluar las siguientes expresiones: (a) 5 (b) 4

2 6

20 % 6 2

15

Los autores, 2000; Edicions UPC, 2000.

21

3. Empezando a programar

(c) 5 (d) 8 (e) (4

15
==

= <

16 3

jj

2 6

(4 3

;
>

2) 5

7 != 4 && 4

jj

<

1
+

2) && 3

<

12

Los autores, 2000; Edicions UPC, 2000.

3.5. Ejercicios

22

Los autores, 2000; Edicions UPC, 2000.

You might also like